@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,388 +1,14 @@
1
- import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync, unlinkSync } from 'fs';
2
- import { join } from 'path';
3
- import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
4
- import type { AgentRecord } from '../tools/agent/index.ts';
5
- import type { SessionReturnContextSummary } from '../runtime/session-return-context.ts';
6
- import type { ConversationTitleSource } from '../core/conversation.ts';
7
- import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
1
+ export type {
2
+ SessionInfo,
3
+ SessionMeta,
4
+ } from '@pellux/goodvibes-sdk/platform/sessions/manager';
8
5
 
9
- /**
10
- * Metadata for a saved session (the first JSONL line).
11
- */
12
- export interface SessionMeta {
13
- title: string;
14
- model: string;
15
- provider: string;
16
- timestamp: number;
17
- titleSource?: ConversationTitleSource;
18
- returnContext?: SessionReturnContextSummary;
19
- }
20
-
21
- /**
22
- * Summary info for listing saved sessions.
23
- */
24
- export interface SessionInfo {
25
- name: string;
26
- title: string;
27
- model: string;
28
- provider: string;
29
- timestamp: number;
30
- messageCount: number;
31
- filePath: string;
32
- titleSource?: ConversationTitleSource;
33
- returnContext?: SessionReturnContextSummary;
34
- }
35
-
36
- /**
37
- * SessionManager - Handles saving and loading named conversation sessions
38
- * as JSONL files under .goodvibes/tui/sessions/.
39
- *
40
- * Format: each line is a JSON object.
41
- * Line 0: { type: 'meta', ...SessionMeta }
42
- * Line N: { type: 'message', ...message fields }
43
- */
44
- export class SessionManager {
45
- private sessionsDir: string;
6
+ import { SessionManager as SdkSessionManager } from '@pellux/goodvibes-sdk/platform/sessions/manager';
46
7
 
8
+ export class SessionManager extends SdkSessionManager {
47
9
  constructor(baseDir: string) {
48
- this.sessionsDir = join(baseDir, '.goodvibes', 'tui', 'sessions');
49
- }
50
-
51
- /**
52
- * Save conversation messages to a JSONL session file.
53
- * Overwrites if file already exists.
54
- * Returns the sanitized filename used (may differ from input name).
55
- */
56
- save(
57
- name: string,
58
- messages: object[],
59
- meta: SessionMeta,
60
- agentRecords?: AgentRecord[],
61
- ): { filePath: string; sanitizedName: string } {
62
- if (!name || !name.trim()) throw new Error('Session name cannot be empty');
63
- mkdirSync(this.sessionsDir, { recursive: true });
64
- const sanitizedName = this.sanitizeName(name);
65
- const filePath = join(this.sessionsDir, `${sanitizedName}.jsonl`);
66
-
67
- const lines: string[] = [];
68
-
69
- // First line: meta record
70
- const metaRecord = {
71
- type: 'meta' as const,
72
- timestamp: meta.timestamp,
73
- title: meta.title,
74
- model: meta.model,
75
- provider: meta.provider,
76
- titleSource: meta.titleSource ?? 'system',
77
- returnContext: meta.returnContext,
78
- };
79
- lines.push(JSON.stringify(metaRecord));
80
-
81
- // Subsequent lines: one message per line
82
- for (const msg of messages) {
83
- const { type: _ignored, ...safeMsg } = msg as Record<string, unknown>;
84
- const record = { ...safeMsg, type: 'message' as const };
85
- lines.push(JSON.stringify(record));
86
- }
87
-
88
- // Agent records: one per line, after messages
89
- if (agentRecords && agentRecords.length > 0) {
90
- for (const agent of agentRecords) {
91
- const record = { ...agent, type: 'agent_record' as const };
92
- lines.push(JSON.stringify(record));
93
- }
94
- }
95
-
96
- writeFileSync(filePath, lines.join('\n') + '\n', 'utf-8');
97
- return { filePath, sanitizedName };
98
- }
99
-
100
- /**
101
- * Load a session from JSONL. Returns meta and messages (excluding removed ones).
102
- * Throws if the file does not exist or cannot be parsed.
103
- */
104
- load(name: string): { meta: SessionMeta; messages: object[]; agentRecords: AgentRecord[] } {
105
- if (!name || !name.trim()) throw new Error('Session name cannot be empty');
106
- const filename = this.sanitizeName(name);
107
- const filePath = join(this.sessionsDir, `${filename}.jsonl`);
108
-
109
- if (!existsSync(filePath)) {
110
- throw new Error(`Session not found: ${name}`);
111
- }
112
-
113
- const raw = readFileSync(filePath, 'utf-8');
114
- const lines = raw.split('\n').filter(l => l.trim().length > 0);
115
-
116
- let meta: SessionMeta = { title: '', model: '', provider: '', timestamp: 0, titleSource: 'system' };
117
- const messages: object[] = [];
118
- const agentRecords: AgentRecord[] = [];
119
-
120
- let skipped = 0;
121
- for (const line of lines) {
122
- let record: Record<string, unknown>;
123
- try {
124
- record = JSON.parse(line) as Record<string, unknown>;
125
- } catch {
126
- // Non-fatal: malformed JSON line — skip and count it
127
- skipped++;
128
- continue;
129
- }
130
-
131
- if (record.type === 'meta') {
132
- meta = {
133
- title: String(record.title ?? ''),
134
- model: String(record.model ?? ''),
135
- provider: String(record.provider ?? ''),
136
- timestamp: Number(record.timestamp ?? 0),
137
- titleSource: record.titleSource === 'user' ? 'user' : 'system',
138
- returnContext: (record.returnContext && typeof record.returnContext === 'object')
139
- ? (record.returnContext as SessionReturnContextSummary)
140
- : undefined,
141
- };
142
- } else if (record.type === 'message') {
143
- // Skip messages marked as removed (F2 future feature)
144
- if (record.removed === true) continue;
145
- // Strip the 'type' wrapper before returning raw message
146
- const { type: _type, ...msgFields } = record;
147
- messages.push(msgFields);
148
- } else if (record.type === 'agent_record') {
149
- const { type: _type, ...agentFields } = record;
150
- if (typeof agentFields.id === 'string' && typeof agentFields.status === 'string' && typeof agentFields.task === 'string') {
151
- agentRecords.push(agentFields as unknown as AgentRecord);
152
- }
153
- }
154
- }
155
-
156
- if (skipped > 0) logger.debug('Skipped malformed lines', { name, skipped });
157
- return { meta, messages, agentRecords };
158
- }
159
-
160
- /**
161
- * List all saved sessions with metadata, sorted by most recent first.
162
- */
163
- list(): SessionInfo[] {
164
- if (!existsSync(this.sessionsDir)) return [];
165
-
166
- let files: string[];
167
- try {
168
- files = readdirSync(this.sessionsDir).filter(f => f.endsWith('.jsonl'));
169
- } catch {
170
- // Non-fatal: sessions directory unreadable (permissions, doesn't exist yet)
171
- logger.debug('SessionManager: could not read sessions directory', { dir: this.sessionsDir });
172
- return [];
173
- }
174
-
175
- const sessions: SessionInfo[] = [];
176
-
177
- for (const file of files) {
178
- const name = file.replace(/\.jsonl$/, '');
179
- const filePath = join(this.sessionsDir, file);
180
-
181
- let meta: SessionMeta = { title: '', model: '', provider: '', timestamp: 0, titleSource: 'system' };
182
- let messageCount = 0;
183
-
184
- try {
185
- const raw = readFileSync(filePath, 'utf-8');
186
- const lines = raw.split('\n').filter(l => l.trim().length > 0);
187
-
188
- // Parse only the first line for meta; count remaining non-removed message lines
189
- if (lines.length > 0) {
190
- try {
191
- const first = JSON.parse(lines[0]) as Record<string, unknown>;
192
- if (first.type === 'meta') {
193
- meta = {
194
- title: String(first.title ?? ''),
195
- model: String(first.model ?? ''),
196
- provider: String(first.provider ?? ''),
197
- timestamp: Number(first.timestamp ?? 0),
198
- titleSource: first.titleSource === 'user' ? 'user' : 'system',
199
- returnContext: (first.returnContext && typeof first.returnContext === 'object')
200
- ? (first.returnContext as SessionReturnContextSummary)
201
- : undefined,
202
- };
203
- }
204
- } catch {
205
- // Non-fatal: malformed meta line — session listed with default title/model
206
- logger.debug('SessionManager: malformed meta line', { name });
207
- }
208
- }
209
-
210
- // Count message lines: parse each line's type/removed fields only (no full content parse)
211
- // Using startsWith anchor to avoid false positives from message content containing these strings
212
- for (const l of lines.slice(1)) {
213
- const trimmed = l.trim();
214
- if (trimmed.startsWith('{"') && trimmed.includes('"type":"message"')) {
215
- // Quick check: is "removed":true near the start of the line (before content)?
216
- // Content is always the longest field, so type/removed appear in the first ~50 chars
217
- const prefix = trimmed.slice(0, 60);
218
- if (!prefix.includes('"removed":true')) {
219
- messageCount++;
220
- }
221
- }
222
- }
223
- } catch {
224
- // Non-fatal: session file unreadable — skip it from the listing
225
- logger.debug('SessionManager: unreadable session file', { name });
226
- continue;
227
- }
228
-
229
- sessions.push({
230
- name,
231
- title: meta.title,
232
- model: meta.model,
233
- provider: meta.provider,
234
- timestamp: meta.timestamp,
235
- messageCount,
236
- filePath,
237
- titleSource: meta.titleSource,
238
- returnContext: meta.returnContext,
239
- });
240
- }
241
-
242
- // Sort by most recent first
243
- sessions.sort((a, b) => b.timestamp - a.timestamp);
244
- return sessions;
245
- }
246
-
247
- /**
248
- * Get just the metadata for a session without loading all messages.
249
- * Returns null if the session does not exist or meta cannot be parsed.
250
- */
251
- getMeta(name: string): SessionMeta | null {
252
- if (!name || !name.trim()) return null;
253
- const filename = this.sanitizeName(name);
254
- const filePath = join(this.sessionsDir, `${filename}.jsonl`);
255
- if (!existsSync(filePath)) return null;
256
- try {
257
- const raw = readFileSync(filePath, 'utf-8');
258
- const firstLine = raw.split('\n')[0];
259
- if (!firstLine?.trim()) return null;
260
- const record = JSON.parse(firstLine) as Record<string, unknown>;
261
- if (record.type !== 'meta') return null;
262
- return {
263
- title: String(record.title ?? ''),
264
- model: String(record.model ?? ''),
265
- provider: String(record.provider ?? ''),
266
- timestamp: Number(record.timestamp ?? 0),
267
- titleSource: record.titleSource === 'user' ? 'user' : 'system',
268
- returnContext: (record.returnContext && typeof record.returnContext === 'object')
269
- ? (record.returnContext as SessionReturnContextSummary)
270
- : undefined,
271
- };
272
- } catch {
273
- // Non-fatal: session file unreadable or missing meta — return null to caller
274
- logger.debug('SessionManager: could not read session meta', { name: filePath });
275
- return null;
276
- }
277
- }
278
-
279
- /**
280
- * Rename a session by rewriting its meta line with a new title.
281
- * The file is stored under the sanitized name — rename updates the title
282
- * field inside the file but does NOT rename the file itself.
283
- * Throws if the session does not exist.
284
- */
285
- rename(name: string, newTitle: string): void {
286
- if (!name || !name.trim()) throw new Error('Session name cannot be empty');
287
- const filename = this.sanitizeName(name);
288
- const filePath = join(this.sessionsDir, `${filename}.jsonl`);
289
- if (!existsSync(filePath)) throw new Error(`Session not found: ${name}`);
290
-
291
- const raw = readFileSync(filePath, 'utf-8');
292
- const lines = raw.split('\n');
293
- if (lines.length === 0) throw new Error('Session file is empty');
294
-
295
- try {
296
- const record = JSON.parse(lines[0]) as Record<string, unknown>;
297
- record.title = newTitle;
298
- lines[0] = JSON.stringify(record);
299
- writeFileSync(filePath, lines.join('\n'), 'utf-8');
300
- } catch {
301
- throw new Error(`Failed to update session title: ${name}`);
302
- }
303
- }
304
-
305
- /**
306
- * Delete a session file.
307
- * Throws if the session does not exist.
308
- */
309
- delete(name: string): void {
310
- if (!name || !name.trim()) throw new Error('Session name cannot be empty');
311
- const filename = this.sanitizeName(name);
312
- const filePath = join(this.sessionsDir, `${filename}.jsonl`);
313
- if (!existsSync(filePath)) throw new Error(`Session not found: ${name}`);
314
- try {
315
- unlinkSync(filePath);
316
- } catch (e) {
317
- throw new Error(`Failed to delete session: ${summarizeError(e)}`);
318
- }
319
- }
320
-
321
- /**
322
- * Search all sessions for messages containing the query string (case-insensitive).
323
- * Returns sessions with match count and up to 3 context snippets per session.
324
- */
325
- search(query: string): Array<{ session: SessionInfo; matchCount: number; snippets: string[] }> {
326
- if (!query || !query.trim()) return [];
327
- const q = query.toLowerCase();
328
- const sessions = this.list();
329
- const results: Array<{ session: SessionInfo; matchCount: number; snippets: string[] }> = [];
330
-
331
- for (const session of sessions) {
332
- try {
333
- const raw = readFileSync(session.filePath, 'utf-8');
334
- const lines = raw.split('\n').filter(l => l.trim().length > 0);
335
- let matchCount = 0;
336
- const snippets: string[] = [];
337
-
338
- for (const line of lines.slice(1)) { // skip meta line
339
- try {
340
- const record = JSON.parse(line) as Record<string, unknown>;
341
- if (record.type !== 'message') continue;
342
- const content = String(record.content ?? '');
343
- const lower = content.toLowerCase();
344
- const idx = lower.indexOf(q);
345
- if (idx !== -1) {
346
- matchCount++;
347
- if (snippets.length < 3) {
348
- const start = Math.max(0, idx - 40);
349
- const end = Math.min(content.length, idx + q.length + 60);
350
- const snippet = (start > 0 ? '...' : '') + content.slice(start, end).replace(/\n/g, ' ') + (end < content.length ? '...' : '');
351
- snippets.push(snippet);
352
- }
353
- }
354
- } catch {
355
- // Non-fatal: malformed line in session during search — skip it
356
- logger.debug('SessionManager: malformed line during search', { name });
357
- }
358
- }
359
-
360
- if (matchCount > 0) {
361
- results.push({ session, matchCount, snippets });
362
- }
363
- } catch {
364
- // Non-fatal: session unreadable during search — skip it
365
- logger.debug('SessionManager: unreadable session during search', { name });
366
- }
367
- }
368
-
369
- // Sort by match count descending
370
- results.sort((a, b) => b.matchCount - a.matchCount);
371
- return results;
372
- }
373
-
374
- /**
375
- * Sanitize a session name into a safe filename.
376
- * Replaces spaces with hyphens, strips non-alphanumeric/hyphen/underscore chars,
377
- * collapses multiple hyphens, trims leading/trailing hyphens.
378
- */
379
- sanitizeName(name: string): string {
380
- return name
381
- .toLowerCase()
382
- .replace(/\s+/g, '-')
383
- .replace(/[^a-z0-9_-]/g, '')
384
- .replace(/-+/g, '-')
385
- .replace(/^-+|-+$/g, '')
386
- || 'session';
10
+ super(baseDir, {
11
+ surfaceRoot: 'tui',
12
+ });
387
13
  }
388
14
  }
@@ -1,6 +1,6 @@
1
- import type { ConversationManager } from '../core/conversation.ts';
2
- import type { PermissionRequest } from '../permissions/prompt.ts';
3
- import type { SessionSnapshot } from '../runtime/session-persistence.ts';
1
+ import type { ConversationManager } from '../core/conversation';
2
+ import type { PermissionRequest } from '@pellux/goodvibes-sdk/platform/permissions/prompt';
3
+ import type { SessionSnapshot } from '@pellux/goodvibes-sdk/platform/runtime/session-persistence';
4
4
  import type { SystemMessageRouter } from '../core/system-message-router.ts';
5
5
 
6
6
  export type PendingPermissionState = PermissionRequest & {
@@ -1,12 +1,12 @@
1
1
  import type { ConfigManager } from '../config/index.ts';
2
- import type { ConversationManager } from '../core/conversation.ts';
2
+ import type { ConversationManager } from '../core/conversation';
3
3
  import type { CommandContext } from '../input/command-registry.ts';
4
4
  import type { InputHandler } from '../input/handler.ts';
5
5
  import type { PanelManager } from '../panels/panel-manager.ts';
6
- import type { ProviderRegistry } from '../providers/registry.ts';
6
+ import type { ProviderRegistry } from '@pellux/goodvibes-sdk/platform/providers/registry';
7
7
  import type { MutableRuntimeState } from '../runtime/context.ts';
8
8
  import type { FeatureFlagManager } from '@pellux/goodvibes-sdk/platform/runtime/feature-flags/index';
9
- import type { McpRegistry } from '../mcp/registry.ts';
9
+ import type { McpRegistry } from '@pellux/goodvibes-sdk/platform/mcp/registry';
10
10
  import type { SubscriptionManager } from '@pellux/goodvibes-sdk/platform/config/subscriptions';
11
11
  import type { ServiceInspectionQuery } from '../runtime/ui-service-queries.ts';
12
12
 
@@ -4,7 +4,7 @@ import { join, resolve } from 'path';
4
4
  import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
5
5
  import type { FileStateCache } from '@pellux/goodvibes-sdk/platform/state/file-cache';
6
6
  import type { ProjectIndex } from '@pellux/goodvibes-sdk/platform/state/project-index';
7
- import type { HookDispatcher } from '../hooks/dispatcher.ts';
7
+ import type { HookDispatcher } from '@pellux/goodvibes-sdk/platform/hooks/dispatcher';
8
8
  import type { HookEvent } from '@pellux/goodvibes-sdk/platform/hooks/types';
9
9
  import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
10
10
 
@@ -8,14 +8,14 @@ export { ModeManager } from '@pellux/goodvibes-sdk/platform/state/mode-manager';
8
8
  export type { ModeDefinition } from '@pellux/goodvibes-sdk/platform/state/mode-manager';
9
9
  export type { HITLMode, HITLModeDefinition } from '@pellux/goodvibes-sdk/platform/state/mode-manager';
10
10
  export { HITL_QUIET, HITL_BALANCED, HITL_OPERATOR } from '@pellux/goodvibes-sdk/platform/state/mode-manager';
11
- export { FileWatcher } from './file-watcher.ts';
11
+ export { FileWatcher } from '@pellux/goodvibes-sdk/platform/state/file-watcher';
12
12
  export { SQLiteStore } from '@pellux/goodvibes-sdk/platform/state/sqlite-store';
13
13
  export { TelemetryDB } from '@pellux/goodvibes-sdk/platform/state/telemetry';
14
14
  export type { ToolCallRecord, TelemetryFilter, TelemetrySummary } from '@pellux/goodvibes-sdk/platform/state/telemetry';
15
15
  export { FileUndoManager } from '@pellux/goodvibes-sdk/platform/state/file-undo';
16
16
  export type { FileOperation } from '@pellux/goodvibes-sdk/platform/state/file-undo';
17
- export { MemoryStore } from './memory-store.ts';
18
- export { MemoryRegistry } from './memory-registry.ts';
17
+ export { MemoryStore } from '@pellux/goodvibes-sdk/platform/state/memory-store';
18
+ export { MemoryRegistry } from '@pellux/goodvibes-sdk/platform/state/memory-registry';
19
19
  export type {
20
20
  MemoryClass,
21
21
  MemoryRecord,
@@ -29,20 +29,20 @@ export type {
29
29
  MemoryReviewState,
30
30
  ProvenanceLink,
31
31
  ProvenanceLinkKind,
32
- } from './memory-store.ts';
32
+ } from '@pellux/goodvibes-sdk/platform/state/memory-store';
33
33
  export {
34
34
  MEMORY_VECTOR_DIMS,
35
35
  embedMemoryText,
36
36
  resolveMemoryVectorDbPath,
37
37
  SqliteVecMemoryIndex,
38
- } from './memory-vector-store.ts';
39
- export type { MemoryVectorCandidate, MemoryVectorStats } from './memory-vector-store.ts';
38
+ } from '@pellux/goodvibes-sdk/platform/state/memory-vector-store';
39
+ export type { MemoryVectorCandidate, MemoryVectorStats } from '@pellux/goodvibes-sdk/platform/state/memory-vector-store';
40
40
  export {
41
41
  DEFAULT_MEMORY_EMBEDDING_DIMS,
42
42
  HASHED_MEMORY_EMBEDDING_PROVIDER,
43
43
  MemoryEmbeddingProviderRegistry,
44
44
  normalizeMemoryEmbeddingVector,
45
- } from './memory-embeddings.ts';
45
+ } from '@pellux/goodvibes-sdk/platform/state/memory-embeddings';
46
46
  export type {
47
47
  MemoryEmbeddingDoctorReport,
48
48
  MemoryEmbeddingProvider,
@@ -51,6 +51,6 @@ export type {
51
51
  MemoryEmbeddingRequest,
52
52
  MemoryEmbeddingResult,
53
53
  MemoryEmbeddingUsage,
54
- } from './memory-embeddings.ts';
55
- export type { KnowledgeInjection } from './knowledge-injection.ts';
56
- export { selectKnowledgeForTask, buildKnowledgeInjectionPrompt } from './knowledge-injection.ts';
54
+ } from '@pellux/goodvibes-sdk/platform/state/memory-embeddings';
55
+ export type { KnowledgeInjection } from '@pellux/goodvibes-sdk/platform/state/knowledge-injection';
56
+ export { selectKnowledgeForTask, buildKnowledgeInjectionPrompt } from '@pellux/goodvibes-sdk/platform/state/knowledge-injection';
@@ -6,12 +6,12 @@ import {
6
6
  type KnowledgeInjectionRetention,
7
7
  type KnowledgeInjectionTrustTier,
8
8
  type KnowledgeInjectionUseAs,
9
- } from '../knowledge/internal.ts';
9
+ } from '@pellux/goodvibes-sdk/platform/knowledge/internal';
10
10
  import type {
11
11
  MemoryRecord,
12
12
  MemoryRegistry,
13
13
  MemorySemanticSearchResult,
14
- } from './memory-store.ts';
14
+ } from '@pellux/goodvibes-sdk/platform/state/memory-store';
15
15
 
