pi-agent-flow 1.8.39 → 2.0.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.
Files changed (291) hide show
  1. package/README.md +33 -37
  2. package/agents/audit.md +18 -22
  3. package/agents/build.md +20 -22
  4. package/agents/craft.md +20 -27
  5. package/agents/debug.md +21 -28
  6. package/agents/ideas.md +18 -101
  7. package/agents/scout.md +15 -19
  8. package/dist/batch/batch-bash.d.ts +2 -2
  9. package/dist/batch/batch-bash.d.ts.map +1 -1
  10. package/dist/batch/batch-bash.js +3 -3
  11. package/dist/batch/batch-bash.js.map +1 -1
  12. package/dist/batch/constants.d.ts +19 -5
  13. package/dist/batch/constants.d.ts.map +1 -1
  14. package/dist/batch/constants.js +4 -3
  15. package/dist/batch/constants.js.map +1 -1
  16. package/dist/batch/execute.d.ts +0 -1
  17. package/dist/batch/execute.d.ts.map +1 -1
  18. package/dist/batch/execute.js +101 -10
  19. package/dist/batch/execute.js.map +1 -1
  20. package/dist/batch/fuzzy-edit.d.ts +0 -6
  21. package/dist/batch/fuzzy-edit.d.ts.map +1 -1
  22. package/dist/batch/fuzzy-edit.js +1 -1
  23. package/dist/batch/fuzzy-edit.js.map +1 -1
  24. package/dist/batch/index.d.ts.map +1 -1
  25. package/dist/batch/index.js +87 -16
  26. package/dist/batch/index.js.map +1 -1
  27. package/dist/batch/render.d.ts +0 -1
  28. package/dist/batch/render.d.ts.map +1 -1
  29. package/dist/batch/render.js +7 -101
  30. package/dist/batch/render.js.map +1 -1
  31. package/dist/batch/summary.d.ts +5 -0
  32. package/dist/batch/summary.d.ts.map +1 -0
  33. package/dist/batch/summary.js +101 -0
  34. package/dist/batch/summary.js.map +1 -0
  35. package/dist/{config.d.ts → config/config.d.ts} +34 -2
  36. package/dist/config/config.d.ts.map +1 -0
  37. package/dist/{config.js → config/config.js} +157 -9
  38. package/dist/config/config.js.map +1 -0
  39. package/dist/config/log.d.ts +27 -0
  40. package/dist/config/log.d.ts.map +1 -0
  41. package/dist/config/log.js +104 -0
  42. package/dist/config/log.js.map +1 -0
  43. package/dist/{settings-resolver.d.ts → config/settings-resolver.d.ts} +9 -2
  44. package/dist/config/settings-resolver.d.ts.map +1 -0
  45. package/dist/config/settings-resolver.js +275 -0
  46. package/dist/config/settings-resolver.js.map +1 -0
  47. package/dist/core/agents.d.ts.map +1 -0
  48. package/dist/{agents.js → core/agents.js} +11 -10
  49. package/dist/core/agents.js.map +1 -0
  50. package/dist/core/delegation.d.ts +24 -0
  51. package/dist/core/delegation.d.ts.map +1 -0
  52. package/dist/core/delegation.js +55 -0
  53. package/dist/core/delegation.js.map +1 -0
  54. package/dist/core/depth.d.ts.map +1 -0
  55. package/dist/{depth.js → core/depth.js} +9 -8
  56. package/dist/core/depth.js.map +1 -0
  57. package/dist/{executor.d.ts → core/executor.d.ts} +13 -3
  58. package/dist/core/executor.d.ts.map +1 -0
  59. package/dist/{executor.js → core/executor.js} +79 -15
  60. package/dist/core/executor.js.map +1 -0
  61. package/dist/{flow.d.ts → core/flow.d.ts} +4 -1
  62. package/dist/core/flow.d.ts.map +1 -0
  63. package/dist/{flow.js → core/flow.js} +179 -25
  64. package/dist/core/flow.js.map +1 -0
  65. package/dist/{session-mode.d.ts → core/session-mode.d.ts} +2 -1
  66. package/dist/core/session-mode.d.ts.map +1 -0
  67. package/dist/{session-mode.js → core/session-mode.js} +1 -1
  68. package/dist/core/session-mode.js.map +1 -0
  69. package/dist/core/session-registry.d.ts +16 -0
  70. package/dist/core/session-registry.d.ts.map +1 -0
  71. package/dist/core/session-registry.js +30 -0
  72. package/dist/core/session-registry.js.map +1 -0
  73. package/dist/core/transitions.d.ts.map +1 -0
  74. package/dist/{transitions.js → core/transitions.js} +1 -1
  75. package/dist/core/transitions.js.map +1 -0
  76. package/dist/flow/command.d.ts +8 -0
  77. package/dist/flow/command.d.ts.map +1 -0
  78. package/dist/flow/command.js +189 -0
  79. package/dist/flow/command.js.map +1 -0
  80. package/dist/flow/continuation.d.ts +16 -0
  81. package/dist/flow/continuation.d.ts.map +1 -0
  82. package/dist/flow/continuation.js +151 -0
  83. package/dist/flow/continuation.js.map +1 -0
  84. package/dist/flow/index.d.ts +15 -0
  85. package/dist/flow/index.d.ts.map +1 -0
  86. package/dist/flow/index.js +22 -0
  87. package/dist/flow/index.js.map +1 -0
  88. package/dist/flow/settings-command.d.ts +51 -0
  89. package/dist/flow/settings-command.d.ts.map +1 -0
  90. package/dist/flow/settings-command.js +851 -0
  91. package/dist/flow/settings-command.js.map +1 -0
  92. package/dist/flow/store.d.ts +26 -0
  93. package/dist/flow/store.d.ts.map +1 -0
  94. package/dist/flow/store.js +158 -0
  95. package/dist/flow/store.js.map +1 -0
  96. package/dist/flow/template-strings.d.ts +8 -0
  97. package/dist/flow/template-strings.d.ts.map +1 -0
  98. package/dist/flow/template-strings.js +39 -0
  99. package/dist/flow/template-strings.js.map +1 -0
  100. package/dist/flow/types.d.ts +55 -0
  101. package/dist/flow/types.d.ts.map +1 -0
  102. package/dist/flow/types.js +5 -0
  103. package/dist/flow/types.js.map +1 -0
  104. package/dist/flow/warp-command.d.ts +9 -0
  105. package/dist/flow/warp-command.d.ts.map +1 -0
  106. package/dist/flow/warp-command.js +405 -0
  107. package/dist/flow/warp-command.js.map +1 -0
  108. package/dist/index.d.ts +3 -1
  109. package/dist/index.d.ts.map +1 -1
  110. package/dist/index.js +115 -32
  111. package/dist/index.js.map +1 -1
  112. package/dist/{notify-state.d.ts → notify/notify-state.d.ts} +2 -1
  113. package/dist/notify/notify-state.d.ts.map +1 -0
  114. package/dist/notify/notify-state.js.map +1 -0
  115. package/dist/notify/notify.d.ts.map +1 -0
  116. package/dist/{notify.js → notify/notify.js} +3 -2
  117. package/dist/notify/notify.js.map +1 -0
  118. package/dist/{cli-args.d.ts → snapshot/cli-args.d.ts} +4 -2
  119. package/dist/snapshot/cli-args.d.ts.map +1 -0
  120. package/dist/{cli-args.js → snapshot/cli-args.js} +10 -1
  121. package/dist/snapshot/cli-args.js.map +1 -0
  122. package/dist/snapshot/index.d.ts +2 -0
  123. package/dist/snapshot/index.d.ts.map +1 -0
  124. package/dist/snapshot/index.js +2 -0
  125. package/dist/snapshot/index.js.map +1 -0
  126. package/dist/{reasoning-strip.d.ts → snapshot/reasoning-strip.d.ts} +0 -4
  127. package/dist/snapshot/reasoning-strip.d.ts.map +1 -0
  128. package/dist/{reasoning-strip.js → snapshot/reasoning-strip.js} +2 -2
  129. package/dist/snapshot/reasoning-strip.js.map +1 -0
  130. package/dist/{runner-events.d.ts → snapshot/runner-events.d.ts} +13 -1
  131. package/dist/snapshot/runner-events.d.ts.map +1 -0
  132. package/dist/{runner-events.js → snapshot/runner-events.js} +16 -4
  133. package/dist/snapshot/runner-events.js.map +1 -0
  134. package/dist/{snapshot.d.ts → snapshot/snapshot.d.ts} +29 -3
  135. package/dist/snapshot/snapshot.d.ts.map +1 -0
  136. package/dist/{snapshot.js → snapshot/snapshot.js} +347 -39
  137. package/dist/snapshot/snapshot.js.map +1 -0
  138. package/dist/{structured-output.d.ts → snapshot/structured-output.d.ts} +1 -1
  139. package/dist/snapshot/structured-output.d.ts.map +1 -0
  140. package/dist/{structured-output.js → snapshot/structured-output.js} +13 -0
  141. package/dist/snapshot/structured-output.js.map +1 -0
  142. package/dist/{flow-prompt.d.ts → steering/flow-prompt.d.ts} +2 -2
  143. package/dist/steering/flow-prompt.d.ts.map +1 -0
  144. package/dist/{flow-prompt.js → steering/flow-prompt.js} +3 -3
  145. package/dist/steering/flow-prompt.js.map +1 -0
  146. package/dist/{sliding-prompt.d.ts → steering/sliding-prompt.d.ts} +8 -7
  147. package/dist/steering/sliding-prompt.d.ts.map +1 -0
  148. package/dist/{sliding-prompt.js → steering/sliding-prompt.js} +15 -64
  149. package/dist/steering/sliding-prompt.js.map +1 -0
  150. package/dist/{tool-utils.d.ts → steering/tool-utils.d.ts} +1 -0
  151. package/dist/steering/tool-utils.d.ts.map +1 -0
  152. package/dist/{tool-utils.js → steering/tool-utils.js} +10 -3
  153. package/dist/steering/tool-utils.js.map +1 -0
  154. package/dist/{ask-user.d.ts → tools/ask-user.d.ts} +3 -15
  155. package/dist/tools/ask-user.d.ts.map +1 -0
  156. package/dist/tools/ask-user.js +778 -0
  157. package/dist/tools/ask-user.js.map +1 -0
  158. package/dist/{timed-bash.d.ts → tools/timed-bash.d.ts} +2 -7
  159. package/dist/tools/timed-bash.d.ts.map +1 -0
  160. package/dist/{timed-bash.js → tools/timed-bash.js} +2 -2
  161. package/dist/tools/timed-bash.js.map +1 -0
  162. package/dist/{web-tool.d.ts → tools/web-tool.d.ts} +1 -1
  163. package/dist/tools/web-tool.d.ts.map +1 -0
  164. package/dist/{web-tool.js → tools/web-tool.js} +8 -7
  165. package/dist/tools/web-tool.js.map +1 -0
  166. package/dist/tui/flow-colors.d.ts +55 -0
  167. package/dist/tui/flow-colors.d.ts.map +1 -0
  168. package/dist/tui/flow-colors.js +22 -0
  169. package/dist/tui/flow-colors.js.map +1 -0
  170. package/dist/{render-utils.d.ts → tui/render-utils.d.ts} +1 -1
  171. package/dist/tui/render-utils.d.ts.map +1 -0
  172. package/dist/{render-utils.js → tui/render-utils.js} +3 -3
  173. package/dist/tui/render-utils.js.map +1 -0
  174. package/dist/tui/render.d.ts +21 -0
  175. package/dist/tui/render.d.ts.map +1 -0
  176. package/dist/tui/render.js +813 -0
  177. package/dist/tui/render.js.map +1 -0
  178. package/dist/tui/scramble/algorithm.d.ts +7 -0
  179. package/dist/tui/scramble/algorithm.d.ts.map +1 -0
  180. package/dist/tui/scramble/algorithm.js +227 -0
  181. package/dist/tui/scramble/algorithm.js.map +1 -0
  182. package/dist/tui/scramble/constants.d.ts +99 -0
  183. package/dist/tui/scramble/constants.d.ts.map +1 -0
  184. package/dist/tui/scramble/constants.js +101 -0
  185. package/dist/tui/scramble/constants.js.map +1 -0
  186. package/dist/tui/scramble/index.d.ts +6 -0
  187. package/dist/tui/scramble/index.d.ts.map +1 -0
  188. package/dist/tui/scramble/index.js +6 -0
  189. package/dist/tui/scramble/index.js.map +1 -0
  190. package/dist/tui/scramble/manager.d.ts +48 -0
  191. package/dist/tui/scramble/manager.d.ts.map +1 -0
  192. package/dist/tui/scramble/manager.js +959 -0
  193. package/dist/tui/scramble/manager.js.map +1 -0
  194. package/dist/tui/scramble/utils.d.ts +18 -0
  195. package/dist/tui/scramble/utils.d.ts.map +1 -0
  196. package/dist/tui/scramble/utils.js +145 -0
  197. package/dist/tui/scramble/utils.js.map +1 -0
  198. package/dist/tui/single-select-layout.d.ts +17 -0
  199. package/dist/tui/single-select-layout.d.ts.map +1 -0
  200. package/dist/{single-select-layout.js → tui/single-select-layout.js} +8 -25
  201. package/dist/tui/single-select-layout.js.map +1 -0
  202. package/dist/types/flow.d.ts +110 -0
  203. package/dist/types/flow.d.ts.map +1 -0
  204. package/dist/{types.js → types/flow.js} +3 -54
  205. package/dist/types/flow.js.map +1 -0
  206. package/dist/types/index.d.ts +8 -0
  207. package/dist/types/index.d.ts.map +1 -0
  208. package/dist/types/index.js +7 -0
  209. package/dist/types/index.js.map +1 -0
  210. package/dist/types/output.d.ts +104 -0
  211. package/dist/types/output.d.ts.map +1 -0
  212. package/dist/types/output.js +5 -0
  213. package/dist/types/output.js.map +1 -0
  214. package/dist/types/ui.d.ts +24 -0
  215. package/dist/types/ui.d.ts.map +1 -0
  216. package/dist/types/ui.js +55 -0
  217. package/dist/types/ui.js.map +1 -0
  218. package/package.json +7 -4
  219. package/dist/agents.d.ts.map +0 -1
  220. package/dist/agents.js.map +0 -1
  221. package/dist/ask-user.d.ts.map +0 -1
  222. package/dist/ask-user.js +0 -1405
  223. package/dist/ask-user.js.map +0 -1
  224. package/dist/batch.d.ts +0 -12
  225. package/dist/batch.d.ts.map +0 -1
  226. package/dist/batch.js +0 -11
  227. package/dist/batch.js.map +0 -1
  228. package/dist/cli-args.d.ts.map +0 -1
  229. package/dist/cli-args.js.map +0 -1
  230. package/dist/config.d.ts.map +0 -1
  231. package/dist/config.js.map +0 -1
  232. package/dist/depth.d.ts.map +0 -1
  233. package/dist/depth.js.map +0 -1
  234. package/dist/executor.d.ts.map +0 -1
  235. package/dist/executor.js.map +0 -1
  236. package/dist/flow-prompt.d.ts.map +0 -1
  237. package/dist/flow-prompt.js.map +0 -1
  238. package/dist/flow.d.ts.map +0 -1
  239. package/dist/flow.js.map +0 -1
  240. package/dist/notify-state.d.ts.map +0 -1
  241. package/dist/notify-state.js.map +0 -1
  242. package/dist/notify.d.ts.map +0 -1
  243. package/dist/notify.js.map +0 -1
  244. package/dist/reasoning-strip.d.ts.map +0 -1
  245. package/dist/reasoning-strip.js.map +0 -1
  246. package/dist/render-utils.d.ts.map +0 -1
  247. package/dist/render-utils.js.map +0 -1
  248. package/dist/render.d.ts +0 -24
  249. package/dist/render.d.ts.map +0 -1
  250. package/dist/render.js +0 -592
  251. package/dist/render.js.map +0 -1
  252. package/dist/runner-events.d.ts.map +0 -1
  253. package/dist/runner-events.js.map +0 -1
  254. package/dist/scramble.d.ts +0 -171
  255. package/dist/scramble.d.ts.map +0 -1
  256. package/dist/scramble.js +0 -2261
  257. package/dist/scramble.js.map +0 -1
  258. package/dist/session-mode.d.ts.map +0 -1
  259. package/dist/session-mode.js.map +0 -1
  260. package/dist/settings-resolver.d.ts.map +0 -1
  261. package/dist/settings-resolver.js +0 -148
  262. package/dist/settings-resolver.js.map +0 -1
  263. package/dist/single-select-layout.d.ts +0 -20
  264. package/dist/single-select-layout.d.ts.map +0 -1
  265. package/dist/single-select-layout.js.map +0 -1
  266. package/dist/sliding-prompt.d.ts.map +0 -1
  267. package/dist/sliding-prompt.js.map +0 -1
  268. package/dist/snapshot.d.ts.map +0 -1
  269. package/dist/snapshot.js.map +0 -1
  270. package/dist/spec-mode.d.ts +0 -13
  271. package/dist/spec-mode.d.ts.map +0 -1
  272. package/dist/spec-mode.js +0 -90
  273. package/dist/spec-mode.js.map +0 -1
  274. package/dist/structured-output.d.ts.map +0 -1
  275. package/dist/structured-output.js.map +0 -1
  276. package/dist/timed-bash.d.ts.map +0 -1
  277. package/dist/timed-bash.js.map +0 -1
  278. package/dist/tool-utils.d.ts.map +0 -1
  279. package/dist/tool-utils.js.map +0 -1
  280. package/dist/transitions.d.ts.map +0 -1
  281. package/dist/transitions.js.map +0 -1
  282. package/dist/types.d.ts +0 -208
  283. package/dist/types.d.ts.map +0 -1
  284. package/dist/types.js.map +0 -1
  285. package/dist/web-tool.d.ts.map +0 -1
  286. package/dist/web-tool.js.map +0 -1
  287. /package/dist/{agents.d.ts → core/agents.d.ts} +0 -0
  288. /package/dist/{depth.d.ts → core/depth.d.ts} +0 -0
  289. /package/dist/{transitions.d.ts → core/transitions.d.ts} +0 -0
  290. /package/dist/{notify-state.js → notify/notify-state.js} +0 -0
  291. /package/dist/{notify.d.ts → notify/notify.d.ts} +0 -0
