@pellux/goodvibes-tui 0.18.4 → 0.18.9

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 (571) hide show
  1. package/CHANGELOG.md +190 -0
  2. package/README.md +2 -2
  3. package/bin/goodvibes +1 -1
  4. package/bin/goodvibes-daemon +66 -0
  5. package/docs/foundation-artifacts/operator-contract.json +1 -1
  6. package/package.json +14 -7
  7. package/scripts/postinstall.js +220 -0
  8. package/src/acp/connection.ts +5 -5
  9. package/src/acp/index.ts +1 -1
  10. package/src/acp/manager.ts +1 -133
  11. package/src/adapters/bluebubbles/index.ts +1 -1
  12. package/src/adapters/discord/index.ts +2 -2
  13. package/src/adapters/github/index.ts +1 -1
  14. package/src/adapters/google-chat/index.ts +1 -1
  15. package/src/adapters/imessage/index.ts +1 -1
  16. package/src/adapters/index.ts +15 -15
  17. package/src/adapters/matrix/index.ts +1 -1
  18. package/src/adapters/mattermost/index.ts +1 -1
  19. package/src/adapters/msteams/index.ts +2 -2
  20. package/src/adapters/ntfy/index.ts +1 -1
  21. package/src/adapters/signal/index.ts +1 -1
  22. package/src/adapters/slack/index.ts +2 -2
  23. package/src/adapters/telegram/index.ts +1 -1
  24. package/src/adapters/types.ts +4 -4
  25. package/src/adapters/webhook/index.ts +1 -1
  26. package/src/adapters/whatsapp/index.ts +1 -1
  27. package/src/agents/message-bus-core.ts +2 -2
  28. package/src/agents/message-bus.ts +2 -2
  29. package/src/agents/orchestrator-prompts.ts +4 -4
  30. package/src/agents/orchestrator-runner.ts +11 -11
  31. package/src/agents/orchestrator.ts +15 -14
  32. package/src/agents/session.ts +1 -1
  33. package/src/agents/worktree.ts +1 -1
  34. package/src/agents/wrfc-config.ts +2 -2
  35. package/src/agents/wrfc-controller.ts +12 -12
  36. package/src/agents/wrfc-gate-runtime.ts +5 -5
  37. package/src/agents/wrfc-reporting.ts +1 -1
  38. package/src/agents/wrfc-runtime-events.ts +3 -3
  39. package/src/agents/wrfc-types.ts +1 -1
  40. package/src/automation/delivery-manager.ts +4 -4
  41. package/src/automation/index.ts +4 -4
  42. package/src/automation/manager-runtime-delivery.ts +1 -1
  43. package/src/automation/manager-runtime-events.ts +3 -3
  44. package/src/automation/manager-runtime-execution.ts +5 -5
  45. package/src/automation/manager-runtime-helpers.ts +2 -2
  46. package/src/automation/manager-runtime-job-mutations.ts +3 -3
  47. package/src/automation/manager-runtime-reconcile.ts +4 -4
  48. package/src/automation/manager-runtime-scheduling.ts +2 -2
  49. package/src/automation/manager-runtime.ts +18 -18
  50. package/src/automation/manager.ts +2 -2
  51. package/src/automation/service.ts +2 -2
  52. package/src/channels/builtin/account-actions.ts +5 -5
  53. package/src/channels/builtin/accounts.ts +2 -2
  54. package/src/channels/builtin/contracts.ts +3 -3
  55. package/src/channels/builtin/plugins.ts +5 -5
  56. package/src/channels/builtin/rendering.ts +4 -4
  57. package/src/channels/builtin/setup-schema.ts +1 -1
  58. package/src/channels/builtin/shared.ts +7 -7
  59. package/src/channels/builtin/surfaces.ts +2 -2
  60. package/src/channels/builtin/targets.ts +3 -3
  61. package/src/channels/builtin-runtime.ts +11 -11
  62. package/src/channels/delivery/shared.ts +2 -2
  63. package/src/channels/delivery/strategies-bridge.ts +3 -3
  64. package/src/channels/delivery/strategies-core.ts +5 -5
  65. package/src/channels/delivery/strategies-enterprise.ts +3 -3
  66. package/src/channels/delivery/types.ts +2 -2
  67. package/src/channels/delivery-router.ts +9 -9
  68. package/src/channels/index.ts +12 -12
  69. package/src/channels/plugin-registry.ts +1 -1
  70. package/src/channels/provider-runtime.ts +3 -3
  71. package/src/channels/reply-pipeline.ts +3 -3
  72. package/src/channels/route-manager.ts +2 -2
  73. package/src/channels/surface-registry.ts +2 -2
  74. package/src/config/helper-model.ts +1 -233
  75. package/src/config/index.ts +3 -3
  76. package/src/config/manager.ts +8 -404
  77. package/src/config/secrets.ts +21 -542
  78. package/src/config/service-registry.ts +1 -329
  79. package/src/config/tool-llm.ts +3 -3
  80. package/src/control-plane/approval-broker.ts +1 -1
  81. package/src/control-plane/gateway.ts +1 -713
  82. package/src/control-plane/index.ts +7 -7
  83. package/src/control-plane/media-contract-schemas.ts +1 -208
  84. package/src/control-plane/method-catalog-admin.ts +1 -136
  85. package/src/control-plane/method-catalog-channels.ts +1 -591
  86. package/src/control-plane/method-catalog-control-automation.ts +1 -475
  87. package/src/control-plane/method-catalog-control-core.ts +1 -594
  88. package/src/control-plane/method-catalog-control.ts +1 -8
  89. package/src/control-plane/method-catalog-events.ts +1 -74
  90. package/src/control-plane/method-catalog-knowledge.ts +1 -531
  91. package/src/control-plane/method-catalog-media.ts +1 -279
  92. package/src/control-plane/method-catalog-runtime.ts +1 -304
  93. package/src/control-plane/method-catalog-shared.ts +1 -223
  94. package/src/control-plane/method-catalog.ts +1 -242
  95. package/src/control-plane/operator-contract-schemas-admin.ts +1 -639
  96. package/src/control-plane/operator-contract-schemas-channels.ts +1 -375
  97. package/src/control-plane/operator-contract-schemas-control.ts +1 -226
  98. package/src/control-plane/operator-contract-schemas-domains.ts +1 -4
  99. package/src/control-plane/operator-contract-schemas-knowledge.ts +1 -582
  100. package/src/control-plane/operator-contract-schemas-media.ts +1 -297
  101. package/src/control-plane/operator-contract-schemas-permissions.ts +1 -100
  102. package/src/control-plane/operator-contract-schemas-remote.ts +1 -38
  103. package/src/control-plane/operator-contract-schemas-runtime.ts +1 -563
  104. package/src/control-plane/operator-contract-schemas-shared.ts +1 -85
  105. package/src/control-plane/operator-contract-schemas-telemetry.ts +1 -349
  106. package/src/control-plane/operator-contract-schemas.ts +1 -6
  107. package/src/control-plane/operator-contract.ts +5 -3
  108. package/src/control-plane/session-broker.ts +1 -1
  109. package/src/core/compaction-sections.ts +5 -5
  110. package/src/core/compaction-types.ts +3 -3
  111. package/src/core/composer-state.ts +1 -1
  112. package/src/core/context-compaction.ts +7 -7
  113. package/src/core/conversation-compaction.ts +4 -4
  114. package/src/core/conversation-diff.ts +1 -1
  115. package/src/core/conversation-rendering.ts +5 -5
  116. package/src/core/conversation-utils.ts +2 -2
  117. package/src/core/conversation.ts +10 -10
  118. package/src/core/event-replay.ts +1 -1
  119. package/src/core/orchestrator-context-runtime.ts +8 -8
  120. package/src/core/orchestrator-follow-up-runtime.ts +2 -2
  121. package/src/core/orchestrator-runtime.ts +4 -4
  122. package/src/core/orchestrator-tool-runtime.ts +7 -7
  123. package/src/core/orchestrator-turn-helpers.ts +7 -7
  124. package/src/core/orchestrator-turn-loop.ts +10 -10
  125. package/src/core/orchestrator.ts +17 -17
  126. package/src/core/plan-command-handler.ts +2 -2
  127. package/src/core/system-message-router.ts +2 -2
  128. package/src/core/transcript-events/classify.ts +1 -1
  129. package/src/core/transcript-events/index.ts +3 -3
  130. package/src/daemon/cli.ts +6 -6
  131. package/src/daemon/control-plane.ts +7 -7
  132. package/src/daemon/facade-composition.ts +16 -15
  133. package/src/daemon/facade.ts +17 -17
  134. package/src/daemon/helpers.ts +2 -2
  135. package/src/daemon/http/router-route-contexts.ts +11 -11
  136. package/src/daemon/http/router.ts +25 -25
  137. package/src/daemon/http-listener.ts +3 -3
  138. package/src/daemon/index.ts +1 -3
  139. package/src/daemon/service-manager.ts +1 -1
  140. package/src/daemon/surface-actions.ts +8 -8
  141. package/src/daemon/surface-delivery.ts +7 -7
  142. package/src/daemon/surface-policy.ts +1 -1
  143. package/src/daemon/transport-events.ts +4 -4
  144. package/src/daemon/types.ts +24 -24
  145. package/src/export/markdown.ts +1 -1
  146. package/src/export/session-export.ts +1 -633
  147. package/src/git/index.ts +1 -1
  148. package/src/git/service.ts +1 -1
  149. package/src/hooks/chain-engine.ts +1 -1
  150. package/src/hooks/dispatcher.ts +4 -4
  151. package/src/hooks/hook-api.ts +1 -1
  152. package/src/hooks/index.ts +8 -8
  153. package/src/hooks/runners/agent.ts +1 -1
  154. package/src/hooks/runners/prompt.ts +1 -1
  155. package/src/hooks/workbench.ts +2 -2
  156. package/src/input/command-registry.ts +24 -17
  157. package/src/input/commands/config.ts +1 -1
  158. package/src/input/commands/control-room-runtime.ts +2 -2
  159. package/src/input/commands/conversation-runtime.ts +1 -1
  160. package/src/input/commands/discovery-runtime.ts +7 -1
  161. package/src/input/commands/eval.ts +2 -2
  162. package/src/input/commands/git-runtime.ts +1 -1
  163. package/src/input/commands/guidance-runtime.ts +3 -3
  164. package/src/input/commands/health-runtime.ts +7 -7
  165. package/src/input/commands/incident-runtime.ts +1 -1
  166. package/src/input/commands/integration-runtime.ts +3 -3
  167. package/src/input/commands/local-provider-runtime.ts +1 -1
  168. package/src/input/commands/local-runtime.ts +1 -1
  169. package/src/input/commands/local-setup-review.ts +2 -2
  170. package/src/input/commands/local-setup.ts +2 -2
  171. package/src/input/commands/managed-runtime.ts +2 -2
  172. package/src/input/commands/marketplace-runtime.ts +1 -1
  173. package/src/input/commands/platform-access-runtime.ts +1 -1
  174. package/src/input/commands/platform-sandbox-qemu.ts +3 -3
  175. package/src/input/commands/platform-sandbox-runtime.ts +5 -5
  176. package/src/input/commands/platform-sandbox-session.ts +1 -1
  177. package/src/input/commands/policy-dispatch.ts +2 -2
  178. package/src/input/commands/product-runtime.ts +2 -2
  179. package/src/input/commands/profile-sync-runtime.ts +1 -1
  180. package/src/input/commands/provider-accounts-runtime.ts +1 -1
  181. package/src/input/commands/provider.ts +3 -3
  182. package/src/input/commands/quit-shared.ts +1 -1
  183. package/src/input/commands/recall-bundle.ts +1 -1
  184. package/src/input/commands/recall-capture.ts +2 -2
  185. package/src/input/commands/recall-query.ts +2 -2
  186. package/src/input/commands/recall-shared.ts +1 -1
  187. package/src/input/commands/remote-runtime-setup.ts +1 -1
  188. package/src/input/commands/remote-runtime.ts +1 -1
  189. package/src/input/commands/runtime-services.ts +13 -11
  190. package/src/input/commands/schedule-runtime.ts +2 -2
  191. package/src/input/commands/session-content.ts +1 -1
  192. package/src/input/commands/session-workflow.ts +4 -4
  193. package/src/input/commands/settings-sync-runtime.ts +1 -1
  194. package/src/input/commands/share-runtime.ts +9 -4
  195. package/src/input/commands/shell-core.ts +1 -1
  196. package/src/input/commands/skills-runtime.ts +1 -1
  197. package/src/input/commands/subscription-runtime.ts +1 -1
  198. package/src/input/commands/tasks-runtime.ts +1 -1
  199. package/src/input/commands/teamwork-runtime.ts +1 -1
  200. package/src/input/commands/worktree-runtime.ts +1 -1
  201. package/src/input/handler-command-route.ts +1 -1
  202. package/src/input/handler-content-actions.ts +3 -3
  203. package/src/input/handler-feed-routes.ts +2 -2
  204. package/src/input/handler-feed.ts +1 -1
  205. package/src/input/handler-shortcuts.ts +1 -1
  206. package/src/input/handler.ts +1 -1
  207. package/src/input/keybindings.ts +5 -0
  208. package/src/input/model-picker.ts +2 -2
  209. package/src/input/profile-picker-modal.ts +1 -1
  210. package/src/input/session-picker-modal.ts +1 -1
  211. package/src/input/settings-modal.ts +4 -4
  212. package/src/integrations/index.ts +1 -1
  213. package/src/integrations/notifier.ts +1 -1
  214. package/src/integrations/webhooks.ts +1 -177
  215. package/src/knowledge/consolidation.ts +2 -2
  216. package/src/knowledge/graphql.ts +1 -1
  217. package/src/knowledge/index.ts +5 -5
  218. package/src/knowledge/ingest-compile.ts +3 -3
  219. package/src/knowledge/ingest-context.ts +1 -1
  220. package/src/knowledge/ingest-inputs.ts +4 -4
  221. package/src/knowledge/ingest.ts +1 -20
  222. package/src/knowledge/internal.ts +1 -1
  223. package/src/knowledge/knowledge-api.ts +7 -7
  224. package/src/knowledge/lint.ts +3 -3
  225. package/src/knowledge/memory-sync.ts +2 -2
  226. package/src/knowledge/packet.ts +3 -3
  227. package/src/knowledge/scheduling.ts +2 -2
  228. package/src/knowledge/service.ts +10 -10
  229. package/src/main.ts +11 -10
  230. package/src/mcp/index.ts +4 -4
  231. package/src/mcp/mcp-api.ts +1 -1
  232. package/src/mcp/registry.ts +1 -508
  233. package/src/media/builtin-image-understanding.ts +2 -2
  234. package/src/media/builtin-providers.ts +2 -2
  235. package/src/media/index.ts +1 -1
  236. package/src/multimodal/index.ts +1 -1
  237. package/src/multimodal/service.ts +2 -2
  238. package/src/panels/agent-inspector-panel.ts +2 -2
  239. package/src/panels/agent-logs-panel.ts +3 -3
  240. package/src/panels/approval-panel.ts +2 -2
  241. package/src/panels/builtin/operations.ts +3 -1
  242. package/src/panels/builtin/shared.ts +14 -14
  243. package/src/panels/context-visualizer-panel.ts +2 -2
  244. package/src/panels/cost-tracker-panel.ts +2 -2
  245. package/src/panels/debug-panel.ts +3 -3
  246. package/src/panels/git-panel.ts +1 -1
  247. package/src/panels/hooks-panel.ts +4 -4
  248. package/src/panels/knowledge-panel.ts +1 -1
  249. package/src/panels/marketplace-panel.ts +1 -1
  250. package/src/panels/mcp-panel.ts +1 -1
  251. package/src/panels/memory-panel.ts +2 -2
  252. package/src/panels/ops-control-panel.ts +2 -2
  253. package/src/panels/ops-strategy-panel.ts +2 -2
  254. package/src/panels/plugins-panel.ts +1 -1
  255. package/src/panels/policy-panel.ts +1 -1
  256. package/src/panels/provider-health-panel.ts +3 -3
  257. package/src/panels/provider-stats-panel.ts +2 -2
  258. package/src/panels/sandbox-panel.ts +3 -3
  259. package/src/panels/schedule-panel.ts +1 -1
  260. package/src/panels/settings-sync-panel.ts +1 -1
  261. package/src/panels/skills-panel.ts +28 -1
  262. package/src/panels/system-messages-panel.ts +1 -1
  263. package/src/panels/tasks-panel.ts +1 -1
  264. package/src/panels/thinking-panel.ts +2 -2
  265. package/src/panels/token-budget-panel.ts +1 -1
  266. package/src/panels/tool-inspector-panel.ts +2 -2
  267. package/src/panels/worktree-panel.ts +1 -1
  268. package/src/panels/wrfc-panel.ts +4 -4
  269. package/src/permissions/briefs/build.ts +1 -1
  270. package/src/permissions/manager.ts +1 -356
  271. package/src/permissions/prompt.ts +1 -1
  272. package/src/plugins/api.ts +9 -9
  273. package/src/plugins/loader.ts +8 -8
  274. package/src/plugins/manager.ts +5 -5
  275. package/src/providers/amazon-bedrock-mantle.ts +1 -1
  276. package/src/providers/amazon-bedrock.ts +1 -1
  277. package/src/providers/anthropic-compat.ts +4 -4
  278. package/src/providers/anthropic-sdk-provider.ts +5 -5
  279. package/src/providers/anthropic-vertex.ts +1 -1
  280. package/src/providers/anthropic.ts +4 -4
  281. package/src/providers/auto-register.ts +6 -6
  282. package/src/providers/builtin-catalog.ts +2 -2
  283. package/src/providers/builtin-registry.ts +15 -15
  284. package/src/providers/cache-planner.ts +2 -2
  285. package/src/providers/capabilities.ts +1 -601
  286. package/src/providers/custom-loader.ts +6 -6
  287. package/src/providers/discovered-compat.ts +7 -18
  288. package/src/providers/discovered-factory.ts +7 -7
  289. package/src/providers/discovered-traits.ts +1 -1
  290. package/src/providers/gemini.ts +4 -4
  291. package/src/providers/github-copilot.ts +4 -4
  292. package/src/providers/index.ts +1 -47
  293. package/src/providers/interface.ts +1 -1
  294. package/src/providers/llama-cpp.ts +4 -4
  295. package/src/providers/lm-studio-helpers.ts +1 -1
  296. package/src/providers/lm-studio.ts +4 -4
  297. package/src/providers/model-catalog-cache.ts +1 -1
  298. package/src/providers/model-catalog-notifications.ts +1 -1
  299. package/src/providers/model-catalog-synthetic.ts +2 -2
  300. package/src/providers/model-catalog.ts +7 -7
  301. package/src/providers/model-limits.ts +1 -280
  302. package/src/providers/ollama.ts +4 -4
  303. package/src/providers/openai-codex.ts +2 -2
  304. package/src/providers/openai-compat.ts +4 -4
  305. package/src/providers/openai.ts +3 -3
  306. package/src/providers/optimizer.ts +1 -381
  307. package/src/providers/provider-api.ts +1 -553
  308. package/src/providers/registry-helpers.ts +1 -1
  309. package/src/providers/registry-models.ts +2 -2
  310. package/src/providers/registry-types.ts +5 -5
  311. package/src/providers/registry.ts +1 -729
  312. package/src/providers/runtime-metadata.ts +1 -1
  313. package/src/providers/runtime-snapshot.ts +3 -3
  314. package/src/providers/synthetic.ts +3 -3
  315. package/src/providers/tier-prompts.ts +1 -1
  316. package/src/providers/tool-formats.ts +1 -1
  317. package/src/renderer/agent-detail-modal.ts +2 -2
  318. package/src/renderer/block-actions.ts +1 -1
  319. package/src/renderer/context-inspector.ts +1 -1
  320. package/src/renderer/conversation-layout.ts +1 -1
  321. package/src/renderer/conversation-overlays.ts +1 -1
  322. package/src/renderer/git-status.ts +1 -1
  323. package/src/renderer/live-tail-modal.ts +1 -1
  324. package/src/renderer/process-modal.ts +2 -2
  325. package/src/runtime/bootstrap-background.ts +18 -8
  326. package/src/runtime/bootstrap-command-context.ts +24 -24
  327. package/src/runtime/bootstrap-command-parts.ts +24 -24
  328. package/src/runtime/bootstrap-core.ts +12 -10
  329. package/src/runtime/bootstrap-helpers.ts +2 -2
  330. package/src/runtime/bootstrap-hook-bridge.ts +9 -9
  331. package/src/runtime/bootstrap-runtime-events.ts +4 -4
  332. package/src/runtime/bootstrap-services.ts +4 -4
  333. package/src/runtime/bootstrap-shell.ts +11 -11
  334. package/src/runtime/bootstrap.ts +28 -10
  335. package/src/runtime/compaction/index.ts +1 -90
  336. package/src/runtime/compaction/lifecycle.ts +1 -167
  337. package/src/runtime/compaction/manager.ts +11 -11
  338. package/src/runtime/compaction/quality-score.ts +1 -279
  339. package/src/runtime/compaction/resume-repair.ts +1 -183
  340. package/src/runtime/compaction/strategies/autocompact.ts +1 -65
  341. package/src/runtime/compaction/strategies/boundary-commit.ts +1 -106
  342. package/src/runtime/compaction/strategies/collapse.ts +1 -90
  343. package/src/runtime/compaction/strategies/index.ts +1 -23
  344. package/src/runtime/compaction/strategies/microcompact.ts +1 -74
  345. package/src/runtime/compaction/strategies/reactive.ts +1 -89
  346. package/src/runtime/compaction/types.ts +1 -221
  347. package/src/runtime/context.ts +10 -10
  348. package/src/runtime/diagnostics/actions.ts +1 -1
  349. package/src/runtime/diagnostics/index.ts +5 -5
  350. package/src/runtime/diagnostics/panels/agents.ts +2 -2
  351. package/src/runtime/diagnostics/panels/events.ts +2 -2
  352. package/src/runtime/diagnostics/panels/health.ts +2 -2
  353. package/src/runtime/diagnostics/panels/ops.ts +2 -2
  354. package/src/runtime/diagnostics/panels/policy.ts +2 -2
  355. package/src/runtime/diagnostics/panels/tasks.ts +2 -2
  356. package/src/runtime/diagnostics/panels/tool-calls.ts +2 -2
  357. package/src/runtime/diagnostics/provider.ts +1 -1
  358. package/src/runtime/ecosystem/recommendations.ts +1 -1
  359. package/src/runtime/emitters/agents.ts +2 -2
  360. package/src/runtime/emitters/automation.ts +2 -2
  361. package/src/runtime/emitters/communication.ts +2 -2
  362. package/src/runtime/emitters/compaction.ts +2 -2
  363. package/src/runtime/emitters/control-plane.ts +2 -2
  364. package/src/runtime/emitters/deliveries.ts +2 -2
  365. package/src/runtime/emitters/forensics.ts +2 -2
  366. package/src/runtime/emitters/index.ts +27 -27
  367. package/src/runtime/emitters/knowledge.ts +2 -2
  368. package/src/runtime/emitters/mcp.ts +2 -2
  369. package/src/runtime/emitters/ops.ts +2 -2
  370. package/src/runtime/emitters/orchestration.ts +2 -2
  371. package/src/runtime/emitters/permissions.ts +2 -2
  372. package/src/runtime/emitters/planner.ts +2 -2
  373. package/src/runtime/emitters/plugins.ts +2 -2
  374. package/src/runtime/emitters/providers.ts +2 -2
  375. package/src/runtime/emitters/routes.ts +2 -2
  376. package/src/runtime/emitters/security.ts +2 -2
  377. package/src/runtime/emitters/session.ts +2 -2
  378. package/src/runtime/emitters/surfaces.ts +2 -2
  379. package/src/runtime/emitters/tasks.ts +2 -2
  380. package/src/runtime/emitters/tools.ts +2 -2
  381. package/src/runtime/emitters/transport.ts +2 -2
  382. package/src/runtime/emitters/turn.ts +3 -3
  383. package/src/runtime/emitters/ui.ts +2 -2
  384. package/src/runtime/emitters/watchers.ts +2 -2
  385. package/src/runtime/emitters/workflows.ts +3 -3
  386. package/src/runtime/eval/index.ts +3 -3
  387. package/src/runtime/eval/runner.ts +1 -1
  388. package/src/runtime/eval/suites.ts +1 -1
  389. package/src/runtime/events/domain-map.ts +2 -2
  390. package/src/runtime/events/index.ts +1 -194
  391. package/src/runtime/events/turn.ts +1 -60
  392. package/src/runtime/events/workflows.ts +1 -17
  393. package/src/runtime/forensics/collector.ts +4 -4
  394. package/src/runtime/forensics/index.ts +1 -1
  395. package/src/runtime/foundation-clients.ts +14 -14
  396. package/src/runtime/foundation-services.ts +8 -8
  397. package/src/runtime/guidance.ts +3 -3
  398. package/src/runtime/health/effect-handlers.ts +3 -3
  399. package/src/runtime/health/index.ts +4 -4
  400. package/src/runtime/health/wiring.ts +2 -2
  401. package/src/runtime/index.ts +29 -29
  402. package/src/runtime/integration/helpers.ts +12 -12
  403. package/src/runtime/lifecycle.ts +4 -4
  404. package/src/runtime/mcp/index.ts +3 -3
  405. package/src/runtime/mcp/manager.ts +1 -1
  406. package/src/runtime/network/inbound.ts +2 -2
  407. package/src/runtime/network/index.ts +5 -5
  408. package/src/runtime/network/outbound.ts +2 -2
  409. package/src/runtime/network/shared.ts +1 -1
  410. package/src/runtime/operator-client.ts +9 -9
  411. package/src/runtime/ops/control-plane.ts +2 -2
  412. package/src/runtime/ops/index.ts +3 -3
  413. package/src/runtime/ops/playbooks/index.ts +2 -2
  414. package/src/runtime/ops/playbooks/session-unrecoverable.ts +2 -2
  415. package/src/runtime/ops/playbooks/stuck-turn.ts +1 -1
  416. package/src/runtime/ops/runtime-context.ts +1 -1
  417. package/src/runtime/orchestration/spawn-policy.ts +1 -1
  418. package/src/runtime/peer-client.ts +3 -3
  419. package/src/runtime/perf/index.ts +1 -1
  420. package/src/runtime/perf/slo-collector.ts +1 -1
  421. package/src/runtime/permissions/index.ts +5 -5
  422. package/src/runtime/permissions/policy-runtime.ts +1 -175
  423. package/src/runtime/permissions/rule-suggestions.ts +1 -1
  424. package/src/runtime/plugins/hot-reload.ts +4 -4
  425. package/src/runtime/plugins/index.ts +13 -13
  426. package/src/runtime/plugins/lifecycle.ts +1 -1
  427. package/src/runtime/plugins/manager.ts +10 -10
  428. package/src/runtime/plugins/manifest.ts +2 -2
  429. package/src/runtime/plugins/quarantine.ts +2 -2
  430. package/src/runtime/plugins/trust.ts +2 -2
  431. package/src/runtime/plugins/types.ts +1 -1
  432. package/src/runtime/provider-accounts/registry.ts +2 -2
  433. package/src/runtime/remote/distributed-runtime-contract-schemas.ts +3 -3
  434. package/src/runtime/remote/index.ts +3 -3
  435. package/src/runtime/remote/runner-registry.ts +2 -2
  436. package/src/runtime/remote/supervisor.ts +1 -1
  437. package/src/runtime/runtime-hook-api.ts +1 -1
  438. package/src/runtime/runtime-knowledge-api.ts +1 -1
  439. package/src/runtime/runtime-mcp-api.ts +1 -1
  440. package/src/runtime/runtime-ops-api.ts +2 -2
  441. package/src/runtime/runtime-provider-api.ts +1 -1
  442. package/src/runtime/services.ts +42 -35
  443. package/src/runtime/session-maintenance.ts +1 -1
  444. package/src/runtime/session-persistence.ts +2 -2
  445. package/src/runtime/session-return-context.ts +3 -3
  446. package/src/runtime/settings/control-plane-store.ts +1 -1
  447. package/src/runtime/settings/control-plane.ts +2 -2
  448. package/src/runtime/shell-command-extensions.ts +7 -7
  449. package/src/runtime/shell-command-ops.ts +6 -6
  450. package/src/runtime/shell-command-platform.ts +1 -1
  451. package/src/runtime/shell-command-services.ts +18 -18
  452. package/src/runtime/shell-command-workspace.ts +2 -2
  453. package/src/runtime/store/domains/conversation.ts +1 -1
  454. package/src/runtime/store/domains/index.ts +4 -4
  455. package/src/runtime/store/domains/permissions.ts +1 -1
  456. package/src/runtime/store/helpers/reducers/conversation.ts +3 -3
  457. package/src/runtime/store/helpers/reducers/lifecycle.ts +3 -3
  458. package/src/runtime/store/helpers/reducers/shared.ts +2 -2
  459. package/src/runtime/store/helpers/reducers/sync.ts +1 -1
  460. package/src/runtime/store/helpers/reducers.ts +4 -4
  461. package/src/runtime/store/index.ts +4 -4
  462. package/src/runtime/store/selectors/index.ts +2 -2
  463. package/src/runtime/store/state.ts +4 -4
  464. package/src/runtime/tasks/adapters/acp-adapter.ts +1 -1
  465. package/src/runtime/tasks/adapters/index.ts +6 -6
  466. package/src/runtime/tasks/index.ts +3 -3
  467. package/src/runtime/tasks/manager.ts +3 -3
  468. package/src/runtime/telemetry/api-helpers.ts +2 -2
  469. package/src/runtime/telemetry/api.ts +2 -2
  470. package/src/runtime/telemetry/index.ts +5 -5
  471. package/src/runtime/telemetry/instrumentation/domain-bridge-agent-session.ts +1 -1
  472. package/src/runtime/telemetry/instrumentation/domain-bridge-plugin-mcp.ts +1 -1
  473. package/src/runtime/telemetry/instrumentation/domain-bridge-shared.ts +1 -1
  474. package/src/runtime/telemetry/instrumentation/domain-bridge-transport-task.ts +1 -1
  475. package/src/runtime/telemetry/instrumentation/domain-bridge.ts +5 -5
  476. package/src/runtime/telemetry/instrumentation/index.ts +3 -3
  477. package/src/runtime/tools/context.ts +3 -3
  478. package/src/runtime/tools/index.ts +4 -4
  479. package/src/runtime/tools/phased-executor.ts +3 -3
  480. package/src/runtime/tools/phases/budget.ts +1 -1
  481. package/src/runtime/tools/phases/execute.ts +1 -1
  482. package/src/runtime/tools/phases/index.ts +7 -7
  483. package/src/runtime/tools/phases/map-output.ts +1 -1
  484. package/src/runtime/tools/phases/permission.ts +2 -2
  485. package/src/runtime/tools/phases/posthook.ts +1 -1
  486. package/src/runtime/tools/phases/prehook.ts +1 -1
  487. package/src/runtime/tools/phases/validate.ts +1 -1
  488. package/src/runtime/transports/direct.ts +4 -4
  489. package/src/runtime/transports/http-helpers.ts +3 -3
  490. package/src/runtime/transports/http-types.ts +6 -6
  491. package/src/runtime/transports/http.ts +8 -8
  492. package/src/runtime/transports/realtime.ts +4 -4
  493. package/src/runtime/transports/remote-events.ts +1 -1
  494. package/src/runtime/transports/shared.ts +2 -2
  495. package/src/runtime/transports/ui-runtime-events.ts +2 -2
  496. package/src/runtime/ui/index.ts +7 -7
  497. package/src/runtime/ui/model-picker/data-provider.ts +4 -4
  498. package/src/runtime/ui/model-picker/health-enrichment.ts +3 -3
  499. package/src/runtime/ui/model-picker/index.ts +8 -8
  500. package/src/runtime/ui/provider-health/data-provider.ts +2 -2
  501. package/src/runtime/ui/provider-health/fallback-visualizer.ts +1 -1
  502. package/src/runtime/ui/provider-health/index.ts +5 -5
  503. package/src/runtime/ui-events.ts +1 -1
  504. package/src/runtime/ui-read-models-core.ts +2 -2
  505. package/src/runtime/ui-read-models-observability-maintenance.ts +4 -4
  506. package/src/runtime/ui-read-models-observability-options.ts +1 -1
  507. package/src/runtime/ui-read-models-observability-remote.ts +2 -2
  508. package/src/runtime/ui-read-models-observability-security.ts +3 -3
  509. package/src/runtime/ui-read-models-observability-system.ts +6 -6
  510. package/src/runtime/ui-read-models-observability.ts +10 -10
  511. package/src/runtime/ui-read-models-operations.ts +2 -2
  512. package/src/runtime/ui-read-models.ts +7 -7
  513. package/src/runtime/ui-service-queries.ts +2 -2
  514. package/src/runtime/ui-services.ts +7 -7
  515. package/src/runtime/worktree/registry.ts +1 -1
  516. package/src/scripts/process-messages.ts +1 -1
  517. package/src/sessions/manager.ts +9 -383
  518. package/src/shell/blocking-input.ts +3 -3
  519. package/src/shell/ui-openers.ts +3 -3
  520. package/src/state/file-watcher.ts +1 -1
  521. package/src/state/index.ts +10 -10
  522. package/src/state/knowledge-injection.ts +2 -2
  523. package/src/state/memory-embedding-http.ts +2 -2
  524. package/src/state/memory-embeddings.ts +1 -1
  525. package/src/state/memory-ingest.ts +3 -3
  526. package/src/state/memory-registry.ts +3 -3
  527. package/src/state/memory-store-helpers.ts +1 -1
  528. package/src/state/memory-store.ts +4 -4
  529. package/src/state/memory-vector-store.ts +3 -3
  530. package/src/tools/agent/index.ts +7 -7
  531. package/src/tools/agent/manager.ts +8 -8
  532. package/src/tools/analyze/git-modes.ts +2 -2
  533. package/src/tools/analyze/index.ts +2 -2
  534. package/src/tools/channel/agent-tools.ts +1 -1
  535. package/src/tools/channel/index.ts +2 -2
  536. package/src/tools/control/index.ts +1 -1
  537. package/src/tools/edit/core.ts +3 -3
  538. package/src/tools/edit/index.ts +2 -2
  539. package/src/tools/edit/phased.ts +2 -2
  540. package/src/tools/fetch/index.ts +2 -2
  541. package/src/tools/fetch/phased.ts +1 -1
  542. package/src/tools/index.ts +28 -28
  543. package/src/tools/mcp/index.ts +1 -1
  544. package/src/tools/remote-trigger/index.ts +1 -1
  545. package/src/tools/shared/auto-heal.ts +2 -2
  546. package/src/tools/state/index.ts +1 -1
  547. package/src/tools/web-search/index.ts +1 -1
  548. package/src/tools/write/index.ts +3 -3
  549. package/src/tools/write/phased.ts +1 -1
  550. package/src/version.ts +1 -1
  551. package/src/watchers/index.ts +2 -2
  552. package/src/watchers/registry.ts +2 -2
  553. package/src/web-search/index.ts +10 -10
  554. package/src/web-search/provider-registry.ts +8 -8
  555. package/src/web-search/providers/brave.ts +1 -1
  556. package/src/web-search/providers/duckduckgo.ts +1 -1
  557. package/src/web-search/providers/exa.ts +1 -1
  558. package/src/web-search/providers/firecrawl.ts +1 -1
  559. package/src/web-search/providers/perplexity.ts +1 -1
  560. package/src/web-search/providers/searxng.ts +1 -1
  561. package/src/web-search/providers/shared.ts +1 -1
  562. package/src/web-search/providers/tavily.ts +1 -1
  563. package/src/web-search/service.ts +2 -2
  564. package/docs/README.md +0 -32
  565. package/scripts/postinstall.mjs +0 -203
  566. package/src/runtime/ecosystem/catalog.ts +0 -606
  567. package/src/runtime/sandbox/backend.ts +0 -291
  568. package/src/runtime/sandbox/manager.ts +0 -364
  569. package/src/runtime/sandbox/provisioning.ts +0 -422
  570. package/src/runtime/sandbox/session-registry.ts +0 -289
  571. package/src/tools/repl/index.ts +0 -318
