@pellux/goodvibes-tui 0.18.8 → 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 (555) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +1 -1
  3. package/docs/foundation-artifacts/operator-contract.json +1 -1
  4. package/package.json +2 -2
  5. package/src/acp/connection.ts +5 -5
  6. package/src/acp/index.ts +1 -1
  7. package/src/acp/manager.ts +1 -133
  8. package/src/adapters/bluebubbles/index.ts +1 -1
  9. package/src/adapters/discord/index.ts +2 -2
  10. package/src/adapters/github/index.ts +1 -1
  11. package/src/adapters/google-chat/index.ts +1 -1
  12. package/src/adapters/imessage/index.ts +1 -1
  13. package/src/adapters/index.ts +15 -15
  14. package/src/adapters/matrix/index.ts +1 -1
  15. package/src/adapters/mattermost/index.ts +1 -1
  16. package/src/adapters/msteams/index.ts +2 -2
  17. package/src/adapters/ntfy/index.ts +1 -1
  18. package/src/adapters/signal/index.ts +1 -1
  19. package/src/adapters/slack/index.ts +2 -2
  20. package/src/adapters/telegram/index.ts +1 -1
  21. package/src/adapters/types.ts +4 -4
  22. package/src/adapters/webhook/index.ts +1 -1
  23. package/src/adapters/whatsapp/index.ts +1 -1
  24. package/src/agents/message-bus-core.ts +2 -2
  25. package/src/agents/message-bus.ts +2 -2
  26. package/src/agents/orchestrator-prompts.ts +4 -4
  27. package/src/agents/orchestrator-runner.ts +11 -11
  28. package/src/agents/orchestrator.ts +14 -13
  29. package/src/agents/session.ts +1 -1
  30. package/src/agents/worktree.ts +1 -1
  31. package/src/agents/wrfc-config.ts +2 -2
  32. package/src/agents/wrfc-controller.ts +12 -12
  33. package/src/agents/wrfc-gate-runtime.ts +5 -5
  34. package/src/agents/wrfc-reporting.ts +1 -1
  35. package/src/agents/wrfc-runtime-events.ts +3 -3
  36. package/src/agents/wrfc-types.ts +1 -1
  37. package/src/automation/delivery-manager.ts +4 -4
  38. package/src/automation/index.ts +4 -4
  39. package/src/automation/manager-runtime-delivery.ts +1 -1
  40. package/src/automation/manager-runtime-events.ts +3 -3
  41. package/src/automation/manager-runtime-execution.ts +5 -5
  42. package/src/automation/manager-runtime-helpers.ts +2 -2
  43. package/src/automation/manager-runtime-job-mutations.ts +3 -3
  44. package/src/automation/manager-runtime-reconcile.ts +4 -4
  45. package/src/automation/manager-runtime-scheduling.ts +2 -2
  46. package/src/automation/manager-runtime.ts +18 -18
  47. package/src/automation/manager.ts +2 -2
  48. package/src/automation/service.ts +2 -2
  49. package/src/channels/builtin/account-actions.ts +5 -5
  50. package/src/channels/builtin/accounts.ts +2 -2
  51. package/src/channels/builtin/contracts.ts +3 -3
  52. package/src/channels/builtin/plugins.ts +5 -5
  53. package/src/channels/builtin/rendering.ts +4 -4
  54. package/src/channels/builtin/setup-schema.ts +1 -1
  55. package/src/channels/builtin/shared.ts +7 -7
  56. package/src/channels/builtin/surfaces.ts +2 -2
  57. package/src/channels/builtin/targets.ts +3 -3
  58. package/src/channels/builtin-runtime.ts +11 -11
  59. package/src/channels/delivery/shared.ts +2 -2
  60. package/src/channels/delivery/strategies-bridge.ts +3 -3
  61. package/src/channels/delivery/strategies-core.ts +5 -5
  62. package/src/channels/delivery/strategies-enterprise.ts +3 -3
  63. package/src/channels/delivery/types.ts +2 -2
  64. package/src/channels/delivery-router.ts +9 -9
  65. package/src/channels/index.ts +12 -12
  66. package/src/channels/plugin-registry.ts +1 -1
  67. package/src/channels/provider-runtime.ts +3 -3
  68. package/src/channels/reply-pipeline.ts +3 -3
  69. package/src/channels/route-manager.ts +2 -2
  70. package/src/channels/surface-registry.ts +2 -2
  71. package/src/config/helper-model.ts +1 -233
  72. package/src/config/index.ts +3 -3
  73. package/src/config/manager.ts +8 -404
  74. package/src/config/secrets.ts +21 -542
  75. package/src/config/service-registry.ts +1 -329
  76. package/src/config/tool-llm.ts +3 -3
  77. package/src/control-plane/approval-broker.ts +1 -1
  78. package/src/control-plane/gateway.ts +1 -713
  79. package/src/control-plane/index.ts +7 -7
  80. package/src/control-plane/media-contract-schemas.ts +1 -208
  81. package/src/control-plane/method-catalog-admin.ts +1 -136
  82. package/src/control-plane/method-catalog-channels.ts +1 -591
  83. package/src/control-plane/method-catalog-control-automation.ts +1 -475
  84. package/src/control-plane/method-catalog-control-core.ts +1 -594
  85. package/src/control-plane/method-catalog-control.ts +1 -8
  86. package/src/control-plane/method-catalog-events.ts +1 -74
  87. package/src/control-plane/method-catalog-knowledge.ts +1 -531
  88. package/src/control-plane/method-catalog-media.ts +1 -279
  89. package/src/control-plane/method-catalog-runtime.ts +1 -304
  90. package/src/control-plane/method-catalog-shared.ts +1 -223
  91. package/src/control-plane/method-catalog.ts +1 -242
  92. package/src/control-plane/operator-contract-schemas-admin.ts +1 -639
  93. package/src/control-plane/operator-contract-schemas-channels.ts +1 -375
  94. package/src/control-plane/operator-contract-schemas-control.ts +1 -226
  95. package/src/control-plane/operator-contract-schemas-domains.ts +1 -4
  96. package/src/control-plane/operator-contract-schemas-knowledge.ts +1 -582
  97. package/src/control-plane/operator-contract-schemas-media.ts +1 -297
  98. package/src/control-plane/operator-contract-schemas-permissions.ts +1 -100
  99. package/src/control-plane/operator-contract-schemas-remote.ts +1 -38
  100. package/src/control-plane/operator-contract-schemas-runtime.ts +1 -563
  101. package/src/control-plane/operator-contract-schemas-shared.ts +1 -85
  102. package/src/control-plane/operator-contract-schemas-telemetry.ts +1 -349
  103. package/src/control-plane/operator-contract-schemas.ts +1 -6
  104. package/src/control-plane/operator-contract.ts +5 -3
  105. package/src/control-plane/session-broker.ts +1 -1
  106. package/src/core/compaction-sections.ts +5 -5
  107. package/src/core/compaction-types.ts +3 -3
  108. package/src/core/composer-state.ts +1 -1
  109. package/src/core/context-compaction.ts +7 -7
  110. package/src/core/conversation-compaction.ts +4 -4
  111. package/src/core/conversation-diff.ts +1 -1
  112. package/src/core/conversation-rendering.ts +5 -5
  113. package/src/core/conversation-utils.ts +2 -2
  114. package/src/core/conversation.ts +10 -10
  115. package/src/core/event-replay.ts +1 -1
  116. package/src/core/orchestrator-context-runtime.ts +8 -8
  117. package/src/core/orchestrator-follow-up-runtime.ts +2 -2
  118. package/src/core/orchestrator-runtime.ts +4 -4
  119. package/src/core/orchestrator-tool-runtime.ts +7 -7
  120. package/src/core/orchestrator-turn-helpers.ts +7 -7
  121. package/src/core/orchestrator-turn-loop.ts +10 -10
  122. package/src/core/orchestrator.ts +17 -17
  123. package/src/core/plan-command-handler.ts +2 -2
  124. package/src/core/system-message-router.ts +2 -2
  125. package/src/core/transcript-events/classify.ts +1 -1
  126. package/src/core/transcript-events/index.ts +3 -3
  127. package/src/daemon/cli.ts +6 -6
  128. package/src/daemon/control-plane.ts +7 -7
  129. package/src/daemon/facade-composition.ts +16 -15
  130. package/src/daemon/facade.ts +17 -17
  131. package/src/daemon/helpers.ts +2 -2
  132. package/src/daemon/http/router-route-contexts.ts +11 -11
  133. package/src/daemon/http/router.ts +25 -25
  134. package/src/daemon/http-listener.ts +3 -3
  135. package/src/daemon/index.ts +1 -3
  136. package/src/daemon/service-manager.ts +1 -1
  137. package/src/daemon/surface-actions.ts +8 -8
  138. package/src/daemon/surface-delivery.ts +7 -7
  139. package/src/daemon/surface-policy.ts +1 -1
  140. package/src/daemon/transport-events.ts +4 -4
  141. package/src/daemon/types.ts +24 -24
  142. package/src/export/markdown.ts +1 -1
  143. package/src/export/session-export.ts +1 -633
  144. package/src/git/index.ts +1 -1
  145. package/src/git/service.ts +1 -1
  146. package/src/hooks/chain-engine.ts +1 -1
  147. package/src/hooks/dispatcher.ts +4 -4
  148. package/src/hooks/hook-api.ts +1 -1
  149. package/src/hooks/index.ts +8 -8
  150. package/src/hooks/runners/agent.ts +1 -1
  151. package/src/hooks/runners/prompt.ts +1 -1
  152. package/src/hooks/workbench.ts +2 -2
  153. package/src/input/command-registry.ts +24 -17
  154. package/src/input/commands/config.ts +1 -1
  155. package/src/input/commands/control-room-runtime.ts +2 -2
  156. package/src/input/commands/conversation-runtime.ts +1 -1
  157. package/src/input/commands/eval.ts +2 -2
  158. package/src/input/commands/git-runtime.ts +1 -1
  159. package/src/input/commands/guidance-runtime.ts +3 -3
  160. package/src/input/commands/health-runtime.ts +7 -7
  161. package/src/input/commands/incident-runtime.ts +1 -1
  162. package/src/input/commands/integration-runtime.ts +3 -3
  163. package/src/input/commands/local-provider-runtime.ts +1 -1
  164. package/src/input/commands/local-runtime.ts +1 -1
  165. package/src/input/commands/local-setup-review.ts +1 -1
  166. package/src/input/commands/local-setup.ts +1 -1
  167. package/src/input/commands/managed-runtime.ts +2 -2
  168. package/src/input/commands/marketplace-runtime.ts +1 -1
  169. package/src/input/commands/platform-access-runtime.ts +1 -1
  170. package/src/input/commands/policy-dispatch.ts +2 -2
  171. package/src/input/commands/product-runtime.ts +2 -2
  172. package/src/input/commands/profile-sync-runtime.ts +1 -1
  173. package/src/input/commands/provider-accounts-runtime.ts +1 -1
  174. package/src/input/commands/provider.ts +3 -3
  175. package/src/input/commands/quit-shared.ts +1 -1
  176. package/src/input/commands/recall-bundle.ts +1 -1
  177. package/src/input/commands/recall-capture.ts +2 -2
  178. package/src/input/commands/recall-query.ts +2 -2
  179. package/src/input/commands/recall-shared.ts +1 -1
  180. package/src/input/commands/remote-runtime-setup.ts +1 -1
  181. package/src/input/commands/remote-runtime.ts +1 -1
  182. package/src/input/commands/runtime-services.ts +13 -11
  183. package/src/input/commands/schedule-runtime.ts +2 -2
  184. package/src/input/commands/session-content.ts +1 -1
  185. package/src/input/commands/session-workflow.ts +4 -4
  186. package/src/input/commands/settings-sync-runtime.ts +1 -1
  187. package/src/input/commands/share-runtime.ts +9 -4
  188. package/src/input/commands/shell-core.ts +1 -1
  189. package/src/input/commands/skills-runtime.ts +1 -1
  190. package/src/input/commands/subscription-runtime.ts +1 -1
  191. package/src/input/commands/tasks-runtime.ts +1 -1
  192. package/src/input/commands/teamwork-runtime.ts +1 -1
  193. package/src/input/commands/worktree-runtime.ts +1 -1
  194. package/src/input/handler-command-route.ts +1 -1
  195. package/src/input/handler-content-actions.ts +3 -3
  196. package/src/input/handler-feed-routes.ts +2 -2
  197. package/src/input/handler-feed.ts +1 -1
  198. package/src/input/handler-shortcuts.ts +1 -1
  199. package/src/input/handler.ts +1 -1
  200. package/src/input/keybindings.ts +5 -0
  201. package/src/input/model-picker.ts +2 -2
  202. package/src/input/profile-picker-modal.ts +1 -1
  203. package/src/input/session-picker-modal.ts +1 -1
  204. package/src/input/settings-modal.ts +4 -4
  205. package/src/integrations/index.ts +1 -1
  206. package/src/integrations/notifier.ts +1 -1
  207. package/src/integrations/webhooks.ts +1 -177
  208. package/src/knowledge/consolidation.ts +2 -2
  209. package/src/knowledge/graphql.ts +1 -1
  210. package/src/knowledge/index.ts +5 -5
  211. package/src/knowledge/ingest-compile.ts +3 -3
  212. package/src/knowledge/ingest-context.ts +1 -1
  213. package/src/knowledge/ingest-inputs.ts +4 -4
  214. package/src/knowledge/ingest.ts +1 -20
  215. package/src/knowledge/internal.ts +1 -1
  216. package/src/knowledge/knowledge-api.ts +7 -7
  217. package/src/knowledge/lint.ts +3 -3
  218. package/src/knowledge/memory-sync.ts +2 -2
  219. package/src/knowledge/packet.ts +3 -3
  220. package/src/knowledge/scheduling.ts +2 -2
  221. package/src/knowledge/service.ts +10 -10
  222. package/src/main.ts +11 -10
  223. package/src/mcp/index.ts +4 -4
  224. package/src/mcp/mcp-api.ts +1 -1
  225. package/src/mcp/registry.ts +1 -506
  226. package/src/media/builtin-image-understanding.ts +2 -2
  227. package/src/media/builtin-providers.ts +2 -2
  228. package/src/media/index.ts +1 -1
  229. package/src/multimodal/index.ts +1 -1
  230. package/src/multimodal/service.ts +2 -2
  231. package/src/panels/agent-inspector-panel.ts +2 -2
  232. package/src/panels/agent-logs-panel.ts +3 -3
  233. package/src/panels/approval-panel.ts +2 -2
  234. package/src/panels/builtin/operations.ts +3 -1
  235. package/src/panels/builtin/shared.ts +13 -13
  236. package/src/panels/context-visualizer-panel.ts +2 -2
  237. package/src/panels/cost-tracker-panel.ts +2 -2
  238. package/src/panels/debug-panel.ts +3 -3
  239. package/src/panels/git-panel.ts +1 -1
  240. package/src/panels/hooks-panel.ts +4 -4
  241. package/src/panels/knowledge-panel.ts +1 -1
  242. package/src/panels/marketplace-panel.ts +1 -1
  243. package/src/panels/mcp-panel.ts +1 -1
  244. package/src/panels/memory-panel.ts +2 -2
  245. package/src/panels/ops-control-panel.ts +2 -2
  246. package/src/panels/ops-strategy-panel.ts +2 -2
  247. package/src/panels/plugins-panel.ts +1 -1
  248. package/src/panels/policy-panel.ts +1 -1
  249. package/src/panels/provider-health-panel.ts +3 -3
  250. package/src/panels/provider-stats-panel.ts +2 -2
  251. package/src/panels/sandbox-panel.ts +1 -1
  252. package/src/panels/schedule-panel.ts +1 -1
  253. package/src/panels/settings-sync-panel.ts +1 -1
  254. package/src/panels/system-messages-panel.ts +1 -1
  255. package/src/panels/tasks-panel.ts +1 -1
  256. package/src/panels/thinking-panel.ts +2 -2
  257. package/src/panels/token-budget-panel.ts +1 -1
  258. package/src/panels/tool-inspector-panel.ts +2 -2
  259. package/src/panels/worktree-panel.ts +1 -1
  260. package/src/panels/wrfc-panel.ts +4 -4
  261. package/src/permissions/briefs/build.ts +1 -1
  262. package/src/permissions/manager.ts +1 -356
  263. package/src/permissions/prompt.ts +1 -1
  264. package/src/plugins/api.ts +9 -9
  265. package/src/plugins/loader.ts +8 -8
  266. package/src/plugins/manager.ts +5 -5
  267. package/src/providers/amazon-bedrock-mantle.ts +1 -1
  268. package/src/providers/amazon-bedrock.ts +1 -1
  269. package/src/providers/anthropic-compat.ts +4 -4
  270. package/src/providers/anthropic-sdk-provider.ts +5 -5
  271. package/src/providers/anthropic-vertex.ts +1 -1
  272. package/src/providers/anthropic.ts +4 -4
  273. package/src/providers/auto-register.ts +6 -6
  274. package/src/providers/builtin-catalog.ts +2 -2
  275. package/src/providers/builtin-registry.ts +15 -15
  276. package/src/providers/cache-planner.ts +2 -2
  277. package/src/providers/capabilities.ts +1 -601
  278. package/src/providers/custom-loader.ts +6 -6
  279. package/src/providers/discovered-compat.ts +7 -18
  280. package/src/providers/discovered-factory.ts +7 -7
  281. package/src/providers/discovered-traits.ts +1 -1
  282. package/src/providers/gemini.ts +4 -4
  283. package/src/providers/github-copilot.ts +4 -4
  284. package/src/providers/index.ts +1 -47
  285. package/src/providers/interface.ts +1 -1
  286. package/src/providers/llama-cpp.ts +4 -4
  287. package/src/providers/lm-studio-helpers.ts +1 -1
  288. package/src/providers/lm-studio.ts +4 -4
  289. package/src/providers/model-catalog-cache.ts +1 -1
  290. package/src/providers/model-catalog-notifications.ts +1 -1
  291. package/src/providers/model-catalog-synthetic.ts +2 -2
  292. package/src/providers/model-catalog.ts +7 -7
  293. package/src/providers/model-limits.ts +1 -280
  294. package/src/providers/ollama.ts +4 -4
  295. package/src/providers/openai-codex.ts +2 -2
  296. package/src/providers/openai-compat.ts +4 -4
  297. package/src/providers/openai.ts +3 -3
  298. package/src/providers/optimizer.ts +1 -381
  299. package/src/providers/provider-api.ts +1 -553
  300. package/src/providers/registry-helpers.ts +1 -1
  301. package/src/providers/registry-models.ts +2 -2
  302. package/src/providers/registry-types.ts +5 -5
  303. package/src/providers/registry.ts +1 -729
  304. package/src/providers/runtime-metadata.ts +1 -1
  305. package/src/providers/runtime-snapshot.ts +3 -3
  306. package/src/providers/synthetic.ts +3 -3
  307. package/src/providers/tier-prompts.ts +1 -1
  308. package/src/providers/tool-formats.ts +1 -1
  309. package/src/renderer/agent-detail-modal.ts +2 -2
  310. package/src/renderer/block-actions.ts +1 -1
  311. package/src/renderer/context-inspector.ts +1 -1
  312. package/src/renderer/conversation-layout.ts +1 -1
  313. package/src/renderer/conversation-overlays.ts +1 -1
  314. package/src/renderer/git-status.ts +1 -1
  315. package/src/renderer/live-tail-modal.ts +1 -1
  316. package/src/renderer/process-modal.ts +2 -2
  317. package/src/runtime/bootstrap-background.ts +4 -4
  318. package/src/runtime/bootstrap-command-context.ts +23 -23
  319. package/src/runtime/bootstrap-command-parts.ts +23 -23
  320. package/src/runtime/bootstrap-core.ts +12 -10
  321. package/src/runtime/bootstrap-helpers.ts +2 -2
  322. package/src/runtime/bootstrap-hook-bridge.ts +9 -9
  323. package/src/runtime/bootstrap-runtime-events.ts +4 -4
  324. package/src/runtime/bootstrap-services.ts +4 -4
  325. package/src/runtime/bootstrap-shell.ts +11 -11
  326. package/src/runtime/bootstrap.ts +28 -10
  327. package/src/runtime/compaction/index.ts +1 -90
  328. package/src/runtime/compaction/lifecycle.ts +1 -167
  329. package/src/runtime/compaction/manager.ts +11 -11
  330. package/src/runtime/compaction/quality-score.ts +1 -279
  331. package/src/runtime/compaction/resume-repair.ts +1 -183
  332. package/src/runtime/compaction/strategies/autocompact.ts +1 -65
  333. package/src/runtime/compaction/strategies/boundary-commit.ts +1 -106
  334. package/src/runtime/compaction/strategies/collapse.ts +1 -90
  335. package/src/runtime/compaction/strategies/index.ts +1 -23
  336. package/src/runtime/compaction/strategies/microcompact.ts +1 -74
  337. package/src/runtime/compaction/strategies/reactive.ts +1 -89
  338. package/src/runtime/compaction/types.ts +1 -221
  339. package/src/runtime/context.ts +9 -9
  340. package/src/runtime/diagnostics/actions.ts +1 -1
  341. package/src/runtime/diagnostics/index.ts +5 -5
  342. package/src/runtime/diagnostics/panels/agents.ts +2 -2
  343. package/src/runtime/diagnostics/panels/events.ts +2 -2
  344. package/src/runtime/diagnostics/panels/health.ts +2 -2
  345. package/src/runtime/diagnostics/panels/ops.ts +2 -2
  346. package/src/runtime/diagnostics/panels/policy.ts +2 -2
  347. package/src/runtime/diagnostics/panels/tasks.ts +2 -2
  348. package/src/runtime/diagnostics/panels/tool-calls.ts +2 -2
  349. package/src/runtime/diagnostics/provider.ts +1 -1
  350. package/src/runtime/ecosystem/recommendations.ts +1 -1
  351. package/src/runtime/emitters/agents.ts +2 -2
  352. package/src/runtime/emitters/automation.ts +2 -2
  353. package/src/runtime/emitters/communication.ts +2 -2
  354. package/src/runtime/emitters/compaction.ts +2 -2
  355. package/src/runtime/emitters/control-plane.ts +2 -2
  356. package/src/runtime/emitters/deliveries.ts +2 -2
  357. package/src/runtime/emitters/forensics.ts +2 -2
  358. package/src/runtime/emitters/index.ts +27 -27
  359. package/src/runtime/emitters/knowledge.ts +2 -2
  360. package/src/runtime/emitters/mcp.ts +2 -2
  361. package/src/runtime/emitters/ops.ts +2 -2
  362. package/src/runtime/emitters/orchestration.ts +2 -2
  363. package/src/runtime/emitters/permissions.ts +2 -2
  364. package/src/runtime/emitters/planner.ts +2 -2
  365. package/src/runtime/emitters/plugins.ts +2 -2
  366. package/src/runtime/emitters/providers.ts +2 -2
  367. package/src/runtime/emitters/routes.ts +2 -2
  368. package/src/runtime/emitters/security.ts +2 -2
  369. package/src/runtime/emitters/session.ts +2 -2
  370. package/src/runtime/emitters/surfaces.ts +2 -2
  371. package/src/runtime/emitters/tasks.ts +2 -2
  372. package/src/runtime/emitters/tools.ts +2 -2
  373. package/src/runtime/emitters/transport.ts +2 -2
  374. package/src/runtime/emitters/turn.ts +3 -3
  375. package/src/runtime/emitters/ui.ts +2 -2
  376. package/src/runtime/emitters/watchers.ts +2 -2
  377. package/src/runtime/emitters/workflows.ts +3 -3
  378. package/src/runtime/eval/index.ts +3 -3
  379. package/src/runtime/eval/runner.ts +1 -1
  380. package/src/runtime/eval/suites.ts +1 -1
  381. package/src/runtime/events/domain-map.ts +2 -2
  382. package/src/runtime/events/index.ts +1 -194
  383. package/src/runtime/events/turn.ts +1 -60
  384. package/src/runtime/events/workflows.ts +1 -17
  385. package/src/runtime/forensics/collector.ts +4 -4
  386. package/src/runtime/forensics/index.ts +1 -1
  387. package/src/runtime/foundation-clients.ts +14 -14
  388. package/src/runtime/foundation-services.ts +8 -8
  389. package/src/runtime/guidance.ts +3 -3
  390. package/src/runtime/health/effect-handlers.ts +3 -3
  391. package/src/runtime/health/index.ts +4 -4
  392. package/src/runtime/health/wiring.ts +2 -2
  393. package/src/runtime/index.ts +29 -29
  394. package/src/runtime/integration/helpers.ts +12 -12
  395. package/src/runtime/lifecycle.ts +4 -4
  396. package/src/runtime/mcp/index.ts +3 -3
  397. package/src/runtime/mcp/manager.ts +1 -1
  398. package/src/runtime/network/inbound.ts +2 -2
  399. package/src/runtime/network/index.ts +5 -5
  400. package/src/runtime/network/outbound.ts +2 -2
  401. package/src/runtime/network/shared.ts +1 -1
  402. package/src/runtime/operator-client.ts +9 -9
  403. package/src/runtime/ops/control-plane.ts +2 -2
  404. package/src/runtime/ops/index.ts +3 -3
  405. package/src/runtime/ops/playbooks/index.ts +2 -2
  406. package/src/runtime/ops/playbooks/session-unrecoverable.ts +2 -2
  407. package/src/runtime/ops/playbooks/stuck-turn.ts +1 -1
  408. package/src/runtime/ops/runtime-context.ts +1 -1
  409. package/src/runtime/orchestration/spawn-policy.ts +1 -1
  410. package/src/runtime/peer-client.ts +3 -3
  411. package/src/runtime/perf/index.ts +1 -1
  412. package/src/runtime/perf/slo-collector.ts +1 -1
  413. package/src/runtime/permissions/index.ts +5 -5
  414. package/src/runtime/permissions/policy-runtime.ts +1 -175
  415. package/src/runtime/permissions/rule-suggestions.ts +1 -1
  416. package/src/runtime/plugins/hot-reload.ts +4 -4
  417. package/src/runtime/plugins/index.ts +13 -13
  418. package/src/runtime/plugins/lifecycle.ts +1 -1
  419. package/src/runtime/plugins/manager.ts +10 -10
  420. package/src/runtime/plugins/manifest.ts +2 -2
  421. package/src/runtime/plugins/quarantine.ts +2 -2
  422. package/src/runtime/plugins/trust.ts +2 -2
  423. package/src/runtime/plugins/types.ts +1 -1
  424. package/src/runtime/provider-accounts/registry.ts +2 -2
  425. package/src/runtime/remote/distributed-runtime-contract-schemas.ts +3 -3
  426. package/src/runtime/remote/index.ts +3 -3
  427. package/src/runtime/remote/runner-registry.ts +2 -2
  428. package/src/runtime/remote/supervisor.ts +1 -1
  429. package/src/runtime/runtime-hook-api.ts +1 -1
  430. package/src/runtime/runtime-knowledge-api.ts +1 -1
  431. package/src/runtime/runtime-mcp-api.ts +1 -1
  432. package/src/runtime/runtime-ops-api.ts +2 -2
  433. package/src/runtime/runtime-provider-api.ts +1 -1
  434. package/src/runtime/services.ts +35 -32
  435. package/src/runtime/session-maintenance.ts +1 -1
  436. package/src/runtime/session-persistence.ts +2 -2
  437. package/src/runtime/session-return-context.ts +3 -3
  438. package/src/runtime/settings/control-plane-store.ts +1 -1
  439. package/src/runtime/settings/control-plane.ts +2 -2
  440. package/src/runtime/shell-command-extensions.ts +7 -7
  441. package/src/runtime/shell-command-ops.ts +6 -6
  442. package/src/runtime/shell-command-platform.ts +1 -1
  443. package/src/runtime/shell-command-services.ts +17 -17
  444. package/src/runtime/shell-command-workspace.ts +1 -1
  445. package/src/runtime/store/domains/conversation.ts +1 -1
  446. package/src/runtime/store/domains/index.ts +4 -4
  447. package/src/runtime/store/domains/permissions.ts +1 -1
  448. package/src/runtime/store/helpers/reducers/conversation.ts +3 -3
  449. package/src/runtime/store/helpers/reducers/lifecycle.ts +3 -3
  450. package/src/runtime/store/helpers/reducers/shared.ts +2 -2
  451. package/src/runtime/store/helpers/reducers/sync.ts +1 -1
  452. package/src/runtime/store/helpers/reducers.ts +4 -4
  453. package/src/runtime/store/index.ts +4 -4
  454. package/src/runtime/store/selectors/index.ts +2 -2
  455. package/src/runtime/store/state.ts +4 -4
  456. package/src/runtime/tasks/adapters/acp-adapter.ts +1 -1
  457. package/src/runtime/tasks/adapters/index.ts +6 -6
  458. package/src/runtime/tasks/index.ts +3 -3
  459. package/src/runtime/tasks/manager.ts +3 -3
  460. package/src/runtime/telemetry/api-helpers.ts +2 -2
  461. package/src/runtime/telemetry/api.ts +2 -2
  462. package/src/runtime/telemetry/index.ts +5 -5
  463. package/src/runtime/telemetry/instrumentation/domain-bridge-agent-session.ts +1 -1
  464. package/src/runtime/telemetry/instrumentation/domain-bridge-plugin-mcp.ts +1 -1
  465. package/src/runtime/telemetry/instrumentation/domain-bridge-shared.ts +1 -1
  466. package/src/runtime/telemetry/instrumentation/domain-bridge-transport-task.ts +1 -1
  467. package/src/runtime/telemetry/instrumentation/domain-bridge.ts +5 -5
  468. package/src/runtime/telemetry/instrumentation/index.ts +3 -3
  469. package/src/runtime/tools/context.ts +3 -3
  470. package/src/runtime/tools/index.ts +4 -4
  471. package/src/runtime/tools/phased-executor.ts +3 -3
  472. package/src/runtime/tools/phases/budget.ts +1 -1
  473. package/src/runtime/tools/phases/execute.ts +1 -1
  474. package/src/runtime/tools/phases/index.ts +7 -7
  475. package/src/runtime/tools/phases/map-output.ts +1 -1
  476. package/src/runtime/tools/phases/permission.ts +2 -2
  477. package/src/runtime/tools/phases/posthook.ts +1 -1
  478. package/src/runtime/tools/phases/prehook.ts +1 -1
  479. package/src/runtime/tools/phases/validate.ts +1 -1
  480. package/src/runtime/transports/direct.ts +4 -4
  481. package/src/runtime/transports/http-helpers.ts +3 -3
  482. package/src/runtime/transports/http-types.ts +6 -6
  483. package/src/runtime/transports/http.ts +8 -8
  484. package/src/runtime/transports/realtime.ts +4 -4
  485. package/src/runtime/transports/remote-events.ts +1 -1
  486. package/src/runtime/transports/shared.ts +2 -2
  487. package/src/runtime/transports/ui-runtime-events.ts +2 -2
  488. package/src/runtime/ui/index.ts +7 -7
  489. package/src/runtime/ui/model-picker/data-provider.ts +4 -4
  490. package/src/runtime/ui/model-picker/health-enrichment.ts +3 -3
  491. package/src/runtime/ui/model-picker/index.ts +8 -8
  492. package/src/runtime/ui/provider-health/data-provider.ts +2 -2
  493. package/src/runtime/ui/provider-health/fallback-visualizer.ts +1 -1
  494. package/src/runtime/ui/provider-health/index.ts +5 -5
  495. package/src/runtime/ui-events.ts +1 -1
  496. package/src/runtime/ui-read-models-core.ts +2 -2
  497. package/src/runtime/ui-read-models-observability-maintenance.ts +4 -4
  498. package/src/runtime/ui-read-models-observability-options.ts +1 -1
  499. package/src/runtime/ui-read-models-observability-remote.ts +2 -2
  500. package/src/runtime/ui-read-models-observability-security.ts +3 -3
  501. package/src/runtime/ui-read-models-observability-system.ts +6 -6
  502. package/src/runtime/ui-read-models-observability.ts +10 -10
  503. package/src/runtime/ui-read-models-operations.ts +2 -2
  504. package/src/runtime/ui-read-models.ts +7 -7
  505. package/src/runtime/ui-service-queries.ts +2 -2
  506. package/src/runtime/ui-services.ts +7 -7
  507. package/src/runtime/worktree/registry.ts +1 -1
  508. package/src/scripts/process-messages.ts +1 -1
  509. package/src/sessions/manager.ts +9 -383
  510. package/src/shell/blocking-input.ts +3 -3
  511. package/src/shell/ui-openers.ts +3 -3
  512. package/src/state/file-watcher.ts +1 -1
  513. package/src/state/index.ts +10 -10
  514. package/src/state/knowledge-injection.ts +2 -2
  515. package/src/state/memory-embedding-http.ts +2 -2
  516. package/src/state/memory-embeddings.ts +1 -1
  517. package/src/state/memory-ingest.ts +3 -3
  518. package/src/state/memory-registry.ts +3 -3
  519. package/src/state/memory-store-helpers.ts +1 -1
  520. package/src/state/memory-store.ts +4 -4
  521. package/src/state/memory-vector-store.ts +3 -3
  522. package/src/tools/agent/index.ts +7 -7
  523. package/src/tools/agent/manager.ts +8 -8
  524. package/src/tools/analyze/git-modes.ts +2 -2
  525. package/src/tools/analyze/index.ts +2 -2
  526. package/src/tools/channel/agent-tools.ts +1 -1
  527. package/src/tools/channel/index.ts +2 -2
  528. package/src/tools/edit/core.ts +3 -3
  529. package/src/tools/edit/index.ts +2 -2
  530. package/src/tools/edit/phased.ts +2 -2
  531. package/src/tools/fetch/index.ts +2 -2
  532. package/src/tools/fetch/phased.ts +1 -1
  533. package/src/tools/index.ts +21 -21
  534. package/src/tools/mcp/index.ts +1 -1
  535. package/src/tools/remote-trigger/index.ts +1 -1
  536. package/src/tools/shared/auto-heal.ts +2 -2
  537. package/src/tools/state/index.ts +1 -1
  538. package/src/tools/web-search/index.ts +1 -1
  539. package/src/tools/write/index.ts +3 -3
  540. package/src/tools/write/phased.ts +1 -1
  541. package/src/version.ts +1 -1
  542. package/src/watchers/index.ts +2 -2
  543. package/src/watchers/registry.ts +2 -2
  544. package/src/web-search/index.ts +10 -10
  545. package/src/web-search/provider-registry.ts +8 -8
  546. package/src/web-search/providers/brave.ts +1 -1
  547. package/src/web-search/providers/duckduckgo.ts +1 -1
  548. package/src/web-search/providers/exa.ts +1 -1
  549. package/src/web-search/providers/firecrawl.ts +1 -1
  550. package/src/web-search/providers/perplexity.ts +1 -1
  551. package/src/web-search/providers/searxng.ts +1 -1
  552. package/src/web-search/providers/shared.ts +1 -1
  553. package/src/web-search/providers/tavily.ts +1 -1
  554. package/src/web-search/service.ts +2 -2
  555. package/src/runtime/ecosystem/catalog.ts +0 -606
@@ -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