@bastani/atomic 0.9.28-alpha.1 → 0.9.28-alpha.2

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 (202) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/builtin/intercom/package.json +1 -1
  3. package/dist/builtin/mcp/package.json +1 -1
  4. package/dist/builtin/subagents/package.json +1 -1
  5. package/dist/builtin/web-access/package.json +1 -1
  6. package/dist/builtin/workflows/CHANGELOG.md +23 -0
  7. package/dist/builtin/workflows/builtin/{chunk-wz8v67bn.js → chunk-aqv8ny38.js} +257 -259
  8. package/dist/builtin/workflows/builtin/{chunk-f61w0hpm.js → chunk-br4ac9a3.js} +1 -1
  9. package/dist/builtin/workflows/builtin/{chunk-tecnpe8j.js → chunk-p3xmajmj.js} +438 -39
  10. package/dist/builtin/workflows/builtin/chunk-p6jagvyf.js +8 -0
  11. package/dist/builtin/workflows/builtin/goal.js +2 -2
  12. package/dist/builtin/workflows/builtin/index.js +4 -4
  13. package/dist/builtin/workflows/builtin/ralph.js +2 -2
  14. package/dist/builtin/workflows/package.json +1 -1
  15. package/dist/builtin/workflows/src/authoring.d.ts +14 -0
  16. package/dist/builtin/workflows/src/extension/index.bundle.mjs +107577 -106722
  17. package/dist/builtin/workflows/src/index.js +42284 -41141
  18. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +16 -11
  19. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +16 -1
  20. package/dist/cli/credential-print.d.ts +1 -1
  21. package/dist/cli/credential-print.d.ts.map +1 -1
  22. package/dist/cli/credential-print.js +2 -56
  23. package/dist/cli/credential-print.js.map +1 -1
  24. package/dist/core/agent-session-accessors.d.ts.map +1 -1
  25. package/dist/core/agent-session-accessors.js +6 -1
  26. package/dist/core/agent-session-accessors.js.map +1 -1
  27. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  28. package/dist/core/agent-session-compaction.js +20 -3
  29. package/dist/core/agent-session-compaction.js.map +1 -1
  30. package/dist/core/agent-session-events.d.ts.map +1 -1
  31. package/dist/core/agent-session-events.js +2 -1
  32. package/dist/core/agent-session-events.js.map +1 -1
  33. package/dist/core/agent-session-extension-bindings.d.ts +6 -0
  34. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  35. package/dist/core/agent-session-extension-bindings.js +87 -7
  36. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  37. package/dist/core/agent-session-methods.d.ts +2 -1
  38. package/dist/core/agent-session-methods.d.ts.map +1 -1
  39. package/dist/core/agent-session-methods.js.map +1 -1
  40. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  41. package/dist/core/agent-session-prompt.js +14 -1
  42. package/dist/core/agent-session-prompt.js.map +1 -1
  43. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  44. package/dist/core/agent-session-tool-registry.js +1 -0
  45. package/dist/core/agent-session-tool-registry.js.map +1 -1
  46. package/dist/core/agent-session-types.d.ts +1 -0
  47. package/dist/core/agent-session-types.d.ts.map +1 -1
  48. package/dist/core/agent-session-types.js.map +1 -1
  49. package/dist/core/compaction/classifier-compaction.d.ts +13 -0
  50. package/dist/core/compaction/classifier-compaction.d.ts.map +1 -0
  51. package/dist/core/compaction/classifier-compaction.js +110 -0
  52. package/dist/core/compaction/classifier-compaction.js.map +1 -0
  53. package/dist/core/compaction/compaction-boundary.d.ts.map +1 -1
  54. package/dist/core/compaction/compaction-boundary.js +2 -6
  55. package/dist/core/compaction/compaction-boundary.js.map +1 -1
  56. package/dist/core/compaction/compaction-runner.d.ts +16 -1
  57. package/dist/core/compaction/compaction-runner.d.ts.map +1 -1
  58. package/dist/core/compaction/compaction-runner.js +97 -12
  59. package/dist/core/compaction/compaction-runner.js.map +1 -1
  60. package/dist/core/compaction/compaction-types.d.ts +18 -1
  61. package/dist/core/compaction/compaction-types.d.ts.map +1 -1
  62. package/dist/core/compaction/compaction-types.js +1 -1
  63. package/dist/core/compaction/compaction-types.js.map +1 -1
  64. package/dist/core/compaction/fallback-planner.d.ts +1 -0
  65. package/dist/core/compaction/fallback-planner.d.ts.map +1 -1
  66. package/dist/core/compaction/fallback-planner.js +2 -0
  67. package/dist/core/compaction/fallback-planner.js.map +1 -1
  68. package/dist/core/compaction/index.d.ts +3 -0
  69. package/dist/core/compaction/index.d.ts.map +1 -1
  70. package/dist/core/compaction/index.js +3 -0
  71. package/dist/core/compaction/index.js.map +1 -1
  72. package/dist/core/compaction/model-resolver.d.ts +16 -0
  73. package/dist/core/compaction/model-resolver.d.ts.map +1 -0
  74. package/dist/core/compaction/model-resolver.js +18 -0
  75. package/dist/core/compaction/model-resolver.js.map +1 -0
  76. package/dist/core/compaction/morph-compaction.d.ts +14 -0
  77. package/dist/core/compaction/morph-compaction.d.ts.map +1 -0
  78. package/dist/core/compaction/morph-compaction.js +99 -0
  79. package/dist/core/compaction/morph-compaction.js.map +1 -0
  80. package/dist/core/compaction/pi-summary-fallback.d.ts +34 -0
  81. package/dist/core/compaction/pi-summary-fallback.d.ts.map +1 -0
  82. package/dist/core/compaction/pi-summary-fallback.js +357 -0
  83. package/dist/core/compaction/pi-summary-fallback.js.map +1 -0
  84. package/dist/core/compaction/planner-outcome.d.ts +10 -6
  85. package/dist/core/compaction/planner-outcome.d.ts.map +1 -1
  86. package/dist/core/compaction/planner-outcome.js +11 -4
  87. package/dist/core/compaction/planner-outcome.js.map +1 -1
  88. package/dist/core/compaction/range-planner-diagnostics.d.ts +3 -1
  89. package/dist/core/compaction/range-planner-diagnostics.d.ts.map +1 -1
  90. package/dist/core/compaction/range-planner-diagnostics.js +11 -0
  91. package/dist/core/compaction/range-planner-diagnostics.js.map +1 -1
  92. package/dist/core/compaction/range-planner.d.ts +3 -3
  93. package/dist/core/compaction/range-planner.d.ts.map +1 -1
  94. package/dist/core/compaction/range-planner.js +59 -28
  95. package/dist/core/compaction/range-planner.js.map +1 -1
  96. package/dist/core/compaction/region-trimming.d.ts.map +1 -1
  97. package/dist/core/compaction/region-trimming.js +7 -0
  98. package/dist/core/compaction/region-trimming.js.map +1 -1
  99. package/dist/core/compaction/structured-compaction-input.d.ts +19 -0
  100. package/dist/core/compaction/structured-compaction-input.d.ts.map +1 -0
  101. package/dist/core/compaction/structured-compaction-input.js +70 -0
  102. package/dist/core/compaction/structured-compaction-input.js.map +1 -0
  103. package/dist/core/compaction/transcript-serialization.d.ts +1 -0
  104. package/dist/core/compaction/transcript-serialization.d.ts.map +1 -1
  105. package/dist/core/compaction/transcript-serialization.js +26 -0
  106. package/dist/core/compaction/transcript-serialization.js.map +1 -1
  107. package/dist/core/extensions/api-types.d.ts +2 -2
  108. package/dist/core/extensions/api-types.d.ts.map +1 -1
  109. package/dist/core/extensions/api-types.js.map +1 -1
  110. package/dist/core/extensions/context-types.d.ts +1 -0
  111. package/dist/core/extensions/context-types.d.ts.map +1 -1
  112. package/dist/core/extensions/context-types.js.map +1 -1
  113. package/dist/core/extensions/loader-api.js.map +1 -1
  114. package/dist/core/extensions/runner-context.d.ts +10 -4
  115. package/dist/core/extensions/runner-context.d.ts.map +1 -1
  116. package/dist/core/extensions/runner-context.js +47 -3
  117. package/dist/core/extensions/runner-context.js.map +1 -1
  118. package/dist/core/extensions/runner.d.ts +10 -3
  119. package/dist/core/extensions/runner.d.ts.map +1 -1
  120. package/dist/core/extensions/runner.js +31 -7
  121. package/dist/core/extensions/runner.js.map +1 -1
  122. package/dist/core/extensions/workflow-events.d.ts +49 -0
  123. package/dist/core/extensions/workflow-events.d.ts.map +1 -1
  124. package/dist/core/extensions/workflow-events.js.map +1 -1
  125. package/dist/core/extensions/workflow-run-control-hub.d.ts +16 -4
  126. package/dist/core/extensions/workflow-run-control-hub.d.ts.map +1 -1
  127. package/dist/core/extensions/workflow-run-control-hub.js +72 -1
  128. package/dist/core/extensions/workflow-run-control-hub.js.map +1 -1
  129. package/dist/core/extensions/workflow-run-control.d.ts +11 -3
  130. package/dist/core/extensions/workflow-run-control.d.ts.map +1 -1
  131. package/dist/core/extensions/workflow-run-control.js.map +1 -1
  132. package/dist/core/messages.d.ts +1 -0
  133. package/dist/core/messages.d.ts.map +1 -1
  134. package/dist/core/messages.js +5 -1
  135. package/dist/core/messages.js.map +1 -1
  136. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  137. package/dist/core/remote-catalog-provider.js +3 -0
  138. package/dist/core/remote-catalog-provider.js.map +1 -1
  139. package/dist/core/session-manager-history.d.ts.map +1 -1
  140. package/dist/core/session-manager-history.js +4 -2
  141. package/dist/core/session-manager-history.js.map +1 -1
  142. package/dist/core/settings-manager-basic-accessors.d.ts +2 -0
  143. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  144. package/dist/core/settings-manager-basic-accessors.js +29 -0
  145. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  146. package/dist/core/settings-types.d.ts +1 -0
  147. package/dist/core/settings-types.d.ts.map +1 -1
  148. package/dist/core/settings-types.js.map +1 -1
  149. package/dist/core/transcript.d.ts +58 -0
  150. package/dist/core/transcript.d.ts.map +1 -0
  151. package/dist/core/transcript.js +185 -0
  152. package/dist/core/transcript.js.map +1 -0
  153. package/dist/extensions/herdr/index.d.ts.map +1 -1
  154. package/dist/extensions/herdr/index.js +15 -10
  155. package/dist/extensions/herdr/index.js.map +1 -1
  156. package/dist/extensions/herdr/pane-owner.d.ts +6 -2
  157. package/dist/extensions/herdr/pane-owner.d.ts.map +1 -1
  158. package/dist/extensions/herdr/pane-owner.js +19 -4
  159. package/dist/extensions/herdr/pane-owner.js.map +1 -1
  160. package/dist/index.d.ts +2 -0
  161. package/dist/index.d.ts.map +1 -1
  162. package/dist/index.js +2 -0
  163. package/dist/index.js.map +1 -1
  164. package/dist/modes/interactive/components/compaction-boundary-message.d.ts +2 -0
  165. package/dist/modes/interactive/components/compaction-boundary-message.d.ts.map +1 -1
  166. package/dist/modes/interactive/components/compaction-boundary-message.js +15 -3
  167. package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
  168. package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
  169. package/dist/modes/interactive/components/settings-selector-items.js +43 -0
  170. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
  171. package/dist/modes/interactive/components/settings-selector-types.d.ts +6 -0
  172. package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
  173. package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
  174. package/dist/modes/interactive/interactive-prompt-turn.js +6 -4
  175. package/dist/modes/interactive/interactive-prompt-turn.js.map +1 -1
  176. package/dist/modes/interactive/interactive-render-chat.js +13 -1
  177. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  178. package/dist/modes/interactive/interactive-selectors.js +8 -0
  179. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  180. package/dist/modes/interactive/interactive-session-runtime.js +2 -0
  181. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  182. package/dist/modes/interactive/interactive-startup.js +1 -1
  183. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  184. package/dist/utils/credential-redaction.d.ts +2 -0
  185. package/dist/utils/credential-redaction.d.ts.map +1 -0
  186. package/dist/utils/credential-redaction.js +20 -0
  187. package/dist/utils/credential-redaction.js.map +1 -0
  188. package/docs/compaction/reference.md +10 -4
  189. package/docs/compaction.md +40 -8
  190. package/docs/docs.json +1 -0
  191. package/docs/extensions/api-reference.md +4 -0
  192. package/docs/extensions/events.md +2 -2
  193. package/docs/providers.md +12 -1
  194. package/docs/sdk/reference.md +16 -1
  195. package/docs/sdk/web-server.md +325 -0
  196. package/docs/sdk.md +83 -1
  197. package/docs/security.md +1 -1
  198. package/docs/workflows/api-reference.md +71 -3
  199. package/docs/workflows/builtins.md +4 -0
  200. package/docs/workflows/operations.md +12 -4
  201. package/npm-shrinkwrap.json +32 -32
  202. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"region-trimming.js","sourceRoot":"","sources":["../../../src/core/compaction/region-trimming.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,4EAA4E;AAC5E,+EAA+E;AAC/E,wEAAwE;AACxE,6BAA6B;AAE7B,SAAS,SAAS,CAAC,MAAuC,EAAE,MAAc;IACzE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;QACjC,IAAI,IAAI,GAAG,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAsB,EAAE,MAAc;IACpE,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IACnE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAChD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QAClD,IAAI,IAAI,GAAG,MAAM;YAAE,aAAa,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO;QACN,OAAO,EAAE,gBAAgB;QACzB,KAAK;QACL,iBAAiB,EAAE,SAAS,CAAC,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC;QAC9D,aAAa;QACb,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,SAAS,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChH,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KACrD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAsB,EAAE,aAAqB;IAC3E,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;IACtD,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACrC,MAAM,IAAI,GAAG,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;IACpE,OAAO,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,SAA+B,EAAE,MAAc;IAClF,MAAM,OAAO,GAAmB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5D,KAAK,MAAM,KAAK,IAAI,SAAS;QAAE,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,MAAM,EAAE,CAAC,CAAC;IACtG,OAAO,OAAO,CAAC;AAChB,CAAC","sourcesContent":["/**\n * Oldest-first planner-input trimming for context overflow.\n *\n * Port of codex's `history.remove_first_item()` retry on\n * `ContextWindowExceeded` (`compact.rs:309-343`). Codex can discard trimmed\n * history because it writes a summary; Atomic promises validated deletion\n * boundaries over the original numbered lines, so trimming here is a *view*\n * over the same region:\n *\n * - the planner is shown only lines `offset+1..N`, renumbered `1..N-offset`;\n * - protected spans and prior filtered markers are rebased into that view;\n * - the returned ranges are rebased back onto the original numbering;\n * - the withheld head becomes a deterministic deletion range, because the\n * planner cannot rank what it was not shown and the oldest lines carry the\n * lowest continuation value. Protected lines inside the head still survive:\n * `validateDeletedRanges` splits every range around protected lines.\n */\n\nimport type { LineRange, NumberedRegion, RawLineRange } from \"./compaction-types.js\";\n\n// Trimming continues while a strictly smaller view exists. `nextTrimOffset`\n// halves the remaining suffix, so the walk is finite and logarithmic. RFC §5.3\n// makes \"overflowed with trimming exhausted\" the terminal condition and\n// authorizes no attempt cap.\n\nfunction rebaseSet(source: ReadonlySet<number> | undefined, offset: number): Set<number> {\n\tconst rebased = new Set<number>();\n\tfor (const line of source ?? []) {\n\t\tif (line > offset) rebased.add(line - offset);\n\t}\n\treturn rebased;\n}\n\n/**\n * Return the region as seen after withholding its oldest `offset` lines, or\n * `undefined` when that offset leaves nothing rankable.\n */\nexport function trimRegionHead(region: NumberedRegion, offset: number): NumberedRegion | undefined {\n\tif (offset <= 0 || offset >= region.lines.length) return undefined;\n\tconst lines = region.lines.slice(offset);\n\tconst priorMarkerNs = new Map<number, number>();\n\tfor (const [line, count] of region.priorMarkerNs) {\n\t\tif (line > offset) priorMarkerNs.set(line - offset, count);\n\t}\n\treturn {\n\t\t__brand: \"NumberedRegion\",\n\t\tlines,\n\t\theaderLineNumbers: rebaseSet(region.headerLineNumbers, offset),\n\t\tpriorMarkerNs,\n\t\t...(region.protectedLineNumbers ? { protectedLineNumbers: rebaseSet(region.protectedLineNumbers, offset) } : {}),\n\t\ttokenEstimate: Math.ceil(lines.join(\"\\n\").length / 4),\n\t};\n}\n\n/**\n * Next withheld-head size after an overflow, halving what remains each time, or\n * `undefined` when no further trimming is possible.\n */\nexport function nextTrimOffset(region: NumberedRegion, currentOffset: number): number | undefined {\n\tconst remaining = region.lines.length - currentOffset;\n\tif (remaining <= 1) return undefined;\n\tconst next = currentOffset + Math.max(1, Math.floor(remaining / 2));\n\treturn next >= region.lines.length ? undefined : next;\n}\n\n/**\n * Map ranges validated against a trimmed view back onto the original region,\n * adding the withheld head as a deterministic deletion.\n */\nexport function rebaseTrimmedRanges(validated: readonly LineRange[], offset: number): RawLineRange[] {\n\tconst rebased: RawLineRange[] = [{ start: 1, end: offset }];\n\tfor (const range of validated) rebased.push({ start: range.start + offset, end: range.end + offset });\n\treturn rebased;\n}\n"]}