16
16
  export interface KnowledgeInjection {
17
17
  readonly id: string;
@@ -1,4 +1,4 @@
1
- import { DEFAULT_MEMORY_EMBEDDING_DIMS } from './memory-embeddings.ts';
1
+ import { DEFAULT_MEMORY_EMBEDDING_DIMS } from '@pellux/goodvibes-sdk/platform/state/memory-embeddings';
2
2
  import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
3
3
  import type {
4
4
  MemoryEmbeddingProvider,
@@ -6,7 +6,7 @@ import type {
6
6
  MemoryEmbeddingProviderStatus,
7
7
  MemoryEmbeddingRequest,
8
8
  MemoryEmbeddingResult,
9
- } from './memory-embeddings.ts';
9
+ } from '@pellux/goodvibes-sdk/platform/state/memory-embeddings';
10
10
 
11
11
  type EnvMap = Record<string, string | undefined>;
12
12
 
@@ -1,6 +1,6 @@
1
1
  import { ConfigManager, getConfiguredEmbeddingProviderId } from '../config/index.ts';
2
2
  import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
3
- import { createBuiltinMemoryEmbeddingProviders } from './memory-embedding-http.ts';
3
+ import { createBuiltinMemoryEmbeddingProviders } from '@pellux/goodvibes-sdk/platform/state/memory-embedding-http';
4
4
  import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
5
5
 
6
6
  export const DEFAULT_MEMORY_EMBEDDING_DIMS = 384;
@@ -1,7 +1,7 @@
1
- import type { MemoryAddOptions, ProvenanceLink } from './memory-store.ts';
1
+ import type { MemoryAddOptions, ProvenanceLink } from '@pellux/goodvibes-sdk/platform/state/memory-store';
2
2
  import type { ForensicsBundle } from '@pellux/goodvibes-sdk/platform/runtime/forensics/types';
3
- import type { PolicyPreflightReview } from '../runtime/permissions/preflight.ts';
4
- import type { PluginStatus } from '../plugins/manager.ts';
3
+ import type { PolicyPreflightReview } from '@pellux/goodvibes-sdk/platform/runtime/permissions/preflight';
4
+ import type { PluginStatus } from '@pellux/goodvibes-sdk/platform/plugins/manager';
5
5
 
6
6
  export interface McpSecurityCapture {
7
7
  readonly name: string;
@@ -1,6 +1,6 @@
1
- import type { MemoryAddOptions, MemoryBundle, MemoryDoctorReport, MemoryLink, MemoryRecord, MemoryReviewPatch, MemoryScope, MemorySearchFilter, MemorySemanticSearchResult, MemoryStore } from './memory-store.ts';
2
- import type { MemoryVectorStats } from './memory-vector-store.ts';
3
- import type { MemoryImportResult } from './memory-store.ts';
1
+ import type { MemoryAddOptions, MemoryBundle, MemoryDoctorReport, MemoryLink, MemoryRecord, MemoryReviewPatch, MemoryScope, MemorySearchFilter, MemorySemanticSearchResult, MemoryStore } from '@pellux/goodvibes-sdk/platform/state/memory-store';
2
+ import type { MemoryVectorStats } from '@pellux/goodvibes-sdk/platform/state/memory-vector-store';
3
+ import type { MemoryImportResult } from '@pellux/goodvibes-sdk/platform/state/memory-store';
4
4
 
5
5
  /**
6
6
  * MemoryRegistry — thin observable wrapper around the MemoryStore.
@@ -1,4 +1,4 @@
1
- import type { MemoryDoctorReport, MemoryLink, MemoryRecord, MemoryReviewState, MemoryScope, MemorySearchFilter } from './memory-store.ts';
1
+ import type { MemoryDoctorReport, MemoryLink, MemoryRecord, MemoryReviewState, MemoryScope, MemorySearchFilter } from '@pellux/goodvibes-sdk/platform/state/memory-store';
2
2
 
3
3
  export function createSchema(db: { run(sql: string): void; exec(sql: string, params?: (string | number)[]): Array<{ columns: string[]; values: unknown[][] }> }): void {
4
4
  db.run('PRAGMA foreign_keys = ON');
@@ -14,12 +14,12 @@ import {
14
14
  SqliteVecMemoryIndex,
15
15
  type MemoryVectorStats,
16
16
  resolveMemoryVectorDbPath,
17
- } from './memory-vector-store.ts';
17
+ } from '@pellux/goodvibes-sdk/platform/state/memory-vector-store';
18
18
  import {
19
19
  HASHED_MEMORY_EMBEDDING_PROVIDER,
20
20
  MemoryEmbeddingProviderRegistry,
21
21
  type MemoryEmbeddingDoctorReport,
22
- } from './memory-embeddings.ts';
22
+ } from '@pellux/goodvibes-sdk/platform/state/memory-embeddings';
23
23
  import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
24
24
  import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
25
25
  import {
@@ -34,7 +34,7 @@ import {
34
34
  rowToRecord,
35
35
  safeParseJson,
36
36
  scoreRecord,
37
- } from './memory-store-helpers.ts';
37
+ } from '@pellux/goodvibes-sdk/platform/state/memory-store-helpers';
38
38
 
39
39
  // ── Types ─────────────────────────────────────────────────────────────────────
40
40
 
@@ -184,7 +184,7 @@ export interface MemoryDoctorReport {
184
184
  readonly checkedAt: number;
185
185
  }
186
186
 
187
- export { MemoryRegistry } from './memory-registry.ts';
187
+ export { MemoryRegistry } from '@pellux/goodvibes-sdk/platform/state/memory-registry';
188
188
 
189
189
  // ── MemoryStore ───────────────────────────────────────────────────────────────
190
190
 
@@ -3,12 +3,12 @@ import { dirname } from 'node:path';
3
3
  import { mkdirSync } from 'node:fs';
4
4
  import { Database, type SQLQueryBindings } from 'bun:sqlite';
5
5
  import { load as loadSqliteVec } from 'sqlite-vec';
6
- import type { MemoryClass, MemoryRecord, MemoryReviewState, MemoryScope } from './memory-store.ts';
6
+ import type { MemoryClass, MemoryRecord, MemoryReviewState, MemoryScope } from '@pellux/goodvibes-sdk/platform/state/memory-store';
7
7
  import {
8
8
  MemoryEmbeddingProviderRegistry,
9
9
  embedMemoryText,
10
10
  normalizeMemoryEmbeddingVector,
11
- } from './memory-embeddings.ts';
11
+ } from '@pellux/goodvibes-sdk/platform/state/memory-embeddings';
12
12
  import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
13
13
  import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
14
14
 
@@ -16,7 +16,7 @@ import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-displ
16
16
  // Duplicating the literal here avoids an initialization cycle when state/index.ts
17
17
  // re-exports both modules during targeted test imports.
18
18
  export const MEMORY_VECTOR_DIMS = 384;
19
- export { embedMemoryText } from './memory-embeddings.ts';
19
+ export { embedMemoryText } from '@pellux/goodvibes-sdk/platform/state/memory-embeddings';
20
20
 
21
21
  export interface MemoryVectorSearchFilter {
22
22
  scope?: MemoryScope;
@@ -1,15 +1,15 @@
1
1
  import type { Tool } from '@pellux/goodvibes-sdk/platform/types/tools';
2
- import type { ConfigManager } from '../../config/manager.ts';
2
+ import type { ConfigManager } from '@pellux/goodvibes-sdk/platform/config/manager';
3
3
  import { AGENT_TOOL_SCHEMA } from '@pellux/goodvibes-sdk/platform/tools/agent/schema';
4
4
  import type { AgentInput } from '@pellux/goodvibes-sdk/platform/tools/agent/schema';
5
5
  import { ArchetypeLoader } from '@pellux/goodvibes-sdk/platform/agents/archetypes';
6
- import { AgentMessageBus } from '../../agents/message-bus.ts';
7
- import type { WrfcController } from '../../agents/wrfc-controller.ts';
8
- import { AGENT_TEMPLATES, AgentManager } from './manager.ts';
9
- import { evaluateOrchestrationSpawn } from '../../runtime/orchestration/spawn-policy.ts';
6
+ import { AgentMessageBus } from '@pellux/goodvibes-sdk/platform/agents/message-bus';
7
+ import type { WrfcController } from '@pellux/goodvibes-sdk/platform/agents/wrfc-controller';
8
+ import { AGENT_TEMPLATES, AgentManager } from '@pellux/goodvibes-sdk/platform/tools/agent/manager';
9
+ import { evaluateOrchestrationSpawn } from '@pellux/goodvibes-sdk/platform/runtime/orchestration/spawn-policy';
10
10
  import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
11
- export type { AgentRecord } from './manager.ts';
12
- export { AGENT_TEMPLATES, AgentManager } from './manager.ts';
11
+ export type { AgentRecord } from '@pellux/goodvibes-sdk/platform/tools/agent/manager';
12
+ export { AGENT_TEMPLATES, AgentManager } from '@pellux/goodvibes-sdk/platform/tools/agent/manager';
13
13
 
14
14
  // ---------------------------------------------------------------------------
15
15
  // Tool implementation