pi-agent-flow 1.8.29 → 1.8.30

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.
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Steering hint utilities.
3
+ *
4
+ * Manages the steering hint tag that is injected before the latest user
5
+ * message each turn. Provides helpers for stripping, detecting, and building
6
+ * the hint so they can be tested independently.
7
+ */
8
+ export declare const STEERING_HINT_OPEN_TAG: string;
9
+ export declare const STEERING_HINT_CLOSE_TAG: string;
10
+ /** Query whether spec-driven planning mode is active. */
11
+ export declare function isSpecModeActive(): boolean;
12
+ /** Set spec-driven planning mode on/off. */
13
+ export declare function setSpecModeActive(active: boolean): void;
14
+ export declare const STEERING_HINT: string;
15
+ export declare const IMPLEMENT_PROMPT: string;
16
+ /** Input-message content types (string or multipart text-part array). */
17
+ type MessageContent = string | Array<{
18
+ type: string;
19
+ text?: string;
20
+ }>;
21
+ /** Strip any old steering hint tags from a string. */
22
+ export declare function stripSteeringHintText(text: string): string;
23
+ /** Strip steering hint tags from content (string or text-part array). */
24
+ export declare function stripSteeringHintFromContent(content: string | {
25
+ type: string;
26
+ text?: string;
27
+ }[]): string | {
28
+ type: string;
29
+ text?: string;
30
+ }[];
31
+ /** Check whether content (string or text-part array) contains the steering hint tag. */
32
+ export declare function contentContainsSteeringHintTag(content: MessageContent): boolean;
33
+ /** Deep-equality check that handles unordered object keys (unlike JSON.stringify). */
34
+ export declare function isJsonEqual(a: unknown, b: unknown): boolean;
35
+ /** Remove any existing steering-hint system messages and strip tags from user messages.
36
+ * Returns the sanitized messages and a flag indicating whether anything changed.
37
+ */
38
+ export declare function stripSteeringHintsFromMessages(messages: any[]): {
39
+ messages: any[];
40
+ changed: boolean;
41
+ };
42
+ /** Build a system message containing the steering hint. */
43
+ export declare function makeSteeringHintMessage(referenceMessage?: any): any;
44
+ export {};
45
+ //# sourceMappingURL=steering-hint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steering-hint.d.ts","sourceRoot":"","sources":["../src/steering-hint.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,eAAO,MAAM,sBAAsB,QAAuD,CAAC;AAC3F,eAAO,MAAM,uBAAuB,QAAwD,CAAC;AAQ7F,yDAAyD;AACzD,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED,4CAA4C;AAC5C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAEvD;AAED,eAAO,MAAM,aAAa,QAiDG,CAAC;AAE9B,eAAO,MAAM,gBAAgB,QAUA,CAAC;AAgB9B,yEAAyE;AACzE,KAAK,cAAc,GAAG,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAkBtE,sDAAsD;AACtD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,yEAAyE;AACzE,wBAAgB,4BAA4B,CAC3C,OAAO,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GACjD,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,CAU5C;AAED,wFAAwF;AACxF,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAW/E;AAED,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAc3D;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAoBrG;AAED,2DAA2D;AAC3D,wBAAgB,uBAAuB,CAAC,gBAAgB,CAAC,EAAE,GAAG,GAAG,GAAG,CAMnE"}
@@ -1,17 +1,17 @@
1
1
  /**
2
- * Sliding system prompt utilities.
2
+ * Steering hint utilities.
3
3
  *
4
- * Manages the sliding prompt tag that is injected before the latest user
4
+ * Manages the steering hint tag that is injected before the latest user
5
5
  * message each turn. Provides helpers for stripping, detecting, and building
6
- * the prompt so they can be tested independently.
6
+ * the hint so they can be tested independently.
7
7
  */
8
8
  import { randomUUID } from "node:crypto";
9
9
  // ---------------------------------------------------------------------------
10
10
  // Tag constants
11
11
  // ---------------------------------------------------------------------------
12
- const SLIDING_PROMPT_UUID = randomUUID();
13
- export const SLIDING_PROMPT_OPEN_TAG = `<pi-flow-sliding-system id="${SLIDING_PROMPT_UUID}">`;
14
- export const SLIDING_PROMPT_CLOSE_TAG = `</pi-flow-sliding-system id="${SLIDING_PROMPT_UUID}">`;
12
+ const STEERING_HINT_UUID = randomUUID();
13
+ export const STEERING_HINT_OPEN_TAG = `<pi-flow-steering-hint id="${STEERING_HINT_UUID}">`;
14
+ export const STEERING_HINT_CLOSE_TAG = `</pi-flow-steering-hint id="${STEERING_HINT_UUID}">`;
15
15
  // ---------------------------------------------------------------------------
