@zihanw/pi-forge 0.4.1 → 0.5.1

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 (372) hide show
  1. package/CHANGELOG.md +79 -1
  2. package/README.md +12 -11
  3. package/README.zh-CN.md +3 -5
  4. package/SUBAGENT_ADAPTER_CONTRACT.md +3 -1
  5. package/dist/agent-profile.d.ts +18 -62
  6. package/dist/agent-profile.d.ts.map +1 -1
  7. package/dist/agent-profile.js +27 -249
  8. package/dist/agent-profile.js.map +1 -1
  9. package/dist/codecs/agent-profile.d.ts +53 -0
  10. package/dist/codecs/agent-profile.d.ts.map +1 -0
  11. package/dist/codecs/agent-profile.js +176 -0
  12. package/dist/codecs/agent-profile.js.map +1 -0
  13. package/dist/codecs/index.d.ts +5 -0
  14. package/dist/codecs/index.d.ts.map +1 -0
  15. package/dist/codecs/index.js +3 -0
  16. package/dist/codecs/index.js.map +1 -0
  17. package/dist/codecs/prompt-stack.d.ts +18 -0
  18. package/dist/codecs/prompt-stack.d.ts.map +1 -0
  19. package/dist/codecs/prompt-stack.js +479 -0
  20. package/dist/codecs/prompt-stack.js.map +1 -0
  21. package/dist/compile-cycle.d.ts +18 -0
  22. package/dist/compile-cycle.d.ts.map +1 -0
  23. package/dist/compile-cycle.js +13 -0
  24. package/dist/compile-cycle.js.map +1 -0
  25. package/dist/compiler.d.ts +10 -4
  26. package/dist/compiler.d.ts.map +1 -1
  27. package/dist/compiler.js +53 -19
  28. package/dist/compiler.js.map +1 -1
  29. package/dist/context-diff-history.d.ts +61 -0
  30. package/dist/context-diff-history.d.ts.map +1 -0
  31. package/dist/context-diff-history.js +84 -0
  32. package/dist/context-diff-history.js.map +1 -0
  33. package/dist/context-diff-snapshot.d.ts +19 -0
  34. package/dist/context-diff-snapshot.d.ts.map +1 -0
  35. package/dist/context-diff-snapshot.js +146 -0
  36. package/dist/context-diff-snapshot.js.map +1 -0
  37. package/dist/context-diff.d.ts +70 -0
  38. package/dist/context-diff.d.ts.map +1 -0
  39. package/dist/context-diff.js +259 -0
  40. package/dist/context-diff.js.map +1 -0
  41. package/dist/extension-registry.d.ts.map +1 -1
  42. package/dist/extension-registry.js +5 -2
  43. package/dist/extension-registry.js.map +1 -1
  44. package/dist/forge-config.d.ts +0 -105
  45. package/dist/forge-config.d.ts.map +1 -1
  46. package/dist/forge-config.js +1 -313
  47. package/dist/forge-config.js.map +1 -1
  48. package/dist/forge-v1/analyzer.d.ts +3 -0
  49. package/dist/forge-v1/analyzer.d.ts.map +1 -0
  50. package/dist/forge-v1/analyzer.js +50 -0
  51. package/dist/forge-v1/analyzer.js.map +1 -0
  52. package/dist/forge-v1/index.d.ts +6 -0
  53. package/dist/forge-v1/index.d.ts.map +1 -0
  54. package/dist/forge-v1/index.js +13 -0
  55. package/dist/forge-v1/index.js.map +1 -0
  56. package/dist/forge-v1/parser.d.ts +3 -0
  57. package/dist/forge-v1/parser.d.ts.map +1 -0
  58. package/dist/forge-v1/parser.js +186 -0
  59. package/dist/forge-v1/parser.js.map +1 -0
  60. package/dist/forge-v1/renderer.d.ts +9 -0
  61. package/dist/forge-v1/renderer.d.ts.map +1 -0
  62. package/dist/forge-v1/renderer.js +181 -0
  63. package/dist/forge-v1/renderer.js.map +1 -0
  64. package/dist/forge-v1/types.d.ts +87 -0
  65. package/dist/forge-v1/types.d.ts.map +1 -0
  66. package/dist/forge-v1/types.js +4 -0
  67. package/dist/forge-v1/types.js.map +1 -0
  68. package/dist/index.d.ts +12 -12
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +54 -83
  71. package/dist/index.js.map +1 -1
  72. package/dist/lifecycle.d.ts +8 -5
  73. package/dist/lifecycle.d.ts.map +1 -1
  74. package/dist/lifecycle.js +45 -112
  75. package/dist/lifecycle.js.map +1 -1
  76. package/dist/loader.d.ts +5 -8
  77. package/dist/loader.d.ts.map +1 -1
  78. package/dist/loader.js +10 -467
  79. package/dist/loader.js.map +1 -1
  80. package/dist/macro-engine.d.ts +9 -14
  81. package/dist/macro-engine.d.ts.map +1 -1
  82. package/dist/macro-engine.js +5 -238
  83. package/dist/macro-engine.js.map +1 -1
  84. package/dist/payload-capture.d.ts +10 -0
  85. package/dist/payload-capture.d.ts.map +1 -1
  86. package/dist/payload-capture.js +39 -9
  87. package/dist/payload-capture.js.map +1 -1
  88. package/dist/payload-command.d.ts +8 -6
  89. package/dist/payload-command.d.ts.map +1 -1
  90. package/dist/payload-command.js +36 -6
  91. package/dist/payload-command.js.map +1 -1
  92. package/dist/payload-state.d.ts +19 -0
  93. package/dist/payload-state.d.ts.map +1 -0
  94. package/dist/payload-state.js +19 -0
  95. package/dist/payload-state.js.map +1 -0
  96. package/dist/preset-command.d.ts +4 -4
  97. package/dist/preset-command.d.ts.map +1 -1
  98. package/dist/preset-command.js +33 -104
  99. package/dist/preset-command.js.map +1 -1
  100. package/dist/preview.d.ts +4 -4
  101. package/dist/preview.d.ts.map +1 -1
  102. package/dist/preview.js +34 -11
  103. package/dist/preview.js.map +1 -1
  104. package/dist/profile-command.d.ts +2 -2
  105. package/dist/profile-command.d.ts.map +1 -1
  106. package/dist/profile-command.js +15 -14
  107. package/dist/profile-command.js.map +1 -1
  108. package/dist/profile-service.d.ts.map +1 -1
  109. package/dist/profile-service.js +23 -39
  110. package/dist/profile-service.js.map +1 -1
  111. package/dist/prompt-analysis.d.ts +24 -0
  112. package/dist/prompt-analysis.d.ts.map +1 -0
  113. package/dist/prompt-analysis.js +84 -0
  114. package/dist/prompt-analysis.js.map +1 -0
  115. package/dist/prompt-runtime.d.ts +19 -0
  116. package/dist/prompt-runtime.d.ts.map +1 -0
  117. package/dist/prompt-runtime.js +30 -0
  118. package/dist/prompt-runtime.js.map +1 -0
  119. package/dist/regex.js +6 -12
  120. package/dist/regex.js.map +1 -1
  121. package/dist/render-helpers.d.ts +2 -10
  122. package/dist/render-helpers.d.ts.map +1 -1
  123. package/dist/render-helpers.js +3 -53
  124. package/dist/render-helpers.js.map +1 -1
  125. package/dist/repositories/agent-profile.d.ts +36 -0
  126. package/dist/repositories/agent-profile.d.ts.map +1 -0
  127. package/dist/repositories/agent-profile.js +153 -0
  128. package/dist/repositories/agent-profile.js.map +1 -0
  129. package/dist/repositories/index.d.ts +3 -0
  130. package/dist/repositories/index.d.ts.map +1 -0
  131. package/dist/repositories/index.js +3 -0
  132. package/dist/repositories/index.js.map +1 -0
  133. package/dist/repositories/prompt-stack.d.ts +57 -0
  134. package/dist/repositories/prompt-stack.d.ts.map +1 -0
  135. package/dist/repositories/prompt-stack.js +175 -0
  136. package/dist/repositories/prompt-stack.js.map +1 -0
  137. package/dist/runtime/profile-runtime.d.ts +2 -2
  138. package/dist/runtime/profile-runtime.d.ts.map +1 -1
  139. package/dist/runtime/profile-runtime.js +13 -10
  140. package/dist/runtime/profile-runtime.js.map +1 -1
  141. package/dist/runtime/prompt-stack-runtime.d.ts +4 -3
  142. package/dist/runtime/prompt-stack-runtime.d.ts.map +1 -1
  143. package/dist/runtime/prompt-stack-runtime.js +42 -57
  144. package/dist/runtime/prompt-stack-runtime.js.map +1 -1
  145. package/dist/runtime/tool-policy-runtime.d.ts +2 -2
  146. package/dist/runtime/tool-policy-runtime.d.ts.map +1 -1
  147. package/dist/runtime/tool-policy-runtime.js +16 -6
  148. package/dist/runtime/tool-policy-runtime.js.map +1 -1
  149. package/dist/runtime/web-editor-runtime.d.ts +2 -1
  150. package/dist/runtime/web-editor-runtime.d.ts.map +1 -1
  151. package/dist/runtime/web-editor-runtime.js +8 -3
  152. package/dist/runtime/web-editor-runtime.js.map +1 -1
  153. package/dist/session-adapter.d.ts +17 -0
  154. package/dist/session-adapter.d.ts.map +1 -0
  155. package/dist/session-adapter.js +57 -0
  156. package/dist/session-adapter.js.map +1 -0
  157. package/dist/slot-renderers.d.ts +16 -3
  158. package/dist/slot-renderers.d.ts.map +1 -1
  159. package/dist/slot-renderers.js +15 -63
  160. package/dist/slot-renderers.js.map +1 -1
  161. package/dist/stack-migration.d.ts +6 -0
  162. package/dist/stack-migration.d.ts.map +1 -1
  163. package/dist/stack-migration.js +49 -52
  164. package/dist/stack-migration.js.map +1 -1
  165. package/dist/subagent/fingerprints.d.ts +24 -0
  166. package/dist/subagent/fingerprints.d.ts.map +1 -0
  167. package/dist/subagent/fingerprints.js +81 -0
  168. package/dist/subagent/fingerprints.js.map +1 -0
  169. package/dist/subagent/host-port.d.ts +296 -0
  170. package/dist/subagent/host-port.d.ts.map +1 -0
  171. package/dist/subagent/host-port.js +560 -0
  172. package/dist/subagent/host-port.js.map +1 -0
  173. package/dist/subagent/index.d.ts +10 -10
  174. package/dist/subagent/index.d.ts.map +1 -1
  175. package/dist/subagent/index.js +9 -10
  176. package/dist/subagent/index.js.map +1 -1
  177. package/dist/subagent-host.d.ts +99 -18
  178. package/dist/subagent-host.d.ts.map +1 -1
  179. package/dist/subagent-host.js +143 -146
  180. package/dist/subagent-host.js.map +1 -1
  181. package/dist/template-render.d.ts +18 -0
  182. package/dist/template-render.d.ts.map +1 -0
  183. package/dist/template-render.js +232 -0
  184. package/dist/template-render.js.map +1 -0
  185. package/dist/types.d.ts +40 -27
  186. package/dist/types.d.ts.map +1 -1
  187. package/dist/types.js.map +1 -1
  188. package/dist/ui-contribution/contrib-port.d.ts +170 -0
  189. package/dist/ui-contribution/contrib-port.d.ts.map +1 -0
  190. package/dist/ui-contribution/contrib-port.js +640 -0
  191. package/dist/ui-contribution/contrib-port.js.map +1 -0
  192. package/dist/ui-contribution/index.d.ts +3 -0
  193. package/dist/ui-contribution/index.d.ts.map +1 -0
  194. package/dist/ui-contribution/index.js +2 -0
  195. package/dist/ui-contribution/index.js.map +1 -0
  196. package/dist/web-editor/client-script.generated.d.ts.map +1 -1
  197. package/dist/web-editor/client-script.generated.js +1 -1
  198. package/dist/web-editor/client-script.generated.js.map +1 -1
  199. package/dist/web-editor/client-styles.generated.d.ts.map +1 -1
  200. package/dist/web-editor/client-styles.generated.js +1 -1
  201. package/dist/web-editor/client-styles.generated.js.map +1 -1
  202. package/dist/web-editor/contrib-service.d.ts +41 -0
  203. package/dist/web-editor/contrib-service.d.ts.map +1 -0
  204. package/dist/web-editor/contrib-service.js +174 -0
  205. package/dist/web-editor/contrib-service.js.map +1 -0
  206. package/dist/web-editor/line-diff.d.ts +28 -0
  207. package/dist/web-editor/line-diff.d.ts.map +1 -0
  208. package/dist/web-editor/line-diff.js +216 -0
  209. package/dist/web-editor/line-diff.js.map +1 -0
  210. package/dist/web-editor/schema-form.d.ts +63 -0
  211. package/dist/web-editor/schema-form.d.ts.map +1 -0
  212. package/dist/web-editor/schema-form.js +213 -0
  213. package/dist/web-editor/schema-form.js.map +1 -0
  214. package/dist/web-editor/server.d.ts.map +1 -1
  215. package/dist/web-editor/server.js +72 -74
  216. package/dist/web-editor/server.js.map +1 -1
  217. package/dist/web-editor/styles.d.ts.map +1 -1
  218. package/dist/web-editor/styles.js +201 -21
  219. package/dist/web-editor/styles.js.map +1 -1
  220. package/dist/web-editor/types.d.ts +12 -35
  221. package/dist/web-editor/types.d.ts.map +1 -1
  222. package/dist/web-host.d.ts +6 -2
  223. package/dist/web-host.d.ts.map +1 -1
  224. package/dist/web-host.js +33 -103
  225. package/dist/web-host.js.map +1 -1
  226. package/dist/workspace.d.ts +74 -0
  227. package/dist/workspace.d.ts.map +1 -0
  228. package/dist/workspace.js +351 -0
  229. package/dist/workspace.js.map +1 -0
  230. package/docs/README.md +7 -4
  231. package/docs/concepts/agent-profiles.md +1 -1
  232. package/docs/concepts/prompt-stacks.md +5 -5
  233. package/docs/design/0.5.1-plan.md +237 -0
  234. package/docs/design/README.md +21 -3
  235. package/docs/design/architecture-0.5.md +222 -0
  236. package/docs/design/archive/0.5-full-proposal/0.5-consumer-audit.md +62 -0
  237. package/docs/design/archive/0.5-full-proposal/0.5-inventory.md +208 -0
  238. package/docs/design/archive/0.5-full-proposal/0.5-phase0-decision-drafts.md +237 -0
  239. package/docs/design/archive/0.5-full-proposal/README.md +12 -0
  240. package/docs/design/archive/0.5-full-proposal/architecture-0.5.md +423 -0
  241. package/docs/design/archive/0.5-full-proposal/host-discovery-spike.md +103 -0
  242. package/docs/design/archive/0.5-full-proposal/template-language-spike.md +156 -0
  243. package/docs/design/context-diff-plan.md +78 -0
  244. package/docs/design/decision-template.md +33 -0
  245. package/docs/design/roadmap-0.4-archive.md +1 -1
  246. package/docs/design/subagents/interface-design.md +1 -1
  247. package/docs/development/architecture-rules.md +148 -0
  248. package/docs/development/release.md +7 -1
  249. package/docs/development/roadmap.md +37 -5
  250. package/docs/development/scoped-global-profiles-stacks.md +1 -1
  251. package/docs/development/setup.md +6 -4
  252. package/docs/getting-started.md +5 -4
  253. package/docs/guides/custom-macros-and-slots.md +8 -7
  254. package/docs/guides/debugging.md +1 -1
  255. package/docs/guides/delegation.md +18 -22
  256. package/docs/guides/migrating-to-0.5.md +107 -0
  257. package/docs/guides/use-cases.md +7 -11
  258. package/docs/guides/web-editor.md +6 -10
  259. package/docs/reference/commands.md +4 -3
  260. package/docs/reference/configuration.md +17 -18
  261. package/docs/reference/features.md +34 -80
  262. package/docs/reference/macros-and-slots.md +70 -49
  263. package/docs/reference/public-api.md +76 -17
  264. package/docs/reference/stack-schema.md +15 -10
  265. package/docs/reference/subagent-host-port.md +49 -0
  266. package/docs/reference/ui-contribution-port.md +51 -0
  267. package/docs/zh-CN/README.md +3 -3
  268. package/docs/zh-CN/concepts/agent-profiles.md +1 -1
  269. package/docs/zh-CN/concepts/prompt-stacks.md +5 -5
  270. package/docs/zh-CN/getting-started.md +3 -2
  271. package/docs/zh-CN/guides/delegation.md +10 -12
  272. package/docs/zh-CN/guides/migrating-to-0.5.md +92 -0
  273. package/docs/zh-CN/guides/web-editor.md +4 -4
  274. package/docs/zh-CN/reference/commands.md +3 -2
  275. package/examples/custom-system-status-extension/README.md +3 -3
  276. package/examples/custom-system-status-extension/index.ts +2 -1
  277. package/examples/custom-system-status-extension/prompt-stack.json +4 -3
  278. package/examples/default-prompt-stack.json +9 -4
  279. package/examples/image-reader-prompt-stack.json +16 -26
  280. package/examples/reviewer-prompt-stack.json +13 -24
  281. package/package.json +106 -120
  282. package/dist/runtime/subagent-runtime.d.ts +0 -45
  283. package/dist/runtime/subagent-runtime.d.ts.map +0 -1
  284. package/dist/runtime/subagent-runtime.js +0 -343
  285. package/dist/runtime/subagent-runtime.js.map +0 -1
  286. package/dist/runtime-state.d.ts +0 -30
  287. package/dist/runtime-state.d.ts.map +0 -1
  288. package/dist/runtime-state.js +0 -17
  289. package/dist/runtime-state.js.map +0 -1
  290. package/dist/sillytavern-importer/items.d.ts +0 -3
  291. package/dist/sillytavern-importer/items.d.ts.map +0 -1
  292. package/dist/sillytavern-importer/items.js +0 -88
  293. package/dist/sillytavern-importer/items.js.map +0 -1
  294. package/dist/sillytavern-importer/macros.d.ts +0 -15
  295. package/dist/sillytavern-importer/macros.d.ts.map +0 -1
  296. package/dist/sillytavern-importer/macros.js +0 -141
  297. package/dist/sillytavern-importer/macros.js.map +0 -1
  298. package/dist/sillytavern-importer/prompt-order.d.ts +0 -6
  299. package/dist/sillytavern-importer/prompt-order.d.ts.map +0 -1
  300. package/dist/sillytavern-importer/prompt-order.js +0 -38
  301. package/dist/sillytavern-importer/prompt-order.js.map +0 -1
  302. package/dist/sillytavern-importer/regex.d.ts +0 -3
  303. package/dist/sillytavern-importer/regex.d.ts.map +0 -1
  304. package/dist/sillytavern-importer/regex.js +0 -275
  305. package/dist/sillytavern-importer/regex.js.map +0 -1
  306. package/dist/sillytavern-importer/report.d.ts +0 -21
  307. package/dist/sillytavern-importer/report.d.ts.map +0 -1
  308. package/dist/sillytavern-importer/report.js +0 -166
  309. package/dist/sillytavern-importer/report.js.map +0 -1
  310. package/dist/sillytavern-importer/types.d.ts +0 -106
  311. package/dist/sillytavern-importer/types.d.ts.map +0 -1
  312. package/dist/sillytavern-importer/types.js +0 -2
  313. package/dist/sillytavern-importer/types.js.map +0 -1
  314. package/dist/sillytavern-importer.d.ts +0 -5
  315. package/dist/sillytavern-importer.d.ts.map +0 -1
  316. package/dist/sillytavern-importer.js +0 -117
  317. package/dist/sillytavern-importer.js.map +0 -1
  318. package/dist/subagent/canonical.d.ts +0 -22
  319. package/dist/subagent/canonical.d.ts.map +0 -1
  320. package/dist/subagent/canonical.js +0 -24
  321. package/dist/subagent/canonical.js.map +0 -1
  322. package/dist/subagent/context.d.ts +0 -8
  323. package/dist/subagent/context.d.ts.map +0 -1
  324. package/dist/subagent/context.js +0 -125
  325. package/dist/subagent/context.js.map +0 -1
  326. package/dist/subagent/contract.d.ts +0 -10
  327. package/dist/subagent/contract.d.ts.map +0 -1
  328. package/dist/subagent/contract.js +0 -10
  329. package/dist/subagent/contract.js.map +0 -1
  330. package/dist/subagent/plan.d.ts +0 -18
  331. package/dist/subagent/plan.d.ts.map +0 -1
  332. package/dist/subagent/plan.js +0 -157
  333. package/dist/subagent/plan.js.map +0 -1
  334. package/dist/subagent/preflight.d.ts +0 -4
  335. package/dist/subagent/preflight.d.ts.map +0 -1
  336. package/dist/subagent/preflight.js +0 -108
  337. package/dist/subagent/preflight.js.map +0 -1
  338. package/dist/subagent/request.d.ts +0 -4
  339. package/dist/subagent/request.d.ts.map +0 -1
  340. package/dist/subagent/request.js +0 -154
  341. package/dist/subagent/request.js.map +0 -1
  342. package/dist/subagent/response.d.ts +0 -8
  343. package/dist/subagent/response.d.ts.map +0 -1
  344. package/dist/subagent/response.js +0 -155
  345. package/dist/subagent/response.js.map +0 -1
  346. package/dist/subagent/tools.d.ts +0 -4
  347. package/dist/subagent/tools.d.ts.map +0 -1
  348. package/dist/subagent/tools.js +0 -42
  349. package/dist/subagent/tools.js.map +0 -1
  350. package/dist/subagent/types.d.ts +0 -272
  351. package/dist/subagent/types.d.ts.map +0 -1
  352. package/dist/subagent/types.js +0 -3
  353. package/dist/subagent/types.js.map +0 -1
  354. package/dist/subagent/validation.d.ts +0 -35
  355. package/dist/subagent/validation.d.ts.map +0 -1
  356. package/dist/subagent/validation.js +0 -314
  357. package/dist/subagent/validation.js.map +0 -1
  358. package/dist/subagent-command.d.ts +0 -5
  359. package/dist/subagent-command.d.ts.map +0 -1
  360. package/dist/subagent-command.js +0 -249
  361. package/dist/subagent-command.js.map +0 -1
  362. package/dist/subagent-profile-tool.d.ts +0 -49
  363. package/dist/subagent-profile-tool.d.ts.map +0 -1
  364. package/dist/subagent-profile-tool.js +0 -125
  365. package/dist/subagent-profile-tool.js.map +0 -1
  366. package/dist/subagent-tool.d.ts +0 -77
  367. package/dist/subagent-tool.d.ts.map +0 -1
  368. package/dist/subagent-tool.js +0 -559
  369. package/dist/subagent-tool.js.map +0 -1
  370. package/docs/guides/sillytavern-import.md +0 -47
  371. package/docs/reference/subagent-adapter.md +0 -204
  372. package/examples/sillytavern-dm-writer-prompt-stack.json +0 -190
