@entelligentsia/forgecli 1.0.20 → 1.0.25

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 (417) hide show
  1. package/CHANGELOG.md +131 -0
  2. package/README.md +7 -1
  3. package/dist/CHANGELOG-forge-plugin.md +118 -0
  4. package/dist/bin/config.js +4 -4
  5. package/dist/bin/config.js.map +1 -1
  6. package/dist/bin/update-cli.d.ts +1 -1
  7. package/dist/bin/update-cli.js +1 -1
  8. package/dist/bin/update-cli.js.map +1 -1
  9. package/dist/extensions/forgecli/ask-user-tool.js +1 -1
  10. package/dist/extensions/forgecli/ask-user-tool.js.map +1 -1
  11. package/dist/extensions/forgecli/{add-pipeline.js → commands/add-pipeline.js} +1 -1
  12. package/dist/extensions/forgecli/commands/add-pipeline.js.map +1 -0
  13. package/dist/extensions/forgecli/{add-task.js → commands/add-task.js} +1 -1
  14. package/dist/extensions/forgecli/commands/add-task.js.map +1 -0
  15. package/dist/extensions/forgecli/{approve.d.ts → commands/approve.d.ts} +2 -2
  16. package/dist/extensions/forgecli/{approve.js → commands/approve.js} +8 -8
  17. package/dist/extensions/forgecli/commands/approve.js.map +1 -0
  18. package/dist/extensions/forgecli/{collate.d.ts → commands/collate.d.ts} +2 -2
  19. package/dist/extensions/forgecli/{collate.js → commands/collate.js} +6 -6
  20. package/dist/extensions/forgecli/commands/collate.js.map +1 -0
  21. package/dist/extensions/forgecli/{commit.d.ts → commands/commit.d.ts} +2 -2
  22. package/dist/extensions/forgecli/{commit.js → commands/commit.js} +8 -8
  23. package/dist/extensions/forgecli/commands/commit.js.map +1 -0
  24. package/dist/extensions/forgecli/{config-command.js → commands/config-command.js} +3 -3
  25. package/dist/extensions/forgecli/commands/config-command.js.map +1 -0
  26. package/dist/extensions/forgecli/commands/enhance.d.ts +45 -0
  27. package/dist/extensions/forgecli/{enhance.js → commands/enhance.js} +95 -75
  28. package/dist/extensions/forgecli/commands/enhance.js.map +1 -0
  29. package/dist/extensions/forgecli/{implement.d.ts → commands/implement.d.ts} +2 -2
  30. package/dist/extensions/forgecli/{implement.js → commands/implement.js} +8 -8
  31. package/dist/extensions/forgecli/commands/implement.js.map +1 -0
  32. package/dist/extensions/forgecli/{plan.d.ts → commands/plan.d.ts} +2 -2
  33. package/dist/extensions/forgecli/{plan.js → commands/plan.js} +8 -8
  34. package/dist/extensions/forgecli/commands/plan.js.map +1 -0
  35. package/dist/extensions/forgecli/{quiz-agent.js → commands/quiz-agent.js} +1 -1
  36. package/dist/extensions/forgecli/commands/quiz-agent.js.map +1 -0
  37. package/dist/extensions/forgecli/{read-command.js → commands/read-command.js} +2 -2
  38. package/dist/extensions/forgecli/commands/read-command.js.map +1 -0
  39. package/dist/extensions/forgecli/{regenerate.js → commands/regenerate.js} +7 -19
  40. package/dist/extensions/forgecli/commands/regenerate.js.map +1 -0
  41. package/dist/extensions/forgecli/{remove-command.js → commands/remove-command.js} +1 -1
  42. package/dist/extensions/forgecli/commands/remove-command.js.map +1 -0
  43. package/dist/extensions/forgecli/{report-bug.js → commands/report-bug.js} +1 -1
  44. package/dist/extensions/forgecli/commands/report-bug.js.map +1 -0
  45. package/dist/extensions/forgecli/{retrospective.d.ts → commands/retrospective.d.ts} +1 -1
  46. package/dist/extensions/forgecli/{retrospective.js → commands/retrospective.js} +5 -5
  47. package/dist/extensions/forgecli/commands/retrospective.js.map +1 -0
  48. package/dist/extensions/forgecli/{review-code.d.ts → commands/review-code.d.ts} +2 -2
  49. package/dist/extensions/forgecli/{review-code.js → commands/review-code.js} +9 -9
  50. package/dist/extensions/forgecli/commands/review-code.js.map +1 -0
  51. package/dist/extensions/forgecli/{review-plan.d.ts → commands/review-plan.d.ts} +2 -2
  52. package/dist/extensions/forgecli/{review-plan.js → commands/review-plan.js} +9 -9
  53. package/dist/extensions/forgecli/commands/review-plan.js.map +1 -0
  54. package/dist/extensions/forgecli/commands/sprint-intake.js.map +1 -0
  55. package/dist/extensions/forgecli/commands/sprint-plan.js.map +1 -0
  56. package/dist/extensions/forgecli/{status-command.js → commands/status-command.js} +1 -1
  57. package/dist/extensions/forgecli/commands/status-command.js.map +1 -0
  58. package/dist/extensions/forgecli/{store-query.js → commands/store-query.js} +1 -1
  59. package/dist/extensions/forgecli/commands/store-query.js.map +1 -0
  60. package/dist/extensions/forgecli/{store-repair.js → commands/store-repair.js} +1 -1
  61. package/dist/extensions/forgecli/commands/store-repair.js.map +1 -0
  62. package/dist/extensions/forgecli/{test-orchestrate.js → commands/test-orchestrate.js} +1 -1
  63. package/dist/extensions/forgecli/commands/test-orchestrate.js.map +1 -0
  64. package/dist/extensions/forgecli/commands/transcripts-command.d.ts +87 -0
  65. package/dist/extensions/forgecli/commands/transcripts-command.js +418 -0
  66. package/dist/extensions/forgecli/commands/transcripts-command.js.map +1 -0
  67. package/dist/extensions/forgecli/{validate.d.ts → commands/validate.d.ts} +2 -2
  68. package/dist/extensions/forgecli/{validate.js → commands/validate.js} +8 -8
  69. package/dist/extensions/forgecli/commands/validate.js.map +1 -0
  70. package/dist/extensions/forgecli/{config-layer.js → config/config-layer.js} +2 -2
  71. package/dist/extensions/forgecli/config/config-layer.js.map +1 -0
  72. package/dist/extensions/forgecli/{config-writer.js → config/config-writer.js} +2 -2
  73. package/dist/extensions/forgecli/config/config-writer.js.map +1 -0
  74. package/dist/extensions/forgecli/{model-registry.js → config/model-registry.js} +1 -1
  75. package/dist/extensions/forgecli/config/model-registry.js.map +1 -0
  76. package/dist/extensions/forgecli/config/model-resolver.js.map +1 -0
  77. package/dist/extensions/forgecli/config/model-validator.js.map +1 -0
  78. package/dist/extensions/forgecli/config-tui/component.js +1 -1
  79. package/dist/extensions/forgecli/config-tui/component.js.map +1 -1
  80. package/dist/extensions/forgecli/config-tui/handler.js +1 -1
  81. package/dist/extensions/forgecli/config-tui/handler.js.map +1 -1
  82. package/dist/extensions/forgecli/config-tui/screens/override-editor.js +1 -1
  83. package/dist/extensions/forgecli/config-tui/screens/override-editor.js.map +1 -1
  84. package/dist/extensions/forgecli/config-tui/screens/overrides-list-phases.js +1 -1
  85. package/dist/extensions/forgecli/config-tui/screens/overrides-list-phases.js.map +1 -1
  86. package/dist/extensions/forgecli/config-tui/screens/show-resolved.js +1 -1
  87. package/dist/extensions/forgecli/config-tui/screens/show-resolved.js.map +1 -1
  88. package/dist/extensions/forgecli/config-tui/state/buffer.d.ts +2 -2
  89. package/dist/extensions/forgecli/config-tui/state/model.d.ts +1 -1
  90. package/dist/extensions/forgecli/config-tui/state/reducer.js.map +1 -1
  91. package/dist/extensions/forgecli/config-tui/state/selectors.d.ts +2 -2
  92. package/dist/extensions/forgecli/config-tui/state/selectors.js +1 -1
  93. package/dist/extensions/forgecli/config-tui/state/selectors.js.map +1 -1
  94. package/dist/extensions/forgecli/context-governor-compaction.d.ts +13 -2
  95. package/dist/extensions/forgecli/context-governor-compaction.js +66 -41
  96. package/dist/extensions/forgecli/context-governor-compaction.js.map +1 -1
  97. package/dist/extensions/forgecli/context-governor.d.ts +3 -7
  98. package/dist/extensions/forgecli/context-governor.js +43 -69
  99. package/dist/extensions/forgecli/context-governor.js.map +1 -1
  100. package/dist/extensions/forgecli/dashboard/component.d.ts +10 -1
  101. package/dist/extensions/forgecli/dashboard/component.js +84 -18
  102. package/dist/extensions/forgecli/dashboard/component.js.map +1 -1
  103. package/dist/extensions/forgecli/dashboard/register.js +1 -1
  104. package/dist/extensions/forgecli/dashboard/register.js.map +1 -1
  105. package/dist/extensions/forgecli/forge-artifact-tool.js +1 -1
  106. package/dist/extensions/forgecli/forge-commands.js +1 -1
  107. package/dist/extensions/forgecli/forge-commands.js.map +1 -1
  108. package/dist/extensions/forgecli/{forge-init.js → forge-init/forge-init.js} +10 -10
  109. package/dist/extensions/forgecli/forge-init/forge-init.js.map +1 -0
  110. package/dist/extensions/forgecli/forge-init/init-context.js.map +1 -0
  111. package/dist/extensions/forgecli/forge-init/init-progress.js.map +1 -0
  112. package/dist/extensions/forgecli/forge-init/phase4-register.js +1 -1
  113. package/dist/extensions/forgecli/forge-init/phase4-register.js.map +1 -1
  114. package/dist/extensions/forgecli/forge-init/run-phases.js +2 -2
  115. package/dist/extensions/forgecli/forge-init/run-phases.js.map +1 -1
  116. package/dist/extensions/forgecli/forge-subagent.d.ts +22 -0
  117. package/dist/extensions/forgecli/forge-subagent.js +42 -15
  118. package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
  119. package/dist/extensions/forgecli/forge-tools.d.ts +1 -25
  120. package/dist/extensions/forgecli/forge-tools.js +79 -37
  121. package/dist/extensions/forgecli/forge-tools.js.map +1 -1
  122. package/dist/extensions/forgecli/governor-config.d.ts +19 -0
  123. package/dist/extensions/forgecli/governor-config.js +58 -0
  124. package/dist/extensions/forgecli/governor-config.js.map +1 -0
  125. package/dist/extensions/forgecli/health-check.js +1 -1
  126. package/dist/extensions/forgecli/health-check.js.map +1 -1
  127. package/dist/extensions/forgecli/hook-dispatcher.js +2 -2
  128. package/dist/extensions/forgecli/hook-dispatcher.js.map +1 -1
  129. package/dist/extensions/forgecli/hooks/post-init-hook.js +11 -6
  130. package/dist/extensions/forgecli/hooks/post-init-hook.js.map +1 -1
  131. package/dist/extensions/forgecli/hooks/post-sprint-hook.js +11 -6
  132. package/dist/extensions/forgecli/hooks/post-sprint-hook.js.map +1 -1
  133. package/dist/extensions/forgecli/hooks/write-guard.js +1 -1
  134. package/dist/extensions/forgecli/hooks/write-guard.js.map +1 -1
  135. package/dist/extensions/forgecli/index.js +37 -35
  136. package/dist/extensions/forgecli/index.js.map +1 -1
  137. package/dist/extensions/forgecli/kickoff.d.ts +9 -0
  138. package/dist/extensions/forgecli/kickoff.js +15 -0
  139. package/dist/extensions/forgecli/kickoff.js.map +1 -1
  140. package/dist/extensions/forgecli/lib/forge-config.d.ts +1 -1
  141. package/dist/extensions/forgecli/lib/forge-config.js +1 -1
  142. package/dist/extensions/forgecli/lib/forge-config.js.map +1 -1
  143. package/dist/extensions/forgecli/{forge-root.d.ts → lib/forge-root.d.ts} +5 -0
  144. package/dist/extensions/forgecli/{forge-root.js → lib/forge-root.js} +14 -1
  145. package/dist/extensions/forgecli/lib/forge-root.js.map +1 -0
  146. package/dist/extensions/forgecli/lib/run-cjs.d.ts +26 -0
  147. package/dist/extensions/forgecli/lib/run-cjs.js +42 -0
  148. package/dist/extensions/forgecli/lib/run-cjs.js.map +1 -0
  149. package/dist/extensions/forgecli/orchestrator-tree.d.ts +4 -0
  150. package/dist/extensions/forgecli/orchestrator-tree.js +21 -3
  151. package/dist/extensions/forgecli/orchestrator-tree.js.map +1 -1
  152. package/dist/extensions/forgecli/{calibrate.d.ts → orchestrators/calibrate.d.ts} +2 -2
  153. package/dist/extensions/forgecli/{calibrate.js → orchestrators/calibrate.js} +4 -4
  154. package/dist/extensions/forgecli/orchestrators/calibrate.js.map +1 -0
  155. package/dist/extensions/forgecli/{fix-bug.d.ts → orchestrators/fix-bug.d.ts} +14 -5
  156. package/dist/extensions/forgecli/{fix-bug.js → orchestrators/fix-bug.js} +212 -61
  157. package/dist/extensions/forgecli/orchestrators/fix-bug.js.map +1 -0
  158. package/dist/extensions/forgecli/{lib → orchestrators}/halt-advisor.d.ts +1 -1
  159. package/dist/extensions/forgecli/{lib → orchestrators}/halt-advisor.js +1 -1
  160. package/dist/extensions/forgecli/orchestrators/halt-advisor.js.map +1 -0
  161. package/dist/extensions/forgecli/{materialize.js → orchestrators/materialize.js} +1 -1
  162. package/dist/extensions/forgecli/orchestrators/materialize.js.map +1 -0
  163. package/dist/extensions/forgecli/{migrate.d.ts → orchestrators/migrate.d.ts} +1 -1
  164. package/dist/extensions/forgecli/{migrate.js → orchestrators/migrate.js} +5 -5
  165. package/dist/extensions/forgecli/orchestrators/migrate.js.map +1 -0
  166. package/dist/extensions/forgecli/{lib → orchestrators}/orchestrator-preflight.d.ts +2 -2
  167. package/dist/extensions/forgecli/{lib → orchestrators}/orchestrator-preflight.js +2 -2
  168. package/dist/extensions/forgecli/orchestrators/orchestrator-preflight.js.map +1 -0
  169. package/dist/extensions/forgecli/{run-sprint.d.ts → orchestrators/run-sprint.d.ts} +1 -1
  170. package/dist/extensions/forgecli/{run-sprint.js → orchestrators/run-sprint.js} +85 -18
  171. package/dist/extensions/forgecli/orchestrators/run-sprint.js.map +1 -0
  172. package/dist/extensions/forgecli/{run-task.d.ts → orchestrators/run-task.d.ts} +14 -3
  173. package/dist/extensions/forgecli/{run-task.js → orchestrators/run-task.js} +121 -33
  174. package/dist/extensions/forgecli/orchestrators/run-task.js.map +1 -0
  175. package/dist/extensions/forgecli/paths/paths.d.ts +8 -0
  176. package/dist/extensions/forgecli/paths/paths.js +17 -0
  177. package/dist/extensions/forgecli/paths/paths.js.map +1 -1
  178. package/dist/extensions/forgecli/phase-vocab.d.ts +31 -0
  179. package/dist/extensions/forgecli/phase-vocab.js +82 -0
  180. package/dist/extensions/forgecli/phase-vocab.js.map +1 -0
  181. package/dist/extensions/forgecli/session-registry.d.ts +2 -2
  182. package/dist/extensions/forgecli/session-registry.js +6 -2
  183. package/dist/extensions/forgecli/session-registry.js.map +1 -1
  184. package/dist/extensions/forgecli/{friction-emit.d.ts → skill-curation/friction-emit.d.ts} +1 -1
  185. package/dist/extensions/forgecli/{friction-emit.js → skill-curation/friction-emit.js} +2 -2
  186. package/dist/extensions/forgecli/skill-curation/friction-emit.js.map +1 -0
  187. package/dist/extensions/forgecli/{skill-curation-flag.js → skill-curation/skill-curation-flag.js} +1 -1
  188. package/dist/extensions/forgecli/skill-curation/skill-curation-flag.js.map +1 -0
  189. package/dist/extensions/forgecli/{skill-curator-subagent.d.ts → skill-curation/skill-curator-subagent.d.ts} +2 -2
  190. package/dist/extensions/forgecli/{skill-curator-subagent.js → skill-curation/skill-curator-subagent.js} +1 -1
  191. package/dist/extensions/forgecli/skill-curation/skill-curator-subagent.js.map +1 -0
  192. package/dist/extensions/forgecli/{skill-retriever.js → skill-curation/skill-retriever.js} +1 -1
  193. package/dist/extensions/forgecli/skill-curation/skill-retriever.js.map +1 -0
  194. package/dist/extensions/forgecli/{skill-usage-tracker.js → skill-curation/skill-usage-tracker.js} +1 -1
  195. package/dist/extensions/forgecli/skill-curation/skill-usage-tracker.js.map +1 -0
  196. package/dist/extensions/forgecli/store/store-error-remediation.js.map +1 -0
  197. package/dist/extensions/forgecli/{store-resolver.js → store/store-resolver.js} +2 -2
  198. package/dist/extensions/forgecli/store/store-resolver.js.map +1 -0
  199. package/dist/extensions/forgecli/{store-validator.js → store/store-validator.js} +1 -1
  200. package/dist/extensions/forgecli/store/store-validator.js.map +1 -0
  201. package/dist/extensions/forgecli/{transition-guard.js → store/transition-guard.js} +2 -2
  202. package/dist/extensions/forgecli/store/transition-guard.js.map +1 -0
  203. package/dist/extensions/forgecli/subagent/orchestrator-transcript.js +5 -0
  204. package/dist/extensions/forgecli/subagent/orchestrator-transcript.js.map +1 -1
  205. package/dist/extensions/forgecli/transcript-archive-types.d.ts +171 -0
  206. package/dist/extensions/forgecli/transcript-archive-types.js +130 -0
  207. package/dist/extensions/forgecli/transcript-archive-types.js.map +1 -0
  208. package/dist/extensions/forgecli/transcript-archive.d.ts +127 -0
  209. package/dist/extensions/forgecli/transcript-archive.js +656 -0
  210. package/dist/extensions/forgecli/transcript-archive.js.map +1 -0
  211. package/dist/extensions/forgecli/transcript-replay.d.ts +28 -0
  212. package/dist/extensions/forgecli/transcript-replay.js +153 -0
  213. package/dist/extensions/forgecli/transcript-replay.js.map +1 -0
  214. package/dist/extensions/forgecli/transcripts-tui/component.d.ts +36 -0
  215. package/dist/extensions/forgecli/transcripts-tui/component.js +112 -0
  216. package/dist/extensions/forgecli/transcripts-tui/component.js.map +1 -0
  217. package/dist/extensions/forgecli/transcripts-tui/index.d.ts +4 -0
  218. package/dist/extensions/forgecli/transcripts-tui/index.js +5 -0
  219. package/dist/extensions/forgecli/transcripts-tui/index.js.map +1 -0
  220. package/dist/extensions/forgecli/transcripts-tui/screens/browse.d.ts +21 -0
  221. package/dist/extensions/forgecli/transcripts-tui/screens/browse.js +172 -0
  222. package/dist/extensions/forgecli/transcripts-tui/screens/browse.js.map +1 -0
  223. package/dist/extensions/forgecli/transcripts-tui/screens/types.d.ts +22 -0
  224. package/dist/extensions/forgecli/transcripts-tui/screens/types.js +4 -0
  225. package/dist/extensions/forgecli/transcripts-tui/screens/types.js.map +1 -0
  226. package/dist/extensions/forgecli/transcripts-tui/state/index.d.ts +4 -0
  227. package/dist/extensions/forgecli/transcripts-tui/state/index.js +5 -0
  228. package/dist/extensions/forgecli/transcripts-tui/state/index.js.map +1 -0
  229. package/dist/extensions/forgecli/transcripts-tui/state/init.d.ts +8 -0
  230. package/dist/extensions/forgecli/transcripts-tui/state/init.js +18 -0
  231. package/dist/extensions/forgecli/transcripts-tui/state/init.js.map +1 -0
  232. package/dist/extensions/forgecli/transcripts-tui/state/model.d.ts +56 -0
  233. package/dist/extensions/forgecli/transcripts-tui/state/model.js +6 -0
  234. package/dist/extensions/forgecli/transcripts-tui/state/model.js.map +1 -0
  235. package/dist/extensions/forgecli/transcripts-tui/state/reducer.d.ts +2 -0
  236. package/dist/extensions/forgecli/transcripts-tui/state/reducer.js +51 -0
  237. package/dist/extensions/forgecli/transcripts-tui/state/reducer.js.map +1 -0
  238. package/dist/extensions/forgecli/transcripts-tui/state/selectors.d.ts +10 -0
  239. package/dist/extensions/forgecli/transcripts-tui/state/selectors.js +62 -0
  240. package/dist/extensions/forgecli/transcripts-tui/state/selectors.js.map +1 -0
  241. package/dist/extensions/forgecli/transcripts-tui/theme.d.ts +20 -0
  242. package/dist/extensions/forgecli/transcripts-tui/theme.js +47 -0
  243. package/dist/extensions/forgecli/transcripts-tui/theme.js.map +1 -0
  244. package/dist/extensions/forgecli/tui/banner.js.map +1 -0
  245. package/dist/extensions/forgecli/tui/forge-header.js.map +1 -0
  246. package/dist/extensions/forgecli/tui/input-router.js.map +1 -0
  247. package/dist/extensions/forgecli/{orchestrator-status-bar.d.ts → tui/orchestrator-status-bar.d.ts} +1 -1
  248. package/dist/extensions/forgecli/{orchestrator-status-bar.js → tui/orchestrator-status-bar.js} +1 -1
  249. package/dist/extensions/forgecli/tui/orchestrator-status-bar.js.map +1 -0
  250. package/dist/extensions/forgecli/tui/thread-switcher.d.ts +18 -0
  251. package/dist/extensions/forgecli/{thread-switcher.js → tui/thread-switcher.js} +17 -12
  252. package/dist/extensions/forgecli/tui/thread-switcher.js.map +1 -0
  253. package/dist/extensions/forgecli/{forge-update-command.js → update/forge-update-command.js} +3 -3
  254. package/dist/extensions/forgecli/update/forge-update-command.js.map +1 -0
  255. package/dist/extensions/forgecli/{migration-engine.js → update/migration-engine.js} +1 -1
  256. package/dist/extensions/forgecli/update/migration-engine.js.map +1 -0
  257. package/dist/extensions/forgecli/{update-check.js → update/update-check.js} +1 -1
  258. package/dist/extensions/forgecli/update/update-check.js.map +1 -0
  259. package/dist/extensions/forgecli/{update-tools.js → update/update-tools.js} +1 -1
  260. package/dist/extensions/forgecli/update/update-tools.js.map +1 -0
  261. package/dist/extensions/forgecli/{whats-new-widget.js → update/whats-new-widget.js} +2 -2
  262. package/dist/extensions/forgecli/update/whats-new-widget.js.map +1 -0
  263. package/dist/extensions/forgecli/{whats-new.js → update/whats-new.js} +1 -1
  264. package/dist/extensions/forgecli/update/whats-new.js.map +1 -0
  265. package/dist/extensions/forgecli/{viewport-events.d.ts → viewport/events.d.ts} +37 -2
  266. package/dist/extensions/forgecli/{viewport-events.js → viewport/events.js} +70 -23
  267. package/dist/extensions/forgecli/viewport/events.js.map +1 -0
  268. package/dist/extensions/forgecli/{viewport-renderer.d.ts → viewport/renderer.d.ts} +19 -0
  269. package/dist/extensions/forgecli/{viewport-renderer.js → viewport/renderer.js} +46 -2
  270. package/dist/extensions/forgecli/viewport/renderer.js.map +1 -0
  271. package/dist/extensions/forgecli/{viewport-theme.js → viewport/theme.js} +13 -10
  272. package/dist/extensions/forgecli/viewport/theme.js.map +1 -0
  273. package/dist/extensions/forgecli/wf-engine/engine.js +1 -1
  274. package/dist/extensions/forgecli/wf-engine/engine.js.map +1 -1
  275. package/dist/forge-payload/.base-pack/workflows/_fragments/event-emission-schema.md +4 -0
  276. package/dist/forge-payload/.base-pack/workflows/_fragments/event-vocabulary.md +88 -0
  277. package/dist/forge-payload/.base-pack/workflows/commit_task.md +41 -38
  278. package/dist/forge-payload/.base-pack/workflows/implement_plan.md +3 -3
  279. package/dist/forge-payload/.base-pack/workflows-js/wfl-fix-bug.js +42 -6
  280. package/dist/forge-payload/.base-pack/workflows-js/wfl-run-task.js +32 -1
  281. package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
  282. package/dist/forge-payload/.schemas/enum-catalog.json +2 -2
  283. package/dist/forge-payload/.schemas/event.schema.json +8 -3
  284. package/dist/forge-payload/.schemas/migrations.json +56 -0
  285. package/dist/forge-payload/integrity.json +3 -3
  286. package/dist/forge-payload/meta/store-schema/event.schema.md +7 -0
  287. package/dist/forge-payload/meta/workflows/_fragments/event-emission-schema.md +4 -0
  288. package/dist/forge-payload/meta/workflows/_fragments/event-vocabulary.md +88 -0
  289. package/dist/forge-payload/meta/workflows/meta-commit.md +46 -43
  290. package/dist/forge-payload/meta/workflows/meta-fix-bug.md +7 -2
  291. package/dist/forge-payload/meta/workflows/meta-implement.md +3 -3
  292. package/dist/forge-payload/meta/workflows/meta-orchestrate.md +4 -1
  293. package/dist/forge-payload/schemas/enum-catalog.json +2 -2
  294. package/dist/forge-payload/schemas/event.schema.json +8 -3
  295. package/dist/forge-payload/schemas/structure-manifest.json +4 -2
  296. package/dist/forge-payload/tools/commit-task.cjs +218 -0
  297. package/dist/forge-payload/tools/store-cli.cjs +6 -1
  298. package/node_modules/@mariozechner/clipboard/package.json +2 -1
  299. package/node_modules/@mariozechner/clipboard-linux-x64-musl/README.md +3 -0
  300. package/node_modules/@mariozechner/clipboard-linux-x64-musl/package.json +25 -0
  301. package/package.json +5 -3
  302. package/dist/extensions/forgecli/add-pipeline.js.map +0 -1
  303. package/dist/extensions/forgecli/add-task.js.map +0 -1
  304. package/dist/extensions/forgecli/approve.js.map +0 -1
  305. package/dist/extensions/forgecli/banner.js.map +0 -1
  306. package/dist/extensions/forgecli/calibrate.js.map +0 -1
  307. package/dist/extensions/forgecli/collate.js.map +0 -1
  308. package/dist/extensions/forgecli/commit.js.map +0 -1
  309. package/dist/extensions/forgecli/config-command.js.map +0 -1
  310. package/dist/extensions/forgecli/config-layer.js.map +0 -1
  311. package/dist/extensions/forgecli/config-writer.js.map +0 -1
  312. package/dist/extensions/forgecli/enhance.d.ts +0 -27
  313. package/dist/extensions/forgecli/enhance.js.map +0 -1
  314. package/dist/extensions/forgecli/fix-bug.js.map +0 -1
  315. package/dist/extensions/forgecli/forge-header.js.map +0 -1
  316. package/dist/extensions/forgecli/forge-init.js.map +0 -1
  317. package/dist/extensions/forgecli/forge-root.js.map +0 -1
  318. package/dist/extensions/forgecli/forge-update-command.js.map +0 -1
  319. package/dist/extensions/forgecli/friction-emit.js.map +0 -1
  320. package/dist/extensions/forgecli/implement.js.map +0 -1
  321. package/dist/extensions/forgecli/init-context.js.map +0 -1
  322. package/dist/extensions/forgecli/init-progress.js.map +0 -1
  323. package/dist/extensions/forgecli/input-router.js.map +0 -1
  324. package/dist/extensions/forgecli/lib/halt-advisor.js.map +0 -1
  325. package/dist/extensions/forgecli/lib/orchestrator-preflight.js.map +0 -1
  326. package/dist/extensions/forgecli/materialize.js.map +0 -1
  327. package/dist/extensions/forgecli/migrate.js.map +0 -1
  328. package/dist/extensions/forgecli/migration-engine.js.map +0 -1
  329. package/dist/extensions/forgecli/model-registry.js.map +0 -1
  330. package/dist/extensions/forgecli/model-resolver.js.map +0 -1
  331. package/dist/extensions/forgecli/model-validator.js.map +0 -1
  332. package/dist/extensions/forgecli/orchestrator-status-bar.js.map +0 -1
  333. package/dist/extensions/forgecli/plan.js.map +0 -1
  334. package/dist/extensions/forgecli/quiz-agent.js.map +0 -1
  335. package/dist/extensions/forgecli/read-command.js.map +0 -1
  336. package/dist/extensions/forgecli/regenerate.js.map +0 -1
  337. package/dist/extensions/forgecli/remove-command.js.map +0 -1
  338. package/dist/extensions/forgecli/report-bug.js.map +0 -1
  339. package/dist/extensions/forgecli/retrospective.js.map +0 -1
  340. package/dist/extensions/forgecli/review-code.js.map +0 -1
  341. package/dist/extensions/forgecli/review-plan.js.map +0 -1
  342. package/dist/extensions/forgecli/run-sprint.js.map +0 -1
  343. package/dist/extensions/forgecli/run-task.js.map +0 -1
  344. package/dist/extensions/forgecli/skill-curation-flag.js.map +0 -1
  345. package/dist/extensions/forgecli/skill-curator-subagent.js.map +0 -1
  346. package/dist/extensions/forgecli/skill-retriever.js.map +0 -1
  347. package/dist/extensions/forgecli/skill-usage-tracker.js.map +0 -1
  348. package/dist/extensions/forgecli/sprint-intake.js.map +0 -1
  349. package/dist/extensions/forgecli/sprint-plan.js.map +0 -1
  350. package/dist/extensions/forgecli/status-command.js.map +0 -1
  351. package/dist/extensions/forgecli/store-error-remediation.js.map +0 -1
  352. package/dist/extensions/forgecli/store-query.js.map +0 -1
  353. package/dist/extensions/forgecli/store-repair.js.map +0 -1
  354. package/dist/extensions/forgecli/store-resolver.js.map +0 -1
  355. package/dist/extensions/forgecli/store-validator.js.map +0 -1
  356. package/dist/extensions/forgecli/test-orchestrate.js.map +0 -1
  357. package/dist/extensions/forgecli/thread-switcher.d.ts +0 -5
  358. package/dist/extensions/forgecli/thread-switcher.js.map +0 -1
  359. package/dist/extensions/forgecli/transition-guard.js.map +0 -1
  360. package/dist/extensions/forgecli/update-check.js.map +0 -1
  361. package/dist/extensions/forgecli/update-tools.js.map +0 -1
  362. package/dist/extensions/forgecli/validate.js.map +0 -1
  363. package/dist/extensions/forgecli/viewport-events.js.map +0 -1
  364. package/dist/extensions/forgecli/viewport-renderer.js.map +0 -1
  365. package/dist/extensions/forgecli/viewport-theme.js.map +0 -1
  366. package/dist/extensions/forgecli/whats-new-widget.js.map +0 -1
  367. package/dist/extensions/forgecli/whats-new.js.map +0 -1
  368. /package/dist/extensions/forgecli/{add-pipeline.d.ts → commands/add-pipeline.d.ts} +0 -0
  369. /package/dist/extensions/forgecli/{add-task.d.ts → commands/add-task.d.ts} +0 -0
  370. /package/dist/extensions/forgecli/{config-command.d.ts → commands/config-command.d.ts} +0 -0
  371. /package/dist/extensions/forgecli/{quiz-agent.d.ts → commands/quiz-agent.d.ts} +0 -0
  372. /package/dist/extensions/forgecli/{read-command.d.ts → commands/read-command.d.ts} +0 -0
  373. /package/dist/extensions/forgecli/{regenerate.d.ts → commands/regenerate.d.ts} +0 -0
  374. /package/dist/extensions/forgecli/{remove-command.d.ts → commands/remove-command.d.ts} +0 -0
  375. /package/dist/extensions/forgecli/{report-bug.d.ts → commands/report-bug.d.ts} +0 -0
  376. /package/dist/extensions/forgecli/{sprint-intake.d.ts → commands/sprint-intake.d.ts} +0 -0
  377. /package/dist/extensions/forgecli/{sprint-intake.js → commands/sprint-intake.js} +0 -0
  378. /package/dist/extensions/forgecli/{sprint-plan.d.ts → commands/sprint-plan.d.ts} +0 -0
  379. /package/dist/extensions/forgecli/{sprint-plan.js → commands/sprint-plan.js} +0 -0
  380. /package/dist/extensions/forgecli/{status-command.d.ts → commands/status-command.d.ts} +0 -0
  381. /package/dist/extensions/forgecli/{store-query.d.ts → commands/store-query.d.ts} +0 -0
  382. /package/dist/extensions/forgecli/{store-repair.d.ts → commands/store-repair.d.ts} +0 -0
  383. /package/dist/extensions/forgecli/{test-orchestrate.d.ts → commands/test-orchestrate.d.ts} +0 -0
  384. /package/dist/extensions/forgecli/{config-layer.d.ts → config/config-layer.d.ts} +0 -0
  385. /package/dist/extensions/forgecli/{config-writer.d.ts → config/config-writer.d.ts} +0 -0
  386. /package/dist/extensions/forgecli/{model-registry.d.ts → config/model-registry.d.ts} +0 -0
  387. /package/dist/extensions/forgecli/{model-resolver.d.ts → config/model-resolver.d.ts} +0 -0
  388. /package/dist/extensions/forgecli/{model-resolver.js → config/model-resolver.js} +0 -0
  389. /package/dist/extensions/forgecli/{model-validator.d.ts → config/model-validator.d.ts} +0 -0
  390. /package/dist/extensions/forgecli/{model-validator.js → config/model-validator.js} +0 -0
  391. /package/dist/extensions/forgecli/{forge-init.d.ts → forge-init/forge-init.d.ts} +0 -0
  392. /package/dist/extensions/forgecli/{init-context.d.ts → forge-init/init-context.d.ts} +0 -0
  393. /package/dist/extensions/forgecli/{init-context.js → forge-init/init-context.js} +0 -0
  394. /package/dist/extensions/forgecli/{init-progress.d.ts → forge-init/init-progress.d.ts} +0 -0
  395. /package/dist/extensions/forgecli/{init-progress.js → forge-init/init-progress.js} +0 -0
  396. /package/dist/extensions/forgecli/{materialize.d.ts → orchestrators/materialize.d.ts} +0 -0
  397. /package/dist/extensions/forgecli/{skill-curation-flag.d.ts → skill-curation/skill-curation-flag.d.ts} +0 -0
  398. /package/dist/extensions/forgecli/{skill-retriever.d.ts → skill-curation/skill-retriever.d.ts} +0 -0
  399. /package/dist/extensions/forgecli/{skill-usage-tracker.d.ts → skill-curation/skill-usage-tracker.d.ts} +0 -0
  400. /package/dist/extensions/forgecli/{store-error-remediation.d.ts → store/store-error-remediation.d.ts} +0 -0
  401. /package/dist/extensions/forgecli/{store-error-remediation.js → store/store-error-remediation.js} +0 -0
  402. /package/dist/extensions/forgecli/{store-resolver.d.ts → store/store-resolver.d.ts} +0 -0
  403. /package/dist/extensions/forgecli/{store-validator.d.ts → store/store-validator.d.ts} +0 -0
  404. /package/dist/extensions/forgecli/{transition-guard.d.ts → store/transition-guard.d.ts} +0 -0
  405. /package/dist/extensions/forgecli/{banner.d.ts → tui/banner.d.ts} +0 -0
  406. /package/dist/extensions/forgecli/{banner.js → tui/banner.js} +0 -0
  407. /package/dist/extensions/forgecli/{forge-header.d.ts → tui/forge-header.d.ts} +0 -0
  408. /package/dist/extensions/forgecli/{forge-header.js → tui/forge-header.js} +0 -0
  409. /package/dist/extensions/forgecli/{input-router.d.ts → tui/input-router.d.ts} +0 -0
  410. /package/dist/extensions/forgecli/{input-router.js → tui/input-router.js} +0 -0
  411. /package/dist/extensions/forgecli/{forge-update-command.d.ts → update/forge-update-command.d.ts} +0 -0
  412. /package/dist/extensions/forgecli/{migration-engine.d.ts → update/migration-engine.d.ts} +0 -0
  413. /package/dist/extensions/forgecli/{update-check.d.ts → update/update-check.d.ts} +0 -0
  414. /package/dist/extensions/forgecli/{update-tools.d.ts → update/update-tools.d.ts} +0 -0
  415. /package/dist/extensions/forgecli/{whats-new-widget.d.ts → update/whats-new-widget.d.ts} +0 -0
  416. /package/dist/extensions/forgecli/{whats-new.d.ts → update/whats-new.d.ts} +0 -0
  417. /package/dist/extensions/forgecli/{viewport-theme.d.ts → viewport/theme.d.ts} +0 -0
