@caupulican/pi-adaptative 0.93.9 → 0.93.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/core/agent-session-contracts.d.ts +5 -1
  3. package/dist/core/agent-session-contracts.d.ts.map +1 -1
  4. package/dist/core/agent-session-contracts.js +4 -0
  5. package/dist/core/agent-session-contracts.js.map +1 -1
  6. package/dist/core/agent-session.d.ts.map +1 -1
  7. package/dist/core/agent-session.js +4 -2
  8. package/dist/core/agent-session.js.map +1 -1
  9. package/dist/core/autonomy/envelope-enforcement.d.ts.map +1 -1
  10. package/dist/core/autonomy/envelope-enforcement.js +2 -0
  11. package/dist/core/autonomy/envelope-enforcement.js.map +1 -1
  12. package/dist/core/fast-mode.d.ts +22 -0
  13. package/dist/core/fast-mode.d.ts.map +1 -0
  14. package/dist/core/fast-mode.js +37 -0
  15. package/dist/core/fast-mode.js.map +1 -0
  16. package/dist/core/goal-loop-controller.d.ts +1 -1
  17. package/dist/core/goal-loop-controller.d.ts.map +1 -1
  18. package/dist/core/goal-loop-controller.js +8 -5
  19. package/dist/core/goal-loop-controller.js.map +1 -1
  20. package/dist/core/goals/goal-auto-continue-controller.d.ts.map +1 -1
  21. package/dist/core/goals/goal-auto-continue-controller.js +3 -1
  22. package/dist/core/goals/goal-auto-continue-controller.js.map +1 -1
  23. package/dist/core/goals/goal-session-controller.d.ts +3 -2
  24. package/dist/core/goals/goal-session-controller.d.ts.map +1 -1
  25. package/dist/core/goals/goal-session-controller.js +22 -1
  26. package/dist/core/goals/goal-session-controller.js.map +1 -1
  27. package/dist/core/goals/natural-language-goal.d.ts +1 -1
  28. package/dist/core/goals/natural-language-goal.d.ts.map +1 -1
  29. package/dist/core/goals/natural-language-goal.js +1 -1
  30. package/dist/core/goals/natural-language-goal.js.map +1 -1
  31. package/dist/core/sdk.d.ts.map +1 -1
  32. package/dist/core/sdk.js +3 -1
  33. package/dist/core/sdk.js.map +1 -1
  34. package/dist/core/secrets/credential-exposure-guard.d.ts +1 -1
  35. package/dist/core/secrets/credential-exposure-guard.d.ts.map +1 -1
  36. package/dist/core/secrets/credential-exposure-guard.js +11 -4
  37. package/dist/core/secrets/credential-exposure-guard.js.map +1 -1
  38. package/dist/core/secrets/credential-source-discovery.d.ts +23 -0
  39. package/dist/core/secrets/credential-source-discovery.d.ts.map +1 -0
  40. package/dist/core/secrets/credential-source-discovery.js +187 -0
  41. package/dist/core/secrets/credential-source-discovery.js.map +1 -0
  42. package/dist/core/settings-manager.d.ts +4 -0
  43. package/dist/core/settings-manager.d.ts.map +1 -1
  44. package/dist/core/settings-manager.js +12 -0
  45. package/dist/core/settings-manager.js.map +1 -1
  46. package/dist/core/slash-commands.d.ts.map +1 -1
  47. package/dist/core/slash-commands.js +1 -0
  48. package/dist/core/slash-commands.js.map +1 -1
  49. package/dist/core/tool-capability-policy.js +1 -1
  50. package/dist/core/tool-capability-policy.js.map +1 -1
  51. package/dist/core/tools/goal.js +7 -7
  52. package/dist/core/tools/goal.js.map +1 -1
  53. package/dist/core/tools/secret-store.d.ts +8 -3
  54. package/dist/core/tools/secret-store.d.ts.map +1 -1
  55. package/dist/core/tools/secret-store.js +37 -6
  56. package/dist/core/tools/secret-store.js.map +1 -1
  57. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  58. package/dist/modes/interactive/components/footer.js +12 -3
  59. package/dist/modes/interactive/components/footer.js.map +1 -1
  60. package/dist/modes/interactive/fast-mode-command.d.ts +7 -0
  61. package/dist/modes/interactive/fast-mode-command.d.ts.map +1 -0
  62. package/dist/modes/interactive/fast-mode-command.js +32 -0
  63. package/dist/modes/interactive/fast-mode-command.js.map +1 -0
  64. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  65. package/dist/modes/interactive/interactive-mode.js +7 -0
  66. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  67. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  68. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  69. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  70. package/examples/extensions/sandbox/package-lock.json +2 -2
  71. package/examples/extensions/sandbox/package.json +1 -1
  72. package/examples/extensions/with-deps/package-lock.json +2 -2
  73. package/examples/extensions/with-deps/package.json +1 -1
  74. package/npm-shrinkwrap.json +12 -12
  75. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"slash-commands.d.ts","sourceRoot":"","sources":["../../src/core/slash-commands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,sBAAsB,EAAE,aAAa,CAAC,mBAAmB,CAiFrE,CAAC"}