@@ -0,0 +1,275 @@
1
+ /**
2
+ * Settings resolution for session_start handler.
3
+ *
4
+ * Extracted from index.ts for single-responsibility and testability.
5
+ */
6
+ import * as os from "node:os";
7
+ import * as fs from "node:fs";
8
+ import { discoverFlows } from "../core/agents.js";
9
+ import { loadFlowModelConfigs, loadFlowSettings, loadProjectFlowModelConfigName, normalizeFlowModeName, selectFlowModelStrategy, writeGlobalFlowMode, formatFlowModelStrategy, } from "./config.js";
10
+ import { getInheritedCliArgs } from "../snapshot/cli-args.js";
11
+ import { parseBoolean, FLOW_TOOL_OPTIMIZE_ENV } from "../core/depth.js";
12
+ import { logWarn } from "./log.js";
13
+ import { DEFAULT_AGENT_SESSION_MODE, PI_FLOW_SESSION_MODE_ENV, parseAgentSessionMode, } from "../core/session-mode.js";
14
+ // Environment variables for steering and animation
15
+ const PI_FLOW_NO_STEERING_ENV = "PI_FLOW_NO_STEERING";
16
+ const PI_FLOW_NO_STRATEGIC_HINT_ENV = "PI_FLOW_NO_STRATEGIC_HINT";
17
+ const PI_FLOW_NO_ANIMATION_ENV = "PI_FLOW_NO_ANIMATION";
18
+ const PI_FLOW_NO_GLITCH_ENV = "PI_FLOW_NO_GLITCH";
19
+ // ---------------------------------------------------------------------------
20
+ // Resolution
21
+ // ---------------------------------------------------------------------------
22
+ /**
23
+ * Resolve all flow settings from env vars, CLI flags, and settings files.
24
+ *
25
+ * Called from the session_start handler. Returns the resolved settings
26
+ * plus discovered flows and model configs.
27
+ */
28
+ export function resolveSettings(pi, cwd) {
29
+ const inheritedCliArgs = getInheritedCliArgs();
30
+ let toolOptimize = true;
31
+ let structuredOutput = true;
32
+ let maxConcurrency = 4;
33
+ let defaultSessionMode = DEFAULT_AGENT_SESSION_MODE;
34
+ let steeringEnabled = true;
35
+ let steeringCustomPrompt = undefined;
36
+ let steeringStrategicHint = true;
37
+ let animationEnabled = true;
38
+ let animationGlitch = true;
39
+ let askUserEnabled = false;
40
+ let askUserTimeout = 300000; // 5 minutes in ms
41
+ const envToolOptimize = process.env[FLOW_TOOL_OPTIMIZE_ENV];
42
+ if (envToolOptimize !== undefined) {
43
+ const parsed = parseBoolean(envToolOptimize);
44
+ if (parsed !== null)
45
+ toolOptimize = parsed;
46
+ }
47
+ // Auto-discover flows
48
+ const discovery = discoverFlows(cwd, "all");
49
+ const discoveredFlows = discovery.flows;
50
+ let loadedFlowModelConfigs = loadFlowModelConfigs(cwd);
51
+ let activeRuntimeFlowMode = undefined;
52
+ // Resolve --flow-mode persistent switch
53
+ const requestedFlowMode = normalizeFlowModeName(pi.getFlag("flow-mode"));
54
+ if (requestedFlowMode !== undefined) {
55
+ if (!Object.prototype.hasOwnProperty.call(loadedFlowModelConfigs.configs, requestedFlowMode)) {
56
+ const availableModes = Object.keys(loadedFlowModelConfigs.configs).sort().join(", ") || "(none)";
57
+ logWarn(`[pi-agent-flow] Cannot switch flow mode to "${requestedFlowMode}"; no flowModelConfigs.${requestedFlowMode} strategy was found. Available modes: ${availableModes}.`);
58
+ }
59
+ else {
60
+ try {
61
+ writeGlobalFlowMode(requestedFlowMode);
62
+ const strategy = loadedFlowModelConfigs.configs[requestedFlowMode] ?? {};
63
+ const strategyDescription = formatFlowModelStrategy(requestedFlowMode, strategy);
64
+ logWarn(strategyDescription);
65
+ }
66
+ catch (error) {
67
+ const message = error instanceof Error ? error.message : String(error);
68
+ logWarn(`[pi-agent-flow] ${message}`);
69
+ }
70
+ const projectFlowModelConfig = loadProjectFlowModelConfigName(cwd);
71
+ if (projectFlowModelConfig !== undefined && projectFlowModelConfig !== requestedFlowMode) {
72
+ logWarn(`[pi-agent-flow] Switched global flow mode to "${requestedFlowMode}"; this project selects "${projectFlowModelConfig}" in .pi/settings.json, so future runs in this project may still use "${projectFlowModelConfig}" unless project settings are changed.`);
73
+ }
74
+ activeRuntimeFlowMode = requestedFlowMode;
75
+ loadedFlowModelConfigs = selectFlowModelStrategy(loadedFlowModelConfigs.configs, requestedFlowMode);
76
+ }
77
+ }
78
+ // Resolve settings from .pi/settings.json
79
+ const flowSettings = loadFlowSettings(cwd);
80
+ if (typeof flowSettings.structuredOutput === "boolean") {
81
+ structuredOutput = flowSettings.structuredOutput;
82
+ }
83
+ if (typeof flowSettings.maxConcurrency === "number") {
84
+ maxConcurrency = flowSettings.maxConcurrency;
85
+ }
86
+ // steering defaults from settings.json
87
+ if (typeof flowSettings.steering?.enabled === "boolean") {
88
+ steeringEnabled = flowSettings.steering.enabled;
89
+ }
90
+ if (typeof flowSettings.steering?.customPrompt === "string") {
91
+ steeringCustomPrompt = flowSettings.steering.customPrompt;
92
+ }
93
+ if (typeof flowSettings.steering?.strategicHint === "boolean") {
94
+ steeringStrategicHint = flowSettings.steering.strategicHint;
95
+ }
96
+ // animation defaults from settings.json
97
+ if (typeof flowSettings.animation?.enabled === "boolean") {
98
+ animationEnabled = flowSettings.animation.enabled;
99
+ }
100
+ if (typeof flowSettings.animation?.glitch === "boolean") {
101
+ animationGlitch = flowSettings.animation.glitch;
102
+ }
103
+ // Resolve toolOptimize: CLI flag > env var > settings.json > default
104
+ const cliFlag = pi.getFlag("tool-optimize");
105
+ if (typeof flowSettings.toolOptimize === "boolean") {
106
+ toolOptimize = flowSettings.toolOptimize;
107
+ }
108
+ if (envToolOptimize !== undefined) {
109
+ const parsed = parseBoolean(envToolOptimize);
110
+ if (parsed !== null)
111
+ toolOptimize = parsed;
112
+ }
113
+ if (typeof cliFlag === "boolean") {
114
+ toolOptimize = cliFlag;
115
+ }
116
+ else if (typeof cliFlag === "string") {
117
+ const parsed = parseBoolean(cliFlag);
118
+ if (parsed !== null)
119
+ toolOptimize = parsed;
120
+ }
121
+ // Resolve sessionMode: CLI flag > env var > settings.json > default
122
+ defaultSessionMode = flowSettings.sessionMode ?? DEFAULT_AGENT_SESSION_MODE;
123
+ const envSessionModeRaw = process.env[PI_FLOW_SESSION_MODE_ENV];
124
+ if (envSessionModeRaw !== undefined) {
125
+ const envSessionMode = parseAgentSessionMode(envSessionModeRaw);
126
+ if (envSessionMode !== undefined) {
127
+ defaultSessionMode = envSessionMode;
128
+ }
129
+ else {
130
+ logWarn(`[pi-agent-flow] Ignoring invalid ${PI_FLOW_SESSION_MODE_ENV}="${envSessionModeRaw}". Expected fast, default, long, or extreme_long.`);
131
+ }
132
+ }
133
+ const cliSessionModeRaw = pi.getFlag("flow-session-mode");
134
+ if (typeof cliSessionModeRaw === "string") {
135
+ const cliSessionMode = parseAgentSessionMode(cliSessionModeRaw);
136
+ if (cliSessionMode !== undefined) {
137
+ defaultSessionMode = cliSessionMode;
138
+ }
139
+ else {
140
+ logWarn(`[pi-agent-flow] Ignoring invalid --flow-session-mode value "${cliSessionModeRaw}". Expected fast, default, long, or extreme_long.`);
141
+ }
142
+ }
143
+ else if (inheritedCliArgs.flowSessionMode !== undefined) {
144
+ defaultSessionMode = inheritedCliArgs.flowSessionMode;
145
+ }
146
+ // Resolve maxConcurrency: CLI flag > env var > settings.json > default
147
+ const cliConcurrency = pi.getFlag("flow-max-concurrency");
148
+ if (typeof cliConcurrency === "string") {
149
+ const parsed = Number(cliConcurrency);
150
+ if (Number.isSafeInteger(parsed) && parsed >= 1)
151
+ maxConcurrency = parsed;
152
+ }
153
+ else if (typeof cliConcurrency === "number" && Number.isSafeInteger(cliConcurrency) && cliConcurrency >= 1) {
154
+ maxConcurrency = cliConcurrency;
155
+ }
156
+ const envConcurrency = process.env["PI_FLOW_MAX_CONCURRENCY"];
157
+ if (envConcurrency !== undefined && typeof cliConcurrency === "undefined") {
158
+ const parsed = Number(envConcurrency);
159
+ if (Number.isSafeInteger(parsed) && parsed >= 1)
160
+ maxConcurrency = parsed;
161
+ }
162
+ // Cap concurrency to the number of available CPUs
163
+ if (typeof os.availableParallelism === "function") {
164
+ const hwConcurrency = os.availableParallelism();
165
+ if (hwConcurrency > 0)
166
+ maxConcurrency = Math.min(maxConcurrency, hwConcurrency);
167
+ }
168
+ // Resolve steering: CLI flag > env var > settings.json > default
169
+ const envNoSteering = process.env[PI_FLOW_NO_STEERING_ENV];
170
+ if (envNoSteering !== undefined) {
171
+ const parsed = parseBoolean(envNoSteering);
172
+ if (parsed !== null)
173
+ steeringEnabled = !parsed; // env is "NO" steering, so invert
174
+ }
175
+ const cliNoSteering = pi.getFlag("no-steering");
176
+ if (typeof cliNoSteering === "boolean") {
177
+ steeringEnabled = !cliNoSteering;
178
+ }
179
+ else if (typeof cliNoSteering === "string") {
180
+ const parsed = parseBoolean(cliNoSteering);
181
+ if (parsed !== null)
182
+ steeringEnabled = !parsed;
183
+ }
184
+ // Resolve strategic hint: CLI flag > env var > settings.json > default
185
+ const envNoStrategicHint = process.env[PI_FLOW_NO_STRATEGIC_HINT_ENV];
186
+ if (envNoStrategicHint !== undefined) {
187
+ const parsed = parseBoolean(envNoStrategicHint);
188
+ if (parsed !== null)
189
+ steeringStrategicHint = !parsed;
190
+ }
191
+ const cliNoStrategicHint = pi.getFlag("no-strategic-hint");
192
+ if (typeof cliNoStrategicHint === "boolean") {
193
+ steeringStrategicHint = !cliNoStrategicHint;
194
+ }
195
+ else if (typeof cliNoStrategicHint === "string") {
196
+ const parsed = parseBoolean(cliNoStrategicHint);
197
+ if (parsed !== null)
198
+ steeringStrategicHint = !parsed;
199
+ }
200
+ // Resolve animation: CLI flag > env var > settings.json > default
201
+ const envNoAnimation = process.env[PI_FLOW_NO_ANIMATION_ENV];
202
+ if (envNoAnimation !== undefined) {
203
+ const parsed = parseBoolean(envNoAnimation);
204
+ if (parsed !== null)
205
+ animationEnabled = !parsed;
206
+ }
207
+ const cliNoAnimation = pi.getFlag("no-animation");
208
+ if (typeof cliNoAnimation === "boolean") {
209
+ animationEnabled = !cliNoAnimation;
210
+ }
211
+ else if (typeof cliNoAnimation === "string") {
212
+ const parsed = parseBoolean(cliNoAnimation);
213
+ if (parsed !== null)
214
+ animationEnabled = !parsed;
215
+ }
216
+ // Resolve glitch: CLI flag > env var > settings.json > default
217
+ const envNoGlitch = process.env[PI_FLOW_NO_GLITCH_ENV];
218
+ if (envNoGlitch !== undefined) {
219
+ const parsed = parseBoolean(envNoGlitch);
220
+ if (parsed !== null)
221
+ animationGlitch = !parsed;
222
+ }
223
+ const cliNoGlitch = pi.getFlag("no-glitch");
224
+ if (typeof cliNoGlitch === "boolean") {
225
+ animationGlitch = !cliNoGlitch;
226
+ }
227
+ else if (typeof cliNoGlitch === "string") {
228
+ const parsed = parseBoolean(cliNoGlitch);
229
+ if (parsed !== null)
230
+ animationGlitch = !parsed;
231
+ }
232
+ // Resolve askUser: settings.json > env var > default
233
+ if (typeof flowSettings.askUser?.enabled === "boolean") {
234
+ askUserEnabled = flowSettings.askUser.enabled;
235
+ }
236
+ if (typeof flowSettings.askUser?.timeout === "number") {
237
+ askUserTimeout = flowSettings.askUser.timeout * 1000;
238
+ }
239
+ const envAskUserTimeout = process.env["PI_ASK_USER_TIMEOUT"];
240
+ if (envAskUserTimeout !== undefined) {
241
+ const parsed = Number(envAskUserTimeout);
242
+ if (Number.isSafeInteger(parsed) && parsed >= 1) {
243
+ askUserTimeout = parsed * 1000;
244
+ }
245
+ }
246
+ // Resolve custom steering prompt: CLI flag only (path to file)
247
+ const cliSteeringPrompt = pi.getFlag("steering-prompt");
248
+ if (typeof cliSteeringPrompt === "string" && cliSteeringPrompt.trim()) {
249
+ try {
250
+ steeringCustomPrompt = fs.readFileSync(cliSteeringPrompt.trim(), "utf-8").trim();
251
+ }
252
+ catch (err) {
253
+ const msg = err instanceof Error ? err.message : String(err);
254
+ logWarn(`[pi-agent-flow] Could not read steering-prompt file: ${msg}`);
255
+ }
256
+ }
257
+ return {
258
+ toolOptimize,
259
+ structuredOutput,
260
+ maxConcurrency,
261
+ defaultSessionMode,
262
+ steeringEnabled,
263
+ steeringCustomPrompt,
264
+ steeringStrategicHint,
265
+ animationEnabled,
266
+ animationGlitch,
267
+ askUserEnabled,
268
+ askUserTimeout,
269
+ discoveredFlows,
270
+ loadedFlowModelConfigs,
271
+ activeRuntimeFlowMode,
272
+ projectFlowsDir: discovery.projectFlowsDir,
273
+ };
274
+ }
275
+ //# sourceMappingURL=settings-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-resolver.js","sourceRoot":"","sources":["../../src/config/settings-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/core/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;AAExE,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACvC,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IACnC,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,sDAAsD;AACtD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAetD;AA2MD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,mBAAmB,CAsBhF"}
@@ -13,6 +13,7 @@ import { parseFrontmatter } from "@mariozechner/pi-coding-agent";
13
13
  import * as fs from "node:fs";
