@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
@@ -0,0 +1,232 @@
1
+ import { forgeV1, FORGE_V1_MAX_EXTENSION_OUTPUT } from "./forge-v1/index.js";
2
+ import { createMacroRenderContext, getRegisteredMacro } from "./macro-engine.js";
3
+ import { selectedToolNames } from "./render-helpers.js";
4
+ export class ForgeTemplateRenderer {
5
+ base;
6
+ extensions = new Map();
7
+ workingExtensions = {};
8
+ resolving = new Set();
9
+ stack;
10
+ constructor(stack, runtime) {
11
+ this.stack = stack;
12
+ this.base = buildPromptEnvironment(stack, runtime);
13
+ }
14
+ render(text, diagnostics, itemId) {
15
+ const parsed = forgeV1.parse(text);
16
+ if (!parsed.ok) {
17
+ diagnostics.push({
18
+ level: "error",
19
+ message: `forge-v1 parse error: ${parsed.error.message}`,
20
+ itemId,
21
+ });
22
+ return "";
23
+ }
24
+ const analyzed = forgeV1.analyze(parsed.ast);
25
+ if (analyzed.errors.length > 0) {
26
+ for (const error of analyzed.errors) {
27
+ diagnostics.push({ level: "error", message: error.message, itemId });
28
+ }
29
+ return "";
30
+ }
31
+ try {
32
+ const env = freezeEnvironment({
33
+ runtime: this.base.runtime,
34
+ parameters: this.base.parameters,
35
+ extensions: { ...this.workingExtensions },
36
+ });
37
+ const result = forgeV1.render(parsed.ast, env, {
38
+ resolveExtension: (name) => this.resolveExtensionForRender(name, diagnostics, itemId),
39
+ });
40
+ if (!result.ok) {
41
+ diagnostics.push({
42
+ level: "error",
43
+ message: `forge-v1 render error: ${result.error.message}`,
44
+ itemId,
45
+ });
46
+ return "";
47
+ }
48
+ return result.text;
49
+ }
50
+ catch (error) {
51
+ const detail = error instanceof Error ? error.message : String(error);
52
+ diagnostics.push({ level: "error", message: `forge-v1 compile error: ${detail}`, itemId });
53
+ return "";
54
+ }
55
+ }
56
+ environment() {
57
+ return freezeEnvironment({
58
+ runtime: this.base.runtime,
59
+ parameters: this.base.parameters,
60
+ extensions: { ...this.workingExtensions },
61
+ });
62
+ }
63
+ environmentForDependencies(dependencies, diagnostics, itemId) {
64
+ for (const dependency of dependencies) {
65
+ const name = parseExtensionDependency(dependency);
66
+ if (!name)
67
+ continue;
68
+ try {
69
+ this.resolveExtensionForRender(name, diagnostics, itemId);
70
+ }
71
+ catch (error) {
72
+ const message = error && typeof error === "object" && "message" in error
73
+ ? String(error.message)
74
+ : String(error);
75
+ diagnostics.push({ level: "error", message, itemId });
76
+ }
77
+ }
78
+ return this.environment();
79
+ }
80
+ setLatestUserMessage(message) {
81
+ if (this.base.runtime.lastUserMessage === message)
82
+ return;
83
+ this.base.runtime.lastUserMessage = message;
84
+ // The extension cache is keyed by name and serves values resolved against a
85
+ // frozen environment snapshot. latestUserMessage is the one captured field
86
+ // that can legitimately change between the system and message phases of a
87
+ // single compilation, so invalidate the cache so macros that read it observe
88
+ // the current value instead of the pre-phase snapshot.
89
+ this.extensions.clear();
90
+ for (const key of Object.keys(this.workingExtensions))
91
+ delete this.workingExtensions[key];
92
+ }
93
+ resolveExtensionForRender(name, diagnostics, itemId) {
94
+ const cached = this.extensions.get(name);
95
+ if (cached !== undefined)
96
+ return cached;
97
+ if (this.resolving.has(name)) {
98
+ const forgeError = {
99
+ kind: "evaluate",
100
+ message: `forge-v1 extension cycle detected at: ${name}`,
101
+ };
102
+ throw forgeError;
103
+ }
104
+ if (this.resolving.size >= 32) {
105
+ const forgeError = {
106
+ kind: "evaluate",
107
+ message: "forge-v1 extension dependency graph is too deep.",
108
+ };
109
+ throw forgeError;
110
+ }
111
+ const definition = getRegisteredMacro(name);
112
+ if (!definition)
113
+ return undefined;
114
+ this.resolving.add(name);
115
+ try {
116
+ // Resolve declared extension dependencies first so the macro's frozen env
117
+ // contains the dependency snapshot it declared.
118
+ if (definition.dependencies) {
119
+ for (const dependency of definition.dependencies) {
120
+ const depName = parseExtensionDependency(dependency);
121
+ if (depName)
122
+ this.resolveExtensionForRender(depName, diagnostics, itemId);
123
+ }
124
+ }
125
+ const env = freezeEnvironment({
126
+ runtime: this.base.runtime,
127
+ parameters: this.base.parameters,
128
+ extensions: { ...this.workingExtensions },
129
+ });
130
+ let value;
131
+ try {
132
+ value = definition.render(createMacroRenderContext(env));
133
+ }
134
+ catch (error) {
135
+ const detail = error instanceof Error ? error.message : String(error);
136
+ throw {
137
+ kind: "evaluate",
138
+ message: `forge-v1 extension ${name} failed: ${detail}`,
139
+ };
140
+ }
141
+ if (value.length > FORGE_V1_MAX_EXTENSION_OUTPUT) {
142
+ const forgeError = {
143
+ kind: "extension-limit",
144
+ message: `forge-v1 extension ${name} exceeds ${FORGE_V1_MAX_EXTENSION_OUTPUT} characters.`,
145
+ };
146
+ throw forgeError;
147
+ }
148
+ this.extensions.set(name, value);
149
+ this.workingExtensions[name] = value;
150
+ return value;
151
+ }
152
+ finally {
153
+ this.resolving.delete(name);
154
+ }
155
+ }
156
+ }
157
+ export function buildPromptEnvironment(stack, runtime) {
158
+ const tools = selectedToolNames(stack, runtime);
159
+ const toolBooleans = {};
160
+ for (const name of tools)
161
+ toolBooleans[name] = true;
162
+ const slotBooleans = {};
163
+ for (const item of stack.items) {
164
+ if (item.kind === "slot" && item.enabled !== false && item.slot)
165
+ slotBooleans[item.slot] = true;
166
+ }
167
+ const params = {};
168
+ if (stack.schemaVersion === 2) {
169
+ Object.assign(params, stack.parameters ?? {});
170
+ }
171
+ else {
172
+ for (const [key, value] of Object.entries(stack.variables ?? {}))
173
+ params[key] = value;
174
+ }
175
+ const model = runtime.model;
176
+ const env = {
177
+ runtime: {
178
+ cwd: runtime.options.cwd,
179
+ date: formatDate(runtime.now),
180
+ time: formatTime(runtime.now),
181
+ lastUserMessage: runtime.latestUserMessage ?? "",
182
+ selectedTools: tools,
183
+ selectedToolsText: tools.join(", "),
184
+ activeModel: model ? `${model.provider}/${model.id}` : "",
185
+ populatedAt: runtime.now.toISOString(),
186
+ timezone: "local",
187
+ tool: toolBooleans,
188
+ slot: slotBooleans,
189
+ },
190
+ parameters: params,
191
+ extensions: {},
192
+ };
193
+ return env;
194
+ }
195
+ export function freezeEnvironment(environment) {
196
+ const clone = structuredClone(environment);
197
+ const freeze = (value) => {
198
+ if (value === null || typeof value !== "object")
199
+ return value;
200
+ if (Array.isArray(value)) {
201
+ value.forEach((item) => freeze(item));
202
+ return Object.freeze(value);
203
+ }
204
+ const record = value;
205
+ for (const key of Object.keys(record))
206
+ record[key] = freeze(record[key]);
207
+ return Object.freeze(record);
208
+ };
209
+ freeze(clone);
210
+ return clone;
211
+ }
212
+ function parseExtensionDependency(dependency) {
213
+ const trimmed = dependency.trim();
214
+ if (trimmed.startsWith("extensions.")) {
215
+ const name = trimmed.slice("extensions.".length).trim();
216
+ return name && /^[A-Za-z_][A-Za-z0-9_-]*$/.test(name) ? name : undefined;
217
+ }
218
+ return undefined;
219
+ }
220
+ function formatDate(now) {
221
+ const year = now.getFullYear();
222
+ const month = String(now.getMonth() + 1).padStart(2, "0");
223
+ const day = String(now.getDate()).padStart(2, "0");
224
+ return `${year}-${month}-${day}`;
225
+ }
226
+ function formatTime(now) {
227
+ const hours = String(now.getHours()).padStart(2, "0");
228
+ const minutes = String(now.getMinutes()).padStart(2, "0");
229
+ const seconds = String(now.getSeconds()).padStart(2, "0");
230
+ return `${hours}:${minutes}:${seconds}`;
231
+ }
232
+ //# sourceMappingURL=template-render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-render.js","sourceRoot":"","sources":["../src/template-render.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,12 +1,11 @@
1
1
  import type { AgentMessage } from "@earendil-works/pi-agent-core";