1
+ {"version":3,"file":"slash-commands.d.ts","sourceRoot":"","sources":["../../src/core/slash-commands.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;AAElE,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,UAAU,EAAE,UAAU,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,sBAAsB,EAAE,aAAa,CAAC,mBAAmB,CAkFrE,CAAC"}
@@ -40,6 +40,7 @@ export const BUILTIN_SLASH_COMMANDS = [
40
40
  description: "Alias for /task",
41
41
  },
42
42
  { name: "model", description: "Select model (opens selector UI)" },
43
+ { name: "fast", description: "Toggle provider-native fast mode (/fast [on|off|status])" },
43
44
  { name: "profiles", description: "Select a runtime profile for this session" },
44
45
  { name: "scoped-models", description: "Enable/disable models for Ctrl+P cycling" },
45
46
  { name: "export", description: "Export session (HTML default, or specify path: .html/.jsonl)" },
@@ -1 +1 @@
1
- {"version":3,"file":"slash-commands.js","sourceRoot":"","sources":["../../src/core/slash-commands.ts"],"names":[],"mappings":"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","sourcesContent":["import { APP_NAME } from \"../config.ts\";\nimport type { SourceInfo } from \"./source-info.ts\";\n\nexport type SlashCommandSource = \"extension\" | \"prompt\" | \"skill\";\n\nexport interface SlashCommandInfo {\n\tname: string;\n\tdescription?: string;\n\tsource: SlashCommandSource;\n\tsourceInfo: SourceInfo;\n}\n\nexport interface BuiltinSlashCommand {\n\tname: string;\n\tdescription: string;\n}\n\nexport const BUILTIN_SLASH_COMMANDS: ReadonlyArray<BuiltinSlashCommand> = [\n\t{ name: \"settings\", description: \"Open settings menu\" },\n\t{ name: \"secrets\", description: \"Store and activate project credentials with Bitwarden\" },\n\t{ name: \"autonomy\", description: \"Autonomy mode, diagnostics, research, fitness (/autonomy status)\" },\n\t{\n\t\tname: \"models\",\n\t\tdescription: \"Local model lifecycle: /models [list|suggest|add <ref>|remove <ref> confirm|stop]\",\n\t},\n\t{\n\t\tname: \"fitness\",\n\t\tdescription: \"Pick and probe a model for local/heavy-lifter roles, then assign it (/fitness [model] [trials])\",\n\t},\n\t{ name: \"context\", description: \"Context composition dashboard: what rides on every request\" },\n\t{ name: \"toolhealth\", description: \"Show tool repair diagnostics and learned standing rules\" },\n\t{ name: \"toolprobe\", description: \"Probe native/text tool-call support (/toolprobe [provider/model])\" },\n\t{\n\t\tname: \"toolrule-remove\",\n\t\tdescription: \"Remove a learned tool repair standing rule (/toolrule-remove <model> <mode>)\",\n\t},\n\t{\n\t\tname: \"toolprotocol-reset\",\n\t\tdescription: \"Reset text tool protocol calibration for a model (/toolprotocol-reset <provider/model>)\",\n\t},\n\t{ name: \"auto-learn\", description: \"Show Auto Learn/reflection status or run now (/auto-learn run)\" },\n\t{\n\t\tname: \"goal\",\n\t\tdescription: \"Goal lifecycle: view, edit, pause, resume, complete, clear, or replace (/goal to inspect)\",\n\t},\n\t{\n\t\tname: \"goal-continue\",\n\t\tdescription: \"Continue the current goal loop explicitly (/goal-continue [turns] [stalls])\",\n\t},\n\t{\n\t\tname: \"task\",\n\t\tdescription: \"Manage native session task steps (/task to list; /task add <text>)\",\n\t},\n\t{\n\t\tname: \"steps\",\n\t\tdescription: \"Alias for /task\",\n\t},\n\t{ name: \"model\", description: \"Select model (opens selector UI)\" },\n\t{ name: \"profiles\", description: \"Select a runtime profile for this session\" },\n\t{ name: \"scoped-models\", description: \"Enable/disable models for Ctrl+P cycling\" },\n\t{ name: \"export\", description: \"Export session (HTML default, or specify path: .html/.jsonl)\" },\n\t{ name: \"import\", description: \"Import and resume a session from a JSONL file\" },\n\t{ name: \"share\", description: \"Share session as a secret GitHub gist\" },\n\t{ name: \"copy\", description: \"Copy last agent message to clipboard\" },\n\t{ name: \"name\", description: \"Set session display name\" },\n\t{ name: \"session\", description: \"Show session info and stats\" },\n\t{ name: \"usage\", description: \"Show usage controls and available subscription resets\" },\n\t{ name: \"changelog\", description: \"Show changelog entries\" },\n\t{ name: \"hotkeys\", description: \"Show all keyboard shortcuts\" },\n\t{ name: \"fork\", description: \"Create a new fork from a previous user message (optional name: /fork <name>)\" },\n\t{\n\t\tname: \"clone\",\n\t\tdescription: \"Duplicate the current session at the current position (optional name: /clone <name>)\",\n\t},\n\t{ name: \"tree\", description: \"Navigate session tree (switch branches)\" },\n\t{ name: \"trust\", description: \"Trust or untrust this project folder\" },\n\t{ name: \"login\", description: \"Configure provider authentication\" },\n\t{ name: \"logout\", description: \"Remove provider authentication\" },\n\t{ name: \"new\", description: \"Start a new session (optional name: /new <name>)\" },\n\t{ name: \"compact\", description: \"Manually compact the session context\" },\n\t{ name: \"curate\", description: \"Review/archive stale or overlapping reflection-promoted skills\" },\n\t{ name: \"resume\", description: \"Resume a different session\" },\n\t{ name: \"reload\", description: \"Reload keybindings, extensions, skills, prompts, and themes\" },\n\t{ name: \"exit\", description: `Quit ${APP_NAME}` },\n\t{\n\t\tname: \"install-resources\",\n\t\tdescription:\n\t\t\t\"Copy resources from a trusted directory to user local settings (/install-resources <dir> [--force])\",\n\t},\n\t{\n\t\tname: \"config-backup\",\n\t\tdescription: \"Backup profiles and resource settings to a JSON file (/config-backup [file])\",\n\t},\n\t{\n\t\tname: \"config-restore\",\n\t\tdescription: \"Restore profiles and resource settings from a JSON file (/config-restore <file>)\",\n\t},\n\t{ name: \"quit\", description: `Quit ${APP_NAME}` },\n];\n"]}
1
+ {"version":3,"file":"slash-commands.js","sourceRoot":"","sources":["../../src/core/slash-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAiBxC,MAAM,CAAC,MAAM,sBAAsB,GAAuC;IACzE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,oBAAoB,EAAE;IACvD,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,uDAAuD,EAAE;IACzF,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,kEAAkE,EAAE;IACrG;QACC,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,mFAAmF;KAChG;IACD;QACC,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,iGAAiG;KAC9G;IACD,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,4DAA4D,EAAE;IAC9F,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,yDAAyD,EAAE;IAC9F,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,mEAAmE,EAAE;IACvG;QACC,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,8EAA8E;KAC3F;IACD;QACC,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,yFAAyF;KACtG;IACD,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,gEAAgE,EAAE;IACrG;QACC,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,2FAA2F;KACxG;IACD;QACC,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,6EAA6E;KAC1F;IACD;QACC,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,oEAAoE;KACjF;IACD;QACC,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,iBAAiB;KAC9B;IACD,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,kCAAkC,EAAE;IAClE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,0DAA0D,EAAE;IACzF,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,2CAA2C,EAAE;IAC9E,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,0CAA0C,EAAE;IAClF,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8DAA8D,EAAE;IAC/F,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+CAA+C,EAAE;IAChF,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,uCAAuC,EAAE;IACvE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,sCAAsC,EAAE;IACrE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,0BAA0B,EAAE;IACzD,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,6BAA6B,EAAE;IAC/D,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,uDAAuD,EAAE;IACvF,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,wBAAwB,EAAE;IAC5D,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,6BAA6B,EAAE;IAC/D,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,8EAA8E,EAAE;IAC7G;QACC,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,sFAAsF;KACnG;IACD,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,yCAAyC,EAAE;IACxE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,sCAAsC,EAAE;IACtE,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,mCAAmC,EAAE;IACnE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gCAAgC,EAAE;IACjE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,kDAAkD,EAAE;IAChF,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,sCAAsC,EAAE;IACxE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gEAAgE,EAAE;IACjG,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;IAC7D,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6DAA6D,EAAE;IAC9F,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,QAAQ,EAAE,EAAE;IACjD;QACC,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACV,qGAAqG;KACtG;IACD;QACC,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,8EAA8E;KAC3F;IACD;QACC,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,kFAAkF;KAC/F;IACD,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,QAAQ,EAAE,EAAE;CACjD,CAAC","sourcesContent":["import { APP_NAME } from \"../config.ts\";\nimport type { SourceInfo } from \"./source-info.ts\";\n\nexport type SlashCommandSource = \"extension\" | \"prompt\" | \"skill\";\n\nexport interface SlashCommandInfo {\n\tname: string;\n\tdescription?: string;\n\tsource: SlashCommandSource;\n\tsourceInfo: SourceInfo;\n}\n\nexport interface BuiltinSlashCommand {\n\tname: string;\n\tdescription: string;\n}\n\nexport const BUILTIN_SLASH_COMMANDS: ReadonlyArray<BuiltinSlashCommand> = [\n\t{ name: \"settings\", description: \"Open settings menu\" },\n\t{ name: \"secrets\", description: \"Store and activate project credentials with Bitwarden\" },\n\t{ name: \"autonomy\", description: \"Autonomy mode, diagnostics, research, fitness (/autonomy status)\" },\n\t{\n\t\tname: \"models\",\n\t\tdescription: \"Local model lifecycle: /models [list|suggest|add <ref>|remove <ref> confirm|stop]\",\n\t},\n\t{\n\t\tname: \"fitness\",\n\t\tdescription: \"Pick and probe a model for local/heavy-lifter roles, then assign it (/fitness [model] [trials])\",\n\t},\n\t{ name: \"context\", description: \"Context composition dashboard: what rides on every request\" },\n\t{ name: \"toolhealth\", description: \"Show tool repair diagnostics and learned standing rules\" },\n\t{ name: \"toolprobe\", description: \"Probe native/text tool-call support (/toolprobe [provider/model])\" },\n\t{\n\t\tname: \"toolrule-remove\",\n\t\tdescription: \"Remove a learned tool repair standing rule (/toolrule-remove <model> <mode>)\",\n\t},\n\t{\n\t\tname: \"toolprotocol-reset\",\n\t\tdescription: \"Reset text tool protocol calibration for a model (/toolprotocol-reset <provider/model>)\",\n\t},\n\t{ name: \"auto-learn\", description: \"Show Auto Learn/reflection status or run now (/auto-learn run)\" },\n\t{\n\t\tname: \"goal\",\n\t\tdescription: \"Goal lifecycle: view, edit, pause, resume, complete, clear, or replace (/goal to inspect)\",\n\t},\n\t{\n\t\tname: \"goal-continue\",\n\t\tdescription: \"Continue the current goal loop explicitly (/goal-continue [turns] [stalls])\",\n\t},\n\t{\n\t\tname: \"task\",\n\t\tdescription: \"Manage native session task steps (/task to list; /task add <text>)\",\n\t},\n\t{\n\t\tname: \"steps\",\n\t\tdescription: \"Alias for /task\",\n\t},\n\t{ name: \"model\", description: \"Select model (opens selector UI)\" },\n\t{ name: \"fast\", description: \"Toggle provider-native fast mode (/fast [on|off|status])\" },\n\t{ name: \"profiles\", description: \"Select a runtime profile for this session\" },\n\t{ name: \"scoped-models\", description: \"Enable/disable models for Ctrl+P cycling\" },\n\t{ name: \"export\", description: \"Export session (HTML default, or specify path: .html/.jsonl)\" },\n\t{ name: \"import\", description: \"Import and resume a session from a JSONL file\" },\n\t{ name: \"share\", description: \"Share session as a secret GitHub gist\" },\n\t{ name: \"copy\", description: \"Copy last agent message to clipboard\" },\n\t{ name: \"name\", description: \"Set session display name\" },\n\t{ name: \"session\", description: \"Show session info and stats\" },\n\t{ name: \"usage\", description: \"Show usage controls and available subscription resets\" },\n\t{ name: \"changelog\", description: \"Show changelog entries\" },\n\t{ name: \"hotkeys\", description: \"Show all keyboard shortcuts\" },\n\t{ name: \"fork\", description: \"Create a new fork from a previous user message (optional name: /fork <name>)\" },\n\t{\n\t\tname: \"clone\",\n\t\tdescription: \"Duplicate the current session at the current position (optional name: /clone <name>)\",\n\t},\n\t{ name: \"tree\", description: \"Navigate session tree (switch branches)\" },\n\t{ name: \"trust\", description: \"Trust or untrust this project folder\" },\n\t{ name: \"login\", description: \"Configure provider authentication\" },\n\t{ name: \"logout\", description: \"Remove provider authentication\" },\n\t{ name: \"new\", description: \"Start a new session (optional name: /new <name>)\" },\n\t{ name: \"compact\", description: \"Manually compact the session context\" },\n\t{ name: \"curate\", description: \"Review/archive stale or overlapping reflection-promoted skills\" },\n\t{ name: \"resume\", description: \"Resume a different session\" },\n\t{ name: \"reload\", description: \"Reload keybindings, extensions, skills, prompts, and themes\" },\n\t{ name: \"exit\", description: `Quit ${APP_NAME}` },\n\t{\n\t\tname: \"install-resources\",\n\t\tdescription:\n\t\t\t\"Copy resources from a trusted directory to user local settings (/install-resources <dir> [--force])\",\n\t},\n\t{\n\t\tname: \"config-backup\",\n\t\tdescription: \"Backup profiles and resource settings to a JSON file (/config-backup [file])\",\n\t},\n\t{\n\t\tname: \"config-restore\",\n\t\tdescription: \"Restore profiles and resource settings from a JSON file (/config-restore <file>)\",\n\t},\n\t{ name: \"quit\", description: `Quit ${APP_NAME}` },\n];\n"]}
@@ -138,7 +138,7 @@ export function resolveToolCallPathAccess(capabilities, toolName, args) {
138
138
  const action = args && typeof args === "object" && !Array.isArray(args) && "action" in args
139
139
  ? args.action
140
140
  : undefined;
141
- return action === "migrate" ? "read" : "none";
141
+ return action === "migrate" || action === "discover" ? "read" : "none";
142
142
  }
143
143
  return resolveCapabilityPathAccess(selected) ?? "none";
144
144
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tool-capability-policy.js","sourceRoot":"","sources":["../../src/core/tool-capability-policy.ts"],"names":[],"mappings":"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","sourcesContent":["import type { HarnessCapability } from \"./capability-contract.ts\";\nimport { GOAL_LIFECYCLE_TOOL_NAMES } from \"./goals/goal-tool-names.ts\";\nimport type { CapabilityEnforcementKind, OrchestrationProfile } from \"./orchestration/contracts.ts\";\n\nexport interface ToolCapabilityPolicy {\n\t/** AND across clauses; OR across the capability alternatives inside one clause. */\n\tcapabilityClauses: readonly (readonly HarnessCapability[])[];\n\tenforcements: readonly CapabilityEnforcementKind[];\n}\n\nexport type ToolPathAccess = \"none\" | \"read\" | \"write\";\n\nconst READ_PATH_CAPABILITIES: ReadonlySet<HarnessCapability> = new Set([\n\t\"filesystem.read\",\n\t\"worktree.read\",\n\t\"skill.read\",\n\t\"source.read\",\n]);\nconst WRITE_PATH_CAPABILITIES: ReadonlySet<HarnessCapability> = new Set([\n\t\"filesystem.write\",\n\t\"worktree.mutate\",\n\t\"skill.write\",\n\t\"source.write\",\n]);\n\nfunction policy(\n\tcapabilityClauses: readonly (readonly HarnessCapability[])[],\n\tenforcements: CapabilityEnforcementKind | readonly CapabilityEnforcementKind[],\n): ToolCapabilityPolicy {\n\treturn Object.freeze({\n\t\tcapabilityClauses: Object.freeze(capabilityClauses.map((clause) => Object.freeze([...clause]))),\n\t\tenforcements: Object.freeze(typeof enforcements === \"string\" ? [enforcements] : [...enforcements]),\n\t});\n}\n\nconst READ_POLICY = policy([[\"filesystem.read\", \"worktree.read\"]], \"path-scope\");\nconst WRITE_POLICY = policy([[\"filesystem.write\", \"worktree.mutate\"]], \"path-scope\");\nconst PROCESS_POLICY = policy([[\"process.exec\", \"tests.execute\"]], \"process-launcher\");\nconst NETWORK_POLICY = policy([[\"network.http\", \"service.mcp\"]], \"service-proxy\");\nconst DELEGATE_POLICY = policy([[\"workflow.delegate\"]], \"control-plane\");\n\nconst TOOL_CAPABILITY_POLICIES = new Map<string, ToolCapabilityPolicy>([\n\t...[\"read\", \"ls\", \"grep\", \"find\"].map((toolName) => [toolName, READ_POLICY] as const),\n\t...[\"write\", \"edit\", \"edit-diff\"].map((toolName) => [toolName, WRITE_POLICY] as const),\n\t...[\"bash\", \"python\", \"powershell\", \"shell\", \"run_toolkit_script\", \"run_process\"].map(\n\t\t(toolName) => [toolName, PROCESS_POLICY] as const,\n\t),\n\t...[\"fetch\", \"web_search\"].map((toolName) => [toolName, NETWORK_POLICY] as const),\n\t[\"skill\", policy([[\"skill.read\"]], \"path-scope\")],\n\t[\"skill_audit\", policy([[\"skill.read\"]], \"path-scope\")],\n\t[\"skillify\", policy([[\"skill.write\"]], \"path-scope\")],\n\t[\"extensionify\", policy([[\"source.write\"]], \"path-scope\")],\n\t[\"goal\", policy([[\"memory.mutate\", \"memory.query\"]], \"memory-broker\")],\n\t[GOAL_LIFECYCLE_TOOL_NAMES[0], policy([[\"memory.mutate\"]], \"memory-broker\")],\n\t[GOAL_LIFECYCLE_TOOL_NAMES[1], policy([[\"memory.query\"]], \"memory-broker\")],\n\t[GOAL_LIFECYCLE_TOOL_NAMES[2], policy([[\"memory.mutate\"]], \"memory-broker\")],\n\t[\"memory\", policy([[\"memory.mutate\", \"memory.query\"]], \"memory-broker\")],\n\t[\"secret_store\", policy([[\"credentials.use\"]], [\"service-proxy\", \"path-scope\"])],\n\t[\"delegate\", DELEGATE_POLICY],\n\t[\"model_fitness\", policy([[\"research.execute\"]], \"control-plane\")],\n\t[\"task_steps\", policy([[\"workflow.plan\", \"memory.mutate\"]], \"control-plane\")],\n\t[\"pipeline\", policy([[\"workflow.plan\"], [\"filesystem.write\", \"worktree.mutate\"]], [\"control-plane\", \"path-scope\"])],\n\t[\"tool_task\", policy([[\"process.exec\", \"workflow.delegate\"]], \"control-plane\")],\n\t[\"worktree_sync\", policy([[\"worktree.mutate\", \"filesystem.write\"]], \"path-scope\")],\n\t[\"ask_question\", policy([[\"workflow.plan\", \"memory.query\"]], \"control-plane\")],\n\t[\"artifact_retrieve\", policy([[\"filesystem.read\"]], \"path-scope\")],\n\t[\"context_scout\", policy([[\"filesystem.read\"]], \"path-scope\")],\n\t[\"tmux_dispatch\", policy([[\"process.exec\", \"workflow.delegate\"]], \"process-launcher\")],\n\t[\"improvement_loop\", policy([[\"process.exec\", \"tests.execute\"]], \"process-launcher\")],\n]);\n\nexport function getToolCapabilityPolicy(toolName: string): ToolCapabilityPolicy | undefined {\n\treturn TOOL_CAPABILITY_POLICIES.get(toolName.toLowerCase());\n}\n\nexport function hasToolCapabilityPolicy(toolName: string): boolean {\n\treturn getToolCapabilityPolicy(toolName) !== undefined;\n}\n\nexport function toolUsesPathScope(toolName: string): boolean {\n\treturn getToolCapabilityPolicy(toolName)?.enforcements.includes(\"path-scope\") ?? false;\n}\n\nexport function toolCapabilityRequirementClauses(\n\ttoolName: string,\n\targs?: unknown,\n): readonly (readonly HarnessCapability[])[] {\n\tconst name = toolName.toLowerCase();\n\tif (name === \"memory\" && args !== undefined) {\n\t\tconst record =\n\t\t\targs && typeof args === \"object\" && !Array.isArray(args) ? (args as Record<string, unknown>) : undefined;\n\t\tconst isUnambiguousQuery =\n\t\t\trecord !== undefined &&\n\t\t\ttypeof record.query === \"string\" &&\n\t\t\tObject.keys(record).every((key) => key === \"query\");\n\t\treturn isUnambiguousQuery ? [[\"memory.query\"]] : [[\"memory.mutate\"]];\n\t}\n\tif (name === \"goal\" && args !== undefined) {\n\t\tconst action =\n\t\t\targs && typeof args === \"object\" && !Array.isArray(args) && \"action\" in args\n\t\t\t\t? (args as { action: unknown }).action\n\t\t\t\t: undefined;\n\t\treturn action === \"get\" ? [[\"memory.query\"]] : [[\"memory.mutate\"]];\n\t}\n\tif (name === \"pipeline\") {\n\t\tconst action =\n\t\t\targs && typeof args === \"object\" && \"action\" in args ? (args as { action: unknown }).action : undefined;\n\t\tif (action === \"list\" || action === \"status\") {\n\t\t\treturn [[\"workflow.plan\", \"filesystem.read\"]];\n\t\t}\n\t\treturn [[\"workflow.plan\"], [\"filesystem.write\", \"worktree.mutate\"]];\n\t}\n\tconst itemPolicy = getToolCapabilityPolicy(name);\n\tif (!itemPolicy) return [];\n\treturn itemPolicy.capabilityClauses;\n}\n\nexport function requiredEnvelopeCapabilities(toolName: string, args?: unknown): readonly HarnessCapability[] {\n\tconst clauses = toolCapabilityRequirementClauses(toolName, args);\n\treturn clauses.map((clause) => clause[0]).filter((c): c is HarnessCapability => c !== undefined);\n}\n\nexport function formatToolCapabilityRequirement(toolName: string, args?: unknown): string {\n\treturn toolCapabilityRequirementClauses(toolName, args)\n\t\t.map((clause) => (clause.length === 1 ? clause[0] : `(${clause.join(\" or \")})`))\n\t\t.filter((clause): clause is string => clause !== undefined)\n\t\t.join(\" and \");\n}\n\nexport function envelopeHasToolCapability(\n\tcapabilities: readonly HarnessCapability[],\n\ttoolName: string,\n\targs?: unknown,\n): boolean {\n\treturn resolveToolCallCapabilities(capabilities, toolName, args) !== undefined;\n}\n\n/** Resolve the exact alternative selected from every conjunctive clause for one invocation. */\nexport function resolveToolCallCapabilities(\n\tcapabilities: readonly HarnessCapability[],\n\ttoolName: string,\n\targs?: unknown,\n): readonly HarnessCapability[] | undefined {\n\tconst clauses = toolCapabilityRequirementClauses(toolName, args);\n\tif (clauses.length === 0) return undefined;\n\tconst resolved: HarnessCapability[] = [];\n\tfor (const clause of clauses) {\n\t\tconst match = clause.find((capability) => capabilities.includes(capability));\n\t\tif (!match) return undefined;\n\t\tresolved.push(match);\n\t}\n\treturn resolved;\n}\n\nexport function resolveCapabilityPathAccess(\n\tcapabilities: readonly HarnessCapability[],\n): Exclude<ToolPathAccess, \"none\"> | undefined {\n\tif (capabilities.some((capability) => WRITE_PATH_CAPABILITIES.has(capability))) return \"write\";\n\tif (capabilities.some((capability) => READ_PATH_CAPABILITIES.has(capability))) return \"read\";\n\treturn undefined;\n}\n\n/** Resolve whether one authorized invocation exposes caller-controlled paths to a scoped boundary. */\nexport function resolveToolCallPathAccess(\n\tcapabilities: readonly HarnessCapability[],\n\ttoolName: string,\n\targs?: unknown,\n): ToolPathAccess {\n\tconst policy = getToolCapabilityPolicy(toolName);\n\tif (!policy?.enforcements.includes(\"path-scope\")) return \"none\";\n\tconst selected = resolveToolCallCapabilities(capabilities, toolName, args);\n\tif (!selected) return \"none\";\n\tconst name = toolName.toLowerCase();\n\t// These tools accept identifiers or natural-language queries, not filesystem paths. Their\n\t// fixed stores are owned by the tool, while context_scout gates each concrete child read.\n\tif (name === \"artifact_retrieve\" || name === \"context_scout\") return \"none\";\n\tif (name === \"pipeline\" && selected.includes(\"workflow.plan\") && selected.length === 1) return \"none\";\n\tif (name === \"secret_store\") {\n\t\tconst action =\n\t\t\targs && typeof args === \"object\" && !Array.isArray(args) && \"action\" in args\n\t\t\t\t? (args as { action: unknown }).action\n\t\t\t\t: undefined;\n\t\treturn action === \"migrate\" ? \"read\" : \"none\";\n\t}\n\treturn resolveCapabilityPathAccess(selected) ?? \"none\";\n}\n\nexport function resolveProfileToolCapabilities(\n\tprofile: Pick<OrchestrationProfile, \"capabilityCeiling\">,\n\ttoolName: string,\n): readonly HarnessCapability[] | undefined {\n\tconst clauses = toolCapabilityRequirementClauses(toolName);\n\tif (clauses.length === 0) return undefined;\n\tconst resolved: HarnessCapability[] = [];\n\tfor (const clause of clauses) {\n\t\tconst match = clause.find((capability) => profile.capabilityCeiling.includes(capability));\n\t\tif (!match) return undefined;\n\t\tresolved.push(match);\n\t}\n\treturn resolved;\n}\n\nexport function describeToolCapabilityAuthority(toolName: string): string {\n\tswitch (getToolCapabilityPolicy(toolName)?.capabilityClauses[0]?.[0]) {\n\t\tcase \"filesystem.read\":\n\t\tcase \"worktree.read\":\n\t\t\treturn \"read\";\n\t\tcase \"filesystem.write\":\n\t\tcase \"worktree.mutate\":\n\t\t\treturn \"write\";\n\t\tcase \"process.exec\":\n\t\tcase \"tests.execute\":\n\t\t\treturn \"process\";\n\t\tcase \"network.http\":\n\t\tcase \"service.mcp\":\n\t\t\treturn \"network\";\n\t\tcase \"memory.query\":\n\t\tcase \"memory.mutate\":\n\t\t\treturn \"memory\";\n\t\tcase \"workflow.delegate\":\n\t\t\treturn \"delegation\";\n\t\tcase \"skill.read\":\n\t\tcase \"skill.write\":\n\t\t\treturn \"skill\";\n\t\tcase \"source.read\":\n\t\tcase \"source.write\":\n\t\t\treturn \"source\";\n\t\tcase \"research.execute\":\n\t\t\treturn \"research\";\n\t\tcase \"settings.read\":\n\t\tcase \"settings.write\":\n\t\t\treturn \"settings\";\n\t\tcase \"publish.execute\":\n\t\t\treturn \"publish\";\n\t\tcase \"credentials.use\":\n\t\t\treturn \"authentication\";\n\t\tdefault:\n\t\t\treturn \"capability\";\n\t}\n}\n"]}
1
+ {"version":3,"file":"tool-capability-policy.js","sourceRoot":"","sources":["../../src/core/tool-capability-policy.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAWvE,MAAM,sBAAsB,GAAmC,IAAI,GAAG,CAAC;IACtE,iBAAiB;IACjB,eAAe;IACf,YAAY;IACZ,aAAa;CACb,CAAC,CAAC;AACH,MAAM,uBAAuB,GAAmC,IAAI,GAAG,CAAC;IACvE,kBAAkB;IAClB,iBAAiB;IACjB,aAAa;IACb,cAAc;CACd,CAAC,CAAC;AAEH,SAAS,MAAM,CACd,iBAA4D,EAC5D,YAA8E;IAE9E,OAAO,MAAM,CAAC,MAAM,CAAC;QACpB,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/F,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC;KAClG,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AACjF,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AACrF,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;AACvF,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;AAClF,MAAM,eAAe,GAAG,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;AAEzE,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAA+B;IACtE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAU,CAAC;IACrF,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAU,CAAC;IACtF,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,oBAAoB,EAAE,aAAa,CAAC,CAAC,GAAG,CACpF,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAU,CACjD;IACD,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAU,CAAC;IACjF,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IACjD,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IACvD,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IACrD,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAC1D,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IACtE,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IAC5E,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IAC3E,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IAC5E,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IACxE,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;IAChF,CAAC,UAAU,EAAE,eAAe,CAAC;IAC7B,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IAClE,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,eAAe,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IAC7E,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;IACnH,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IAC/E,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAClF,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;IAC9E,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAClE,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IAC9D,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACtF,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;CACrF,CAAC,CAAC;AAEH,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACvD,OAAO,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACvD,OAAO,uBAAuB,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IACjD,OAAO,uBAAuB,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC/C,QAAgB,EAChB,IAAc;IAEd,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACpC,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7C,MAAM,MAAM,GACX,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,IAAgC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1G,MAAM,kBAAkB,GACvB,MAAM,KAAK,SAAS;YACpB,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;YAChC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC;QACrD,OAAO,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC3C,MAAM,MAAM,GACX,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,IAAI,IAAI;YAC3E,CAAC,CAAE,IAA4B,CAAC,MAAM;YACtC,CAAC,CAAC,SAAS,CAAC;QACd,OAAO,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACzB,MAAM,MAAM,GACX,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAE,IAA4B,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QACzG,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YAC9C,OAAO,CAAC,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,UAAU,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAC3B,OAAO,UAAU,CAAC,iBAAiB,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,QAAgB,EAAE,IAAc;IAC5E,MAAM,OAAO,GAAG,gCAAgC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACjE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAA0B,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;AAClG,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,QAAgB,EAAE,IAAc;IAC/E,OAAO,gCAAgC,CAAC,QAAQ,EAAE,IAAI,CAAC;SACrD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC/E,MAAM,CAAC,CAAC,MAAM,EAAoB,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC;SAC1D,IAAI,CAAC,OAAO,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,yBAAyB,CACxC,YAA0C,EAC1C,QAAgB,EAChB,IAAc;IAEd,OAAO,2BAA2B,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,SAAS,CAAC;AAChF,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,2BAA2B,CAC1C,YAA0C,EAC1C,QAAgB,EAChB,IAAc;IAEd,MAAM,OAAO,GAAG,gCAAgC,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACjE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAC1C,YAA0C;IAE1C,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,uBAAuB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IAC/F,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IAC7F,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,sGAAsG;AACtG,MAAM,UAAU,yBAAyB,CACxC,YAA0C,EAC1C,QAAgB,EAChB,IAAc;IAEd,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,MAAM,CAAC;IAChE,MAAM,QAAQ,GAAG,2BAA2B,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3E,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;IACpC,0FAA0F;IAC1F,0FAA0F;IAC1F,IAAI,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,eAAe;QAAE,OAAO,MAAM,CAAC;IAC5E,IAAI,IAAI,KAAK,UAAU,IAAI,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACtG,IAAI,IAAI,KAAK,cAAc,EAAE,CAAC;QAC7B,MAAM,MAAM,GACX,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,QAAQ,IAAI,IAAI;YAC3E,CAAC,CAAE,IAA4B,CAAC,MAAM;YACtC,CAAC,CAAC,SAAS,CAAC;QACd,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACxE,CAAC;IACD,OAAO,2BAA2B,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC7C,OAAwD,EACxD,QAAgB;IAEhB,MAAM,OAAO,GAAG,gCAAgC,CAAC,QAAQ,CAAC,CAAC;IAC3D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,MAAM,QAAQ,GAAwB,EAAE,CAAC;IACzC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,QAAgB;IAC/D,QAAQ,uBAAuB,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,KAAK,iBAAiB,CAAC;QACvB,KAAK,eAAe;YACnB,OAAO,MAAM,CAAC;QACf,KAAK,kBAAkB,CAAC;QACxB,KAAK,iBAAiB;YACrB,OAAO,OAAO,CAAC;QAChB,KAAK,cAAc,CAAC;QACpB,KAAK,eAAe;YACnB,OAAO,SAAS,CAAC;QAClB,KAAK,cAAc,CAAC;QACpB,KAAK,aAAa;YACjB,OAAO,SAAS,CAAC;QAClB,KAAK,cAAc,CAAC;QACpB,KAAK,eAAe;YACnB,OAAO,QAAQ,CAAC;QACjB,KAAK,mBAAmB;YACvB,OAAO,YAAY,CAAC;QACrB,KAAK,YAAY,CAAC;QAClB,KAAK,aAAa;YACjB,OAAO,OAAO,CAAC;QAChB,KAAK,aAAa,CAAC;QACnB,KAAK,cAAc;YAClB,OAAO,QAAQ,CAAC;QACjB,KAAK,kBAAkB;YACtB,OAAO,UAAU,CAAC;QACnB,KAAK,eAAe,CAAC;QACrB,KAAK,gBAAgB;YACpB,OAAO,UAAU,CAAC;QACnB,KAAK,iBAAiB;YACrB,OAAO,SAAS,CAAC;QAClB,KAAK,iBAAiB;YACrB,OAAO,gBAAgB,CAAC;QACzB;YACC,OAAO,YAAY,CAAC;IACtB,CAAC;AACF,CAAC","sourcesContent":["import type { HarnessCapability } from \"./capability-contract.ts\";\nimport { GOAL_LIFECYCLE_TOOL_NAMES } from \"./goals/goal-tool-names.ts\";\nimport type { CapabilityEnforcementKind, OrchestrationProfile } from \"./orchestration/contracts.ts\";\n\nexport interface ToolCapabilityPolicy {\n\t/** AND across clauses; OR across the capability alternatives inside one clause. */\n\tcapabilityClauses: readonly (readonly HarnessCapability[])[];\n\tenforcements: readonly CapabilityEnforcementKind[];\n}\n\nexport type ToolPathAccess = \"none\" | \"read\" | \"write\";\n\nconst READ_PATH_CAPABILITIES: ReadonlySet<HarnessCapability> = new Set([\n\t\"filesystem.read\",\n\t\"worktree.read\",\n\t\"skill.read\",\n\t\"source.read\",\n]);\nconst WRITE_PATH_CAPABILITIES: ReadonlySet<HarnessCapability> = new Set([\n\t\"filesystem.write\",\n\t\"worktree.mutate\",\n\t\"skill.write\",\n\t\"source.write\",\n]);\n\nfunction policy(\n\tcapabilityClauses: readonly (readonly HarnessCapability[])[],\n\tenforcements: CapabilityEnforcementKind | readonly CapabilityEnforcementKind[],\n): ToolCapabilityPolicy {\n\treturn Object.freeze({\n\t\tcapabilityClauses: Object.freeze(capabilityClauses.map((clause) => Object.freeze([...clause]))),\n\t\tenforcements: Object.freeze(typeof enforcements === \"string\" ? [enforcements] : [...enforcements]),\n\t});\n}\n\nconst READ_POLICY = policy([[\"filesystem.read\", \"worktree.read\"]], \"path-scope\");\nconst WRITE_POLICY = policy([[\"filesystem.write\", \"worktree.mutate\"]], \"path-scope\");\nconst PROCESS_POLICY = policy([[\"process.exec\", \"tests.execute\"]], \"process-launcher\");\nconst NETWORK_POLICY = policy([[\"network.http\", \"service.mcp\"]], \"service-proxy\");\nconst DELEGATE_POLICY = policy([[\"workflow.delegate\"]], \"control-plane\");\n\nconst TOOL_CAPABILITY_POLICIES = new Map<string, ToolCapabilityPolicy>([\n\t...[\"read\", \"ls\", \"grep\", \"find\"].map((toolName) => [toolName, READ_POLICY] as const),\n\t...[\"write\", \"edit\", \"edit-diff\"].map((toolName) => [toolName, WRITE_POLICY] as const),\n\t...[\"bash\", \"python\", \"powershell\", \"shell\", \"run_toolkit_script\", \"run_process\"].map(\n\t\t(toolName) => [toolName, PROCESS_POLICY] as const,\n\t),\n\t...[\"fetch\", \"web_search\"].map((toolName) => [toolName, NETWORK_POLICY] as const),\n\t[\"skill\", policy([[\"skill.read\"]], \"path-scope\")],\n\t[\"skill_audit\", policy([[\"skill.read\"]], \"path-scope\")],\n\t[\"skillify\", policy([[\"skill.write\"]], \"path-scope\")],\n\t[\"extensionify\", policy([[\"source.write\"]], \"path-scope\")],\n\t[\"goal\", policy([[\"memory.mutate\", \"memory.query\"]], \"memory-broker\")],\n\t[GOAL_LIFECYCLE_TOOL_NAMES[0], policy([[\"memory.mutate\"]], \"memory-broker\")],\n\t[GOAL_LIFECYCLE_TOOL_NAMES[1], policy([[\"memory.query\"]], \"memory-broker\")],\n\t[GOAL_LIFECYCLE_TOOL_NAMES[2], policy([[\"memory.mutate\"]], \"memory-broker\")],\n\t[\"memory\", policy([[\"memory.mutate\", \"memory.query\"]], \"memory-broker\")],\n\t[\"secret_store\", policy([[\"credentials.use\"]], [\"service-proxy\", \"path-scope\"])],\n\t[\"delegate\", DELEGATE_POLICY],\n\t[\"model_fitness\", policy([[\"research.execute\"]], \"control-plane\")],\n\t[\"task_steps\", policy([[\"workflow.plan\", \"memory.mutate\"]], \"control-plane\")],\n\t[\"pipeline\", policy([[\"workflow.plan\"], [\"filesystem.write\", \"worktree.mutate\"]], [\"control-plane\", \"path-scope\"])],\n\t[\"tool_task\", policy([[\"process.exec\", \"workflow.delegate\"]], \"control-plane\")],\n\t[\"worktree_sync\", policy([[\"worktree.mutate\", \"filesystem.write\"]], \"path-scope\")],\n\t[\"ask_question\", policy([[\"workflow.plan\", \"memory.query\"]], \"control-plane\")],\n\t[\"artifact_retrieve\", policy([[\"filesystem.read\"]], \"path-scope\")],\n\t[\"context_scout\", policy([[\"filesystem.read\"]], \"path-scope\")],\n\t[\"tmux_dispatch\", policy([[\"process.exec\", \"workflow.delegate\"]], \"process-launcher\")],\n\t[\"improvement_loop\", policy([[\"process.exec\", \"tests.execute\"]], \"process-launcher\")],\n]);\n\nexport function getToolCapabilityPolicy(toolName: string): ToolCapabilityPolicy | undefined {\n\treturn TOOL_CAPABILITY_POLICIES.get(toolName.toLowerCase());\n}\n\nexport function hasToolCapabilityPolicy(toolName: string): boolean {\n\treturn getToolCapabilityPolicy(toolName) !== undefined;\n}\n\nexport function toolUsesPathScope(toolName: string): boolean {\n\treturn getToolCapabilityPolicy(toolName)?.enforcements.includes(\"path-scope\") ?? false;\n}\n\nexport function toolCapabilityRequirementClauses(\n\ttoolName: string,\n\targs?: unknown,\n): readonly (readonly HarnessCapability[])[] {\n\tconst name = toolName.toLowerCase();\n\tif (name === \"memory\" && args !== undefined) {\n\t\tconst record =\n\t\t\targs && typeof args === \"object\" && !Array.isArray(args) ? (args as Record<string, unknown>) : undefined;\n\t\tconst isUnambiguousQuery =\n\t\t\trecord !== undefined &&\n\t\t\ttypeof record.query === \"string\" &&\n\t\t\tObject.keys(record).every((key) => key === \"query\");\n\t\treturn isUnambiguousQuery ? [[\"memory.query\"]] : [[\"memory.mutate\"]];\n\t}\n\tif (name === \"goal\" && args !== undefined) {\n\t\tconst action =\n\t\t\targs && typeof args === \"object\" && !Array.isArray(args) && \"action\" in args\n\t\t\t\t? (args as { action: unknown }).action\n\t\t\t\t: undefined;\n\t\treturn action === \"get\" ? [[\"memory.query\"]] : [[\"memory.mutate\"]];\n\t}\n\tif (name === \"pipeline\") {\n\t\tconst action =\n\t\t\targs && typeof args === \"object\" && \"action\" in args ? (args as { action: unknown }).action : undefined;\n\t\tif (action === \"list\" || action === \"status\") {\n\t\t\treturn [[\"workflow.plan\", \"filesystem.read\"]];\n\t\t}\n\t\treturn [[\"workflow.plan\"], [\"filesystem.write\", \"worktree.mutate\"]];\n\t}\n\tconst itemPolicy = getToolCapabilityPolicy(name);\n\tif (!itemPolicy) return [];\n\treturn itemPolicy.capabilityClauses;\n}\n\nexport function requiredEnvelopeCapabilities(toolName: string, args?: unknown): readonly HarnessCapability[] {\n\tconst clauses = toolCapabilityRequirementClauses(toolName, args);\n\treturn clauses.map((clause) => clause[0]).filter((c): c is HarnessCapability => c !== undefined);\n}\n\nexport function formatToolCapabilityRequirement(toolName: string, args?: unknown): string {\n\treturn toolCapabilityRequirementClauses(toolName, args)\n\t\t.map((clause) => (clause.length === 1 ? clause[0] : `(${clause.join(\" or \")})`))\n\t\t.filter((clause): clause is string => clause !== undefined)\n\t\t.join(\" and \");\n}\n\nexport function envelopeHasToolCapability(\n\tcapabilities: readonly HarnessCapability[],\n\ttoolName: string,\n\targs?: unknown,\n): boolean {\n\treturn resolveToolCallCapabilities(capabilities, toolName, args) !== undefined;\n}\n\n/** Resolve the exact alternative selected from every conjunctive clause for one invocation. */\nexport function resolveToolCallCapabilities(\n\tcapabilities: readonly HarnessCapability[],\n\ttoolName: string,\n\targs?: unknown,\n): readonly HarnessCapability[] | undefined {\n\tconst clauses = toolCapabilityRequirementClauses(toolName, args);\n\tif (clauses.length === 0) return undefined;\n\tconst resolved: HarnessCapability[] = [];\n\tfor (const clause of clauses) {\n\t\tconst match = clause.find((capability) => capabilities.includes(capability));\n\t\tif (!match) return undefined;\n\t\tresolved.push(match);\n\t}\n\treturn resolved;\n}\n\nexport function resolveCapabilityPathAccess(\n\tcapabilities: readonly HarnessCapability[],\n): Exclude<ToolPathAccess, \"none\"> | undefined {\n\tif (capabilities.some((capability) => WRITE_PATH_CAPABILITIES.has(capability))) return \"write\";\n\tif (capabilities.some((capability) => READ_PATH_CAPABILITIES.has(capability))) return \"read\";\n\treturn undefined;\n}\n\n/** Resolve whether one authorized invocation exposes caller-controlled paths to a scoped boundary. */\nexport function resolveToolCallPathAccess(\n\tcapabilities: readonly HarnessCapability[],\n\ttoolName: string,\n\targs?: unknown,\n): ToolPathAccess {\n\tconst policy = getToolCapabilityPolicy(toolName);\n\tif (!policy?.enforcements.includes(\"path-scope\")) return \"none\";\n\tconst selected = resolveToolCallCapabilities(capabilities, toolName, args);\n\tif (!selected) return \"none\";\n\tconst name = toolName.toLowerCase();\n\t// These tools accept identifiers or natural-language queries, not filesystem paths. Their\n\t// fixed stores are owned by the tool, while context_scout gates each concrete child read.\n\tif (name === \"artifact_retrieve\" || name === \"context_scout\") return \"none\";\n\tif (name === \"pipeline\" && selected.includes(\"workflow.plan\") && selected.length === 1) return \"none\";\n\tif (name === \"secret_store\") {\n\t\tconst action =\n\t\t\targs && typeof args === \"object\" && !Array.isArray(args) && \"action\" in args\n\t\t\t\t? (args as { action: unknown }).action\n\t\t\t\t: undefined;\n\t\treturn action === \"migrate\" || action === \"discover\" ? \"read\" : \"none\";\n\t}\n\treturn resolveCapabilityPathAccess(selected) ?? \"none\";\n}\n\nexport function resolveProfileToolCapabilities(\n\tprofile: Pick<OrchestrationProfile, \"capabilityCeiling\">,\n\ttoolName: string,\n): readonly HarnessCapability[] | undefined {\n\tconst clauses = toolCapabilityRequirementClauses(toolName);\n\tif (clauses.length === 0) return undefined;\n\tconst resolved: HarnessCapability[] = [];\n\tfor (const clause of clauses) {\n\t\tconst match = clause.find((capability) => profile.capabilityCeiling.includes(capability));\n\t\tif (!match) return undefined;\n\t\tresolved.push(match);\n\t}\n\treturn resolved;\n}\n\nexport function describeToolCapabilityAuthority(toolName: string): string {\n\tswitch (getToolCapabilityPolicy(toolName)?.capabilityClauses[0]?.[0]) {\n\t\tcase \"filesystem.read\":\n\t\tcase \"worktree.read\":\n\t\t\treturn \"read\";\n\t\tcase \"filesystem.write\":\n\t\tcase \"worktree.mutate\":\n\t\t\treturn \"write\";\n\t\tcase \"process.exec\":\n\t\tcase \"tests.execute\":\n\t\t\treturn \"process\";\n\t\tcase \"network.http\":\n\t\tcase \"service.mcp\":\n\t\t\treturn \"network\";\n\t\tcase \"memory.query\":\n\t\tcase \"memory.mutate\":\n\t\t\treturn \"memory\";\n\t\tcase \"workflow.delegate\":\n\t\t\treturn \"delegation\";\n\t\tcase \"skill.read\":\n\t\tcase \"skill.write\":\n\t\t\treturn \"skill\";\n\t\tcase \"source.read\":\n\t\tcase \"source.write\":\n\t\t\treturn \"source\";\n\t\tcase \"research.execute\":\n\t\t\treturn \"research\";\n\t\tcase \"settings.read\":\n\t\tcase \"settings.write\":\n\t\t\treturn \"settings\";\n\t\tcase \"publish.execute\":\n\t\t\treturn \"publish\";\n\t\tcase \"credentials.use\":\n\t\t\treturn \"authentication\";\n\t\tdefault:\n\t\t\treturn \"capability\";\n\t}\n}\n"]}
@@ -234,10 +234,10 @@ export function createGoalToolDefinition(deps) {
234
234
  return {
235
235
  name: LEGACY_GOAL_TOOL_NAME,
236
236
  label: "goal",
237
- description: "Read or update the durable goal for explicitly persistent work. Use task_steps for plans and delegate for workers; owner or system controls lifecycle and budget stops.",
237
+ description: "Read or update the durable goal for work that benefits from persistent autonomous continuation. The agent may start one at its discretion or on explicit user/system request; only the owner or system may set a token budget.",
238
238
  promptSnippet: "Read or update the durable goal.",
239
239
  promptGuidelines: [
240
- "Start only for explicit persistent chat/system goal. get if uncertain; never replace unfinished goal; tokenBudget only if requested.",
240
+ "Start when persistent continuation materially benefits current work or the user/system requests it. Skip routine one-turn tasks; get if uncertain; never replace unfinished goal; tokenBudget only if requested.",
241
241
  "Plans: task_steps. Workers: delegate. Background tools: tool_task wait once; cite taskId as kind=tool evidence.",
242
242
  "increment satisfies the current open requirement from unused evidence, or completes when none remain.",
243
243
  "complete needs current authoritative evidence, no remaining work, no linked open task_steps, no running tool_task, no active pipeline. block_goal needs same real impasse for 3 goal turns.",
@@ -269,7 +269,7 @@ export function createGoalToolDefinition(deps) {
269
269
  details: { action: "get", applied: false, state },
270
270
  };
271
271
  }
272
- if (input.action === "start" && deps.authorizeStart) {
272
+ if (input.action === "start" && input.tokenBudget !== undefined && deps.authorizeStart) {
273
273
  const error = deps.authorizeStart(input);
274
274
  if (error) {
275
275
  return {
@@ -445,8 +445,8 @@ export function createGoalLifecycleToolDefinitions(goalTool) {
445
445
  const createGoal = {
446
446
  name: GOAL_LIFECYCLE_TOOL_NAMES[0],
447
447
  label: GOAL_LIFECYCLE_TOOL_NAMES[0],
448
- description: "Create a goal only when explicitly requested by the user or system/developer instructions; do not infer goals from ordinary tasks. Set token_budget only when explicitly requested. Fails if an unfinished goal exists.",
449
- promptSnippet: "Create an explicitly requested durable goal.",
448
+ description: "Create a durable goal when persistent autonomous continuation materially benefits the current work, or when the user/system explicitly requests one. Use agent discretion; skip routine short tasks. Set token_budget only when explicitly requested. Fails if an unfinished goal exists.",
449
+ promptSnippet: "Start durable goal.",
450
450
  parameters: createGoalSchema,
451
451
  execute(toolCallId, input, signal, onUpdate, context) {
452
452
  return goalTool.execute(toolCallId, {
@@ -461,7 +461,7 @@ export function createGoalLifecycleToolDefinitions(goalTool) {
461
461
  name: GOAL_LIFECYCLE_TOOL_NAMES[1],
462
462
  label: GOAL_LIFECYCLE_TOOL_NAMES[1],
463
463
  description: "Get the current goal for this session, including status, budget, token and elapsed-time usage, requirements, evidence, and progress.",
464
- promptSnippet: "Inspect the current durable goal.",
464
+ promptSnippet: "Inspect durable goal.",
465
465
  parameters: getGoalSchema,
466
466
  execute(toolCallId, _input, signal, onUpdate, context) {
467
467
  return goalTool.execute(toolCallId, { action: "get" }, signal, onUpdate, context);
@@ -471,7 +471,7 @@ export function createGoalLifecycleToolDefinitions(goalTool) {
471
471
  name: GOAL_LIFECYCLE_TOOL_NAMES[2],
472
472
  label: GOAL_LIFECYCLE_TOOL_NAMES[2],
473
473
  description: "Update the existing goal. Set active only after concrete, verifiable progress in the current turn. Mark complete only when current evidence proves the full objective is achieved and no required work remains. Mark blocked only after the same blocking condition has recurred for at least three consecutive goal turns and no meaningful progress is possible without user input or external change; include that condition in reason. Never use blocked merely because work is hard, slow, uncertain, incomplete, or would benefit from clarification.",
474
- promptSnippet: "Report concrete progress or mark the durable goal complete or genuinely blocked.",
474
+ promptSnippet: "Update goal; complete/block only with evidence.",
475
475
  parameters: updateGoalSchema,
476
476
  execute(toolCallId, input, signal, onUpdate, context) {
477
477
  const requestedGoalStatus = input.status === "complete" ? "completed" : input.status;
@@ -1 +1 @@
1
- {"version":3,"file":"goal.js","sourceRoot":"","sources":["../../../src/core/tools/goal.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { stat as fsStat } from \"node:fs/promises\";\nimport { type Static, Type } from \"typebox\";\nimport type { WorkerClaim } from \"../autonomy/contracts.ts\";\nimport type { LaneRecord } from \"../autonomy/lane-tracker.ts\";\nimport type { BackgroundToolTaskRef } from \"../background-tool-task-controller.ts\";\nimport type { ToolDefinition } from \"../extensions/types.ts\";\nimport { type GoalStateRevision, getGoalStateRevision } from \"../goals/goal-lifecycle.ts\";\nimport { type GoalEvidenceKind, type GoalState, type GoalStatus, isGoalExecutionActive } from \"../goals/goal-state.ts\";\nimport {\n\tapplyGoalAction,\n\ttype GoalAction,\n\ttype GoalActionName,\n\ttype OpenTaskStepRef,\n\tsummarizeGoalState,\n} from \"../goals/goal-tool-core.ts\";\nimport { GOAL_LIFECYCLE_TOOL_NAMES, LEGACY_GOAL_TOOL_NAME } from \"../goals/goal-tool-names.ts\";\nimport {\n\temptyOrchestrationCall,\n\ttype OrchestrationPanelModel,\n\trenderOrchestrationToolResult,\n} from \"./orchestration-panel.ts\";\nimport { resolveToCwd } from \"./path-utils.ts\";\n\nconst goalSchema = Type.Object(\n\t{\n\t\taction: Type.Union(\n\t\t\t[\n\t\t\t\tType.Literal(\"get\"),\n\t\t\t\tType.Literal(\"start\"),\n\t\t\t\tType.Literal(\"add_requirement\"),\n\t\t\t\tType.Literal(\"satisfy_requirement\"),\n\t\t\t\tType.Literal(\"block_requirement\"),\n\t\t\t\tType.Literal(\"reopen_requirement\"),\n\t\t\t\tType.Literal(\"dispatch_worker\"),\n\t\t\t\tType.Literal(\"add_evidence\"),\n\t\t\t\tType.Literal(\"progress\"),\n\t\t\t\tType.Literal(\"no_progress\"),\n\t\t\t\tType.Literal(\"complete\"),\n\t\t\t\tType.Literal(\"increment\"),\n\t\t\t\tType.Literal(\"block_goal\"),\n\t\t\t],\n\t\t\t{ description: \"Goal record action.\" },\n\t\t),\n\t\tgoalId: Type.Optional(Type.String({ description: \"Stable goal id. Required for action 'start'.\" })),\n\t\tuserGoal: Type.Optional(Type.String({ description: \"The goal statement. Required for action 'start'.\" })),\n\t\ttokenBudget: Type.Optional(\n\t\t\tType.Integer({ minimum: 1, description: \"Optional positive token budget for action 'start'.\" }),\n\t\t),\n\t\trequirementId: Type.Optional(\n\t\t\tType.String({\n\t\t\t\tdescription: \"Requirement id for requirement actions.\",\n\t\t\t}),\n\t\t),\n\t\ttext: Type.Optional(Type.String({ description: \"Requirement text. Required for add_requirement.\" })),\n\t\tdependencies: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tdescription:\n\t\t\t\t\t\"Optional IDs of requirements that must be satisfied before this one. Valid for add_requirement.\",\n\t\t\t}),\n\t\t),\n\t\tinstructions: Type.Optional(Type.String({ description: \"Worker instructions. Required for dispatch_worker.\" })),\n\t\tevidenceId: Type.Optional(Type.String({ description: \"Evidence id. Required for add_evidence.\" })),\n\t\tevidenceIds: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tdescription: \"Existing evidence ids for satisfy_requirement.\",\n\t\t\t}),\n\t\t),\n\t\tkind: Type.Optional(\n\t\t\tType.Union(\n\t\t\t\t[\n\t\t\t\t\tType.Literal(\"file\"),\n\t\t\t\t\tType.Literal(\"test\"),\n\t\t\t\t\tType.Literal(\"tool\"),\n\t\t\t\t\tType.Literal(\"user\"),\n\t\t\t\t\tType.Literal(\"finding\"),\n\t\t\t\t\tType.Literal(\"worker\"),\n\t\t\t\t],\n\t\t\t\t{ description: \"Evidence kind. Required for add_evidence.\" },\n\t\t\t),\n\t\t),\n\t\tsummary: Type.Optional(Type.String({ description: \"Evidence summary. Required for add_evidence.\" })),\n\t\turi: Type.Optional(\n\t\t\tType.String({\n\t\t\t\tdescription: \"Optional file/URL, toolCallId, or laneId evidence locator.\",\n\t\t\t}),\n\t\t),\n\t\treason: Type.Optional(Type.String({ description: \"Reason for block_requirement or block_goal.\" })),\n\t\tdispatchTarget: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"in_process\"), Type.Literal(\"tmux\")], {\n\t\t\t\tdescription: \"Legacy target. Native is default; use tmux only for an owner-requested persistent pane.\",\n\t\t\t}),\n\t\t),\n\t},\n\t{ additionalProperties: false },\n);\n\nconst createGoalSchema = Type.Object(\n\t{\n\t\tobjective: Type.String({ description: \"Required. The concrete objective to start pursuing.\" }),\n\t\ttoken_budget: Type.Optional(\n\t\t\tType.Integer({ minimum: 1, description: \"Positive token budget. Omit unless explicitly requested.\" }),\n\t\t),\n\t},\n\t{ additionalProperties: false },\n);\n\nconst getGoalSchema = Type.Object({}, { additionalProperties: false });\n\nconst updateGoalSchema = Type.Object(\n\t{\n\t\tstatus: Type.Union([Type.Literal(\"active\"), Type.Literal(\"complete\"), Type.Literal(\"blocked\")], {\n\t\t\tdescription:\n\t\t\t\t\"Set active after concrete progress, complete after an evidence audit, or blocked after the same blocker persists for three turns.\",\n\t\t}),\n\t\treason: Type.Optional(\n\t\t\tType.String({ minLength: 1, description: \"Required for blocked: the recurring external blocker.\" }),\n\t\t),\n\t},\n\t{ additionalProperties: false },\n);\n\nexport type GoalToolInput = Static<typeof goalSchema>;\nexport type GoalToolDefinition = ToolDefinition;\n\nexport interface GoalToolDetails {\n\taction: GoalActionName | \"get\";\n\tapplied: boolean;\n\terror?: string;\n\tstate?: GoalState;\n\t/** Set on 'dispatch_worker' when a worker lane actually started; mirrors the requirement's\n\t * new `boundLaneId`. The in-process route by default, or a real persistent tmux lane when\n\t * `dispatchTarget:\"tmux\"` was selected and routed -- see {@link GoalToolDependencies.dispatchTmuxWorker}. */\n\tdispatchedLaneId?: string;\n\t/** Set on 'dispatch_worker' when no worker was dispatched: a wired dependency declined (e.g. worker\n\t * delegation disabled, already at capacity, or an honest tmux skip reason -- see\n\t * {@link GoalToolDependencies.dispatchTmuxWorker}), or the indeterminate-binding guard refused a\n\t * re-dispatch against an already-bound requirement (`requirement_already_bound`/`bound_lane_indeterminate`).\n\t * The binding is recorded (or, for a guard refusal, left exactly as it was) with no NEW laneId. */\n\tdispatchSkipReason?: string;\n}\n\nexport interface GoalToolDependencies {\n\t/** Read the latest persisted goal state for the active session. */\n\tgetGoalState: () => GoalState | undefined;\n\t/** Persist a new goal state snapshot to the active session. */\n\tsaveGoalState: (state: GoalState, expected?: GoalStateRevision) => void;\n\t/** Clock injection for deterministic tests. */\n\tnow?: () => string;\n\t/**\n\t * Check whether `toolCallId` exists in this session's records, for validating kind:\"tool\"\n\t * evidence refs at add_evidence time. When not wired, a \"tool\" ref cannot be proven and is\n\t * recorded as `verified: false` rather than assumed true.\n\t */\n\thasToolCallId?: (toolCallId: string) => boolean;\n\t/**\n\t * Read the session's live worker lane records, for validating kind:\"worker\" evidence refs\n\t * (the `uri` is a laneId) at add_evidence time. Read-defensive: when not wired -- exactly like\n\t * `hasToolCallId` -- a \"worker\" ref cannot be proven and is recorded as `verified: false` rather\n\t * than assumed true. Live wiring is added separately.\n\t */\n\tgetLaneRecords?: () => readonly LaneRecord[];\n\t/**\n\t * Read persisted worker claim snapshots (keyed by `WorkerClaim.requestId`, which is the same\n\t * id as the dispatching lane's laneId), for validating kind:\"worker\" evidence refs. See\n\t * {@link getLaneRecords}. A matching claim that is `parentReviewRequired && !parentReviewedAt`\n\t * verifies `false` -- an unreviewed worker completion must never ungate goal completion through\n\t * the existing verified/complete gate.\n\t */\n\tgetWorkerClaimSnapshots?: () => readonly WorkerClaim[];\n\t/**\n\t * Tool-layer side effect for a 'dispatch_worker' action when `dispatchTarget` is 'in_process'\n\t * (the default) or when {@link dispatchTmuxWorker} is not wired: dispatches a real in-process\n\t * worker lane for the given requirement and returns the resulting laneId to bind onto it. When\n\t * the dependency is present but the underlying delegation starter declines (disabled, already at\n\t * capacity, etc.), return `{ skipReason }` instead of a laneId -- a real, non-silent skip that\n\t * the tool response surfaces, distinct from this dependency being altogether unwired (`undefined`\n\t * dep, or the dep returning `undefined`), which records the binding attempt structurally with no\n\t * laneId (a no-op).\n\t */\n\tstartWorkerDelegation?: (args: {\n\t\trequirementId: string;\n\t\tinstructions: string;\n\t}) => { laneId?: string; skipReason?: string } | undefined;\n\t/**\n\t * Tool-layer side effect for a 'dispatch_worker' action when `input.dispatchTarget === \"tmux\"`:\n\t * dispatches a REAL persistent tmux worker via the tmux_agent_manager extension's `fire_task`\n\t * action (core structurally invokes the same tool call the model would make; no extension change,\n\t * no faked launch or laneId -- see `tmux-dispatch.ts`'s `dispatchTmuxWorker`). Selected ONLY when\n\t * BOTH `input.dispatchTarget === \"tmux\"` AND this dependency is present; otherwise the EXISTING\n\t * {@link startWorkerDelegation} in-process path runs, byte-identical to before this field existed.\n\t * The honest skip-reason vocabulary this can return: `tmux_extension_not_loaded`,\n\t * `no_standing_grant` (the owner has not authorized unattended tmux dispatch),\n\t * `tmux_dispatch_failed`, `tmux_dispatch_incomplete`, `lane_correlation_failed`,\n\t * `worktree_create_failed` (worktree-sync is enabled but the lane-first `create_lane` call was\n\t * refused -- e.g. max lanes reached -- so no fire_task call was ever attempted),\n\t * `worker_capability_insufficient` (the model is sub-full class, has an unknown context window,\n\t * does not advertise a native tool-call path, or is graded-demoted to text-protocol/none -- see\n\t * `model-capability.ts`'s `evaluateLaneWorkerRefusal`; this is the parent's best-effort check\n\t * only, refused before any lane/pane side effect -- the dispatched child still refuses\n\t * authoritatively at its own startup regardless).\n\t */\n\tdispatchTmuxWorker?: (args: {\n\t\trequirementId: string;\n\t\tinstructions: string;\n\t}) => Promise<{ laneId?: string; skipReason?: string }>;\n\t/** Working directory for resolving kind:\"file\" evidence ref paths. Defaults to `process.cwd()`. */\n\tcwd?: () => string;\n\t/**\n\t * Gate agent-facing 'complete' on verified/user evidence backing. Defaults to `true` (on)\n\t * when omitted -- the conservative default; set to a function returning `false` to opt out.\n\t */\n\trequireVerifiedEvidenceForCompletion?: () => boolean;\n\t/**\n\t * Read-only open (non-terminal) task_steps steps on the active branch, for the goal⇄task\n\t * cross-visibility nudge in the tool response. When omitted, `summarizeGoalState` gets\n\t * no task-step context and simply emits no nudge -- goal-tool-core stays pure and never reads\n\t * task state itself; this is the only place that supplies it.\n\t */\n\tgetOpenTaskSteps?: () => readonly OpenTaskStepRef[];\n\t/** Live background tool_task records for kind:\"tool\" evidence and complete-time re-check. */\n\tgetBackgroundToolTasks?: () => readonly BackgroundToolTaskRef[];\n\t/** Active ICM pipeline run for the complete/increment join. */\n\tgetActivePipeline?: () => { runId: string; pipelineName: string; goalId?: string; status: string } | undefined;\n\t/** Model-facing start authority for the current foreground turn. Omitted by direct owner/test callers. */\n\tauthorizeStart?: (input: Pick<GoalToolInput, \"userGoal\" | \"tokenBudget\">) => string | undefined;\n\t/**\n\t * Live tool-evidence check. When wired, kind:\"tool\" uses this instead of {@link hasToolCallId}\n\t * so a still-running background handoff cannot verify as done.\n\t */\n\tresolveToolEvidence?: (uri: string) => boolean;\n}\n\nfunction allowsNativeTmuxFallback(reason: string | undefined): boolean {\n\treturn reason === \"tmux_unavailable\" || reason === \"tmux_extension_not_loaded\";\n}\n\n/**\n * Validate an evidence ref's `uri` against session records (\"tool\") or the filesystem (\"file\").\n * Returns `undefined` for kinds/refs that carry nothing checkable (e.g. \"user\"/\"finding\"/\"test\",\n * or a missing `uri`) -- absence of a ref is not the same as a ref that failed to verify.\n */\nasync function resolveEvidenceVerified(\n\tkind: GoalEvidenceKind,\n\turi: string | undefined,\n\tdeps: GoalToolDependencies,\n): Promise<boolean | undefined> {\n\tconst trimmedUri = uri?.trim();\n\tif (!trimmedUri) return undefined;\n\tif (kind === \"tool\") {\n\t\tif (deps.resolveToolEvidence) return deps.resolveToolEvidence(trimmedUri);\n\t\treturn deps.hasToolCallId ? deps.hasToolCallId(trimmedUri) : false;\n\t}\n\tif (kind === \"file\") {\n\t\tconst cwd = deps.cwd?.() ?? process.cwd();\n\t\ttry {\n\t\t\tconst stats = await fsStat(resolveToCwd(trimmedUri, cwd));\n\t\t\treturn stats.isFile();\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\tif (kind === \"worker\") {\n\t\tif (!deps.getLaneRecords || !deps.getWorkerClaimSnapshots) return false;\n\t\tconst laneId = trimmedUri;\n\t\tconst record = deps.getLaneRecords().find((candidate) => candidate.laneId === laneId);\n\t\tif (!record) return false;\n\t\tconst claim = deps.getWorkerClaimSnapshots().find((candidate) => candidate.requestId === laneId);\n\t\tif (!claim) return false;\n\t\t// An unreviewed mutation (parentReviewRequired && no parentReviewedAt) can never verify true --\n\t\t// this is what stops an unreviewed worker completion from ungating goal completion through\n\t\t// the existing verified/complete gate (goal-tool-core's isVerifiedOrUserEvidence/complete).\n\t\tif (claim.parentReviewRequired === true && claim.parentReviewedAt === undefined) return false;\n\t\treturn claim.status === \"completed\";\n\t}\n\treturn undefined;\n}\n\nfunction toGoalAction(input: GoalToolInput): GoalAction | { error: string } {\n\tswitch (input.action) {\n\t\tcase \"start\":\n\t\t\treturn {\n\t\t\t\taction: \"start\",\n\t\t\t\tgoalId: input.goalId ?? \"\",\n\t\t\t\tuserGoal: input.userGoal ?? \"\",\n\t\t\t\ttokenBudget: input.tokenBudget,\n\t\t\t};\n\t\tcase \"add_requirement\":\n\t\t\treturn {\n\t\t\t\taction: \"add_requirement\",\n\t\t\t\trequirementId: input.requirementId ?? \"\",\n\t\t\t\ttext: input.text ?? \"\",\n\t\t\t\tdependencies: input.dependencies,\n\t\t\t};\n\t\tcase \"satisfy_requirement\":\n\t\t\treturn {\n\t\t\t\taction: \"satisfy_requirement\",\n\t\t\t\trequirementId: input.requirementId ?? \"\",\n\t\t\t\tevidenceIds: input.evidenceIds,\n\t\t\t};\n\t\tcase \"block_requirement\":\n\t\t\treturn {\n\t\t\t\taction: \"block_requirement\",\n\t\t\t\trequirementId: input.requirementId ?? \"\",\n\t\t\t\treason: input.reason ?? \"\",\n\t\t\t};\n\t\tcase \"reopen_requirement\":\n\t\t\treturn { action: \"reopen_requirement\", requirementId: input.requirementId ?? \"\" };\n\t\tcase \"dispatch_worker\":\n\t\t\treturn {\n\t\t\t\taction: \"dispatch_worker\",\n\t\t\t\trequirementId: input.requirementId ?? \"\",\n\t\t\t\tinstructions: input.instructions ?? \"\",\n\t\t\t};\n\t\tcase \"add_evidence\": {\n\t\t\tif (input.kind === undefined) {\n\t\t\t\treturn { error: \"add_evidence requires a kind.\" };\n\t\t\t}\n\t\t\tconst kind: GoalEvidenceKind = input.kind;\n\t\t\treturn {\n\t\t\t\taction: \"add_evidence\",\n\t\t\t\tevidenceId: input.evidenceId ?? \"\",\n\t\t\t\tkind,\n\t\t\t\tsummary: input.summary ?? \"\",\n\t\t\t\turi: input.uri,\n\t\t\t};\n\t\t}\n\t\tcase \"progress\":\n\t\t\treturn { action: \"progress\" };\n\t\tcase \"no_progress\":\n\t\t\treturn { action: \"no_progress\" };\n\t\tcase \"complete\":\n\t\t\treturn { action: \"complete\" };\n\t\tcase \"increment\":\n\t\t\treturn { action: \"increment\" };\n\t\tcase \"block_goal\":\n\t\t\treturn { action: \"block_goal\", reason: input.reason ?? \"\" };\n\t\tcase \"get\":\n\t\t\treturn { error: \"get is handled as a read-only action.\" };\n\t\tdefault:\n\t\t\treturn { error: \"Unknown goal action.\" };\n\t}\n}\n\nfunction goalPanelModel(details: GoalToolDetails | undefined): OrchestrationPanelModel {\n\tconst state = details?.state;\n\tif (!state) {\n\t\treturn {\n\t\t\tlabel: \"goal\",\n\t\t\taction: details?.action,\n\t\t\tstatus: details?.error ? \"error\" : \"idle\",\n\t\t\temptyText: details?.error ?? \"No goal state was returned.\",\n\t\t};\n\t}\n\tconst satisfied = state.requirements.filter((requirement) => requirement.status === \"satisfied\").length;\n\treturn {\n\t\tlabel: \"goal\",\n\t\taction: details.action,\n\t\tstatus:\n\t\t\tstate.status === \"completed\"\n\t\t\t\t? \"success\"\n\t\t\t\t: state.status === \"blocked\" ||\n\t\t\t\t\t\tstate.status === \"paused\" ||\n\t\t\t\t\t\tstate.status === \"usage_limited\" ||\n\t\t\t\t\t\tstate.status === \"budget_limited\"\n\t\t\t\t\t? \"warning\"\n\t\t\t\t\t: state.status === \"cancelled\"\n\t\t\t\t\t\t? \"idle\"\n\t\t\t\t\t\t: \"running\",\n\t\tsummary: [\n\t\t\t`${satisfied}/${state.requirements.length} requirements`,\n\t\t\t`${state.evidence.length} evidence`,\n\t\t\t...(state.tokenBudget !== undefined ? [`${state.tokensUsed ?? 0}/${state.tokenBudget} tokens`] : []),\n\t\t],\n\t\trows: state.requirements.map((requirement) => ({\n\t\t\tstatus:\n\t\t\t\trequirement.status === \"satisfied\"\n\t\t\t\t\t? (\"completed\" as const)\n\t\t\t\t\t: requirement.status === \"open\"\n\t\t\t\t\t\t? (\"pending\" as const)\n\t\t\t\t\t\t: (\"blocked\" as const),\n\t\t\tlabel: requirement.text,\n\t\t\tmeta: [\n\t\t\t\trequirement.id,\n\t\t\t\trequirement.evidenceIds.length > 0 ? `${requirement.evidenceIds.length} evidence` : undefined,\n\t\t\t\trequirement.boundLaneId ? `worker ${requirement.boundLaneId}` : undefined,\n\t\t\t].filter((value): value is string => value !== undefined),\n\t\t\tdetails: requirement.blockedReason ? [`blocked: ${requirement.blockedReason}`] : undefined,\n\t\t})),\n\t\tnotices: [\n\t\t\t...(details.dispatchSkipReason\n\t\t\t\t? [{ status: \"warning\" as const, text: `Worker dispatch skipped: ${details.dispatchSkipReason}` }]\n\t\t\t\t: []),\n\t\t\t...(state.blockedReason ? [{ status: \"warning\" as const, text: state.blockedReason }] : []),\n\t\t],\n\t\temptyText: \"No requirements recorded.\",\n\t};\n}\n\nexport function createGoalToolDefinition(deps: GoalToolDependencies): GoalToolDefinition {\n\tconst now = deps.now ?? (() => new Date().toISOString());\n\treturn {\n\t\tname: LEGACY_GOAL_TOOL_NAME,\n\t\tlabel: \"goal\",\n\t\tdescription:\n\t\t\t\"Read or update the durable goal for explicitly persistent work. Use task_steps for plans and delegate for workers; owner or system controls lifecycle and budget stops.\",\n\t\tpromptSnippet: \"Read or update the durable goal.\",\n\t\tpromptGuidelines: [\n\t\t\t\"Start only for explicit persistent chat/system goal. get if uncertain; never replace unfinished goal; tokenBudget only if requested.\",\n\t\t\t\"Plans: task_steps. Workers: delegate. Background tools: tool_task wait once; cite taskId as kind=tool evidence.\",\n\t\t\t\"increment satisfies the current open requirement from unused evidence, or completes when none remain.\",\n\t\t\t\"complete needs current authoritative evidence, no remaining work, no linked open task_steps, no running tool_task, no active pipeline. block_goal needs same real impasse for 3 goal turns.\",\n\t\t],\n\t\tparameters: goalSchema,\n\t\trenderShell: \"self\",\n\t\trenderCall() {\n\t\t\treturn emptyOrchestrationCall();\n\t\t},\n\t\trenderResult(result, { expanded, isPartial }, theme) {\n\t\t\tconst details = result.details as GoalToolDetails | undefined;\n\t\t\treturn renderOrchestrationToolResult(theme, goalPanelModel(details), {\n\t\t\t\tisPartial,\n\t\t\t\tcollapse: !expanded && details?.applied === true,\n\t\t\t\texpanded: true,\n\t\t\t});\n\t\t},\n\t\tasync execute(\n\t\t\t_toolCallId,\n\t\t\tinput: GoalToolInput,\n\t\t): Promise<{\n\t\t\tcontent: Array<{ type: \"text\"; text: string }>;\n\t\t\tdetails: GoalToolDetails;\n\t\t\tisError?: boolean;\n\t\t}> {\n\t\t\tif (input.action === \"get\") {\n\t\t\t\tconst state = deps.getGoalState();\n\t\t\t\tif (!state) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"No goal exists for this session.\" }],\n\t\t\t\t\t\tdetails: { action: \"get\", applied: false },\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\", text: summarizeGoalState(state) }],\n\t\t\t\t\tdetails: { action: \"get\", applied: false, state },\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (input.action === \"start\" && deps.authorizeStart) {\n\t\t\t\tconst error = deps.authorizeStart(input);\n\t\t\t\tif (error) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: `goal start failed: ${error}` }],\n\t\t\t\t\t\tdetails: { action: \"start\", applied: false, error },\n\t\t\t\t\t\tisError: true,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst mapped = toGoalAction(input);\n\t\t\tif (\"error\" in mapped) {\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\" as const, text: `goal ${input.action} failed: ${mapped.error}` }],\n\t\t\t\t\tdetails: { action: input.action, applied: false, error: mapped.error },\n\t\t\t\t\tisError: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tlet action: GoalAction = mapped;\n\t\t\tif (action.action === \"add_evidence\") {\n\t\t\t\tconst verified = await resolveEvidenceVerified(action.kind, action.uri, deps);\n\t\t\t\taction = { ...action, verified };\n\t\t\t}\n\t\t\t// Honest dispatch reporting: distinguish \"dispatched\" (laneId), \"declined\" (skipReason --\n\t\t\t// the dependency IS wired but the underlying delegation starter refused, e.g. disabled or\n\t\t\t// already at capacity), and \"unwired\" (no dependency at all) -- never collapse a real\n\t\t\t// decline into a silent no-laneId no-op indistinguishable from the dep being absent.\n\t\t\tlet dispatchNote: string | undefined;\n\t\t\tlet dispatchSkipReason: string | undefined;\n\t\t\t// Indeterminate-binding dedupe guard: checked BEFORE any dispatch side effect, for BOTH\n\t\t\t// routes. A requirement already bound to a lane that is either still live (a plain\n\t\t\t// duplicate) or whose liveness/outcome cannot be determined at all (for example, a legacy\n\t\t\t// snapshot with no lane record or worker result) must never be\n\t\t\t// re-dispatched silently; only a CONFIRMED terminal outcome allows a legitimate retry.\n\t\t\tlet dispatchGuardRefused = false;\n\t\t\tif (action.action === \"dispatch_worker\") {\n\t\t\t\t// Captured into a `const` so the \"dispatch_worker\" narrowing survives into the closures\n\t\t\t\t// below -- TS does not narrow a `let`-bound outer variable across a callback boundary.\n\t\t\t\tconst dispatchAction = action;\n\t\t\t\tconst boundRequirement = deps\n\t\t\t\t\t.getGoalState()\n\t\t\t\t\t?.requirements.find((r) => r.id === dispatchAction.requirementId);\n\t\t\t\tconst bound = boundRequirement?.boundLaneId;\n\t\t\t\tif (bound !== undefined) {\n\t\t\t\t\tconst boundLaneRecord = deps.getLaneRecords?.().find((record) => record.laneId === bound);\n\t\t\t\t\tconst isLiveInFlight =\n\t\t\t\t\t\tboundLaneRecord !== undefined &&\n\t\t\t\t\t\t(boundLaneRecord.status === \"queued\" || boundLaneRecord.status === \"running\");\n\t\t\t\t\tif (isLiveInFlight) {\n\t\t\t\t\t\tdispatchSkipReason = \"requirement_already_bound\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// `boundLaneRecord` present here is necessarily terminal (isLiveInFlight was false).\n\t\t\t\t\t\tconst hasTerminalOutcome =\n\t\t\t\t\t\t\tboundLaneRecord !== undefined ||\n\t\t\t\t\t\t\t(deps.getWorkerClaimSnapshots?.().some((claim) => claim.requestId === bound) ?? false);\n\t\t\t\t\t\tif (!hasTerminalOutcome) dispatchSkipReason = \"bound_lane_indeterminate\";\n\t\t\t\t\t}\n\t\t\t\t\tif (dispatchSkipReason) {\n\t\t\t\t\t\tdispatchGuardRefused = true;\n\t\t\t\t\t\tdispatchNote = `No worker was dispatched (${dispatchSkipReason}); requirement '${dispatchAction.requirementId}' remains bound to lane '${bound}'.`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (action.action === \"dispatch_worker\" && !dispatchGuardRefused) {\n\t\t\t\tconst tmuxRequested = input.dispatchTarget === \"tmux\";\n\t\t\t\tlet useTmux = tmuxRequested && deps.dispatchTmuxWorker !== undefined;\n\t\t\t\tlet tmuxFallbackReason: string | undefined;\n\t\t\t\tlet dispatched: { laneId?: string; skipReason?: string } | undefined;\n\t\t\t\tif (useTmux) {\n\t\t\t\t\tdispatched = await deps.dispatchTmuxWorker?.({\n\t\t\t\t\t\trequirementId: action.requirementId,\n\t\t\t\t\t\tinstructions: action.instructions,\n\t\t\t\t\t});\n\t\t\t\t\tif (\n\t\t\t\t\t\t!dispatched?.laneId &&\n\t\t\t\t\t\tallowsNativeTmuxFallback(dispatched?.skipReason) &&\n\t\t\t\t\t\tdeps.startWorkerDelegation\n\t\t\t\t\t) {\n\t\t\t\t\t\ttmuxFallbackReason = dispatched?.skipReason;\n\t\t\t\t\t\tuseTmux = false;\n\t\t\t\t\t\tdispatched = deps.startWorkerDelegation({\n\t\t\t\t\t\t\trequirementId: action.requirementId,\n\t\t\t\t\t\t\tinstructions: action.instructions,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (tmuxRequested) tmuxFallbackReason = \"tmux_extension_not_loaded\";\n\t\t\t\t\tdispatched = deps.startWorkerDelegation?.({\n\t\t\t\t\t\trequirementId: action.requirementId,\n\t\t\t\t\t\tinstructions: action.instructions,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\taction = { ...action, laneId: dispatched?.laneId };\n\t\t\t\tif (dispatched?.laneId) {\n\t\t\t\t\tdispatchNote = tmuxFallbackReason\n\t\t\t\t\t\t? `Tmux route returned ${tmuxFallbackReason}; dispatched native fallback worker lane '${dispatched.laneId}' for requirement '${action.requirementId}'.`\n\t\t\t\t\t\t: useTmux\n\t\t\t\t\t\t\t? `Dispatched tmux worker lane '${dispatched.laneId}' for requirement '${action.requirementId}'.`\n\t\t\t\t\t\t\t: `Dispatched in-process worker lane '${dispatched.laneId}' for requirement '${action.requirementId}' (native default).`;\n\t\t\t\t} else {\n\t\t\t\t\tconst wired = useTmux ? deps.dispatchTmuxWorker : deps.startWorkerDelegation;\n\t\t\t\t\tdispatchSkipReason = dispatched?.skipReason ?? (wired ? \"declined\" : \"dependency_unwired\");\n\t\t\t\t\tdispatchNote = `${tmuxFallbackReason ? `Tmux route returned ${tmuxFallbackReason}; ` : \"\"}No worker was dispatched (${dispatchSkipReason}); requirement '${action.requirementId}' is recorded but not bound to a lane.`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst current = deps.getGoalState();\n\t\t\tlet nextState: GoalState;\n\t\t\tif (action.action === \"dispatch_worker\" && dispatchGuardRefused) {\n\t\t\t\t// Short-circuit: the guard refused before any dispatch attempt -- never call\n\t\t\t\t// applyGoalAction for this turn, so the requirement's existing `boundLaneId` is\n\t\t\t\t// preserved exactly as-is rather than clobbered to `undefined` by the reducer's\n\t\t\t\t// unconditional `boundLaneId: event.laneId` write (goal-state.ts's dispatch_worker case).\n\t\t\t\t// `current` is guaranteed defined here: the guard only refuses when a requirement with\n\t\t\t\t// a `boundLaneId` was found on it.\n\t\t\t\tnextState = current as GoalState;\n\t\t\t} else {\n\t\t\t\tlet activePipeline: ReturnType<NonNullable<GoalToolDependencies[\"getActivePipeline\"]>>;\n\t\t\t\tif (\n\t\t\t\t\tcurrent &&\n\t\t\t\t\tisGoalExecutionActive(current.status) &&\n\t\t\t\t\t(action.action === \"complete\" || action.action === \"increment\")\n\t\t\t\t) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tactivePipeline = deps.getActivePipeline?.();\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconst message = `Cannot verify active pipeline state: ${error instanceof Error ? error.message : String(error)}`;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcontent: [{ type: \"text\" as const, text: `goal ${input.action} failed: ${message}` }],\n\t\t\t\t\t\t\tdetails: { action: input.action, applied: false, error: message, state: current },\n\t\t\t\t\t\t\tisError: true,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst result = applyGoalAction(current, action, now(), {\n\t\t\t\t\trequireVerifiedEvidenceForCompletion: deps.requireVerifiedEvidenceForCompletion?.() ?? true,\n\t\t\t\t\topenTaskSteps: deps.getOpenTaskSteps?.(),\n\t\t\t\t\tbackgroundToolTasks: deps.getBackgroundToolTasks?.(),\n\t\t\t\t\tactivePipeline,\n\t\t\t\t});\n\t\t\t\tif (!result.ok) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\" as const, text: `goal ${input.action} failed: ${result.error}` }],\n\t\t\t\t\t\tdetails: { action: input.action, applied: false, error: result.error, state: current },\n\t\t\t\t\t\tisError: true,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tdeps.saveGoalState(result.state, current ? getGoalStateRevision(current) : undefined);\n\t\t\t\tnextState = result.state;\n\t\t\t}\n\n\t\t\tconst summary = summarizeGoalState(nextState, { action, openTaskSteps: deps.getOpenTaskSteps?.() });\n\t\t\tconst text = dispatchNote\n\t\t\t\t? `goal ${input.action} recorded.\\n${summary}\\n${dispatchNote}`\n\t\t\t\t: `goal ${input.action} recorded.\\n${summary}`;\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\" as const, text }],\n\t\t\t\tdetails: {\n\t\t\t\t\taction: input.action,\n\t\t\t\t\tapplied: true,\n\t\t\t\t\tstate: nextState,\n\t\t\t\t\t...(action.action === \"dispatch_worker\" && action.laneId ? { dispatchedLaneId: action.laneId } : {}),\n\t\t\t\t\t...(action.action === \"dispatch_worker\" && !action.laneId ? { dispatchSkipReason } : {}),\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t};\n}\n\n/**\n * Build the compact Codex-compatible lifecycle surface as adapters over the authoritative legacy\n * goal executor. The wrappers own no state and duplicate no validation, persistence, accounting,\n * completion gate, or start-authority rule.\n */\nexport function createGoalLifecycleToolDefinitions(goalTool: GoalToolDefinition) {\n\tconst createGoal: ToolDefinition = {\n\t\tname: GOAL_LIFECYCLE_TOOL_NAMES[0],\n\t\tlabel: GOAL_LIFECYCLE_TOOL_NAMES[0],\n\t\tdescription:\n\t\t\t\"Create a goal only when explicitly requested by the user or system/developer instructions; do not infer goals from ordinary tasks. Set token_budget only when explicitly requested. Fails if an unfinished goal exists.\",\n\t\tpromptSnippet: \"Create an explicitly requested durable goal.\",\n\t\tparameters: createGoalSchema,\n\t\texecute(toolCallId, input: Static<typeof createGoalSchema>, signal, onUpdate, context) {\n\t\t\treturn goalTool.execute(\n\t\t\t\ttoolCallId,\n\t\t\t\t{\n\t\t\t\t\taction: \"start\",\n\t\t\t\t\tgoalId: `goal-${randomUUID()}`,\n\t\t\t\t\tuserGoal: input.objective,\n\t\t\t\t\ttokenBudget: input.token_budget,\n\t\t\t\t},\n\t\t\t\tsignal,\n\t\t\t\tonUpdate,\n\t\t\t\tcontext,\n\t\t\t);\n\t\t},\n\t};\n\n\tconst getGoal: ToolDefinition = {\n\t\tname: GOAL_LIFECYCLE_TOOL_NAMES[1],\n\t\tlabel: GOAL_LIFECYCLE_TOOL_NAMES[1],\n\t\tdescription:\n\t\t\t\"Get the current goal for this session, including status, budget, token and elapsed-time usage, requirements, evidence, and progress.\",\n\t\tpromptSnippet: \"Inspect the current durable goal.\",\n\t\tparameters: getGoalSchema,\n\t\texecute(toolCallId, _input, signal, onUpdate, context) {\n\t\t\treturn goalTool.execute(toolCallId, { action: \"get\" }, signal, onUpdate, context);\n\t\t},\n\t};\n\n\tconst updateGoal: ToolDefinition = {\n\t\tname: GOAL_LIFECYCLE_TOOL_NAMES[2],\n\t\tlabel: GOAL_LIFECYCLE_TOOL_NAMES[2],\n\t\tdescription:\n\t\t\t\"Update the existing goal. Set active only after concrete, verifiable progress in the current turn. Mark complete only when current evidence proves the full objective is achieved and no required work remains. Mark blocked only after the same blocking condition has recurred for at least three consecutive goal turns and no meaningful progress is possible without user input or external change; include that condition in reason. Never use blocked merely because work is hard, slow, uncertain, incomplete, or would benefit from clarification.\",\n\t\tpromptSnippet: \"Report concrete progress or mark the durable goal complete or genuinely blocked.\",\n\t\tparameters: updateGoalSchema,\n\t\texecute(toolCallId, input: Static<typeof updateGoalSchema>, signal, onUpdate, context) {\n\t\t\tconst requestedGoalStatus: GoalStatus = input.status === \"complete\" ? \"completed\" : input.status;\n\t\t\tconst action: GoalToolInput = isGoalExecutionActive(requestedGoalStatus)\n\t\t\t\t? { action: \"progress\" }\n\t\t\t\t: input.status === \"complete\"\n\t\t\t\t\t? { action: \"complete\" }\n\t\t\t\t\t: { action: \"block_goal\", reason: input.reason ?? \"\" };\n\t\t\treturn goalTool.execute(toolCallId, action, signal, onUpdate, context);\n\t\t},\n\t};\n\n\treturn [createGoal, getGoal, updateGoal] as const;\n}\n"]}
1
+ {"version":3,"file":"goal.js","sourceRoot":"","sources":["../../../src/core/tools/goal.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport { stat as fsStat } from \"node:fs/promises\";\nimport { type Static, Type } from \"typebox\";\nimport type { WorkerClaim } from \"../autonomy/contracts.ts\";\nimport type { LaneRecord } from \"../autonomy/lane-tracker.ts\";\nimport type { BackgroundToolTaskRef } from \"../background-tool-task-controller.ts\";\nimport type { ToolDefinition } from \"../extensions/types.ts\";\nimport { type GoalStateRevision, getGoalStateRevision } from \"../goals/goal-lifecycle.ts\";\nimport { type GoalEvidenceKind, type GoalState, type GoalStatus, isGoalExecutionActive } from \"../goals/goal-state.ts\";\nimport {\n\tapplyGoalAction,\n\ttype GoalAction,\n\ttype GoalActionName,\n\ttype OpenTaskStepRef,\n\tsummarizeGoalState,\n} from \"../goals/goal-tool-core.ts\";\nimport { GOAL_LIFECYCLE_TOOL_NAMES, LEGACY_GOAL_TOOL_NAME } from \"../goals/goal-tool-names.ts\";\nimport {\n\temptyOrchestrationCall,\n\ttype OrchestrationPanelModel,\n\trenderOrchestrationToolResult,\n} from \"./orchestration-panel.ts\";\nimport { resolveToCwd } from \"./path-utils.ts\";\n\nconst goalSchema = Type.Object(\n\t{\n\t\taction: Type.Union(\n\t\t\t[\n\t\t\t\tType.Literal(\"get\"),\n\t\t\t\tType.Literal(\"start\"),\n\t\t\t\tType.Literal(\"add_requirement\"),\n\t\t\t\tType.Literal(\"satisfy_requirement\"),\n\t\t\t\tType.Literal(\"block_requirement\"),\n\t\t\t\tType.Literal(\"reopen_requirement\"),\n\t\t\t\tType.Literal(\"dispatch_worker\"),\n\t\t\t\tType.Literal(\"add_evidence\"),\n\t\t\t\tType.Literal(\"progress\"),\n\t\t\t\tType.Literal(\"no_progress\"),\n\t\t\t\tType.Literal(\"complete\"),\n\t\t\t\tType.Literal(\"increment\"),\n\t\t\t\tType.Literal(\"block_goal\"),\n\t\t\t],\n\t\t\t{ description: \"Goal record action.\" },\n\t\t),\n\t\tgoalId: Type.Optional(Type.String({ description: \"Stable goal id. Required for action 'start'.\" })),\n\t\tuserGoal: Type.Optional(Type.String({ description: \"The goal statement. Required for action 'start'.\" })),\n\t\ttokenBudget: Type.Optional(\n\t\t\tType.Integer({ minimum: 1, description: \"Optional positive token budget for action 'start'.\" }),\n\t\t),\n\t\trequirementId: Type.Optional(\n\t\t\tType.String({\n\t\t\t\tdescription: \"Requirement id for requirement actions.\",\n\t\t\t}),\n\t\t),\n\t\ttext: Type.Optional(Type.String({ description: \"Requirement text. Required for add_requirement.\" })),\n\t\tdependencies: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tdescription:\n\t\t\t\t\t\"Optional IDs of requirements that must be satisfied before this one. Valid for add_requirement.\",\n\t\t\t}),\n\t\t),\n\t\tinstructions: Type.Optional(Type.String({ description: \"Worker instructions. Required for dispatch_worker.\" })),\n\t\tevidenceId: Type.Optional(Type.String({ description: \"Evidence id. Required for add_evidence.\" })),\n\t\tevidenceIds: Type.Optional(\n\t\t\tType.Array(Type.String(), {\n\t\t\t\tdescription: \"Existing evidence ids for satisfy_requirement.\",\n\t\t\t}),\n\t\t),\n\t\tkind: Type.Optional(\n\t\t\tType.Union(\n\t\t\t\t[\n\t\t\t\t\tType.Literal(\"file\"),\n\t\t\t\t\tType.Literal(\"test\"),\n\t\t\t\t\tType.Literal(\"tool\"),\n\t\t\t\t\tType.Literal(\"user\"),\n\t\t\t\t\tType.Literal(\"finding\"),\n\t\t\t\t\tType.Literal(\"worker\"),\n\t\t\t\t],\n\t\t\t\t{ description: \"Evidence kind. Required for add_evidence.\" },\n\t\t\t),\n\t\t),\n\t\tsummary: Type.Optional(Type.String({ description: \"Evidence summary. Required for add_evidence.\" })),\n\t\turi: Type.Optional(\n\t\t\tType.String({\n\t\t\t\tdescription: \"Optional file/URL, toolCallId, or laneId evidence locator.\",\n\t\t\t}),\n\t\t),\n\t\treason: Type.Optional(Type.String({ description: \"Reason for block_requirement or block_goal.\" })),\n\t\tdispatchTarget: Type.Optional(\n\t\t\tType.Union([Type.Literal(\"in_process\"), Type.Literal(\"tmux\")], {\n\t\t\t\tdescription: \"Legacy target. Native is default; use tmux only for an owner-requested persistent pane.\",\n\t\t\t}),\n\t\t),\n\t},\n\t{ additionalProperties: false },\n);\n\nconst createGoalSchema = Type.Object(\n\t{\n\t\tobjective: Type.String({ description: \"Required. The concrete objective to start pursuing.\" }),\n\t\ttoken_budget: Type.Optional(\n\t\t\tType.Integer({ minimum: 1, description: \"Positive token budget. Omit unless explicitly requested.\" }),\n\t\t),\n\t},\n\t{ additionalProperties: false },\n);\n\nconst getGoalSchema = Type.Object({}, { additionalProperties: false });\n\nconst updateGoalSchema = Type.Object(\n\t{\n\t\tstatus: Type.Union([Type.Literal(\"active\"), Type.Literal(\"complete\"), Type.Literal(\"blocked\")], {\n\t\t\tdescription:\n\t\t\t\t\"Set active after concrete progress, complete after an evidence audit, or blocked after the same blocker persists for three turns.\",\n\t\t}),\n\t\treason: Type.Optional(\n\t\t\tType.String({ minLength: 1, description: \"Required for blocked: the recurring external blocker.\" }),\n\t\t),\n\t},\n\t{ additionalProperties: false },\n);\n\nexport type GoalToolInput = Static<typeof goalSchema>;\nexport type GoalToolDefinition = ToolDefinition;\n\nexport interface GoalToolDetails {\n\taction: GoalActionName | \"get\";\n\tapplied: boolean;\n\terror?: string;\n\tstate?: GoalState;\n\t/** Set on 'dispatch_worker' when a worker lane actually started; mirrors the requirement's\n\t * new `boundLaneId`. The in-process route by default, or a real persistent tmux lane when\n\t * `dispatchTarget:\"tmux\"` was selected and routed -- see {@link GoalToolDependencies.dispatchTmuxWorker}. */\n\tdispatchedLaneId?: string;\n\t/** Set on 'dispatch_worker' when no worker was dispatched: a wired dependency declined (e.g. worker\n\t * delegation disabled, already at capacity, or an honest tmux skip reason -- see\n\t * {@link GoalToolDependencies.dispatchTmuxWorker}), or the indeterminate-binding guard refused a\n\t * re-dispatch against an already-bound requirement (`requirement_already_bound`/`bound_lane_indeterminate`).\n\t * The binding is recorded (or, for a guard refusal, left exactly as it was) with no NEW laneId. */\n\tdispatchSkipReason?: string;\n}\n\nexport interface GoalToolDependencies {\n\t/** Read the latest persisted goal state for the active session. */\n\tgetGoalState: () => GoalState | undefined;\n\t/** Persist a new goal state snapshot to the active session. */\n\tsaveGoalState: (state: GoalState, expected?: GoalStateRevision) => void;\n\t/** Clock injection for deterministic tests. */\n\tnow?: () => string;\n\t/**\n\t * Check whether `toolCallId` exists in this session's records, for validating kind:\"tool\"\n\t * evidence refs at add_evidence time. When not wired, a \"tool\" ref cannot be proven and is\n\t * recorded as `verified: false` rather than assumed true.\n\t */\n\thasToolCallId?: (toolCallId: string) => boolean;\n\t/**\n\t * Read the session's live worker lane records, for validating kind:\"worker\" evidence refs\n\t * (the `uri` is a laneId) at add_evidence time. Read-defensive: when not wired -- exactly like\n\t * `hasToolCallId` -- a \"worker\" ref cannot be proven and is recorded as `verified: false` rather\n\t * than assumed true. Live wiring is added separately.\n\t */\n\tgetLaneRecords?: () => readonly LaneRecord[];\n\t/**\n\t * Read persisted worker claim snapshots (keyed by `WorkerClaim.requestId`, which is the same\n\t * id as the dispatching lane's laneId), for validating kind:\"worker\" evidence refs. See\n\t * {@link getLaneRecords}. A matching claim that is `parentReviewRequired && !parentReviewedAt`\n\t * verifies `false` -- an unreviewed worker completion must never ungate goal completion through\n\t * the existing verified/complete gate.\n\t */\n\tgetWorkerClaimSnapshots?: () => readonly WorkerClaim[];\n\t/**\n\t * Tool-layer side effect for a 'dispatch_worker' action when `dispatchTarget` is 'in_process'\n\t * (the default) or when {@link dispatchTmuxWorker} is not wired: dispatches a real in-process\n\t * worker lane for the given requirement and returns the resulting laneId to bind onto it. When\n\t * the dependency is present but the underlying delegation starter declines (disabled, already at\n\t * capacity, etc.), return `{ skipReason }` instead of a laneId -- a real, non-silent skip that\n\t * the tool response surfaces, distinct from this dependency being altogether unwired (`undefined`\n\t * dep, or the dep returning `undefined`), which records the binding attempt structurally with no\n\t * laneId (a no-op).\n\t */\n\tstartWorkerDelegation?: (args: {\n\t\trequirementId: string;\n\t\tinstructions: string;\n\t}) => { laneId?: string; skipReason?: string } | undefined;\n\t/**\n\t * Tool-layer side effect for a 'dispatch_worker' action when `input.dispatchTarget === \"tmux\"`:\n\t * dispatches a REAL persistent tmux worker via the tmux_agent_manager extension's `fire_task`\n\t * action (core structurally invokes the same tool call the model would make; no extension change,\n\t * no faked launch or laneId -- see `tmux-dispatch.ts`'s `dispatchTmuxWorker`). Selected ONLY when\n\t * BOTH `input.dispatchTarget === \"tmux\"` AND this dependency is present; otherwise the EXISTING\n\t * {@link startWorkerDelegation} in-process path runs, byte-identical to before this field existed.\n\t * The honest skip-reason vocabulary this can return: `tmux_extension_not_loaded`,\n\t * `no_standing_grant` (the owner has not authorized unattended tmux dispatch),\n\t * `tmux_dispatch_failed`, `tmux_dispatch_incomplete`, `lane_correlation_failed`,\n\t * `worktree_create_failed` (worktree-sync is enabled but the lane-first `create_lane` call was\n\t * refused -- e.g. max lanes reached -- so no fire_task call was ever attempted),\n\t * `worker_capability_insufficient` (the model is sub-full class, has an unknown context window,\n\t * does not advertise a native tool-call path, or is graded-demoted to text-protocol/none -- see\n\t * `model-capability.ts`'s `evaluateLaneWorkerRefusal`; this is the parent's best-effort check\n\t * only, refused before any lane/pane side effect -- the dispatched child still refuses\n\t * authoritatively at its own startup regardless).\n\t */\n\tdispatchTmuxWorker?: (args: {\n\t\trequirementId: string;\n\t\tinstructions: string;\n\t}) => Promise<{ laneId?: string; skipReason?: string }>;\n\t/** Working directory for resolving kind:\"file\" evidence ref paths. Defaults to `process.cwd()`. */\n\tcwd?: () => string;\n\t/**\n\t * Gate agent-facing 'complete' on verified/user evidence backing. Defaults to `true` (on)\n\t * when omitted -- the conservative default; set to a function returning `false` to opt out.\n\t */\n\trequireVerifiedEvidenceForCompletion?: () => boolean;\n\t/**\n\t * Read-only open (non-terminal) task_steps steps on the active branch, for the goal⇄task\n\t * cross-visibility nudge in the tool response. When omitted, `summarizeGoalState` gets\n\t * no task-step context and simply emits no nudge -- goal-tool-core stays pure and never reads\n\t * task state itself; this is the only place that supplies it.\n\t */\n\tgetOpenTaskSteps?: () => readonly OpenTaskStepRef[];\n\t/** Live background tool_task records for kind:\"tool\" evidence and complete-time re-check. */\n\tgetBackgroundToolTasks?: () => readonly BackgroundToolTaskRef[];\n\t/** Active ICM pipeline run for the complete/increment join. */\n\tgetActivePipeline?: () => { runId: string; pipelineName: string; goalId?: string; status: string } | undefined;\n\t/** Model-facing start authority for the current foreground turn. Omitted by direct owner/test callers. */\n\tauthorizeStart?: (input: Pick<GoalToolInput, \"userGoal\" | \"tokenBudget\">) => string | undefined;\n\t/**\n\t * Live tool-evidence check. When wired, kind:\"tool\" uses this instead of {@link hasToolCallId}\n\t * so a still-running background handoff cannot verify as done.\n\t */\n\tresolveToolEvidence?: (uri: string) => boolean;\n}\n\nfunction allowsNativeTmuxFallback(reason: string | undefined): boolean {\n\treturn reason === \"tmux_unavailable\" || reason === \"tmux_extension_not_loaded\";\n}\n\n/**\n * Validate an evidence ref's `uri` against session records (\"tool\") or the filesystem (\"file\").\n * Returns `undefined` for kinds/refs that carry nothing checkable (e.g. \"user\"/\"finding\"/\"test\",\n * or a missing `uri`) -- absence of a ref is not the same as a ref that failed to verify.\n */\nasync function resolveEvidenceVerified(\n\tkind: GoalEvidenceKind,\n\turi: string | undefined,\n\tdeps: GoalToolDependencies,\n): Promise<boolean | undefined> {\n\tconst trimmedUri = uri?.trim();\n\tif (!trimmedUri) return undefined;\n\tif (kind === \"tool\") {\n\t\tif (deps.resolveToolEvidence) return deps.resolveToolEvidence(trimmedUri);\n\t\treturn deps.hasToolCallId ? deps.hasToolCallId(trimmedUri) : false;\n\t}\n\tif (kind === \"file\") {\n\t\tconst cwd = deps.cwd?.() ?? process.cwd();\n\t\ttry {\n\t\t\tconst stats = await fsStat(resolveToCwd(trimmedUri, cwd));\n\t\t\treturn stats.isFile();\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\tif (kind === \"worker\") {\n\t\tif (!deps.getLaneRecords || !deps.getWorkerClaimSnapshots) return false;\n\t\tconst laneId = trimmedUri;\n\t\tconst record = deps.getLaneRecords().find((candidate) => candidate.laneId === laneId);\n\t\tif (!record) return false;\n\t\tconst claim = deps.getWorkerClaimSnapshots().find((candidate) => candidate.requestId === laneId);\n\t\tif (!claim) return false;\n\t\t// An unreviewed mutation (parentReviewRequired && no parentReviewedAt) can never verify true --\n\t\t// this is what stops an unreviewed worker completion from ungating goal completion through\n\t\t// the existing verified/complete gate (goal-tool-core's isVerifiedOrUserEvidence/complete).\n\t\tif (claim.parentReviewRequired === true && claim.parentReviewedAt === undefined) return false;\n\t\treturn claim.status === \"completed\";\n\t}\n\treturn undefined;\n}\n\nfunction toGoalAction(input: GoalToolInput): GoalAction | { error: string } {\n\tswitch (input.action) {\n\t\tcase \"start\":\n\t\t\treturn {\n\t\t\t\taction: \"start\",\n\t\t\t\tgoalId: input.goalId ?? \"\",\n\t\t\t\tuserGoal: input.userGoal ?? \"\",\n\t\t\t\ttokenBudget: input.tokenBudget,\n\t\t\t};\n\t\tcase \"add_requirement\":\n\t\t\treturn {\n\t\t\t\taction: \"add_requirement\",\n\t\t\t\trequirementId: input.requirementId ?? \"\",\n\t\t\t\ttext: input.text ?? \"\",\n\t\t\t\tdependencies: input.dependencies,\n\t\t\t};\n\t\tcase \"satisfy_requirement\":\n\t\t\treturn {\n\t\t\t\taction: \"satisfy_requirement\",\n\t\t\t\trequirementId: input.requirementId ?? \"\",\n\t\t\t\tevidenceIds: input.evidenceIds,\n\t\t\t};\n\t\tcase \"block_requirement\":\n\t\t\treturn {\n\t\t\t\taction: \"block_requirement\",\n\t\t\t\trequirementId: input.requirementId ?? \"\",\n\t\t\t\treason: input.reason ?? \"\",\n\t\t\t};\n\t\tcase \"reopen_requirement\":\n\t\t\treturn { action: \"reopen_requirement\", requirementId: input.requirementId ?? \"\" };\n\t\tcase \"dispatch_worker\":\n\t\t\treturn {\n\t\t\t\taction: \"dispatch_worker\",\n\t\t\t\trequirementId: input.requirementId ?? \"\",\n\t\t\t\tinstructions: input.instructions ?? \"\",\n\t\t\t};\n\t\tcase \"add_evidence\": {\n\t\t\tif (input.kind === undefined) {\n\t\t\t\treturn { error: \"add_evidence requires a kind.\" };\n\t\t\t}\n\t\t\tconst kind: GoalEvidenceKind = input.kind;\n\t\t\treturn {\n\t\t\t\taction: \"add_evidence\",\n\t\t\t\tevidenceId: input.evidenceId ?? \"\",\n\t\t\t\tkind,\n\t\t\t\tsummary: input.summary ?? \"\",\n\t\t\t\turi: input.uri,\n\t\t\t};\n\t\t}\n\t\tcase \"progress\":\n\t\t\treturn { action: \"progress\" };\n\t\tcase \"no_progress\":\n\t\t\treturn { action: \"no_progress\" };\n\t\tcase \"complete\":\n\t\t\treturn { action: \"complete\" };\n\t\tcase \"increment\":\n\t\t\treturn { action: \"increment\" };\n\t\tcase \"block_goal\":\n\t\t\treturn { action: \"block_goal\", reason: input.reason ?? \"\" };\n\t\tcase \"get\":\n\t\t\treturn { error: \"get is handled as a read-only action.\" };\n\t\tdefault:\n\t\t\treturn { error: \"Unknown goal action.\" };\n\t}\n}\n\nfunction goalPanelModel(details: GoalToolDetails | undefined): OrchestrationPanelModel {\n\tconst state = details?.state;\n\tif (!state) {\n\t\treturn {\n\t\t\tlabel: \"goal\",\n\t\t\taction: details?.action,\n\t\t\tstatus: details?.error ? \"error\" : \"idle\",\n\t\t\temptyText: details?.error ?? \"No goal state was returned.\",\n\t\t};\n\t}\n\tconst satisfied = state.requirements.filter((requirement) => requirement.status === \"satisfied\").length;\n\treturn {\n\t\tlabel: \"goal\",\n\t\taction: details.action,\n\t\tstatus:\n\t\t\tstate.status === \"completed\"\n\t\t\t\t? \"success\"\n\t\t\t\t: state.status === \"blocked\" ||\n\t\t\t\t\t\tstate.status === \"paused\" ||\n\t\t\t\t\t\tstate.status === \"usage_limited\" ||\n\t\t\t\t\t\tstate.status === \"budget_limited\"\n\t\t\t\t\t? \"warning\"\n\t\t\t\t\t: state.status === \"cancelled\"\n\t\t\t\t\t\t? \"idle\"\n\t\t\t\t\t\t: \"running\",\n\t\tsummary: [\n\t\t\t`${satisfied}/${state.requirements.length} requirements`,\n\t\t\t`${state.evidence.length} evidence`,\n\t\t\t...(state.tokenBudget !== undefined ? [`${state.tokensUsed ?? 0}/${state.tokenBudget} tokens`] : []),\n\t\t],\n\t\trows: state.requirements.map((requirement) => ({\n\t\t\tstatus:\n\t\t\t\trequirement.status === \"satisfied\"\n\t\t\t\t\t? (\"completed\" as const)\n\t\t\t\t\t: requirement.status === \"open\"\n\t\t\t\t\t\t? (\"pending\" as const)\n\t\t\t\t\t\t: (\"blocked\" as const),\n\t\t\tlabel: requirement.text,\n\t\t\tmeta: [\n\t\t\t\trequirement.id,\n\t\t\t\trequirement.evidenceIds.length > 0 ? `${requirement.evidenceIds.length} evidence` : undefined,\n\t\t\t\trequirement.boundLaneId ? `worker ${requirement.boundLaneId}` : undefined,\n\t\t\t].filter((value): value is string => value !== undefined),\n\t\t\tdetails: requirement.blockedReason ? [`blocked: ${requirement.blockedReason}`] : undefined,\n\t\t})),\n\t\tnotices: [\n\t\t\t...(details.dispatchSkipReason\n\t\t\t\t? [{ status: \"warning\" as const, text: `Worker dispatch skipped: ${details.dispatchSkipReason}` }]\n\t\t\t\t: []),\n\t\t\t...(state.blockedReason ? [{ status: \"warning\" as const, text: state.blockedReason }] : []),\n\t\t],\n\t\temptyText: \"No requirements recorded.\",\n\t};\n}\n\nexport function createGoalToolDefinition(deps: GoalToolDependencies): GoalToolDefinition {\n\tconst now = deps.now ?? (() => new Date().toISOString());\n\treturn {\n\t\tname: LEGACY_GOAL_TOOL_NAME,\n\t\tlabel: \"goal\",\n\t\tdescription:\n\t\t\t\"Read or update the durable goal for work that benefits from persistent autonomous continuation. The agent may start one at its discretion or on explicit user/system request; only the owner or system may set a token budget.\",\n\t\tpromptSnippet: \"Read or update the durable goal.\",\n\t\tpromptGuidelines: [\n\t\t\t\"Start when persistent continuation materially benefits current work or the user/system requests it. Skip routine one-turn tasks; get if uncertain; never replace unfinished goal; tokenBudget only if requested.\",\n\t\t\t\"Plans: task_steps. Workers: delegate. Background tools: tool_task wait once; cite taskId as kind=tool evidence.\",\n\t\t\t\"increment satisfies the current open requirement from unused evidence, or completes when none remain.\",\n\t\t\t\"complete needs current authoritative evidence, no remaining work, no linked open task_steps, no running tool_task, no active pipeline. block_goal needs same real impasse for 3 goal turns.\",\n\t\t],\n\t\tparameters: goalSchema,\n\t\trenderShell: \"self\",\n\t\trenderCall() {\n\t\t\treturn emptyOrchestrationCall();\n\t\t},\n\t\trenderResult(result, { expanded, isPartial }, theme) {\n\t\t\tconst details = result.details as GoalToolDetails | undefined;\n\t\t\treturn renderOrchestrationToolResult(theme, goalPanelModel(details), {\n\t\t\t\tisPartial,\n\t\t\t\tcollapse: !expanded && details?.applied === true,\n\t\t\t\texpanded: true,\n\t\t\t});\n\t\t},\n\t\tasync execute(\n\t\t\t_toolCallId,\n\t\t\tinput: GoalToolInput,\n\t\t): Promise<{\n\t\t\tcontent: Array<{ type: \"text\"; text: string }>;\n\t\t\tdetails: GoalToolDetails;\n\t\t\tisError?: boolean;\n\t\t}> {\n\t\t\tif (input.action === \"get\") {\n\t\t\t\tconst state = deps.getGoalState();\n\t\t\t\tif (!state) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"No goal exists for this session.\" }],\n\t\t\t\t\t\tdetails: { action: \"get\", applied: false },\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\", text: summarizeGoalState(state) }],\n\t\t\t\t\tdetails: { action: \"get\", applied: false, state },\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (input.action === \"start\" && input.tokenBudget !== undefined && deps.authorizeStart) {\n\t\t\t\tconst error = deps.authorizeStart(input);\n\t\t\t\tif (error) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: `goal start failed: ${error}` }],\n\t\t\t\t\t\tdetails: { action: \"start\", applied: false, error },\n\t\t\t\t\t\tisError: true,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst mapped = toGoalAction(input);\n\t\t\tif (\"error\" in mapped) {\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: \"text\" as const, text: `goal ${input.action} failed: ${mapped.error}` }],\n\t\t\t\t\tdetails: { action: input.action, applied: false, error: mapped.error },\n\t\t\t\t\tisError: true,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tlet action: GoalAction = mapped;\n\t\t\tif (action.action === \"add_evidence\") {\n\t\t\t\tconst verified = await resolveEvidenceVerified(action.kind, action.uri, deps);\n\t\t\t\taction = { ...action, verified };\n\t\t\t}\n\t\t\t// Honest dispatch reporting: distinguish \"dispatched\" (laneId), \"declined\" (skipReason --\n\t\t\t// the dependency IS wired but the underlying delegation starter refused, e.g. disabled or\n\t\t\t// already at capacity), and \"unwired\" (no dependency at all) -- never collapse a real\n\t\t\t// decline into a silent no-laneId no-op indistinguishable from the dep being absent.\n\t\t\tlet dispatchNote: string | undefined;\n\t\t\tlet dispatchSkipReason: string | undefined;\n\t\t\t// Indeterminate-binding dedupe guard: checked BEFORE any dispatch side effect, for BOTH\n\t\t\t// routes. A requirement already bound to a lane that is either still live (a plain\n\t\t\t// duplicate) or whose liveness/outcome cannot be determined at all (for example, a legacy\n\t\t\t// snapshot with no lane record or worker result) must never be\n\t\t\t// re-dispatched silently; only a CONFIRMED terminal outcome allows a legitimate retry.\n\t\t\tlet dispatchGuardRefused = false;\n\t\t\tif (action.action === \"dispatch_worker\") {\n\t\t\t\t// Captured into a `const` so the \"dispatch_worker\" narrowing survives into the closures\n\t\t\t\t// below -- TS does not narrow a `let`-bound outer variable across a callback boundary.\n\t\t\t\tconst dispatchAction = action;\n\t\t\t\tconst boundRequirement = deps\n\t\t\t\t\t.getGoalState()\n\t\t\t\t\t?.requirements.find((r) => r.id === dispatchAction.requirementId);\n\t\t\t\tconst bound = boundRequirement?.boundLaneId;\n\t\t\t\tif (bound !== undefined) {\n\t\t\t\t\tconst boundLaneRecord = deps.getLaneRecords?.().find((record) => record.laneId === bound);\n\t\t\t\t\tconst isLiveInFlight =\n\t\t\t\t\t\tboundLaneRecord !== undefined &&\n\t\t\t\t\t\t(boundLaneRecord.status === \"queued\" || boundLaneRecord.status === \"running\");\n\t\t\t\t\tif (isLiveInFlight) {\n\t\t\t\t\t\tdispatchSkipReason = \"requirement_already_bound\";\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// `boundLaneRecord` present here is necessarily terminal (isLiveInFlight was false).\n\t\t\t\t\t\tconst hasTerminalOutcome =\n\t\t\t\t\t\t\tboundLaneRecord !== undefined ||\n\t\t\t\t\t\t\t(deps.getWorkerClaimSnapshots?.().some((claim) => claim.requestId === bound) ?? false);\n\t\t\t\t\t\tif (!hasTerminalOutcome) dispatchSkipReason = \"bound_lane_indeterminate\";\n\t\t\t\t\t}\n\t\t\t\t\tif (dispatchSkipReason) {\n\t\t\t\t\t\tdispatchGuardRefused = true;\n\t\t\t\t\t\tdispatchNote = `No worker was dispatched (${dispatchSkipReason}); requirement '${dispatchAction.requirementId}' remains bound to lane '${bound}'.`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (action.action === \"dispatch_worker\" && !dispatchGuardRefused) {\n\t\t\t\tconst tmuxRequested = input.dispatchTarget === \"tmux\";\n\t\t\t\tlet useTmux = tmuxRequested && deps.dispatchTmuxWorker !== undefined;\n\t\t\t\tlet tmuxFallbackReason: string | undefined;\n\t\t\t\tlet dispatched: { laneId?: string; skipReason?: string } | undefined;\n\t\t\t\tif (useTmux) {\n\t\t\t\t\tdispatched = await deps.dispatchTmuxWorker?.({\n\t\t\t\t\t\trequirementId: action.requirementId,\n\t\t\t\t\t\tinstructions: action.instructions,\n\t\t\t\t\t});\n\t\t\t\t\tif (\n\t\t\t\t\t\t!dispatched?.laneId &&\n\t\t\t\t\t\tallowsNativeTmuxFallback(dispatched?.skipReason) &&\n\t\t\t\t\t\tdeps.startWorkerDelegation\n\t\t\t\t\t) {\n\t\t\t\t\t\ttmuxFallbackReason = dispatched?.skipReason;\n\t\t\t\t\t\tuseTmux = false;\n\t\t\t\t\t\tdispatched = deps.startWorkerDelegation({\n\t\t\t\t\t\t\trequirementId: action.requirementId,\n\t\t\t\t\t\t\tinstructions: action.instructions,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (tmuxRequested) tmuxFallbackReason = \"tmux_extension_not_loaded\";\n\t\t\t\t\tdispatched = deps.startWorkerDelegation?.({\n\t\t\t\t\t\trequirementId: action.requirementId,\n\t\t\t\t\t\tinstructions: action.instructions,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\taction = { ...action, laneId: dispatched?.laneId };\n\t\t\t\tif (dispatched?.laneId) {\n\t\t\t\t\tdispatchNote = tmuxFallbackReason\n\t\t\t\t\t\t? `Tmux route returned ${tmuxFallbackReason}; dispatched native fallback worker lane '${dispatched.laneId}' for requirement '${action.requirementId}'.`\n\t\t\t\t\t\t: useTmux\n\t\t\t\t\t\t\t? `Dispatched tmux worker lane '${dispatched.laneId}' for requirement '${action.requirementId}'.`\n\t\t\t\t\t\t\t: `Dispatched in-process worker lane '${dispatched.laneId}' for requirement '${action.requirementId}' (native default).`;\n\t\t\t\t} else {\n\t\t\t\t\tconst wired = useTmux ? deps.dispatchTmuxWorker : deps.startWorkerDelegation;\n\t\t\t\t\tdispatchSkipReason = dispatched?.skipReason ?? (wired ? \"declined\" : \"dependency_unwired\");\n\t\t\t\t\tdispatchNote = `${tmuxFallbackReason ? `Tmux route returned ${tmuxFallbackReason}; ` : \"\"}No worker was dispatched (${dispatchSkipReason}); requirement '${action.requirementId}' is recorded but not bound to a lane.`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst current = deps.getGoalState();\n\t\t\tlet nextState: GoalState;\n\t\t\tif (action.action === \"dispatch_worker\" && dispatchGuardRefused) {\n\t\t\t\t// Short-circuit: the guard refused before any dispatch attempt -- never call\n\t\t\t\t// applyGoalAction for this turn, so the requirement's existing `boundLaneId` is\n\t\t\t\t// preserved exactly as-is rather than clobbered to `undefined` by the reducer's\n\t\t\t\t// unconditional `boundLaneId: event.laneId` write (goal-state.ts's dispatch_worker case).\n\t\t\t\t// `current` is guaranteed defined here: the guard only refuses when a requirement with\n\t\t\t\t// a `boundLaneId` was found on it.\n\t\t\t\tnextState = current as GoalState;\n\t\t\t} else {\n\t\t\t\tlet activePipeline: ReturnType<NonNullable<GoalToolDependencies[\"getActivePipeline\"]>>;\n\t\t\t\tif (\n\t\t\t\t\tcurrent &&\n\t\t\t\t\tisGoalExecutionActive(current.status) &&\n\t\t\t\t\t(action.action === \"complete\" || action.action === \"increment\")\n\t\t\t\t) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tactivePipeline = deps.getActivePipeline?.();\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconst message = `Cannot verify active pipeline state: ${error instanceof Error ? error.message : String(error)}`;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcontent: [{ type: \"text\" as const, text: `goal ${input.action} failed: ${message}` }],\n\t\t\t\t\t\t\tdetails: { action: input.action, applied: false, error: message, state: current },\n\t\t\t\t\t\t\tisError: true,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst result = applyGoalAction(current, action, now(), {\n\t\t\t\t\trequireVerifiedEvidenceForCompletion: deps.requireVerifiedEvidenceForCompletion?.() ?? true,\n\t\t\t\t\topenTaskSteps: deps.getOpenTaskSteps?.(),\n\t\t\t\t\tbackgroundToolTasks: deps.getBackgroundToolTasks?.(),\n\t\t\t\t\tactivePipeline,\n\t\t\t\t});\n\t\t\t\tif (!result.ok) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: \"text\" as const, text: `goal ${input.action} failed: ${result.error}` }],\n\t\t\t\t\t\tdetails: { action: input.action, applied: false, error: result.error, state: current },\n\t\t\t\t\t\tisError: true,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tdeps.saveGoalState(result.state, current ? getGoalStateRevision(current) : undefined);\n\t\t\t\tnextState = result.state;\n\t\t\t}\n\n\t\t\tconst summary = summarizeGoalState(nextState, { action, openTaskSteps: deps.getOpenTaskSteps?.() });\n\t\t\tconst text = dispatchNote\n\t\t\t\t? `goal ${input.action} recorded.\\n${summary}\\n${dispatchNote}`\n\t\t\t\t: `goal ${input.action} recorded.\\n${summary}`;\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\" as const, text }],\n\t\t\t\tdetails: {\n\t\t\t\t\taction: input.action,\n\t\t\t\t\tapplied: true,\n\t\t\t\t\tstate: nextState,\n\t\t\t\t\t...(action.action === \"dispatch_worker\" && action.laneId ? { dispatchedLaneId: action.laneId } : {}),\n\t\t\t\t\t...(action.action === \"dispatch_worker\" && !action.laneId ? { dispatchSkipReason } : {}),\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t};\n}\n\n/**\n * Build the compact Codex-compatible lifecycle surface as adapters over the authoritative legacy\n * goal executor. The wrappers own no state and duplicate no validation, persistence, accounting,\n * completion gate, or start-authority rule.\n */\nexport function createGoalLifecycleToolDefinitions(goalTool: GoalToolDefinition) {\n\tconst createGoal: ToolDefinition = {\n\t\tname: GOAL_LIFECYCLE_TOOL_NAMES[0],\n\t\tlabel: GOAL_LIFECYCLE_TOOL_NAMES[0],\n\t\tdescription:\n\t\t\t\"Create a durable goal when persistent autonomous continuation materially benefits the current work, or when the user/system explicitly requests one. Use agent discretion; skip routine short tasks. Set token_budget only when explicitly requested. Fails if an unfinished goal exists.\",\n\t\tpromptSnippet: \"Start durable goal.\",\n\t\tparameters: createGoalSchema,\n\t\texecute(toolCallId, input: Static<typeof createGoalSchema>, signal, onUpdate, context) {\n\t\t\treturn goalTool.execute(\n\t\t\t\ttoolCallId,\n\t\t\t\t{\n\t\t\t\t\taction: \"start\",\n\t\t\t\t\tgoalId: `goal-${randomUUID()}`,\n\t\t\t\t\tuserGoal: input.objective,\n\t\t\t\t\ttokenBudget: input.token_budget,\n\t\t\t\t},\n\t\t\t\tsignal,\n\t\t\t\tonUpdate,\n\t\t\t\tcontext,\n\t\t\t);\n\t\t},\n\t};\n\n\tconst getGoal: ToolDefinition = {\n\t\tname: GOAL_LIFECYCLE_TOOL_NAMES[1],\n\t\tlabel: GOAL_LIFECYCLE_TOOL_NAMES[1],\n\t\tdescription:\n\t\t\t\"Get the current goal for this session, including status, budget, token and elapsed-time usage, requirements, evidence, and progress.\",\n\t\tpromptSnippet: \"Inspect durable goal.\",\n\t\tparameters: getGoalSchema,\n\t\texecute(toolCallId, _input, signal, onUpdate, context) {\n\t\t\treturn goalTool.execute(toolCallId, { action: \"get\" }, signal, onUpdate, context);\n\t\t},\n\t};\n\n\tconst updateGoal: ToolDefinition = {\n\t\tname: GOAL_LIFECYCLE_TOOL_NAMES[2],\n\t\tlabel: GOAL_LIFECYCLE_TOOL_NAMES[2],\n\t\tdescription:\n\t\t\t\"Update the existing goal. Set active only after concrete, verifiable progress in the current turn. Mark complete only when current evidence proves the full objective is achieved and no required work remains. Mark blocked only after the same blocking condition has recurred for at least three consecutive goal turns and no meaningful progress is possible without user input or external change; include that condition in reason. Never use blocked merely because work is hard, slow, uncertain, incomplete, or would benefit from clarification.\",\n\t\tpromptSnippet: \"Update goal; complete/block only with evidence.\",\n\t\tparameters: updateGoalSchema,\n\t\texecute(toolCallId, input: Static<typeof updateGoalSchema>, signal, onUpdate, context) {\n\t\t\tconst requestedGoalStatus: GoalStatus = input.status === \"complete\" ? \"completed\" : input.status;\n\t\t\tconst action: GoalToolInput = isGoalExecutionActive(requestedGoalStatus)\n\t\t\t\t? { action: \"progress\" }\n\t\t\t\t: input.status === \"complete\"\n\t\t\t\t\t? { action: \"complete\" }\n\t\t\t\t\t: { action: \"block_goal\", reason: input.reason ?? \"\" };\n\t\t\treturn goalTool.execute(toolCallId, action, signal, onUpdate, context);\n\t\t},\n\t};\n\n\treturn [createGoal, getGoal, updateGoal] as const;\n}\n"]}
@@ -1,8 +1,9 @@
1
1
  import { type Static, Type } from "typebox";
2
2
  import { type CredentialManager, type CredentialProfileSummary } from "../secrets/credential-manager.ts";
3
3
  import { type CredentialMigrationSourceResolver } from "../secrets/credential-migration-source.ts";
4
+ import { type CredentialMigrationSourceCandidate, type CredentialMigrationSourceDiscoverer } from "../secrets/credential-source-discovery.ts";
4
5
  declare const secretStoreSchema: Type.TObject<{
5
- action: Type.TUnion<[Type.TLiteral<"status">, Type.TLiteral<"list">, Type.TLiteral<"activate">, Type.TLiteral<"migrate">]>;
6
+ action: Type.TUnion<[Type.TLiteral<"status">, Type.TLiteral<"list">, Type.TLiteral<"discover">, Type.TLiteral<"activate">, Type.TLiteral<"migrate">]>;
6
7
  profile: Type.TOptional<Type.TString>;
7
8
  description: Type.TOptional<Type.TString>;
8
9
  overwrite: Type.TOptional<Type.TBoolean>;
@@ -19,7 +20,7 @@ declare const secretStoreSchema: Type.TObject<{
19
20
  }>]>>>;
20
21
  }>;
21
22
  export type SecretStoreToolInput = Static<typeof secretStoreSchema>;
22
- export type SecretStoreStatus = "activated" | "available" | "cancelled" | "error" | "listed" | "migrated" | "unavailable";
23
+ export type SecretStoreStatus = "activated" | "available" | "cancelled" | "discovered" | "error" | "listed" | "migrated" | "unavailable";
23
24
  export interface SecretStoreToolDetails {
24
25
  action: SecretStoreToolInput["action"];
25
26
  status: SecretStoreStatus;
@@ -28,6 +29,9 @@ export interface SecretStoreToolDetails {
28
29
  profiles?: CredentialProfileSummary[];
29
30
  project?: string;
30
31
  connected?: boolean;
32
+ sources?: CredentialMigrationSourceCandidate[];
33
+ skipped?: number;
34
+ truncated?: boolean;
31
35
  code?: string;
32
36
  message?: string;
33
37
  sourceRetained?: boolean;
@@ -35,9 +39,10 @@ export interface SecretStoreToolDetails {
35
39
  export interface SecretStoreToolOptions {
36
40
  manager: CredentialManager;
37
41
  resolveMigrationSources?: CredentialMigrationSourceResolver;
42
+ discoverMigrationSources?: CredentialMigrationSourceDiscoverer;
38
43
  }
39
44
  export declare function createSecretStoreToolDefinition(options: SecretStoreToolOptions): import("../extensions/types.ts").ToolDefinition<Type.TObject<{
40
- action: Type.TUnion<[Type.TLiteral<"status">, Type.TLiteral<"list">, Type.TLiteral<"activate">, Type.TLiteral<"migrate">]>;
45
+ action: Type.TUnion<[Type.TLiteral<"status">, Type.TLiteral<"list">, Type.TLiteral<"discover">, Type.TLiteral<"activate">, Type.TLiteral<"migrate">]>;
41
46
  profile: Type.TOptional<Type.TString>;
42
47
  description: Type.TOptional<Type.TString>;
43
48
  overwrite: Type.TOptional<Type.TBoolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"secret-store.d.ts","sourceRoot":"","sources":["../../../src/core/tools/secret-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG5C,OAAO,EACN,KAAK,iBAAiB,EAEtB,KAAK,wBAAwB,EAE7B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEN,KAAK,iCAAiC,EAEtC,MAAM,2CAA2C,CAAC;AAkCnD,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;EA6BtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEpE,MAAM,MAAM,iBAAiB,GAC1B,WAAW,GACX,WAAW,GACX,WAAW,GACX,OAAO,GACP,QAAQ,GACR,UAAU,GACV,aAAa,CAAC;AAEjB,MAAM,WAAW,sBAAsB;IACtC,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACtC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,uBAAuB,CAAC,EAAE,iCAAiC,CAAC;CAC5D;AA4HD,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,sBAAsB;;;;;;;;;;;;;;;;kGA6I9E"}
1
+ {"version":3,"file":"secret-store.d.ts","sourceRoot":"","sources":["../../../src/core/tools/secret-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG5C,OAAO,EACN,KAAK,iBAAiB,EAEtB,KAAK,wBAAwB,EAE7B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAEN,KAAK,iCAAiC,EAEtC,MAAM,2CAA2C,CAAC;AAKnD,OAAO,EAEN,KAAK,kCAAkC,EACvC,KAAK,mCAAmC,EAExC,MAAM,2CAA2C,CAAC;AA8BnD,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;EAmCtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEpE,MAAM,MAAM,iBAAiB,GAC1B,WAAW,GACX,WAAW,GACX,WAAW,GACX,YAAY,GACZ,OAAO,GACP,QAAQ,GACR,UAAU,GACV,aAAa,CAAC;AAEjB,MAAM,WAAW,sBAAsB;IACtC,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,kCAAkC,EAAE,CAAC;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACtC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,uBAAuB,CAAC,EAAE,iCAAiC,CAAC;IAC5D,wBAAwB,CAAC,EAAE,mCAAmC,CAAC;CAC/D;AAgID,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,sBAAsB;;;;;;;;;;;;;;;;kGAmK9E"}