14
14
  import * as os from "node:os";
15
15
  import * as path from "node:path";
16
+ import { logWarn } from "../config/log.js";
16
17
  /** Determine the model tier for a given flow name. */
17
18
  export function getFlowTier(flowName) {
18
19
  const normalized = flowName.toLowerCase().trim();
@@ -53,7 +54,7 @@ function getBundledFlowsDir() {
53
54
  if (import.meta.url) {
54
55
  const pluginDir = path.dirname(new URL(import.meta.url).pathname);
55
56
  // Check same directory first, then parent (for src/ layout)
56
- for (const base of [pluginDir, path.dirname(pluginDir)]) {
57
+ for (const base of [pluginDir, path.dirname(pluginDir), path.dirname(path.dirname(pluginDir))]) {
57
58
  const dir = path.join(base, "agents");
58
59
  if (fs.existsSync(dir))
59
60
  return dir;
@@ -64,7 +65,7 @@ function getBundledFlowsDir() {
64
65
  // Method 2: __dirname (CommonJS / jiti)
65
66
  try {
66
67
  if (typeof __dirname !== "undefined") {
67
- for (const base of [__dirname, path.dirname(__dirname)]) {
68
+ for (const base of [__dirname, path.dirname(__dirname), path.dirname(path.dirname(__dirname))]) {
68
69
  const dir = path.join(base, "agents");
69
70
  if (fs.existsSync(dir))
70
71
  return dir;
@@ -111,7 +112,7 @@ function parseFlowFile(filePath, source) {
111
112
  }
112
113
  catch (err) {
113
114
  const message = err instanceof Error ? err.message : String(err);
114
- console.warn(`[pi-agent-flow] Skipping invalid flow file "${filePath}": ${message}`);
115
+ logWarn(`[pi-agent-flow] Skipping invalid flow file "${filePath}": ${message}`);
115
116
  return null;
116
117
  }
117
118
  const frontmatter = parsed.frontmatter ?? {};
@@ -120,9 +121,9 @@ function parseFlowFile(filePath, source) {
120
121
  const description = typeof frontmatter.description === "string" ? frontmatter.description.trim() : "";
121
122
  if (!name || !description) {
122
123
  if (!name)
123
- console.warn(`[pi-agent-flow] Skipping flow file "${filePath}": missing or empty 'name' field.`);
124
+ logWarn(`[pi-agent-flow] Skipping flow file "${filePath}": missing or empty 'name' field.`);
124
125
  if (!description)
125
- console.warn(`[pi-agent-flow] Skipping flow file "${filePath}": missing or empty 'description' field.`);
126
+ logWarn(`[pi-agent-flow] Skipping flow file "${filePath}": missing or empty 'description' field.`);
126
127
  return null;
127
128
  }
128
129
  // Warn about unknown frontmatter keys
@@ -132,7 +133,7 @@ function parseFlowFile(filePath, source) {
132
133
  ]);
133
134
  for (const key of Object.keys(frontmatter)) {
134
135
  if (!knownKeys.has(key)) {
135
- console.warn(`[pi-agent-flow] Unknown frontmatter key "${key}" in "${filePath}". This field will be ignored.`);
136
+ logWarn(`[pi-agent-flow] Unknown frontmatter key "${key}" in "${filePath}". This field will be ignored.`);
136
137
  }
137
138
  }
138
139
  let tools;
@@ -153,7 +154,7 @@ function parseFlowFile(filePath, source) {
153
154
  tools = parsedTools;
154
155
  }
155
156
  else if (frontmatter.tools !== undefined) {
156
- console.warn(`[pi-agent-flow] Ignoring invalid tools field in "${filePath}". Expected a comma-separated string or string array.`);
157
+ logWarn(`[pi-agent-flow] Ignoring invalid tools field in "${filePath}". Expected a comma-separated string or string array.`);
157
158
  }
158
159
  let maxDepth;
159
160
  if (typeof frontmatter.maxDepth === "number") {
@@ -177,11 +178,11 @@ function parseFlowFile(filePath, source) {
177
178
  inheritContext = false;
178
179
  }
179
180
  else {
180
- console.warn(`[pi-agent-flow] Ignoring invalid inheritContext value "${frontmatter.inheritContext}" in "${filePath}". Expected true/false.`);
181
+ logWarn(`[pi-agent-flow] Ignoring invalid inheritContext value "${frontmatter.inheritContext}" in "${filePath}". Expected true/false.`);
181
182
  }
182
183
  }
183
184
  else if (frontmatter.inheritContext !== undefined) {
184
- console.warn(`[pi-agent-flow] Ignoring invalid inheritContext field in "${filePath}". Expected boolean or string.`);
185
+ logWarn(`[pi-agent-flow] Ignoring invalid inheritContext field in "${filePath}". Expected boolean or string.`);
185
186
  }
186
187
  // Tier: prefer explicit frontmatter, fall back to name-based inference
187
188
  let tier;
@@ -191,7 +192,7 @@ function parseFlowFile(filePath, source) {
191
192
  tier = normalized;
192
193
  }
193
194
  else {
194
- console.warn(`[pi-agent-flow] Ignoring invalid tier "${frontmatter.tier}" in "${filePath}". Expected lite, flash, or full.`);
195
+ logWarn(`[pi-agent-flow] Ignoring invalid tier "${frontmatter.tier}" in "${filePath}". Expected lite, flash, or full.`);
195
196
  }
196
197
  }
197
198
  return {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/core/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAyB3C,sDAAsD;AACtD,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC3C,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IACjD,QAAQ,UAAU,EAAE,CAAC;QACpB,KAAK,OAAO,CAAC;QACb,KAAK,OAAO;YACX,OAAO,MAAM,CAAC;QACf,KAAK,OAAO,CAAC;QACb,KAAK,OAAO;YACX,OAAO,OAAO,CAAC;QAChB,KAAK,OAAO,CAAC;QACb,KAAK,OAAO;YACX,OAAO,MAAM,CAAC;QACf;YACC,OAAO,OAAO,CAAC;IACjB,CAAC;AACF,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,SAAS,WAAW,CAAC,CAAS;IAC7B,IAAI,CAAC;QAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;AACrE,CAAC;AAED,SAAS,eAAe;IACvB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACxG,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AACvC,CAAC;AAED,kEAAkE;AAClE,SAAS,kBAAkB;IAC1B,kCAAkC;IAClC,0EAA0E;IAC1E,IAAI,CAAC;QACJ,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;YAClE,4DAA4D;YAC5D,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChG,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACtC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,OAAO,GAAG,CAAC;YACpC,CAAC;QACF,CAAC;IACF,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAEV,wCAAwC;IACxC,IAAI,CAAC;QACJ,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE,CAAC;YACtC,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChG,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACtC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,OAAO,GAAG,CAAC;YACpC,CAAC;QACF,CAAC;IACF,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAEV,sCAAsC;IACtC,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;QACxD,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAEV,gBAAgB;IAChB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAED,+DAA+D;AAC/D,SAAS,0BAA0B,CAAC,GAAW;IAC9C,IAAI,GAAG,GAAG,GAAG,CAAC;IACd,OAAO,IAAI,EAAE,CAAC;QACb,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,WAAW,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAChC,GAAG,GAAG,MAAM,CAAC;IACd,CAAC;AACF,CAAC;AAED,iFAAiF;AACjF,SAAS,aAAa,CAAC,QAAgB,EAAE,MAAsC;IAC9E,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IAE5E,IAAI,MAA8D,CAAC;IACnE,IAAI,CAAC;QACJ,MAAM,GAAG,gBAAgB,CAA0B,OAAO,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,CAAC,+CAA+C,QAAQ,MAAM,OAAO,EAAE,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC;IACb,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAE/B,MAAM,IAAI,GAAG,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/F,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACtG,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,uCAAuC,QAAQ,mCAAmC,CAAC,CAAC;QACvG,IAAI,CAAC,WAAW;YAAE,OAAO,CAAC,uCAAuC,QAAQ,0CAA0C,CAAC,CAAC;QACrH,OAAO,IAAI,CAAC;IACb,CAAC;IAED,sCAAsC;IACtC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;QACzB,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU;QACnD,UAAU,EAAE,gBAAgB,EAAE,MAAM;KACpC,CAAC,CAAC;IACH,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,4CAA4C,GAAG,SAAS,QAAQ,gCAAgC,CAAC,CAAC;QAC3G,CAAC;IACF,CAAC;IAED,IAAI,KAA2B,CAAC;IAChC,IAAI,OAAO,WAAW,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC3C,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK;aACnC,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC,CAAC;QAClB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,GAAG,WAAW,CAAC;IACjD,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK;aACnC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;aACjD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC,CAAC;QAClB,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,GAAG,WAAW,CAAC;IACjD,CAAC;SAAM,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5C,OAAO,CACN,oDAAoD,QAAQ,uDAAuD,CACnH,CAAC;IACH,CAAC;IAED,IAAI,QAA4B,CAAC;IACjC,IAAI,OAAO,WAAW,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9C,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;IACjC,CAAC;SAAM,IAAI,OAAO,WAAW,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;YAAE,QAAQ,GAAG,MAAM,CAAC;IAC/D,CAAC;IAED,IAAI,cAAmC,CAAC;IACxC,IAAI,OAAO,WAAW,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACrD,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC;IAC7C,CAAC;SAAM,IAAI,OAAO,WAAW,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;QAC3D,MAAM,UAAU,GAAG,WAAW,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACnE,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;YACzE,cAAc,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;YAChF,cAAc,GAAG,KAAK,CAAC;QACxB,CAAC;aAAM,CAAC;YACP,OAAO,CACN,0DAA0D,WAAW,CAAC,cAAc,SAAS,QAAQ,yBAAyB,CAC9H,CAAC;QACH,CAAC;IACF,CAAC;SAAM,IAAI,WAAW,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACrD,OAAO,CACN,6DAA6D,QAAQ,gCAAgC,CACrG,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,IAAI,IAA0B,CAAC;IAC/B,IAAI,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACzD,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;YAC9E,IAAI,GAAG,UAAU,CAAC;QACnB,CAAC;aAAM,CAAC;YACP,OAAO,CAAC,0CAA0C,WAAW,CAAC,IAAI,SAAS,QAAQ,mCAAmC,CAAC,CAAC;QACzH,CAAC;IACF,CAAC;IAED,OAAO;QACN,IAAI;QACJ,WAAW;QACX,KAAK;QACL,KAAK,EAAE,OAAO,WAAW,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;QAC5E,QAAQ,EAAE,OAAO,WAAW,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QACrF,QAAQ;QACR,cAAc;QACd,IAAI,EAAE,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC;QAC/B,YAAY,EAAE,IAAI;QAClB,MAAM;QACN,QAAQ;KACR,CAAC;AACH,CAAC;AAED,kDAAkD;AAClD,SAAS,gBAAgB,CAAC,GAAW,EAAE,MAAsC;IAC5E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,IAAI,OAAoB,CAAC;IACzB,IAAI,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;IACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAErD,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QAC1C,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;YAAE,SAAS;QAEzD,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/D,IAAI,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,GAAG,MAAsB;IAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,KAAgB;IAC1D,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAC7C,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;IACvC,MAAM,eAAe,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC;IAExD,MAAM,YAAY,GAAG,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IACjH,MAAM,SAAS,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC3G,MAAM,YAAY,GAAG,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IAErI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC;IACjD,CAAC;IACD,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,eAAe,EAAE,CAAC;IACxE,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7D,CAAC;IACD,OAAO;QACN,KAAK,EAAE,UAAU,CAAC,YAAY,EAAE,SAAS,EAAE,YAAY,CAAC;QACxD,eAAe;KACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Delegation logic extracted from flow.ts.
3
+ *
4
+ * Computes depth/canDelegate state and builds delegation-related
5
+ * prompt fragments for child flow activation.
6
+ */
7
+ import type { FlowConfig } from "./agents.js";
8
+ export interface DelegationState {
9
+ currentDepth: number;
10
+ effectiveMaxDepth: number;
11
+ canDelegate: boolean;
12
+ }
13
+ export declare function computeDelegationState(parentDepth: number, maxDepth: number): DelegationState;
14
+ export declare function buildGuardLine(currentDepth: number, effectiveMaxDepth: number, preventCycles: boolean, parentFlowStack: string[]): string;
15
+ export declare function buildDelegationRule(canDelegate: boolean, guardLine: string): string;
16
+ export declare function buildFlowListSection(canDelegate: boolean, discoveredFlows: FlowConfig[]): string;
17
+ export declare function buildLineage(flowName: string, parentFlowStack: string[]): string;
18
+ export declare function buildParentLineageHint(parentFlowStack: string[]): string;
19
+ export declare function computeChildPropagation(parentDepth: number, maxDepth: number, parentFlowStack: string[], normalizedFlowName: string): {
20
+ nextDepth: number;
21
+ propagatedMaxDepth: number;
22
+ propagatedStack: string[];
23
+ };
24
+ //# sourceMappingURL=delegation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegation.d.ts","sourceRoot":"","sources":["../../src/core/delegation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAM9C,MAAM,WAAW,eAAe;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,OAAO,CAAC;CACrB;AAMD,wBAAgB,sBAAsB,CACrC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACd,eAAe,CAKjB;AAMD,wBAAgB,cAAc,CAC7B,YAAY,EAAE,MAAM,EACpB,iBAAiB,EAAE,MAAM,EACzB,aAAa,EAAE,OAAO,EACtB,eAAe,EAAE,MAAM,EAAE,GACvB,MAAM,CAGR;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAInF;AAED,wBAAgB,oBAAoB,CACnC,WAAW,EAAE,OAAO,EACpB,eAAe,EAAE,UAAU,EAAE,GAC3B,MAAM,CAUR;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,MAAM,CAEhF;AAED,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,MAAM,CAIxE;AAMD,wBAAgB,uBAAuB,CACtC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,eAAe,EAAE,MAAM,EAAE,EACzB,kBAAkB,EAAE,MAAM,GACxB;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC1B,CAKA"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Delegation logic extracted from flow.ts.
3
+ *
4
+ * Computes depth/canDelegate state and builds delegation-related
5
+ * prompt fragments for child flow activation.
6
+ */
7
+ // ---------------------------------------------------------------------------
8
+ // Depth / delegation state
9
+ // ---------------------------------------------------------------------------
10
+ export function computeDelegationState(parentDepth, maxDepth) {
11
+ const currentDepth = Math.max(0, Math.floor(parentDepth)) + 1;
12
+ const effectiveMaxDepth = Math.max(0, Math.floor(maxDepth));
13
+ const canDelegate = currentDepth < effectiveMaxDepth;
14
+ return { currentDepth, effectiveMaxDepth, canDelegate };
15
+ }
16
+ // ---------------------------------------------------------------------------
17
+ // Prompt fragment builders
18
+ // ---------------------------------------------------------------------------
19
+ export function buildGuardLine(currentDepth, effectiveMaxDepth, preventCycles, parentFlowStack) {
20
+ const stackLabel = parentFlowStack.length > 0 ? parentFlowStack.join(" -> ") : "(root)";
21
+ return `depth ${currentDepth}/${effectiveMaxDepth} | cycles: ${preventCycles ? "blocked" : "off"} | stack: ${stackLabel}`;
22
+ }
23
+ export function buildDelegationRule(canDelegate, guardLine) {
24
+ return canDelegate
25
+ ? `You may delegate to sub-flows (${guardLine}).`
26
+ : `You may NOT delegate to sub-flows (${guardLine}).`;
27
+ }
28
+ export function buildFlowListSection(canDelegate, discoveredFlows) {
29
+ if (!canDelegate || discoveredFlows.length === 0)
30
+ return "";
31
+ return (`Available flows:\n${discoveredFlows
32
+ .map((f) => {
33
+ const badge = f.source === "project" ? " 🔒" : f.source === "user" ? " ⚙" : "";
34
+ return `- [${f.name}]${badge} — ${f.description}`;
35
+ })
36
+ .join("\n")}\n`);
37
+ }
38
+ export function buildLineage(flowName, parentFlowStack) {
39
+ return ["orchestrator", ...parentFlowStack, flowName].join(" → ");
40
+ }
41
+ export function buildParentLineageHint(parentFlowStack) {
42
+ return parentFlowStack.length > 0
43
+ ? `Spawned by: ${parentFlowStack.join(" → ")}.\n`
44
+ : "";
45
+ }
46
+ // ---------------------------------------------------------------------------
47
+ // Child env propagation
48
+ // ---------------------------------------------------------------------------
49
+ export function computeChildPropagation(parentDepth, maxDepth, parentFlowStack, normalizedFlowName) {
50
+ const nextDepth = Math.max(0, Math.floor(parentDepth)) + 1;
51
+ const propagatedMaxDepth = Math.max(0, Math.floor(maxDepth));
52
+ const propagatedStack = [...parentFlowStack, normalizedFlowName];
53
+ return { nextDepth, propagatedMaxDepth, propagatedStack };
54
+ }
55
+ //# sourceMappingURL=delegation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegation.js","sourceRoot":"","sources":["../../src/core/delegation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"depth.d.ts","sourceRoot":"","sources":["../../src/core/depth.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAOlE,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,gCAAgC,OAAO,CAAC;AACrD,eAAO,MAAM,cAAc,kBAAkB,CAAC;AAC9C,eAAO,MAAM,kBAAkB,sBAAsB,CAAC;AACtD,eAAO,MAAM,cAAc,kBAAkB,CAAC;AAC9C,eAAO,MAAM,uBAAuB,2BAA2B,CAAC;AAChE,eAAO,MAAM,sBAAsB,0BAA0B,CAAC;AAM9D,MAAM,WAAW,eAAe;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,aAAa,EAAE,OAAO,CAAC;CACvB;AAMD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAM/D;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAOzD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,GAAG,IAAI,CAiB5D;AAuCD,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,YAAY,GAAG,eAAe,CAmGxE"}
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * Extracted from index.ts for single-responsibility and testability.
5
5
  */
6
+ import { logWarn } from "../config/log.js";
6
7
  // ---------------------------------------------------------------------------
7
8
  // Constants
8
9
  // ---------------------------------------------------------------------------
@@ -96,23 +97,23 @@ export function resolveFlowDepthConfig(pi) {
96
97
  const depthRaw = process.env[FLOW_DEPTH_ENV];
97
98
  const parsedDepth = parseNonNegativeInt(depthRaw);
98
99
  if (depthRaw !== undefined && parsedDepth === null) {
99
- console.warn(`[pi-agent-flow] Ignoring invalid ${FLOW_DEPTH_ENV}="${depthRaw}". Expected a non-negative integer.`);
100
+ logWarn(`[pi-agent-flow] Ignoring invalid ${FLOW_DEPTH_ENV}="${depthRaw}". Expected a non-negative integer.`);
100
101
  }
101
102
  const currentDepth = parsedDepth ?? 0;
102
103
  const stackRaw = process.env[FLOW_STACK_ENV];
103
104
  const ancestorFlowStack = parseFlowStack(stackRaw);
104
105
  if (stackRaw !== undefined && ancestorFlowStack === null) {
105
- console.warn(`[pi-agent-flow] Ignoring invalid ${FLOW_STACK_ENV} value. Expected a JSON array of flow names.`);
106
+ logWarn(`[pi-agent-flow] Ignoring invalid ${FLOW_STACK_ENV} value. Expected a JSON array of flow names.`);
106
107
  }
107
108
  const envMaxDepthRaw = process.env[FLOW_MAX_DEPTH_ENV];
108
109
  const envMaxDepth = parseNonNegativeInt(envMaxDepthRaw);
109
110
  if (envMaxDepthRaw !== undefined && envMaxDepth === null) {
110
- console.warn(`[pi-agent-flow] Ignoring invalid ${FLOW_MAX_DEPTH_ENV}="${envMaxDepthRaw}". Expected a non-negative integer.`);
111
+ logWarn(`[pi-agent-flow] Ignoring invalid ${FLOW_MAX_DEPTH_ENV}="${envMaxDepthRaw}". Expected a non-negative integer.`);
111
112
  }
112
113
  const argvFlagRaw = getMaxDepthFlagFromArgv(process.argv);
113
114
  const argvFlagMaxDepth = argvFlagRaw !== null ? parseNonNegativeInt(argvFlagRaw) : null;
114
115
  if (argvFlagRaw !== null && argvFlagMaxDepth === null) {
115
- console.warn(`[pi-agent-flow] Ignoring invalid --flow-max-depth value "${argvFlagRaw}". Expected a non-negative integer.`);
116
+ logWarn(`[pi-agent-flow] Ignoring invalid --flow-max-depth value "${argvFlagRaw}". Expected a non-negative integer.`);
116
117
  }
117
118
  const runtimeFlagValue = pi.getFlag("flow-max-depth");
118
119
  const runtimeFlagMaxDepth = typeof runtimeFlagValue === "string"
@@ -121,12 +122,12 @@ export function resolveFlowDepthConfig(pi) {
121
122
  if (argvFlagRaw === null &&
122
123
  typeof runtimeFlagValue === "string" &&
123
124
  runtimeFlagMaxDepth === null) {
124
- console.warn(`[pi-agent-flow] Ignoring invalid --flow-max-depth value "${runtimeFlagValue}". Expected a non-negative integer.`);
125
+ logWarn(`[pi-agent-flow] Ignoring invalid --flow-max-depth value "${runtimeFlagValue}". Expected a non-negative integer.`);
125
126
  }
126
127
  const envPreventCyclesRaw = process.env[FLOW_PREVENT_CYCLES_ENV];
127
128
  const envPreventCycles = parseBoolean(envPreventCyclesRaw);
128
129
  if (envPreventCyclesRaw !== undefined && envPreventCycles === null) {
129
- console.warn(`[pi-agent-flow] Ignoring invalid ${FLOW_PREVENT_CYCLES_ENV}="${envPreventCyclesRaw}". Expected true/false.`);
130
+ logWarn(`[pi-agent-flow] Ignoring invalid ${FLOW_PREVENT_CYCLES_ENV}="${envPreventCyclesRaw}". Expected true/false.`);
130
131
  }
131
132
  const argvPreventCyclesRaw = getPreventCyclesFlagFromArgv(process.argv);
132
133
  const argvPreventCycles = typeof argvPreventCyclesRaw === "boolean"
@@ -134,14 +135,14 @@ export function resolveFlowDepthConfig(pi) {
134
135
  : parseBoolean(argvPreventCyclesRaw);
135
136
  if (typeof argvPreventCyclesRaw === "string" &&
136
137
  argvPreventCycles === null) {
137
- console.warn(`[pi-agent-flow] Ignoring invalid --flow-prevent-cycles value "${argvPreventCyclesRaw}". Expected true/false.`);
138
+ logWarn(`[pi-agent-flow] Ignoring invalid --flow-prevent-cycles value "${argvPreventCyclesRaw}". Expected true/false.`);
138
139
  }
139
140
  const runtimePreventCyclesRaw = pi.getFlag("flow-prevent-cycles");
140
141
  const runtimePreventCycles = parseBoolean(runtimePreventCyclesRaw);
141
142
  if (argvPreventCyclesRaw === null &&
142
143
  runtimePreventCyclesRaw !== undefined &&
143
144
  runtimePreventCycles === null) {
144
- console.warn(`[pi-agent-flow] Ignoring invalid --flow-prevent-cycles value "${String(runtimePreventCyclesRaw)}". Expected true/false.`);
145
+ logWarn(`[pi-agent-flow] Ignoring invalid --flow-prevent-cycles value "${String(runtimePreventCyclesRaw)}". Expected true/false.`);
145
146
  }
146
147
  const flagMaxDepth = argvFlagMaxDepth ?? runtimeFlagMaxDepth;
147
148
  const maxDepth = flagMaxDepth ?? envMaxDepth ?? DEFAULT_MAX_DELEGATION_DEPTH;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"depth.js","sourceRoot":"","sources":["../../src/core/depth.ts"],"names":[],"mappings":"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"}
@@ -6,9 +6,11 @@
6
6
  * and telemetry.
7
7
  */
8
8
  import type { FlowConfig } from "./agents.js";
9
- import type { SingleResult, FlowDetails, CompressedFlowResult, FlowMetrics } from "./types.js";
10
- import { type LoadedFlowModelConfigs } from "./config.js";
9
+ import type { SingleResult, FlowDetails, FlowMetrics } from "../types/flow.js";
10
+ import type { CompressedFlowResult } from "../types/output.js";
11
+ import { type LoadedFlowModelConfigs } from "../config/config.js";
11
12
  import { type AgentSessionMode } from "./session-mode.js";
13
+ import type { GoalContext } from '../flow/types.js';
12
14
  export interface FlowExecutorDeps {
13
15
  /** All discovered flow configs. */
14
16
  flows: FlowConfig[];
@@ -50,10 +52,11 @@ export interface FlowExecutorDeps {
50
52
  flowResultCache: Map<string, CompressedFlowResult[]>;
51
53
  /** Project flows directory. */
52
54
  projectFlowsDir: string | null;
53
- /** Session manager for fork snapshot. */
55
+ /** Session manager for fork snapshot and session identification. */
54
56
  sessionManager: {
55
57
  getHeader: () => unknown;
56
58
  getBranch: () => unknown[];
59
+ getSessionId: () => string;
57
60
  };
58
61
  /** Whether UI is available for confirmation. */
59
62
  hasUI: boolean;
@@ -63,6 +66,10 @@ export interface FlowExecutorDeps {
63
66
  onFlowMetrics?: (metrics: FlowMetrics) => void;
64
67
  /** Whether to prompt the user before running project-local flows. Default: true. */
65
68
  confirmProjectFlows?: boolean;
69
+ /** Optional callback invoked after all flows complete to record goal usage. */
70
+ goalContinuationCallback?: (results: SingleResult[]) => Promise<void>;
71
+ /** Optional active goal context to inject into child flow prompts. */
72
+ goalContext?: GoalContext;
66
73
  }
67
74
  export interface ExecuteFlowParams {
68
75
  type: string;
@@ -79,7 +86,10 @@ export interface ExecuteFlowResult {
79
86
  }>;
80
87
  details: FlowDetails;
81
88
  isError?: boolean;
89
+ _toolCallId?: string;
82
90
  }
91
+ /** Evict oldest entries from the cache when it exceeds the cap. */
92
+ export declare function evictCacheOverflow(cache: Map<string, unknown>): void;
83
93
  /**
84
94
  * Execute a set of flow tasks with full orchestration: cycle detection,
85
95
  * project confirmation, parallel execution with model failover, and telemetry.