@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.
- package/README.md +41 -17
- package/README.zh-CN.md +49 -18
- package/dist/cli.js +7 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/core-command-handlers.d.ts.map +1 -1
- package/dist/commands/core-command-handlers.js +1 -0
- package/dist/commands/core-command-handlers.js.map +1 -1
- package/dist/commands/model-command-handlers.d.ts +2 -3
- package/dist/commands/model-command-handlers.d.ts.map +1 -1
- package/dist/commands/model-command-handlers.js +0 -54
- package/dist/commands/model-command-handlers.js.map +1 -1
- package/dist/commands/model-commands.d.ts.map +1 -1
- package/dist/commands/model-commands.js +0 -22
- package/dist/commands/model-commands.js.map +1 -1
- package/dist/commands/registry.d.ts.map +1 -1
- package/dist/commands/registry.js +49 -10
- package/dist/commands/registry.js.map +1 -1
- package/dist/commands/system-commands.d.ts.map +1 -1
- package/dist/commands/system-commands.js +76 -2
- package/dist/commands/system-commands.js.map +1 -1
- package/dist/commands/target-command.js +1 -1
- package/dist/commands/target-command.js.map +1 -1
- package/dist/commands/types.d.ts +3 -2
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/types.js +2 -3
- package/dist/commands/types.js.map +1 -1
- package/dist/commands/workflow-command-handlers.d.ts +2 -1
- package/dist/commands/workflow-command-handlers.d.ts.map +1 -1
- package/dist/commands/workflow-command-handlers.js +26 -0
- package/dist/commands/workflow-command-handlers.js.map +1 -1
- package/dist/commands/workflow-commands.d.ts.map +1 -1
- package/dist/commands/workflow-commands.js +11 -0
- package/dist/commands/workflow-commands.js.map +1 -1
- package/dist/framework/agent-mode.d.ts +47 -0
- package/dist/framework/agent-mode.d.ts.map +1 -0
- package/dist/framework/agent-mode.js +152 -0
- package/dist/framework/agent-mode.js.map +1 -0
- package/dist/framework/prompt.d.ts +5 -0
- package/dist/framework/prompt.d.ts.map +1 -1
- package/dist/framework/prompt.js +45 -9
- package/dist/framework/prompt.js.map +1 -1
- package/dist/framework/tool-scheduler.d.ts +9 -8
- package/dist/framework/tool-scheduler.d.ts.map +1 -1
- package/dist/framework/tool-scheduler.js +36 -13
- package/dist/framework/tool-scheduler.js.map +1 -1
- package/dist/framework/tool-state.d.ts +2 -0
- package/dist/framework/tool-state.d.ts.map +1 -1
- package/dist/framework/tool-state.js +1 -0
- package/dist/framework/tool-state.js.map +1 -1
- package/dist/framework/tool.d.ts +9 -0
- package/dist/framework/tool.d.ts.map +1 -1
- package/dist/framework/tool.js.map +1 -1
- package/dist/runtime/agent-runtime-controller.d.ts +20 -1
- package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
- package/dist/runtime/agent-runtime-controller.js +194 -3
- package/dist/runtime/agent-runtime-controller.js.map +1 -1
- package/dist/runtime/agent-runtime-protocol.d.ts +31 -1
- package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
- package/dist/runtime/agent-runtime-protocol.js +12 -0
- package/dist/runtime/agent-runtime-protocol.js.map +1 -1
- package/dist/runtime/chat-controller.d.ts +2 -0
- package/dist/runtime/chat-controller.d.ts.map +1 -1
- package/dist/runtime/chat-controller.js +15 -5
- package/dist/runtime/chat-controller.js.map +1 -1
- package/dist/runtime/goals/presentation.d.ts.map +1 -1
- package/dist/runtime/goals/presentation.js +4 -0
- package/dist/runtime/goals/presentation.js.map +1 -1
- package/dist/runtime/goals/prompt.d.ts.map +1 -1
- package/dist/runtime/goals/prompt.js +3 -2
- package/dist/runtime/goals/prompt.js.map +1 -1
- package/dist/runtime/goals/tools.d.ts +2 -0
- package/dist/runtime/goals/tools.d.ts.map +1 -1
- package/dist/runtime/goals/tools.js +18 -24
- package/dist/runtime/goals/tools.js.map +1 -1
- package/dist/runtime/goals/types.d.ts +4 -1
- package/dist/runtime/goals/types.d.ts.map +1 -1
- package/dist/runtime/goals/types.js +3 -0
- package/dist/runtime/goals/types.js.map +1 -1
- package/dist/runtime/loop-budget.d.ts +5 -0
- package/dist/runtime/loop-budget.d.ts.map +1 -1
- package/dist/runtime/loop-budget.js +18 -4
- package/dist/runtime/loop-budget.js.map +1 -1
- package/dist/runtime/ui-events.d.ts +13 -0
- package/dist/runtime/ui-events.d.ts.map +1 -1
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/config.js +29 -9
- package/dist/services/config.js.map +1 -1
- package/dist/services/global-config.d.ts +16 -0
- package/dist/services/global-config.d.ts.map +1 -1
- package/dist/services/global-config.js +125 -25
- package/dist/services/global-config.js.map +1 -1
- package/dist/services/session-storage.d.ts +6 -0
- package/dist/services/session-storage.d.ts.map +1 -1
- package/dist/services/session-storage.js +171 -52
- package/dist/services/session-storage.js.map +1 -1
- package/dist/tools/bash_security.d.ts.map +1 -1
- package/dist/tools/bash_security.js +12 -2
- package/dist/tools/bash_security.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +71 -6
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/plan.d.ts +2 -3
- package/dist/tools/plan.d.ts.map +1 -1
- package/dist/tools/plan.js +35 -34
- package/dist/tools/plan.js.map +1 -1
- package/dist/tui-core/input-parser.d.ts +1 -1
- package/dist/tui-core/input-parser.d.ts.map +1 -1
- package/dist/tui-core/input-parser.js +1 -0
- package/dist/tui-core/input-parser.js.map +1 -1
- package/dist/tui-core/style.d.ts +11 -0
- package/dist/tui-core/style.d.ts.map +1 -1
- package/dist/tui-core/style.js +68 -9
- package/dist/tui-core/style.js.map +1 -1
- package/dist/tui-ui/chrome-view-model.d.ts +19 -0
- package/dist/tui-ui/chrome-view-model.d.ts.map +1 -0
- package/dist/tui-ui/chrome-view-model.js +168 -0
- package/dist/tui-ui/chrome-view-model.js.map +1 -0
- package/dist/tui-ui/launch.d.ts.map +1 -1
- package/dist/tui-ui/launch.js +38 -2
- package/dist/tui-ui/launch.js.map +1 -1
- package/dist/tui-ui/layout.d.ts +5 -1
- package/dist/tui-ui/layout.d.ts.map +1 -1
- package/dist/tui-ui/layout.js +101 -73
- package/dist/tui-ui/layout.js.map +1 -1
- package/dist/tui-ui/pixel-mascot.d.ts +5 -0
- package/dist/tui-ui/pixel-mascot.d.ts.map +1 -0
- package/dist/tui-ui/pixel-mascot.js +33 -0
- package/dist/tui-ui/pixel-mascot.js.map +1 -0
- package/dist/tui-ui/runner.d.ts +25 -1
- package/dist/tui-ui/runner.d.ts.map +1 -1
- package/dist/tui-ui/runner.js +181 -0
- package/dist/tui-ui/runner.js.map +1 -1
- package/dist/tui-ui/state.d.ts +11 -1
- package/dist/tui-ui/state.d.ts.map +1 -1
- package/dist/tui-ui/state.js +8 -0
- package/dist/tui-ui/state.js.map +1 -1
- package/dist/tui-ui/terminal-image.d.ts +13 -3
- package/dist/tui-ui/terminal-image.d.ts.map +1 -1
- package/dist/tui-ui/terminal-image.js +25 -7
- package/dist/tui-ui/terminal-image.js.map +1 -1
- package/dist/tui-ui/theme-profile.d.ts +4 -0
- package/dist/tui-ui/theme-profile.d.ts.map +1 -1
- package/dist/tui-ui/theme-profile.js +21 -5
- package/dist/tui-ui/theme-profile.js.map +1 -1
- package/dist/tui-ui/theme.d.ts +5 -2
- package/dist/tui-ui/theme.d.ts.map +1 -1
- package/dist/tui-ui/theme.js +21 -1
- package/dist/tui-ui/theme.js.map +1 -1
- 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;;
|
|
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;
|
|
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":";AAAA,4EAA4E;;;AAG5E,
|
|
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;
|
|
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"}
|
package/dist/framework/prompt.js
CHANGED
|
@@ -41,7 +41,7 @@ Execution strategy:
|
|
|
41
41
|
{
|
|
42
42
|
name: 'tools',
|
|
43
43
|
dynamic: false,
|
|
44
|
-
render:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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":";AAAA;;;;;;GAMG;;
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/framework/prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
|
111
|
-
*
|
|
112
|
-
*
|
|
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.
|
|
139
|
-
* 5.
|
|
140
|
-
* 6.
|
|
141
|
-
* 7.
|
|
142
|
-
* 8.
|
|
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
|
|
78
|
-
*
|
|
79
|
-
*
|
|
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
|
|
87
|
-
//
|
|
88
|
-
return '
|
|
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.
|
|
103
|
-
* 5.
|
|
104
|
-
* 6.
|
|
105
|
-
* 7.
|
|
106
|
-
* 8.
|
|
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 {
|