@felan-ai/ext-prewalk 0.3.6 → 0.5.0

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  # @felan-ai/ext-prewalk
2
2
 
3
- Same-session Prewalk for Felan's complex repository work: the current model explores and plans the work in the session task graph, then makes one focused mutation. Felan switches the next model request to the `low` model tier at exact `medium` thinking by default, which finishes and verifies the task with the full conversation and tool history intact. Tier resolution prefers the planner's provider and model family before falling back to another authenticated provider.
3
+ Same-session Prewalk for Felan's complex repository work: the current model explores and plans the work in the session task graph, optionally reviews that plan with the user, then makes one focused mutation. Felan switches the next model request to the `low` model tier at exact `medium` thinking by default, which finishes and verifies the task with the full conversation and tool history intact. Tier resolution prefers the planner's provider and model family before falling back to another authenticated provider.
4
4
 
5
5
  After the run settles, Prewalk restores the original planner model and thinking level by default. All of these automated changes are scoped to the active session and do not change the user's or project's default model or thinking preference.
6
6
 
@@ -32,20 +32,27 @@ Prewalk refuses to arm when no explicit mutation tool is active. Shell tools suc
32
32
  enter_prewalk {} Enter Prewalk for complex repository work
33
33
  ```
34
34
 
35
- The no-argument tool requests a transition of the current run into planning, so it works while the agent is active. With the default `ask` policy, dialog-capable hosts ask the user before entering. A denial returns a tool error that directs the model to continue normally. JSON and print modes deny `ask` rather than blocking for unavailable input. Hosts can initialize the extension with `always` for unattended environments such as a cloud platform, or `never` to reject model-requested entry. Use the tool for complex repository work rather than small localized edits or routine one-file fixes. It must be called once, by itself, before repository exploration or mutation. A mutation in the same model turn as a successful entry call cannot trigger handoff; the planning guidance must reach a later model turn first.
35
+ The no-argument tool requests a transition of the current run into planning, so it works while the agent is active. With the default `ask` policy, dialog-capable hosts ask the user before entering. A denial returns a tool error that directs the model to continue normally. JSON and print modes deny `ask` rather than blocking for unavailable input. Hosts can initialize the extension with `allow` for unattended environments such as a cloud platform, or `deny` to reject model-requested entry. Use the tool for complex repository work rather than small localized edits or routine one-file fixes. It must be called once, by itself, before repository exploration or mutation. A mutation in the same model turn as a successful entry call cannot trigger handoff; the planning guidance must reach a later model turn first.
36
36
 
37
37
  The successful entry call and result are orchestration controls. They remain in the stored session transcript but are removed from model context. Current phase guidance is transient and replaced at the phase boundary, so the target receives the useful exploration, task graph, and first valid change with implementation guidance rather than an instruction to keep planning.
38
38
 
39
+ ## Plan review
40
+
41
+ When plan review is active, the planner presents a concise numbered summary after preparing the task graph and asks the user to raise concerns by point number or explicitly approve. Discussion and revisions stay with the planner, which updates the task graph and re-presents the summary as needed. After explicit approval, the planner calls `approve_prewalk_plan`; Prewalk then allows the existing focused-mutation gate to trigger the model handoff. Mutation tools remain available during review, so the non-mutation boundary is guidance enforced rather than a security sandbox.
42
+
43
+ In modes without interactive input, an `ask` review is auto-approved after the plan is presented. Prewalk emits a warning explaining the mode-based auto-approval, then continues through the same focused-mutation handoff.
44
+
39
45
  ## Lifecycle
40
46
 
41
47
  1. The planner explores the relevant repository surface and determines the complete implementation scope.
42
48
  2. When the task tools are available, the planner creates a concise graph of at most nine outcome-oriented tasks with `TaskCreate`, includes concrete validation in their acceptance criteria, links them with `blocked_by` dependencies that encode the execution order, and claims the first ready task with `TaskUpdate`.
43
- 3. When both task tools are active, successful `TaskCreate` and `TaskUpdate`
49
+ 3. When plan review is active, the planner presents a concise numbered summary, discusses concerns, revises the task graph as needed, and waits for explicit approval.
50
+ 4. When both task tools are active, successful `TaskCreate` and `TaskUpdate`
44
51
  calls claiming `in_progress` work open the task gate. The planner then
45
52
  performs one focused successful `edit`, `write`, or `apply_patch`.
46
- 4. At that turn boundary, Felan resolves and switches to the configured target tier or exact model.
47
- 5. The target model completes the existing session task graph and runs the relevant verification.
48
- 6. Once the agent run has fully settled, Felan restores the planner model and thinking level.
53
+ 5. At that turn boundary, Felan resolves and switches to the configured target tier or exact model.
54
+ 6. The target model completes the existing session task graph and runs the relevant verification.
55
+ 7. Once the agent run has fully settled, Felan restores the planner model and thinking level.
49
56
 
50
57
  When both task tools are active, successful `TaskCreate` and `TaskUpdate` calls claiming `in_progress` work are required before a successful mutation qualifies the turn for handoff. Failed or unrelated task calls do not open that gate. If the task tools are unavailable, a successful explicit mutation qualifies directly. Failed mutation calls never qualify. If the planner stops after prose or partial tool progress, Prewalk can append a compact hidden continuation that directs the next tool action without repeating the full planning instructions. It sends at most one continuation per no-progress stretch and three per run.
51
58
 
@@ -73,34 +80,30 @@ restoring its exact original thinking level.
73
80
 
74
81
  `enter_prewalk` is loaded into mutation-capable general and custom child sessions whenever Prewalk is enabled. Each child owns an independent lifecycle and snapshots its own selected model and thinking level. Child handoffs honor the root session's configured model scope. Inspection-only `explore` and `reviewer` children do not receive the entry tool because their mutation tools are intentionally disabled.
75
82
 
76
- ## Flags
83
+ ## Configuration
77
84
 
78
- Prewalk accepts a host initialization default plus Pi's namespaced extension
79
- flags and does not read a configuration file.
85
+ Prewalk declares typed settings. Felan exposes them through
86
+ `extensionConfig.prewalk` in `settings.json`, generated CLI options, `/settings`,
87
+ and Agent Core's programmatic configuration API.
80
88
 
81
89
  ```text
82
90
  --prewalk-target-model <high|medium|low|provider/model-id>
83
91
  --prewalk-target-thinking <off|low|medium|high|xhigh|max>
84
92
  --prewalk-restore-planner
85
93
  --no-prewalk-restore-planner