1
+ {"version":3,"file":"region-trimming.js","sourceRoot":"","sources":["../../../src/core/compaction/region-trimming.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Oldest-first planner-input trimming for context overflow.\n *\n * Port of codex's `history.remove_first_item()` retry on\n * `ContextWindowExceeded` (`compact.rs:309-343`). Codex can discard trimmed\n * history because it writes a summary; Atomic promises validated deletion\n * boundaries over the original numbered lines, so trimming here is a *view*\n * over the same region:\n *\n * - the planner is shown only lines `offset+1..N`, renumbered `1..N-offset`;\n * - protected spans and prior filtered markers are rebased into that view;\n * - the returned ranges are rebased back onto the original numbering;\n * - the withheld head becomes a deterministic deletion range, because the\n * planner cannot rank what it was not shown and the oldest lines carry the\n * lowest continuation value. Protected lines inside the head still survive:\n * `validateDeletedRanges` splits every range around protected lines.\n */\n\nimport type { LineRange, NumberedRegion, RawLineRange } from \"./compaction-types.js\";\n\n// Trimming continues while a strictly smaller view exists. `nextTrimOffset`\n// halves the remaining suffix, so the walk is finite and logarithmic. RFC §5.3\n// makes \"overflowed with trimming exhausted\" the terminal condition and\n// authorizes no attempt cap.\n\nfunction rebaseSet(source: ReadonlySet<number> | undefined, offset: number): Set<number> {\n\tconst rebased = new Set<number>();\n\tfor (const line of source ?? []) {\n\t\tif (line > offset) rebased.add(line - offset);\n\t}\n\treturn rebased;\n}\n\n/**\n * Return the region as seen after withholding its oldest `offset` lines, or\n * `undefined` when that offset leaves nothing rankable.\n */\nexport function trimRegionHead(region: NumberedRegion, offset: number): NumberedRegion | undefined {\n\tif (offset <= 0 || offset >= region.lines.length) return undefined;\n\tconst lines = region.lines.slice(offset);\n\tconst priorMarkerNs = new Map<number, number>();\n\tfor (const [line, count] of region.priorMarkerNs) {\n\t\tif (line > offset) priorMarkerNs.set(line - offset, count);\n\t}\n\treturn {\n\t\t__brand: \"NumberedRegion\",\n\t\tlines,\n\t\t...(region.messageSpans\n\t\t\t? {\n\t\t\t\t\tmessageSpans: region.messageSpans\n\t\t\t\t\t\t.filter((span) => span.end > offset)\n\t\t\t\t\t\t.map((span) => ({ ...span, start: Math.max(1, span.start - offset), end: span.end - offset })),\n\t\t\t\t}\n\t\t\t: {}),\n\t\theaderLineNumbers: rebaseSet(region.headerLineNumbers, offset),\n\t\tpriorMarkerNs,\n\t\t...(region.protectedLineNumbers ? { protectedLineNumbers: rebaseSet(region.protectedLineNumbers, offset) } : {}),\n\t\ttokenEstimate: Math.ceil(lines.join(\"\\n\").length / 4),\n\t};\n}\n\n/**\n * Next withheld-head size after an overflow, halving what remains each time, or\n * `undefined` when no further trimming is possible.\n */\nexport function nextTrimOffset(region: NumberedRegion, currentOffset: number): number | undefined {\n\tconst remaining = region.lines.length - currentOffset;\n\tif (remaining <= 1) return undefined;\n\tconst next = currentOffset + Math.max(1, Math.floor(remaining / 2));\n\treturn next >= region.lines.length ? undefined : next;\n}\n\n/**\n * Map ranges validated against a trimmed view back onto the original region,\n * adding the withheld head as a deterministic deletion.\n */\nexport function rebaseTrimmedRanges(validated: readonly LineRange[], offset: number): RawLineRange[] {\n\tconst rebased: RawLineRange[] = [{ start: 1, end: offset }];\n\tfor (const range of validated) rebased.push({ start: range.start + offset, end: range.end + offset });\n\treturn rebased;\n}\n"]}
@@ -0,0 +1,19 @@
1
+ import type { LineRange, NumberedRegion, VerbatimCompactionParameters } from "./compaction-types.js";
2
+ export interface CompactionInputMessage {
3
+ id: number;
4
+ role: "user" | "assistant" | "tool";
5
+ lines: string[];
6
+ }
7
+ export interface MessageLineRange extends LineRange {
8
+ id: number;
9
+ }
10
+ export interface StructuredCompactionInput {
11
+ messages: CompactionInputMessage[];
12
+ query: string;
13
+ compression_ratio: number;
14
+ protected: MessageLineRange[];
15
+ }
16
+ export declare function buildStructuredCompactionInput(region: NumberedRegion, parameters: VerbatimCompactionParameters): StructuredCompactionInput;
17
+ export declare function parseMessageRangeRecords(text: string, truncated?: boolean): MessageLineRange[] | undefined;
18
+ export declare function mapMessageRanges(ranges: readonly MessageLineRange[], input: StructuredCompactionInput): LineRange[];
19
+ //# sourceMappingURL=structured-compaction-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-compaction-input.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/structured-compaction-input.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAIrG,MAAM,WAAW,sBAAsB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IACpC,KAAK,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IAClD,EAAE,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,yBAAyB;IACzC,QAAQ,EAAE,sBAAsB,EAAE,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED,wBAAgB,8BAA8B,CAC7C,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,4BAA4B,GACtC,yBAAyB,CAsB3B;AAkBD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,gBAAgB,EAAE,GAAG,SAAS,CAgBxG;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,EAAE,KAAK,EAAE,yBAAyB,GAAG,SAAS,EAAE,CAYnH"}
@@ -0,0 +1,70 @@
1
+ import { ROLE_HEADER_RE } from "./transcript-serialization.js";
2
+ import { contiguousRanges } from "./utils.js";
3
+ export function buildStructuredCompactionInput(region, parameters) {
4
+ const spans = region.messageSpans ?? inferMessageSpans(region);
5
+ const messages = spans.map((span, index) => ({
6
+ id: index + 1,
7
+ role: span.role,
8
+ lines: region.lines.slice(span.start - 1, span.end),
9
+ }));
10
+ const protectedRanges = spans.flatMap((span, index) => contiguousRanges(new Set([...(region.protectedLineNumbers ?? [])]
11
+ .filter((line) => line >= span.start && line <= span.end)
12
+ .map((line) => line - span.start + 1))).map((range) => ({ id: index + 1, ...range })));
13
+ return {
14
+ messages,
15
+ query: parameters.query,
16
+ compression_ratio: parameters.compression_ratio,
17
+ protected: protectedRanges,
18
+ };
19
+ }
20
+ function inferMessageSpans(region) {
21
+ const spans = [];
22
+ for (let index = 0; index < region.lines.length; index++) {
23
+ const header = ROLE_HEADER_RE.exec(region.lines[index]);
24
+ if (header || spans.length === 0) {
25
+ if (spans.length > 0)
26
+ spans[spans.length - 1].end = index;
27
+ spans.push({
28
+ role: header?.[1] === "User" ? "user" : header?.[1] === "Tool result" ? "tool" : "assistant",
29
+ start: index + 1,
30
+ end: region.lines.length,
31
+ });
32
+ }
33
+ }
34
+ return spans;
35
+ }
36
+ export function parseMessageRangeRecords(text, truncated = false) {
37
+ const complete = truncated
38
+ ? text.slice(0, Math.max(0, text.lastIndexOf("\n")))
39
+ : text.endsWith("\n")
40
+ ? text.slice(0, -1)
41
+ : text;
42
+ if (!complete)
43
+ return undefined;
44
+ const ranges = [];
45
+ for (const line of complete.split("\n")) {
46
+ const match = /^(0|[1-9][0-9]*):(0|[1-9][0-9]*),(0|[1-9][0-9]*)$/.exec(line);
47
+ if (!match)
48
+ return undefined;
49
+ const [id, start, end] = match.slice(1).map(Number);
50
+ if (![id, start, end].every(Number.isSafeInteger))
51
+ return undefined;
52
+ ranges.push({ id, start, end });
53
+ }
54
+ return ranges;
55
+ }
56
+ export function mapMessageRanges(ranges, input) {
57
+ const offsets = new Map();
58
+ let offset = 0;
59
+ for (const message of input.messages) {
60
+ offsets.set(message.id, { offset, length: message.lines.length });
61
+ offset += message.lines.length;
62
+ }
63
+ return ranges.flatMap((range) => {
64
+ const message = offsets.get(range.id);
65
+ if (!message || range.start < 1 || range.end < range.start || range.end > message.length)
66
+ return [];
67
+ return [{ start: message.offset + range.start, end: message.offset + range.end }];
68
+ });
69
+ }
70
+ //# sourceMappingURL=structured-compaction-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-compaction-input.js","sourceRoot":"","sources":["../../../src/core/compaction/structured-compaction-input.ts"],"names":[],"mappings":"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","sourcesContent":["import type { LineRange, NumberedRegion, VerbatimCompactionParameters } from \"./compaction-types.js\";\nimport { ROLE_HEADER_RE } from \"./transcript-serialization.js\";\nimport { contiguousRanges } from \"./utils.ts\";\n\nexport interface CompactionInputMessage {\n\tid: number;\n\trole: \"user\" | \"assistant\" | \"tool\";\n\tlines: string[];\n}\n\nexport interface MessageLineRange extends LineRange {\n\tid: number;\n}\n\nexport interface StructuredCompactionInput {\n\tmessages: CompactionInputMessage[];\n\tquery: string;\n\tcompression_ratio: number;\n\tprotected: MessageLineRange[];\n}\n\nexport function buildStructuredCompactionInput(\n\tregion: NumberedRegion,\n\tparameters: VerbatimCompactionParameters,\n): StructuredCompactionInput {\n\tconst spans = region.messageSpans ?? inferMessageSpans(region);\n\tconst messages = spans.map((span, index) => ({\n\t\tid: index + 1,\n\t\trole: span.role,\n\t\tlines: region.lines.slice(span.start - 1, span.end),\n\t}));\n\tconst protectedRanges = spans.flatMap((span, index) =>\n\t\tcontiguousRanges(\n\t\t\tnew Set(\n\t\t\t\t[...(region.protectedLineNumbers ?? [])]\n\t\t\t\t\t.filter((line) => line >= span.start && line <= span.end)\n\t\t\t\t\t.map((line) => line - span.start + 1),\n\t\t\t),\n\t\t).map((range) => ({ id: index + 1, ...range })),\n\t);\n\treturn {\n\t\tmessages,\n\t\tquery: parameters.query,\n\t\tcompression_ratio: parameters.compression_ratio,\n\t\tprotected: protectedRanges,\n\t};\n}\n\nfunction inferMessageSpans(region: NumberedRegion): NonNullable<NumberedRegion[\"messageSpans\"]> {\n\tconst spans: NonNullable<NumberedRegion[\"messageSpans\"]> = [];\n\tfor (let index = 0; index < region.lines.length; index++) {\n\t\tconst header = ROLE_HEADER_RE.exec(region.lines[index]);\n\t\tif (header || spans.length === 0) {\n\t\t\tif (spans.length > 0) spans[spans.length - 1].end = index;\n\t\t\tspans.push({\n\t\t\t\trole: header?.[1] === \"User\" ? \"user\" : header?.[1] === \"Tool result\" ? \"tool\" : \"assistant\",\n\t\t\t\tstart: index + 1,\n\t\t\t\tend: region.lines.length,\n\t\t\t});\n\t\t}\n\t}\n\treturn spans;\n}\n\nexport function parseMessageRangeRecords(text: string, truncated = false): MessageLineRange[] | undefined {\n\tconst complete = truncated\n\t\t? text.slice(0, Math.max(0, text.lastIndexOf(\"\\n\")))\n\t\t: text.endsWith(\"\\n\")\n\t\t\t? text.slice(0, -1)\n\t\t\t: text;\n\tif (!complete) return undefined;\n\tconst ranges: MessageLineRange[] = [];\n\tfor (const line of complete.split(\"\\n\")) {\n\t\tconst match = /^(0|[1-9][0-9]*):(0|[1-9][0-9]*),(0|[1-9][0-9]*)$/.exec(line);\n\t\tif (!match) return undefined;\n\t\tconst [id, start, end] = match.slice(1).map(Number);\n\t\tif (![id, start, end].every(Number.isSafeInteger)) return undefined;\n\t\tranges.push({ id, start, end });\n\t}\n\treturn ranges;\n}\n\nexport function mapMessageRanges(ranges: readonly MessageLineRange[], input: StructuredCompactionInput): LineRange[] {\n\tconst offsets = new Map<number, { offset: number; length: number }>();\n\tlet offset = 0;\n\tfor (const message of input.messages) {\n\t\toffsets.set(message.id, { offset, length: message.lines.length });\n\t\toffset += message.lines.length;\n\t}\n\treturn ranges.flatMap((range) => {\n\t\tconst message = offsets.get(range.id);\n\t\tif (!message || range.start < 1 || range.end < range.start || range.end > message.length) return [];\n\t\treturn [{ start: message.offset + range.start, end: message.offset + range.end }];\n\t});\n}\n"]}
@@ -26,5 +26,6 @@ export declare function serializeRetainedTranscript(messages: Message[]): Transc
26
26
  */
