pi-agent-flow 2.2.14 → 2.2.16

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 (254) hide show
  1. package/README.md +12 -0
  2. package/dist/batch/apply-patch.d.ts +2 -1
  3. package/dist/batch/apply-patch.d.ts.map +1 -1
  4. package/dist/batch/batch-bash.d.ts.map +1 -1
  5. package/dist/batch/batch-bash.js +9 -43
  6. package/dist/batch/batch-bash.js.map +1 -1
  7. package/dist/batch/constants.d.ts +9 -1
  8. package/dist/batch/constants.d.ts.map +1 -1
  9. package/dist/batch/constants.js +7 -0
  10. package/dist/batch/constants.js.map +1 -1
  11. package/dist/batch/execute.d.ts +1 -13
  12. package/dist/batch/execute.d.ts.map +1 -1
  13. package/dist/batch/execute.js +87 -28
  14. package/dist/batch/execute.js.map +1 -1
  15. package/dist/batch/index.d.ts.map +1 -1
  16. package/dist/batch/index.js +16 -14
  17. package/dist/batch/index.js.map +1 -1
  18. package/dist/batch/render.d.ts.map +1 -1
  19. package/dist/batch/render.js.map +1 -1
  20. package/dist/batch/summary.d.ts +0 -6
  21. package/dist/batch/summary.d.ts.map +1 -1
  22. package/dist/batch/summary.js +3 -3
  23. package/dist/batch/summary.js.map +1 -1
  24. package/dist/batch/symbols.d.ts.map +1 -1
  25. package/dist/batch/symbols.js +3 -1
  26. package/dist/batch/symbols.js.map +1 -1
  27. package/dist/batch/truncate-output.d.ts +31 -0
  28. package/dist/batch/truncate-output.d.ts.map +1 -0
  29. package/dist/batch/truncate-output.js +120 -0
  30. package/dist/batch/truncate-output.js.map +1 -0
  31. package/dist/config/config.d.ts +2 -1
  32. package/dist/config/config.d.ts.map +1 -1
  33. package/dist/config/config.js +10 -24
  34. package/dist/config/config.js.map +1 -1
  35. package/dist/config/models.d.ts.map +1 -1
  36. package/dist/config/models.js +7 -5
  37. package/dist/config/models.js.map +1 -1
  38. package/dist/config/paths.d.ts +3 -0
  39. package/dist/config/paths.d.ts.map +1 -0
  40. package/dist/config/paths.js +9 -0
  41. package/dist/config/paths.js.map +1 -0
  42. package/dist/config/resolver-helpers.d.ts +44 -0
  43. package/dist/config/resolver-helpers.d.ts.map +1 -0
  44. package/dist/config/resolver-helpers.js +135 -0
  45. package/dist/config/resolver-helpers.js.map +1 -0
  46. package/dist/config/settings-resolver.d.ts +0 -6
  47. package/dist/config/settings-resolver.d.ts.map +1 -1
  48. package/dist/config/settings-resolver.js +27 -256
  49. package/dist/config/settings-resolver.js.map +1 -1
  50. package/dist/core2/snapshot.d.ts +0 -2
  51. package/dist/core2/snapshot.d.ts.map +1 -1
  52. package/dist/core2/snapshot.js +91 -24
  53. package/dist/core2/snapshot.js.map +1 -1
  54. package/dist/flow/agents.d.ts +1 -1
  55. package/dist/flow/agents.d.ts.map +1 -1
  56. package/dist/flow/agents.js +18 -9
  57. package/dist/flow/agents.js.map +1 -1
  58. package/dist/flow/audit-formatters.d.ts +20 -0
  59. package/dist/flow/audit-formatters.d.ts.map +1 -0
  60. package/dist/flow/audit-formatters.js +123 -0
  61. package/dist/flow/audit-formatters.js.map +1 -0
  62. package/dist/flow/complexity.d.ts +3 -2
  63. package/dist/flow/complexity.d.ts.map +1 -1
  64. package/dist/flow/complexity.js +1 -1
  65. package/dist/flow/complexity.js.map +1 -1
  66. package/dist/flow/continuation.d.ts.map +1 -1
  67. package/dist/flow/continuation.js +6 -4
  68. package/dist/flow/continuation.js.map +1 -1
  69. package/dist/flow/cycle-guard.d.ts +20 -0
  70. package/dist/flow/cycle-guard.d.ts.map +1 -0
  71. package/dist/flow/cycle-guard.js +56 -0
  72. package/dist/flow/cycle-guard.js.map +1 -0
  73. package/dist/flow/depth.d.ts +0 -1
  74. package/dist/flow/depth.d.ts.map +1 -1
  75. package/dist/flow/depth.js +3 -2
  76. package/dist/flow/depth.js.map +1 -1
  77. package/dist/flow/dump-io.d.ts +15 -0
  78. package/dist/flow/dump-io.d.ts.map +1 -0
  79. package/dist/flow/dump-io.js +169 -0
  80. package/dist/flow/dump-io.js.map +1 -0
  81. package/dist/flow/execute-single.d.ts +8 -0
  82. package/dist/flow/execute-single.d.ts.map +1 -0
  83. package/dist/flow/execute-single.js +132 -0
  84. package/dist/flow/execute-single.js.map +1 -0
  85. package/dist/flow/executor.d.ts +3 -62
  86. package/dist/flow/executor.d.ts.map +1 -1
  87. package/dist/flow/executor.js +36 -342
  88. package/dist/flow/executor.js.map +1 -1
  89. package/dist/flow/flow-args.d.ts +14 -0
  90. package/dist/flow/flow-args.d.ts.map +1 -0
  91. package/dist/flow/flow-args.js +119 -0
  92. package/dist/flow/flow-args.js.map +1 -0
  93. package/dist/flow/flow-live.d.ts +18 -0
  94. package/dist/flow/flow-live.d.ts.map +1 -0
  95. package/dist/flow/flow-live.js +46 -0
  96. package/dist/flow/flow-live.js.map +1 -0
  97. package/dist/flow/process-lifecycle.d.ts +28 -0
  98. package/dist/flow/process-lifecycle.d.ts.map +1 -0
  99. package/dist/flow/process-lifecycle.js +114 -0
  100. package/dist/flow/process-lifecycle.js.map +1 -0
  101. package/dist/flow/runner.d.ts +4 -54
  102. package/dist/flow/runner.d.ts.map +1 -1
  103. package/dist/flow/runner.js +55 -517
  104. package/dist/flow/runner.js.map +1 -1
  105. package/dist/flow/settings-command.d.ts +2 -24
  106. package/dist/flow/settings-command.d.ts.map +1 -1
  107. package/dist/flow/settings-command.js +14 -716
  108. package/dist/flow/settings-command.js.map +1 -1
  109. package/dist/flow/settings-handler.d.ts +9 -0
  110. package/dist/flow/settings-handler.d.ts.map +1 -0
  111. package/dist/flow/settings-handler.js +377 -0
  112. package/dist/flow/settings-handler.js.map +1 -0
  113. package/dist/flow/settings-items.d.ts +42 -0
  114. package/dist/flow/settings-items.d.ts.map +1 -0
  115. package/dist/flow/settings-items.js +380 -0
  116. package/dist/flow/settings-items.js.map +1 -0
  117. package/dist/flow/spawn-utils.d.ts +17 -0
  118. package/dist/flow/spawn-utils.d.ts.map +1 -0
  119. package/dist/flow/spawn-utils.js +40 -0
  120. package/dist/flow/spawn-utils.js.map +1 -0
  121. package/dist/flow/store.d.ts.map +1 -1
  122. package/dist/flow/store.js +2 -8
  123. package/dist/flow/store.js.map +1 -1
  124. package/dist/flow/transition.d.ts +0 -1
  125. package/dist/flow/transition.d.ts.map +1 -1
  126. package/dist/flow/transition.js +0 -3
  127. package/dist/flow/transition.js.map +1 -1
  128. package/dist/index.d.ts +3 -0
  129. package/dist/index.d.ts.map +1 -1
  130. package/dist/index.js +94 -57
  131. package/dist/index.js.map +1 -1
  132. package/dist/io/atomic-write.d.ts +10 -0
  133. package/dist/io/atomic-write.d.ts.map +1 -0
  134. package/dist/io/atomic-write.js +30 -0
  135. package/dist/io/atomic-write.js.map +1 -0
  136. package/dist/notify/notify.d.ts.map +1 -1
  137. package/dist/notify/notify.js +1 -4
  138. package/dist/notify/notify.js.map +1 -1
  139. package/dist/snapshot/cli-args.d.ts +1 -2
  140. package/dist/snapshot/cli-args.d.ts.map +1 -1
  141. package/dist/snapshot/runner-events.d.ts +10 -0
  142. package/dist/snapshot/runner-events.d.ts.map +1 -1
  143. package/dist/snapshot/runner-events.js +112 -30
  144. package/dist/snapshot/runner-events.js.map +1 -1
  145. package/dist/snapshot/structured-output.d.ts.map +1 -1
  146. package/dist/snapshot/structured-output.js +3 -1
  147. package/dist/snapshot/structured-output.js.map +1 -1
  148. package/dist/snapshot/trace-output.d.ts.map +1 -1
  149. package/dist/snapshot/trace-output.js +8 -4
  150. package/dist/snapshot/trace-output.js.map +1 -1
  151. package/dist/steering/sliding-prompt.d.ts.map +1 -1
  152. package/dist/steering/sliding-prompt.js +12 -15
  153. package/dist/steering/sliding-prompt.js.map +1 -1
  154. package/dist/steering/tool-utils.d.ts +3 -3
  155. package/dist/steering/tool-utils.d.ts.map +1 -1
  156. package/dist/steering/tool-utils.js +3 -3
  157. package/dist/steering/tool-utils.js.map +1 -1
  158. package/dist/tools/ask-user.js.map +1 -1
  159. package/dist/tools/timed-bash.d.ts.map +1 -1
  160. package/dist/tools/timed-bash.js +8 -3
  161. package/dist/tools/timed-bash.js.map +1 -1
  162. package/dist/tools/trace.d.ts +0 -1
  163. package/dist/tools/trace.d.ts.map +1 -1
  164. package/dist/tools/trace.js +79 -62
  165. package/dist/tools/trace.js.map +1 -1
  166. package/dist/tools/web-ops.d.ts +0 -49
  167. package/dist/tools/web-ops.d.ts.map +1 -1
  168. package/dist/tools/web-ops.js +9 -9
  169. package/dist/tools/web-ops.js.map +1 -1
  170. package/dist/tui/body-render.d.ts +31 -0
  171. package/dist/tui/body-render.d.ts.map +1 -0
  172. package/dist/tui/body-render.js +589 -0
  173. package/dist/tui/body-render.js.map +1 -0
  174. package/dist/tui/context-display.d.ts +18 -0
  175. package/dist/tui/context-display.d.ts.map +1 -0
  176. package/dist/tui/context-display.js +29 -0
  177. package/dist/tui/context-display.js.map +1 -0
  178. package/dist/tui/flow-colors.d.ts +6 -1
  179. package/dist/tui/flow-colors.d.ts.map +1 -1
  180. package/dist/tui/flow-colors.js +1 -0
  181. package/dist/tui/flow-colors.js.map +1 -1
  182. package/dist/tui/flow-live-state.d.ts +36 -0
  183. package/dist/tui/flow-live-state.d.ts.map +1 -0
  184. package/dist/tui/flow-live-state.js +53 -0
  185. package/dist/tui/flow-live-state.js.map +1 -0
  186. package/dist/tui/grouping.d.ts +27 -0
  187. package/dist/tui/grouping.d.ts.map +1 -0
  188. package/dist/tui/grouping.js +191 -0
  189. package/dist/tui/grouping.js.map +1 -0
  190. package/dist/tui/header.d.ts +25 -0
  191. package/dist/tui/header.d.ts.map +1 -0
  192. package/dist/tui/header.js +95 -0
  193. package/dist/tui/header.js.map +1 -0
  194. package/dist/tui/render-utils.d.ts +1 -0
  195. package/dist/tui/render-utils.d.ts.map +1 -1
  196. package/dist/tui/render-utils.js +4 -5
  197. package/dist/tui/render-utils.js.map +1 -1
  198. package/dist/tui/render.d.ts +19 -33
  199. package/dist/tui/render.d.ts.map +1 -1
  200. package/dist/tui/render.js +112 -1014
  201. package/dist/tui/render.js.map +1 -1
  202. package/dist/tui/scramble/animation-status.d.ts +5 -0
  203. package/dist/tui/scramble/animation-status.d.ts.map +1 -0
  204. package/dist/tui/scramble/animation-status.js +93 -0
  205. package/dist/tui/scramble/animation-status.js.map +1 -0
  206. package/dist/tui/scramble/constants.d.ts +0 -4
  207. package/dist/tui/scramble/constants.d.ts.map +1 -1
  208. package/dist/tui/scramble/constants.js +3 -3
  209. package/dist/tui/scramble/constants.js.map +1 -1
  210. package/dist/tui/scramble/dynamic-text.d.ts +10 -0
  211. package/dist/tui/scramble/dynamic-text.d.ts.map +1 -0
  212. package/dist/tui/scramble/dynamic-text.js +19 -0
  213. package/dist/tui/scramble/dynamic-text.js.map +1 -0
  214. package/dist/tui/scramble/index.d.ts +8 -2
  215. package/dist/tui/scramble/index.d.ts.map +1 -1
  216. package/dist/tui/scramble/index.js +8 -1
  217. package/dist/tui/scramble/index.js.map +1 -1
  218. package/dist/tui/scramble/lifecycle.d.ts +4 -0
  219. package/dist/tui/scramble/lifecycle.d.ts.map +1 -0
  220. package/dist/tui/scramble/lifecycle.js +75 -0
  221. package/dist/tui/scramble/lifecycle.js.map +1 -0
  222. package/dist/tui/scramble/line-state.d.ts +5 -0
  223. package/dist/tui/scramble/line-state.d.ts.map +1 -0
  224. package/dist/tui/scramble/line-state.js +99 -0
  225. package/dist/tui/scramble/line-state.js.map +1 -0
  226. package/dist/tui/scramble/manager.d.ts +3 -14
  227. package/dist/tui/scramble/manager.d.ts.map +1 -1
  228. package/dist/tui/scramble/manager.js +22 -405
  229. package/dist/tui/scramble/manager.js.map +1 -1
  230. package/dist/tui/scramble/singleton.d.ts +3 -0
  231. package/dist/tui/scramble/singleton.d.ts.map +1 -0
  232. package/dist/tui/scramble/singleton.js +3 -0
  233. package/dist/tui/scramble/singleton.js.map +1 -0
  234. package/dist/tui/scramble/timer.d.ts +6 -0
  235. package/dist/tui/scramble/timer.d.ts.map +1 -0
  236. package/dist/tui/scramble/timer.js +28 -0
  237. package/dist/tui/scramble/timer.js.map +1 -0
  238. package/dist/tui/scramble/utils.d.ts +0 -2
  239. package/dist/tui/scramble/utils.d.ts.map +1 -1
  240. package/dist/tui/scramble/utils.js +0 -9
  241. package/dist/tui/scramble/utils.js.map +1 -1
  242. package/dist/tui/scramble/value-flash.d.ts +6 -0
  243. package/dist/tui/scramble/value-flash.d.ts.map +1 -0
  244. package/dist/tui/scramble/value-flash.js +141 -0
  245. package/dist/tui/scramble/value-flash.js.map +1 -0
  246. package/dist/tui/traces.d.ts +13 -0
  247. package/dist/tui/traces.d.ts.map +1 -0
  248. package/dist/tui/traces.js +97 -0
  249. package/dist/tui/traces.js.map +1 -0
  250. package/dist/types/ui.d.ts +0 -4
  251. package/dist/types/ui.d.ts.map +1 -1
  252. package/dist/types/ui.js +1 -30
  253. package/dist/types/ui.js.map +1 -1
  254. package/package.json +5 -1