86
- --prewalk-entry-approval <ask|always|never>
94
+ --prewalk-entry-approval <ask|allow|deny>
95
+ --prewalk-plan-review <inherit|ask|skip>
87
96
  ```
88
97
 
89
- `prewalk-target-model` defaults to `low` and `prewalk-target-thinking` defaults
90
- to exact `medium`. Tier selection uses the authenticated models allowed by the
91
- current session, preferring the planner's provider and model family. An exact
92
- `provider/model-id` overrides tier selection but must remain inside a nonempty
93
- session model scope. `prewalk-restore-planner` defaults to `true`.
94
- `prewalk-entry-approval` defaults to the extension initialization policy, which
95
- is `ask` unless the host supplies another value. The flag overrides that host
96
- default. This policy applies only to model-called `enter_prewalk`; `/prewalk`
97
- is already explicit user intent.
98
-
99
- Host initialization is validated immediately: passing an `entryApproval`
100
- value other than `ask`, `always`, or `never` makes
101
- `createPrewalkExtension()` throw during extension construction. Invalid
102
- `--prewalk-entry-approval` flag values follow the normal flag behavior instead:
103
- Prewalk reports a warning and falls back to the host initialization defaults.
98
+ `targetModel` defaults to `low`, `targetThinking` defaults to exact `medium`,
99
+ `restorePlanner` defaults to `true`, `entryApproval` defaults to `ask`, and
100
+ `planReview` defaults to `inherit`. `inherit` resolves to `ask` when
101
+ `entryApproval` is `ask`, and to `skip` otherwise. An explicit `ask` reviews
102
+ every Prewalk run, including `/prewalk`; `skip` preserves the automatic planning
103
+ and focused-mutation flow.
104
+ The local CLI equivalent is `felan --prewalk-entry-approval allow`. This policy
105
+ applies only to model-called `enter_prewalk`; `/prewalk` is already explicit
106
+ user intent.
104
107
 
105
108
  ## Failure behavior
106
109
 
@@ -112,6 +115,8 @@ Prewalk reports a warning and falls back to the host initialization defaults.
112
115
  - A failed planner restoration clears Prewalk, reports the failure once, and keeps the current model.
113
116
  - A manual model change cancels Prewalk without restoring over the user's selection.
114
117
  - Repeated entry calls do not replace the active run or its planner snapshot.
118
+ - Plan approval calls outside an active review are rejected without changing the run.
119
+ - A successful mutation before required plan approval does not trigger handoff; Prewalk relies on planner guidance rather than disabling mutation tools.
115
120
  - Exit requests during active target inference restore only after the run settles.
116
121
  - Session quit, reload, replacement, or fork while the target is active attempts planner restoration as a graceful shutdown backstop.
117
122
  - Reaching the automatic continuation limit lets the run settle normally.
@@ -123,20 +128,27 @@ This package adapts the MIT-licensed `packages/pi-prewalk` implementation from `
123
128
  ## Composition and package boundary
124
129
 
125
130
  ```ts
126
- import prewalkExtension, { createPrewalkExtension } from '@felan-ai/ext-prewalk';
131
+ import { configureExtension } from '@felan-ai/agent-core';
132
+ import prewalkExtension, { PREWALK_CONFIG } from '@felan-ai/ext-prewalk';
127
133
 
128
134
  const extension = prewalkExtension;
129
- const cloudExtension = createPrewalkExtension({ entryApproval: 'always' });
135
+ const cloudConfig = configureExtension(PREWALK_CONFIG, {
136
+ entryApproval: 'allow',
137
+ planReview: 'skip',
138
+ }, 'cloud runtime');
130
139
  ```
131
140
 
141
+ Pass `cloudConfig` through Agent Core's `extensionConfigOverrides` when composing
142
+ the cloud session.
143
+
132
144
  The extension owns the same-session state machine, explicit mutation
133
145
  qualification, stable-position transient planning/implementation guidance,
134
146
  target selection, and restoration lifecycle. Agent Core supplies model tiers and the host supplies
135
147
  authenticated model scope, session lifecycle, and active tools. Prewalk does not
136
148
  inspect or execute the task graph beyond the successful TaskCreate/TaskUpdate
137
149
  handoff gate described above. Entry approval controls only whether a model may
138
- start Prewalk; it is not a sandbox, non-mutating plan mode, or approval
139
- checkpoint before edits.
150
+ start Prewalk. Plan review is a conversational approval checkpoint, not a
151
+ sandbox or a tool-level mutation restriction.
140
152
 
141
153
  The package requires compatible Agent Core and Tasks peers plus an explicit
142
154
  `edit`, `write`, or Codex `apply_patch` tool in the composed session.
package/dist/index.d.ts CHANGED
@@ -1,9 +1,14 @@
1
1
  import { type FelanExtension } from '@felan-ai/agent-core';
2
- export type PrewalkEntryApprovalPolicy = 'ask' | 'always' | 'never';
3
- export interface PrewalkExtensionOptions {
4
- readonly entryApproval?: PrewalkEntryApprovalPolicy;
5
- }
6
- export declare function createPrewalkExtension(options?: PrewalkExtensionOptions): FelanExtension;
2
+ export type PrewalkEntryApprovalPolicy = 'ask' | 'allow' | 'deny';
3
+ export type PrewalkPlanReviewPolicy = 'inherit' | 'ask' | 'skip';
4
+ export declare const PREWALK_CONFIG: import("@felan-ai/agent-core").ExtensionConfigDefinition<{
5
+ readonly targetModel: import("@felan-ai/agent-core").ExtensionConfigField<string>;
6
+ readonly targetThinking: import("@felan-ai/agent-core").ExtensionConfigField<"off" | "low" | "medium" | "high" | "xhigh" | "max">;
7
+ readonly restorePlanner: import("@felan-ai/agent-core").ExtensionConfigField<boolean>;
8
+ readonly entryApproval: import("@felan-ai/agent-core").ExtensionConfigField<"ask" | "allow" | "deny">;
9
+ readonly planReview: import("@felan-ai/agent-core").ExtensionConfigField<"ask" | "inherit" | "skip">;
10
+ }>;
11
+ export declare const createPrewalkExtension: () => FelanExtension;
7
12
  declare const prewalkExtension: FelanExtension;
8
13
  export default prewalkExtension;
9
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAWL,KAAK,cAAc,EAEpB,MAAM,sBAAsB,CAAC;AAgC9B,MAAM,MAAM,0BAA0B,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEpE,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,0BAA0B,CAAC;CACrD;AAsDD,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,uBAA4B,GACpC,cAAc,CAUhB;AAw2BD,QAAA,MAAM,gBAAgB,gBAA2B,CAAC;AAElD,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAcL,KAAK,cAAc,EAEpB,MAAM,sBAAsB,CAAC;AAsC9B,MAAM,MAAM,0BAA0B,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AAClE,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC;AACjE,eAAO,MAAM,cAAc;;;;;;EAoBzB,CAAC;AAysBH,eAAO,MAAM,sBAAsB,QAAO,cAAiC,CAAC;AAiO5E,QAAA,MAAM,gBAAgB,gBAA2B,CAAC;AAIlD,eAAe,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -1,59 +1,40 @@
1
- import { clampThinkingLevel, isFelanThinkingLevel, formatModelReference, isModelTier, parseModelReference, selectModelForTier, } from '@felan-ai/agent-core';
1
+ import { associateExtensionConfig, configField, defineExtensionConfig, clampThinkingLevel, isFelanThinkingLevel, formatModelReference, isModelTier, parseModelReference, selectModelForTier, } from '@felan-ai/agent-core';
2
2
  import { Type } from 'typebox';