27
27
  export declare function keepContextLineNumbers(lines: readonly string[]): Set<number>;
28
28
  export declare function createNumberedRegion(text: string, protectedLineNumbers?: ReadonlySet<number>): NumberedRegion;
29
+ export declare function createConversationRegion(messages: Message[], previousSummary?: string): NumberedRegion;
29
30
  export declare function numberRegionLines(region: NumberedRegion, start?: number, end?: number): string;
30
31
  //# sourceMappingURL=transcript-serialization.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transcript-serialization.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/transcript-serialization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,eAAO,MAAM,kBAAkB,QAA+B,CAAC;AAC/D,eAAO,MAAM,qBAAqB,WAAM,CAAC;AACzC,eAAO,MAAM,cAAc,QAAgF,CAAC;AAmB5G,4FAA4F;AAC5F,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,YAAY,CAAC;AASzD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD;AAuGD,yFAAyF;AACzF,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAI9E;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,eAAe,EAAE,CAElF;AA0CD;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CA0B5E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,cAAc,CAqB7G;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,SAAI,EAAE,GAAG,SAAsB,GAAG,MAAM,CAQtG"}
1
+ {"version":3,"file":"transcript-serialization.d.ts","sourceRoot":"","sources":["../../../src/core/compaction/transcript-serialization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,eAAO,MAAM,kBAAkB,QAA+B,CAAC;AAC/D,eAAO,MAAM,qBAAqB,WAAM,CAAC;AACzC,eAAO,MAAM,cAAc,QAAgF,CAAC;AAmB5G,4FAA4F;AAC5F,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,YAAY,CAAC;AASzD,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD;AAuGD,yFAAyF;AACzF,wBAAgB,kCAAkC,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAI9E;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,eAAe,EAAE,CAElF;AA0CD;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CA0B5E;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,oBAAoB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,cAAc,CAqB7G;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,cAAc,CAuBtG;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,SAAI,EAAE,GAAG,SAAsB,GAAG,MAAM,CAQtG"}
@@ -240,6 +240,32 @@ export function createNumberedRegion(text, protectedLineNumbers) {
240
240
  tokenEstimate: Math.ceil(text.length / 4),
241
241
  };
242
242
  }