@@ -27,12 +27,6 @@ export interface ResolvedSettings {
27
27
  traceEnabled: boolean;
28
28
  batchReadEnabled: boolean;
29
29
  }
30
- /**
31
- * Resolve all flow settings from env vars, CLI flags, and settings files.
32
- *
33
- * Called from the session_start handler. Returns the resolved settings
34
- * plus discovered flows and model configs.
35
- */
36
30
  export declare function resolveSettings(pi: ExtensionAPI, cwd: string): ResolvedSettings & {
37
31
  projectFlowsDir: string | null;
38
32
  };
@@ -1 +1 @@
1
- {"version":3,"file":"settings-resolver.d.ts","sourceRoot":"","sources":["../../src/config/settings-resolver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAQN,KAAK,sBAAsB,EAC3B,MAAM,aAAa,CAAC;AAIrB,OAAO,EAGN,KAAK,UAAU,EACf,MAAM,uBAAuB,CAAC;AAc/B,MAAM,WAAW,gBAAgB;IAChC,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,UAAU,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,UAAU,EAAE,CAAC;IAC9B,sBAAsB,EAAE,sBAAsB,CAAC;IAC/C,qBAAqB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;CAC1B;AAMD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC9B,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,MAAM,GACT,gBAAgB,GAAG;IAAE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAoUvD"}
1
+ {"version":3,"file":"settings-resolver.d.ts","sourceRoot":"","sources":["../../src/config/settings-resolver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,KAAK,UAAU,EAAiB,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAQN,KAAK,sBAAsB,EAC3B,MAAM,aAAa,CAAC;AAErB,OAAO,EAAmB,KAAK,UAAU,EAAsB,MAAM,uBAAuB,CAAC;AAY7F,MAAM,WAAW,gBAAgB;IAChC,YAAY,EAAE,OAAO,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IACzE,iBAAiB,EAAE,UAAU,CAAC;IAAC,eAAe,EAAE,OAAO,CAAC;IACxD,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,qBAAqB,EAAE,OAAO,CAAC;IACzE,gBAAgB,EAAE,OAAO,CAAC;IAAC,eAAe,EAAE,OAAO,CAAC;IACpD,cAAc,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAChD,eAAe,EAAE,UAAU,EAAE,CAAC;IAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAC9E,qBAAqB,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1E,SAAS,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,OAAO,CAAC;IAAC,gBAAgB,EAAE,OAAO,CAAC;CACrE;AAED,wBAAgB,eAAe,CAC9B,EAAE,EAAE,YAAY,EAChB,GAAG,EAAE,MAAM,GACT,gBAAgB,GAAG;IAAE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CA6GvD"}
@@ -8,45 +8,18 @@ import * as fs from "node:fs";
8
8
  import { discoverFlows } from "../flow/agents.js";
9
9
  import { loadFlowModelConfigs, loadFlowSettings, loadProjectFlowModelConfigName, normalizeFlowModeName, selectFlowModelStrategy, writeGlobalFlowMode, formatFlowModelStrategy, } from "./config.js";
10
10
  import { getInheritedCliArgs } from "../snapshot/cli-args.js";
11
- import { parseBoolean, FLOW_TOOL_OPTIMIZE_ENV } from "../flow/depth.js";
11
+ import { parseComplexity, DEFAULT_COMPLEXITY } from "../flow/complexity.js";
12
12
  import { logWarn } from "./log.js";
13
- import { DEFAULT_COMPLEXITY, parseComplexity, } from "../flow/complexity.js";
14
- // Environment variables for steering and animation
13
+ import { resolveBoolean, resolveString, resolveNumber } from "./resolver-helpers.js";
15
14
  const PI_FLOW_NO_STEERING_ENV = "PI_FLOW_NO_STEERING";
16
15
  const PI_FLOW_NO_STRATEGIC_HINT_ENV = "PI_FLOW_NO_STRATEGIC_HINT";
17
16
  const PI_FLOW_NO_ANIMATION_ENV = "PI_FLOW_NO_ANIMATION";
18
17
  const PI_FLOW_NO_GLITCH_ENV = "PI_FLOW_NO_GLITCH";
19
18
  const PI_FLOW_TOOLS_TRACE_ENV = "PI_FLOW_TOOLS_TRACE";
20
19
  const PI_FLOW_TOOLS_BATCH_READ_ENV = "PI_FLOW_TOOLS_BATCH_READ";
21
- // ---------------------------------------------------------------------------
22
- // Resolution
23
- // ---------------------------------------------------------------------------
24
- /**
25
- * Resolve all flow settings from env vars, CLI flags, and settings files.
26
- *
27
- * Called from the session_start handler. Returns the resolved settings
28
- * plus discovered flows and model configs.
29
- */
20
+ const PI_FLOW_TOOL_OPTIMIZE_ENV = "PI_FLOW_TOOL_OPTIMIZE";
30
21
  export function resolveSettings(pi, cwd) {
31
22
  const inheritedCliArgs = getInheritedCliArgs();
32
- let toolOptimize = true;
33
- let structuredOutput = true;
34
- let maxConcurrency = 4;
35
- let defaultComplexity = DEFAULT_COMPLEXITY;
36
- let steeringEnabled = true;
37
- let steeringCustomPrompt = undefined;
38
- let steeringStrategicHint = true;
39
- let animationEnabled = true;
40
- let animationGlitch = true;
41
- let askUserEnabled = false;
42
- let askUserTimeout = 300000; // 5 minutes in ms
43
- const envToolOptimize = process.env[FLOW_TOOL_OPTIMIZE_ENV];
44
- if (envToolOptimize !== undefined) {
45
- const parsed = parseBoolean(envToolOptimize);
46
- if (parsed !== null)
47
- toolOptimize = parsed;
48
- }
49
- // Auto-discover flows
50
23
  const discovery = discoverFlows(cwd, "all");
51
24
  const discoveredFlows = discovery.flows;
52
25
  let loadedFlowModelConfigs = loadFlowModelConfigs(cwd);
@@ -77,51 +50,10 @@ export function resolveSettings(pi, cwd) {
77
50
  loadedFlowModelConfigs = selectFlowModelStrategy(loadedFlowModelConfigs.configs, requestedFlowMode);
78
51
  }
79
52
  }
80
- // Resolve settings from .pi/settings.json
81
53
  const flowSettings = loadFlowSettings(cwd);
82
- if (typeof flowSettings.structuredOutput === "boolean") {
83
- structuredOutput = flowSettings.structuredOutput;
84
- }
85
- if (typeof flowSettings.maxConcurrency === "number") {
86
- maxConcurrency = flowSettings.maxConcurrency;
87
- }
88
- // steering defaults from settings.json
89
- if (typeof flowSettings.steering?.enabled === "boolean") {
90
- steeringEnabled = flowSettings.steering.enabled;
91
- }
92
- if (typeof flowSettings.steering?.customPrompt === "string") {
93
- steeringCustomPrompt = flowSettings.steering.customPrompt;
94
- }
95
- if (typeof flowSettings.steering?.strategicHint === "boolean") {
96
- steeringStrategicHint = flowSettings.steering.strategicHint;
97
- }
98
- // animation defaults from settings.json
99
- if (typeof flowSettings.animation?.enabled === "boolean") {
100
- animationEnabled = flowSettings.animation.enabled;
101
- }
102
- if (typeof flowSettings.animation?.glitch === "boolean") {
103
- animationGlitch = flowSettings.animation.glitch;
104
- }
105
- // Resolve toolOptimize: CLI flag > env var > settings.json > default
106
- const cliFlag = pi.getFlag("tool-optimize");
107
- if (typeof flowSettings.toolOptimize === "boolean") {
108
- toolOptimize = flowSettings.toolOptimize;
109
- }
110
- if (envToolOptimize !== undefined) {
111
- const parsed = parseBoolean(envToolOptimize);
112
- if (parsed !== null)
113
- toolOptimize = parsed;
114
- }
115
- if (typeof cliFlag === "boolean") {
116
- toolOptimize = cliFlag;
117
- }
118
- else if (typeof cliFlag === "string") {
119
- const parsed = parseBoolean(cliFlag);
120
- if (parsed !== null)
121
- toolOptimize = parsed;
122
- }
54
+ const ctx = { pi, settings: flowSettings };
123
55
  // Resolve complexity: CLI flag > env var > settings.json > default
124
- defaultComplexity = flowSettings.complexity ?? DEFAULT_COMPLEXITY;
56
+ let defaultComplexity = flowSettings.complexity ?? DEFAULT_COMPLEXITY;
125
57
  const envComplexityRaw = process.env.PI_FLOW_COMPLEXITY;
126
58
  if (envComplexityRaw !== undefined) {
127
59
  const envComplexity = parseComplexity(envComplexityRaw);
@@ -145,107 +77,27 @@ export function resolveSettings(pi, cwd) {
145
77
  else if (inheritedCliArgs.flowComplexity !== undefined) {
146
78
  defaultComplexity = inheritedCliArgs.flowComplexity;
147
79
  }
148
- // Resolve maxConcurrency: CLI flag > env var > settings.json > default
149
- const cliConcurrency = pi.getFlag("flow-max-concurrency");
150
- if (typeof cliConcurrency === "string") {
151
- const parsed = Number(cliConcurrency);
152
- if (Number.isSafeInteger(parsed) && parsed >= 1)
153
- maxConcurrency = parsed;
154
- }
155
- else if (typeof cliConcurrency === "number" && Number.isSafeInteger(cliConcurrency) && cliConcurrency >= 1) {
156
- maxConcurrency = cliConcurrency;
157
- }
158
- const envConcurrency = process.env["PI_FLOW_MAX_CONCURRENCY"];
159
- if (envConcurrency !== undefined && typeof cliConcurrency === "undefined") {
160
- const parsed = Number(envConcurrency);
161
- if (Number.isSafeInteger(parsed) && parsed >= 1)
162
- maxConcurrency = parsed;
163
- }
164
- // Cap concurrency to the number of available CPUs
80
+ const toolOptimize = resolveBoolean(ctx, { cliFlag: "tool-optimize", envVar: PI_FLOW_TOOL_OPTIMIZE_ENV, settingsPath: ["toolOptimize"], defaultValue: true });
81
+ const structuredOutput = resolveBoolean(ctx, { envVar: "PI_FLOW_STRUCTURED_OUTPUT", settingsPath: ["structuredOutput"], defaultValue: true });
82
+ let maxConcurrency = resolveNumber(ctx, { cliFlag: "flow-max-concurrency", envVar: "PI_FLOW_MAX_CONCURRENCY", settingsPath: ["maxConcurrency"], defaultValue: 4, min: 1 });
165
83
  if (typeof os.availableParallelism === "function") {
166
84
  const hwConcurrency = os.availableParallelism();
167
85
  if (hwConcurrency > 0)
168
86
  maxConcurrency = Math.min(maxConcurrency, hwConcurrency);
169
87
  }
170
- // Resolve steering: CLI flag > env var > settings.json > default
171
- const envNoSteering = process.env[PI_FLOW_NO_STEERING_ENV];
172
- if (envNoSteering !== undefined) {
173
- const parsed = parseBoolean(envNoSteering);
174
- if (parsed !== null)
175
- steeringEnabled = !parsed; // env is "NO" steering, so invert
176
- }
177
- const cliNoSteering = pi.getFlag("no-steering");
178
- if (typeof cliNoSteering === "boolean") {
179
- steeringEnabled = !cliNoSteering;
180
- }
181
- else if (typeof cliNoSteering === "string") {
182
- const parsed = parseBoolean(cliNoSteering);
183
- if (parsed !== null)
184
- steeringEnabled = !parsed;
185
- }
186
- // Resolve strategic hint: CLI flag > env var > settings.json > default
187
- const envNoStrategicHint = process.env[PI_FLOW_NO_STRATEGIC_HINT_ENV];
188
- if (envNoStrategicHint !== undefined) {
189
- const parsed = parseBoolean(envNoStrategicHint);
190
- if (parsed !== null)
191
- steeringStrategicHint = !parsed;
192
- }
193
- const cliNoStrategicHint = pi.getFlag("no-strategic-hint");
194
- if (typeof cliNoStrategicHint === "boolean") {
195
- steeringStrategicHint = !cliNoStrategicHint;
196
- }
197
- else if (typeof cliNoStrategicHint === "string") {
198
- const parsed = parseBoolean(cliNoStrategicHint);
199
- if (parsed !== null)
200
- steeringStrategicHint = !parsed;
201
- }
202
- // Resolve animation: CLI flag > env var > settings.json > default
203
- const envNoAnimation = process.env[PI_FLOW_NO_ANIMATION_ENV];
204
- if (envNoAnimation !== undefined) {
205
- const parsed = parseBoolean(envNoAnimation);
206
- if (parsed !== null)
207
- animationEnabled = !parsed;
208
- }
209
- const cliNoAnimation = pi.getFlag("no-animation");
210
- if (typeof cliNoAnimation === "boolean") {
211
- animationEnabled = !cliNoAnimation;
212
- }
213
- else if (typeof cliNoAnimation === "string") {
214
- const parsed = parseBoolean(cliNoAnimation);
215
- if (parsed !== null)
216
- animationEnabled = !parsed;
217
- }
218
- // Resolve glitch: CLI flag > env var > settings.json > default
219
- const envNoGlitch = process.env[PI_FLOW_NO_GLITCH_ENV];
220
- if (envNoGlitch !== undefined) {
221
- const parsed = parseBoolean(envNoGlitch);
222
- if (parsed !== null)
223
- animationGlitch = !parsed;
224
- }
225
- const cliNoGlitch = pi.getFlag("no-glitch");
226
- if (typeof cliNoGlitch === "boolean") {
227
- animationGlitch = !cliNoGlitch;
228
- }
229
- else if (typeof cliNoGlitch === "string") {
230
- const parsed = parseBoolean(cliNoGlitch);
231
- if (parsed !== null)
232
- animationGlitch = !parsed;
233
- }
234
- // Resolve askUser: settings.json > env var > default
235
- if (typeof flowSettings.askUser?.enabled === "boolean") {
236
- askUserEnabled = flowSettings.askUser.enabled;
237
- }
238
- if (typeof flowSettings.askUser?.timeout === "number") {
239
- askUserTimeout = flowSettings.askUser.timeout * 1000;
240
- }
88
+ const steeringEnabled = resolveBoolean(ctx, { cliFlag: "no-steering", envVar: PI_FLOW_NO_STEERING_ENV, settingsPath: ["steering", "enabled"], defaultValue: true, invert: true });
89
+ const steeringStrategicHint = resolveBoolean(ctx, { cliFlag: "no-strategic-hint", envVar: PI_FLOW_NO_STRATEGIC_HINT_ENV, settingsPath: ["steering", "strategicHint"], defaultValue: true, invert: true });
90
+ const animationEnabled = resolveBoolean(ctx, { cliFlag: "no-animation", envVar: PI_FLOW_NO_ANIMATION_ENV, settingsPath: ["animation", "enabled"], defaultValue: true, invert: true });
91
+ const animationGlitch = resolveBoolean(ctx, { cliFlag: "no-glitch", envVar: PI_FLOW_NO_GLITCH_ENV, settingsPath: ["animation", "glitch"], defaultValue: true, invert: true });
92
+ const askUserEnabled = typeof flowSettings.askUser?.enabled === "boolean" ? flowSettings.askUser.enabled : false;
93
+ let askUserTimeout = typeof flowSettings.askUser?.timeout === "number" ? flowSettings.askUser.timeout * 1000 : 300000;
241
94
  const envAskUserTimeout = process.env["PI_ASK_USER_TIMEOUT"];
242
95
  if (envAskUserTimeout !== undefined) {
243
96
  const parsed = Number(envAskUserTimeout);
244
- if (Number.isSafeInteger(parsed) && parsed >= 1) {
97
+ if (Number.isSafeInteger(parsed) && parsed >= 1)
245
98
  askUserTimeout = parsed * 1000;
246
- }
247
99
  }
248
- // Resolve custom steering prompt: CLI flag only (path to file)
100
+ let steeringCustomPrompt = undefined;
249
101
  const cliSteeringPrompt = pi.getFlag("steering-prompt");
250
102
  if (typeof cliSteeringPrompt === "string" && cliSteeringPrompt.trim()) {
251
103
  try {
@@ -256,24 +108,13 @@ export function resolveSettings(pi, cwd) {
256
108
  logWarn(`[pi-agent-flow] Could not read steering-prompt file: ${msg}`);
257
109
  }
258
110
  }
259
- // Resolve bodyVerbosity: CLI flag > env var > settings.json > default
260
- let bodyVerbosity = "lite";
261
- if (typeof flowSettings.bodyVerbosity === "string") {
262
- bodyVerbosity = flowSettings.bodyVerbosity;
263
- }
264
- const envBodyVerbosity = process.env["PI_FLOW_BODY_VERBOSITY"];
265
- if (envBodyVerbosity === "full" || envBodyVerbosity === "lite") {
266
- bodyVerbosity = envBodyVerbosity;
267
- }
268
- // Resolve bodyVerbosity: CLI flag > env var > settings.json > default
111
+ let bodyVerbosity = resolveString(ctx, { envVar: "PI_FLOW_BODY_VERBOSITY", settingsPath: ["bodyVerbosity"], defaultValue: "lite", validator: (v) => v === "lite" || v === "full" });
269
112
  const cliBodyFull = pi.getFlag("body-full");
270
113
  const cliBodyLite = pi.getFlag("body-lite");
271
- if (cliBodyFull === true) {
114
+ if (cliBodyFull === true)
272
115
  bodyVerbosity = "full";
273
- }
274
- else if (cliBodyLite === true) {
116
+ else if (cliBodyLite === true)
275
117
  bodyVerbosity = "lite";
276
- }
277
118
  else if (typeof cliBodyFull === "string") {
278
119
  const parsed = cliBodyFull.trim();
279
120
  if (parsed === "full" || parsed === "lite")
@@ -284,85 +125,15 @@ export function resolveSettings(pi, cwd) {
284
125
  if (parsed === "full" || parsed === "lite")
285
126
  bodyVerbosity = parsed;
286
127
  }
287
- // Resolve debugMode: CLI flag > env var > settings.json > default
288
- let debugMode = false;
289
- if (typeof flowSettings.debugMode === "boolean") {
290
- debugMode = flowSettings.debugMode;
291
- }
292
- const envDebug = process.env["PI_FLOW_DEBUG"];
293
- if (envDebug !== undefined) {
294
- const parsed = parseBoolean(envDebug);
295
- if (parsed !== null)
296
- debugMode = parsed;
297
- }
298
- const cliDebug = pi.getFlag("flow-debug");
299
- if (typeof cliDebug === "boolean") {
300
- debugMode = cliDebug;
301
- }
302
- else if (typeof cliDebug === "string") {
303
- const parsed = parseBoolean(cliDebug);
304
- if (parsed !== null)
305
- debugMode = parsed;
306
- }
307
- // Resolve traceEnabled: CLI flag > env var > settings.json > default (default: true)
308
- let traceEnabled = true;
309
- if (typeof flowSettings.tools?.trace === "boolean") {
310
- traceEnabled = flowSettings.tools.trace;
311
- }
312
- const envTrace = process.env[PI_FLOW_TOOLS_TRACE_ENV];
313
- if (envTrace !== undefined) {
314
- const parsed = parseBoolean(envTrace);
315
- if (parsed !== null)
316
- traceEnabled = parsed;
317
- }
318
- const cliTrace = pi.getFlag("tools-trace");
319
- if (typeof cliTrace === "boolean") {
320
- traceEnabled = cliTrace;
321
- }
322
- else if (typeof cliTrace === "string") {
323
- const parsed = parseBoolean(cliTrace);
324
- if (parsed !== null)
325
- traceEnabled = parsed;
326
- }
327
- // Resolve batchReadEnabled: CLI flag > env var > settings.json > default (default: follows toolOptimize)
328
- let batchReadEnabled = toolOptimize;
329
- if (typeof flowSettings.tools?.batchRead === "boolean") {
330
- batchReadEnabled = flowSettings.tools.batchRead;
331
- }
332
- const envBatchRead = process.env[PI_FLOW_TOOLS_BATCH_READ_ENV];
333
- if (envBatchRead !== undefined) {
334
- const parsed = parseBoolean(envBatchRead);
335
- if (parsed !== null)
336
- batchReadEnabled = parsed;
337
- }
338
- const cliBatchRead = pi.getFlag("tools-batch-read");
339
- if (typeof cliBatchRead === "boolean") {
340
- batchReadEnabled = cliBatchRead;
341
- }
342
- else if (typeof cliBatchRead === "string") {
343
- const parsed = parseBoolean(cliBatchRead);
344
- if (parsed !== null)
345
- batchReadEnabled = parsed;
346
- }
128
+ const debugMode = resolveBoolean(ctx, { cliFlag: "flow-debug", envVar: "PI_FLOW_DEBUG", settingsPath: ["debugMode"], defaultValue: false });
129
+ const traceEnabled = resolveBoolean(ctx, { cliFlag: "tools-trace", envVar: PI_FLOW_TOOLS_TRACE_ENV, settingsPath: ["tools", "trace"], defaultValue: true });
130
+ const batchReadEnabled = resolveBoolean(ctx, { cliFlag: "tools-batch-read", envVar: PI_FLOW_TOOLS_BATCH_READ_ENV, settingsPath: ["tools", "batchRead"], defaultValue: toolOptimize });
347
131
  return {
348
- toolOptimize,
349
- structuredOutput,
350
- maxConcurrency,
351
- defaultComplexity,
352
- steeringEnabled,
353
- steeringCustomPrompt,
354
- steeringStrategicHint,
355
- animationEnabled,
356
- animationGlitch,
357
- askUserEnabled,
358
- askUserTimeout,
359
- discoveredFlows,
360
- loadedFlowModelConfigs,
361
- activeRuntimeFlowMode,
362
- bodyVerbosity,
363
- debugMode,
364
- traceEnabled,
365
- batchReadEnabled,
132
+ toolOptimize, structuredOutput, maxConcurrency, defaultComplexity,
133
+ steeringEnabled, steeringCustomPrompt, steeringStrategicHint,
134
+ animationEnabled, animationGlitch, askUserEnabled, askUserTimeout,
135
+ discoveredFlows, loadedFlowModelConfigs, activeRuntimeFlowMode,
136
+ bodyVerbosity, debugMode, traceEnabled, batchReadEnabled,
366
137
  projectFlowsDir: discovery.projectFlowsDir,
367
138
  };
368
139
  }
@@ -1 +1 @@
1
- {"version":3,"file":"settings-resolver.js","sourceRoot":"","sources":["../../src/config/settings-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings-resolver.js","sourceRoot":"","sources":["../../src/config/settings-resolver.ts"],"names":[],"mappings":"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"}
@@ -19,8 +19,6 @@ export interface BuildCore2SnapshotOptions {
19
19
  tier?: FlowTier;
20
20
  }
21
21
  export declare function buildCore2Snapshot(sessionManager: SessionSnapshotSource, options?: BuildCore2SnapshotOptions): string | null;
22
- /** Replace batch section bodies with first 3 + last 3 lines as orientation. */
23
- export declare function stripBatchBodies(text: string): string;
24
22
  export interface SharedContext {
25
23
  messageCount: number;
26
24
  userMessageCount: number;
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/core2/snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAElD,MAAM,WAAW,qBAAqB;IACrC,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,OAAO,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,QAAQ,CAAC;CAChB;AA0BD,wBAAgB,kBAAkB,CACjC,cAAc,EAAE,qBAAqB,EACrC,OAAO,CAAC,EAAE,yBAAyB,GACjC,MAAM,GAAG,IAAI,CAgFf;AAucD,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA0CrD;AAkID,MAAM,WAAW,aAAa;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa,GAAG,SAAS,CAqD1F"}
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/core2/snapshot.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlD,MAAM,WAAW,qBAAqB;IACrC,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,OAAO,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,QAAQ,CAAC;CAChB;AA6CD,wBAAgB,kBAAkB,CACjC,cAAc,EAAE,qBAAqB,EACrC,OAAO,CAAC,EAAE,yBAAyB,GACjC,MAAM,GAAG,IAAI,CAgFf;AAqnBD,MAAM,WAAW,aAAa;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,aAAa,GAAG,SAAS,CAsG1F"}
@@ -6,6 +6,26 @@
6
6
  * chronological order.
7
7
  */
8
8
  import { stripDirectives } from "../steering/tool-utils.js";
9
+ import { logWarn } from "../config/log.js";
10
+ /** Normalize toolCalls field from various input shapes. */
11
+ function normalizeToolCalls(msg) {
12
+ if (!msg || typeof msg !== "object")
13
+ return [];
14
+ const m = msg;
15
+ const tcs = m.toolCalls ?? m.tool_calls;
16
+ if (Array.isArray(tcs))
17
+ return tcs;
18
+ return [];
19
+ }
20
+ // Fallback for external APIs that use snake_case
21
+ const SNAKE_TOOL_CALL_ID = "tool_call_id";
22
+ /** Normalize tool call id from various input shapes. */
23
+ function normalizeToolCallId(tc) {
24
+ if (!tc || typeof tc !== "object")
25
+ return undefined;
26
+ const t = tc;
27
+ return t.id || t.toolCallId || t[SNAKE_TOOL_CALL_ID];
28
+ }
9
29
  /** Synthetic system message providing the context architecture map. */
10
30
  const CONTEXT_MAP_ENTRY = {
11
31
  type: "message",
@@ -110,13 +130,13 @@ function slimAssistantUsage(usage) {
110
130
  if (!usage || typeof usage !== "object")
111
131
  return undefined;
112
132
  const u = usage;
113
- const input = typeof u.input === "number" ? u.input : 0;
114
- const output = typeof u.output === "number" ? u.output : 0;
115
- const cacheRead = typeof u.cacheRead === "number" ? u.cacheRead : 0;
116
- const cacheWrite = typeof u.cacheWrite === "number" ? u.cacheWrite : 0;
133
+ const input = typeof u.input === "number" ? u.input : (typeof u.prompt_tokens === "number" ? u.prompt_tokens : 0);
134
+ const output = typeof u.output === "number" ? u.output : (typeof u.completion_tokens === "number" ? u.completion_tokens : 0);
135
+ const cacheRead = typeof u.cacheRead === "number" ? u.cacheRead : (typeof u.cache_read === "number" ? u.cache_read : 0);
136
+ const cacheWrite = typeof u.cacheWrite === "number" ? u.cacheWrite : (typeof u.cache_write === "number" ? u.cache_write : 0);
117
137
  const totalTokens = typeof u.totalTokens === "number"
118
138
  ? u.totalTokens
119
- : input + output + cacheRead + cacheWrite;
139
+ : (typeof u.total_tokens === "number" ? u.total_tokens : input + output + cacheRead + cacheWrite);
120
140
  if (totalTokens <= 0 && input <= 0 && output <= 0)
121
141
  return undefined;
122
142
  return { input, output, cacheRead, cacheWrite, totalTokens };
@@ -199,7 +219,7 @@ function sanitizeSnapshotEntry(entry) {
199
219
  }
200
220
  return true;
201
221
  });
202
- const hasToolCalls = msg.toolCalls || msg.tool_calls || filteredContent.some(b => b && b.type === "toolCall");
222
+ const hasToolCalls = normalizeToolCalls(msg).length > 0 || filteredContent.some(b => b && b.type === "toolCall");
203
223
  if (filteredContent.length === 0 || !hasSubstance) {
204
224
  // If assistant message has no substance and no tool calls, drop it
205
225
  if (msg.role === "assistant" && !hasToolCalls) {
@@ -209,7 +229,7 @@ function sanitizeSnapshotEntry(entry) {
209
229
  msg.content = filteredContent;
210
230
  }
211
231
  else if (typeof msg.content === "string" && msg.content.trim() === "") {
212
- const hasToolCalls = msg.toolCalls || msg.tool_calls;
232
+ const hasToolCalls = normalizeToolCalls(msg).length > 0;
213
233
  if (msg.role === "assistant" && !hasToolCalls) {
214
234
  return null;
215
235
  }
@@ -239,7 +259,7 @@ function maybeStripCompaction(entry) {
239
259
  type: "message",
240
260
  message: {
241
261
  role: "system",
242
- content: `[Context Compacted] ${summary}${tokensSaved ? ` (${tokensSaved} tokens summarized)` : ""}`,
262
+ content: [{ type: "text", text: `[Context Compacted] ${summary}${tokensSaved ? ` (${tokensSaved} tokens summarized)` : ""}` }],
243
263
  },
244
264
  };
245
265
  }
@@ -259,11 +279,11 @@ function optimizeSharedContext(branchEntries) {
259
279
  if (e.type === "message" && e.message && typeof e.message === "object") {
260
280
  const msg = e.message;
261
281
  // Gather tool calls from content array and toolCalls/tool_calls field
262
- const tcs = (msg.toolCalls || msg.tool_calls || []);
282
+ const tcs = normalizeToolCalls(msg);
263
283
  const contentBlocks = Array.isArray(msg.content) ? msg.content : [];
264
284
  const allCalls = [...tcs, ...contentBlocks.filter((b) => b && b.type === "toolCall")];
265
285
  for (const tc of allCalls) {
266
- const id = tc.id || tc.toolCallId || tc.tool_call_id;
286
+ const id = normalizeToolCallId(tc);
267
287
  const name = tc.name || tc.toolCall?.name;
268
288
  if (!id || !name)
269
289
  continue;
@@ -307,7 +327,7 @@ function optimizeSharedContext(branchEntries) {
307
327
  const msg = { ...e.message };
308
328
  if (msg.role !== "tool" && msg.role !== "toolResult")
309
329
  return entry;
310
- const toolCallId = msg.toolCallId || msg.tool_call_id;
330
+ const toolCallId = normalizeToolCallId(msg);
311
331
  if (typeof toolCallId !== "string")
312
332
  return entry;
313
333
  const info = toolCallMap.get(toolCallId);
@@ -435,7 +455,7 @@ function compressSnapshotEntry(entry, tier) {
435
455
  }
436
456
  const toolName = typeof msg.toolName === "string" ? msg.toolName : typeof msg.name === "string" ? msg.name : undefined;
437
457
  const placeholder = toolName ? `[${role}: ${toolName}]` : `[${role} result omitted]`;
438
- msg.content = placeholder;
458
+ msg.content = [{ type: "text", text: placeholder }];
439
459
  return { ...e, message: msg };
440
460
  }
441
461
  /**
@@ -523,7 +543,7 @@ function isBatchSectionHeader(line) {
523
543
  /^--- \[.+\] still running ---$/.test(line));
524
544
  }
525
545
  /** Replace batch section bodies with first 3 + last 3 lines as orientation. */
526
- export function stripBatchBodies(text) {
546
+ function stripBatchBodies(text) {
527
547
  const lines = text.replace(/\r\n/g, "\n").split("\n");
528
548
  const out = [];
529
549
  let i = 0;
@@ -578,7 +598,8 @@ function maybeStripBatchBodies(line) {
578
598
  try {
579
599
  entry = JSON.parse(line);
580
600
  }
581
- catch {
601
+ catch (e) {
602
+ logWarn(`[pi-agent-flow] Failed to parse JSONL line in snapshot: ${e}`);
582
603
  return line;
583
604
  }
584
605
  if (entry.type !== "message" || !entry.message) {
@@ -651,7 +672,7 @@ function stripActiveToolCall(entry, activeToolCallId) {
651
672
  }
652
673
  const newContent = message.content.filter((block) => {
653
674
  if (block && block.type === "toolCall") {
654
- const id = block.id || block.toolCallId || block.tool_call_id;
675
+ const id = normalizeToolCallId(block);
655
676
  if (id === activeToolCallId) {
656
677
  return false;
657
678
  }
@@ -699,21 +720,67 @@ export function parseSharedContext(snapshotJsonl) {
699
720
  messageCount++;
700
721
  if (msg.role === "user") {
701
722
  userMessageCount++;
702
- if (!preview && typeof msg.content === "string") {
703
- preview = msg.content;
723
+ if (!preview) {
724
+ if (typeof msg.content === "string") {
725
+ preview = msg.content;
726
+ }
727
+ else if (Array.isArray(msg.content)) {
728
+ for (const part of msg.content) {
729
+ if (part && part.type === "text" && typeof part.text === "string") {
730
+ preview = part.text;
731
+ break;
732
+ }
733
+ }
734
+ }
704
735
  }
705
736
  }
706
737
  else if (msg.role === "assistant") {
707
738
  assistantMessageCount++;
708
- if (msg.usage && typeof msg.usage.totalTokens === "number") {
709
- totalTokens = msg.usage.totalTokens;
739
+ const usage = entry.usage || msg.usage;
740
+ if (usage && typeof usage === "object") {
741
+ const u = usage;
742
+ const explicit = typeof u.totalTokens === "number"
743
+ ? u.totalTokens
744
+ : typeof u.total_tokens === "number"
745
+ ? u.total_tokens
746
+ : undefined;
747
+ if (typeof explicit === "number" && explicit > 0) {
748
+ totalTokens = explicit;
749
+ }
750
+ else {
751
+ const input = typeof u.input === "number"
752
+ ? u.input
753
+ : typeof u.prompt_tokens === "number"
754
+ ? u.prompt_tokens
755
+ : 0;
756
+ const output = typeof u.output === "number"
757
+ ? u.output
758
+ : typeof u.completion_tokens === "number"
759
+ ? u.completion_tokens
760
+ : 0;
761
+ const cacheRead = typeof u.cacheRead === "number"
762
+ ? u.cacheRead
763
+ : typeof u.cache_read === "number"
764
+ ? u.cache_read
765
+ : 0;
766
+ const cacheWrite = typeof u.cacheWrite === "number"
767
+ ? u.cacheWrite
768
+ : typeof u.cache_write === "number"
769
+ ? u.cache_write
770
+ : 0;
771
+ const computed = input + output + cacheRead + cacheWrite;
772
+ if (computed > 0) {
773
+ totalTokens = computed;
774
+ }
775
+ }
710
776
  }
711
777
  }
712
778
  // Aggregate tool calls from any message
713
- const tcs = msg.toolCalls || msg.tool_calls;
714
- if (Array.isArray(tcs)) {
779
+ const tcs = normalizeToolCalls(msg);
780
+ if (tcs.length > 0) {
715
781
  for (const tc of tcs) {
716
- const name = tc?.name || tc?.function?.name;
782
+ const t = tc;
783
+ const name = t.name || t.function?.name;
717
784
  if (typeof name === "string") {
718
785
  toolCalls[name] = (toolCalls[name] || 0) + 1;
719
786
  }
@@ -731,8 +798,8 @@ export function parseSharedContext(snapshotJsonl) {
731
798
  }
732
799
  }
733
800
  }
734
- catch {
735
- // skip invalid lines
801
+ catch (e) {
802
+ logWarn(`[pi-agent-flow] Skipping invalid JSONL line in snapshot: ${e}`);
736
803
  }
737
804
  }
738
805
  if (messageCount === 0)