3
- import { CONTINUATION_INSTRUCTION, CONTINUATION_MESSAGE_TYPE, CONTROL_MESSAGE_PREFIX, IMPLEMENTATION_MESSAGE_TYPE, PLANNING_INSTRUCTION, PLANNING_MESSAGE_TYPE, VERIFICATION_INSTRUCTION, } from './prompts.js';
3
+ import { CONTINUATION_INSTRUCTION, CONTINUATION_MESSAGE_TYPE, CONTROL_MESSAGE_PREFIX, IMPLEMENTATION_MESSAGE_TYPE, PLAN_APPROVED_INSTRUCTION, PLAN_APPROVED_MESSAGE_TYPE, PLAN_REVIEW_INSTRUCTION, PLAN_REVIEW_MESSAGE_TYPE, PLAN_REVIEW_PLANNING_INSTRUCTION, PLANNING_INSTRUCTION, PLANNING_MESSAGE_TYPE, VERIFICATION_INSTRUCTION, } from './prompts.js';
4
4
  import { beginTurn, createRunState, recordToolCall, reduceTurn, validateArmingTools, } from './state.js';
5
- const DEFAULT_CONFIG = {
6
- targetModel: 'low',
7
- targetThinking: 'medium',
8
- restorePlanner: true,
9
- entryApproval: 'ask',
10
- };
11
- const TARGET_MODEL_FLAG = 'prewalk-target-model';
12
- const TARGET_THINKING_FLAG = 'prewalk-target-thinking';
13
- const RESTORE_PLANNER_FLAG = 'prewalk-restore-planner';
14
- const ENTRY_APPROVAL_FLAG = 'prewalk-entry-approval';
5
+ export const PREWALK_CONFIG = defineExtensionConfig({
6
+ id: 'prewalk',
7
+ title: 'Prewalk',
8
+ fields: {
9
+ targetModel: configField.string({
10
+ default: 'low',
11
+ description: 'Implementation model tier or exact model',
12
+ validate: (value) => parseTargetModel(String(value)) ? undefined : 'must be a model tier or provider/model-id',
13
+ }),
14
+ targetThinking: configField.enum(['off', 'low', 'medium', 'high', 'xhigh', 'max'], {
15
+ default: 'medium', description: 'Implementation thinking level',
16
+ }),
17
+ restorePlanner: configField.boolean({ default: true, description: 'Restore the planner after implementation' }),
18
+ entryApproval: configField.enum(['ask', 'allow', 'deny'], {
19
+ default: 'ask', description: 'Approval policy for model-entered Prewalk',
20
+ }),
21
+ planReview: configField.enum(['inherit', 'ask', 'skip'], {
22
+ default: 'inherit', description: 'Plan review policy; inherit asks when entry approval asks',
23
+ }),
24
+ },
25
+ });
15
26
  const HEADLESS_TASK_MESSAGE_TYPE = 'pi-prewalk-task';
16
27
  const ENTER_PREWALK_TOOL = 'enter_prewalk';
28
+ const APPROVE_PREWALK_PLAN_TOOL = 'approve_prewalk_plan';
17
29
  const EnterPrewalkParams = Type.Object({}, { additionalProperties: false });
