@orion-agents/orion-code 0.1.6 → 0.1.7

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 (149) hide show
  1. package/README.md +41 -17
  2. package/README.zh-CN.md +49 -18
  3. package/dist/cli.js +7 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/core-command-handlers.d.ts.map +1 -1
  6. package/dist/commands/core-command-handlers.js +1 -0
  7. package/dist/commands/core-command-handlers.js.map +1 -1
  8. package/dist/commands/model-command-handlers.d.ts +2 -3
  9. package/dist/commands/model-command-handlers.d.ts.map +1 -1
  10. package/dist/commands/model-command-handlers.js +0 -54
  11. package/dist/commands/model-command-handlers.js.map +1 -1
  12. package/dist/commands/model-commands.d.ts.map +1 -1
  13. package/dist/commands/model-commands.js +0 -22
  14. package/dist/commands/model-commands.js.map +1 -1
  15. package/dist/commands/registry.d.ts.map +1 -1
  16. package/dist/commands/registry.js +49 -10
  17. package/dist/commands/registry.js.map +1 -1
  18. package/dist/commands/system-commands.d.ts.map +1 -1
  19. package/dist/commands/system-commands.js +76 -2
  20. package/dist/commands/system-commands.js.map +1 -1
  21. package/dist/commands/target-command.js +1 -1
  22. package/dist/commands/target-command.js.map +1 -1
  23. package/dist/commands/types.d.ts +3 -2
  24. package/dist/commands/types.d.ts.map +1 -1
  25. package/dist/commands/types.js +2 -3
  26. package/dist/commands/types.js.map +1 -1
  27. package/dist/commands/workflow-command-handlers.d.ts +2 -1
  28. package/dist/commands/workflow-command-handlers.d.ts.map +1 -1
  29. package/dist/commands/workflow-command-handlers.js +26 -0
  30. package/dist/commands/workflow-command-handlers.js.map +1 -1
  31. package/dist/commands/workflow-commands.d.ts.map +1 -1
  32. package/dist/commands/workflow-commands.js +11 -0
  33. package/dist/commands/workflow-commands.js.map +1 -1
  34. package/dist/framework/agent-mode.d.ts +47 -0
  35. package/dist/framework/agent-mode.d.ts.map +1 -0
  36. package/dist/framework/agent-mode.js +152 -0
  37. package/dist/framework/agent-mode.js.map +1 -0
  38. package/dist/framework/prompt.d.ts +5 -0
  39. package/dist/framework/prompt.d.ts.map +1 -1
  40. package/dist/framework/prompt.js +45 -9
  41. package/dist/framework/prompt.js.map +1 -1
  42. package/dist/framework/tool-scheduler.d.ts +9 -8
  43. package/dist/framework/tool-scheduler.d.ts.map +1 -1
  44. package/dist/framework/tool-scheduler.js +36 -13
  45. package/dist/framework/tool-scheduler.js.map +1 -1
  46. package/dist/framework/tool-state.d.ts +2 -0
  47. package/dist/framework/tool-state.d.ts.map +1 -1
  48. package/dist/framework/tool-state.js +1 -0
  49. package/dist/framework/tool-state.js.map +1 -1
  50. package/dist/framework/tool.d.ts +9 -0
  51. package/dist/framework/tool.d.ts.map +1 -1
  52. package/dist/framework/tool.js.map +1 -1
  53. package/dist/runtime/agent-runtime-controller.d.ts +20 -1
  54. package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
  55. package/dist/runtime/agent-runtime-controller.js +194 -3
  56. package/dist/runtime/agent-runtime-controller.js.map +1 -1
  57. package/dist/runtime/agent-runtime-protocol.d.ts +31 -1
  58. package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
  59. package/dist/runtime/agent-runtime-protocol.js +12 -0
  60. package/dist/runtime/agent-runtime-protocol.js.map +1 -1
  61. package/dist/runtime/chat-controller.d.ts +2 -0
  62. package/dist/runtime/chat-controller.d.ts.map +1 -1
  63. package/dist/runtime/chat-controller.js +15 -5
  64. package/dist/runtime/chat-controller.js.map +1 -1
  65. package/dist/runtime/goals/presentation.d.ts.map +1 -1
  66. package/dist/runtime/goals/presentation.js +4 -0
  67. package/dist/runtime/goals/presentation.js.map +1 -1
  68. package/dist/runtime/goals/prompt.d.ts.map +1 -1
  69. package/dist/runtime/goals/prompt.js +3 -2
  70. package/dist/runtime/goals/prompt.js.map +1 -1
  71. package/dist/runtime/goals/tools.d.ts +2 -0
  72. package/dist/runtime/goals/tools.d.ts.map +1 -1
  73. package/dist/runtime/goals/tools.js +18 -24
  74. package/dist/runtime/goals/tools.js.map +1 -1
  75. package/dist/runtime/goals/types.d.ts +4 -1
  76. package/dist/runtime/goals/types.d.ts.map +1 -1
  77. package/dist/runtime/goals/types.js +3 -0
  78. package/dist/runtime/goals/types.js.map +1 -1
  79. package/dist/runtime/loop-budget.d.ts +5 -0
  80. package/dist/runtime/loop-budget.d.ts.map +1 -1
  81. package/dist/runtime/loop-budget.js +18 -4
  82. package/dist/runtime/loop-budget.js.map +1 -1
  83. package/dist/runtime/ui-events.d.ts +13 -0
  84. package/dist/runtime/ui-events.d.ts.map +1 -1
  85. package/dist/services/config.d.ts.map +1 -1
  86. package/dist/services/config.js +29 -9
  87. package/dist/services/config.js.map +1 -1
  88. package/dist/services/global-config.d.ts +16 -0
  89. package/dist/services/global-config.d.ts.map +1 -1
  90. package/dist/services/global-config.js +125 -25
  91. package/dist/services/global-config.js.map +1 -1
  92. package/dist/services/session-storage.d.ts +6 -0
  93. package/dist/services/session-storage.d.ts.map +1 -1
  94. package/dist/services/session-storage.js +171 -52
  95. package/dist/services/session-storage.js.map +1 -1
  96. package/dist/tools/bash_security.d.ts.map +1 -1
  97. package/dist/tools/bash_security.js +12 -2
  98. package/dist/tools/bash_security.js.map +1 -1
  99. package/dist/tools/index.d.ts.map +1 -1
  100. package/dist/tools/index.js +71 -6
  101. package/dist/tools/index.js.map +1 -1
  102. package/dist/tools/plan.d.ts +2 -3
  103. package/dist/tools/plan.d.ts.map +1 -1
  104. package/dist/tools/plan.js +35 -34
  105. package/dist/tools/plan.js.map +1 -1
  106. package/dist/tui-core/input-parser.d.ts +1 -1
  107. package/dist/tui-core/input-parser.d.ts.map +1 -1
  108. package/dist/tui-core/input-parser.js +1 -0
  109. package/dist/tui-core/input-parser.js.map +1 -1
  110. package/dist/tui-core/style.d.ts +11 -0
  111. package/dist/tui-core/style.d.ts.map +1 -1
  112. package/dist/tui-core/style.js +68 -9
  113. package/dist/tui-core/style.js.map +1 -1
  114. package/dist/tui-ui/chrome-view-model.d.ts +19 -0
  115. package/dist/tui-ui/chrome-view-model.d.ts.map +1 -0
  116. package/dist/tui-ui/chrome-view-model.js +168 -0
  117. package/dist/tui-ui/chrome-view-model.js.map +1 -0
  118. package/dist/tui-ui/launch.d.ts.map +1 -1
  119. package/dist/tui-ui/launch.js +38 -2
  120. package/dist/tui-ui/launch.js.map +1 -1
  121. package/dist/tui-ui/layout.d.ts +5 -1
  122. package/dist/tui-ui/layout.d.ts.map +1 -1
  123. package/dist/tui-ui/layout.js +101 -73
  124. package/dist/tui-ui/layout.js.map +1 -1
  125. package/dist/tui-ui/pixel-mascot.d.ts +5 -0
  126. package/dist/tui-ui/pixel-mascot.d.ts.map +1 -0
  127. package/dist/tui-ui/pixel-mascot.js +33 -0
  128. package/dist/tui-ui/pixel-mascot.js.map +1 -0
  129. package/dist/tui-ui/runner.d.ts +25 -1
  130. package/dist/tui-ui/runner.d.ts.map +1 -1
  131. package/dist/tui-ui/runner.js +181 -0
  132. package/dist/tui-ui/runner.js.map +1 -1
  133. package/dist/tui-ui/state.d.ts +11 -1
  134. package/dist/tui-ui/state.d.ts.map +1 -1
  135. package/dist/tui-ui/state.js +8 -0
  136. package/dist/tui-ui/state.js.map +1 -1
  137. package/dist/tui-ui/terminal-image.d.ts +13 -3
  138. package/dist/tui-ui/terminal-image.d.ts.map +1 -1
  139. package/dist/tui-ui/terminal-image.js +25 -7
  140. package/dist/tui-ui/terminal-image.js.map +1 -1
  141. package/dist/tui-ui/theme-profile.d.ts +4 -0
  142. package/dist/tui-ui/theme-profile.d.ts.map +1 -1
  143. package/dist/tui-ui/theme-profile.js +21 -5
  144. package/dist/tui-ui/theme-profile.js.map +1 -1
  145. package/dist/tui-ui/theme.d.ts +5 -2
  146. package/dist/tui-ui/theme.d.ts.map +1 -1
  147. package/dist/tui-ui/theme.js +21 -1
  148. package/dist/tui-ui/theme.js.map +1 -1
  149. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-command-handlers.js","sourceRoot":"","sources":["../../src/commands/workflow-command-handlers.ts"],"names":[],"mappings":";AAAA,0EAA0E;;AAgCjE,gCAAU;AAAE,4CAAgB;AAAE,kDAAmB;AA7B1D,+DAAuF;AACvF,yDAA6E;AAE7E,SAAS,UAAU,CAAC,GAAmB,EAAE,IAAY;IACnD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,MAAM,MAAM,GAAG,IAAA,qCAAoB,EAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChE,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,SAAS;QACzB,MAAM,EAAE,IAAA,oCAAmB,EAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC;KAClD,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAmB,EAAE,IAAY;IACzD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,MAAM,IAAI,GAAG,IAAA,8BAAgB,EAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1D,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAA,8BAAgB,EAAC,IAAI,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,IAAY;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,OAAO;QACL,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,IAAI;QACpB,SAAS,EAAE,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;KACrD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"workflow-command-handlers.js","sourceRoot":"","sources":["../../src/commands/workflow-command-handlers.ts"],"names":[],"mappings":";AAAA,0EAA0E;;AA4DjE,gCAAU;AAAE,gCAAU;AAAE,4CAAgB;AAAE,kDAAmB;AAzDtE,+DAAuF;AACvF,yDAA6E;AAC7E,wDAAuD;AACvD,wDAAuD;AAEvD,SAAS,UAAU,CAAC,GAAmB,EAAE,IAAY;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,IAAA,yBAAY,GAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAEzC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QACrD,IAAI,GAAG,CAAC,kBAAkB;YAAE,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;;YAC9D,IAAA,yBAAY,EAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EACJ,yIAAyI;SAC5I,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,4EAA4E;QACpF,cAAc,EAAE,IAAI;QACpB,SAAS,EAAE,IAAI;KAChB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,GAAmB,EAAE,IAAY;IACnD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,MAAM,MAAM,GAAG,IAAA,qCAAoB,EAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChE,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,SAAS;QACzB,MAAM,EAAE,IAAA,oCAAmB,EAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC;KAClD,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAmB,EAAE,IAAY;IACzD,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,MAAM,IAAI,GAAG,IAAA,8BAAgB,EAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1D,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAA,8BAAgB,EAAC,IAAI,CAAC,EAAE,CAAC;AAC1E,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,IAAY;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,OAAO;QACL,OAAO,EAAE,IAAI;QACb,cAAc,EAAE,IAAI;QACpB,SAAS,EAAE,IAAI,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;KACrD,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-commands.d.ts","sourceRoot":"","sources":["../../src/commands/workflow-commands.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI5C,eAAO,MAAM,iBAAiB,EAAE,YAAY,EAqH3C,CAAC"}