@@ -0,0 +1,130 @@
1
+ // transcript-archive-types.ts — schemas for the central transcript archive.
2
+ //
3
+ // The archive lives under `~/.pi/forge-cli/transcripts/` (see paths/paths.ts)
4
+ // and mirrors every orchestrator run (run-task / fix-bug / run-sprint task)
5
+ // from project-local `.forge/transcripts/` into a permanent, compressed,
6
+ // cross-project store:
7
+ //
8
+ // transcripts/
9
+ // index.jsonl ← one IndexEntry line per archived run
10
+ // projects.json ← ProjectsRegistry (projectKey → identity)
11
+ // <projectKey>/<entityId>/<runId>/
12
+ // manifest.json ← RunManifest
13
+ // orchestrator.jsonl ← copied as-is (greppable)
14
+ // <ISO>__<entityId>__<phase>.json.gz
15
+ //
16
+ // Everything read back from disk is untrusted (crash-truncated writes,
17
+ // hand-edits): readers Value.Check before use and return null on mismatch —
18
+ // they never throw on malformed input.
19
+ import { Type } from "typebox";
20
+ /** Per-phase token usage, captured from the subagent transcript header. */
21
+ export const PhaseUsageSchema = Type.Object({
22
+ input: Type.Number(),
23
+ output: Type.Number(),
24
+ cacheRead: Type.Number(),
25
+ cacheWrite: Type.Number(),
26
+ cost: Type.Number(),
27
+ contextTokens: Type.Optional(Type.Number()),
28
+ turns: Type.Optional(Type.Number()),
29
+ });
30
+ /** One pipeline phase within an archived run. */
31
+ export const PhaseRecordSchema = Type.Object({
32
+ role: Type.String(),
33
+ attempt: Type.Number(),
34
+ /** Verdict from the orchestrator phase-end event; "n/a" when none applies. */
35
+ verdict: Type.String(),
36
+ model: Type.Optional(Type.String()),
37
+ provider: Type.Optional(Type.String()),
38
+ usage: Type.Optional(PhaseUsageSchema),
39
+ /** Archived phase-transcript filename (without the .gz suffix). */
40
+ file: Type.Optional(Type.String()),
41
+ /**
42
+ * Archived live tail-log filename (without the .gz suffix) — the exact
43
+ * lines the dashboard rendered during the run (`*.tail.jsonl`). Replay
44
+ * prefers this over reconstructing a digest from the transcript.
45
+ */
46
+ tailFile: Type.Optional(Type.String()),
47
+ startedAt: Type.Optional(Type.String()),
48
+ elapsedMs: Type.Optional(Type.Number()),
49
+ });
50
+ /** Aggregate bucket used for both byModel and byProvider rollups. */
51
+ export const UsageAggregateSchema = Type.Object({
52
+ input: Type.Number(),
53
+ output: Type.Number(),
54
+ cost: Type.Number(),
55
+ phases: Type.Number(),
56
+ });
57
+ export const RunTotalsSchema = Type.Object({
58
+ input: Type.Number(),
59
+ output: Type.Number(),
60
+ cacheRead: Type.Number(),
61
+ cacheWrite: Type.Number(),
62
+ cost: Type.Number(),
63
+ byModel: Type.Record(Type.String(), UsageAggregateSchema),
64
+ byProvider: Type.Record(Type.String(), UsageAggregateSchema),
65
+ /** Count of phase-loopback events (revision loops) in the run. */
66
+ revisionLoops: Type.Number(),
67
+ });
68
+ export const RunOutcomeSchema = Type.Union([
69
+ Type.Literal("complete"),
70
+ Type.Literal("halted"),
71
+ Type.Literal("cancelled"),
72
+ Type.Literal("error"),
73
+ /** No pipeline-end event found — crash- or in-flight-truncated run. */
74
+ Type.Literal("incomplete"),
75
+ ]);
76
+ export const EntityKindSchema = Type.Union([
77
+ Type.Literal("task"),
78
+ Type.Literal("bug"),
79
+ Type.Literal("sprint"),
80
+ Type.Literal("unknown"),
81
+ ]);
82
+ /** manifest.json — full metadata for one archived run. */
83
+ export const RunManifestSchema = Type.Object({
84
+ schema: Type.Literal("forge-run-manifest/v1"),
85
+ runId: Type.String(),
86
+ projectKey: Type.String(),
87
+ projectPath: Type.String(),
88
+ projectName: Type.String(),
89
+ projectPrefix: Type.String(),
90
+ entityId: Type.String(),
91
+ entityKind: EntityKindSchema,
92
+ /** Back-reference for sprint-nested task runs — no synthetic sprint container. */
93
+ sprintId: Type.Optional(Type.String()),
94
+ startedAt: Type.String(),
95
+ finishedAt: Type.Optional(Type.String()),
96
+ durationMs: Type.Optional(Type.Number()),
97
+ outcome: RunOutcomeSchema,
98
+ phases: Type.Array(PhaseRecordSchema),
99
+ totals: RunTotalsSchema,
100
+ archivedAt: Type.String(),
101
+ });
102
+ /** One line of index.jsonl — the append-only global run timeline. */
103
+ export const IndexEntrySchema = Type.Object({
104
+ runId: Type.String(),
105
+ projectKey: Type.String(),
106
+ entityId: Type.String(),
107
+ entityKind: EntityKindSchema,
108
+ sprintId: Type.Optional(Type.String()),
109
+ startedAt: Type.String(),
110
+ outcome: RunOutcomeSchema,
111
+ input: Type.Number(),
112
+ output: Type.Number(),
113
+ cost: Type.Number(),
114
+ durationMs: Type.Optional(Type.Number()),
115
+ archivedAt: Type.String(),
116
+ });
117
+ const ProjectEntrySchema = Type.Object({
118
+ path: Type.String(),
119
+ prefix: Type.String(),
120
+ name: Type.String(),
121
+ firstSeen: Type.String(),
122
+ lastSeen: Type.String(),
123
+ runCount: Type.Number(),
124
+ });
125
+ /** projects.json — projectKey → identity registry. */
126
+ export const ProjectsRegistrySchema = Type.Object({
127
+ version: Type.Literal(1),
128
+ projects: Type.Record(Type.String(), ProjectEntrySchema),
129
+ });
130
+ //# sourceMappingURL=transcript-archive-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-archive-types.js","sourceRoot":"","sources":["../../../src/extensions/forgecli/transcript-archive-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ import { getTranscriptArchiveRoot } from "./paths/paths.js";
2
+ import { type IndexEntry, type ProjectsRegistry, type RunManifest } from "./transcript-archive-types.js";
3
+ export interface ProjectIdentity {
4
+ prefix: string;
5
+ name: string;
6
+ projectDir: string;
7
+ }
8
+ /**
9
+ * Read `{prefix, name, projectDir}` from a `.forge/config.json`. Defaults on
10
+ * any failure (missing file, malformed JSON, absent fields) — never throws.
11
+ * `projectDir` is derived from the config path itself (`<dir>/.forge/config.json`).
12
+ */
13
+ export declare function readProjectIdentity(configPath: string): ProjectIdentity;
14
+ /**
15
+ * `<prefix>-<sha256(realpath(projectDir)).slice(0,8)>` — prefix alone can
16
+ * collide across projects (two repos both named "FORGE"); the path hash
17
+ * disambiguates. Falls back to the raw path when realpath throws (deleted
18
+ * or unmounted project dir — archive entries must remain addressable).
19
+ */
20
+ export declare function computeProjectKey(projectDir: string, prefix: string): string;
21
+ interface PhaseFileInfo {
22
+ /** Absolute path to the project-local phase transcript JSON. */
23
+ absPath: string;
24
+ /** Basename, e.g. "20260601T100100Z__CART-BUG-001__triage.json". */
25
+ file: string;
26
+ /** Compact ISO prefix from the filename. */
27
+ ts: string;
28
+ /** Role segment from the filename (third "__" part onward). */
29
+ role: string;
30
+ }
31
+ /** One discovered run: source files + the manifest built from them. */
32
+ export interface DiscoveredRun {
33
+ runId: string;
34
+ jsonlPath: string;
35
+ phaseFiles: PhaseFileInfo[];
36
+ /** Live tail-view logs (`*.tail.jsonl`) belonging to this run. */
37
+ tailFiles: PhaseFileInfo[];
38
+ manifest: RunManifest;
39
+ }
40
+ interface BuildOptions {
41
+ /** Sprint back-reference stamped onto the manifest (run-sprint wiring). */
42
+ sprintId?: string;
43
+ }
44
+ /**
45
+ * Discover every run in a project-local entity transcript dir
46
+ * (`.forge/transcripts/<entityId>/`) and build a RunManifest for each.
47
+ *
48
+ * A "run" is one orchestrator JSONL file; its runId is the compact-ISO
49
+ * pipeline-start timestamp (falling back to the filename prefix). Phase
50
+ * transcript files are assigned to the latest run whose start precedes
51
+ * them — compact ISO prefixes compare lexicographically as timestamps.
52
+ */
53
+ export declare function buildRunsForEntityDir(entityDir: string, identity: ProjectIdentity, projectKey: string, opts?: BuildOptions): DiscoveredRun[];
54
+ export interface ArchiveRunResult {
55
+ archived: boolean;
56
+ runDir?: string;
57
+ error?: string;
58
+ }
59
+ export interface ArchiveRunOptions {
60
+ /** Project dir (the dir containing `.forge/`). */
61
+ cwd: string;
62
+ /** Project-local orchestrator JSONL path for the run to archive. */
63
+ orchestratorJsonlPath: string;
64
+ /** Sprint back-reference for sprint-nested task runs. */
65
+ sprintId?: string;
66
+ /** Override for `<cwd>/.forge/config.json` (tests). */
67
+ configPath?: string;
68
+ }
69
+ /**
70
+ * Archive the run identified by its project-local orchestrator transcript.
71
+ * Called by orchestrators after the pipeline result is known. Best-effort,
72
+ * never throws.
73
+ */
74
+ export declare function archiveRun(opts: ArchiveRunOptions): ArchiveRunResult;
75
+ export interface SweepResult {
76
+ adopted: number;
77
+ errors: number;
78
+ }
79
+ /**
80
+ * Adopt orphans: archive every project-local run whose runId isn't in the
81
+ * central index. Covers crash recovery (pipeline died before its archive
82
+ * call) and adoption of pre-existing history (transcripts written before
83
+ * this feature shipped). Called best-effort at pipeline start; never throws.
84
+ */
85
+ export declare function sweepProjectTranscripts(cwd: string, configPath?: string): SweepResult;
86
+ /** Read index.jsonl — skips malformed/truncated lines, never throws. */
87
+ export declare function readIndex(): IndexEntry[];
88
+ /** Read projects.json — empty registry on any failure, never throws. */
89
+ export declare function readProjects(): ProjectsRegistry;
90
+ /** Read `<runDir>/manifest.json` — null on missing/truncated/mismatched. */
91
+ export declare function readManifest(runDir: string): RunManifest | null;
92
+ /**
93
+ * Gunzip + parse an archived phase transcript. `file` is the manifest's
94
+ * phase `file` field (without `.gz`). Null on any failure, never throws.
95
+ */
96
+ export declare function gunzipPhase(runDir: string, file: string): Record<string, unknown> | null;
97
+ /** One persisted live tail-view line (see viewport/events.ts TailLogEntry). */
98
+ export interface ArchivedTailEntry {
99
+ line: string;
100
+ warning?: boolean;
101
+ }
102
+ /**
103
+ * Gunzip + parse an archived live tail log (`*.tail.jsonl.gz`). Returns the
104
+ * exact lines the dashboard rendered during the run, in order. Tolerant of
105
+ * truncated tails; null when the file is missing/unreadable. Never throws.
106
+ */
107
+ export declare function gunzipTailLog(runDir: string, file: string): ArchivedTailEntry[] | null;
108
+ /** Resolve the archive dir for an index entry. */
109
+ export declare function runDirForEntry(entry: IndexEntry): string;
110
+ /**
111
+ * Per-turn digest of a gunzipped phase payload — never a raw JSON dump.
112
+ * Each assistant message is a turn: first text line + tool-call names;
113
+ * toolResult messages render as compact result markers.
114
+ */
115
+ export declare function digestPhasePayload(payload: Record<string, unknown>): string[];
116
+ /**
117
+ * VERBOSE digest of a gunzipped phase payload — the replay-dashboard feed.
118
+ * Unlike digestPhasePayload (compact markers for the `show` table), this
119
+ * carries the actual transcript content so a replayed run is readable:
120
+ * full assistant text (capped per turn), thinking first-lines, tool-call
121
+ * argument previews, and tool-result first-line previews.
122
+ *
123
+ * Multi-line assistant text is pushed as ONE entry — the dashboard splits
124
+ * lines at display time, and the tree's per-entry char cap still applies.
125
+ */
126
+ export declare function digestPhasePayloadVerbose(payload: Record<string, unknown>): string[];
127
+ export { getTranscriptArchiveRoot };