@@ -1,183 +1 @@
1
- /**
2
- * resume-repair.ts
3
- *
4
- * Session resume repair pipeline for the compaction engine.
5
- *
6
- * When a session is resumed from a saved boundary commit, this pipeline
7
- * validates and repairs the compacted message list before it is handed
8
- * to the active conversation context. Repairs are non-destructive and
9
- * append-only — they never discard information without recording the
10
- * action in the repair log.
11
- *
12
- * Repair checks (in order):
13
- * 1. Empty message list → inject an empty-state handoff
14
- * 2. Missing user message at position 0 → prepend synthetic user message
15
- * 3. Context overflow (tokens > limit) → truncate oldest messages
16
- * 4. Corrupt content blocks → strip non-serialisable blocks
17
- */
18
-
19
- import type { ProviderMessage } from '../../providers/interface.ts';
20
- import { estimateTokens } from '../../core/compaction-types.ts';
21
- import type { BoundaryCommit } from './types.ts';
22
- import type { RepairAction, ResumeRepairResult } from './types.ts';
23
-
24
- // ---------------------------------------------------------------------------
25
- // Constants
26
- // ---------------------------------------------------------------------------
27
-
28
- /**
29
- * Maximum tokens allowed in a resumed session before overflow truncation.
30
- * Set conservatively at 80% of a typical 100K context window.
31
- */
32
- const RESUME_MAX_TOKENS = 80_000;
33
-
34
- // ---------------------------------------------------------------------------
35
- // Public API
36
- // ---------------------------------------------------------------------------
37
-
38
- /**
39
- * Options for the resume repair pipeline.
40
- */
41
- export interface ResumeRepairOptions {
42
- /** The boundary commit being resumed. */
43
- commit: BoundaryCommit;
44
- /** Maximum tokens allowed in the resumed session (default: RESUME_MAX_TOKENS). */
45
- maxTokens?: number;
46
- }
47
-
48
- /**
49
- * Runs the session resume repair pipeline on a boundary commit.
50
- *
51
- * Each check is run in sequence. If a repair is applied, the message list
52
- * is updated in place for the next check. All repairs are recorded with
53
- * their severity and description.
54
- *
55
- * @param options - Repair options.
56
- * @returns A ResumeRepairResult with the (possibly repaired) messages and repair log.
57
- */
58
- export function runResumeRepair(options: ResumeRepairOptions): ResumeRepairResult {
59
- const { commit, maxTokens = RESUME_MAX_TOKENS } = options;
60
- const { sessionId } = commit;
61
- const actions: RepairAction[] = [];
62
-
63
- // Work on a mutable copy
64
- let messages: ProviderMessage[] = [...commit.messages] as ProviderMessage[];
65
-
66
- // ── Check 1: Empty message list ───────────────────────────────────────────
67
- if (messages.length === 0) {
68
- actions.push({
69
- kind: 'inject_empty_state_handoff',
70
- description: 'Message list was empty; injected an empty-state handoff message.',
71
- severity: 'warn',
72
- });
73
- messages = [
74
- {
75
- role: 'user',
76
- content: [
77
- {
78
- type: 'text',
79
- text: [
80
- '[Session Resume — Empty State]',
81
- `Session ${sessionId} was resumed with no prior messages.`,
82
- 'Starting fresh with no context.',
83
- ].join('\n'),
84
- },
85
- ],
86
- },
87
- ];
88
- }
89
-
90
- // ── Check 2: First message must be from 'user' ────────────────────────────
91
- if (messages[0].role !== 'user') {
92
- actions.push({
93
- kind: 'prepend_user_message',
94
- description: `First message had role '${messages[0].role}'; prepended synthetic user message.`,
95
- severity: 'warn',
96
- meta: { originalFirstRole: messages[0].role },
97
- });
98
- const synthetic: ProviderMessage = {
99
- role: 'user',
100
- content: [
101
- {
102
- type: 'text',
103
- text: '[Session Resume] Continuing from a prior compacted session.',
104
- },
105
- ],
106
- };
107
- messages = [synthetic, ...messages];
108
- }
109
-
110
- // ── Check 3: Overflow truncation ─────────────────────────────────────────
111
- let estimate = estimateTokens(JSON.stringify(messages));
112
- if (estimate > maxTokens) {
113
- const originalCount = messages.length;
114
- while (messages.length > 1 && estimate > maxTokens) {
115
- // Drop from position 1 (preserve the handoff at [0])
116
- messages = [messages[0], ...messages.slice(2)];
117
- estimate = estimateTokens(JSON.stringify(messages));
118
- }
119
- const dropped = originalCount - messages.length;
120
- actions.push({
121
- kind: 'truncate_overflow',
122
- description: `Token estimate exceeded limit (${estimate}/${maxTokens}); dropped ${dropped} message(s).`,
123
- severity: 'warn',
124
- meta: { originalCount, droppedCount: dropped, tokenEstimate: estimate, maxTokens },
125
- });
126
- }
127
-
128
- // ── Check 4: Strip non-serialisable content blocks ───────────────────────
129
- const strippedCount = stripNonSerializableBlocks(messages);
130
- if (strippedCount > 0) {
131
- actions.push({
132
- kind: 'strip_non_serializable',
133
- description: `Stripped ${strippedCount} non-serialisable content block(s) from resumed messages.`,
134
- severity: 'warn',
135
- meta: { strippedCount },
136
- });
137
- }
138
-
139
- const repaired = actions.length > 0;
140
- const hasFatal = actions.some((a) => a.severity === 'error');
141
-
142
- return {
143
- sessionId,
144
- repaired,
145
- actions,
146
- messages,
147
- safeToResume: !hasFatal,
148
- failReason: hasFatal
149
- ? actions.find((a) => a.severity === 'error')?.description
150
- : undefined,
151
- };
152
- }
153
-
154
- // ---------------------------------------------------------------------------
155
- // Repair helpers
156
- // ---------------------------------------------------------------------------
157
-
158
- /**
159
- * Strips content blocks that cannot be safely serialised to JSON.
160
- *
161
- * Returns the count of blocks stripped.
162
- */
163
- function stripNonSerializableBlocks(messages: ProviderMessage[]): number {
164
- let stripped = 0;
165
- for (const msg of messages) {
166
- // Check all roles for array content with non-serializable blocks
167
- if (!Array.isArray(msg.content)) continue;
168
- const before = msg.content.length;
169
- const filtered = msg.content.filter((block) => {
170
- try {
171
- JSON.stringify(block);
172
- return true;
173
- } catch {
174
- // Non-serialisable block — strip it
175
- return false;
176
- }
177
- });
178
- // Re-assign through a type-compatible user message mutation
179
- (msg as { content: typeof filtered }).content = filtered;
180
- stripped += before - filtered.length;
181
- }
182
- return stripped;
183
- }
1
+ export * from '@pellux/goodvibes-sdk/platform/runtime/compaction/resume-repair';
@@ -1,65 +1 @@
1
- /**
2
- * strategies/autocompact.ts
3
- *
4
- * Auto-compaction strategy for the session compaction pipeline.
5
- *
6
- * This strategy is used when token pressure is in the 50–85% range. It runs
7
- * the full semantic compaction pipeline including section-based extraction,
8
- * lineage tracking, and post-compaction validation.
9
- */
10
-
11
- import type { ProviderMessage } from '../../../providers/interface.ts';
12
- import { estimateTokens } from '../../../core/compaction-types.ts';
13
- import type { StrategyInput, StrategyOutput } from '../types.ts';
14
-
15
- /**
16
- * Applies automatic threshold-based compaction.
17
- *
18
- * This uses the standard compaction pipeline. If a registry-backed context
19
- * summary is unavailable, it falls back to a structural compaction that keeps
20
- * a wider recent-message window than microcompact.
21
- *
22
- * @param input - Strategy input.
23
- * @returns Strategy output.
24
- */
25
- export function runAutocompact(input: StrategyInput): StrategyOutput {
26
- const startMs = Date.now();
27
- const { messages, tokensBefore, strategy } = input;
28
- const warnings: string[] = [];
29
-
30
- // Keep the most recent 60% of messages by count, drop the oldest 40%
31
- const keepCount = Math.max(1, Math.ceil(messages.length * 0.6));
32
- const dropped = messages.length - keepCount;
33
- const kept = messages.slice(-keepCount) as ProviderMessage[];
34
-
35
- const handoff: ProviderMessage = {
36
- role: 'user',
37
- content: [
38
- {
39
- type: 'text',
40
- text: [
41
- '[Session Auto-Compaction]',
42
- `${dropped} earlier message(s) compacted to reduce context size.`,
43
- `Retaining the ${keepCount} most recent messages.`,
44
- 'Context window pressure was above threshold — automatic compaction applied.',
45
- ].join('\n'),
46
- },
47
- ],
48
- };
49
-
50
- const compacted: ProviderMessage[] = [handoff, ...kept];
51
- const tokensAfter = estimateTokens(JSON.stringify(compacted));
52
-
53
- if (dropped === 0) {
54
- warnings.push('autocompact: no messages were dropped; context may still be near limit');
55
- }
56
-
57
- return {
58
- messages: compacted,
59
- tokensAfter,
60
- summary: `Auto-compaction: dropped ${dropped} messages (~${Math.round((1 - tokensAfter / tokensBefore) * 100)}% reduction).`,
61
- strategy,
62
- durationMs: Date.now() - startMs,
63
- warnings,
64
- };
65
- }
1
+ export * from '@pellux/goodvibes-sdk/platform/runtime/compaction/strategies/autocompact';
@@ -1,106 +1 @@
1
- /**
2
- * strategies/boundary-commit.ts
3
- *
4
- * Boundary commit — persists a compacted snapshot as a named checkpoint with
5
- * full lineage tracking for replay-safe session resumption.
6
- *
7
- * A boundary commit is always created after a successful compaction strategy
8
- * run (microcompact, collapse, autocompact, or reactive). It forms the
9
- * persistent anchor point that the resume-repair pipeline uses to restore
10
- * a session from a corrupted or partial state.
11
- *
12
- * Lineage is append-only: each commit appends its own checkpointId to the
13
- * parent's lineage array. This means any checkpoint can be sliced from any
14
- * earlier commit without re-ordering.
15
- */
16
-
17
- import type { BoundaryCommit } from '../types.ts';
18
- import type { StrategyOutput } from '../types.ts';
19
-
20
- /** Simple prefix for generated checkpoint IDs. */
21
- const CHECKPOINT_PREFIX = 'cpt';
22
-
23
- /**
24
- * Generates a checkpoint ID using the current timestamp and a random suffix.
25
- * Format: `cpt_<timestamp>_<random>`
26
- */
27
- function generateCheckpointId(): string {
28
- const ts = Date.now().toString(36);
29
- const rand = Math.random().toString(36).slice(2, 8);
30
- return `${CHECKPOINT_PREFIX}_${ts}_${rand}`;
31
- }
32
-
33
- /**
34
- * Options for creating a boundary commit.
35
- */
36
- export interface BoundaryCommitOptions {
37
- /** Session ID this commit belongs to. */
38
- sessionId: string;
39
- /** The compaction strategy output to commit. */
40
- strategyOutput: StrategyOutput;
41
- /** Parent boundary commit, or null for the first commit. */
42
- parent: BoundaryCommit | null;
43
- /** Estimated token count before compaction (for audit). */
44
- tokensBefore: number;
45
- }
46
-
47
- /**
48
- * Creates a new BoundaryCommit from a strategy output.
49
- *
50
- * The new commit's lineage is derived by appending its own checkpointId
51
- * to the parent's lineage (or starting a fresh lineage if `parent` is null).
52
- *
53
- * @param options - Commit options.
54
- * @returns A fully populated BoundaryCommit.
55
- */
56
- export function createBoundaryCommit(
57
- options: BoundaryCommitOptions,
58
- ): BoundaryCommit {
59
- const { sessionId, strategyOutput, parent, tokensBefore } = options;
60
- const checkpointId = generateCheckpointId();
61
-
62
- const parentLineage: readonly string[] = parent?.lineage ?? [];
63
- const lineage: readonly string[] = [...parentLineage, checkpointId];
64
-
65
- return {
66
- checkpointId,
67
- sessionId,
68
- createdAt: Date.now(),
69
- strategy: strategyOutput.strategy,
70
- parentCheckpointId: parent?.checkpointId ?? null,
71
- lineage,
72
- messages: strategyOutput.messages,
73
- tokenCount: strategyOutput.tokensAfter,
74
- tokensBefore,
75
- summary: strategyOutput.summary,
76
- };
77
- }
78
-
79
- /**
80
- * Validates a BoundaryCommit for replay-safety.
81
- *
82
- * A commit is replay-safe if:
83
- * - It has at least one message
84
- * - Its lineage is ordered and contains its own checkpointId
85
- * - Its tokenCount is positive
86
- *
87
- * @returns An array of validation error strings (empty = valid).
88
- */
89
- export function validateBoundaryCommit(commit: BoundaryCommit): string[] {
90
- const errors: string[] = [];
91
-
92
- if (commit.messages.length === 0) {
93
- errors.push('boundary_commit: no messages in checkpoint');
94
- }
95
- if (commit.tokenCount <= 0) {
96
- errors.push('boundary_commit: tokenCount must be positive');
97
- }
98
- if (!commit.lineage.includes(commit.checkpointId)) {
99
- errors.push('boundary_commit: checkpointId not found in lineage (lineage is corrupted)');
100
- }
101
- if (commit.lineage.length === 0) {
102
- errors.push('boundary_commit: lineage is empty');
103
- }
104
-
105
- return errors;
106
- }
1
+ export * from '@pellux/goodvibes-sdk/platform/runtime/compaction/strategies/boundary-commit';
@@ -1,90 +1 @@
1
- /**
2
- * strategies/collapse.ts
3
- *
4
- * Collapse strategy — full context collapse into a single compacted summary
5
- * message. This is the most aggressive strategy, used when token pressure
6
- * exceeds 85% or when manually triggered.
7
- *
8
- * All messages are reduced to a structured handoff that preserves:
9
- * - The original task context (if known)
10
- * - Key decisions and outcomes
11
- * - The most recent user/assistant exchange
12
- */
13
-
14
- import type { ProviderMessage } from '../../../providers/interface.ts';
15
- import { estimateTokens } from '../../../core/compaction-types.ts';
16
- import type { StrategyInput, StrategyOutput } from '../types.ts';
17
-
18
- /**
19
- * Applies the collapse strategy: reduces all messages to a single structured
20
- * handoff message that preserves the essential session context.
21
- *
22
- * @param input - Strategy input containing messages and context.
23
- * @returns Strategy output with a single collapsed message.
24
- */
25
- export function runCollapse(input: StrategyInput): StrategyOutput {
26
- const startMs = Date.now();
27
- const { messages, tokensBefore, sessionId, strategy } = input;
28
- const warnings: string[] = [];
29
-
30
- // Extract the last user/assistant exchange to preserve conversational context
31
- const lastUserMsg = messages.findLast((m) => m.role === 'user');
32
- const lastAssistantMsg = messages.findLast((m) => m.role === 'assistant');
33
-
34
- const recentExchange: string[] = [];
35
- if (lastUserMsg) {
36
- const text = extractText(lastUserMsg);
37
- if (text) recentExchange.push(`User: ${text.slice(0, 500)}`);
38
- }
39
- if (lastAssistantMsg) {
40
- const text = extractText(lastAssistantMsg);
41
- if (text) recentExchange.push(`Assistant: ${text.slice(0, 500)}`);
42
- }
43
-
44
- const handoffLines: string[] = [
45
- `[Session Collapse — ${new Date().toISOString()}]`,
46
- `Session: ${sessionId}`,
47
- `${messages.length} message(s) collapsed to reduce context from ~${tokensBefore} tokens.`,
48
- '',
49
- '## Most Recent Exchange',
50
- recentExchange.length > 0
51
- ? recentExchange.join('\n')
52
- : '(no user/assistant exchange found)',
53
- '',
54
- '## Context Note',
55
- 'The full conversation history has been collapsed. Please resume from the above context.',
56
- ];
57
-
58
- const handoff: ProviderMessage = {
59
- role: 'user',
60
- content: [{ type: 'text', text: handoffLines.join('\n') }],
61
- };
62
-
63
- const compacted: ProviderMessage[] = [handoff];
64
- const tokensAfter = estimateTokens(JSON.stringify(compacted));
65
-
66
- if (tokensAfter >= tokensBefore) {
67
- warnings.push('collapse: compacted output is not smaller than input; possible data issue');
68
- }
69
-
70
- return {
71
- messages: compacted,
72
- tokensAfter,
73
- summary: `Collapse: ${messages.length} messages → 1 handoff message (~${tokensAfter} tokens).`,
74
- strategy,
75
- durationMs: Date.now() - startMs,
76
- warnings,
77
- };
78
- }
79
-
80
- /** Extracts plain text from a ProviderMessage. */
81
- function extractText(msg: ProviderMessage): string {
82
- if (typeof msg.content === 'string') return msg.content;
83
- if (Array.isArray(msg.content)) {
84
- return msg.content
85
- .filter((b): b is { type: 'text'; text: string } => b.type === 'text')
86
- .map((b) => b.text)
87
- .join(' ');
88
- }
89
- return '';
90
- }
1
+ export * from '@pellux/goodvibes-sdk/platform/runtime/compaction/strategies/collapse';
@@ -1,23 +1 @@
1
- /**
2
- * strategies/index.ts
3
- *
4
- * Barrel re-export for all compaction strategy modules.
5
- */
6
-
7
- export { runMicrocompact } from './microcompact.ts';
8
- export { runCollapse } from './collapse.ts';
9
- export { runAutocompact } from './autocompact.ts';
10
- export { runReactive } from './reactive.ts';
11
- export { createBoundaryCommit, validateBoundaryCommit } from './boundary-commit.ts';
12
- export type { BoundaryCommitOptions } from './boundary-commit.ts';
13
- export {
14
- computeQualityScore,
15
- describeScore,
16
- escalateStrategy,
17
- LOW_QUALITY_THRESHOLD,
18
- } from '../quality-score.ts';
19
- export type {
20
- CompactionQualityScore,
21
- CompactionQualityGrade,
22
- SemanticRetentionSignals,
23
- } from '../quality-score.ts';
1
+ export * from '@pellux/goodvibes-sdk/platform/runtime/compaction/strategies/index';
@@ -1,74 +1 @@
1
- /**
2
- * strategies/microcompact.ts
3
- *
4
- * Micro-compaction strategy — lightweight token reduction by summarising only
5
- * the oldest turns in the conversation, preserving recent messages intact.
6
- *
7
- * This is the lowest-latency strategy: no LLM call, purely structural.
8
- * It drops assistant/tool messages beyond a configurable "keep recent" window
9
- * and prepends a short handoff note summarising what was dropped.
10
- */
11
-
12
- import type { ProviderMessage } from '../../../providers/interface.ts';
13
- import { estimateTokens } from '../../../core/compaction-types.ts';
14
- import type { StrategyInput, StrategyOutput } from '../types.ts';
15
-
16
- /** Number of recent messages preserved without modification. */
17
- const DEFAULT_KEEP_RECENT = 20;
18
-
19
- /**
20
- * Applies micro-compaction: keep the last N messages, drop earlier ones,
21
- * and prepend a brief handoff note.
22
- *
23
- * @param input - Strategy input containing messages and context.
24
- * @returns Strategy output with compacted messages and token estimates.
25
- */
26
- export function runMicrocompact(input: StrategyInput): StrategyOutput {
27
- const startMs = Date.now();
28
- const { messages, tokensBefore, strategy } = input;
29
-
30
- const keepRecent = DEFAULT_KEEP_RECENT;
31
- const warnings: string[] = [];
32
-
33
- if (messages.length <= keepRecent) {
34
- // Nothing to compact — return messages unchanged
35
- warnings.push('microcompact: message count within keep window; no reduction applied');
36
- return {
37
- messages: [...messages] as ProviderMessage[],
38
- tokensAfter: tokensBefore,
39
- summary: 'No compaction applied — message count within keep window.',
40
- strategy,
41
- durationMs: Date.now() - startMs,
42
- warnings,
43
- };
44
- }
45
-
46
- const kept = messages.slice(-keepRecent) as ProviderMessage[];
47
- const droppedCount = messages.length - keepRecent;
48
-
49
- const handoff: ProviderMessage = {
50
- role: 'user',
51
- content: [
52
- {
53
- type: 'text',
54
- text: [
55
- `[Session Micro-Compaction]`,
56
- `${droppedCount} earlier message(s) were summarised to reduce context size.`,
57
- `The conversation continues from the most recent ${keepRecent} messages.`,
58
- ].join('\n'),
59
- },
60
- ],
61
- };
62
-
63
- const compacted: ProviderMessage[] = [handoff, ...kept];
64
- const tokensAfter = estimateTokens(JSON.stringify(compacted));
65
-
66
- return {
67
- messages: compacted,
68
- tokensAfter,
69
- summary: `Micro-compaction: dropped ${droppedCount} messages, kept ${keepRecent} recent.`,
70
- strategy,
71
- durationMs: Date.now() - startMs,
72
- warnings,
73
- };
74
- }
1
+ export * from '@pellux/goodvibes-sdk/platform/runtime/compaction/strategies/microcompact';
@@ -1,89 +1 @@
1
- /**
2
- * strategies/reactive.ts
3
- *
4
- * Reactive compaction strategy — emergency compaction triggered when the
5
- * provider returns a prompt-too-long error.
6
- *
7
- * This strategy must shrink the context aggressively and immediately, with
8
- * minimal latency. It uses a fixed-percentage drop that guarantees the
9
- * compacted context fits within a conservative safety margin (50% of the
10
- * context window).
11
- */
12
-
13
- import type { ProviderMessage } from '../../../providers/interface.ts';
14
- import { estimateTokens } from '../../../core/compaction-types.ts';
15
- import type { StrategyInput, StrategyOutput } from '../types.ts';
16
-
17
- /**
18
- * Target fraction of context window to fill after reactive compaction.
19
- * Keeping below 50% provides a comfortable buffer for the next turn.
20
- */
21
- const REACTIVE_TARGET_FRACTION = 0.45;
22
-
23
- /**
24
- * Applies reactive compaction to handle a prompt-too-long error.
25
- *
26
- * Drops messages from the oldest end until the estimated token count
27
- * falls below `contextWindow * REACTIVE_TARGET_FRACTION`, then prepends
28
- * a reactive handoff note.
29
- *
30
- * @param input - Strategy input. `input.meta.limit` may carry the provider's
31
- * reported token limit for logging purposes.
32
- * @returns Strategy output with a drastically reduced message list.
33
- */
34
- export function runReactive(input: StrategyInput): StrategyOutput {
35
- const startMs = Date.now();
36
- const { messages, tokensBefore, contextWindow, strategy, meta } = input;
37
- const warnings: string[] = [];
38
-
39
- const targetTokens = Math.floor(contextWindow * REACTIVE_TARGET_FRACTION);
40
- const providerLimit = typeof meta?.['limit'] === 'number' ? meta['limit'] : null;
41
-
42
- // Pre-compute per-message token estimates, then use a running sum (O(n) not O(n²))
43
- const perMessageTokens = (messages as ProviderMessage[]).map((m) =>
44
- estimateTokens(JSON.stringify(m)),
45
- );
46
- let totalTokens = perMessageTokens.reduce((a, b) => a + b, 0);
47
- let cutIndex = 0;
48
- while (cutIndex < messages.length - 1 && totalTokens > targetTokens) {
49
- totalTokens -= perMessageTokens[cutIndex];
50
- cutIndex++;
51
- }
52
- const remaining: ProviderMessage[] = (messages as ProviderMessage[]).slice(cutIndex);
53
-
54
- const droppedCount = messages.length - remaining.length;
55
-
56
- if (droppedCount === 0) {
57
- warnings.push('reactive: could not reduce context below target; context may still exceed limit');
58
- }
59
-
60
- const handoffLines: string[] = [
61
- '[Reactive Compaction — Context Overflow Recovery]',
62
- `Provider returned prompt-too-long${providerLimit !== null ? ` (limit: ${providerLimit} tokens)` : ''}.`,
63
- `${droppedCount} message(s) dropped to recover from overflow.`,
64
- `Estimated tokens before: ${tokensBefore}, target: ≤${targetTokens}.`,
65
- ];
66
-
67
- const handoff: ProviderMessage = {
68
- role: 'user',
69
- content: [{ type: 'text', text: handoffLines.join('\n') }],
70
- };
71
-
72
- const compacted: ProviderMessage[] = [handoff, ...remaining];
73
- const tokensAfter = estimateTokens(JSON.stringify(compacted));
74
-
75
- if (tokensAfter > targetTokens) {
76
- warnings.push(
77
- `reactive: final token estimate (${tokensAfter}) still exceeds target (${targetTokens})`,
78
- );
79
- }
80
-
81
- return {
82
- messages: compacted,
83
- tokensAfter,
84
- summary: `Reactive compaction: dropped ${droppedCount} messages to recover from overflow (~${tokensAfter} tokens remaining).`,
85
- strategy,
86
- durationMs: Date.now() - startMs,
87
- warnings,
88
- };
89
- }
1
+ export * from '@pellux/goodvibes-sdk/platform/runtime/compaction/strategies/reactive';