1
+ {"version":3,"file":"workflow-commands.d.ts","sourceRoot":"","sources":["../../src/commands/workflow-commands.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAS5C,eAAO,MAAM,iBAAiB,EAAE,YAAY,EAgI3C,CAAC"}
@@ -30,6 +30,17 @@ exports.WORKFLOW_COMMANDS = [
30
30
  error: '/goal must be routed through the shared AgentRuntimeController.',
31
31
  }),
32
32
  },
33
+ {
34
+ name: 'plan',
35
+ description: 'Explore a task read-only, save a decision-complete plan, then exit automatically',
36
+ argumentHint: '[task description]',
37
+ category: 'workflow',
38
+ priority: 4,
39
+ type: 'builtin',
40
+ execution: 'builtin',
41
+ risk: 'state-write',
42
+ execute: (ctx, args) => (0, workflow_command_handlers_1.handlePlan)(ctx, args),
43
+ },
33
44
  {
34
45
  name: 'diff',
35
46
  description: 'Summarize current git workspace changes and touched files',
@@ -1 +1 @@
1
- {"version":3,"file":"workflow-commands.js","sourceRoot":"","sources":["../../src/commands/workflow-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workflow-commands.js","sourceRoot":"","sources":["../../src/commands/workflow-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import type { AgentMode } from '../commands/types';
2
+ import type { Store } from './store';
3
+ import type { ToolContext } from './tool';
4
+ /** Stable cycle used by the product TUI. `interactive` is displayed as BUILD. */
5
+ export declare const AGENT_MODE_CYCLE: readonly AgentMode[];
6
+ export interface AgentModeSnapshot {
7
+ baseMode: AgentMode;
8
+ pendingBaseMode: AgentMode | null;
9
+ }
10
+ export type AgentModeListener = (snapshot: AgentModeSnapshot) => void;
11
+ export declare function createPlanModeChangeHandler(store: Store, lifecycle?: AgentModeLifecycleController): NonNullable<ToolContext['onPlanModeChange']>;
12
+ export declare function nextAgentMode(mode: AgentMode): AgentMode;
13
+ /**
14
+ * Single owner for BUILD / PLAN / AUTO lifecycle state.
15
+ *
16
+ * Commands, keyboard shortcuts and the plan completion tool all transition
17
+ * through this controller so Store and tool-state cannot drift apart.
18
+ */
19
+ export declare class AgentModeLifecycleController {
20
+ private readonly store;
21
+ private pendingBaseMode;
22
+ private completedPlanRevision;
23
+ private lastCompletedPlan;
24
+ private fallbackBaseMode;
25
+ private readonly listeners;
26
+ constructor(store: Store);
27
+ snapshot(): AgentModeSnapshot;
28
+ subscribe(listener: AgentModeListener): () => void;
29
+ /** Cycle immediately while idle, or stage the change for the next request. */
30
+ cycle(options: {
31
+ defer: boolean;
32
+ }): AgentModeSnapshot;
33
+ /** Apply an explicit command-driven transition and supersede any pending shortcut. */
34
+ setMode(mode: AgentMode): AgentModeSnapshot;
35
+ /** Restore the pre-plan mode after saving the decision-complete plan. */
36
+ completePlan(plan: string, returnMode: Exclude<AgentMode, 'plan'>): AgentModeSnapshot;
37
+ completionRevision(): number;
38
+ completedPlanSince(revision: number): string | null;
39
+ /** Apply a busy-turn shortcut at the logical-request boundary. */
40
+ applyPending(): AgentModeSnapshot;
41
+ private apply;
42
+ private currentMode;
43
+ private notify;
44
+ }
45
+ /** Fallback for command-only callers that do not run through AgentRuntimeController. */
46
+ export declare function setAgentMode(store: Store, mode: AgentMode): AgentModeSnapshot;
47
+ //# sourceMappingURL=agent-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-mode.d.ts","sourceRoot":"","sources":["../../src/framework/agent-mode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAG1C,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,EAAE,SAAS,SAAS,EAAoC,CAAC;AAEtF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,SAAS,CAAC;IACpB,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;AAEtE,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,KAAK,EACZ,SAAS,CAAC,EAAE,4BAA4B,GACvC,WAAW,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAc9C;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,SAAS,CAGxD;AAED;;;;;GAKG;AACH,qBAAa,4BAA4B;IAO3B,OAAO,CAAC,QAAQ,CAAC,KAAK;IANlC,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,iBAAiB,CAAuB;IAChD,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;gBAE7B,KAAK,EAAE,KAAK;IAEzC,QAAQ,IAAI,iBAAiB;IAO7B,SAAS,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,IAAI;IAKlD,8EAA8E;IAC9E,KAAK,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,GAAG,iBAAiB;IAWrD,sFAAsF;IACtF,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,iBAAiB;IAM3C,yEAAyE;IACzE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,iBAAiB;IAoBrF,kBAAkB,IAAI,MAAM;IAI5B,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAInD,kEAAkE;IAClE,YAAY,IAAI,iBAAiB;IAQjC,OAAO,CAAC,KAAK;IAoCb,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,MAAM;CAKf;AAED,wFAAwF;AACxF,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,iBAAiB,CAE7E"}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AgentModeLifecycleController = exports.AGENT_MODE_CYCLE = void 0;
4
+ exports.createPlanModeChangeHandler = createPlanModeChangeHandler;
5
+ exports.nextAgentMode = nextAgentMode;
6
+ exports.setAgentMode = setAgentMode;
7
+ const tool_state_1 = require("./tool-state");
8
+ /** Stable cycle used by the product TUI. `interactive` is displayed as BUILD. */
9
+ exports.AGENT_MODE_CYCLE = ['interactive', 'plan', 'auto'];
10
+ function createPlanModeChangeHandler(store, lifecycle) {
11
+ return transition => {
12
+ if (!transition.active && transition.currentPlan && lifecycle) {
13
+ return lifecycle.completePlan(transition.currentPlan, transition.returnMode).baseMode;
14
+ }
15
+ store.setState({
16
+ agentMode: transition.active ? 'plan' : transition.returnMode,
17
+ planMode: transition.active,
18
+ currentPlan: transition.currentPlan,
19
+ });
20
+ return transition.returnMode;
21
+ };
22
+ }
23
+ function nextAgentMode(mode) {
24
+ const index = exports.AGENT_MODE_CYCLE.indexOf(mode);
25
+ return exports.AGENT_MODE_CYCLE[(index + 1) % exports.AGENT_MODE_CYCLE.length];
26
+ }
27
+ /**
28
+ * Single owner for BUILD / PLAN / AUTO lifecycle state.
29
+ *
30
+ * Commands, keyboard shortcuts and the plan completion tool all transition
31
+ * through this controller so Store and tool-state cannot drift apart.
32
+ */
33
+ class AgentModeLifecycleController {
34
+ constructor(store) {
35
+ this.store = store;
36
+ this.pendingBaseMode = null;
37
+ this.completedPlanRevision = 0;
38
+ this.lastCompletedPlan = null;
39
+ this.fallbackBaseMode = 'interactive';
40
+ this.listeners = new Set();
41
+ }
42
+ snapshot() {
43
+ return {
44
+ baseMode: this.currentMode(),
45
+ pendingBaseMode: this.pendingBaseMode,
46
+ };
47
+ }
48
+ subscribe(listener) {
49
+ this.listeners.add(listener);
50
+ return () => this.listeners.delete(listener);
51
+ }
52
+ /** Cycle immediately while idle, or stage the change for the next request. */
53
+ cycle(options) {
54
+ const current = this.currentMode();
55
+ const origin = this.pendingBaseMode ?? current;
56
+ const next = nextAgentMode(origin);
57
+ if (options.defer) {
58
+ this.pendingBaseMode = next === current ? null : next;
59
+ return this.notify();
60
+ }
61
+ return this.setMode(next);
62
+ }
63
+ /** Apply an explicit command-driven transition and supersede any pending shortcut. */
64
+ setMode(mode) {
65
+ this.pendingBaseMode = null;
66
+ this.apply(mode);
67
+ return this.notify();
68
+ }
69
+ /** Restore the pre-plan mode after saving the decision-complete plan. */
70
+ completePlan(plan, returnMode) {
71
+ const savedPlan = plan.trim();
72
+ const executionMode = this.pendingBaseMode && this.pendingBaseMode !== 'plan' ? this.pendingBaseMode : returnMode;
73
+ this.pendingBaseMode = null;
74
+ this.completedPlanRevision += 1;
75
+ this.lastCompletedPlan = savedPlan;
76
+ (0, tool_state_1.setToolState)({
77
+ planMode: false,
78
+ currentPlan: savedPlan,
79
+ planReturnMode: executionMode === 'auto' ? 'auto' : 'interactive',
80
+ });
81
+ this.store.setState({
82
+ agentMode: executionMode,
83
+ planMode: false,
84
+ currentPlan: savedPlan,
85
+ });
86
+ return this.notify();
87
+ }
88
+ completionRevision() {
89
+ return this.completedPlanRevision;
90
+ }
91
+ completedPlanSince(revision) {
92
+ return this.completedPlanRevision > revision ? this.lastCompletedPlan : null;
93
+ }
94
+ /** Apply a busy-turn shortcut at the logical-request boundary. */
95
+ applyPending() {
96
+ const pending = this.pendingBaseMode;
97
+ if (!pending)
98
+ return this.snapshot();
99
+ this.pendingBaseMode = null;
100
+ this.apply(pending);
101
+ return this.notify();
102
+ }
103
+ apply(mode) {
104
+ this.fallbackBaseMode = mode;
105
+ if (typeof this.store.getSnapshot !== 'function' || typeof this.store.setState !== 'function') {
106
+ return;
107
+ }
108
+ const snapshot = this.store.getSnapshot();
109
+ const toolState = (0, tool_state_1.getToolState)();
110
+ if (mode === 'plan') {
111
+ const returnMode = snapshot.agentMode === 'auto'
112
+ ? 'auto'
113
+ : snapshot.agentMode === 'interactive'
114
+ ? 'interactive'
115
+ : (toolState.planReturnMode ?? 'interactive');
116
+ (0, tool_state_1.setToolState)({
117
+ planMode: true,
118
+ currentPlan: null,
119
+ planReturnMode: returnMode,
120
+ });
121
+ this.store.setState({ agentMode: 'plan', planMode: true, currentPlan: null });
122
+ return;
123
+ }
124
+ (0, tool_state_1.setToolState)({
125
+ planMode: false,
126
+ currentPlan: snapshot.agentMode === 'plan' ? null : snapshot.currentPlan,
127
+ planReturnMode: mode,
128
+ });
129
+ this.store.setState({
130
+ agentMode: mode,
131
+ planMode: false,
132
+ currentPlan: snapshot.agentMode === 'plan' ? null : snapshot.currentPlan,
133
+ });
134
+ }
135
+ currentMode() {
136
+ if (typeof this.store.getSnapshot !== 'function')
137
+ return this.fallbackBaseMode;
138
+ return this.store.getSnapshot().agentMode ?? this.fallbackBaseMode;
139
+ }
140
+ notify() {
141
+ const snapshot = this.snapshot();
142
+ for (const listener of this.listeners)
143
+ listener(snapshot);
144
+ return snapshot;
145
+ }
146
+ }
147
+ exports.AgentModeLifecycleController = AgentModeLifecycleController;
148
+ /** Fallback for command-only callers that do not run through AgentRuntimeController. */
149
+ function setAgentMode(store, mode) {
150
+ return new AgentModeLifecycleController(store).setMode(mode);
151
+ }
152
+ //# sourceMappingURL=agent-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-mode.js","sourceRoot":"","sources":["../../src/framework/agent-mode.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@
6
6
  * Dynamic sections are rebuilt each request.
7
7
  */
8
8
  import type { OrionCodeTool } from './tool';
9
+ import type { AgentMode } from '../commands/types';
9
10
  /** Context for rendering prompt sections */
10
11
  export interface PromptContext {
11
12
  cwd: string;
@@ -23,6 +24,10 @@ export interface PromptContext {
23
24
  referencedFilesContent?: string;
24
25
  /** v0.2.24: Persistent goal context fragment (from GoalCoordinator). */
25
26
  goalContent?: string;
27
+ /** Task-scoped read-only planning lifecycle started by /plan. */
28
+ planMode?: boolean;
29
+ /** Active BUILD / PLAN / AUTO behavior contract. */
30
+ agentMode?: AgentMode;
26
31
  }
27
32
  /** A named prompt section */
28
33
  export interface PromptSection {
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/framework/prompt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAM5C,4CAA4C;AAC5C,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2FAA2F;IAC3F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,8EAA8E;IAC9E,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,6BAA6B;AAC7B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,MAAM,CAAC;CACxC;AA8HD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAmBzF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAI1D"}
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/framework/prompt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAMnD,4CAA4C;AAC5C,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2FAA2F;IAC3F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,8EAA8E;IAC9E,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oDAAoD;IACpD,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,6BAA6B;AAC7B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,MAAM,CAAC;CACxC;AAiKD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAmBzF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAI1D"}
@@ -41,7 +41,7 @@ Execution strategy:
41
41
  {
42
42
  name: 'tools',
43
43
  dynamic: false,
44
- render: (ctx) => {
44
+ render: ctx => {
45
45
  const toolNames = ctx.tools.map(t => t.name).join(', ');
46
46
  return `Available tools: ${toolNames}.
47
47
  Use tools when they help complete the task. Prefer the right tool for the job.
@@ -58,7 +58,7 @@ Batched tool strategy:
58
58
  {
59
59
  name: 'env_info',
60
60
  dynamic: true,
61
- render: (ctx) => `Current environment:
61
+ render: ctx => `Current environment:
62
62
  - Working directory: ${ctx.cwd}
63
63
  - Platform: ${ctx.platform}
64
64
  - Node.js: ${ctx.nodeVersion}`,
@@ -66,7 +66,7 @@ Batched tool strategy:
66
66
  {
67
67
  name: 'project_instructions',
68
68
  dynamic: true,
69
- render: (ctx) => {
69
+ render: ctx => {
70
70
  if (!ctx.projectInstructionsContent)
71
71
  return '';
72
72
  return ctx.projectInstructionsContent;
@@ -75,7 +75,7 @@ Batched tool strategy:
75
75
  {
76
76
  name: 'memory',
77
77
  dynamic: true,
78
- render: (ctx) => {
78
+ render: ctx => {
79
79
  if (!ctx.memoryContent)
80
80
  return '';
81
81
  return `Project memory:\n${ctx.memoryContent}`;
@@ -84,7 +84,7 @@ Batched tool strategy:
84
84
  {
85
85
  name: 'skills',
86
86
  dynamic: true,
87
- render: (ctx) => {
87
+ render: ctx => {
88
88
  if (!ctx.skillsContent)
89
89
  return '';
90
90
  return ctx.skillsContent;
@@ -93,7 +93,7 @@ Batched tool strategy:
93
93
  {
94
94
  name: 'active_skills',
95
95
  dynamic: true,
96
- render: (ctx) => {
96
+ render: ctx => {
97
97
  if (!ctx.activeSkillsContent)
98
98
  return '';
99
99
  return ctx.activeSkillsContent;
@@ -102,7 +102,7 @@ Batched tool strategy:
102
102
  {
103
103
  name: 'referenced_files',
104
104
  dynamic: true,
105
- render: (ctx) => {
105
+ render: ctx => {
106
106
  if (!ctx.referencedFilesContent)
107
107
  return '';
108
108
  return ctx.referencedFilesContent;
@@ -111,7 +111,7 @@ Batched tool strategy:
111
111
  {
112
112
  name: 'subagents',
113
113
  dynamic: true,
114
- render: (ctx) => {
114
+ render: ctx => {
115
115
  // Only render when the runtime-bound `subtask` tool is exposed this turn.
116
116
  if (!ctx.tools.some(t => t.name === 'subtask'))
117
117
  return '';
@@ -127,12 +127,48 @@ Batched tool strategy:
127
127
  {
128
128
  name: 'goal',
129
129
  dynamic: true,
130
- render: (ctx) => {
130
+ render: ctx => {
131
131
  if (!ctx.goalContent)
132
132
  return '';
133
133
  return ctx.goalContent;
134
134
  },
135
135
  },
136
+ {
137
+ name: 'agent_mode',
138
+ dynamic: true,
139
+ render: ctx => {
140
+ if (ctx.agentMode === 'auto') {
141
+ return `[Auto Mode]
142
+ - Execute immediately and work autonomously until the user's goal is achieved and verified.
143
+ - Do not ask permission questions or clarifying questions. Resolve uncertainty from repository evidence and make the safest reasonable assumption.
144
+ - If a hard safety policy blocks an action, do not ask the user to approve it; choose a reversible in-scope alternative and continue.
145
+ - Respect explicit user boundaries, protected paths, sandbox restrictions, hard deny rules, and destructive-action safeguards.`;
146
+ }
147
+ if (ctx.agentMode === 'plan') {
148
+ return `[Plan-to-Execution Mode]
149
+ - First produce and save a decision-complete plan using the read-only Plan lifecycle.
150
+ - After exit_plan_mode succeeds, the runtime starts a separate execution request in the selected next mode.
151
+ - Never edit or execute the plan in the planning request itself.`;
152
+ }
153
+ return `[Build Mode]
154
+ - Use the normal collaborative coding workflow.
155
+ - Make reasonable progress autonomously, while using the configured permission policy for actions that require confirmation.`;
156
+ },
157
+ },
158
+ {
159
+ name: 'plan_mode',
160
+ dynamic: true,
161
+ render: ctx => {
162
+ if (!ctx.planMode)
163
+ return '';
164
+ return `[Plan Mode]
165
+ - Explore and reason read-only. Do not edit files, run mutating commands, or perform external actions.
166
+ - Resolve material unknowns from repository evidence; ask the user only when a decision cannot be inferred safely.
167
+ - Produce a decision-complete implementation plan with scope, ordered changes, tests, risks, and acceptance checks.
168
+ - When the plan is ready, call exit_plan_mode exactly once with the final plan. A successful call saves it and exits plan mode automatically.
169
+ - Do not ask the user to run another exit command, and do not start implementing the plan in this turn. The runtime will start execution as a separate logical request.`;
170
+ },
171
+ },
136
172
  ];
137
173
  // ============================================================================
138
174
  // buildSystemPrompt
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/framework/prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/framework/prompt.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;AA4MH,8CAmBC;AAMD,0CAIC;AAlMD,+EAA+E;AAC/E,OAAO;AACP,+EAA+E;AAE/E,MAAM,QAAQ,GAAoB;IAChC;QACE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,GAAG,EAAE,CAAC;4FAC0E;KACzF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,GAAG,EAAE,CAAC;;;;;;;;;;;;;;0GAcwF;KACvG;IACD;QACE,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,GAAG,CAAC,EAAE;YACZ,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxD,OAAO,oBAAoB,SAAS;;;;;;;;;uFAS6C,CAAC;QACpF,CAAC;KACF;IACD;QACE,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;uBACI,GAAG,CAAC,GAAG;cAChB,GAAG,CAAC,QAAQ;aACb,GAAG,CAAC,WAAW,EAAE;KAC3B;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,GAAG,CAAC,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,0BAA0B;gBAAE,OAAO,EAAE,CAAC;YAC/C,OAAO,GAAG,CAAC,0BAA0B,CAAC;QACxC,CAAC;KACF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,GAAG,CAAC,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,aAAa;gBAAE,OAAO,EAAE,CAAC;YAClC,OAAO,oBAAoB,GAAG,CAAC,aAAa,EAAE,CAAC;QACjD,CAAC;KACF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,GAAG,CAAC,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,aAAa;gBAAE,OAAO,EAAE,CAAC;YAClC,OAAO,GAAG,CAAC,aAAa,CAAC;QAC3B,CAAC;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,GAAG,CAAC,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,mBAAmB;gBAAE,OAAO,EAAE,CAAC;YACxC,OAAO,GAAG,CAAC,mBAAmB,CAAC;QACjC,CAAC;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,GAAG,CAAC,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,sBAAsB;gBAAE,OAAO,EAAE,CAAC;YAC3C,OAAO,GAAG,CAAC,sBAAsB,CAAC;QACpC,CAAC;KACF;IACD;QACE,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,GAAG,CAAC,EAAE;YACZ,0EAA0E;YAC1E,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;gBAAE,OAAO,EAAE,CAAC;YAC1D,OAAO;;;;;;2JAM8I,CAAC;QACxJ,CAAC;KACF;IACD;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,GAAG,CAAC,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,WAAW;gBAAE,OAAO,EAAE,CAAC;YAChC,OAAO,GAAG,CAAC,WAAW,CAAC;QACzB,CAAC;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,GAAG,CAAC,EAAE;YACZ,IAAI,GAAG,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;gBAC7B,OAAO;;;;+HAIgH,CAAC;YAC1H,CAAC;YACD,IAAI,GAAG,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;gBAC7B,OAAO;;;iEAGkD,CAAC;YAC5D,CAAC;YACD,OAAO;;6HAEgH,CAAC;QAC1H,CAAC;KACF;IACD;QACE,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,GAAG,CAAC,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,QAAQ;gBAAE,OAAO,EAAE,CAAC;YAC7B,OAAO;;;;;wKAK2J,CAAC;QACrK,CAAC;KACF;CACF,CAAC;AAEF,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,GAAkB;IAClD,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YAAE,SAAS;QAE9B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;KACnC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,GAAkB;IAChD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC/D,MAAM,KAAK,GAAG,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC"}
@@ -107,9 +107,9 @@ export type ToolRisk = 'read_only' | 'file_edit' | 'state_write' | 'destructive'
107
107
  * Resolve an `ask` permission against the permission mode.
108
108
  *
109
109
  * Historically this logic was inlined as `permissionMode === 'default'`, which meant
110
- * every non-default mode (plan / acceptEdits / auto) silently skipped confirmation and
111
- * executed the tool. That defeated plan mode's read-only guarantee and widened
112
- * acceptEdits from "auto-accept file edits" to "auto-accept everything".
110
+ * every non-default mode silently skipped confirmation without a complete safety
111
+ * decision. Plan and acceptEdits stay restrictive here; Auto delegates to the full
112
+ * policy/risk gate below and never opens an interactive prompt.
113
113
  */
114
114
  export declare function resolveAskPermission(permissionMode: string | undefined, tool: OrionCodeTool | undefined, args: Record<string, unknown>): AskResolution;
115
115
  /**
@@ -135,11 +135,12 @@ export interface EffectivePermission {
135
135
  * 1. tool `checkPermissions() === 'deny'` — never overridable by config
136
136
  * 2. allowlist `deny:` rule — project can always tighten
137
137
  * 3. plan mode — only explicit safe read-only metadata runs
138
- * 4. allowlist `ask:` rule explicit escalation beats modes
139
- * 5. acceptEdits only explicit file edits auto-run
140
- * 6. allowlist `allow:` rule known tools except destructive non-file operations
141
- * 7. safe read-only tools auto-run in every non-plan mode
142
- * 8. otherwise confirm (fail closed)
138
+ * 4. auto mode decide locally; no interactive permission prompt
139
+ * 5. allowlist `ask:` rule — explicit escalation in collaborative modes
140
+ * 6. acceptEdits only explicit file edits auto-run
141
+ * 7. allowlist `allow:` rule known tools except destructive non-file operations
142
+ * 8. safe read-only tools — auto-run in every non-plan mode
143
+ * 9. otherwise confirm (fail closed)
143
144
  */
144
145
  export declare function resolveEffectivePermission(input: {
145
146
  toolName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-scheduler.d.ts","sourceRoot":"","sources":["../../src/framework/tool-scheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-scheduler.d.ts","sourceRoot":"","sources":["../../src/framework/tool-scheduler.ts"],"names":[],"mappings":"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"}
@@ -74,18 +74,18 @@ function isSafeReadOnly(risk) {
74
74
  * Resolve an `ask` permission against the permission mode.
75
75
  *
76
76
  * Historically this logic was inlined as `permissionMode === 'default'`, which meant
77
- * every non-default mode (plan / acceptEdits / auto) silently skipped confirmation and
78
- * executed the tool. That defeated plan mode's read-only guarantee and widened
79
- * acceptEdits from "auto-accept file edits" to "auto-accept everything".
77
+ * every non-default mode silently skipped confirmation without a complete safety
78
+ * decision. Plan and acceptEdits stay restrictive here; Auto delegates to the full
79
+ * policy/risk gate below and never opens an interactive prompt.
80
80
  */
81
81
  function resolveAskPermission(permissionMode, tool, args) {
82
82
  switch (permissionMode) {
83
83
  case 'plan':
84
84
  return 'block';
85
85
  case 'auto':
86
- // Auto mode is not a risk override. The caller must establish that the
87
- // invocation is explicitly safe/read-only before allowing it.
88
- return 'confirm';
86
+ // Auto never opens an interactive permission prompt. The full gate below
87
+ // still enforces hard denies, workspace/sandbox guards and risk metadata.
88
+ return 'allow';
89
89
  case 'acceptEdits':
90
90
  return tool?.isFileEdit?.(args) === true ? 'allow' : 'confirm';
91
91
  default:
@@ -99,11 +99,12 @@ function resolveAskPermission(permissionMode, tool, args) {
99
99
  * 1. tool `checkPermissions() === 'deny'` — never overridable by config
100
100
  * 2. allowlist `deny:` rule — project can always tighten
101
101
  * 3. plan mode — only explicit safe read-only metadata runs
102
- * 4. allowlist `ask:` rule explicit escalation beats modes
103
- * 5. acceptEdits only explicit file edits auto-run
104
- * 6. allowlist `allow:` rule known tools except destructive non-file operations
105
- * 7. safe read-only tools auto-run in every non-plan mode
106
- * 8. otherwise confirm (fail closed)
102
+ * 4. auto mode decide locally; no interactive permission prompt
103
+ * 5. allowlist `ask:` rule — explicit escalation in collaborative modes
104
+ * 6. acceptEdits only explicit file edits auto-run
105
+ * 7. allowlist `allow:` rule known tools except destructive non-file operations
106
+ * 8. safe read-only tools — auto-run in every non-plan mode
107
+ * 9. otherwise confirm (fail closed)
107
108
  */
108
109
  function resolveEffectivePermission(input) {
109
110
  const { toolName, tool, args, permission, permissionMode, allowlist } = input;
@@ -141,6 +142,30 @@ function resolveEffectivePermission(input) {
141
142
  risk: risk.risk,
142
143
  };
143
144
  }
145
+ if (permissionMode === 'auto') {
146
+ if (!risk.known) {
147
+ return {
148
+ outcome: 'deny',
149
+ source: 'missing_risk_metadata',
150
+ reason: riskReason,
151
+ risk: risk.risk,
152
+ };
153
+ }
154
+ if (risk.risk === 'destructive' && !risk.isFileEdit) {
155
+ return {
156
+ outcome: 'deny',
157
+ source: 'mode_auto',
158
+ reason: `Auto safety blocked destructive non-file tool ${toolName}. Choose a reversible alternative.`,
159
+ risk: risk.risk,
160
+ };
161
+ }
162
+ return {
163
+ outcome: 'allow',
164
+ source: 'mode_auto',
165
+ reason: 'Auto mode approved this invocation after local policy and risk checks.',
166
+ risk: risk.risk,
167
+ };
168
+ }
144
169
  if (allowlist?.effect === 'ask') {
145
170
  return { outcome: 'confirm', source: 'allowlist_ask', reason, risk: risk.risk };
146
171
  }
@@ -177,8 +202,6 @@ function resolveEffectivePermission(input) {
177
202
  risk: risk.risk,
178
203
  };
179
204
  }
180
- // `auto` is deliberately not a blanket approval. It can only use the same
181
- // explicit safe-read risk envelope as the regular mode.
182
205
  if (isSafeReadOnly(risk))
183
206
  return { outcome: 'allow', risk: risk.risk };
184
207
  return {