18
- export function createPrewalkExtension(options = {}) {
19
- if (options.entryApproval !== undefined && !isEntryApprovalPolicy(options.entryApproval)) {
20
- throw new Error('Prewalk entryApproval must be ask, always, or never');
21
- }
22
- const defaultConfig = {
23
- ...DEFAULT_CONFIG,
24
- ...(options.entryApproval === undefined ? {} : { entryApproval: options.entryApproval }),
25
- };
26
- return (pi) => registerPrewalk(pi, defaultConfig);
27
- }
28
- function registerPrewalk(pi, defaultConfig) {
30
+ const ApprovePrewalkPlanParams = Type.Object({}, { additionalProperties: false });
31
+ function registerPrewalk(pi) {
29
32
  pi.registerCapability({
30
33
  id: 'prewalk',
31
34
  instructions: 'Use Prewalk for complex repository work that benefits from substantial exploration, coordinated multi-file changes, dependency-aware planning, or broad verification. Do not use it for small localized edits, routine one-file fixes, read-only requests, or when injected planning or implementation guidance is already present. When a complex file-changing task begins without that guidance, call enter_prewalk as the first and only tool call before repository exploration or mutation. Depending on the configured entry policy, the tool may ask the user for approval or decline model-requested entry; if declined, continue on the regular path. The tool is available in the root session and mutation-capable subagents. During an active run, follow the injected planning, task-tracking, implementation, and verification guidance. The user can enter explicitly with /prewalk or exit with /prewalk exit (or /prewalk off).',
32
35
  });
33
- pi.registerFlag(TARGET_MODEL_FLAG, {
34
- description: 'Model tier or exact provider/model-id used to implement a planned Prewalk task',
35
- type: 'string',
36
- default: DEFAULT_CONFIG.targetModel,
37
- });
38
- pi.registerFlag(TARGET_THINKING_FLAG, {
39
- description: 'Thinking level used by the Prewalk implementation model',
40
- type: 'string',
41
- default: DEFAULT_CONFIG.targetThinking,
42
- });
43
- pi.registerFlag(RESTORE_PLANNER_FLAG, {
44
- description: 'Restore the planner model and thinking level after implementation',
45
- type: 'boolean',
46
- default: DEFAULT_CONFIG.restorePlanner,
47
- });
48
- pi.registerFlag(ENTRY_APPROVAL_FLAG, {
49
- description: 'Approval policy for model-called Prewalk entry: ask, always, or never',
50
- type: 'string',
51
- default: defaultConfig.entryApproval,
52
- });
53
- let loadedConfig = { config: { ...defaultConfig } };
54
- let config = loadedConfig.config;
36
+ let config = pi.config;
55
37
  let targetModel = parseTargetModel(config.targetModel);
56
- let configWarningShown = false;
57
38
  let state = { phase: 'idle' };
58
39
  let plannerSnapshot;
59
40
  let exitRequested = false;
@@ -63,8 +44,7 @@ function registerPrewalk(pi, defaultConfig) {
63
44
  let phaseContextAnchor;
64
45
  let internalThinkingChange = false;
65
46
  function refreshConfig() {
66
- loadedConfig = loadConfig(pi, defaultConfig);
67
- config = loadedConfig.config;
47
+ config = pi.config;
68
48
  targetModel = parseTargetModel(config.targetModel);
69
49
  }
70
50
  function notify(ctx, message, type = 'info') {
@@ -75,12 +55,7 @@ function registerPrewalk(pi, defaultConfig) {
75
55
  console.error(message);
76
56
  }
77
57
  }
78
- function publishConfigWarning(ctx) {
79
- if (!loadedConfig.warning || configWarningShown)
80
- return;
81
- configWarningShown = true;
82
- notify(ctx, `Prewalk flag warning: ${loadedConfig.warning} Using defaults.`, 'warning');
83
- }
58
+ function publishConfigWarning(_ctx) { }
84
59
  function updateStatus(ctx) {
85
60
  if (state.phase === 'idle') {
86
61
  ctx.ui.setStatus('prewalk', undefined);
@@ -97,7 +72,7 @@ function registerPrewalk(pi, defaultConfig) {
97
72
  publishConfigWarning(ctx);
98
73
  const planner = plannerSnapshot ? ` | planner ${plannerSnapshot.modelKey}` : '';
99
74
  const exit = exitRequested ? ' | exit pending' : '';
100
- notify(ctx, `Prewalk: ${state.phase} | target ${targetModel.key} | target thinking ${config.targetThinking} | restore planner ${config.restorePlanner ? 'on' : 'off'} | model entry ${config.entryApproval}${planner}${exit}`);
75
+ notify(ctx, `Prewalk: ${state.phase} | target ${targetModel.key} | target thinking ${config.targetThinking} | restore planner ${config.restorePlanner ? 'on' : 'off'} | model entry ${config.entryApproval} | plan review ${config.planReview} (${effectivePlanReview(config)})${planner}${exit}`);
101
76
  }
102
77
  function clearAutomation(ctx) {
103
78
  state = { phase: 'idle' };
@@ -127,7 +102,10 @@ function registerPrewalk(pi, defaultConfig) {
127
102
  }
128
103
  state = { phase: 'armed' };
129
104
  updateStatus(ctx);
130
- notify(ctx, `Prewalk armed. The next task will plan, initialize Tasks when both task tools are active, make one mutation, then hand off to ${targetModel.key} at ${config.targetThinking} thinking.`);
105
+ const planningSteps = effectivePlanReview(config) === 'ask'
106
+ ? 'initialize Tasks when both task tools are active, review the plan with you, make one mutation'
107
+ : 'initialize Tasks when both task tools are active, make one mutation';
108
+ notify(ctx, `Prewalk armed. The next task will plan, ${planningSteps}, then hand off to ${targetModel.key} at ${config.targetThinking} thinking.`);
131
109
  return true;
132
110
  }
133
111
  function startRun(ctx, handoffArmed = true) {
@@ -148,6 +126,7 @@ function registerPrewalk(pi, defaultConfig) {
148
126
  run: createRunState({
149
127
  handoffArmed,
150
128
  taskGateRequired: activeTools.includes('TaskCreate') && activeTools.includes('TaskUpdate'),
129
+ reviewRequired: effectivePlanReview(config) === 'ask',
151
130
  }),
152
131
  };
153
132
  updateStatus(ctx);
@@ -375,9 +354,9 @@ function registerPrewalk(pi, defaultConfig) {
375
354
  notify(ctx, 'Prewalk is off.');
376
355
  }
377
356
  async function approveModelEntry(ctx) {
378
- if (config.entryApproval === 'always')
357
+ if (config.entryApproval === 'allow')
379
358
  return { approved: true };
380
- if (config.entryApproval === 'never') {
359
+ if (config.entryApproval === 'deny') {
381
360
  return {
382
361
  approved: false,
383
362
  reason: 'Model-requested Prewalk entry is disabled. Continue the current task without Prewalk.',
@@ -397,6 +376,24 @@ function registerPrewalk(pi, defaultConfig) {
397
376
  reason: 'The user declined Prewalk entry. Continue the current task without Prewalk.',
398
377
  };
399
378
  }
379
+ function approvePlan(ctx) {
380
+ if (state.phase !== 'reviewing' || !state.run)
381
+ return false;
382
+ state = {
383
+ phase: 'planning',
384
+ run: {
385
+ ...state.run,
386
+ mutationCallIds: [],
387
+ taskCreateCallIds: [],
388
+ taskClaimCallIds: [],
389
+ handoffArmed: false,
390
+ reviewApproved: true,
391
+ },
392
+ };
393
+ phaseContextAnchor = undefined;
394
+ updateStatus(ctx);
395
+ return true;
396
+ }
400
397
  pi.registerTool({
401
398
  name: ENTER_PREWALK_TOOL,
402
399
  label: 'Enter Prewalk',
@@ -420,10 +417,13 @@ function registerPrewalk(pi, defaultConfig) {
420
417
  if (!approval.approved)
421
418
  return prewalkToolError(approval.reason, state.phase);
422
419
  startRun(ctx, false);
420
+ const reviewText = effectivePlanReview(config) === 'ask'
421
+ ? ' present the plan for explicit user approval,'
422
+ : '';
423
423
  return {
424
424
  content: [{
425
425
  type: 'text',
426
- text: `Prewalk entered for the current task. Follow the injected planning guidance, initialize Tasks when both task tools are active, keep the task graph concise, and make one focused mutation before the handoff to ${targetModel.key} at ${config.targetThinking} thinking.`,
426
+ text: `Prewalk entered for the current task. Follow the injected planning guidance, initialize Tasks when both task tools are active, keep the task graph concise,${reviewText} and make one focused mutation before the handoff to ${targetModel.key} at ${config.targetThinking} thinking.`,
427
427
  }],
428
428
  details: {
429
429
  phase: 'planning',
@@ -433,6 +433,26 @@ function registerPrewalk(pi, defaultConfig) {
433
433
  };
434
434
  },
435
435
  });
436
+ pi.registerTool({
437
+ name: APPROVE_PREWALK_PLAN_TOOL,
438
+ label: 'Approve Prewalk Plan',
439
+ description: 'Record explicit user approval of the plan currently under Prewalk review. Call only after the user explicitly approves, and call it as the only tool in the response.',
440
+ promptSnippet: 'Approve the reviewed Prewalk plan after explicit user approval',
441
+ executionMode: 'sequential',
442
+ parameters: ApprovePrewalkPlanParams,
443
+ async execute(_toolCallId, _params, _signal, _onUpdate, ctx) {
444
+ if (!approvePlan(ctx)) {
445
+ return prewalkToolError('No Prewalk plan is awaiting approval. Continue the current phase without calling approve_prewalk_plan.', state.phase);
446
+ }
447
+ return {
448
+ content: [{
449
+ type: 'text',
450
+ text: 'The Prewalk plan is approved. On the next model turn, make one focused mutation that establishes the implementation direction before handoff.',
451
+ }],
452
+ details: { phase: 'planning', approved: true },
453
+ };
454
+ },
455
+ });
436
456
  pi.registerCommand('prewalk', {
437
457
  description: 'Enter Prewalk, inspect status, or exit its model-routing lifecycle',
438
458
  handler: async (args, ctx) => {
@@ -476,7 +496,7 @@ function registerPrewalk(pi, defaultConfig) {
476
496
  beginRun(ctx);
477
497
  });
478
498
  pi.on('context', (event) => {
479
- const result = buildContextMessages(event.messages, state.phase, phaseContextAnchor);
499
+ const result = buildContextMessages(event.messages, state, phaseContextAnchor);
480
500
  phaseContextAnchor = result.anchor;
481
501
  return { messages: result.messages };
482
502
  });
@@ -496,11 +516,28 @@ function registerPrewalk(pi, defaultConfig) {
496
516
  pi.on('turn_end', async (event, ctx) => {
497
517
  if (state.phase !== 'planning' || !state.run)
498
518
  return;
519
+ const textOnlyCompletion = isTextOnlyCompletion(event.message);
499
520
  const decision = reduceTurn(state.run, event.toolResults, {
500
- allowContinuation: isTextOnlyCompletion(event.message),
521
+ allowContinuation: textOnlyCompletion,
522
+ planPresented: textOnlyCompletion,
501
523
  });
502
524
  state = { phase: 'planning', run: decision.state };
503
525
  updateStatus(ctx);
526
+ if (decision.shouldReview) {
527
+ state = { phase: 'reviewing', run: decision.state };
528
+ phaseContextAnchor = undefined;
529
+ updateStatus(ctx);
530
+ if (!ctx.hasUI) {
531
+ notify(ctx, `Prewalk auto-approved plan review because interactive input is unavailable in ${ctx.mode} mode.`, 'warning');
532
+ approvePlan(ctx);
533
+ pi.sendMessage({
534
+ customType: PLAN_APPROVED_MESSAGE_TYPE,
535
+ content: PLAN_APPROVED_INSTRUCTION,
536
+ display: false,
537
+ }, { deliverAs: 'followUp' });
538
+ }
539
+ return;
540
+ }
504
541
  if (decision.shouldHandoff) {
505
542
  const handoff = switchToTarget(ctx).finally(() => {
506
543
  if (handoffPromise === handoff)
@@ -575,6 +612,8 @@ function registerPrewalk(pi, defaultConfig) {
575
612
  }
576
613
  return;
577
614
  }
615
+ if (state.phase === 'reviewing')
616
+ return;
578
617
  if (state.phase === 'planning') {
579
618
  clearAutomation(ctx);
580
619
  notify(ctx, 'Prewalk ended before a qualifying first mutation.', 'warning');
@@ -592,8 +631,10 @@ function registerPrewalk(pi, defaultConfig) {
592
631
  }
593
632
  });
594
633
  }
595
- function buildContextMessages(messages, phase, currentAnchor) {
596
- const successfulEntries = successfulEntryCallIds(messages);
634
+ export const createPrewalkExtension = () => registerPrewalk;
635
+ function buildContextMessages(messages, state, currentAnchor) {
636
+ const { phase } = state;
637
+ const successfulControls = successfulControlCallIds(messages);
597
638
  const filtered = [];
598
639
  for (const message of structuredClone(messages)) {
599
640
  if (isControlMessage(message)) {
@@ -601,21 +642,29 @@ function buildContextMessages(messages, phase, currentAnchor) {
601
642
  filtered.push(message);
602
643
  continue;
603
644
  }
604
- if (isSuccessfulEntryResult(message, successfulEntries))
645
+ if (isSuccessfulControlResult(message, successfulControls))
605
646
  continue;
606
- const stripped = stripSuccessfulEntryCall(message, successfulEntries);
647
+ const stripped = stripSuccessfulControlCalls(message, successfulControls);
607
648
  if (stripped !== undefined)
608
649
  filtered.push(stripped);
609
650
  }
610
- const guidedPhase = phase === 'planning' || phase === 'implementing' ? phase : undefined;
651
+ const guidedPhase = phase === 'planning' || phase === 'reviewing' || phase === 'implementing'
652
+ ? phase
653
+ : undefined;
611
654
  const instruction = guidedPhase === 'planning'
612
- ? { customType: PLANNING_MESSAGE_TYPE, content: PLANNING_INSTRUCTION }
613
- : guidedPhase === 'implementing'
614
- ? {
615
- customType: IMPLEMENTATION_MESSAGE_TYPE,
616
- content: VERIFICATION_INSTRUCTION,
617
- }
618
- : undefined;
655
+ ? state.run?.reviewRequired && !state.run.reviewApproved
656
+ ? { customType: PLAN_REVIEW_MESSAGE_TYPE, content: PLAN_REVIEW_PLANNING_INSTRUCTION }
657
+ : state.run?.reviewApproved
658
+ ? { customType: PLAN_APPROVED_MESSAGE_TYPE, content: PLAN_APPROVED_INSTRUCTION }
659
+ : { customType: PLANNING_MESSAGE_TYPE, content: PLANNING_INSTRUCTION }
660
+ : guidedPhase === 'reviewing'
661
+ ? { customType: PLAN_REVIEW_MESSAGE_TYPE, content: PLAN_REVIEW_INSTRUCTION }
662
+ : guidedPhase === 'implementing'
663
+ ? {
664
+ customType: IMPLEMENTATION_MESSAGE_TYPE,
665
+ content: VERIFICATION_INSTRUCTION,
666
+ }
667
+ : undefined;
619
668
  if (guidedPhase === undefined || instruction === undefined)
620
669
  return { messages: filtered };
621
670
  const { anchor, index } = resolvePhaseContextAnchor(filtered, guidedPhase, currentAnchor);
@@ -684,41 +733,43 @@ function isCurrentContinuationMessage(message) {
684
733
  && message.customType === CONTINUATION_MESSAGE_TYPE
685
734
  && message.content === CONTINUATION_INSTRUCTION;
686
735
  }
687
- function successfulEntryCallIds(messages) {
688
- const callIds = new Set();
736
+ function successfulControlCallIds(messages) {
737
+ const callIds = new Map();
689
738
  for (const message of messages) {
690
739
  if (isRecord(message)
691
740
  && message.role === 'toolResult'
692
- && message.toolName === ENTER_PREWALK_TOOL
741
+ && (message.toolName === ENTER_PREWALK_TOOL || message.toolName === APPROVE_PREWALK_PLAN_TOOL)
693
742
  && message.isError !== true
694
743
  && typeof message.toolCallId === 'string') {
695
- callIds.add(message.toolCallId);
744
+ const ids = callIds.get(message.toolName) ?? new Set();
745
+ ids.add(message.toolCallId);
746
+ callIds.set(message.toolName, ids);
696
747
  }
697
748
  }
698
749
  return callIds;
699
750
  }
700
- function isSuccessfulEntryResult(message, callIds) {
751
+ function isSuccessfulControlResult(message, callIds) {
701
752
  return isRecord(message)
702
753
  && message.role === 'toolResult'
703
- && message.toolName === ENTER_PREWALK_TOOL
754
+ && typeof message.toolName === 'string'
704
755
  && typeof message.toolCallId === 'string'
705
- && callIds.has(message.toolCallId);
756
+ && callIds.get(message.toolName)?.has(message.toolCallId) === true;
706
757
  }
707
- function stripSuccessfulEntryCall(message, callIds) {
758
+ function stripSuccessfulControlCalls(message, callIds) {
708
759
  if (!isRecord(message) || message.role !== 'assistant' || !Array.isArray(message.content)) {
709
760
  return message;
710
761
  }
711
- const isEntryCall = (item) => (isRecord(item)
762
+ const isControlCall = (item) => (isRecord(item)
712
763
  && item.type === 'toolCall'
713
- && item.name === ENTER_PREWALK_TOOL
764
+ && typeof item.name === 'string'
714
765
  && typeof item.id === 'string'
715
- && callIds.has(item.id));
716
- if (!message.content.some(isEntryCall))
766
+ && callIds.get(item.name)?.has(item.id) === true);
767
+ if (!message.content.some(isControlCall))
717
768
  return message;
718
- const hasOtherToolCalls = message.content.some((item) => (isRecord(item) && item.type === 'toolCall' && !isEntryCall(item)));
769
+ const hasOtherToolCalls = message.content.some((item) => (isRecord(item) && item.type === 'toolCall' && !isControlCall(item)));
719
770
  if (!hasOtherToolCalls)
720
771
  return undefined;
721
- const content = message.content.filter((item) => !isEntryCall(item));
772
+ const content = message.content.filter((item) => !isControlCall(item));
722
773
  return content.length === 0 ? undefined : { ...message, content };
723
774
  }
724
775
  function modelKey(model) {
@@ -736,6 +787,11 @@ function parseTargetModel(value) {
736
787
  const model = parseModelReference(normalized);
737
788
  return model ? { kind: 'model', model, key: formatModelReference(model) } : undefined;
738
789
  }
790
+ function effectivePlanReview(config) {
791
+ if (config.planReview !== 'inherit')
792
+ return config.planReview;
793
+ return config.entryApproval === 'ask' ? 'ask' : 'skip';
794
+ }
739
795
  function effectiveThinkingLevel(model, targetThinking) {
740
796
  return clampPiThinkingLevel(model, targetThinking);
741
797
  }
@@ -744,39 +800,6 @@ function clampPiThinkingLevel(model, level) {
744
800
  return 'off';
745
801
  return clampThinkingLevel(model, level);
746
802
  }
747
- function loadConfig(pi, defaultConfig) {
748
- const targetModel = pi.getFlag(TARGET_MODEL_FLAG);
749
- const targetThinking = pi.getFlag(TARGET_THINKING_FLAG);
750
- const restorePlanner = pi.getFlag(RESTORE_PLANNER_FLAG);
751
- const entryApproval = pi.getFlag(ENTRY_APPROVAL_FLAG);
752
- const parsedTarget = typeof targetModel === 'string' ? parseTargetModel(targetModel) : undefined;
753
- if (!parsedTarget) {
754
- return invalidConfig(defaultConfig, `${TARGET_MODEL_FLAG} must be high, medium, low, or an exact provider/model-id`);
755
- }
756
- if (typeof targetThinking !== 'string' || !isFelanThinkingLevel(targetThinking)) {
757
- return invalidConfig(defaultConfig, `${TARGET_THINKING_FLAG} must be off, low, medium, high, xhigh, or max`);
758
- }
759
- if (typeof restorePlanner !== 'boolean') {
760
- return invalidConfig(defaultConfig, `${RESTORE_PLANNER_FLAG} must be a boolean`);
761
- }
762
- if (!isEntryApprovalPolicy(entryApproval)) {
763
- return invalidConfig(defaultConfig, `${ENTRY_APPROVAL_FLAG} must be ask, always, or never`);
764
- }
765
- return {
766
- config: {
767
- targetModel: parsedTarget.key,
768
- targetThinking,
769
- restorePlanner,
770
- entryApproval,
771
- },
772
- };
773
- }
774
- function invalidConfig(defaultConfig, reason) {
775
- return { config: { ...defaultConfig }, warning: `${reason}.` };
776
- }
777
- function isEntryApprovalPolicy(value) {
778
- return value === 'ask' || value === 'always' || value === 'never';
779
- }
780
803
  function errorMessage(error) {
781
804
  return error instanceof Error ? error.message : String(error);
782
805
  }
@@ -791,5 +814,6 @@ function isRecord(value) {
791
814
  return typeof value === 'object' && value !== null;
792
815
  }
793
816
  const prewalkExtension = createPrewalkExtension();
817
+ associateExtensionConfig(prewalkExtension, PREWALK_CONFIG);
794
818
  export default prewalkExtension;
795
819
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/prompts.d.ts CHANGED
@@ -1,9 +1,14 @@
1
1
  export declare const CONTROL_MESSAGE_PREFIX = "pi-prewalk:";
2
2
  export declare const PLANNING_MESSAGE_TYPE = "pi-prewalk:planning";
3
3
  export declare const IMPLEMENTATION_MESSAGE_TYPE = "pi-prewalk:implementation";
4
+ export declare const PLAN_REVIEW_MESSAGE_TYPE = "pi-prewalk:plan-review";
5
+ export declare const PLAN_APPROVED_MESSAGE_TYPE = "pi-prewalk:plan-approved";
4
6
  export declare const CONTINUATION_MESSAGE_TYPE = "pi-prewalk:continuation";
5
7
  export declare const MAX_AUTOMATIC_CONTINUATIONS = 3;
6
8
  export declare const CONTINUATION_INSTRUCTION = "Continue from the existing findings and task progress without repeating prior analysis. Take the next required tool action and proceed toward the focused mutation.";
7
9
  export declare const PLANNING_INSTRUCTION = "Explore the repository thoroughly and determine the complete work required for the user's request.\n\nFollow this order:\n1. Inspect the relevant source, tests, configuration, documentation, and constraints.\n2. Determine the full implementation scope, affected files and symbols, risks, and verification required.\n3. Use TaskCreate to record a concise graph of no more than 9 outcome-oriented tasks. Put concrete validation in each task's acceptance criteria, using a dedicated validation task only when it covers multiple changes. Link tasks with blocked_by dependencies that encode the required implementation and validation order, so the next ready task is unambiguous at each step.\n4. Use TaskUpdate to claim the first ready task by setting it in_progress.\n5. Start implementing immediately with one focused change. Work through ready tasks in dependency order, keep task statuses current, record verified results when completing them, and continue until the request is complete.\n\nKeep the implementation focused on the requested scope and revise the task graph when repository evidence changes the plan.";
10
+ export declare const PLAN_REVIEW_PLANNING_INSTRUCTION = "Explore the repository thoroughly and determine the complete work required for the user's request without modifying the repository.\n\nFollow this order:\n1. Inspect the relevant source, tests, configuration, documentation, and constraints.\n2. Determine the full implementation scope, affected files and symbols, risks, and verification required.\n3. Use TaskCreate to record a concise graph of no more than 9 outcome-oriented tasks. Put concrete validation in each task's acceptance criteria, using a dedicated validation task only when it covers multiple changes. Link tasks with blocked_by dependencies that encode the required implementation and validation order, so the next ready task is unambiguous at each step.\n4. Use TaskUpdate to claim the first ready task by setting it in_progress.\n5. Present a concise numbered summary of the plan rather than every implementation detail. Ask the user to raise concerns or questions by point number, or explicitly approve the plan. Do not edit files or otherwise mutate the repository before approval.\n\nKeep the plan focused on the requested scope and revise the task graph when repository evidence changes the plan.";
11
+ export declare const PLAN_REVIEW_INSTRUCTION = "Discuss the proposed plan with the user without modifying the repository. Address concerns by numbered plan point, update the session task graph when the agreed plan changes, and then present a refreshed concise numbered summary. Ask the user to raise further concerns or explicitly approve the plan. Call approve_prewalk_plan only after the user has explicitly approved, and call it as the only tool in that response.";
12
+ export declare const PLAN_APPROVED_INSTRUCTION = "The user approved the existing plan. Continue from the claimed task and make one focused repository mutation that establishes the implementation direction. Keep the task graph current and proceed with the approved scope.";
8
13
  export declare const VERIFICATION_INSTRUCTION = "Continue implementing the existing session task graph. Honor task dependencies, claim ready work with TaskUpdate, keep statuses current, and complete every remaining task with a verified result. Keep the changes limited to the requested scope, run the full relevant test module or suite, resolve failures, and continue until every task is complete.";
9
14
  //# sourceMappingURL=prompts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,gBAAgB,CAAC;AACpD,eAAO,MAAM,qBAAqB,wBAAsC,CAAC;AACzE,eAAO,MAAM,2BAA2B,8BAA4C,CAAC;AACrF,eAAO,MAAM,yBAAyB,4BAA0C,CAAC;AACjF,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,eAAO,MAAM,wBAAwB,wKAAwK,CAAC;AAE9M,eAAO,MAAM,oBAAoB,+lCAS2F,CAAC;AAE7H,eAAO,MAAM,wBAAwB,iWAAiW,CAAC"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,gBAAgB,CAAC;AACpD,eAAO,MAAM,qBAAqB,wBAAsC,CAAC;AACzE,eAAO,MAAM,2BAA2B,8BAA4C,CAAC;AACrF,eAAO,MAAM,wBAAwB,2BAAyC,CAAC;AAC/E,eAAO,MAAM,0BAA0B,6BAA2C,CAAC;AACnF,eAAO,MAAM,yBAAyB,4BAA0C,CAAC;AACjF,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,eAAO,MAAM,wBAAwB,wKAAwK,CAAC;AAE9M,eAAO,MAAM,oBAAoB,+lCAS2F,CAAC;AAE7H,eAAO,MAAM,gCAAgC,qpCASqE,CAAC;AAEnH,eAAO,MAAM,uBAAuB,uaAAua,CAAC;AAE5c,eAAO,MAAM,yBAAyB,iOAAiO,CAAC;AAExQ,eAAO,MAAM,wBAAwB,iWAAiW,CAAC"}
package/dist/prompts.js CHANGED
@@ -1,6 +1,8 @@
1
1
  export const CONTROL_MESSAGE_PREFIX = 'pi-prewalk:';
2
2
  export const PLANNING_MESSAGE_TYPE = `${CONTROL_MESSAGE_PREFIX}planning`;
3
3
  export const IMPLEMENTATION_MESSAGE_TYPE = `${CONTROL_MESSAGE_PREFIX}implementation`;
4
+ export const PLAN_REVIEW_MESSAGE_TYPE = `${CONTROL_MESSAGE_PREFIX}plan-review`;
5
+ export const PLAN_APPROVED_MESSAGE_TYPE = `${CONTROL_MESSAGE_PREFIX}plan-approved`;
4
6
  export const CONTINUATION_MESSAGE_TYPE = `${CONTROL_MESSAGE_PREFIX}continuation`;
5
7
  export const MAX_AUTOMATIC_CONTINUATIONS = 3;
6
8
  export const CONTINUATION_INSTRUCTION = `Continue from the existing findings and task progress without repeating prior analysis. Take the next required tool action and proceed toward the focused mutation.`;
@@ -14,5 +16,17 @@ Follow this order:
14
16
  5. Start implementing immediately with one focused change. Work through ready tasks in dependency order, keep task statuses current, record verified results when completing them, and continue until the request is complete.
15
17
 
16
18
  Keep the implementation focused on the requested scope and revise the task graph when repository evidence changes the plan.`;
19
+ export const PLAN_REVIEW_PLANNING_INSTRUCTION = `Explore the repository thoroughly and determine the complete work required for the user's request without modifying the repository.
20
+
21
+ Follow this order:
22
+ 1. Inspect the relevant source, tests, configuration, documentation, and constraints.
23
+ 2. Determine the full implementation scope, affected files and symbols, risks, and verification required.
24
+ 3. Use TaskCreate to record a concise graph of no more than 9 outcome-oriented tasks. Put concrete validation in each task's acceptance criteria, using a dedicated validation task only when it covers multiple changes. Link tasks with blocked_by dependencies that encode the required implementation and validation order, so the next ready task is unambiguous at each step.
25
+ 4. Use TaskUpdate to claim the first ready task by setting it in_progress.
26
+ 5. Present a concise numbered summary of the plan rather than every implementation detail. Ask the user to raise concerns or questions by point number, or explicitly approve the plan. Do not edit files or otherwise mutate the repository before approval.
27
+
28
+ Keep the plan focused on the requested scope and revise the task graph when repository evidence changes the plan.`;
29
+ export const PLAN_REVIEW_INSTRUCTION = `Discuss the proposed plan with the user without modifying the repository. Address concerns by numbered plan point, update the session task graph when the agreed plan changes, and then present a refreshed concise numbered summary. Ask the user to raise further concerns or explicitly approve the plan. Call approve_prewalk_plan only after the user has explicitly approved, and call it as the only tool in that response.`;
30
+ export const PLAN_APPROVED_INSTRUCTION = `The user approved the existing plan. Continue from the claimed task and make one focused repository mutation that establishes the implementation direction. Keep the task graph current and proceed with the approved scope.`;
17
31
  export const VERIFICATION_INSTRUCTION = `Continue implementing the existing session task graph. Honor task dependencies, claim ready work with TaskUpdate, keep statuses current, and complete every remaining task with a verified result. Keep the changes limited to the requested scope, run the full relevant test module or suite, resolve failures, and continue until every task is complete.`;
18
32
  //# sourceMappingURL=prompts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAC;AACpD,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,sBAAsB,UAAU,CAAC;AACzE,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,sBAAsB,gBAAgB,CAAC;AACrF,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,sBAAsB,cAAc,CAAC;AACjF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAE7C,MAAM,CAAC,MAAM,wBAAwB,GAAG,qKAAqK,CAAC;AAE9M,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;4HASwF,CAAC;AAE7H,MAAM,CAAC,MAAM,wBAAwB,GAAG,8VAA8V,CAAC"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAAC;AACpD,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,sBAAsB,UAAU,CAAC;AACzE,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,sBAAsB,gBAAgB,CAAC;AACrF,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,sBAAsB,aAAa,CAAC;AAC/E,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAG,sBAAsB,eAAe,CAAC;AACnF,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,sBAAsB,cAAc,CAAC;AACjF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC;AAE7C,MAAM,CAAC,MAAM,wBAAwB,GAAG,qKAAqK,CAAC;AAE9M,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;4HASwF,CAAC;AAE7H,MAAM,CAAC,MAAM,gCAAgC,GAAG;;;;;;;;;kHASkE,CAAC;AAEnH,MAAM,CAAC,MAAM,uBAAuB,GAAG,oaAAoa,CAAC;AAE5c,MAAM,CAAC,MAAM,yBAAyB,GAAG,8NAA8N,CAAC;AAExQ,MAAM,CAAC,MAAM,wBAAwB,GAAG,8VAA8V,CAAC"}
package/dist/state.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export type PrewalkPhase = 'idle' | 'armed' | 'planning' | 'handoff' | 'implementing' | 'restoring';
1
+ export type PrewalkPhase = 'idle' | 'armed' | 'planning' | 'reviewing' | 'handoff' | 'implementing' | 'restoring';
2
2
  export interface PrewalkState {
3
3
  phase: PrewalkPhase;
4
4
  run?: PrewalkRunState;
@@ -14,6 +14,8 @@ export interface PrewalkRunState {
14
14
  continuationCount: number;
15
15
  continuationArmed: boolean;
16
16
  handoffArmed: boolean;
17
+ reviewRequired: boolean;
18
+ reviewApproved: boolean;
17
19
  }
18
20
  export interface ToolCallSummary {
19
21
  toolCallId: string;
@@ -28,6 +30,7 @@ export interface TurnDecision {
28
30
  state: PrewalkRunState;
29
31
  shouldHandoff: boolean;
30
32
  shouldContinue: boolean;
33
+ shouldReview: boolean;
31
34
  }
32
35
  export type ValidationResult = {
33
36
  ok: true;
@@ -40,10 +43,12 @@ export declare function validateArmingTools(activeTools: readonly string[]): Val
40
43
  export declare function createRunState(options?: {
41
44
  handoffArmed?: boolean;
42
45
  taskGateRequired?: boolean;
46
+ reviewRequired?: boolean;
43
47
  }): PrewalkRunState;
44
48
  export declare function beginTurn(state: PrewalkRunState): PrewalkRunState;
45
49
  export declare function recordToolCall(state: PrewalkRunState, call: ToolCallSummary): PrewalkRunState;
46
50
  export declare function reduceTurn(state: PrewalkRunState, results: readonly ToolResultSummary[], options?: {
47
51
  allowContinuation?: boolean;
52
+ planPresented?: boolean;
48
53
  }): TurnDecision;
49
54
  //# sourceMappingURL=state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,GAAG,cAAc,GAAG,WAAW,CAAC;AAEpG,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,CAAC,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,eAAe,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,MAAM,gBAAgB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAI5E,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAA2B,CAAC;AAEhF,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,gBAAgB,CAIpF;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,eAAe,CAcvB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,eAAe,GAAG,eAAe,CAQjE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,GAAG,eAAe,CAkB7F;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,SAAS,iBAAiB,EAAE,EACrC,OAAO,GAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC5C,YAAY,CA2Cd"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,cAAc,GAAG,WAAW,CAAC;AAElH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,YAAY,CAAC;IACpB,GAAG,CAAC,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,eAAe,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,gBAAgB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAI5E,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAA2B,CAAC;AAEhF,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,gBAAgB,CAIpF;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,eAAe,CAgBvB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,eAAe,GAAG,eAAe,CAQjE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,GAAG,eAAe,CAkB7F;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,SAAS,iBAAiB,EAAE,EACrC,OAAO,GAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACrE,YAAY,CAoDd"}
package/dist/state.js CHANGED
@@ -19,6 +19,8 @@ export function createRunState(options = {}) {
19
19
  continuationCount: 0,
20
20
  continuationArmed: true,
21
21
  handoffArmed: options.handoffArmed ?? true,
22
+ reviewRequired: options.reviewRequired ?? false,
23
+ reviewApproved: false,
22
24
  };
23
25
  }
24
26
  export function beginTurn(state) {
@@ -58,11 +60,17 @@ export function reduceTurn(state, results, options = {}) {
58
60
  const taskGraphReady = !state.taskGateRequired || (taskCreateSucceeded && taskClaimSucceeded);
59
61
  const shouldHandoff = state.handoffArmed
60
62
  && taskGraphReady
63
+ && (!state.reviewRequired || state.reviewApproved)
61
64
  && state.mutationCallIds.some((toolCallId) => successfulIds.has(toolCallId));
65
+ const shouldReview = state.reviewRequired
66
+ && !state.reviewApproved
67
+ && taskGraphReady
68
+ && options.planPresented === true;
62
69
  let continuationArmed = results.some((result) => !result.isError) || state.continuationArmed;
63
70
  let continuationCount = state.continuationCount;
64
71
  let shouldContinue = false;
65
72
  if (!shouldHandoff
73
+ && !shouldReview
66
74
  && options.allowContinuation !== false
67
75
  && results.length === 0
68
76
  && continuationArmed
@@ -83,9 +91,12 @@ export function reduceTurn(state, results, options = {}) {
83
91
  continuationCount,
84
92
  continuationArmed,
85
93
  handoffArmed: state.handoffArmed,
94
+ reviewRequired: state.reviewRequired,
95
+ reviewApproved: state.reviewApproved,
86
96
  },
87
97
  shouldHandoff,
88
98
  shouldContinue,
99
+ shouldReview,
89
100
  };
90
101
  }
91
102
  function hasSuccessfulCall(callIds, successfulIds) {
package/dist/state.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@felan-ai/ext-prewalk",
3
- "version": "0.3.6",
3
+ "version": "0.5.0",
4
4
  "description": "Same-session planner-to-implementation model handoff for Felan",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -28,11 +28,11 @@
28
28
  "typebox": "1.1.38"
29
29
  },
30
30
  "peerDependencies": {
31
- "@felan-ai/agent-core": "^0.4.12",
32
- "@felan-ai/ext-tasks": "^0.1.0"
31
+ "@felan-ai/agent-core": "^0.5.0",
32
+ "@felan-ai/ext-tasks": "^0.2.0"
33
33
  },
34
34
  "devDependencies": {
35
- "@felan-ai/agent-core": "0.4.12"
35
+ "@felan-ai/agent-core": "0.5.1"
36
36
  },
37
37
  "publishConfig": {
38
38
  "access": "public",