2
- import type { BuildSystemPromptOptions, ExtensionContext } from "@earendil-works/pi-coding-agent";
3
2
  import type { ResourceKey, ResourceScope } from "./resource-identity.ts";
4
3
  export type PromptStackMode = "replace" | "append" | "prepend";
5
4
  export type PromptStackRole = "system" | "user" | "assistant" | "custom";
6
- export type PromptStackSlot = "chat-history" | "tools" | "tool-guidelines" | "skills" | "project-context" | "append-system-prompt" | "date" | "cwd" | "date-cwd" | "active-model" | "pi-docs" | "variables";
5
+ export type PromptStackSlot = "chat-history" | "tools" | "tool-guidelines" | "skills" | "project-context" | "append-system-prompt" | "date" | "cwd" | "date-cwd" | "active-model" | "pi-docs";
7
6
  export type PromptStackSlotFormat = "xml" | "json" | "plain";
8
7
  export type PromptRegexStage = "history" | "compiled";
9
- export type PromptRegexEffect = "outgoing" | "display" | "both" | "finalize";
8
+ export type PromptRegexEffect = "outgoing" | "finalize";
10
9
  export type PromptRegexTarget = "system" | "messages";
11
10
  export interface PromptRegexRule {
12
11
  id: string;
@@ -57,16 +56,6 @@ export interface PromptStackBlockItem extends PromptStackBaseItem {
57
56
  kind: "block";
58
57
  content: string;
59
58
  }
60
- export interface VariablesSlotOptions {
61
- /** Include static stack variables. Default: true. */
62
- includeStatic?: boolean;
63
- /** Include session variables. Default: true. */
64
- includeSession?: boolean;
65
- /** Include turn variables. Default: true. */
66
- includeTurn?: boolean;
67
- /** Render format. Default: xml. */
68
- format?: Exclude<PromptStackSlotFormat, "json">;
69
- }
70
59
  export interface PromptStackSlotOptions {
71
60
  /** For chat-history: include the latest user message in the expanded history. Default: true. */
72
61
  includeLastUserMessage?: boolean;
@@ -82,10 +71,6 @@ export interface PromptStackSlotOptions {
82
71
  maxMessages?: number;
83
72
  /** For chat-history: keep only the most recent messages within an approximate character budget. */
84
73
  maxChars?: number;
85
- /** For variables: control which variable scopes are included. */
86
- includeStatic?: boolean;
87
- includeSession?: boolean;
88
- includeTurn?: boolean;
89
74
  format?: PromptStackSlotFormat;
90
75
  /** For tools: only render tools that provide prompt snippets, matching Pi's default prompt builder. */
91
76
  onlyWithSnippets?: boolean;
@@ -112,7 +97,7 @@ export type PromptVariableValue = PromptVariablePrimitive | PromptVariableValue[
112
97
  [key: string]: PromptVariableValue;
113
98
  };
114
99
  export interface PromptStack {
115
- schemaVersion: 1;
100
+ schemaVersion: 1 | 2;
116
101
  type?: "pi-forge.prompt-stack";
117
102
  id: string;
118
103
  name?: string;
@@ -124,6 +109,7 @@ export interface PromptStack {
124
109
  tools?: PromptResourcePolicy;
125
110
  skills?: PromptResourcePolicy;
126
111
  variables?: Record<string, string>;
112
+ parameters?: Record<string, PromptVariableValue>;
127
113
  regex?: PromptRegexConfig;
128
114
  items: PromptStackItem[];
129
115
  import?: Record<string, unknown>;
@@ -141,18 +127,45 @@ export interface PromptStackDiagnostic {
141
127
  message: string;
142
128
  itemId?: string;
143
129
  }
144
- export interface PromptVariableStore {
145
- turn: Record<string, PromptVariableValue>;
146
- session: Record<string, PromptVariableValue>;
147
- sessionDirty?: boolean;
148
- }
149
- export interface PromptRuntime {
150
- options: BuildSystemPromptOptions;
151
- ctx?: ExtensionContext;
130
+ /**
131
+ * Host-neutral prompt compilation input.
132
+ *
133
+ * This deliberately avoids Pi runtime types such as `ExtensionContext` and
134
+ * `BuildSystemPromptOptions`. Pi/preview/subagent adapters convert their
135
+ * runtime facts into this small snapshot before entering the compiler.
136
+ */
137
+ export interface PromptCompileOptions {
138
+ cwd: string;
139
+ selectedTools?: readonly string[];
140
+ toolSnippets?: Readonly<Record<string, string>>;
141
+ promptGuidelines?: readonly string[];
142
+ appendSystemPrompt?: string;
143
+ contextFiles?: readonly {
144
+ path: string;
145
+ content: string;
146
+ }[];
147
+ skills?: readonly {
148
+ name: string;
149
+ description: string;
150
+ filePath: string;
151
+ baseDir?: string;
152
+ sourceInfo?: unknown;
153
+ disableModelInvocation: boolean;
154
+ }[];
155
+ }
156
+ export interface PromptRuntimeSnapshot {
157
+ options: PromptCompileOptions;
158
+ /** Host-neutral model identity; used for `activeModel` and synthetic assistant messages. */
159
+ model?: {
160
+ provider: string;
161
+ id: string;
162
+ api?: string;
163
+ };
152
164
  latestUserMessage?: string;
153
165
  now: Date;
154
- variables?: PromptVariableStore;
155
166
  }
167
+ /** @deprecated Use {@link PromptRuntimeSnapshot} for new code. */
168
+ export type PromptRuntime = PromptRuntimeSnapshot;
156
169
  export interface CompileSystemPromptResult {
157
170
  systemPrompt: string;
158
171
  diagnostics: PromptStackDiagnostic[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAClG,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEzE,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/D,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;AAEzE,MAAM,MAAM,eAAe,GACxB,cAAc,GACd,OAAO,GACP,iBAAiB,GACjB,QAAQ,GACR,iBAAiB,GACjB,sBAAsB,GACtB,MAAM,GACN,KAAK,GACL,UAAU,GACV,cAAc,GACd,SAAS,GACT,WAAW,CAAC;AAEf,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU,CAAC;AAEtD,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;AAE7E,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,gBAAgB,CAAC;IACxB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IACjC,aAAa,CAAC,EAAE,CAAC,CAAC;IAClB,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,MAAM,MAAM,oBAAoB,GAC7B;IAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAA;CAAE,GAClC;IAAE,KAAK,CAAC,EAAE,KAAK,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEtC,MAAM,WAAW,mBAAmB;IACnC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,qBAAqB,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAClD;AAED,MAAM,WAAW,yBAAyB;IACzC,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAChE,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACpC,qDAAqD;IACrD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gDAAgD;IAChD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,mCAAmC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,sBAAsB;IACtC,gGAAgG;IAChG,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,wGAAwG;IACxG,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,+EAA+E;IAC/E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mGAAmG;IACnG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,uGAAuG;IACvG,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,yEAAyE;IACzE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qFAAqF;IACrF,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,wGAAwG;IACxG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,gHAAgH;IAChH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,mBAAoB,SAAQ,mBAAmB;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC;IAC/B,OAAO,CAAC,EAAE,sBAAsB,CAAC;CACjC;AAED,MAAM,MAAM,eAAe,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;AAEzE,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAEvE,MAAM,MAAM,mBAAmB,GAAG,uBAAuB,GAAG,mBAAmB,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAA;CAAE,CAAC;AAE3H,MAAM,WAAW,WAAW;IAC3B,aAAa,EAAE,CAAC,CAAC;IACjB,IAAI,CAAC,EAAE,uBAAuB,CAAC;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,QAAQ,CAAC,EAAE,mBAAmB,CAAC;IAC/B,OAAO,CAAC,EAAE,yBAAyB,CAAC;IACpC,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,GAAG,EAAE,WAAW,CAAC;IACjB,WAAW,EAAE,qBAAqB,EAAE,CAAC;CACrC;AAED,MAAM,MAAM,0BAA0B,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEtE,MAAM,WAAW,qBAAqB;IACrC,KAAK,EAAE,0BAA0B,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC1C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC7C,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,wBAAwB,CAAC;IAClC,GAAG,CAAC,EAAE,gBAAgB,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,EAAE,IAAI,CAAC;IACV,SAAS,CAAC,EAAE,mBAAmB,CAAC;CAChC;AAED,MAAM,WAAW,yBAAyB;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,qBAAqB,EAAE,CAAC;CACrC;AAED,MAAM,MAAM,wBAAwB,GAAG,YAAY,GAAG,cAAc,GAAG,kBAAkB,CAAC;AAE1F,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,cAAc,EAAE,oBAAoB,EAAE,CAAC;IACvC,WAAW,EAAE,qBAAqB,EAAE,CAAC;CACrC;AAED,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAmNA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAwNA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,170 @@
1
+ import type { FormSchema, FormValues } from "../web-editor/schema-form.ts";
2
+ /**
3
+ * Cross-extension UI contribution port v1 over the Pi event bus.
4
+ *
5
+ * This is the generic, versioned RPC contract used by optional packages to
6
+ * contribute schema-driven tabs to the pi-forge web editor. Messages are plain,
7
+ * recursively validated, JSON-compatible data only — no functions, components,
8
+ * live contexts, or internal registries cross the bus. The port itself is not a
9
+ * trust boundary.
10
+ *
11
+ * Ownership: the contributing package owns the schema, current values, and
12
+ * persistence/validation for its tab. The pi-forge web server only proxies
13
+ * descriptors to the browser and writes submitted values back over the bus.
14
+ */
15
+ export declare const UI_CONTRIBUTION_PORT_VERSION = 1;
16
+ export declare const UI_CONTRIBUTION_PORT_NAMESPACE = "@zihanw/pi-forge/ui-contribution/v1";
17
+ export declare const UI_CONTRIBUTION_PORT_OPERATIONS: readonly ["listContributions", "writeValues"];
18
+ export type UiContributionPortOperation = (typeof UI_CONTRIBUTION_PORT_OPERATIONS)[number];
19
+ export declare const UI_CONTRIBUTION_CHANNEL: {
20
+ readonly discover: "@zihanw/pi-forge/ui-contribution/v1/discover";
21
+ readonly available: "@zihanw/pi-forge/ui-contribution/v1/available";
22
+ readonly request: "@zihanw/pi-forge/ui-contribution/v1/request";
23
+ readonly reply: "@zihanw/pi-forge/ui-contribution/v1/reply";
24
+ readonly unavailable: "@zihanw/pi-forge/ui-contribution/v1/unavailable";
25
+ };
26
+ export interface UiContributionTransport {
27
+ emit(channel: string, data: unknown): void;
28
+ on(channel: string, handler: (data: unknown) => void): () => void;
29
+ }
30
+ export type UiContributionWireMessage = {
31
+ type: "discover";
32
+ protocolVersion: number;
33
+ minVersion: number;
34
+ maxVersion: number;
35
+ clientId: string;
36
+ } | {
37
+ type: "available";
38
+ hostId: string;
39
+ protocolVersion: number;
40
+ minVersion: number;
41
+ maxVersion: number;
42
+ capabilities: string[];
43
+ generation: number;
44
+ } | {
45
+ type: "request";
46
+ requestId: string;
47
+ hostId: string;
48
+ generation: number;
49
+ operation: string;
50
+ payload: unknown;
51
+ } | {
52
+ type: "reply";
53
+ requestId: string;
54
+ hostId: string;
55
+ generation: number;
56
+ ok: boolean;
57
+ data?: unknown;
58
+ error?: string;
59
+ } | {
60
+ type: "unavailable";
61
+ hostId: string;
62
+ generation: number;
63
+ };
64
+ export type UiContributionPortResult = {
65
+ ok: true;
66
+ data: unknown;
67
+ } | {
68
+ ok: false;
69
+ error: string;
70
+ };
71
+ export interface UiContributionRequestContext {
72
+ /** Aborted when the provider generation stops; handlers must check before side effects after an await. */
73
+ signal: AbortSignal;
74
+ generation: number;
75
+ }
76
+ export interface UiContributionProviderOptions {
77
+ providerId?: string;
78
+ capabilities?: readonly string[];
79
+ minVersion?: number;
80
+ maxVersion?: number;
81
+ /** Operation handler; must never throw across the bus. */
82
+ handle(operation: string, payload: unknown, context: UiContributionRequestContext): UiContributionPortResult | Promise<UiContributionPortResult>;
83
+ }
84
+ export interface UiContributionConnection {
85
+ hostId: string;
86
+ protocolVersion: number;
87
+ capabilities: readonly string[];
88
+ generation: number;
89
+ }
90
+ export interface UiContributionTabDescriptor {
91
+ tabId: string;
92
+ title: string;
93
+ icon: string;
94
+ schema: FormSchema;
95
+ values: FormValues;
96
+ }
97
+ export interface UiListContributionsResponse {
98
+ tabs: UiContributionTabDescriptor[];
99
+ }
100
+ export interface UiWriteValuesRequest {
101
+ tabId: string;
102
+ patch: FormValues;
103
+ }
104
+ export type UiWriteValuesResponse = {
105
+ ok: true;
106
+ values?: FormValues;
107
+ } | {
108
+ ok: false;
109
+ errors: Record<string, string>;
110
+ };
111
+ export type ValidationResult<T = unknown> = {
112
+ ok: true;
113
+ data: T;
114
+ } | {
115
+ ok: false;
116
+ error: string;
117
+ };
118
+ export declare class UiContributionPortError extends Error {
119
+ readonly code: "timeout" | "duplicate" | "unavailable" | "protocol" | "invalid";
120
+ constructor(code: UiContributionPortError["code"], message: string);
121
+ }
122
+ export declare function validateListContributionsRequest(value: unknown): ValidationResult<Record<string, never>>;
123
+ export declare function validateListContributionsResponse(value: unknown): ValidationResult<UiListContributionsResponse>;
124
+ export declare function validateUiContributionTabDescriptor(value: unknown): ValidationResult<UiContributionTabDescriptor>;
125
+ export declare function validateWriteValuesRequest(value: unknown): ValidationResult<UiWriteValuesRequest>;
126
+ export declare function validateWriteValuesResponse(value: unknown): ValidationResult<UiWriteValuesResponse>;
127
+ export declare function validateFormSchema(value: unknown): ValidationResult<FormSchema>;
128
+ export declare class UiContributionProvider {
129
+ private readonly transport;
130
+ private readonly options;
131
+ readonly hostId: string;
132
+ private generationId;
133
+ private started;
134
+ private unsubscribers;
135
+ private readonly pendingRequests;
136
+ constructor(transport: UiContributionTransport, options: UiContributionProviderOptions);
137
+ get generation(): number;
138
+ get isLive(): boolean;
139
+ private availableMessage;
140
+ start(): void;
141
+ stop(): void;
142
+ private onDiscover;
143
+ private onRequest;
144
+ }
145
+ export interface UiContributionClientOptions {
146
+ clientId?: string;
147
+ defaultTimeoutMs?: number;
148
+ discoverSettleMs?: number;
149
+ }
150
+ export declare class UiContributionClient {
151
+ private readonly transport;
152
+ readonly clientId: string;
153
+ private readonly defaultTimeoutMs;
154
+ private readonly discoverSettleMs;
155
+ private connectionUnsubscribe?;
156
+ private unavailableHandlers;
157
+ private activeConnection?;
158
+ constructor(transport: UiContributionTransport, options?: UiContributionClientOptions);
159
+ onUnavailable(handler: () => void): () => void;
160
+ private teardownPersistentListener;
161
+ private onUnavailableMessage;
162
+ discover(timeoutMs?: number): Promise<UiContributionConnection>;
163
+ connect(connection: UiContributionConnection): UiContributionConnection;
164
+ request(connection: UiContributionConnection, operation: string, payload: unknown, timeoutMs?: number): Promise<UiContributionPortResult>;
165
+ listContributions(connection: UiContributionConnection, timeoutMs?: number): Promise<UiContributionPortResult>;
166
+ writeValues(connection: UiContributionConnection, tabId: string, patch: FormValues, timeoutMs?: number): Promise<UiContributionPortResult>;
167
+ disconnect(): void;
168
+ get subscriptionCount(): number;
169
+ }
170
+ //# sourceMappingURL=contrib-port.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contrib-port.d.ts","sourceRoot":"","sources":["../../src/ui-contribution/contrib-port.ts"],"names":[],"mappings":"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"}