243
+ export function createConversationRegion(messages, previousSummary) {
244
+ const sections = [];
245
+ if (previousSummary)
246
+ sections.push({ role: "assistant", text: previousSummary });
247
+ for (const message of messages) {
248
+ const text = serializeConversationForCompaction([message]);
249
+ if (text)
250
+ sections.push({
251
+ role: message.role === "toolResult" ? "tool" : message.role === "user" ? "user" : "assistant",
252
+ text,
253
+ });
254
+ }
255
+ const lines = [];
256
+ const messageSpans = [];
257
+ for (let index = 0; index < sections.length; index++) {
258
+ const section = sections[index];
259
+ const start = lines.length + 1;
260
+ lines.push(...section.text.split("\n"));
261
+ if (index < sections.length - 1 && !(index === 0 && previousSummary))
262
+ lines.push("");
263
+ messageSpans.push({ role: section.role, start, end: lines.length });
264
+ }
265
+ const region = createNumberedRegion(lines.join("\n"));
266
+ region.messageSpans = messageSpans.length > 0 ? messageSpans : [{ role: "assistant", start: 1, end: 1 }];
267
+ return region;
268
+ }
243
269
  export function numberRegionLines(region, start = 1, end = region.lines.length) {
244
270
  const first = Math.max(1, Math.trunc(start));
245
271
  const last = Math.min(region.lines.length, Math.trunc(end));
@@ -1 +1 @@
1
- {"version":3,"file":"transcript-serialization.js","sourceRoot":"","sources":["../../../src/core/compaction/transcript-serialization.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ImageContent, Message, TextContent } from \"@bastani/pi-ai/compat\";\nimport type { NumberedRegion } from \"./compaction-types.js\";\n\nexport const FILTERED_MARKER_RE = /^\\(filtered (\\d+) lines\\)$/;\nexport const LINE_NUMBER_SEPARATOR = \"→\";\nexport const ROLE_HEADER_RE = /^\\[(User|Assistant|Assistant thinking|Assistant tool calls|Tool result)\\]: /;\n\n/**\n * Callers wrap never-compressible content in `<keepContext>` / `</keepContext>`. Every line of\n * such a span, tag lines included, becomes a protected line, so the span survives verbatim\n * regardless of the compression ratio. Protecting the tags themselves is what makes the span\n * re-detectable on the next boundary, since each compaction re-ranks the previous output.\n *\n * The region is untrusted: it is serialized user, assistant, and tool-result payload, and a\n * message may quote or document the tag text. Detection is therefore deliberately narrow — a\n * marker must be the entire line once an optional role header is stripped, and only a matched\n * open/close pair protects anything. Prose that merely mentions a tag matches nothing, and an\n * unmatched opener protects nothing rather than swallowing the rest of the region.\n */\nconst KEEP_CONTEXT_OPEN_LINE_RE = /^<keepContext>$/i;\nconst KEEP_CONTEXT_CLOSE_LINE_RE = /^<\\/keepContext>$/i;\n\nconst TOOL_RESULT_MAX_CHARS = 16_000;\n\n/** One piece of a serialized transcript: literal text, or an image kept at its position. */\nexport type TranscriptChunk = TextContent | ImageContent;\n\n/**\n * `compacted` renders the durable transcript grammar: images become `[image]` markers and\n * oversized tool results are truncated. `retained` keeps every payload, for spans the\n * compaction promised to preserve verbatim.\n */\ntype SerializeMode = \"compacted\" | \"retained\";\n\nexport function filteredMarker(lineCount: number): string {\n\treturn `(filtered ${lineCount} lines)`;\n}\n\nfunction truncateToolResult(text: string): string {\n\tif (text.length <= TOOL_RESULT_MAX_CHARS) return text;\n\treturn `${text.slice(0, TOOL_RESULT_MAX_CHARS)}\\n\\n[... ${text.length - TOOL_RESULT_MAX_CHARS} more characters truncated]`;\n}\n\nfunction lastChunk(chunks: TranscriptChunk[]): TranscriptChunk | undefined {\n\treturn chunks.length > 0 ? chunks[chunks.length - 1] : undefined;\n}\n\nfunction appendText(chunks: TranscriptChunk[], text: string): void {\n\tif (text.length === 0) return;\n\tconst last = lastChunk(chunks);\n\tif (last !== undefined && last.type === \"text\") last.text += text;\n\telse chunks.push({ type: \"text\", text });\n}\n\nfunction hasContent(chunks: TranscriptChunk[]): boolean {\n\treturn chunks.some((chunk) => chunk.type !== \"text\" || chunk.text.length > 0);\n}\n\nfunction serializeContentBlocks(\n\tcontent: Extract<Message, { role: \"user\" | \"toolResult\" }>[\"content\"],\n\tmode: SerializeMode,\n): TranscriptChunk[] {\n\tif (typeof content === \"string\") return content.length > 0 ? [{ type: \"text\", text: content }] : [];\n\tconst chunks: TranscriptChunk[] = [];\n\tfor (const block of content) {\n\t\tif (block.type === \"text\") {\n\t\t\tappendText(chunks, block.text);\n\t\t\tcontinue;\n\t\t}\n\t\tif (block.type !== \"image\") continue;\n\t\tif (mode === \"retained\") {\n\t\t\tif (chunks.length > 0) appendText(chunks, \"\\n\");\n\t\t\tchunks.push({ ...block });\n\t\t\tcontinue;\n\t\t}\n\t\tconst last = lastChunk(chunks);\n\t\tconst needsBreak = last !== undefined && last.type === \"text\" && !last.text.endsWith(\"\\n\");\n\t\tappendText(chunks, `${needsBreak ? \"\\n\" : \"\"}[image]\\n`);\n\t}\n\tconst trailing = lastChunk(chunks);\n\tif (trailing !== undefined && trailing.type === \"text\" && trailing.text.endsWith(\"\\n\")) {\n\t\ttrailing.text = trailing.text.slice(0, -1);\n\t}\n\treturn chunks;\n}\n\n/** Serialize provider messages into transcript chunks using the durable section grammar. */\nfunction serializeTranscriptChunks(messages: Message[], mode: SerializeMode): TranscriptChunk[] {\n\tconst chunks: TranscriptChunk[] = [];\n\tconst pushSection = (header: string, section: TranscriptChunk[]): void => {\n\t\tif (!hasContent(section)) return;\n\t\tappendText(chunks, `${chunks.length > 0 ? \"\\n\\n\" : \"\"}${header}`);\n\t\tfor (const chunk of section) {\n\t\t\tif (chunk.type === \"text\") appendText(chunks, chunk.text);\n\t\t\telse chunks.push(chunk);\n\t\t}\n\t};\n\n\tfor (const message of messages) {\n\t\tif (message.role === \"user\") {\n\t\t\tpushSection(\"[User]: \", serializeContentBlocks(message.content, mode));\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (message.role === \"assistant\") {\n\t\t\tconst text: string[] = [];\n\t\t\tconst thinking: string[] = [];\n\t\t\tconst toolCalls: string[] = [];\n\t\t\tfor (const block of message.content) {\n\t\t\t\tif (block.type === \"text\") text.push(block.text);\n\t\t\t\telse if (block.type === \"thinking\") thinking.push(block.thinking);\n\t\t\t\telse if (block.type === \"toolCall\") {\n\t\t\t\t\tconst args = Object.entries(block.arguments)\n\t\t\t\t\t\t.map(([key, value]) => `${key}=${JSON.stringify(value)}`)\n\t\t\t\t\t\t.join(\", \");\n\t\t\t\t\ttoolCalls.push(`${block.name}(${args})`);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (thinking.length > 0) pushSection(\"[Assistant thinking]: \", [{ type: \"text\", text: thinking.join(\"\\n\") }]);\n\t\t\tif (text.length > 0) pushSection(\"[Assistant]: \", [{ type: \"text\", text: text.join(\"\\n\") }]);\n\t\t\tif (toolCalls.length > 0)\n\t\t\t\tpushSection(\"[Assistant tool calls]: \", [{ type: \"text\", text: toolCalls.join(\"; \") }]);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (message.role === \"toolResult\") {\n\t\t\tconst section = serializeContentBlocks(message.content, mode);\n\t\t\tif (mode === \"compacted\") {\n\t\t\t\tfor (const chunk of section) {\n\t\t\t\t\tif (chunk.type === \"text\") chunk.text = truncateToolResult(chunk.text);\n\t\t\t\t}\n\t\t\t}\n\t\t\tpushSection(\"[Tool result]: \", section);\n\t\t}\n\t}\n\n\treturn chunks;\n}\n\n/** Serialize provider messages using the durable verbatim-compaction section grammar. */\nexport function serializeConversationForCompaction(messages: Message[]): string {\n\treturn serializeTranscriptChunks(messages, \"compacted\")\n\t\t.map((chunk) => (chunk.type === \"text\" ? chunk.text : \"\"))\n\t\t.join(\"\");\n}\n\n/**\n * Serialize retained messages without losing payloads: tool results keep their full text and\n * images stay as image blocks at their position in the transcript.\n */\nexport function serializeRetainedTranscript(messages: Message[]): TranscriptChunk[] {\n\treturn serializeTranscriptChunks(messages, \"retained\");\n}\n\n/**\n * Classify a line as a `keepContext` marker.\n *\n * The serializer prefixes the first line of a message with its role header, so a span opened at\n * the start of a stage prompt arrives as `[User]: <keepContext>`. The header is stripped before\n * matching, and the remainder must be the whole line — prose that mentions a tag mid-sentence is\n * payload, not syntax.\n */\nfunction keepContextMarker(line: string): \"open\" | \"close\" | undefined {\n\tconst body = line.replace(ROLE_HEADER_RE, \"\").trim();\n\tif (KEEP_CONTEXT_OPEN_LINE_RE.test(body)) return \"open\";\n\tif (KEEP_CONTEXT_CLOSE_LINE_RE.test(body)) return \"close\";\n\treturn undefined;\n}\n\n/** Message roles whose payload is external, so its tag text is data rather than syntax. */\nconst UNTRUSTED_MARKER_ROLE = \"Tool result\";\n\n/**\n * Whether a message role may declare protection.\n *\n * User and assistant messages both may. Prompt construction — stage prompts, run inputs, and\n * steering — arrives as user messages, and agents need protection in their own output too, to\n * restate a contract amendment in a handoff report or pin a decision that changes later\n * behavior. A user-only rule would make those inert while still looking correct at the call site.\n *\n * Tool results may not. Their payload is file contents, fetched pages, and command output —\n * bytes an attacker can choose — and honoring tags there would let read material mark itself\n * unreclaimable and persist through compaction ahead of real transcript content. An agent that\n * wants to keep something it read can restate it in its own message, which is also the more\n * selective habit.\n *\n * An undefined role is the prior compaction summary prepended ahead of the first role header.\n * That is compaction's own output, and honoring it is what lets a span re-arm on later\n * boundaries after its header line has itself been compacted away.\n */\nfunction roleMayProtect(role: string | undefined): boolean {\n\treturn role !== UNTRUSTED_MARKER_ROLE;\n}\n\n/**\n * One-based line numbers covered by `<keepContext>` spans, inclusive of the tag lines.\n *\n * Spans are scoped to a single message: a role header ends any span still open, and an unclosed\n * span protects through the end of its own message rather than the end of the region. Together\n * with the whole-line marker rule and the tool-result exclusion, that keeps the permissive\n * unclosed case safe — quoted or injected tag text costs at most its own message instead of\n * everything after it. Compaction that cannot reclaim is an overflow, not a safe failure.\n *\n * Nested openers flatten into the outermost span, and a closing tag with no opener is inert.\n */\nexport function keepContextLineNumbers(lines: readonly string[]): Set<number> {\n\tconst protectedLines = new Set<number>();\n\tlet openIndex: number | undefined;\n\tlet role: string | undefined;\n\tconst protectThrough = (endIndex: number): void => {\n\t\tif (openIndex === undefined) return;\n\t\tfor (let line = openIndex; line <= endIndex; line++) protectedLines.add(line + 1);\n\t\topenIndex = undefined;\n\t};\n\tfor (let index = 0; index < lines.length; index++) {\n\t\tconst line = lines[index];\n\t\tconst header = ROLE_HEADER_RE.exec(line);\n\t\tif (header) {\n\t\t\tprotectThrough(index - 1);\n\t\t\trole = header[1];\n\t\t}\n\t\tif (!roleMayProtect(role)) continue;\n\t\tconst marker = keepContextMarker(line);\n\t\tif (marker === \"open\") {\n\t\t\tif (openIndex === undefined) openIndex = index;\n\t\t\tcontinue;\n\t\t}\n\t\tif (marker === \"close\") protectThrough(index);\n\t}\n\tprotectThrough(lines.length - 1);\n\treturn protectedLines;\n}\n\nexport function createNumberedRegion(text: string, protectedLineNumbers?: ReadonlySet<number>): NumberedRegion {\n\tconst lines = text.split(\"\\n\");\n\tconst headerLineNumbers = new Set<number>();\n\tconst priorMarkerNs = new Map<number, number>();\n\tfor (let index = 0; index < lines.length; index++) {\n\t\tconst lineNumber = index + 1;\n\t\tif (ROLE_HEADER_RE.test(lines[index])) headerLineNumbers.add(lineNumber);\n\t\tconst markerMatch = FILTERED_MARKER_RE.exec(lines[index]);\n\t\tif (markerMatch) priorMarkerNs.set(lineNumber, Number(markerMatch[1]));\n\t}\n\tconst detected = keepContextLineNumbers(lines);\n\tconst merged =\n\t\tprotectedLineNumbers === undefined ? detected : new Set<number>([...protectedLineNumbers, ...detected]);\n\treturn {\n\t\t__brand: \"NumberedRegion\",\n\t\tlines,\n\t\theaderLineNumbers,\n\t\tpriorMarkerNs,\n\t\tprotectedLineNumbers: merged.size > 0 ? merged : undefined,\n\t\ttokenEstimate: Math.ceil(text.length / 4),\n\t};\n}\n\nexport function numberRegionLines(region: NumberedRegion, start = 1, end = region.lines.length): string {\n\tconst first = Math.max(1, Math.trunc(start));\n\tconst last = Math.min(region.lines.length, Math.trunc(end));\n\tif (first > last) return \"\";\n\treturn region.lines\n\t\t.slice(first - 1, last)\n\t\t.map((line, index) => `${first + index}${LINE_NUMBER_SEPARATOR}${line}`)\n\t\t.join(\"\\n\");\n}\n"]}
1
+ {"version":3,"file":"transcript-serialization.js","sourceRoot":"","sources":["../../../src/core/compaction/transcript-serialization.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ImageContent, Message, TextContent } from \"@bastani/pi-ai/compat\";\nimport type { NumberedRegion } from \"./compaction-types.js\";\n\nexport const FILTERED_MARKER_RE = /^\\(filtered (\\d+) lines\\)$/;\nexport const LINE_NUMBER_SEPARATOR = \"→\";\nexport const ROLE_HEADER_RE = /^\\[(User|Assistant|Assistant thinking|Assistant tool calls|Tool result)\\]: /;\n\n/**\n * Callers wrap never-compressible content in `<keepContext>` / `</keepContext>`. Every line of\n * such a span, tag lines included, becomes a protected line, so the span survives verbatim\n * regardless of the compression ratio. Protecting the tags themselves is what makes the span\n * re-detectable on the next boundary, since each compaction re-ranks the previous output.\n *\n * The region is untrusted: it is serialized user, assistant, and tool-result payload, and a\n * message may quote or document the tag text. Detection is therefore deliberately narrow — a\n * marker must be the entire line once an optional role header is stripped, and only a matched\n * open/close pair protects anything. Prose that merely mentions a tag matches nothing, and an\n * unmatched opener protects nothing rather than swallowing the rest of the region.\n */\nconst KEEP_CONTEXT_OPEN_LINE_RE = /^<keepContext>$/i;\nconst KEEP_CONTEXT_CLOSE_LINE_RE = /^<\\/keepContext>$/i;\n\nconst TOOL_RESULT_MAX_CHARS = 16_000;\n\n/** One piece of a serialized transcript: literal text, or an image kept at its position. */\nexport type TranscriptChunk = TextContent | ImageContent;\n\n/**\n * `compacted` renders the durable transcript grammar: images become `[image]` markers and\n * oversized tool results are truncated. `retained` keeps every payload, for spans the\n * compaction promised to preserve verbatim.\n */\ntype SerializeMode = \"compacted\" | \"retained\";\n\nexport function filteredMarker(lineCount: number): string {\n\treturn `(filtered ${lineCount} lines)`;\n}\n\nfunction truncateToolResult(text: string): string {\n\tif (text.length <= TOOL_RESULT_MAX_CHARS) return text;\n\treturn `${text.slice(0, TOOL_RESULT_MAX_CHARS)}\\n\\n[... ${text.length - TOOL_RESULT_MAX_CHARS} more characters truncated]`;\n}\n\nfunction lastChunk(chunks: TranscriptChunk[]): TranscriptChunk | undefined {\n\treturn chunks.length > 0 ? chunks[chunks.length - 1] : undefined;\n}\n\nfunction appendText(chunks: TranscriptChunk[], text: string): void {\n\tif (text.length === 0) return;\n\tconst last = lastChunk(chunks);\n\tif (last !== undefined && last.type === \"text\") last.text += text;\n\telse chunks.push({ type: \"text\", text });\n}\n\nfunction hasContent(chunks: TranscriptChunk[]): boolean {\n\treturn chunks.some((chunk) => chunk.type !== \"text\" || chunk.text.length > 0);\n}\n\nfunction serializeContentBlocks(\n\tcontent: Extract<Message, { role: \"user\" | \"toolResult\" }>[\"content\"],\n\tmode: SerializeMode,\n): TranscriptChunk[] {\n\tif (typeof content === \"string\") return content.length > 0 ? [{ type: \"text\", text: content }] : [];\n\tconst chunks: TranscriptChunk[] = [];\n\tfor (const block of content) {\n\t\tif (block.type === \"text\") {\n\t\t\tappendText(chunks, block.text);\n\t\t\tcontinue;\n\t\t}\n\t\tif (block.type !== \"image\") continue;\n\t\tif (mode === \"retained\") {\n\t\t\tif (chunks.length > 0) appendText(chunks, \"\\n\");\n\t\t\tchunks.push({ ...block });\n\t\t\tcontinue;\n\t\t}\n\t\tconst last = lastChunk(chunks);\n\t\tconst needsBreak = last !== undefined && last.type === \"text\" && !last.text.endsWith(\"\\n\");\n\t\tappendText(chunks, `${needsBreak ? \"\\n\" : \"\"}[image]\\n`);\n\t}\n\tconst trailing = lastChunk(chunks);\n\tif (trailing !== undefined && trailing.type === \"text\" && trailing.text.endsWith(\"\\n\")) {\n\t\ttrailing.text = trailing.text.slice(0, -1);\n\t}\n\treturn chunks;\n}\n\n/** Serialize provider messages into transcript chunks using the durable section grammar. */\nfunction serializeTranscriptChunks(messages: Message[], mode: SerializeMode): TranscriptChunk[] {\n\tconst chunks: TranscriptChunk[] = [];\n\tconst pushSection = (header: string, section: TranscriptChunk[]): void => {\n\t\tif (!hasContent(section)) return;\n\t\tappendText(chunks, `${chunks.length > 0 ? \"\\n\\n\" : \"\"}${header}`);\n\t\tfor (const chunk of section) {\n\t\t\tif (chunk.type === \"text\") appendText(chunks, chunk.text);\n\t\t\telse chunks.push(chunk);\n\t\t}\n\t};\n\n\tfor (const message of messages) {\n\t\tif (message.role === \"user\") {\n\t\t\tpushSection(\"[User]: \", serializeContentBlocks(message.content, mode));\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (message.role === \"assistant\") {\n\t\t\tconst text: string[] = [];\n\t\t\tconst thinking: string[] = [];\n\t\t\tconst toolCalls: string[] = [];\n\t\t\tfor (const block of message.content) {\n\t\t\t\tif (block.type === \"text\") text.push(block.text);\n\t\t\t\telse if (block.type === \"thinking\") thinking.push(block.thinking);\n\t\t\t\telse if (block.type === \"toolCall\") {\n\t\t\t\t\tconst args = Object.entries(block.arguments)\n\t\t\t\t\t\t.map(([key, value]) => `${key}=${JSON.stringify(value)}`)\n\t\t\t\t\t\t.join(\", \");\n\t\t\t\t\ttoolCalls.push(`${block.name}(${args})`);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (thinking.length > 0) pushSection(\"[Assistant thinking]: \", [{ type: \"text\", text: thinking.join(\"\\n\") }]);\n\t\t\tif (text.length > 0) pushSection(\"[Assistant]: \", [{ type: \"text\", text: text.join(\"\\n\") }]);\n\t\t\tif (toolCalls.length > 0)\n\t\t\t\tpushSection(\"[Assistant tool calls]: \", [{ type: \"text\", text: toolCalls.join(\"; \") }]);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (message.role === \"toolResult\") {\n\t\t\tconst section = serializeContentBlocks(message.content, mode);\n\t\t\tif (mode === \"compacted\") {\n\t\t\t\tfor (const chunk of section) {\n\t\t\t\t\tif (chunk.type === \"text\") chunk.text = truncateToolResult(chunk.text);\n\t\t\t\t}\n\t\t\t}\n\t\t\tpushSection(\"[Tool result]: \", section);\n\t\t}\n\t}\n\n\treturn chunks;\n}\n\n/** Serialize provider messages using the durable verbatim-compaction section grammar. */\nexport function serializeConversationForCompaction(messages: Message[]): string {\n\treturn serializeTranscriptChunks(messages, \"compacted\")\n\t\t.map((chunk) => (chunk.type === \"text\" ? chunk.text : \"\"))\n\t\t.join(\"\");\n}\n\n/**\n * Serialize retained messages without losing payloads: tool results keep their full text and\n * images stay as image blocks at their position in the transcript.\n */\nexport function serializeRetainedTranscript(messages: Message[]): TranscriptChunk[] {\n\treturn serializeTranscriptChunks(messages, \"retained\");\n}\n\n/**\n * Classify a line as a `keepContext` marker.\n *\n * The serializer prefixes the first line of a message with its role header, so a span opened at\n * the start of a stage prompt arrives as `[User]: <keepContext>`. The header is stripped before\n * matching, and the remainder must be the whole line — prose that mentions a tag mid-sentence is\n * payload, not syntax.\n */\nfunction keepContextMarker(line: string): \"open\" | \"close\" | undefined {\n\tconst body = line.replace(ROLE_HEADER_RE, \"\").trim();\n\tif (KEEP_CONTEXT_OPEN_LINE_RE.test(body)) return \"open\";\n\tif (KEEP_CONTEXT_CLOSE_LINE_RE.test(body)) return \"close\";\n\treturn undefined;\n}\n\n/** Message roles whose payload is external, so its tag text is data rather than syntax. */\nconst UNTRUSTED_MARKER_ROLE = \"Tool result\";\n\n/**\n * Whether a message role may declare protection.\n *\n * User and assistant messages both may. Prompt construction — stage prompts, run inputs, and\n * steering — arrives as user messages, and agents need protection in their own output too, to\n * restate a contract amendment in a handoff report or pin a decision that changes later\n * behavior. A user-only rule would make those inert while still looking correct at the call site.\n *\n * Tool results may not. Their payload is file contents, fetched pages, and command output —\n * bytes an attacker can choose — and honoring tags there would let read material mark itself\n * unreclaimable and persist through compaction ahead of real transcript content. An agent that\n * wants to keep something it read can restate it in its own message, which is also the more\n * selective habit.\n *\n * An undefined role is the prior compaction summary prepended ahead of the first role header.\n * That is compaction's own output, and honoring it is what lets a span re-arm on later\n * boundaries after its header line has itself been compacted away.\n */\nfunction roleMayProtect(role: string | undefined): boolean {\n\treturn role !== UNTRUSTED_MARKER_ROLE;\n}\n\n/**\n * One-based line numbers covered by `<keepContext>` spans, inclusive of the tag lines.\n *\n * Spans are scoped to a single message: a role header ends any span still open, and an unclosed\n * span protects through the end of its own message rather than the end of the region. Together\n * with the whole-line marker rule and the tool-result exclusion, that keeps the permissive\n * unclosed case safe — quoted or injected tag text costs at most its own message instead of\n * everything after it. Compaction that cannot reclaim is an overflow, not a safe failure.\n *\n * Nested openers flatten into the outermost span, and a closing tag with no opener is inert.\n */\nexport function keepContextLineNumbers(lines: readonly string[]): Set<number> {\n\tconst protectedLines = new Set<number>();\n\tlet openIndex: number | undefined;\n\tlet role: string | undefined;\n\tconst protectThrough = (endIndex: number): void => {\n\t\tif (openIndex === undefined) return;\n\t\tfor (let line = openIndex; line <= endIndex; line++) protectedLines.add(line + 1);\n\t\topenIndex = undefined;\n\t};\n\tfor (let index = 0; index < lines.length; index++) {\n\t\tconst line = lines[index];\n\t\tconst header = ROLE_HEADER_RE.exec(line);\n\t\tif (header) {\n\t\t\tprotectThrough(index - 1);\n\t\t\trole = header[1];\n\t\t}\n\t\tif (!roleMayProtect(role)) continue;\n\t\tconst marker = keepContextMarker(line);\n\t\tif (marker === \"open\") {\n\t\t\tif (openIndex === undefined) openIndex = index;\n\t\t\tcontinue;\n\t\t}\n\t\tif (marker === \"close\") protectThrough(index);\n\t}\n\tprotectThrough(lines.length - 1);\n\treturn protectedLines;\n}\n\nexport function createNumberedRegion(text: string, protectedLineNumbers?: ReadonlySet<number>): NumberedRegion {\n\tconst lines = text.split(\"\\n\");\n\tconst headerLineNumbers = new Set<number>();\n\tconst priorMarkerNs = new Map<number, number>();\n\tfor (let index = 0; index < lines.length; index++) {\n\t\tconst lineNumber = index + 1;\n\t\tif (ROLE_HEADER_RE.test(lines[index])) headerLineNumbers.add(lineNumber);\n\t\tconst markerMatch = FILTERED_MARKER_RE.exec(lines[index]);\n\t\tif (markerMatch) priorMarkerNs.set(lineNumber, Number(markerMatch[1]));\n\t}\n\tconst detected = keepContextLineNumbers(lines);\n\tconst merged =\n\t\tprotectedLineNumbers === undefined ? detected : new Set<number>([...protectedLineNumbers, ...detected]);\n\treturn {\n\t\t__brand: \"NumberedRegion\",\n\t\tlines,\n\t\theaderLineNumbers,\n\t\tpriorMarkerNs,\n\t\tprotectedLineNumbers: merged.size > 0 ? merged : undefined,\n\t\ttokenEstimate: Math.ceil(text.length / 4),\n\t};\n}\n\nexport function createConversationRegion(messages: Message[], previousSummary?: string): NumberedRegion {\n\tconst sections: { role: \"user\" | \"assistant\" | \"tool\"; text: string }[] = [];\n\tif (previousSummary) sections.push({ role: \"assistant\", text: previousSummary });\n\tfor (const message of messages) {\n\t\tconst text = serializeConversationForCompaction([message]);\n\t\tif (text)\n\t\t\tsections.push({\n\t\t\t\trole: message.role === \"toolResult\" ? \"tool\" : message.role === \"user\" ? \"user\" : \"assistant\",\n\t\t\t\ttext,\n\t\t\t});\n\t}\n\tconst lines: string[] = [];\n\tconst messageSpans: NonNullable<NumberedRegion[\"messageSpans\"]> = [];\n\tfor (let index = 0; index < sections.length; index++) {\n\t\tconst section = sections[index];\n\t\tconst start = lines.length + 1;\n\t\tlines.push(...section.text.split(\"\\n\"));\n\t\tif (index < sections.length - 1 && !(index === 0 && previousSummary)) lines.push(\"\");\n\t\tmessageSpans.push({ role: section.role, start, end: lines.length });\n\t}\n\tconst region = createNumberedRegion(lines.join(\"\\n\"));\n\tregion.messageSpans = messageSpans.length > 0 ? messageSpans : [{ role: \"assistant\", start: 1, end: 1 }];\n\treturn region;\n}\n\nexport function numberRegionLines(region: NumberedRegion, start = 1, end = region.lines.length): string {\n\tconst first = Math.max(1, Math.trunc(start));\n\tconst last = Math.min(region.lines.length, Math.trunc(end));\n\tif (first > last) return \"\";\n\treturn region.lines\n\t\t.slice(first - 1, last)\n\t\t.map((line, index) => `${first + index}${LINE_NUMBER_SEPARATOR}${line}`)\n\t\t.join(\"\\n\");\n}\n"]}
@@ -21,7 +21,7 @@ import type { ResourcesDiscoverEvent, ResourcesDiscoverResult, SessionBeforeComp
21
21
  import type { ToolCallEvent, ToolResultEvent } from "./tool-events.ts";
22
22
  import type { ToolDefinition, ToolInfo, ToolRendererResolver } from "./tool-types.ts";
23
23
  import type { WorkflowActivityChangedEvent, WorkflowActivityPublisher, WorkflowHeartbeatEvent, WorkflowLifecycleEvent, WorkflowStageCompletedEvent } from "./workflow-events.js";
24
- import type { SessionWorkflows, WorkflowRunControlRegistration } from "./workflow-run-control.js";
24
+ import type { WorkflowRunControl, WorkflowRunControlRegistration } from "./workflow-run-control.js";
25
25
  /** Handler function type for events */
26
26
  export type ExtensionHandler<E, R = undefined> = (event: E, ctx: ExtensionContext) => Promise<R | void> | R | void;
27
27
  /**
@@ -34,7 +34,7 @@ export interface ExtensionAPI {
34
34
  lifecycleScope?: object;
35
35
  registerWorkflowActivityPublisher(): WorkflowActivityPublisher;
36
36
  /** Register the implementation behind `session.workflows`; disposed with this extension generation. */
37
- registerWorkflowRunControl(control: SessionWorkflows): WorkflowRunControlRegistration;
37
+ registerWorkflowRunControl(control: WorkflowRunControl): WorkflowRunControlRegistration;
38
38
  on(event: "cache_warming_decision", handler: ExtensionHandler<CacheWarmingDecisionEvent, CacheWarmingDecisionEventResult>): () => void;
39
39
  on(event: "workflow_lifecycle", handler: ExtensionHandler<WorkflowLifecycleEvent>): () => void;
40
40
  on(event: "workflow_activity_changed", handler: ExtensionHandler<WorkflowActivityChangedEvent>): () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"api-types.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/api-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-types.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/api-types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"api-types.js","sourceRoot":"","sources":["../../../src/core/extensions/api-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Provider } from \"@bastani/pi-ai\";\nimport type { Api, ImageContent, Model, TextContent } from \"@bastani/pi-ai/compat\";\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { KeyId } from \"@earendil-works/pi-tui\";\nimport type { TSchema } from \"typebox\";\nimport type { CacheWarmingDecisionEvent, CacheWarmingDecisionEventResult } from \"../cache-warmer.ts\";\nimport type { EventBus } from \"../event-bus.js\";\nimport type { ExecOptions, ExecResult } from \"../exec.ts\";\nimport type { McpServerConfig, McpServerContribution } from \"../mcp-servers.ts\";\nimport type { CustomMessage } from \"../messages.ts\";\nimport type { ResolvedResource } from \"../package-manager.ts\";\nimport type { DefaultResourceLoaderInheritanceSnapshot } from \"../resource-loader.ts\";\nimport type { SlashCommandInfo } from \"../slash-commands.js\";\nimport type {\n\tAfterProviderResponseEvent,\n\tAgentBeforeSettleEvent,\n\tAgentEndEvent,\n\tAgentSettledEvent,\n\tAgentStartEvent,\n\tBeforeAgentStartEvent,\n\tBeforeProviderHeadersEvent,\n\tBeforeProviderRequestEvent,\n\tContextEvent,\n\tContextWithSystemEvent,\n\tInputEvent,\n\tInputEventResult,\n\tMessageEndEvent,\n\tMessageStartEvent,\n\tMessageUpdateEvent,\n\tModelSelectEvent,\n\tProjectTrustHandler,\n\tProviderStreamEvent,\n\tThinkingLevelSelectEvent,\n\tToolExecutionEndEvent,\n\tToolExecutionStartEvent,\n\tToolExecutionUpdateEvent,\n\tTurnEndEvent,\n\tTurnStartEvent,\n\tUIPromptEndEvent,\n\tUIPromptStartEvent,\n\tUserBashEvent,\n} from \"./agent-events.ts\";\nimport type { RegisteredCommand } from \"./command-types.ts\";\nimport type { ExtensionContext } from \"./context-types.ts\";\nimport type {\n\tAgentBeforeSettleEventResult,\n\tBeforeAgentStartEventResult,\n\tBeforeProviderRequestEventResult,\n\tContextEventResult,\n\tMessageEndEventResult,\n\tSessionBeforeCompactResult,\n\tSessionBeforeForkResult,\n\tSessionBeforeSwitchResult,\n\tSessionBeforeTreeResult,\n\tToolCallEventResult,\n\tToolResultEventResult,\n\tTurnEndEventResult,\n\tUserBashEventResult,\n} from \"./event-results.ts\";\nimport type {\n\tEntryRenderer,\n\tMarkdownTransformer,\n\tMessageRenderer,\n\tSendMessageOptions,\n\tSendMessagesOptions,\n} from \"./message-types.ts\";\nimport type { ProviderAliasConfig, ProviderConfig } from \"./provider-types.ts\";\nimport type {\n\tResourcesDiscoverEvent,\n\tResourcesDiscoverResult,\n\tSessionBeforeCompactEvent,\n\tSessionBeforeForkEvent,\n\tSessionBeforeSwitchEvent,\n\tSessionBeforeTreeEvent,\n\tSessionCompactEvent,\n\tSessionCompactFailedEvent,\n\tSessionInfoChangedEvent,\n\tSessionShutdownEvent,\n\tSessionStartEvent,\n\tSessionTreeEvent,\n} from \"./session-events.ts\";\nimport type { ToolCallEvent, ToolResultEvent } from \"./tool-events.ts\";\nimport type { ToolDefinition, ToolInfo, ToolRendererResolver } from \"./tool-types.ts\";\nimport type {\n\tWorkflowActivityChangedEvent,\n\tWorkflowActivityPublisher,\n\tWorkflowHeartbeatEvent,\n\tWorkflowLifecycleEvent,\n\tWorkflowStageCompletedEvent,\n} from \"./workflow-events.js\";\nimport type { SessionWorkflows, WorkflowRunControlRegistration } from \"./workflow-run-control.js\";\n\n/** Handler function type for events */\n// biome-ignore lint/suspicious/noConfusingVoidType: void allows bare return statements\nexport type ExtensionHandler<E, R = undefined> = (event: E, ctx: ExtensionContext) => Promise<R | void> | R | void;\n\n/**\n * ExtensionAPI passed to extension factory functions.\n */\nexport interface ExtensionAPI {\n\t/** Snapshot of effective settings. Available after the session runtime is bound. */\n\tgetSettings(): import(\"../settings-types.ts\").Settings;\n\t/** @internal Owning runtime identity, retained across generation replacement. */\n\tlifecycleScope?: object;\n\tregisterWorkflowActivityPublisher(): WorkflowActivityPublisher;\n\t/** Register the implementation behind `session.workflows`; disposed with this extension generation. */\n\tregisterWorkflowRunControl(control: SessionWorkflows): WorkflowRunControlRegistration;\n\ton(\n\t\tevent: \"cache_warming_decision\",\n\t\thandler: ExtensionHandler<CacheWarmingDecisionEvent, CacheWarmingDecisionEventResult>,\n\t): () => void;\n\ton(event: \"workflow_lifecycle\", handler: ExtensionHandler<WorkflowLifecycleEvent>): () => void;\n\ton(event: \"workflow_activity_changed\", handler: ExtensionHandler<WorkflowActivityChangedEvent>): () => void;\n\ton(event: \"workflow_stage_completed\", handler: ExtensionHandler<WorkflowStageCompletedEvent>): () => void;\n\ton(event: \"workflow_heartbeat\", handler: ExtensionHandler<WorkflowHeartbeatEvent>): () => void;\n\t// =========================================================================\n\t// Event Subscription\n\t// =========================================================================\n\n\ton(\n\t\tevent: \"resources_discover\",\n\t\thandler: ExtensionHandler<ResourcesDiscoverEvent, ResourcesDiscoverResult>,\n\t): () => void;\n\ton(event: \"session_info_changed\", handler: ExtensionHandler<SessionInfoChangedEvent>): () => void;\n\ton(event: \"session_start\", handler: ExtensionHandler<SessionStartEvent>): () => void;\n\ton(\n\t\tevent: \"session_before_switch\",\n\t\thandler: ExtensionHandler<SessionBeforeSwitchEvent, SessionBeforeSwitchResult>,\n\t): () => void;\n\ton(\n\t\tevent: \"session_before_fork\",\n\t\thandler: ExtensionHandler<SessionBeforeForkEvent, SessionBeforeForkResult>,\n\t): () => void;\n\ton(\n\t\tevent: \"session_before_compact\",\n\t\thandler: ExtensionHandler<SessionBeforeCompactEvent, SessionBeforeCompactResult>,\n\t): () => void;\n\ton(event: \"session_compact\", handler: ExtensionHandler<SessionCompactEvent>): () => void;\n\ton(event: \"session_compact_failed\", handler: ExtensionHandler<SessionCompactFailedEvent>): () => void;\n\ton(event: \"session_shutdown\", handler: ExtensionHandler<SessionShutdownEvent>): () => void;\n\ton(\n\t\tevent: \"session_before_tree\",\n\t\thandler: ExtensionHandler<SessionBeforeTreeEvent, SessionBeforeTreeResult>,\n\t): () => void;\n\ton(event: \"session_tree\", handler: ExtensionHandler<SessionTreeEvent>): () => void;\n\ton(event: \"context\", handler: ExtensionHandler<ContextEvent, ContextEventResult>): () => void;\n\ton(event: \"context_with_system\", handler: ExtensionHandler<ContextWithSystemEvent, ContextEventResult>): () => void;\n\ton(\n\t\tevent: \"before_provider_request\",\n\t\thandler: ExtensionHandler<BeforeProviderRequestEvent, BeforeProviderRequestEventResult>,\n\t): () => void;\n\ton(event: \"before_provider_headers\", handler: ExtensionHandler<BeforeProviderHeadersEvent>): () => void;\n\ton(event: \"after_provider_response\", handler: ExtensionHandler<AfterProviderResponseEvent>): () => void;\n\ton(event: \"provider_stream_event\", handler: ExtensionHandler<ProviderStreamEvent>): () => void;\n\ton(\n\t\tevent: \"before_agent_start\",\n\t\thandler: ExtensionHandler<BeforeAgentStartEvent, BeforeAgentStartEventResult>,\n\t): () => void;\n\ton(event: \"agent_start\", handler: ExtensionHandler<AgentStartEvent>): () => void;\n\ton(event: \"agent_end\", handler: ExtensionHandler<AgentEndEvent>): () => void;\n\ton(\n\t\tevent: \"agent_before_settle\",\n\t\thandler: ExtensionHandler<AgentBeforeSettleEvent, AgentBeforeSettleEventResult>,\n\t): () => void;\n\ton(event: \"agent_settled\", handler: ExtensionHandler<AgentSettledEvent>): () => void;\n\ton(event: \"ui_prompt_start\", handler: ExtensionHandler<UIPromptStartEvent>): () => void;\n\ton(event: \"ui_prompt_end\", handler: ExtensionHandler<UIPromptEndEvent>): () => void;\n\ton(event: \"turn_start\", handler: ExtensionHandler<TurnStartEvent>): () => void;\n\ton(event: \"turn_end\", handler: ExtensionHandler<TurnEndEvent, TurnEndEventResult>): () => void;\n\ton(event: \"message_start\", handler: ExtensionHandler<MessageStartEvent>): () => void;\n\ton(event: \"message_update\", handler: ExtensionHandler<MessageUpdateEvent>): () => void;\n\ton(event: \"message_end\", handler: ExtensionHandler<MessageEndEvent, MessageEndEventResult>): () => void;\n\ton(event: \"tool_execution_start\", handler: ExtensionHandler<ToolExecutionStartEvent>): () => void;\n\ton(event: \"tool_execution_update\", handler: ExtensionHandler<ToolExecutionUpdateEvent>): () => void;\n\ton(event: \"tool_execution_end\", handler: ExtensionHandler<ToolExecutionEndEvent>): () => void;\n\ton(event: \"model_select\", handler: ExtensionHandler<ModelSelectEvent>): () => void;\n\ton(event: \"thinking_level_select\", handler: ExtensionHandler<ThinkingLevelSelectEvent>): () => void;\n\ton(event: \"tool_call\", handler: ExtensionHandler<ToolCallEvent, ToolCallEventResult>): () => void;\n\ton(event: \"tool_result\", handler: ExtensionHandler<ToolResultEvent, ToolResultEventResult>): () => void;\n\ton(event: \"user_bash\", handler: ExtensionHandler<UserBashEvent, UserBashEventResult>): () => void;\n\ton(event: \"project_trust\", handler: ProjectTrustHandler): () => void;\n\ton(event: \"input\", handler: ExtensionHandler<InputEvent, InputEventResult>): () => void;\n\n\t// =========================================================================\n\t// Tool Registration\n\t// =========================================================================\n\n\t/** Register a tool that the LLM can call. */\n\tregisterTool<TParams extends TSchema = TSchema, TDetails = unknown, TState = unknown>(\n\t\ttool: ToolDefinition<TParams, TDetails, TState>,\n\t): void;\n\n\t// =========================================================================\n\t// Command, Shortcut, Flag Registration\n\t// =========================================================================\n\n\t/** Register a custom command. */\n\tregisterCommand(name: string, options: Omit<RegisteredCommand, \"name\" | \"sourceInfo\">): void;\n\n\t/** Register a keyboard shortcut. */\n\tregisterShortcut(\n\t\tshortcut: KeyId,\n\t\toptions: {\n\t\t\tdescription?: string;\n\t\t\tkeybinding?: import(\"../keybindings.ts\").Keybinding;\n\t\t\tpreferEditor?: boolean;\n\t\t\thandler: (ctx: ExtensionContext) => Promise<void> | void;\n\t\t},\n\t): void;\n\n\t/** Register a CLI flag. */\n\tregisterFlag(\n\t\tname: string,\n\t\toptions:\n\t\t\t| { description?: string; type: \"boolean\"; default?: boolean }\n\t\t\t| { description?: string; type: \"string\"; default?: string },\n\t): void;\n\n\t/** Get the value of a registered CLI flag. */\n\tgetFlag(name: string): boolean | string | undefined;\n\n\tgetWorkflowHostModules(): Promise<\n\t\tRecord<\"@bastani/atomic\" | \"@bastani/pi-ai\" | \"@bastani/pi-ai/providers/all\", object>\n\t>;\n\n\t/** Return package-provided workflow files discovered for this session. */\n\tgetWorkflowResources(): ResolvedResource[];\n\n\t/**\n\t * Re-read package/settings workflow resources and return the updated snapshot when supported by the host.\n\t * Does not reload extensions, skills, prompts, themes, or context files.\n\t */\n\trefreshWorkflowResources?: () => Promise<ResolvedResource[]>;\n\n\t/**\n\t * Contribute an MCP server to this session, using the same schema as an `mcpServers` entry in `mcp.json`.\n\t * Call it from the factory or from `session_start`; registering a name again replaces the earlier entry.\n\t * Contributed servers are the lowest-precedence MCP layer: a same-named server in a user or project MCP\n\t * config replaces this one, and `{ \"disabled\": true }` there turns it off.\n\t */\n\tregisterMcpServer(name: string, config: McpServerConfig): void;\n\n\t/** Package-manifest and registered MCP servers for this session, one entry per server name. */\n\tgetMcpServerContributions?: () => McpServerContribution[];\n\n\t/** Subscribe to `registerMcpServer()` changes after startup; returns an unsubscribe function. */\n\tonMcpServerContributionsChanged?: (listener: () => void) => () => void;\n\n\t/**\n\t * Return the resource-loader options that child Atomic sessions should inherit without sharing this loader instance.\n\t */\n\tgetResourceLoaderInheritanceSnapshot?: () => DefaultResourceLoaderInheritanceSnapshot;\n\t/** Internal owner-bound defaults and capability ceiling for builtin child adapters. */\n\tgetChildSessionOptions?: import(\"../child-session-options.ts\").ChildSessionOptionsResolver;\n\n\t// =========================================================================\n\t// Message Rendering\n\t// =========================================================================\n\n\t/** Register a custom renderer for CustomMessageEntry. */\n\tregisterMessageRenderer<T = unknown>(customType: string, renderer: MessageRenderer<T>): void;\n\n\t/** Register a transformer for user and assistant Markdown before Atomic renders it in the interactive transcript. */\n\tregisterMarkdownTransformer(transformer: MarkdownTransformer): void;\n\t/** Register a custom renderer for a persistent CustomEntry. */\n\tregisterEntryRenderer<T = unknown>(customType: string, renderer: EntryRenderer<T>): void;\n\n\t/** Choose how tool calls are drawn. Resolvers run in extension load order. */\n\tregisterToolRenderer(resolver: ToolRendererResolver): void;\n\n\t// =========================================================================\n\t// Actions\n\t// =========================================================================\n\n\t/** Send a custom message to the session. */\n\tsendMessage<T = unknown>(\n\t\tmessage: Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">,\n\t\toptions?: SendMessageOptions,\n\t): void | Promise<void>;\n\n\t/** Atomically admit custom messages in array order without waiting for the resulting turn. */\n\tsendMessages<T = unknown>(\n\t\tmessages: Array<Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">>,\n\t\toptions?: SendMessagesOptions,\n\t): void | Promise<void>;\n\n\t/**\n\t * Send a user message to the agent. Always triggers a turn.\n\t * When the agent is streaming, use deliverAs to specify how to queue the message.\n\t *\n\t * By default the text is sent literally. Set expandPromptTemplates to true to\n\t * dispatch a registered extension or skill command (or expand a prompt\n\t * template) — with that option the message may DISPATCH a command rather\n\t * than being sent. Default: false.\n\t */\n\tsendUserMessage(\n\t\tcontent: string | (TextContent | ImageContent)[],\n\t\toptions?: { deliverAs?: \"steer\" | \"followUp\"; expandPromptTemplates?: boolean },\n\t): void;\n\n\t/** Append a custom entry to the session for state persistence (not sent to LLM). */\n\tappendEntry<T = unknown>(customType: string, data?: T): void;\n\n\t// =========================================================================\n\t// Session Metadata\n\t// =========================================================================\n\n\t/** Set the session display name (shown in session selector). */\n\tsetSessionName(name: string): void;\n\n\t/** Get the current session name, if set. */\n\tgetSessionName(): string | undefined;\n\n\t/** Set or clear a label on an entry. Labels are user-defined markers for bookmarking/navigation. */\n\tsetLabel(entryId: string, label: string | undefined): void;\n\n\t/** Execute a shell command. */\n\texec(command: string, args: string[], options?: ExecOptions): Promise<ExecResult>;\n\n\t/** Get the list of currently active tool names. */\n\tgetActiveTools(): string[];\n\n\t/** Get all configured tools with parameter schema and source metadata. */\n\tgetAllTools(): ToolInfo[];\n\n\t/** Set the active tools by name. */\n\tsetActiveTools(toolNames: string[]): void;\n\n\t/** Get available slash commands in the current session. */\n\tgetCommands(): SlashCommandInfo[];\n\n\t// =========================================================================\n\t// Model and Thinking Level\n\t// =========================================================================\n\n\t/**\n\t * Set the model for the current session without changing the configured default for new sessions.\n\t * Returns false if authentication is not configured for the model's provider.\n\t */\n\tsetModel(model: Model<Api>): Promise<boolean>;\n\n\t/** Get current thinking level. */\n\tgetThinkingLevel(): ThinkingLevel;\n\n\t/**\n\t * Set the thinking level (clamped to model capabilities) for the current session without changing the configured default\n\t * for new sessions.\n\t */\n\tsetThinkingLevel(level: ThinkingLevel): void;\n\n\t// =========================================================================\n\t// Provider Registration\n\t// =========================================================================\n\n\t/**\n\t * Register or override a model provider.\n\t *\n\t * If `models` is provided: replaces all existing models for this provider.\n\t * If only `baseUrl` is provided: overrides the URL for existing models.\n\t * If `oauth` is provided: registers OAuth provider for /login support.\n\t * If `streamSimple` is provided: registers a custom API stream handler.\n\t *\n\t * During initial extension load this call is queued and applied once the\n\t * runner has bound its context. After that it takes effect immediately, so\n\t * it is safe to call from command handlers or event callbacks without\n\t * requiring a `/reload`.\n\t *\n\t * @example\n\t * // Register a new provider with custom models\n\t * pi.registerProvider(\"my-proxy\", {\n\t * baseUrl: \"https://proxy.example.com\",\n\t * apiKey: \"$PROXY_API_KEY\",\n\t * api: \"anthropic-messages\",\n\t * models: [\n\t * {\n\t * id: \"claude-sonnet-4-20250514\",\n\t * name: \"Claude 4 Sonnet (proxy)\",\n\t * reasoning: false,\n\t * input: [\"text\", \"image\"],\n\t * cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\n\t * contextWindow: 200000,\n\t * maxTokens: 16384\n\t * }\n\t * ]\n\t * });\n\t *\n\t * @example\n\t * // Override baseUrl for an existing provider\n\t * pi.registerProvider(\"anthropic\", {\n\t * baseUrl: \"https://proxy.example.com\"\n\t * });\n\t *\n\t * @example\n\t * // Register provider with OAuth support\n\t * pi.registerProvider(\"corporate-ai\", {\n\t * baseUrl: \"https://ai.corp.com\",\n\t * api: \"openai-responses\",\n\t * models: [...],\n\t * oauth: {\n\t * name: \"Corporate AI (SSO)\",\n\t * async login(callbacks, signal) { ... },\n\t * async refreshToken(credentials, signal) { ... },\n\t * getApiKey(credentials) { return credentials.access; }\n\t * }\n\t * });\n\t */\n\tregisterProvider(name: string, config: ProviderConfig): void;\n\tregisterProvider(provider: Provider): void;\n\tregisterProviderAlias(config: ProviderAliasConfig): void;\n\n\t/**\n\t * Unregister a previously registered provider.\n\t *\n\t * Removes all models belonging to the named provider and restores any\n\t * built-in models that were overridden by it. Has no effect if the provider\n\t * is not currently registered.\n\t *\n\t * Like `registerProvider`, this takes effect immediately when called after\n\t * the initial load phase.\n\t *\n\t * @example\n\t * pi.unregisterProvider(\"my-proxy\");\n\t */\n\tunregisterProvider(name: string): void;\n\n\t/** Shared event bus for extension communication. */\n\tevents: EventBus;\n}\n"]}
