export const workflowEditorEnglish = {
  title: "Workflow editor",
  loadingTitle: "Workflow editor",
  linkLoadFailed: "Workflow links failed to load",
  loadFailed: "Workflow editor failed to load",
  unlinkedTitle: "Workflow is not linked to this project",
  unlinkedBody: "Return to the board and choose a workflow linked to this project.",
  placeholderBody: "Revision {{revision}} · {{nodeCount}} nodes · {{edgeCount}} branches",
  zoomIn: "Zoom in",
  zoomOut: "Zoom out",
  fitView: "Fit view",
  resetZoom: "Actual size",
  editWorkflowTooltip: "Edit workflow",
  zoomInTooltip: "Zoom +",
  zoomOutTooltip: "Zoom -",
  zoomActualSizeTooltip: "Actual size",
  addNode: "Add node",
  addAgentNode: "Agent node",
  addScriptNode: "Script node",
  addTerminalNode: "Terminal node",
  createNodeGroup: "Create node group",
  ungroupNode: "Ungroup",
  deleteNode: "Delete node",
  deleteEdge: "Delete branch",
  edgeRouteAriaLabel: "{{source}} to {{target}}",
  dragNodeToGroup: "Drag node to group",
  inspectWorkflow: "Inspect workflow",
  inspectNode: "Inspect node",
  copyNodeId: "Copy node ID {{id}}",
  nodeIdCopied: "Copied node ID to clipboard",
  nodeIdCopyFailed: "Node ID copy failed",
  copyEdgeId: "Copy transition ID {{id}}",
  edgeIdCopied: "Copied transition ID to clipboard",
  edgeIdCopyFailed: "Transition ID copy failed",
  nodeMetadataCopied: "Copied {{label}} to clipboard",
  nodeMetadataCopyFailed: "{{label}} copy failed",
  inspectGroup: "Inspect group",
  inspectEdge: "Inspect transition",
  legend: "Legend",
  legendCompactSession: "Compact and continue",
  legendCompactSessionHelp: "Compact the selected previous session, then start the node from the summary.",
  legendFreshSession: "New session",
  legendFreshSessionHelp: "Create a new session when starting the node.",
  legendContinueSession: "Continue session",
  legendContinueSessionHelp: "Use a previous session's context directly and continue it with a new prompt.",
  legendTerminalState: "Terminal state",
  legendTerminalStateHelp: "Node where tasks stop permanently, mapping to a Kanban column.",
  legendStartingState: "Starting state",
  legendStartingStateHelp:
    "Node where tasks rest after they're created, until they are started. Only one may exist per workflow.",
  legendMultiAgentJoin: "Multi-agent join",
  legendMultiAgentJoinHelp:
    "Static node that aggregates a group's parallel results into one read-only stream. Auto-created along with a group.",
  legendAgentNode: "Agent node",
  legendAgentNodeHelp:
    "Execute an agentic loop using a specified subagent, with the prompt provided by the transition.",
  legendScriptNode: "Script node",
  legendScriptNodeHelp: "Execute a local server-side script and parse stdout as workflow completion JSON.",
  inspectorTitle: "Inspect workflow",
  inspectorUnavailable: "Inspector unavailable",
  entityMissing: "The selected graph item no longer exists in the latest workflow definition.",
  inspectorOverview: "Overview",
  inspectorIdentity: "Identity",
  workflowSettings: "Workflow settings",
  description: "Description",
  version: "Graph revision",
  nodeCount: "Nodes",
  edgeCount: "Branches",
  groupCount: "Groups",
  kind: "Kind",
  key: "Key",
  keyHelp: "Unique ID used by agents and your prompts to refer to this node.",
  transitionKeyHelp:
    "Unique ID used by agents and your prompts to refer to this transition's parameters and outputs.",
  id: "ID",
  copyNodeMetadata: "Copy {{label}} {{value}}",
  group: "Group",
  behavior: "Behavior",
  assignee: "Assignee",
  assigneeHelp:
    "Subagent role that runs this node's agent loop. Subagent roles are configured in the server config file.",
  selectAssignee: "Select assignee",
  completionMode: "Completion mode",
  completionModeHelp:
    "How this agent signals that it finished its task.\n\nAuto: choose a mode automatically based on the workflow and runtime.\n\nStructured output: a provider-validated JSON schema response.\n\nTool call: the agent calls a dedicated completion tool.\n\nShell command: the agent uses the `kent` CLI.\n\nUnstructured output: the agent tries to emit a raw JSON object as its final answer, following instructions.",
  completionModeInherit: "Inherit global default",
  completionModeAuto: "Auto",
  completionModeStructuredOutput: "Structured output",
  completionModeTool: "Tool call",
  completionModeShellCommand: "Shell command",
  completionModeUnstructuredOutput: "Unstructured output",
  displayName: "Display name",
  scriptPath: "Script path",
  scriptPathHelp:
    "Executable path on the Kent server. Relative paths resolve against the task managed worktree when the script runs.",
  scriptPathValidation: "Script path validation",
  scriptPathDiagnostics: "Script path diagnostics",
  scriptStdoutExample: "Stdout completion JSON",
  scriptStdoutExampleHelp:
    "Example JSON this script should print to stdout to complete the workflow node. Kent parses stdout as the completion payload.",
  scriptStdoutExampleCommentary: "Completed the script step.",
  scriptStdoutExampleParameterValue: "{{parameter}} value",
  copyScriptStdoutExample: "Copy stdout example",
  scriptStdoutExampleCopied: "Copied stdout example to clipboard",
  scriptStdoutExampleCopyFailed: "Stdout example copy failed",
  selectScriptPath: "Select script",
  selectScriptPathFailed: "Script picker failed",
  prompt: "Prompt",
  promptHelp: "The task that the target agent node receives when this transition is executed.",
  promptPlaceholders: "Prompt placeholders",
  promptTransitionScopedParameterHelpPrefix:
    "Use the parameter template syntax prefixed with the transition key to add previous node parameters, e.g.",
  promptTransitionScopedParameterHelpSuffix:
    "The transition output must be guaranteed to exist (no branching) to be usable.",
  requiredInputs: "Required inputs",
  outputs: "Outputs",
  parameters: "Parameters",
  parametersHelp:
    "Require the source (previous) agent to provide structured outputs before it can finish its work, then pass them forward into the target (next) agent's prompt. For example, a code review → implementation transition might include a `findings` parameter.",
  branchKey: "Branch key",
  parameterKey: "Parameter key",
  parameterDescription: "Parameter description",
  addParameter: "Add parameter",
  deleteParameter: "Delete parameter",
  reorderParameter: "Reorder parameter",
  joinAggregateParameters: "Join aggregate parameters",
  inputFieldName: "Input name",
  inputFieldDescription: "Input description",
  addRequiredInput: "Add required input",
  deleteField: "Delete field",
  reorderInputField: "Reorder input field",
  members: "Members",
  transitionText: "Label",
  transitionDescription: "Model-facing description",
  transitionDescriptionHelp:
    "When the previous agent node finishes, the agent picks the next transition based on this field's instructions.",
  transitionGroup: "Transition group",
  route: "Route",
  sourceNode: "Source node",
  targetNode: "Target node",
  contextMode: "Context mode",
  contextModeHelp:
    "How the target node begins its session.\n\nNew session: start fresh.\n\nContinue session: directly continue the session chosen as context source.\n\nCompact and continue session: ask the source agent to compact and start a new session from their summary.",
  contextSource: "Context source",
  contextSourceHelp:
    "When continuing a session, where the conversation history comes from.\n\nImmediate source: the transition's source node.\n\nPrevious run: a required previous run of the target node in guaranteed loops.\n\nPrevious run or new session: a previous target run when one exists, otherwise a new session.",
  contextModeNewSession: "New session",
  contextModeContinueSession: "Continue session",
  contextModeCompactContinueSession: "Compact and continue session",
  contextSourceImmediate: "Immediate source",
  contextSourcePreviousTarget: "Previous run of this target",
  contextSourcePreviousTargetOrNew: "Previous run of this target, or new session",
  contextSourceSelected: "Selected node",
  contextSourceNode: "Node: {{nodeKey}}",
  contextSourceUnavailable: "N/A for current configuration",
  edgeControlNotApplicable: "N/A for current branch configuration",
  nodeControlNotApplicable: "N/A for current node configuration",
  requiresApproval: "Requires approval",
  requiresApprovalHelp: "Require a human to manually confirm this transition in the UI.",
  required: "Required",
  derivedInputBindings: "Derived parameter bindings",
  derivedProvisionRequirements: "Source parameter requirements",
  providerRequirements: "Provider parameter requirements",
  joinProviders: "Join parameter providers",
  joinRequiredInputs: "Join aggregate parameters",
  providerEdge: "Provider branch",
  selectProvider: "Select provider",
  validationErrors: "Validation errors",
  validationDetailInput: "Parameter",
  validationDetailField: "Field",
  validationDetailPlaceholder: "Placeholder",
  validationDetailProviderEdge: "Provider branch",
  unsavedChanges: "Unsaved changes",
  save: "Save",
  saving: "Saving",
  confirmSave: "Confirm save",
  destructiveSaveWarning: "This save will permanently remove graph rows. Proceed?",
  saveImpactNodes: "Removed nodes: {{count}}",
  saveImpactTransitionGroups: "Removed transition groups: {{count}}",
  saveImpactEdges: "Removed branches: {{count}}",
  discard: "Discard",
  draftValidationBlocksSave: "Fix draft validation errors before saving.",
  remoteConflict: "This workflow changed remotely while you were editing.",
  reloadRemote: "Reload remote",
  keepEditing: "Keep editing",
  deleteCascadeTitle: "Delete node?",
  deleteCascadeBody: "This will remove connected transition branches and their parameters.",
  deleteBranchCascadeTitle: "Delete branch?",
  deleteBranchCascadeBody: "This will remove the selected transition branch and its parameters.",
  deletePromptLossWarning: "This will remove prompt text from deleted transition branches.",
  deleteConfirmationListenerFailed: "Delete confirmation listener failed: {{message}}",
  deleteConfirmationStale: "The graph changed before confirmation. Review the graph and delete again.",
  deleteCascadeNodes: "Nodes: {{count}}",
  deleteCascadeEdges: "Branches: {{count}}",
  deleteCascadePrompts: "Prompts with text: {{count}}",
  deleteCascadeTransitionGroups: "Transition groups: {{count}}",
  deleteCascadeConfirm: "Delete node",
  deleteBranchCascadeConfirm: "Delete branch",
  extractNodeCascadeTitle: "Remove node from group?",
  extractNodeCascadeBody:
    "This will remove the node from the group and remove group join wiring that no longer applies.",
  extractNodeCascadeConfirm: "Remove from group",
  deleteBlockedTitle: "Delete blocked",
  graphEditBlockedTitle: "Graph edit needs attention",
  graphEditBlockedGeneric: "This graph edit cannot be applied to the current draft.",
  nodeGroupExtractionTopologyFailed:
    "The node could not be removed from the group safely. Review the group fan-out and join wiring before trying again.",
  nodeGroupTopologyInferenceFailed:
    "Node added to the group, but automatic parallel wiring could not be inferred. If the group starts from Backlog, insert a split agent after Backlog; otherwise review the group fan-out and join branches before saving.",
  nodeGroupRequiresUngroupedNode: "Remove the node from its current group before adding it to another group.",
  workflowDelete: "Delete workflow",
  workflowDeleteTitle: "Delete workflow?",
  workflowDeleteBody:
    "Delete this reusable workflow and its affected task database rows. Workspace files and repos stay on disk.",
  workflowDeleteProjects: "Linked projects: {{count}}",
  workflowDeleteLinks: "Workflow links: {{count}}",
  workflowDeleteTasks: "Tasks: {{count}}",
  workflowDeleteConfirm: "Delete workflow",
  workflowDeleteBlocked: "Workflow cannot be deleted yet.",
  workflowDeleteWindowError: "Workflow delete window failed",
  workflowDeleteCommittedNotifyError:
    "Workflow was deleted, but the main window could not be updated: {{message}}",
  workflowDeleteCommittedCloseError: "Workflow was deleted, but this dialog could not close: {{message}}",
  workflowDeleted: "Workflow deleted",
  startNodeDeleteBlocked: "The initial node cannot be deleted.",
  lastTerminalDeleteBlocked: "At least one Terminal node must remain in the workflow.",
  deleteBlockedGeneric: "This graph item cannot be deleted from the current draft.",
  edgeErrors: "Branch errors",
  transitionGroupErrors: "Transition errors",
  none: "None",
  emptyGroup: "Empty group",
  updated: "Workflow updated",
} as const;