@@ -1,4 +1,4 @@
1
- import { createVariableAccess, escapeXml, formatDate, formatTime, getRuntimeVariable, promptRenderHelpers, selectedToolNames, variableValueToMacroText, } from "./render-helpers.js";
1
+ import { promptRenderHelpers } from "./render-helpers.js";
2
2
  import { assertRegistryName } from "./extension-registry.js";
3
3
  function macroRegistryState() {
4
4
  const globalScope = globalThis;
@@ -6,57 +6,9 @@ function macroRegistryState() {
6
6
  return globalScope.__piForgeMacroRegistry;
7
7
  }
8
8
  const MACROS = macroRegistryState().macros;
9
- let registeringBuiltInMacros = true;
10
- registerMacro({ name: "cwd", description: "Current working directory.", render: ({ runtime }) => runtime.options.cwd });
11
- registerMacro({ name: "date", description: "Current date in YYYY-MM-DD format.", render: ({ runtime }) => formatDate(runtime.now) });
12
- registerMacro({ name: "time", description: "Current time in HH:MM:SS format.", render: ({ runtime }) => formatTime(runtime.now) });
13
- registerMacro({ name: "lastUserMessage", description: "Latest user message text.", render: ({ runtime }) => runtime.latestUserMessage ?? "" });
14
- registerMacro({ name: "selectedTools", description: "Comma-separated selected tool names after stack policy.", render: renderSelectedTools });
15
- registerMacro({ name: "tools", description: "Alias for selectedTools.", render: renderSelectedTools });
16
- registerMacro({ name: "activeModel", description: "Current model as provider/id.", render: ({ runtime }) => {
17
- const model = runtime.ctx?.model;
18
- return model ? `${model.provider}/${model.id}` : "";
19
- } });
20
- registerMacro({ name: "setvar", description: "Set a turn variable, or set a scoped variable with setvar::session|turn::name::value.", render: renderSetVariable });
21
- registerMacro({ name: "setturnvar", description: "Set a turn variable.", render: renderSetVariable });
22
- registerMacro({ name: "setsessionvar", description: "Set a session variable.", render: renderSetVariable });
23
- registerMacro({ name: "getvar", description: "Read a turn, session, or static variable.", render: renderGetVariable });
24
- registerMacro({ name: "var", description: "Alias for getvar.", render: renderGetVariable });
25
- registerMacro({ name: "getturnvar", description: "Read a turn variable.", render: renderGetVariable });
26
- registerMacro({ name: "getsessionvar", description: "Read a session variable.", render: renderGetVariable });
27
- registerMacro({ name: "clearvar", description: "Clear a turn variable, or clear a scoped variable with clearvar::session|turn::name.", render: renderClearVariable });
28
- registerMacro({ name: "clearturnvar", description: "Clear a turn variable.", render: renderClearVariable });
29
- registerMacro({ name: "clearsessionvar", description: "Clear a session variable.", render: renderClearVariable });
30
- registerMacro({ name: "trim", description: "Trim whitespace from an expanded argument.", args: [{ name: "value", required: true }], render: ({ expandArg }) => expandArg(0).trim() });
31
- registerMacro({ name: "upper", description: "Uppercase an expanded argument.", args: [{ name: "value", required: true }], render: ({ expandArg }) => expandArg(0).toUpperCase() });
32
- registerMacro({ name: "lower", description: "Lowercase an expanded argument.", args: [{ name: "value", required: true }], render: ({ expandArg }) => expandArg(0).toLowerCase() });
33
- registerMacro({ name: "json", description: "JSON-string escape an expanded argument.", args: [{ name: "value", required: true }], render: ({ expandArg }) => JSON.stringify(expandArg(0)) });
34
- registerMacro({ name: "xml", description: "XML-escape an expanded argument.", args: [{ name: "value", required: true }], render: ({ expandArg }) => escapeXml(expandArg(0)) });
35
- registerMacro({ name: "ifvar", description: "Render a lazy branch based on whether a variable exists.", render: renderIfVariable });
36
- registerMacro({ name: "ifeq", description: "Render a lazy branch based on whether a variable equals a string.", render: renderIfVariableEquals });
37
- registerMacro({ name: "iftools", description: "Render a lazy branch based on whether a tool is selected.", render: renderIfTool });
38
- registerMacro({ name: "ifslot", description: "Render a lazy branch based on whether an enabled slot exists in the stack.", render: renderIfSlot });
39
- registeringBuiltInMacros = false;
40
- export function expandMacros(text, stack, runtime, diagnostics, itemId) {
41
- const policy = stack.defaults?.unresolvedMacroPolicy ?? "warn";
42
- const state = { stack, runtime, diagnostics, itemId, unknown: new Set() };
43
- const result = expandMacroText(text, state);
44
- for (const name of state.unknown) {
45
- if (policy === "keep")
46
- continue;
47
- diagnostics.push({
48
- level: policy === "error" ? "error" : "warning",
49
- message: `Unresolved macro: {{${name}}}`,
50
- itemId,
51
- });
52
- }
53
- return result;
54
- }
55
9
  export function registerMacro(definition) {
56
10
  assertRegistryName("Macro", definition.name);
57
11
  if (MACROS.has(definition.name)) {
58
- if (registeringBuiltInMacros)
59
- return () => { };
60
12
  throw new Error(`Macro is already registered: ${definition.name}`);
61
13
  }
62
14
  MACROS.set(definition.name, definition);
@@ -68,195 +20,10 @@ export function registerMacro(definition) {
68
20
  export function getRegisteredMacros() {
69
21
  return [...MACROS.values()];
70
22
  }
71
- function expandMacroText(text, state) {
72
- let result = "";
73
- let index = 0;
74
- while (index < text.length) {
75
- const start = text.indexOf("{{", index);
76
- if (start === -1) {
77
- result += text.slice(index);
78
- break;
79
- }
80
- result += text.slice(index, start);
81
- const end = findMacroEnd(text, start + 2);
82
- if (end === undefined) {
83
- result += "{{";
84
- index = start + 2;
85
- continue;
86
- }
87
- const expression = text.slice(start + 2, end);
88
- const fullMacro = text.slice(start, end + 2);
89
- result += renderMacro(expression, fullMacro, state);
90
- index = end + 2;
91
- }
92
- return result;
93
- }
94
- function findMacroEnd(text, start) {
95
- let depth = 1;
96
- for (let index = start; index < text.length - 1; index++) {
97
- const pair = text.slice(index, index + 2);
98
- if (pair === "{{") {
99
- depth++;
100
- index++;
101
- continue;
102
- }
103
- if (pair === "}}") {
104
- depth--;
105
- if (depth === 0)
106
- return index;
107
- index++;
108
- }
109
- }
110
- return undefined;
111
- }
112
- function renderMacro(rawExpression, fullMacro, state) {
113
- const expression = rawExpression.trim();
114
- if (!expression)
115
- return fullMacro;
116
- const parts = splitMacroExpression(expression);
117
- const command = parts[0]?.trim();
118
- if (!command)
119
- return fullMacro;
120
- const rawArgs = parts.slice(1);
121
- const definition = MACROS.get(command);
122
- if (definition) {
123
- let value;
124
- try {
125
- value = definition.render(createMacroRenderContext(command, rawArgs, state));
126
- }
127
- catch (error) {
128
- const detail = error instanceof Error ? error.message : String(error);
129
- state.diagnostics.push({
130
- level: "error",
131
- message: `Macro {{${command}}} failed: ${detail}`,
132
- itemId: state.itemId,
133
- });
134
- return fullMacro;
135
- }
136
- if (value !== undefined)
137
- return value;
138
- state.unknown.add(expression);
139
- return fullMacro;
140
- }
141
- const variableValue = getRuntimeVariable(state.runtime, state.stack, command);
142
- if (variableValue !== undefined)
143
- return variableValueToMacroText(variableValue);
144
- state.unknown.add(expression);
145
- return fullMacro;
146
- }
147
- function splitMacroExpression(expression) {
148
- const parts = [];
149
- let start = 0;
150
- let depth = 0;
151
- for (let index = 0; index < expression.length - 1; index++) {
152
- const pair = expression.slice(index, index + 2);
153
- if (pair === "{{") {
154
- depth++;
155
- index++;
156
- continue;
157
- }
158
- if (pair === "}}" && depth > 0) {
159
- depth--;
160
- index++;
161
- continue;
162
- }
163
- if (pair === "::" && depth === 0) {
164
- parts.push(expression.slice(start, index));
165
- start = index + 2;
166
- index++;
167
- }
168
- }
169
- parts.push(expression.slice(start));
170
- return parts;
171
- }
172
- function createMacroRenderContext(command, rawArgs, state) {
173
- const expandedArgs = new Map();
174
- const expandArg = (index) => {
175
- if (!expandedArgs.has(index)) {
176
- expandedArgs.set(index, expandMacroText(rawArgs[index] ?? "", state));
177
- }
178
- return expandedArgs.get(index) ?? "";
179
- };
180
- return {
181
- name: command,
182
- command,
183
- stack: state.stack,
184
- runtime: state.runtime,
185
- rawArgs,
186
- expandArg,
187
- expandJoinedArgs: (startIndex) => rawArgs.slice(startIndex).map((_, offset) => expandArg(startIndex + offset)).join("::"),
188
- helpers: promptRenderHelpers,
189
- variables: createVariableAccess(state.runtime, state.stack),
190
- };
191
- }
192
- function renderSetVariable(context) {
193
- const scoped = context.command === "setvar" && isVariableScope(context.expandArg(0).trim());
194
- const scope = context.command === "setsessionvar" || (scoped && context.expandArg(0).trim() === "session")
195
- ? "session"
196
- : "turn";
197
- const nameIndex = scoped ? 1 : 0;
198
- const valueIndex = nameIndex + 1;
199
- const name = context.expandArg(nameIndex).trim();
200
- if (!name)
201
- return undefined;
202
- context.variables.set(scope, name, context.expandJoinedArgs(valueIndex));
203
- return "";
204
- }
205
- function renderGetVariable(context) {
206
- const name = context.expandArg(0).trim();
207
- if (!name)
208
- return undefined;
209
- if (context.command === "getturnvar")
210
- return context.variables.toMacroText(context.variables.get(name, "turn"));
211
- if (context.command === "getsessionvar")
212
- return context.variables.toMacroText(context.variables.get(name, "session"));
213
- return context.variables.toMacroText(context.variables.get(name));
214
- }
215
- function renderClearVariable(context) {
216
- const scoped = context.command === "clearvar" && isVariableScope(context.expandArg(0).trim());
217
- const scope = context.command === "clearsessionvar" || (scoped && context.expandArg(0).trim() === "session")
218
- ? "session"
219
- : "turn";
220
- const name = context.expandArg(scoped ? 1 : 0).trim();
221
- if (!name)
222
- return undefined;
223
- context.variables.clear(scope, name);
224
- return "";
225
- }
226
- function renderSelectedTools({ stack, runtime }) {
227
- return selectedToolNames(stack, runtime).join(", ");
228
- }
229
- function renderIfVariable(context) {
230
- const name = context.expandArg(0).trim();
231
- if (!name)
232
- return undefined;
233
- return renderConditionalBranch(context, context.variables.get(name) !== undefined, 1, 2);
234
- }
235
- function renderIfVariableEquals(context) {
236
- const name = context.expandArg(0).trim();
237
- if (!name || context.rawArgs.length < 2)
238
- return undefined;
239
- const value = context.variables.get(name);
240
- const expected = context.expandArg(1);
241
- return renderConditionalBranch(context, value !== undefined && variableValueToMacroText(value) === expected, 2, 3);
242
- }
243
- function renderIfTool(context) {
244
- const name = context.expandArg(0).trim();
245
- if (!name)
246
- return undefined;
247
- return renderConditionalBranch(context, selectedToolNames(context.stack, context.runtime).includes(name), 1, 2);
248
- }
249
- function renderIfSlot(context) {
250
- const name = context.expandArg(0).trim();
251
- if (!name)
252
- return undefined;
253
- const hasSlot = context.stack.items.some((item) => item.enabled !== false && item.kind === "slot" && item.slot === name);
254
- return renderConditionalBranch(context, hasSlot, 1, 2);
255
- }
256
- function renderConditionalBranch(context, condition, thenIndex, elseIndex) {
257
- return condition ? context.expandArg(thenIndex) : context.expandArg(elseIndex);
23
+ export function getRegisteredMacro(name) {
24
+ return MACROS.get(name);
258
25
  }
259
- function isVariableScope(value) {
260
- return value === "turn" || value === "session";
26
+ export function createMacroRenderContext(env) {
27
+ return { env, helpers: promptRenderHelpers };
261
28
  }
262
29
  //# sourceMappingURL=macro-engine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"macro-engine.js","sourceRoot":"","sources":["../src/macro-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"macro-engine.js","sourceRoot":"","sources":["../src/macro-engine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAA4B,MAAM,yBAAyB,CAAC;AAuBvF,SAAS,kBAAkB;IAC1B,MAAM,WAAW,GAAG,UAA+B,CAAC;IACpD,WAAW,CAAC,sBAAsB,KAAK,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;IAC7D,OAAO,WAAW,CAAC,sBAAsB,CAAC;AAC3C,CAAC;AAED,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC,MAAM,CAAC;AAE3C,MAAM,UAAU,aAAa,CAAC,UAAiC;IAC9D,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,gCAAgC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACxC,OAAO,GAAG,EAAE;QACX,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,UAAU;YAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAChF,CAAC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB;IAClC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC9C,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,GAAsB;IAC9D,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;AAC9C,CAAC"}
@@ -1,14 +1,24 @@
1
1
  import type { WebEditorPayloadCapture } from "./web-editor/index.ts";
2
+ export interface ProviderPayloadCaptureWithSerialization {
3
+ capture: WebEditorPayloadCapture;
4
+ /** Secret-redacted JSON without the display capture's lossy limits. */
5
+ serializedPayload: string;
6
+ }
2
7
  export declare function createProviderPayloadCapture(value: unknown, options?: {
3
8
  stackId?: string;
4
9
  savePath?: string;
5
10
  }): WebEditorPayloadCapture;
11
+ export declare function createProviderPayloadCaptureWithSerialization(value: unknown, options?: {
12
+ stackId?: string;
13
+ savePath?: string;
14
+ }): ProviderPayloadCaptureWithSerialization;
6
15
  export declare function formatProviderPayload(value: unknown): {
7
16
  payload?: unknown;
8
17
  text: string;
9
18
  chars: number;
10
19
  approxTokens: number;
11
20
  truncated: boolean;
21
+ serializedPayload: string;
12
22
  error?: string;
13
23
  };
14
24
  export declare function estimatePayloadTokens(payload: string): number;
@@ -1 +1 @@
1
- {"version":3,"file":"payload-capture.d.ts","sourceRoot":"","sources":["../src/payload-capture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAqBrE,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,uBAAuB,CAa3I;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAyBlK;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7D"}
1
+ {"version":3,"file":"payload-capture.d.ts","sourceRoot":"","sources":["../src/payload-capture.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAqBrE,MAAM,WAAW,uCAAuC;IACvD,OAAO,EAAE,uBAAuB,CAAC;IACjC,uEAAuE;IACvE,iBAAiB,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,uBAAuB,CAE3I;AAED,wBAAgB,6CAA6C,CAC5D,KAAK,EAAE,OAAO,EACd,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GACnD,uCAAuC,CAgBzC;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,CA6BA;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7D"}
@@ -17,21 +17,29 @@ const SAFE_TOKEN_METADATA_KEYS = new Set([
17
17
  "total_tokens",
18
18
  ]);
19
19
  export function createProviderPayloadCapture(value, options = {}) {
20
+ return createProviderPayloadCaptureWithSerialization(value, options).capture;
21
+ }
22
+ export function createProviderPayloadCaptureWithSerialization(value, options = {}) {
20
23
  const formatted = formatProviderPayload(value);
21
24
  return {
22
- capturedAt: new Date().toISOString(),
23
- stackId: options.stackId,
24
- savePath: options.savePath,
25
- payload: formatted.payload,
26
- text: formatted.text,
27
- chars: formatted.chars,
28
- approxTokens: formatted.approxTokens,
29
- truncated: formatted.truncated,
30
- error: formatted.error,
25
+ capture: {
26
+ capturedAt: new Date().toISOString(),
27
+ stackId: options.stackId,
28
+ savePath: options.savePath,
29
+ payload: formatted.payload,
30
+ text: formatted.text,
31
+ chars: formatted.chars,
32
+ approxTokens: formatted.approxTokens,
33
+ truncated: formatted.truncated,
34
+ error: formatted.error,
35
+ },
36
+ serializedPayload: formatted.serializedPayload,
31
37
  };
32
38
  }
33
39
  export function formatProviderPayload(value) {
34
40
  try {
41
+ const faithfulPayload = redactPayloadFaithfully(value);
42
+ const serializedPayload = stringifyPayload(faithfulPayload);
35
43
  const payload = redactPayload(value);
36
44
  const renderedJson = JSON.stringify(payload, null, 2);
37
45
  const text = renderedJson === undefined ? String(payload) : renderedJson;
@@ -44,6 +52,7 @@ export function formatProviderPayload(value) {
44
52
  chars: rendered.length,
45
53
  approxTokens: estimatePayloadTokens(rendered),
46
54
  truncated,
55
+ serializedPayload,
47
56
  };
48
57
  }
49
58
  catch (error) {
@@ -53,6 +62,7 @@ export function formatProviderPayload(value) {
53
62
  chars: text.length,
54
63
  approxTokens: estimatePayloadTokens(text),
55
64
  truncated: false,
65
+ serializedPayload: text,
56
66
  error: text,
57
67
  };
58
68
  }
@@ -89,6 +99,26 @@ function redactPayload(value, depth = 0) {
89
99
  }
90
100
  return result;
91
101
  }
102
+ /** Redact credentials while retaining the complete JSON-compatible request. */
103
+ function redactPayloadFaithfully(value, ancestors = new Set()) {
104
+ if (typeof value === "string" || value === null || typeof value !== "object")
105
+ return value;
106
+ if (ancestors.has(value))
107
+ return "[pi-forge: circular reference]";
108
+ const nextAncestors = new Set(ancestors);
109
+ nextAncestors.add(value);
110
+ if (Array.isArray(value))
111
+ return value.map((item) => redactPayloadFaithfully(item, nextAncestors));
112
+ const result = {};
113
+ for (const [key, raw] of Object.entries(value)) {
114
+ result[key] = isSecretKey(key) ? "[redacted]" : redactPayloadFaithfully(raw, nextAncestors);
115
+ }
116
+ return result;
117
+ }
118
+ function stringifyPayload(value) {
119
+ const rendered = JSON.stringify(value, null, 2);
120
+ return rendered === undefined ? String(value) : rendered;
121
+ }
92
122
  function isSecretKey(key) {
93
123
  if (SAFE_TOKEN_METADATA_KEYS.has(normalizeSecretKey(key)))
94
124
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"payload-capture.js","sourceRoot":"","sources":["../src/payload-capture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payload-capture.js","sourceRoot":"","sources":["../src/payload-capture.ts"],"names":[],"mappings":"AAEA,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC;IACxC,4BAA4B;IAC5B,cAAc;IACd,eAAe;IACf,mBAAmB;IACnB,cAAc;IACd,uBAAuB;IACvB,mBAAmB;IACnB,YAAY;IACZ,eAAe;IACf,eAAe;IACf,kBAAkB;IAClB,4BAA4B;IAC5B,cAAc;IACd,aAAa;IACb,WAAW;IACX,cAAc;CACd,CAAC,CAAC;AAQH,MAAM,UAAU,4BAA4B,CAAC,KAAc,EAAE,UAAmD,EAAE;IACjH,OAAO,6CAA6C,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,6CAA6C,CAC5D,KAAc,EACd,UAAmD,EAAE;IAErD,MAAM,SAAS,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO;QACN,OAAO,EAAE;YACR,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,KAAK,EAAE,SAAS,CAAC,KAAK;YACtB,YAAY,EAAE,SAAS,CAAC,YAAY;YACpC,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,KAAK,EAAE,SAAS,CAAC,KAAK;SACtB;QACD,iBAAiB,EAAE,SAAS,CAAC,iBAAiB;KAC9C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAc;IASnD,IAAI,CAAC;QACJ,MAAM,eAAe,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACrC,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;QACzE,MAAM,QAAQ,GAAG,OAAO,CAAC;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QACzC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,0CAA0C,QAAQ,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1H,OAAO;YACN,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO;YACxC,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,QAAQ,CAAC,MAAM;YACtB,YAAY,EAAE,qBAAqB,CAAC,QAAQ,CAAC;YAC7C,SAAS;YACT,iBAAiB;SACjB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,yCAAyC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/G,OAAO;YACN,IAAI;YACJ,KAAK,EAAE,IAAI,CAAC,MAAM;YAClB,YAAY,EAAE,qBAAqB,CAAC,IAAI,CAAC;YACzC,SAAS,EAAE,KAAK;YAChB,iBAAiB,EAAE,IAAI;YACvB,KAAK,EAAE,IAAI;SACX,CAAC;IACH,CAAC;AACF,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACpD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,aAAa,CAAC,KAAc,EAAE,KAAK,GAAG,CAAC;IAC/C,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,+BAA+B,CAAC;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC9D,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;QACrF,IAAI,KAAK,CAAC,MAAM,GAAG,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,MAAM,GAAG,QAAQ,sBAAsB,CAAC,CAAC;QACrG,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;QAC3E,IAAI,EAAE,KAAK,GAAG,GAAG,EAAE,CAAC;YACnB,MAAM,CAAC,qBAAqB,CAAC,GAAG,+BAA+B,CAAC;YAChE,MAAM;QACP,CAAC;QACD,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;YAC3B,SAAS;QACV,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,SAAS,uBAAuB,CAAC,KAAc,EAAE,YAAY,IAAI,GAAG,EAAU;IAC7E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC3F,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,gCAAgC,CAAC;IAClE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IACzC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACzB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,uBAAuB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC;IAEnG,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;QAC3E,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAChD,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC1D,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC/B,IAAI,wBAAwB,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACxE,OAAO,6EAA6E,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChG,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW;IACtC,OAAO,GAAG;SACR,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC;SACtC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,WAAW,EAAE,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACtC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,sBAAsB,CAAC;IAC/D,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,8BAA8B,KAAK,CAAC,MAAM,SAAS,CAAC;IAC5H,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM;QAAE,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,sCAAsC,KAAK,CAAC,MAAM,SAAS,CAAC;IACvH,OAAO,KAAK,CAAC;AACd,CAAC"}
@@ -1,10 +1,12 @@
1
+ import type { AssistantMessage } from "@earendil-works/pi-ai";
1
2
  import type { ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent";
2
- import type { PayloadDisplayTarget, PiForgeRuntimeState } from "./runtime-state.ts";
3
+ import type { PayloadDisplayTarget, PayloadState } from "./payload-state.ts";
3
4
  import type { LoadedPromptStack } from "./types.ts";
4
5
  import type { WebEditorPayloadSnapshot } from "./web-editor/index.ts";
5
- export declare function registerPayloadCommands(pi: ExtensionAPI, state: PiForgeRuntimeState): void;
6
- export declare function registerPayloadRequestHandler(pi: ExtensionAPI, state: PiForgeRuntimeState, getActive: () => LoadedPromptStack | undefined): void;
7
- export declare function armPayloadIntercept(state: PiForgeRuntimeState, ctx: ExtensionContext, savePath?: string, displayTarget?: PayloadDisplayTarget): void;
8
- export declare function clearPayloadCapture(state: PiForgeRuntimeState, ctx: ExtensionContext): void;
9
- export declare function webPayloadSnapshot(state: PiForgeRuntimeState): WebEditorPayloadSnapshot;
6
+ export declare function registerPayloadCommands(pi: ExtensionAPI, state: PayloadState): void;
7
+ export declare function registerPayloadRequestHandler(pi: ExtensionAPI, state: PayloadState, getActive: () => LoadedPromptStack | undefined): void;
8
+ export declare function recordProviderResponseUsage(state: PayloadState, message: AssistantMessage): void;
9
+ export declare function armPayloadIntercept(state: PayloadState, ctx: ExtensionContext, savePath?: string, displayTarget?: PayloadDisplayTarget): void;
10
+ export declare function clearPayloadCapture(state: PayloadState, ctx: ExtensionContext): void;
11
+ export declare function webPayloadSnapshot(state: PayloadState): WebEditorPayloadSnapshot;
10
12
  //# sourceMappingURL=payload-command.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"payload-command.d.ts","sourceRoot":"","sources":["../src/payload-command.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAA2B,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAE/G,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACpF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAA2B,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAE/F,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAgC1F;AAED,wBAAgB,6BAA6B,CAC5C,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,mBAAmB,EAC1B,SAAS,EAAE,MAAM,iBAAiB,GAAG,SAAS,GAC5C,IAAI,CAmCN;AAED,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,mBAAmB,EAC1B,GAAG,EAAE,gBAAgB,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,aAAa,GAAE,oBAA+B,GAC5C,IAAI,CAYN;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,EAAE,GAAG,EAAE,gBAAgB,GAAG,IAAI,CAO3F;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,mBAAmB,GAAG,wBAAwB,CAevF"}
1
+ {"version":3,"file":"payload-command.d.ts","sourceRoot":"","sources":["../src/payload-command.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAA2B,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAE/G,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAA2B,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAE/F,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAgCnF;AAED,wBAAgB,6BAA6B,CAC5C,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,iBAAiB,GAAG,SAAS,GAC5C,IAAI,CAuCN;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAchG;AAED,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,gBAAgB,EACrB,QAAQ,CAAC,EAAE,MAAM,EACjB,aAAa,GAAE,oBAA+B,GAC5C,IAAI,CAYN;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,gBAAgB,GAAG,IAAI,CASpF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,wBAAwB,CAehF"}
@@ -1,6 +1,7 @@
1
1
  import { mkdirSync, writeFileSync } from "node:fs";
2
2
  import { dirname, join } from "node:path";
3
- import { createProviderPayloadCapture } from "./payload-capture.js";
3
+ import { createProviderPayloadCaptureWithSerialization } from "./payload-capture.js";
4
+ import { appendContextDiffCapture, attachContextDiffUsage, createContextDiffHistory } from "./context-diff-history.js";
4
5
  export function registerPayloadCommands(pi, state) {
5
6
  pi.registerCommand("intercept", {
6
7
  description: "Display the next provider payload before it is sent",
@@ -35,16 +36,18 @@ export function registerPayloadCommands(pi, state) {
35
36
  }
36
37
  export function registerPayloadRequestHandler(pi, state, getActive) {
37
38
  pi.on("before_provider_request", async (event, ctx) => {
38
- if (!state.interceptNextProviderPayload)
39
- return;
39
+ const wasArmed = state.interceptNextProviderPayload;
40
40
  const savePath = state.interceptPayloadSavePath;
41
41
  const displayTarget = state.interceptPayloadDisplayTarget;
42
+ const capture = captureProviderPayload(state, getActive(), event.payload, savePath);
43
+ if (!wasArmed)
44
+ return;
42
45
  state.interceptNextProviderPayload = false;
43
46
  state.interceptPayloadSavePath = undefined;
44
47
  state.interceptPayloadDisplayTarget = "editor";
45
48
  state.payloadCaptureArmedAt = undefined;
49
+ state.latestProviderPayloadCapture = capture;
46
50
  ctx.ui.setStatus("pi-forge-intercept", undefined);
47
- const capture = captureProviderPayload(state, getActive(), event.payload, savePath);
48
51
  if (savePath) {
49
52
  if (!ctx.isProjectTrusted()) {
50
53
  ctx.ui.notify("pi-forge: project is not trusted; refusing to save provider payload.", "warning");
@@ -67,6 +70,22 @@ export function registerPayloadRequestHandler(pi, state, getActive) {
67
70
  console.log(capture.text);
68
71
  });
69
72
  }
73
+ export function recordProviderResponseUsage(state, message) {
74
+ const turnId = state.pendingContextDiffUsageTurnIds.shift();
75
+ if (!turnId)
76
+ return;
77
+ const usage = message.usage;
78
+ attachContextDiffUsage(state.contextDiffHistory, turnId, {
79
+ provider: message.provider,
80
+ model: message.model,
81
+ stopReason: message.stopReason,
82
+ input: finiteUsage(usage.input),
83
+ output: finiteUsage(usage.output),
84
+ cacheRead: finiteUsage(usage.cacheRead),
85
+ cacheWrite: finiteUsage(usage.cacheWrite),
86
+ totalTokens: finiteUsage(usage.totalTokens),
87
+ });
88
+ }
70
89
  export function armPayloadIntercept(state, ctx, savePath, displayTarget = "editor") {
71
90
  state.interceptNextProviderPayload = true;
72
91
  state.interceptPayloadSavePath = savePath;
@@ -86,6 +105,8 @@ export function clearPayloadCapture(state, ctx) {
86
105
  state.interceptPayloadDisplayTarget = "editor";
87
106
  state.payloadCaptureArmedAt = undefined;
88
107
  state.latestProviderPayloadCapture = undefined;
108
+ state.contextDiffHistory = createContextDiffHistory();
109
+ state.pendingContextDiffUsageTurnIds = [];
89
110
  ctx.ui.setStatus("pi-forge-intercept", undefined);
90
111
  }
91
112
  export function webPayloadSnapshot(state) {
@@ -105,8 +126,17 @@ export function webPayloadSnapshot(state) {
105
126
  return { status: "idle" };
106
127
  }
107
128
  function captureProviderPayload(state, active, value, savePath) {
108
- const capture = createProviderPayloadCapture(value, { stackId: active?.stack.id, savePath });
109
- state.latestProviderPayloadCapture = capture;
129
+ const { capture, serializedPayload } = createProviderPayloadCaptureWithSerialization(value, {
130
+ stackId: active?.stack.id,
131
+ savePath,
132
+ });
133
+ appendContextDiffCapture(state.contextDiffHistory, { ...capture, serializedPayload });
134
+ const turnId = state.contextDiffHistory.turns.at(-1)?.turnId;
135
+ if (turnId)
136
+ state.pendingContextDiffUsageTurnIds.push(turnId);
110
137
  return capture;
111
138
  }
139
+ function finiteUsage(value) {
140
+ return Number.isFinite(value) && value >= 0 ? value : 0;
141
+ }
112
142
  //# sourceMappingURL=payload-command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"payload-command.js","sourceRoot":"","sources":["../src/payload-command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payload-command.js","sourceRoot":"","sources":["../src/payload-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAG1C,OAAO,EAAE,6CAA6C,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAIvH,MAAM,UAAU,uBAAuB,CAAC,EAAgB,EAAE,KAAmB;IAC5E,EAAE,CAAC,eAAe,CAAC,WAAW,EAAE;QAC/B,WAAW,EAAE,qDAAqD;QAClE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC7B,mBAAmB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;KACD,CAAC,CAAC;IAEH,EAAE,CAAC,eAAe,CAAC,SAAS,EAAE;QAC7B,WAAW,EAAE,gEAAgE;QAC7E,sBAAsB,EAAE,CAAC,MAAM,EAAE,EAAE;YAClC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC9C,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChD,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAC5G,CAAC;YACD,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC9C,MAAM,UAAU,GAAG,mCAAmC,CAAC;gBACvD,OAAO,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5G,CAAC;YACD,OAAO,IAAI,CAAC;QACb,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE;YAC5B,MAAM,CAAC,OAAO,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACtF,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gBACxB,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,gCAAgC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;gBACpE,OAAO;YACR,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5D,MAAM,QAAQ,GAAG,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;YACpE,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC3C,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC5C,EAAgB,EAChB,KAAmB,EACnB,SAA8C;IAE9C,EAAE,CAAC,EAAE,CAAC,yBAAyB,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,4BAA4B,CAAC;QACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,wBAAwB,CAAC;QAChD,MAAM,aAAa,GAAG,KAAK,CAAC,6BAA6B,CAAC;QAC1D,MAAM,OAAO,GAAG,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpF,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,KAAK,CAAC,4BAA4B,GAAG,KAAK,CAAC;QAC3C,KAAK,CAAC,wBAAwB,GAAG,SAAS,CAAC;QAC3C,KAAK,CAAC,6BAA6B,GAAG,QAAQ,CAAC;QAC/C,KAAK,CAAC,qBAAqB,GAAG,SAAS,CAAC;QACxC,KAAK,CAAC,4BAA4B,GAAG,OAAO,CAAC;QAC7C,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;QAElD,IAAI,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAAE,CAAC;gBAC7B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,sEAAsE,EAAE,SAAS,CAAC,CAAC;YAClG,CAAC;iBAAM,CAAC;gBACP,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBACnF,SAAS,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtD,aAAa,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBAClD,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,uCAAuC,YAAY,KAAK,OAAO,CAAC,KAAK,YAAY,OAAO,CAAC,YAAY,UAAU,EAAE,MAAM,CAAC,CAAC;YACxI,CAAC;QACF,CAAC;QAED,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;YAC7B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,uDAAuD,OAAO,CAAC,KAAK,YAAY,OAAO,CAAC,YAAY,WAAW,EAAE,MAAM,CAAC,CAAC;YACvI,OAAO;QACR,CAAC;QAED,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACf,MAAM,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,+BAA+B,OAAO,CAAC,KAAK,YAAY,OAAO,CAAC,YAAY,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAC1H,OAAO;QACR,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;AAEJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAmB,EAAE,OAAyB;IACzF,MAAM,MAAM,GAAG,KAAK,CAAC,8BAA8B,CAAC,KAAK,EAAE,CAAC;IAC5D,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,sBAAsB,CAAC,KAAK,CAAC,kBAAkB,EAAE,MAAM,EAAE;QACxD,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;QAC/B,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC;QACjC,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC;QACvC,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC;QACzC,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC;KAC3C,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAClC,KAAmB,EACnB,GAAqB,EACrB,QAAiB,EACjB,gBAAsC,QAAQ;IAE9C,KAAK,CAAC,4BAA4B,GAAG,IAAI,CAAC;IAC1C,KAAK,CAAC,wBAAwB,GAAG,QAAQ,CAAC;IAC1C,KAAK,CAAC,6BAA6B,GAAG,aAAa,CAAC;IACpD,KAAK,CAAC,qBAAqB,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvD,KAAK,CAAC,4BAA4B,GAAG,SAAS,CAAC;IAC/C,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,oBAAoB,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IACtH,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;QAC7B,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,mFAAmF,QAAQ,GAAG,CAAC,CAAC,CAAC,qEAAqE,EAAE,MAAM,CAAC,CAAC;QACzM,OAAO;IACR,CAAC;IACD,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,kEAAkE,QAAQ,GAAG,CAAC,CAAC,CAAC,mEAAmE,EAAE,MAAM,CAAC,CAAC;AACvL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAmB,EAAE,GAAqB;IAC7E,KAAK,CAAC,4BAA4B,GAAG,KAAK,CAAC;IAC3C,KAAK,CAAC,wBAAwB,GAAG,SAAS,CAAC;IAC3C,KAAK,CAAC,6BAA6B,GAAG,QAAQ,CAAC;IAC/C,KAAK,CAAC,qBAAqB,GAAG,SAAS,CAAC;IACxC,KAAK,CAAC,4BAA4B,GAAG,SAAS,CAAC;IAC/C,KAAK,CAAC,kBAAkB,GAAG,wBAAwB,EAAE,CAAC;IACtD,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC;IAC1C,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAmB;IACrD,IAAI,KAAK,CAAC,4BAA4B,EAAE,CAAC;QACxC,OAAO;YACN,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,KAAK,CAAC,qBAAqB;YACpC,QAAQ,EAAE,KAAK,CAAC,wBAAwB;SACxC,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,4BAA4B,EAAE,CAAC;QACxC,OAAO;YACN,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,KAAK,CAAC,4BAA4B;SAC3C,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,sBAAsB,CAC9B,KAAmB,EACnB,MAAqC,EACrC,KAAc,EACd,QAAiB;IAEjB,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,6CAA6C,CAAC,KAAK,EAAE;QAC3F,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QACzB,QAAQ;KACR,CAAC,CAAC;IACH,wBAAwB,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,GAAG,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACtF,MAAM,MAAM,GAAG,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;IAC7D,IAAI,MAAM;QAAE,KAAK,CAAC,8BAA8B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9D,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IACjC,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { WebEditorPayloadCapture } from "./web-editor/index.ts";
2
+ import { type ContextDiffHistory } from "./context-diff-history.ts";
3
+ export type PayloadDisplayTarget = "editor" | "web";
4
+ /**
5
+ * Payload capture/debug state. Separate from resource state and compile-cycle
6
+ * state so the generic central bag can be removed.
7
+ */
8
+ export interface PayloadState {
9
+ interceptNextProviderPayload: boolean;
10
+ interceptPayloadSavePath?: string;
11
+ interceptPayloadDisplayTarget: PayloadDisplayTarget;
12
+ payloadCaptureArmedAt?: string;
13
+ latestProviderPayloadCapture?: WebEditorPayloadCapture;
14
+ contextDiffHistory: ContextDiffHistory;
15
+ pendingContextDiffUsageTurnIds: string[];
16
+ }
17
+ export declare function createPayloadState(): PayloadState;
18
+ export declare function clearPayloadState(state: PayloadState): void;
19
+ //# sourceMappingURL=payload-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload-state.d.ts","sourceRoot":"","sources":["../src/payload-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE9F,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEpD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC5B,4BAA4B,EAAE,OAAO,CAAC;IACtC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,6BAA6B,EAAE,oBAAoB,CAAC;IACpD,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,4BAA4B,CAAC,EAAE,uBAAuB,CAAC;IACvD,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,8BAA8B,EAAE,MAAM,EAAE,CAAC;CACzC;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAOjD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAQ3D"}
@@ -0,0 +1,19 @@
1
+ import { createContextDiffHistory } from "./context-diff-history.js";
2
+ export function createPayloadState() {
3
+ return {
4
+ interceptNextProviderPayload: false,
5
+ interceptPayloadDisplayTarget: "editor",
6
+ contextDiffHistory: createContextDiffHistory(),
7
+ pendingContextDiffUsageTurnIds: [],
8
+ };
9
+ }
10
+ export function clearPayloadState(state) {
11
+ state.interceptNextProviderPayload = false;
12
+ state.interceptPayloadSavePath = undefined;
13
+ state.interceptPayloadDisplayTarget = "editor";
14
+ state.payloadCaptureArmedAt = undefined;
15
+ state.latestProviderPayloadCapture = undefined;
16
+ state.contextDiffHistory = createContextDiffHistory();
17
+ state.pendingContextDiffUsageTurnIds = [];
18
+ }
19
+ //# sourceMappingURL=payload-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload-state.js","sourceRoot":"","sources":["../src/payload-state.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAA2B,MAAM,2BAA2B,CAAC;AAkB9F,MAAM,UAAU,kBAAkB;IACjC,OAAO;QACN,4BAA4B,EAAE,KAAK;QACnC,6BAA6B,EAAE,QAAQ;QACvC,kBAAkB,EAAE,wBAAwB,EAAE;QAC9C,8BAA8B,EAAE,EAAE;KAClC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAmB;IACpD,KAAK,CAAC,4BAA4B,GAAG,KAAK,CAAC;IAC3C,KAAK,CAAC,wBAAwB,GAAG,SAAS,CAAC;IAC3C,KAAK,CAAC,6BAA6B,GAAG,QAAQ,CAAC;IAC/C,KAAK,CAAC,qBAAqB,GAAG,SAAS,CAAC;IACxC,KAAK,CAAC,4BAA4B,GAAG,SAAS,CAAC;IAC/C,KAAK,CAAC,kBAAkB,GAAG,wBAAwB,EAAE,CAAC;IACtD,KAAK,CAAC,8BAA8B,GAAG,EAAE,CAAC;AAC3C,CAAC"}