16
16
  // Mode state — toggled by /spec command
17
17
  // ---------------------------------------------------------------------------
@@ -24,9 +24,9 @@ export function isSpecModeActive() {
24
24
  export function setSpecModeActive(active) {
25
25
  _specModeActive = active;
26
26
  }
27
- export const SLIDING_PROMPT = `${SLIDING_PROMPT_OPEN_TAG}\n` +
27
+ export const STEERING_HINT = `${STEERING_HINT_OPEN_TAG}\n` +
28
28
  `You are in spec-driven planning mode.\n\n` +
29
- `Your goal: Investigate the codebase, discuss with the user, and produce a structured spec file.\n\n` +
29
+ `Your goal: Investigate the codebase, discuss with the user, and guide them to type /spec when ready to proceed to implementation.\n\n` +
30
30
  `IMPORTANT: You are the orchestrator. You have batch_read, flow, web, and ask_user.\n` +
31
31
  `You do NOT have bash or write. Delegate bash/write operations to flows.\n\n` +
32
32
  `## Phase 1: Investigate\n\n` +
@@ -50,12 +50,10 @@ export const SLIDING_PROMPT = `${SLIDING_PROMPT_OPEN_TAG}\n` +
50
50
  `- Mark recommended option with [preferred], place it first\n` +
51
51
  `- 2-4 options per question with clear trade-off descriptions\n` +
52
52
  `- Questions must be codebase-specific, not generic\n` +
53
- `## Phase 3: Write Spec (delegate to build flow)\n\n` +
54
- `flow [build] intent:\n` +
55
- `"Write the following spec to .specs/{slug}/spec.md. Create directory if needed.\n\n` +
56
- `Spec content:\n` +
57
- `{complete spec}"\n\n` +
58
- `### Spec template:\n` +
53
+ `## Phase 3: Recommend Exit\n\n` +
54
+ `Tell the user:\n` +
55
+ `"When you're ready to implement, type /spec to exit planning mode. A plan will be synthesized from our discussion and placed in the editor for review."\n\n` +
56
+ `### Keep the summary concise:\n` +
59
57
  `- Investigation Findings (current state + evidence)\n` +
60
58
  `- User Alignment (Q&A record with impact)\n` +
61
59
  `- Technical Context (stack, deps, testing)\n` +
@@ -63,9 +61,8 @@ export const SLIDING_PROMPT = `${SLIDING_PROMPT_OPEN_TAG}\n` +
63
61
  `- Implementation Plan (phased)\n` +
64
62
  `- Risks & Mitigations\n` +
65
63
  `- Assumptions\n\n` +
66
- `## Phase 4: Report\n\n` +
67
- `After build flow confirms write, tell user:\n` +
68
- `"Spec written to .specs/{slug}/spec.md"\n\n` +
64
+ `## Phase 4: Hand-off\n\n` +
65
+ `After the user types /spec, the system synthesizes a plan and switches to implement mode. Do not initiate builds yourself.\n\n` +
69
66
  `## Anti-patterns:\n` +
70
67
  `- ❌ Asking without investigating first\n` +
71
68
  `- ❌ Skipping investigation\n` +
@@ -73,8 +70,10 @@ export const SLIDING_PROMPT = `${SLIDING_PROMPT_OPEN_TAG}\n` +
73
70
  `- ❌ Not marking [preferred]\n` +
74
71
  `- ❌ Writing spec without Q&A record\n` +
75
72
  `- ❌ Using bash/write directly (delegate to flows)\n` +
76
- `${SLIDING_PROMPT_CLOSE_TAG}`;
77
- export const IMPLEMENT_PROMPT = `${SLIDING_PROMPT_OPEN_TAG}\n` +
73
+ `- ❌ Using the build flow (use scout, ideas, or craft for investigation and planning)\n` +
74
+ `- Recommending to build or implement right away instead of guiding the user to type /spec\n` +
75
+ `${STEERING_HINT_CLOSE_TAG}`;
76
+ export const IMPLEMENT_PROMPT = `${STEERING_HINT_OPEN_TAG}\n` +
78
77
  `You are the orchestrator. You have batch_read, flow, web, and ask_user.\n` +
79
78
  `You do NOT have bash or write. Delegate all implementation to flows.\n\n` +
80
79
  `- Context: Answer directly if possible; otherwise, investigate first, then delegate.\n` +
@@ -83,12 +82,12 @@ export const IMPLEMENT_PROMPT = `${SLIDING_PROMPT_OPEN_TAG}\n` +
83
82
  `- Spec: If a spec exists in \`.specs/\`, read it first and use it to guide implementation.\n` +
84
83
  `- Anti-patterns: [Never implement directly, Never ask what you can discover with tools, Never skip investigation]\n` +
85
84
  `Note: Context is inherited automatically for child flow; write intents focusing only on new work.\n` +
86
- `${SLIDING_PROMPT_CLOSE_TAG}`;
87
- const SLIDING_PROMPT_RE = new RegExp(SLIDING_PROMPT_OPEN_TAG.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") +
85
+ `${STEERING_HINT_CLOSE_TAG}`;
86
+ const STEERING_HINT_RE = new RegExp(STEERING_HINT_OPEN_TAG.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") +
88
87
  "[\\s\\S]*?" +
89
- SLIDING_PROMPT_CLOSE_TAG.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g");
90
- /** Legacy regex to strip old bare sliding system prompt tags (no id attribute). */
91
- const LEGACY_SLIDING_PROMPT_RE = /<pi-flow-sliding-system(?:\s[^>]*)?>[\s\S]*?<\/pi-flow-sliding-system(?:\s[^>]*)?>/g;
88
+ STEERING_HINT_CLOSE_TAG.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g");
89
+ /** Legacy regex to strip old bare steering hint tags (no id attribute). */
90
+ const LEGACY_STEERING_HINT_RE = /<pi-flow-steering-hint(?:\s[^>]*)?>[\s\S]*?<\/pi-flow-steering-hint(?:\s[^>]*)?>/g;
92
91
  /** Type guard: is this a text-part with a string .text? */
93
92
  function isTextPart(part) {
94
93
  return (part != null &&
@@ -101,26 +100,26 @@ function isTextPart(part) {
101
100
  // ---------------------------------------------------------------------------
102
101
  // Public helpers
103
102
  // ---------------------------------------------------------------------------
104
- /** Strip any old sliding system prompt tags from a string. */
105
- export function stripSlidingPromptText(text) {
106
- return text.replace(SLIDING_PROMPT_RE, "").replace(LEGACY_SLIDING_PROMPT_RE, "");
103
+ /** Strip any old steering hint tags from a string. */
104
+ export function stripSteeringHintText(text) {
105
+ return text.replace(STEERING_HINT_RE, "").replace(LEGACY_STEERING_HINT_RE, "");
107
106
  }
108
- /** Strip sliding prompt tags from content (string or text-part array). */
109
- export function stripSlidingPromptFromContent(content) {
107
+ /** Strip steering hint tags from content (string or text-part array). */
108
+ export function stripSteeringHintFromContent(content) {
110
109
  if (typeof content === "string") {
111
- return stripSlidingPromptText(content);
110
+ return stripSteeringHintText(content);
112
111
  }
113
112
  return content.map((c) => {
114
113
  if (c.type === "text" && typeof c.text === "string") {
115
- return { ...c, text: stripSlidingPromptText(c.text) };
114
+ return { ...c, text: stripSteeringHintText(c.text) };
116
115
  }
117
116
  return c;
118
117
  });
119
118
  }
120
- /** Check whether content (string or text-part array) contains the sliding tag. */
121
- export function contentContainsSlidingTag(content) {
122
- const hasCurrent = (text) => text.includes(SLIDING_PROMPT_OPEN_TAG);
123
- const hasLegacy = (text) => text.includes("<pi-flow-sliding-system>");
119
+ /** Check whether content (string or text-part array) contains the steering hint tag. */
120
+ export function contentContainsSteeringHintTag(content) {
121
+ const hasCurrent = (text) => text.includes(STEERING_HINT_OPEN_TAG);
122
+ const hasLegacy = (text) => text.includes("<pi-flow-steering-hint>");
124
123
  const check = (text) => hasCurrent(text) || hasLegacy(text);
125
124
  if (typeof content === "string") {
126
125
  return check(content);
@@ -150,15 +149,15 @@ export function isJsonEqual(a, b) {
150
149
  }
151
150
  return true;
152
151
  }
153
- /** Remove any existing sliding-system-prompt system messages and strip tags from user messages.
152
+ /** Remove any existing steering-hint system messages and strip tags from user messages.
154
153
  * Returns the sanitized messages and a flag indicating whether anything changed.
155
154
  */
156
- export function stripSlidingPromptsFromMessages(messages) {
155
+ export function stripSteeringHintsFromMessages(messages) {
157
156
  let changed = false;
158
157
  const result = messages
159
158
  .filter((msg) => {
160
- // Remove dedicated sliding system prompt messages
161
- if (msg.role === "system" && contentContainsSlidingTag(msg.content)) {
159
+ // Remove dedicated steering hint system messages
160
+ if (msg.role === "system" && contentContainsSteeringHintTag(msg.content)) {
162
161
  changed = true;
163
162
  return false;
164
163
  }
@@ -168,7 +167,7 @@ export function stripSlidingPromptsFromMessages(messages) {
168
167
  // Also strip stray tags embedded in user/assistant messages
169
168
  if (!("content" in msg))
170
169
  return msg;
171
- const stripped = stripSlidingPromptFromContent(msg.content);
170
+ const stripped = stripSteeringHintFromContent(msg.content);
172
171
  if (isJsonEqual(stripped, msg.content))
173
172
  return msg;
174
173
  changed = true;
@@ -176,12 +175,12 @@ export function stripSlidingPromptsFromMessages(messages) {
176
175
  });
177
176
  return { messages: result, changed };
178
177
  }
179
- /** Build a system message containing the sliding prompt. */
180
- export function makeSlidingPromptMessage(referenceMessage) {
178
+ /** Build a system message containing the steering hint. */
179
+ export function makeSteeringHintMessage(referenceMessage) {
181
180
  return {
182
181
  role: "system",
183
- content: _specModeActive ? SLIDING_PROMPT : IMPLEMENT_PROMPT,
182
+ content: _specModeActive ? STEERING_HINT : IMPLEMENT_PROMPT,
184
183
  timestamp: referenceMessage?.timestamp,
185
184
  };
186
185
  }
187
- //# sourceMappingURL=sliding-prompt.js.map
186
+ //# sourceMappingURL=steering-hint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steering-hint.js","sourceRoot":"","sources":["../src/steering-hint.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-agent-flow",
3
- "version": "1.8.29",
3
+ "version": "1.8.30",
4
4
  "description": "Flow-state delegation extension for Pi coding agent.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,45 +0,0 @@
1
- /**
2
- * Sliding system prompt utilities.
3
- *
4
- * Manages the sliding prompt tag that is injected before the latest user
5
- * message each turn. Provides helpers for stripping, detecting, and building
6
- * the prompt so they can be tested independently.
7
- */
8
- export declare const SLIDING_PROMPT_OPEN_TAG: string;
9
- export declare const SLIDING_PROMPT_CLOSE_TAG: string;
10
- /** Query whether spec-driven planning mode is active. */
11
- export declare function isSpecModeActive(): boolean;
12
- /** Set spec-driven planning mode on/off. */
13
- export declare function setSpecModeActive(active: boolean): void;
14
- export declare const SLIDING_PROMPT: string;
15
- export declare const IMPLEMENT_PROMPT: string;
16
- /** Input-message content types (string or multipart text-part array). */
17
- type MessageContent = string | Array<{
18
- type: string;
19
- text?: string;
20
- }>;
21
- /** Strip any old sliding system prompt tags from a string. */
22
- export declare function stripSlidingPromptText(text: string): string;
23
- /** Strip sliding prompt tags from content (string or text-part array). */
24
- export declare function stripSlidingPromptFromContent(content: string | {
25
- type: string;
26
- text?: string;
27
- }[]): string | {
28
- type: string;
29
- text?: string;
30
- }[];
31
- /** Check whether content (string or text-part array) contains the sliding tag. */
32
- export declare function contentContainsSlidingTag(content: MessageContent): boolean;
33
- /** Deep-equality check that handles unordered object keys (unlike JSON.stringify). */
34
- export declare function isJsonEqual(a: unknown, b: unknown): boolean;
35
- /** Remove any existing sliding-system-prompt system messages and strip tags from user messages.
36
- * Returns the sanitized messages and a flag indicating whether anything changed.
37
- */
38
- export declare function stripSlidingPromptsFromMessages(messages: any[]): {
39
- messages: any[];
40
- changed: boolean;
41
- };
42
- /** Build a system message containing the sliding prompt. */
43
- export declare function makeSlidingPromptMessage(referenceMessage?: any): any;
44
- export {};
45
- //# sourceMappingURL=sliding-prompt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sliding-prompt.d.ts","sourceRoot":"","sources":["../src/sliding-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,eAAO,MAAM,uBAAuB,QAAyD,CAAC;AAC9F,eAAO,MAAM,wBAAwB,QAA0D,CAAC;AAQhG,yDAAyD;AACzD,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED,4CAA4C;AAC5C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAEvD;AAED,eAAO,MAAM,cAAc,QAkDG,CAAC;AAE/B,eAAO,MAAM,gBAAgB,QAUC,CAAC;AAgB/B,yEAAyE;AACzE,KAAK,cAAc,GAAG,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAkBtE,8DAA8D;AAC9D,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,0EAA0E;AAC1E,wBAAgB,6BAA6B,CAC5C,OAAO,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GACjD,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,CAU5C;AAED,kFAAkF;AAClF,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAW1E;AAED,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAc3D;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAoBtG;AAED,4DAA4D;AAC5D,wBAAgB,wBAAwB,CAAC,gBAAgB,CAAC,EAAE,GAAG,GAAG,GAAG,CAMpE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sliding-prompt.js","sourceRoot":"","sources":["../src/sliding-prompt.ts"],"names":[],"mappings":"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"}