1
+ {"version":3,"file":"api-types.js","sourceRoot":"","sources":["../../../src/core/extensions/api-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Provider } from \"@bastani/pi-ai\";\nimport type { Api, ImageContent, Model, TextContent } from \"@bastani/pi-ai/compat\";\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { KeyId } from \"@earendil-works/pi-tui\";\nimport type { TSchema } from \"typebox\";\nimport type { CacheWarmingDecisionEvent, CacheWarmingDecisionEventResult } from \"../cache-warmer.ts\";\nimport type { EventBus } from \"../event-bus.js\";\nimport type { ExecOptions, ExecResult } from \"../exec.ts\";\nimport type { McpServerConfig, McpServerContribution } from \"../mcp-servers.ts\";\nimport type { CustomMessage } from \"../messages.ts\";\nimport type { ResolvedResource } from \"../package-manager.ts\";\nimport type { DefaultResourceLoaderInheritanceSnapshot } from \"../resource-loader.ts\";\nimport type { SlashCommandInfo } from \"../slash-commands.js\";\nimport type {\n\tAfterProviderResponseEvent,\n\tAgentBeforeSettleEvent,\n\tAgentEndEvent,\n\tAgentSettledEvent,\n\tAgentStartEvent,\n\tBeforeAgentStartEvent,\n\tBeforeProviderHeadersEvent,\n\tBeforeProviderRequestEvent,\n\tContextEvent,\n\tContextWithSystemEvent,\n\tInputEvent,\n\tInputEventResult,\n\tMessageEndEvent,\n\tMessageStartEvent,\n\tMessageUpdateEvent,\n\tModelSelectEvent,\n\tProjectTrustHandler,\n\tProviderStreamEvent,\n\tThinkingLevelSelectEvent,\n\tToolExecutionEndEvent,\n\tToolExecutionStartEvent,\n\tToolExecutionUpdateEvent,\n\tTurnEndEvent,\n\tTurnStartEvent,\n\tUIPromptEndEvent,\n\tUIPromptStartEvent,\n\tUserBashEvent,\n} from \"./agent-events.ts\";\nimport type { RegisteredCommand } from \"./command-types.ts\";\nimport type { ExtensionContext } from \"./context-types.ts\";\nimport type {\n\tAgentBeforeSettleEventResult,\n\tBeforeAgentStartEventResult,\n\tBeforeProviderRequestEventResult,\n\tContextEventResult,\n\tMessageEndEventResult,\n\tSessionBeforeCompactResult,\n\tSessionBeforeForkResult,\n\tSessionBeforeSwitchResult,\n\tSessionBeforeTreeResult,\n\tToolCallEventResult,\n\tToolResultEventResult,\n\tTurnEndEventResult,\n\tUserBashEventResult,\n} from \"./event-results.ts\";\nimport type {\n\tEntryRenderer,\n\tMarkdownTransformer,\n\tMessageRenderer,\n\tSendMessageOptions,\n\tSendMessagesOptions,\n} from \"./message-types.ts\";\nimport type { ProviderAliasConfig, ProviderConfig } from \"./provider-types.ts\";\nimport type {\n\tResourcesDiscoverEvent,\n\tResourcesDiscoverResult,\n\tSessionBeforeCompactEvent,\n\tSessionBeforeForkEvent,\n\tSessionBeforeSwitchEvent,\n\tSessionBeforeTreeEvent,\n\tSessionCompactEvent,\n\tSessionCompactFailedEvent,\n\tSessionInfoChangedEvent,\n\tSessionShutdownEvent,\n\tSessionStartEvent,\n\tSessionTreeEvent,\n} from \"./session-events.ts\";\nimport type { ToolCallEvent, ToolResultEvent } from \"./tool-events.ts\";\nimport type { ToolDefinition, ToolInfo, ToolRendererResolver } from \"./tool-types.ts\";\nimport type {\n\tWorkflowActivityChangedEvent,\n\tWorkflowActivityPublisher,\n\tWorkflowHeartbeatEvent,\n\tWorkflowLifecycleEvent,\n\tWorkflowStageCompletedEvent,\n} from \"./workflow-events.js\";\nimport type { WorkflowRunControl, WorkflowRunControlRegistration } from \"./workflow-run-control.js\";\n\n/** Handler function type for events */\n// biome-ignore lint/suspicious/noConfusingVoidType: void allows bare return statements\nexport type ExtensionHandler<E, R = undefined> = (event: E, ctx: ExtensionContext) => Promise<R | void> | R | void;\n\n/**\n * ExtensionAPI passed to extension factory functions.\n */\nexport interface ExtensionAPI {\n\t/** Snapshot of effective settings. Available after the session runtime is bound. */\n\tgetSettings(): import(\"../settings-types.ts\").Settings;\n\t/** @internal Owning runtime identity, retained across generation replacement. */\n\tlifecycleScope?: object;\n\tregisterWorkflowActivityPublisher(): WorkflowActivityPublisher;\n\t/** Register the implementation behind `session.workflows`; disposed with this extension generation. */\n\tregisterWorkflowRunControl(control: WorkflowRunControl): WorkflowRunControlRegistration;\n\ton(\n\t\tevent: \"cache_warming_decision\",\n\t\thandler: ExtensionHandler<CacheWarmingDecisionEvent, CacheWarmingDecisionEventResult>,\n\t): () => void;\n\ton(event: \"workflow_lifecycle\", handler: ExtensionHandler<WorkflowLifecycleEvent>): () => void;\n\ton(event: \"workflow_activity_changed\", handler: ExtensionHandler<WorkflowActivityChangedEvent>): () => void;\n\ton(event: \"workflow_stage_completed\", handler: ExtensionHandler<WorkflowStageCompletedEvent>): () => void;\n\ton(event: \"workflow_heartbeat\", handler: ExtensionHandler<WorkflowHeartbeatEvent>): () => void;\n\t// =========================================================================\n\t// Event Subscription\n\t// =========================================================================\n\n\ton(\n\t\tevent: \"resources_discover\",\n\t\thandler: ExtensionHandler<ResourcesDiscoverEvent, ResourcesDiscoverResult>,\n\t): () => void;\n\ton(event: \"session_info_changed\", handler: ExtensionHandler<SessionInfoChangedEvent>): () => void;\n\ton(event: \"session_start\", handler: ExtensionHandler<SessionStartEvent>): () => void;\n\ton(\n\t\tevent: \"session_before_switch\",\n\t\thandler: ExtensionHandler<SessionBeforeSwitchEvent, SessionBeforeSwitchResult>,\n\t): () => void;\n\ton(\n\t\tevent: \"session_before_fork\",\n\t\thandler: ExtensionHandler<SessionBeforeForkEvent, SessionBeforeForkResult>,\n\t): () => void;\n\ton(\n\t\tevent: \"session_before_compact\",\n\t\thandler: ExtensionHandler<SessionBeforeCompactEvent, SessionBeforeCompactResult>,\n\t): () => void;\n\ton(event: \"session_compact\", handler: ExtensionHandler<SessionCompactEvent>): () => void;\n\ton(event: \"session_compact_failed\", handler: ExtensionHandler<SessionCompactFailedEvent>): () => void;\n\ton(event: \"session_shutdown\", handler: ExtensionHandler<SessionShutdownEvent>): () => void;\n\ton(\n\t\tevent: \"session_before_tree\",\n\t\thandler: ExtensionHandler<SessionBeforeTreeEvent, SessionBeforeTreeResult>,\n\t): () => void;\n\ton(event: \"session_tree\", handler: ExtensionHandler<SessionTreeEvent>): () => void;\n\ton(event: \"context\", handler: ExtensionHandler<ContextEvent, ContextEventResult>): () => void;\n\ton(event: \"context_with_system\", handler: ExtensionHandler<ContextWithSystemEvent, ContextEventResult>): () => void;\n\ton(\n\t\tevent: \"before_provider_request\",\n\t\thandler: ExtensionHandler<BeforeProviderRequestEvent, BeforeProviderRequestEventResult>,\n\t): () => void;\n\ton(event: \"before_provider_headers\", handler: ExtensionHandler<BeforeProviderHeadersEvent>): () => void;\n\ton(event: \"after_provider_response\", handler: ExtensionHandler<AfterProviderResponseEvent>): () => void;\n\ton(event: \"provider_stream_event\", handler: ExtensionHandler<ProviderStreamEvent>): () => void;\n\ton(\n\t\tevent: \"before_agent_start\",\n\t\thandler: ExtensionHandler<BeforeAgentStartEvent, BeforeAgentStartEventResult>,\n\t): () => void;\n\ton(event: \"agent_start\", handler: ExtensionHandler<AgentStartEvent>): () => void;\n\ton(event: \"agent_end\", handler: ExtensionHandler<AgentEndEvent>): () => void;\n\ton(\n\t\tevent: \"agent_before_settle\",\n\t\thandler: ExtensionHandler<AgentBeforeSettleEvent, AgentBeforeSettleEventResult>,\n\t): () => void;\n\ton(event: \"agent_settled\", handler: ExtensionHandler<AgentSettledEvent>): () => void;\n\ton(event: \"ui_prompt_start\", handler: ExtensionHandler<UIPromptStartEvent>): () => void;\n\ton(event: \"ui_prompt_end\", handler: ExtensionHandler<UIPromptEndEvent>): () => void;\n\ton(event: \"turn_start\", handler: ExtensionHandler<TurnStartEvent>): () => void;\n\ton(event: \"turn_end\", handler: ExtensionHandler<TurnEndEvent, TurnEndEventResult>): () => void;\n\ton(event: \"message_start\", handler: ExtensionHandler<MessageStartEvent>): () => void;\n\ton(event: \"message_update\", handler: ExtensionHandler<MessageUpdateEvent>): () => void;\n\ton(event: \"message_end\", handler: ExtensionHandler<MessageEndEvent, MessageEndEventResult>): () => void;\n\ton(event: \"tool_execution_start\", handler: ExtensionHandler<ToolExecutionStartEvent>): () => void;\n\ton(event: \"tool_execution_update\", handler: ExtensionHandler<ToolExecutionUpdateEvent>): () => void;\n\ton(event: \"tool_execution_end\", handler: ExtensionHandler<ToolExecutionEndEvent>): () => void;\n\ton(event: \"model_select\", handler: ExtensionHandler<ModelSelectEvent>): () => void;\n\ton(event: \"thinking_level_select\", handler: ExtensionHandler<ThinkingLevelSelectEvent>): () => void;\n\ton(event: \"tool_call\", handler: ExtensionHandler<ToolCallEvent, ToolCallEventResult>): () => void;\n\ton(event: \"tool_result\", handler: ExtensionHandler<ToolResultEvent, ToolResultEventResult>): () => void;\n\ton(event: \"user_bash\", handler: ExtensionHandler<UserBashEvent, UserBashEventResult>): () => void;\n\ton(event: \"project_trust\", handler: ProjectTrustHandler): () => void;\n\ton(event: \"input\", handler: ExtensionHandler<InputEvent, InputEventResult>): () => void;\n\n\t// =========================================================================\n\t// Tool Registration\n\t// =========================================================================\n\n\t/** Register a tool that the LLM can call. */\n\tregisterTool<TParams extends TSchema = TSchema, TDetails = unknown, TState = unknown>(\n\t\ttool: ToolDefinition<TParams, TDetails, TState>,\n\t): void;\n\n\t// =========================================================================\n\t// Command, Shortcut, Flag Registration\n\t// =========================================================================\n\n\t/** Register a custom command. */\n\tregisterCommand(name: string, options: Omit<RegisteredCommand, \"name\" | \"sourceInfo\">): void;\n\n\t/** Register a keyboard shortcut. */\n\tregisterShortcut(\n\t\tshortcut: KeyId,\n\t\toptions: {\n\t\t\tdescription?: string;\n\t\t\tkeybinding?: import(\"../keybindings.ts\").Keybinding;\n\t\t\tpreferEditor?: boolean;\n\t\t\thandler: (ctx: ExtensionContext) => Promise<void> | void;\n\t\t},\n\t): void;\n\n\t/** Register a CLI flag. */\n\tregisterFlag(\n\t\tname: string,\n\t\toptions:\n\t\t\t| { description?: string; type: \"boolean\"; default?: boolean }\n\t\t\t| { description?: string; type: \"string\"; default?: string },\n\t): void;\n\n\t/** Get the value of a registered CLI flag. */\n\tgetFlag(name: string): boolean | string | undefined;\n\n\tgetWorkflowHostModules(): Promise<\n\t\tRecord<\"@bastani/atomic\" | \"@bastani/pi-ai\" | \"@bastani/pi-ai/providers/all\", object>\n\t>;\n\n\t/** Return package-provided workflow files discovered for this session. */\n\tgetWorkflowResources(): ResolvedResource[];\n\n\t/**\n\t * Re-read package/settings workflow resources and return the updated snapshot when supported by the host.\n\t * Does not reload extensions, skills, prompts, themes, or context files.\n\t */\n\trefreshWorkflowResources?: () => Promise<ResolvedResource[]>;\n\n\t/**\n\t * Contribute an MCP server to this session, using the same schema as an `mcpServers` entry in `mcp.json`.\n\t * Call it from the factory or from `session_start`; registering a name again replaces the earlier entry.\n\t * Contributed servers are the lowest-precedence MCP layer: a same-named server in a user or project MCP\n\t * config replaces this one, and `{ \"disabled\": true }` there turns it off.\n\t */\n\tregisterMcpServer(name: string, config: McpServerConfig): void;\n\n\t/** Package-manifest and registered MCP servers for this session, one entry per server name. */\n\tgetMcpServerContributions?: () => McpServerContribution[];\n\n\t/** Subscribe to `registerMcpServer()` changes after startup; returns an unsubscribe function. */\n\tonMcpServerContributionsChanged?: (listener: () => void) => () => void;\n\n\t/**\n\t * Return the resource-loader options that child Atomic sessions should inherit without sharing this loader instance.\n\t */\n\tgetResourceLoaderInheritanceSnapshot?: () => DefaultResourceLoaderInheritanceSnapshot;\n\t/** Internal owner-bound defaults and capability ceiling for builtin child adapters. */\n\tgetChildSessionOptions?: import(\"../child-session-options.ts\").ChildSessionOptionsResolver;\n\n\t// =========================================================================\n\t// Message Rendering\n\t// =========================================================================\n\n\t/** Register a custom renderer for CustomMessageEntry. */\n\tregisterMessageRenderer<T = unknown>(customType: string, renderer: MessageRenderer<T>): void;\n\n\t/** Register a transformer for user and assistant Markdown before Atomic renders it in the interactive transcript. */\n\tregisterMarkdownTransformer(transformer: MarkdownTransformer): void;\n\t/** Register a custom renderer for a persistent CustomEntry. */\n\tregisterEntryRenderer<T = unknown>(customType: string, renderer: EntryRenderer<T>): void;\n\n\t/** Choose how tool calls are drawn. Resolvers run in extension load order. */\n\tregisterToolRenderer(resolver: ToolRendererResolver): void;\n\n\t// =========================================================================\n\t// Actions\n\t// =========================================================================\n\n\t/** Send a custom message to the session. */\n\tsendMessage<T = unknown>(\n\t\tmessage: Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">,\n\t\toptions?: SendMessageOptions,\n\t): void | Promise<void>;\n\n\t/** Atomically admit custom messages in array order without waiting for the resulting turn. */\n\tsendMessages<T = unknown>(\n\t\tmessages: Array<Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">>,\n\t\toptions?: SendMessagesOptions,\n\t): void | Promise<void>;\n\n\t/**\n\t * Send a user message to the agent. Always triggers a turn.\n\t * When the agent is streaming, use deliverAs to specify how to queue the message.\n\t *\n\t * By default the text is sent literally. Set expandPromptTemplates to true to\n\t * dispatch a registered extension or skill command (or expand a prompt\n\t * template) — with that option the message may DISPATCH a command rather\n\t * than being sent. Default: false.\n\t */\n\tsendUserMessage(\n\t\tcontent: string | (TextContent | ImageContent)[],\n\t\toptions?: { deliverAs?: \"steer\" | \"followUp\"; expandPromptTemplates?: boolean },\n\t): void;\n\n\t/** Append a custom entry to the session for state persistence (not sent to LLM). */\n\tappendEntry<T = unknown>(customType: string, data?: T): void;\n\n\t// =========================================================================\n\t// Session Metadata\n\t// =========================================================================\n\n\t/** Set the session display name (shown in session selector). */\n\tsetSessionName(name: string): void;\n\n\t/** Get the current session name, if set. */\n\tgetSessionName(): string | undefined;\n\n\t/** Set or clear a label on an entry. Labels are user-defined markers for bookmarking/navigation. */\n\tsetLabel(entryId: string, label: string | undefined): void;\n\n\t/** Execute a shell command. */\n\texec(command: string, args: string[], options?: ExecOptions): Promise<ExecResult>;\n\n\t/** Get the list of currently active tool names. */\n\tgetActiveTools(): string[];\n\n\t/** Get all configured tools with parameter schema and source metadata. */\n\tgetAllTools(): ToolInfo[];\n\n\t/** Set the active tools by name. */\n\tsetActiveTools(toolNames: string[]): void;\n\n\t/** Get available slash commands in the current session. */\n\tgetCommands(): SlashCommandInfo[];\n\n\t// =========================================================================\n\t// Model and Thinking Level\n\t// =========================================================================\n\n\t/**\n\t * Set the model for the current session without changing the configured default for new sessions.\n\t * Returns false if authentication is not configured for the model's provider.\n\t */\n\tsetModel(model: Model<Api>): Promise<boolean>;\n\n\t/** Get current thinking level. */\n\tgetThinkingLevel(): ThinkingLevel;\n\n\t/**\n\t * Set the thinking level (clamped to model capabilities) for the current session without changing the configured default\n\t * for new sessions.\n\t */\n\tsetThinkingLevel(level: ThinkingLevel): void;\n\n\t// =========================================================================\n\t// Provider Registration\n\t// =========================================================================\n\n\t/**\n\t * Register or override a model provider.\n\t *\n\t * If `models` is provided: replaces all existing models for this provider.\n\t * If only `baseUrl` is provided: overrides the URL for existing models.\n\t * If `oauth` is provided: registers OAuth provider for /login support.\n\t * If `streamSimple` is provided: registers a custom API stream handler.\n\t *\n\t * During initial extension load this call is queued and applied once the\n\t * runner has bound its context. After that it takes effect immediately, so\n\t * it is safe to call from command handlers or event callbacks without\n\t * requiring a `/reload`.\n\t *\n\t * @example\n\t * // Register a new provider with custom models\n\t * pi.registerProvider(\"my-proxy\", {\n\t * baseUrl: \"https://proxy.example.com\",\n\t * apiKey: \"$PROXY_API_KEY\",\n\t * api: \"anthropic-messages\",\n\t * models: [\n\t * {\n\t * id: \"claude-sonnet-4-20250514\",\n\t * name: \"Claude 4 Sonnet (proxy)\",\n\t * reasoning: false,\n\t * input: [\"text\", \"image\"],\n\t * cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\n\t * contextWindow: 200000,\n\t * maxTokens: 16384\n\t * }\n\t * ]\n\t * });\n\t *\n\t * @example\n\t * // Override baseUrl for an existing provider\n\t * pi.registerProvider(\"anthropic\", {\n\t * baseUrl: \"https://proxy.example.com\"\n\t * });\n\t *\n\t * @example\n\t * // Register provider with OAuth support\n\t * pi.registerProvider(\"corporate-ai\", {\n\t * baseUrl: \"https://ai.corp.com\",\n\t * api: \"openai-responses\",\n\t * models: [...],\n\t * oauth: {\n\t * name: \"Corporate AI (SSO)\",\n\t * async login(callbacks, signal) { ... },\n\t * async refreshToken(credentials, signal) { ... },\n\t * getApiKey(credentials) { return credentials.access; }\n\t * }\n\t * });\n\t */\n\tregisterProvider(name: string, config: ProviderConfig): void;\n\tregisterProvider(provider: Provider): void;\n\tregisterProviderAlias(config: ProviderAliasConfig): void;\n\n\t/**\n\t * Unregister a previously registered provider.\n\t *\n\t * Removes all models belonging to the named provider and restores any\n\t * built-in models that were overridden by it. Has no effect if the provider\n\t * is not currently registered.\n\t *\n\t * Like `registerProvider`, this takes effect immediately when called after\n\t * the initial load phase.\n\t *\n\t * @example\n\t * pi.unregisterProvider(\"my-proxy\");\n\t */\n\tunregisterProvider(name: string): void;\n\n\t/** Shared event bus for extension communication. */\n\tevents: EventBus;\n}\n"]}
@@ -186,6 +186,7 @@ export interface ExtensionContext {
186
186
  hasUI: boolean;
187
187
  /** Whether a semantic human-input adapter is available, independently of rendering. */
188
188
  hasHumanInput: boolean;
189
+ readonly isPresentationOnly?: boolean;
189
190
  /** Current working directory */
190
191
  cwd: string;
191
192
  /** Session manager (read-only) */
@@ -1 +1 @@
1
- {"version":3,"file":"context-types.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/context-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-types.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/context-types.ts"],"names":[],"mappings":"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"}