@pellux/goodvibes-tui 0.18.4

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 (732) hide show
  1. package/.goodvibes/GOODVIBES.md +35 -0
  2. package/.goodvibes/agents/reviewer.md +89 -0
  3. package/.goodvibes/skills/add-provider/SKILL.md +199 -0
  4. package/CHANGELOG.md +1681 -0
  5. package/README.md +1607 -0
  6. package/bin/goodvibes +66 -0
  7. package/docs/README.md +32 -0
  8. package/docs/foundation-artifacts/README.md +16 -0
  9. package/docs/foundation-artifacts/knowledge-graphql.graphql +397 -0
  10. package/docs/foundation-artifacts/knowledge-store.sql +183 -0
  11. package/docs/foundation-artifacts/operator-contract.json +55157 -0
  12. package/docs/foundation-artifacts/peer-contract.json +2384 -0
  13. package/package.json +114 -0
  14. package/scripts/postinstall.mjs +203 -0
  15. package/src/acp/connection.ts +447 -0
  16. package/src/acp/index.ts +7 -0
  17. package/src/acp/manager.ts +133 -0
  18. package/src/adapters/bluebubbles/index.ts +127 -0
  19. package/src/adapters/discord/index.ts +297 -0
  20. package/src/adapters/github/index.ts +73 -0
  21. package/src/adapters/google-chat/index.ts +119 -0
  22. package/src/adapters/imessage/index.ts +92 -0
  23. package/src/adapters/index.ts +15 -0
  24. package/src/adapters/matrix/index.ts +116 -0
  25. package/src/adapters/mattermost/index.ts +151 -0
  26. package/src/adapters/msteams/index.ts +180 -0
  27. package/src/adapters/ntfy/index.ts +118 -0
  28. package/src/adapters/signal/index.ts +92 -0
  29. package/src/adapters/slack/index.ts +323 -0
  30. package/src/adapters/telegram/index.ts +160 -0
  31. package/src/adapters/types.ts +97 -0
  32. package/src/adapters/webhook/index.ts +178 -0
  33. package/src/adapters/whatsapp/index.ts +135 -0
  34. package/src/agents/message-bus-core.ts +312 -0
  35. package/src/agents/message-bus.ts +2 -0
  36. package/src/agents/orchestrator-prompts.ts +351 -0
  37. package/src/agents/orchestrator-runner.ts +668 -0
  38. package/src/agents/orchestrator.ts +437 -0
  39. package/src/agents/session.ts +108 -0
  40. package/src/agents/worktree.ts +153 -0
  41. package/src/agents/wrfc-config.ts +47 -0
  42. package/src/agents/wrfc-controller.ts +747 -0
  43. package/src/agents/wrfc-gate-runtime.ts +75 -0
  44. package/src/agents/wrfc-reporting.ts +284 -0
  45. package/src/agents/wrfc-runtime-events.ts +150 -0
  46. package/src/agents/wrfc-types.ts +67 -0
  47. package/src/automation/delivery-manager.ts +368 -0
  48. package/src/automation/index.ts +72 -0
  49. package/src/automation/manager-runtime-delivery.ts +139 -0
  50. package/src/automation/manager-runtime-events.ts +131 -0
  51. package/src/automation/manager-runtime-execution.ts +511 -0
  52. package/src/automation/manager-runtime-helpers.ts +433 -0
  53. package/src/automation/manager-runtime-job-mutations.ts +175 -0
  54. package/src/automation/manager-runtime-reconcile.ts +148 -0
  55. package/src/automation/manager-runtime-scheduling.ts +189 -0
  56. package/src/automation/manager-runtime-sync.ts +54 -0
  57. package/src/automation/manager-runtime.ts +721 -0
  58. package/src/automation/manager.ts +10 -0
  59. package/src/automation/service.ts +242 -0
  60. package/src/channels/builtin/account-actions.ts +490 -0
  61. package/src/channels/builtin/accounts.ts +433 -0
  62. package/src/channels/builtin/contracts.ts +405 -0
  63. package/src/channels/builtin/plugins.ts +308 -0
  64. package/src/channels/builtin/rendering.ts +174 -0
  65. package/src/channels/builtin/setup-schema.ts +504 -0
  66. package/src/channels/builtin/shared.ts +96 -0
  67. package/src/channels/builtin/surfaces.ts +57 -0
  68. package/src/channels/builtin/targets.ts +693 -0
  69. package/src/channels/builtin-runtime.ts +443 -0
  70. package/src/channels/delivery/shared.ts +199 -0
  71. package/src/channels/delivery/strategies-bridge.ts +246 -0
  72. package/src/channels/delivery/strategies-core.ts +299 -0
  73. package/src/channels/delivery/strategies-enterprise.ts +178 -0
  74. package/src/channels/delivery/types.ts +59 -0
  75. package/src/channels/delivery-router.ts +127 -0
  76. package/src/channels/index.ts +77 -0
  77. package/src/channels/plugin-registry.ts +551 -0
  78. package/src/channels/provider-runtime.ts +330 -0
  79. package/src/channels/reply-pipeline.ts +522 -0
  80. package/src/channels/route-manager.ts +340 -0
  81. package/src/channels/surface-registry.ts +186 -0
  82. package/src/config/helper-model.ts +233 -0
  83. package/src/config/index.ts +193 -0
  84. package/src/config/manager.ts +404 -0
  85. package/src/config/secrets.ts +547 -0
  86. package/src/config/service-registry.ts +329 -0
  87. package/src/config/subscription-auth.ts +31 -0
  88. package/src/config/subscription-providers.ts +127 -0
  89. package/src/config/tool-llm.ts +110 -0
  90. package/src/control-plane/approval-broker.ts +351 -0
  91. package/src/control-plane/gateway.ts +713 -0
  92. package/src/control-plane/index.ts +54 -0
  93. package/src/control-plane/media-contract-schemas.ts +208 -0
  94. package/src/control-plane/method-catalog-admin.ts +136 -0
  95. package/src/control-plane/method-catalog-channels.ts +591 -0
  96. package/src/control-plane/method-catalog-control-automation.ts +475 -0
  97. package/src/control-plane/method-catalog-control-core.ts +594 -0
  98. package/src/control-plane/method-catalog-control.ts +8 -0
  99. package/src/control-plane/method-catalog-events.ts +74 -0
  100. package/src/control-plane/method-catalog-knowledge.ts +531 -0
  101. package/src/control-plane/method-catalog-media.ts +279 -0
  102. package/src/control-plane/method-catalog-runtime.ts +304 -0
  103. package/src/control-plane/method-catalog-shared.ts +223 -0
  104. package/src/control-plane/method-catalog.ts +242 -0
  105. package/src/control-plane/operator-contract-schemas-admin.ts +639 -0
  106. package/src/control-plane/operator-contract-schemas-channels.ts +375 -0
  107. package/src/control-plane/operator-contract-schemas-control.ts +226 -0
  108. package/src/control-plane/operator-contract-schemas-domains.ts +4 -0
  109. package/src/control-plane/operator-contract-schemas-knowledge.ts +582 -0
  110. package/src/control-plane/operator-contract-schemas-media.ts +297 -0
  111. package/src/control-plane/operator-contract-schemas-permissions.ts +100 -0
  112. package/src/control-plane/operator-contract-schemas-remote.ts +38 -0
  113. package/src/control-plane/operator-contract-schemas-runtime.ts +563 -0
  114. package/src/control-plane/operator-contract-schemas-shared.ts +85 -0
  115. package/src/control-plane/operator-contract-schemas-telemetry.ts +349 -0
  116. package/src/control-plane/operator-contract-schemas.ts +6 -0
  117. package/src/control-plane/operator-contract.ts +163 -0
  118. package/src/control-plane/session-broker.ts +780 -0
  119. package/src/core/compaction-sections.ts +492 -0
  120. package/src/core/compaction-types.ts +147 -0
  121. package/src/core/composer-state.ts +59 -0
  122. package/src/core/context-compaction.ts +542 -0
  123. package/src/core/conversation-compaction.ts +68 -0
  124. package/src/core/conversation-diff.ts +55 -0
  125. package/src/core/conversation-rendering.ts +343 -0
  126. package/src/core/conversation-utils.ts +72 -0
  127. package/src/core/conversation.ts +775 -0
  128. package/src/core/event-replay.ts +287 -0
  129. package/src/core/orchestrator-context-runtime.ts +407 -0
  130. package/src/core/orchestrator-follow-up-runtime.ts +134 -0
  131. package/src/core/orchestrator-runtime.ts +132 -0
  132. package/src/core/orchestrator-tool-runtime.ts +468 -0
  133. package/src/core/orchestrator-turn-helpers.ts +355 -0
  134. package/src/core/orchestrator-turn-loop.ts +443 -0
  135. package/src/core/orchestrator.ts +733 -0
  136. package/src/core/plan-command-handler.ts +169 -0
  137. package/src/core/system-message-router.ts +210 -0
  138. package/src/core/transcript-events/classify.ts +95 -0
  139. package/src/core/transcript-events/index.ts +15 -0
  140. package/src/daemon/cli.ts +88 -0
  141. package/src/daemon/control-plane.ts +522 -0
  142. package/src/daemon/facade-composition.ts +397 -0
  143. package/src/daemon/facade.ts +638 -0
  144. package/src/daemon/helpers.ts +74 -0
  145. package/src/daemon/http/router-route-contexts.ts +370 -0
  146. package/src/daemon/http/router.ts +531 -0
  147. package/src/daemon/http-listener.ts +301 -0
  148. package/src/daemon/index.ts +3 -0
  149. package/src/daemon/server.ts +1 -0
  150. package/src/daemon/service-manager.ts +413 -0
  151. package/src/daemon/surface-actions.ts +183 -0
  152. package/src/daemon/surface-delivery.ts +530 -0
  153. package/src/daemon/surface-policy.ts +60 -0
  154. package/src/daemon/transport-events.ts +110 -0
  155. package/src/daemon/types.ts +191 -0
  156. package/src/export/markdown.ts +213 -0
  157. package/src/export/session-export.ts +633 -0
  158. package/src/git/index.ts +1 -0
  159. package/src/git/service.ts +414 -0
  160. package/src/hooks/chain-engine.ts +414 -0
  161. package/src/hooks/dispatcher.ts +414 -0
  162. package/src/hooks/hook-api.ts +170 -0
  163. package/src/hooks/index.ts +48 -0
  164. package/src/hooks/runners/agent.ts +93 -0
  165. package/src/hooks/runners/prompt.ts +69 -0
  166. package/src/hooks/workbench.ts +360 -0
  167. package/src/input/autocomplete.ts +96 -0
  168. package/src/input/bookmark-modal.ts +115 -0
  169. package/src/input/command-registry.ts +300 -0
  170. package/src/input/commands/branch-runtime.ts +72 -0
  171. package/src/input/commands/config.ts +515 -0
  172. package/src/input/commands/control-room-runtime.ts +255 -0
  173. package/src/input/commands/conversation-runtime.ts +207 -0
  174. package/src/input/commands/diff-runtime.ts +161 -0
  175. package/src/input/commands/discovery-runtime.ts +45 -0
  176. package/src/input/commands/eval.ts +204 -0
  177. package/src/input/commands/experience-runtime.ts +278 -0
  178. package/src/input/commands/git-runtime.ts +81 -0
  179. package/src/input/commands/guidance-runtime.ts +101 -0
  180. package/src/input/commands/health-runtime.ts +434 -0
  181. package/src/input/commands/hooks-runtime.ts +148 -0
  182. package/src/input/commands/incident-runtime.ts +95 -0
  183. package/src/input/commands/integration-runtime.ts +394 -0
  184. package/src/input/commands/intelligence-runtime.ts +223 -0
  185. package/src/input/commands/knowledge.ts +368 -0
  186. package/src/input/commands/local-auth-runtime.ts +105 -0
  187. package/src/input/commands/local-provider-runtime.ts +170 -0
  188. package/src/input/commands/local-runtime.ts +458 -0
  189. package/src/input/commands/local-setup-review.ts +192 -0
  190. package/src/input/commands/local-setup-transfer.ts +134 -0
  191. package/src/input/commands/local-setup.ts +292 -0
  192. package/src/input/commands/managed-runtime.ts +208 -0
  193. package/src/input/commands/marketplace-runtime.ts +290 -0
  194. package/src/input/commands/mcp-runtime.ts +202 -0
  195. package/src/input/commands/memory-product-runtime.ts +111 -0
  196. package/src/input/commands/memory.ts +151 -0
  197. package/src/input/commands/notify-runtime.ts +83 -0
  198. package/src/input/commands/operator-panel-runtime.ts +141 -0
  199. package/src/input/commands/operator-runtime.ts +392 -0
  200. package/src/input/commands/permissions-runtime.ts +104 -0
  201. package/src/input/commands/planning-runtime.ts +97 -0
  202. package/src/input/commands/platform-access-runtime.ts +422 -0
  203. package/src/input/commands/platform-runtime.ts +6 -0
  204. package/src/input/commands/platform-sandbox-qemu.ts +137 -0
  205. package/src/input/commands/platform-sandbox-runtime.ts +406 -0
  206. package/src/input/commands/platform-sandbox-session.ts +128 -0
  207. package/src/input/commands/platform-services-runtime.ts +246 -0
  208. package/src/input/commands/policy-dispatch.ts +339 -0
  209. package/src/input/commands/policy.ts +17 -0
  210. package/src/input/commands/product-runtime.ts +351 -0
  211. package/src/input/commands/profile-sync-runtime.ts +99 -0
  212. package/src/input/commands/provider-accounts-runtime.ts +113 -0
  213. package/src/input/commands/provider.ts +363 -0
  214. package/src/input/commands/quit-shared.ts +162 -0
  215. package/src/input/commands/recall-bundle.ts +132 -0
  216. package/src/input/commands/recall-capture.ts +152 -0
  217. package/src/input/commands/recall-query.ts +229 -0
  218. package/src/input/commands/recall-review.ts +98 -0
  219. package/src/input/commands/recall-shared.ts +22 -0
  220. package/src/input/commands/remote-runtime-pool.ts +106 -0
  221. package/src/input/commands/remote-runtime-setup.ts +199 -0
  222. package/src/input/commands/remote-runtime.ts +531 -0
  223. package/src/input/commands/replay-runtime.ts +18 -0
  224. package/src/input/commands/runtime-services.ts +279 -0
  225. package/src/input/commands/schedule-runtime.ts +332 -0
  226. package/src/input/commands/services-runtime.ts +207 -0
  227. package/src/input/commands/session-content.ts +408 -0
  228. package/src/input/commands/session-workflow.ts +464 -0
  229. package/src/input/commands/session.ts +376 -0
  230. package/src/input/commands/settings-sync-runtime.ts +173 -0
  231. package/src/input/commands/share-runtime.ts +114 -0
  232. package/src/input/commands/shell-core.ts +320 -0
  233. package/src/input/commands/skills-runtime.ts +221 -0
  234. package/src/input/commands/subscription-runtime.ts +434 -0
  235. package/src/input/commands/tasks-runtime.ts +230 -0
  236. package/src/input/commands/teamwork-runtime.ts +374 -0
  237. package/src/input/commands/teleport-runtime.ts +57 -0
  238. package/src/input/commands/worktree-runtime.ts +137 -0
  239. package/src/input/commands.ts +127 -0
  240. package/src/input/file-picker.ts +192 -0
  241. package/src/input/handler-command-route.ts +106 -0
  242. package/src/input/handler-content-actions.ts +465 -0
  243. package/src/input/handler-feed-routes.ts +541 -0
  244. package/src/input/handler-feed.ts +361 -0
  245. package/src/input/handler-modal-routes.ts +335 -0
  246. package/src/input/handler-modal-stack.ts +237 -0
  247. package/src/input/handler-modal-token-routes.ts +272 -0
  248. package/src/input/handler-picker-routes.ts +416 -0
  249. package/src/input/handler-prompt-buffer.ts +320 -0
  250. package/src/input/handler-shortcuts.ts +195 -0
  251. package/src/input/handler-ui-state.ts +294 -0
  252. package/src/input/handler.ts +798 -0
  253. package/src/input/input-history.ts +267 -0
  254. package/src/input/keybindings.ts +256 -0
  255. package/src/input/model-picker.ts +730 -0
  256. package/src/input/panel-integration-actions.ts +77 -0
  257. package/src/input/profile-picker-modal.ts +222 -0
  258. package/src/input/search.ts +100 -0
  259. package/src/input/selection-modal.ts +163 -0
  260. package/src/input/selection.ts +135 -0
  261. package/src/input/session-picker-modal.ts +136 -0
  262. package/src/input/settings-modal.ts +718 -0
  263. package/src/input/submission-intent.ts +18 -0
  264. package/src/input/submission-router.ts +64 -0
  265. package/src/integrations/index.ts +42 -0
  266. package/src/integrations/notifier.ts +206 -0
  267. package/src/integrations/webhooks.ts +177 -0
  268. package/src/knowledge/consolidation.ts +346 -0
  269. package/src/knowledge/graphql.ts +324 -0
  270. package/src/knowledge/index.ts +60 -0
  271. package/src/knowledge/ingest-compile.ts +386 -0
  272. package/src/knowledge/ingest-context.ts +18 -0
  273. package/src/knowledge/ingest-inputs.ts +387 -0
  274. package/src/knowledge/ingest.ts +20 -0
  275. package/src/knowledge/internal.ts +257 -0
  276. package/src/knowledge/knowledge-api.ts +432 -0
  277. package/src/knowledge/lint.ts +121 -0
  278. package/src/knowledge/memory-sync.ts +62 -0
  279. package/src/knowledge/packet.ts +370 -0
  280. package/src/knowledge/scheduling.ts +283 -0
  281. package/src/knowledge/service.ts +715 -0
  282. package/src/main.ts +798 -0
  283. package/src/mcp/client.ts +383 -0
  284. package/src/mcp/index.ts +12 -0
  285. package/src/mcp/mcp-api.ts +90 -0
  286. package/src/mcp/registry.ts +508 -0
  287. package/src/media/builtin-image-understanding.ts +303 -0
  288. package/src/media/builtin-providers.ts +26 -0
  289. package/src/media/index.ts +18 -0
  290. package/src/multimodal/index.ts +13 -0
  291. package/src/multimodal/service.ts +492 -0
  292. package/src/panels/agent-inspector-panel.ts +515 -0
  293. package/src/panels/agent-inspector-shared.ts +94 -0
  294. package/src/panels/agent-logs-panel.ts +539 -0
  295. package/src/panels/agent-logs-shared.ts +129 -0
  296. package/src/panels/approval-panel.ts +169 -0
  297. package/src/panels/automation-control-panel.ts +253 -0
  298. package/src/panels/base-panel.ts +72 -0
  299. package/src/panels/builtin/agent.ts +88 -0
  300. package/src/panels/builtin/development.ts +111 -0
  301. package/src/panels/builtin/knowledge.ts +26 -0
  302. package/src/panels/builtin/operations.ts +385 -0
  303. package/src/panels/builtin/session.ts +61 -0
  304. package/src/panels/builtin/shared.ts +240 -0
  305. package/src/panels/builtin-panels.ts +23 -0
  306. package/src/panels/cockpit-panel.ts +183 -0
  307. package/src/panels/communication-panel.ts +191 -0
  308. package/src/panels/context-visualizer-panel.ts +199 -0
  309. package/src/panels/control-plane-panel.ts +266 -0
  310. package/src/panels/cost-tracker-panel.ts +444 -0
  311. package/src/panels/debug-panel.ts +432 -0
  312. package/src/panels/diff-panel.ts +518 -0
  313. package/src/panels/docs-panel.ts +283 -0
  314. package/src/panels/eval-panel.ts +399 -0
  315. package/src/panels/file-explorer-panel.ts +556 -0
  316. package/src/panels/file-preview-panel.ts +412 -0
  317. package/src/panels/forensics-panel.ts +364 -0
  318. package/src/panels/git-panel.ts +630 -0
  319. package/src/panels/hooks-panel.ts +274 -0
  320. package/src/panels/incident-review-panel.ts +247 -0
  321. package/src/panels/index.ts +48 -0
  322. package/src/panels/intelligence-panel.ts +176 -0
  323. package/src/panels/knowledge-panel.ts +328 -0
  324. package/src/panels/local-auth-panel.ts +146 -0
  325. package/src/panels/marketplace-panel.ts +223 -0
  326. package/src/panels/mcp-panel.ts +260 -0
  327. package/src/panels/memory-panel.ts +293 -0
  328. package/src/panels/ops-control-panel.ts +184 -0
  329. package/src/panels/ops-strategy-panel.ts +235 -0
  330. package/src/panels/orchestration-panel.ts +254 -0
  331. package/src/panels/panel-list-panel.ts +508 -0
  332. package/src/panels/panel-manager.ts +538 -0
  333. package/src/panels/panel-picker.ts +106 -0
  334. package/src/panels/plan-dashboard-panel.ts +272 -0
  335. package/src/panels/plugins-panel.ts +201 -0
  336. package/src/panels/policy-panel.ts +308 -0
  337. package/src/panels/polish.ts +668 -0
  338. package/src/panels/provider-account-snapshot.ts +259 -0
  339. package/src/panels/provider-accounts-panel.ts +221 -0
  340. package/src/panels/provider-health-domains.ts +211 -0
  341. package/src/panels/provider-health-panel.ts +725 -0
  342. package/src/panels/provider-health-tracker.ts +115 -0
  343. package/src/panels/provider-stats-panel.ts +366 -0
  344. package/src/panels/remote-panel.ts +449 -0
  345. package/src/panels/routes-panel.ts +228 -0
  346. package/src/panels/sandbox-panel.ts +289 -0
  347. package/src/panels/schedule-panel.ts +344 -0
  348. package/src/panels/search-focus.ts +32 -0
  349. package/src/panels/security-panel.ts +329 -0
  350. package/src/panels/services-panel.ts +271 -0
  351. package/src/panels/session-browser-panel.ts +399 -0
  352. package/src/panels/session-maintenance.ts +125 -0
  353. package/src/panels/settings-sync-panel.ts +164 -0
  354. package/src/panels/skills-panel.ts +475 -0
  355. package/src/panels/subscription-panel.ts +273 -0
  356. package/src/panels/symbol-outline-panel.ts +486 -0
  357. package/src/panels/system-messages-panel.ts +224 -0
  358. package/src/panels/tasks-panel.ts +448 -0
  359. package/src/panels/thinking-panel.ts +304 -0
  360. package/src/panels/token-budget-panel.ts +469 -0
  361. package/src/panels/tool-inspector-panel.ts +434 -0
  362. package/src/panels/types.ts +44 -0
  363. package/src/panels/watchers-panel.ts +241 -0
  364. package/src/panels/welcome-panel.ts +64 -0
  365. package/src/panels/worktree-panel.ts +180 -0
  366. package/src/panels/wrfc-panel.ts +480 -0
  367. package/src/permissions/briefs/build.ts +88 -0
  368. package/src/permissions/manager.ts +356 -0
  369. package/src/permissions/prompt.ts +184 -0
  370. package/src/plugins/api.ts +383 -0
  371. package/src/plugins/loader.ts +304 -0
  372. package/src/plugins/manager.ts +481 -0
  373. package/src/profiles/shape.ts +58 -0
  374. package/src/providers/amazon-bedrock-mantle.ts +50 -0
  375. package/src/providers/amazon-bedrock.ts +61 -0
  376. package/src/providers/anthropic-compat.ts +373 -0
  377. package/src/providers/anthropic-sdk-provider.ts +230 -0
  378. package/src/providers/anthropic-vertex.ts +59 -0
  379. package/src/providers/anthropic.ts +469 -0
  380. package/src/providers/auto-register.ts +417 -0
  381. package/src/providers/builtin-catalog.ts +326 -0
  382. package/src/providers/builtin-registry.ts +575 -0
  383. package/src/providers/cache-planner.ts +258 -0
  384. package/src/providers/capabilities.ts +601 -0
  385. package/src/providers/custom-loader.ts +425 -0
  386. package/src/providers/discovered-compat.ts +18 -0
  387. package/src/providers/discovered-factory.ts +61 -0
  388. package/src/providers/discovered-traits.ts +138 -0
  389. package/src/providers/gemini.ts +462 -0
  390. package/src/providers/github-copilot.ts +254 -0
  391. package/src/providers/index.ts +47 -0
  392. package/src/providers/interface.ts +185 -0
  393. package/src/providers/llama-cpp.ts +402 -0
  394. package/src/providers/lm-studio-helpers.ts +367 -0
  395. package/src/providers/lm-studio.ts +484 -0
  396. package/src/providers/model-catalog-cache.ts +221 -0
  397. package/src/providers/model-catalog-notifications.ts +97 -0
  398. package/src/providers/model-catalog-synthetic.ts +202 -0
  399. package/src/providers/model-catalog.ts +211 -0
  400. package/src/providers/model-limits.ts +280 -0
  401. package/src/providers/ollama.ts +469 -0
  402. package/src/providers/openai-codex.ts +472 -0
  403. package/src/providers/openai-compat.ts +615 -0
  404. package/src/providers/openai.ts +231 -0
  405. package/src/providers/optimizer.ts +381 -0
  406. package/src/providers/provider-api.ts +553 -0
  407. package/src/providers/registry-helpers.ts +34 -0
  408. package/src/providers/registry-models.ts +77 -0
  409. package/src/providers/registry-types.ts +67 -0
  410. package/src/providers/registry.ts +729 -0
  411. package/src/providers/runtime-metadata.ts +149 -0
  412. package/src/providers/runtime-snapshot.ts +130 -0
  413. package/src/providers/synthetic.ts +561 -0
  414. package/src/providers/tier-prompts.ts +84 -0
  415. package/src/providers/tool-formats.ts +414 -0
  416. package/src/renderer/agent-detail-modal.ts +285 -0
  417. package/src/renderer/autocomplete-overlay.ts +154 -0
  418. package/src/renderer/block-actions.ts +76 -0
  419. package/src/renderer/bookmark-modal.ts +101 -0
  420. package/src/renderer/bottom-bar.ts +58 -0
  421. package/src/renderer/buffer.ts +34 -0
  422. package/src/renderer/code-block.ts +373 -0
  423. package/src/renderer/compositor.ts +261 -0
  424. package/src/renderer/context-inspector.ts +219 -0
  425. package/src/renderer/conversation-layout.ts +67 -0
  426. package/src/renderer/conversation-overlays.ts +123 -0
  427. package/src/renderer/conversation-surface.ts +260 -0
  428. package/src/renderer/diff-view.ts +132 -0
  429. package/src/renderer/diff.ts +122 -0
  430. package/src/renderer/file-picker-overlay.ts +101 -0
  431. package/src/renderer/file-tree.ts +153 -0
  432. package/src/renderer/git-status.ts +89 -0
  433. package/src/renderer/help-overlay.ts +247 -0
  434. package/src/renderer/history-search-overlay.ts +73 -0
  435. package/src/renderer/layout-engine.ts +97 -0
  436. package/src/renderer/layout.ts +32 -0
  437. package/src/renderer/live-tail-modal.ts +156 -0
  438. package/src/renderer/markdown.ts +777 -0
  439. package/src/renderer/modal-factory.ts +467 -0
  440. package/src/renderer/modal-utils.ts +24 -0
  441. package/src/renderer/model-picker-overlay.ts +396 -0
  442. package/src/renderer/overlay-box.ts +165 -0
  443. package/src/renderer/overlay-viewport.ts +104 -0
  444. package/src/renderer/panel-composite.ts +80 -0
  445. package/src/renderer/panel-picker-overlay.ts +202 -0
  446. package/src/renderer/panel-tab-bar.ts +69 -0
  447. package/src/renderer/panel-workspace-bar.ts +38 -0
  448. package/src/renderer/process-indicator.ts +96 -0
  449. package/src/renderer/process-modal.ts +295 -0
  450. package/src/renderer/profile-picker-modal.ts +129 -0
  451. package/src/renderer/progress.ts +98 -0
  452. package/src/renderer/search-overlay.ts +54 -0
  453. package/src/renderer/selection-modal-overlay.ts +214 -0
  454. package/src/renderer/semantic-diff.ts +369 -0
  455. package/src/renderer/session-picker-modal.ts +127 -0
  456. package/src/renderer/settings-modal.ts +701 -0
  457. package/src/renderer/shell-surface.ts +88 -0
  458. package/src/renderer/surface-layout.ts +101 -0
  459. package/src/renderer/syntax-highlighter.ts +542 -0
  460. package/src/renderer/system-message.ts +83 -0
  461. package/src/renderer/tab-strip.ts +108 -0
  462. package/src/renderer/text-layout.ts +31 -0
  463. package/src/renderer/thinking.ts +17 -0
  464. package/src/renderer/tool-call.ts +233 -0
  465. package/src/renderer/ui-factory.ts +524 -0
  466. package/src/renderer/ui-primitives.ts +96 -0
  467. package/src/runtime/auth/inspection.ts +125 -0
  468. package/src/runtime/bootstrap-background.ts +147 -0
  469. package/src/runtime/bootstrap-command-context.ts +265 -0
  470. package/src/runtime/bootstrap-command-parts.ts +357 -0
  471. package/src/runtime/bootstrap-core.ts +375 -0
  472. package/src/runtime/bootstrap-helpers.ts +88 -0
  473. package/src/runtime/bootstrap-hook-bridge.ts +271 -0
  474. package/src/runtime/bootstrap-runtime-events.ts +254 -0
  475. package/src/runtime/bootstrap-services.ts +197 -0
  476. package/src/runtime/bootstrap-shell.ts +262 -0
  477. package/src/runtime/bootstrap.ts +488 -0
  478. package/src/runtime/compaction/index.ts +90 -0
  479. package/src/runtime/compaction/lifecycle.ts +167 -0
  480. package/src/runtime/compaction/manager.ts +474 -0
  481. package/src/runtime/compaction/quality-score.ts +279 -0
  482. package/src/runtime/compaction/resume-repair.ts +183 -0
  483. package/src/runtime/compaction/strategies/autocompact.ts +65 -0
  484. package/src/runtime/compaction/strategies/boundary-commit.ts +106 -0
  485. package/src/runtime/compaction/strategies/collapse.ts +90 -0
  486. package/src/runtime/compaction/strategies/index.ts +23 -0
  487. package/src/runtime/compaction/strategies/microcompact.ts +74 -0
  488. package/src/runtime/compaction/strategies/reactive.ts +89 -0
  489. package/src/runtime/compaction/types.ts +221 -0
  490. package/src/runtime/context.ts +158 -0
  491. package/src/runtime/diagnostics/actions.ts +776 -0
  492. package/src/runtime/diagnostics/index.ts +99 -0
  493. package/src/runtime/diagnostics/panels/agents.ts +252 -0
  494. package/src/runtime/diagnostics/panels/events.ts +188 -0
  495. package/src/runtime/diagnostics/panels/health.ts +242 -0
  496. package/src/runtime/diagnostics/panels/index.ts +24 -0
  497. package/src/runtime/diagnostics/panels/ops.ts +156 -0
  498. package/src/runtime/diagnostics/panels/policy.ts +176 -0
  499. package/src/runtime/diagnostics/panels/tasks.ts +251 -0
  500. package/src/runtime/diagnostics/panels/tool-calls.ts +267 -0
  501. package/src/runtime/diagnostics/provider.ts +262 -0
  502. package/src/runtime/ecosystem/catalog.ts +606 -0
  503. package/src/runtime/ecosystem/recommendations.ts +117 -0
  504. package/src/runtime/emitters/agents.ts +96 -0
  505. package/src/runtime/emitters/automation.ts +112 -0
  506. package/src/runtime/emitters/communication.ts +53 -0
  507. package/src/runtime/emitters/compaction.ts +161 -0
  508. package/src/runtime/emitters/control-plane.ts +65 -0
  509. package/src/runtime/emitters/deliveries.ts +65 -0
  510. package/src/runtime/emitters/forensics.ts +17 -0
  511. package/src/runtime/emitters/index.ts +59 -0
  512. package/src/runtime/emitters/knowledge.ts +129 -0
  513. package/src/runtime/emitters/mcp.ts +95 -0
  514. package/src/runtime/emitters/ops.ts +163 -0
  515. package/src/runtime/emitters/orchestration.ts +87 -0
  516. package/src/runtime/emitters/permissions.ts +98 -0
  517. package/src/runtime/emitters/planner.ts +23 -0
  518. package/src/runtime/emitters/plugins.ts +78 -0
  519. package/src/runtime/emitters/providers.ts +30 -0
  520. package/src/runtime/emitters/routes.ts +57 -0
  521. package/src/runtime/emitters/security.ts +53 -0
  522. package/src/runtime/emitters/session.ts +93 -0
  523. package/src/runtime/emitters/surfaces.ts +57 -0
  524. package/src/runtime/emitters/tasks.ts +69 -0
  525. package/src/runtime/emitters/tools.ts +140 -0
  526. package/src/runtime/emitters/transport.ts +78 -0
  527. package/src/runtime/emitters/turn.ts +155 -0
  528. package/src/runtime/emitters/ui.ts +57 -0
  529. package/src/runtime/emitters/watchers.ts +57 -0
  530. package/src/runtime/emitters/workflows.ts +79 -0
  531. package/src/runtime/eval/index.ts +48 -0
  532. package/src/runtime/eval/runner.ts +163 -0
  533. package/src/runtime/eval/suites.ts +264 -0
  534. package/src/runtime/events/domain-map.ts +148 -0
  535. package/src/runtime/events/index.ts +194 -0
  536. package/src/runtime/events/turn.ts +60 -0
  537. package/src/runtime/events/workflows.ts +17 -0
  538. package/src/runtime/forensics/collector.ts +693 -0
  539. package/src/runtime/forensics/index.ts +23 -0
  540. package/src/runtime/foundation-clients.ts +78 -0
  541. package/src/runtime/foundation-services.ts +96 -0
  542. package/src/runtime/guidance.ts +183 -0
  543. package/src/runtime/health/effect-handlers.ts +189 -0
  544. package/src/runtime/health/index.ts +70 -0
  545. package/src/runtime/health/wiring.ts +115 -0
  546. package/src/runtime/index.ts +174 -0
  547. package/src/runtime/integration/helpers.ts +640 -0
  548. package/src/runtime/lifecycle.ts +107 -0
  549. package/src/runtime/mcp/index.ts +68 -0
  550. package/src/runtime/mcp/manager.ts +513 -0
  551. package/src/runtime/network/inbound.ts +131 -0
  552. package/src/runtime/network/index.ts +30 -0
  553. package/src/runtime/network/outbound.ts +292 -0
  554. package/src/runtime/network/shared.ts +82 -0
  555. package/src/runtime/operator-client.ts +235 -0
  556. package/src/runtime/ops/control-plane.ts +363 -0
  557. package/src/runtime/ops/index.ts +122 -0
  558. package/src/runtime/ops/playbooks/index.ts +10 -0
  559. package/src/runtime/ops/playbooks/session-unrecoverable.ts +196 -0
  560. package/src/runtime/ops/playbooks/stuck-turn.ts +197 -0
  561. package/src/runtime/ops/runtime-context.ts +100 -0
  562. package/src/runtime/ops-api.ts +27 -0
  563. package/src/runtime/orchestration/spawn-policy.ts +83 -0
  564. package/src/runtime/peer-client.ts +404 -0
  565. package/src/runtime/perf/index.ts +57 -0
  566. package/src/runtime/perf/slo-collector.ts +375 -0
  567. package/src/runtime/permissions/index.ts +190 -0
  568. package/src/runtime/permissions/policy-runtime.ts +175 -0
  569. package/src/runtime/permissions/preflight.ts +101 -0
  570. package/src/runtime/permissions/rule-suggestions.ts +36 -0
  571. package/src/runtime/plugins/hot-reload.ts +221 -0
  572. package/src/runtime/plugins/index.ts +84 -0
  573. package/src/runtime/plugins/lifecycle.ts +95 -0
  574. package/src/runtime/plugins/manager.ts +474 -0
  575. package/src/runtime/plugins/manifest.ts +167 -0
  576. package/src/runtime/plugins/quarantine.ts +202 -0
  577. package/src/runtime/plugins/trust.ts +291 -0
  578. package/src/runtime/plugins/types.ts +205 -0
  579. package/src/runtime/provider-accounts/registry.ts +326 -0
  580. package/src/runtime/remote/distributed-runtime-contract-schemas.ts +386 -0
  581. package/src/runtime/remote/index.ts +488 -0
  582. package/src/runtime/remote/runner-registry.ts +438 -0
  583. package/src/runtime/remote/supervisor.ts +70 -0
  584. package/src/runtime/runtime-hook-api.ts +5 -0
  585. package/src/runtime/runtime-knowledge-api.ts +14 -0
  586. package/src/runtime/runtime-mcp-api.ts +5 -0
  587. package/src/runtime/runtime-ops-api.ts +86 -0
  588. package/src/runtime/runtime-provider-api.ts +18 -0
  589. package/src/runtime/sandbox/backend.ts +291 -0
  590. package/src/runtime/sandbox/manager.ts +364 -0
  591. package/src/runtime/sandbox/provisioning.ts +422 -0
  592. package/src/runtime/sandbox/session-registry.ts +289 -0
  593. package/src/runtime/services.ts +541 -0
  594. package/src/runtime/session-maintenance.ts +188 -0
  595. package/src/runtime/session-persistence.ts +288 -0
  596. package/src/runtime/session-return-context.ts +195 -0
  597. package/src/runtime/settings/control-plane-store.ts +258 -0
  598. package/src/runtime/settings/control-plane.ts +599 -0
  599. package/src/runtime/shell-command-extensions.ts +54 -0
  600. package/src/runtime/shell-command-ops.ts +207 -0
  601. package/src/runtime/shell-command-platform.ts +47 -0
  602. package/src/runtime/shell-command-services.ts +143 -0
  603. package/src/runtime/shell-command-workspace.ts +31 -0
  604. package/src/runtime/store/domains/conversation.ts +181 -0
  605. package/src/runtime/store/domains/domain-read-matrix.ts +17 -0
  606. package/src/runtime/store/domains/index.ts +222 -0
  607. package/src/runtime/store/domains/panels.ts +117 -0
  608. package/src/runtime/store/domains/permissions.ts +143 -0
  609. package/src/runtime/store/domains/ui-perf.ts +103 -0
  610. package/src/runtime/store/helpers/reducers/conversation.ts +228 -0
  611. package/src/runtime/store/helpers/reducers/lifecycle.ts +440 -0
  612. package/src/runtime/store/helpers/reducers/shared.ts +60 -0
  613. package/src/runtime/store/helpers/reducers/sync.ts +555 -0
  614. package/src/runtime/store/helpers/reducers.ts +30 -0
  615. package/src/runtime/store/index.ts +304 -0
  616. package/src/runtime/store/selectors/index.ts +354 -0
  617. package/src/runtime/store/state.ts +137 -0
  618. package/src/runtime/tasks/adapters/acp-adapter.ts +211 -0
  619. package/src/runtime/tasks/adapters/agent-adapter.ts +208 -0
  620. package/src/runtime/tasks/adapters/index.ts +16 -0
  621. package/src/runtime/tasks/adapters/process-adapter.ts +214 -0
  622. package/src/runtime/tasks/adapters/scheduler-adapter.ts +193 -0
  623. package/src/runtime/tasks/index.ts +68 -0
  624. package/src/runtime/tasks/manager.ts +415 -0
  625. package/src/runtime/telemetry/api-helpers.ts +517 -0
  626. package/src/runtime/telemetry/api.ts +768 -0
  627. package/src/runtime/telemetry/index.ts +178 -0
  628. package/src/runtime/telemetry/instrumentation/domain-bridge-agent-session.ts +440 -0
  629. package/src/runtime/telemetry/instrumentation/domain-bridge-plugin-mcp.ts +200 -0
  630. package/src/runtime/telemetry/instrumentation/domain-bridge-shared.ts +18 -0
  631. package/src/runtime/telemetry/instrumentation/domain-bridge-transport-task.ts +204 -0
  632. package/src/runtime/telemetry/instrumentation/domain-bridge.ts +125 -0
  633. package/src/runtime/telemetry/instrumentation/index.ts +67 -0
  634. package/src/runtime/tools/context.ts +114 -0
  635. package/src/runtime/tools/index.ts +46 -0
  636. package/src/runtime/tools/phased-executor.ts +448 -0
  637. package/src/runtime/tools/phases/budget.ts +130 -0
  638. package/src/runtime/tools/phases/execute.ts +69 -0
  639. package/src/runtime/tools/phases/index.ts +13 -0
  640. package/src/runtime/tools/phases/map-output.ts +98 -0
  641. package/src/runtime/tools/phases/permission.ts +133 -0
  642. package/src/runtime/tools/phases/posthook.ts +57 -0
  643. package/src/runtime/tools/phases/prehook.ts +68 -0
  644. package/src/runtime/tools/phases/validate.ts +53 -0
  645. package/src/runtime/transports/direct.ts +73 -0
  646. package/src/runtime/transports/http-helpers.ts +218 -0
  647. package/src/runtime/transports/http-types.ts +364 -0
  648. package/src/runtime/transports/http.ts +629 -0
  649. package/src/runtime/transports/realtime.ts +50 -0
  650. package/src/runtime/transports/remote-events.ts +16 -0
  651. package/src/runtime/transports/shared.ts +39 -0
  652. package/src/runtime/transports/ui-runtime-events.ts +35 -0
  653. package/src/runtime/ui/index.ts +39 -0
  654. package/src/runtime/ui/model-picker/data-provider.ts +182 -0
  655. package/src/runtime/ui/model-picker/health-enrichment.ts +228 -0
  656. package/src/runtime/ui/model-picker/index.ts +59 -0
  657. package/src/runtime/ui/model-picker/types.ts +149 -0
  658. package/src/runtime/ui/provider-health/data-provider.ts +244 -0
  659. package/src/runtime/ui/provider-health/fallback-visualizer.ts +69 -0
  660. package/src/runtime/ui/provider-health/index.ts +46 -0
  661. package/src/runtime/ui/provider-health/types.ts +146 -0
  662. package/src/runtime/ui-events.ts +46 -0
  663. package/src/runtime/ui-read-model-helpers.ts +32 -0
  664. package/src/runtime/ui-read-models-core.ts +95 -0
  665. package/src/runtime/ui-read-models-observability-maintenance.ts +81 -0
  666. package/src/runtime/ui-read-models-observability-options.ts +5 -0
  667. package/src/runtime/ui-read-models-observability-remote.ts +73 -0
  668. package/src/runtime/ui-read-models-observability-security.ts +172 -0
  669. package/src/runtime/ui-read-models-observability-system.ts +217 -0
  670. package/src/runtime/ui-read-models-observability.ts +59 -0
  671. package/src/runtime/ui-read-models-operations.ts +203 -0
  672. package/src/runtime/ui-read-models.ts +61 -0
  673. package/src/runtime/ui-service-queries.ts +114 -0
  674. package/src/runtime/ui-services.ts +163 -0
  675. package/src/runtime/worktree/registry.ts +252 -0
  676. package/src/scripts/process-messages.ts +42 -0
  677. package/src/sessions/manager.ts +388 -0
  678. package/src/shell/blocking-input.ts +89 -0
  679. package/src/shell/ui-openers.ts +163 -0
  680. package/src/state/file-watcher.ts +294 -0
  681. package/src/state/index.ts +56 -0
  682. package/src/state/knowledge-injection.ts +214 -0
  683. package/src/state/memory-embedding-http.ts +642 -0
  684. package/src/state/memory-embeddings.ts +312 -0
  685. package/src/state/memory-ingest.ts +132 -0
  686. package/src/state/memory-registry.ts +111 -0
  687. package/src/state/memory-store-helpers.ts +160 -0
  688. package/src/state/memory-store.ts +728 -0
  689. package/src/state/memory-vector-store.ts +418 -0
  690. package/src/templates/manager.ts +187 -0
  691. package/src/tools/agent/index.ts +610 -0
  692. package/src/tools/agent/manager.ts +476 -0
  693. package/src/tools/analyze/git-modes.ts +380 -0
  694. package/src/tools/analyze/index.ts +128 -0
  695. package/src/tools/channel/agent-tools.ts +16 -0
  696. package/src/tools/channel/index.ts +268 -0
  697. package/src/tools/control/index.ts +90 -0
  698. package/src/tools/edit/core.ts +619 -0
  699. package/src/tools/edit/index.ts +4 -0
  700. package/src/tools/edit/phased.ts +33 -0
  701. package/src/tools/fetch/index.ts +3 -0
  702. package/src/tools/fetch/phased.ts +34 -0
  703. package/src/tools/fetch/runtime.ts +499 -0
  704. package/src/tools/index.ts +186 -0
  705. package/src/tools/mcp/index.ts +190 -0
  706. package/src/tools/remote-trigger/index.ts +130 -0
  707. package/src/tools/repl/index.ts +318 -0
  708. package/src/tools/shared/auto-heal.ts +282 -0
  709. package/src/tools/state/index.ts +688 -0
  710. package/src/tools/web-search/index.ts +38 -0
  711. package/src/tools/write/index.ts +604 -0
  712. package/src/tools/write/phased.ts +41 -0
  713. package/src/types/generated/foundation-client-types.ts +22 -0
  714. package/src/types/sql-js.d.ts +15 -0
  715. package/src/utils/splash-lines.ts +46 -0
  716. package/src/version.ts +17 -0
  717. package/src/watchers/index.ts +11 -0
  718. package/src/watchers/registry.ts +517 -0
  719. package/src/web-search/index.ts +26 -0
  720. package/src/web-search/provider-registry.ts +64 -0
  721. package/src/web-search/providers/brave.ts +100 -0
  722. package/src/web-search/providers/duckduckgo.ts +270 -0
  723. package/src/web-search/providers/exa.ts +77 -0
  724. package/src/web-search/providers/firecrawl.ts +90 -0
  725. package/src/web-search/providers/perplexity.ts +86 -0
  726. package/src/web-search/providers/searxng.ts +88 -0
  727. package/src/web-search/providers/shared.ts +249 -0
  728. package/src/web-search/providers/tavily.ts +90 -0
  729. package/src/web-search/service.ts +142 -0
  730. package/src/widget/index.ts +2 -0
  731. package/src/widget/types.ts +9 -0
  732. package/src/widget/widget.ts +8 -0
@@ -0,0 +1,217 @@
1
+ import { buildEcosystemRecommendations, type EcosystemRecommendation } from './ecosystem/recommendations.ts';
2
+ import type { RuntimeServices } from './services.ts';
3
+ import type { UiReadModel } from '@pellux/goodvibes-sdk/platform/runtime/ui-read-models-base';
4
+ import { combineSubscriptions, createStoreBackedReadModel } from './ui-read-model-helpers.ts';
5
+ import type {
6
+ ContinuitySnapshot as IntegrationContinuitySnapshot,
7
+ SettingsSnapshot as IntegrationSettingsSnapshot,
8
+ WorktreeSnapshot as IntegrationWorktreeSnapshot,
9
+ } from './integration/helpers.ts';
10
+ import type { SessionReturnContextSummary } from './session-return-context.ts';
11
+ import type { ManagedWorktreeMeta } from './worktree/registry.ts';
12
+ import type { PluginStatus } from '../plugins/manager.ts';
13
+
14
+ export interface UiIntelligenceSnapshot {
15
+ readonly diagnosticsStatus: string;
16
+ readonly symbolSearchStatus: string;
17
+ readonly completionsStatus: string;
18
+ readonly hoverStatus: string;
19
+ readonly errorCount: number;
20
+ readonly warningCount: number;
21
+ readonly totalRequests: number;
22
+ readonly avgLatencyMs: number;
23
+ readonly hover: {
24
+ readonly active: boolean;
25
+ readonly filePath?: string;
26
+ };
27
+ readonly diagnostics: ReadonlyMap<string, readonly import('@pellux/goodvibes-sdk/platform/runtime/store/domains/intelligence').LspDiagnostic[]>;
28
+ }
29
+
30
+ export interface UiMarketplaceSnapshot {
31
+ readonly startupIssues: readonly string[];
32
+ readonly recommendations: readonly EcosystemRecommendation[];
33
+ }
34
+
35
+ export interface UiCockpitSnapshot {
36
+ readonly runningTasks: number;
37
+ readonly blockedTasks: number;
38
+ readonly failedTasks: number;
39
+ readonly activeGraphs: number;
40
+ readonly guardTrips: number;
41
+ readonly blockedMessages: number;
42
+ readonly pendingPermissions: number;
43
+ readonly deniedPermissions: number;
44
+ readonly preflightStatus: string;
45
+ readonly preflightIssueCount: number;
46
+ readonly lintFindingCount: number;
47
+ readonly tokenBlockedCount: number;
48
+ readonly tokenRotationOverdueCount: number;
49
+ readonly tokenScopeViolationCount: number;
50
+ readonly tokenRotationWarningCount: number;
51
+ readonly incidentCount: number;
52
+ readonly latestIncident: ReturnType<import('./forensics/index.ts').ForensicsRegistry['latest']>;
53
+ readonly elevatedMcp: number;
54
+ readonly unhealthyMcp: number;
55
+ readonly erroredPlugins: number;
56
+ readonly failingIntegrations: number;
57
+ readonly taskCount: number;
58
+ readonly agentCount: number;
59
+ readonly totalGraphs: number;
60
+ readonly communicationCount: number;
61
+ readonly mcpServerCount: number;
62
+ readonly pluginCount: number;
63
+ }
64
+
65
+ export interface UiHealthSnapshot {
66
+ readonly degradedDomains: readonly string[];
67
+ readonly providerProblems: readonly string[];
68
+ readonly degradedMcpServers: readonly string[];
69
+ readonly quarantinedMcpServers: readonly string[];
70
+ readonly integrationProblems: readonly string[];
71
+ readonly daemonTransportState: string;
72
+ readonly acpTransportState: string;
73
+ readonly recoveryState: string;
74
+ }
75
+
76
+ export interface UiSystemObservabilityReadModels {
77
+ readonly intelligence: UiReadModel<UiIntelligenceSnapshot>;
78
+ readonly marketplace: UiReadModel<UiMarketplaceSnapshot>;
79
+ readonly cockpit: UiReadModel<UiCockpitSnapshot>;
80
+ readonly health: UiReadModel<UiHealthSnapshot>;
81
+ }
82
+
83
+ export function createSystemObservabilityReadModels(
84
+ runtimeServices: RuntimeServices,
85
+ options: import('./ui-read-models-observability-options.ts').UiObservabilityReadModelOptions = {},
86
+ ): UiSystemObservabilityReadModels {
87
+ const { runtimeStore } = runtimeServices;
88
+
89
+ return {
90
+ intelligence: createStoreBackedReadModel(runtimeServices, () => {
91
+ const state = runtimeStore.getState().intelligence;
92
+ return {
93
+ diagnosticsStatus: state.diagnosticsStatus,
94
+ symbolSearchStatus: state.symbolSearchStatus,
95
+ completionsStatus: state.completionsStatus,
96
+ hoverStatus: state.hoverStatus,
97
+ errorCount: state.errorCount,
98
+ warningCount: state.warningCount,
99
+ totalRequests: state.totalRequests,
100
+ avgLatencyMs: state.avgLatencyMs,
101
+ hover: {
102
+ active: state.hover.active,
103
+ filePath: state.hover.filePath,
104
+ },
105
+ diagnostics: state.diagnostics,
106
+ };
107
+ }),
108
+ marketplace: createStoreBackedReadModel(runtimeServices, () => {
109
+ const state = runtimeStore.getState();
110
+ const startupIssues: string[] = [];
111
+ if (state.permissions.denialCount >= 3) {
112
+ startupIssues.push(`${state.permissions.denialCount} permission denials suggest a policy-pack or trust posture review.`);
113
+ }
114
+ const authRequiredServers = [...state.mcp.servers.values()].filter((server) => server.status === 'auth_required');
115
+ if (authRequiredServers.length > 0) {
116
+ startupIssues.push(`${authRequiredServers.length} MCP server${authRequiredServers.length === 1 ? '' : 's'} need auth or reconnect repair.`);
117
+ }
118
+ const staleSchemas = [...state.mcp.servers.values()].filter((server) => server.schemaFreshness !== 'fresh');
119
+ if (staleSchemas.length > 0) {
120
+ startupIssues.push(`${staleSchemas.length} MCP server schema${staleSchemas.length === 1 ? ' is' : 's are'} stale or quarantined.`);
121
+ }
122
+ return {
123
+ startupIssues,
124
+ recommendations: buildEcosystemRecommendations(runtimeStore, {
125
+ cwd: runtimeServices.shellPaths.workingDirectory,
126
+ homeDir: runtimeServices.shellPaths.homeDirectory,
127
+ }),
128
+ };
129
+ }),
130
+ cockpit: {
131
+ getSnapshot() {
132
+ const state = runtimeStore.getState();
133
+ const runningTasks = [...state.tasks.tasks.values()].filter((task) => task.status === 'running').length;
134
+ const blockedTasks = [...state.tasks.tasks.values()].filter((task) => task.status === 'blocked').length;
135
+ const failedTasks = [...state.tasks.tasks.values()].filter((task) => task.status === 'failed').length;
136
+ const audit = runtimeServices.tokenAuditor.auditAll();
137
+ const incidents = options.forensicsRegistry?.getAll() ?? [];
138
+ const plugins = runtimeServices.pluginManager.list();
139
+ const failingIntegrations = [...state.integrations.integrations.values()].filter((record) => record.status === 'error').length;
140
+ const elevatedMcp = [...state.mcp.servers.values()].filter((server) => server.trustMode === 'allow-all').length;
141
+ const unhealthyMcp = [...state.mcp.servers.values()].filter((server) => (
142
+ server.status === 'degraded'
143
+ || server.status === 'auth_required'
144
+ || server.status === 'reconnecting'
145
+ || server.status === 'disconnected'
146
+ )).length;
147
+ const preflight = runtimeServices.policyRuntimeState.getSnapshot().lastPreflightReview;
148
+ const lintFindingCount = runtimeServices.policyRuntimeState.getSnapshot().lintFindings.length;
149
+ return {
150
+ runningTasks,
151
+ blockedTasks,
152
+ failedTasks,
153
+ activeGraphs: state.orchestration.activeGraphIds.length,
154
+ guardTrips: state.orchestration.recursionGuardTrips,
155
+ blockedMessages: state.communication.totalBlocked,
156
+ pendingPermissions: state.permissions.awaitingDecision ? 1 : 0,
157
+ deniedPermissions: state.permissions.denialCount,
158
+ preflightStatus: preflight?.status ?? 'n/a',
159
+ preflightIssueCount: preflight?.issueCount ?? 0,
160
+ lintFindingCount,
161
+ tokenBlockedCount: audit.blocked.length,
162
+ tokenRotationOverdueCount: audit.rotationOverdue.length,
163
+ tokenScopeViolationCount: audit.scopeViolations.length,
164
+ tokenRotationWarningCount: audit.rotationWarnings.length,
165
+ incidentCount: incidents.length,
166
+ latestIncident: options.forensicsRegistry?.latest(),
167
+ elevatedMcp,
168
+ unhealthyMcp,
169
+ erroredPlugins: plugins.filter((plugin) => plugin.quarantined || !plugin.active).length,
170
+ failingIntegrations,
171
+ taskCount: state.tasks.tasks.size,
172
+ agentCount: state.agents.agents.size,
173
+ totalGraphs: state.orchestration.totalGraphs,
174
+ communicationCount: state.communication.records.size,
175
+ mcpServerCount: state.mcp.servers.size,
176
+ pluginCount: plugins.length,
177
+ };
178
+ },
179
+ subscribe(listener) {
180
+ const unsubs: Array<() => void> = [runtimeStore.subscribe(listener)];
181
+ if (options.forensicsRegistry) {
182
+ unsubs.push(options.forensicsRegistry.subscribe(listener));
183
+ }
184
+ return combineSubscriptions(...unsubs);
185
+ },
186
+ },
187
+ health: createStoreBackedReadModel(runtimeServices, () => {
188
+ const state = runtimeStore.getState();
189
+ const providerProblems = [...state.providerHealth.providers.values()]
190
+ .filter((provider) => provider.status !== 'healthy' && provider.status !== 'unknown')
191
+ .map((provider) => provider.providerId);
192
+ const degradedMcpServers = [...state.mcp.servers.values()]
193
+ .filter((server) => server.status === 'degraded' || server.status === 'auth_required' || server.schemaFreshness === 'quarantined')
194
+ .map((server) => server.name);
195
+ const quarantinedMcpServers = [...state.mcp.servers.values()]
196
+ .filter((server) => server.schemaFreshness === 'quarantined')
197
+ .map((server) => server.name);
198
+ const degradedDomains: string[] = [];
199
+ if (providerProblems.length > 0) degradedDomains.push('providerHealth');
200
+ if (degradedMcpServers.length > 0) degradedDomains.push('mcp');
201
+ if (state.integrations.problemIds.length > 0) degradedDomains.push('integrations');
202
+ if (state.daemon.transportState === 'degraded' || state.daemon.transportState === 'terminal_failure') degradedDomains.push('daemon');
203
+ if (state.acp.managerTransportState === 'degraded' || state.acp.managerTransportState === 'terminal_failure') degradedDomains.push('acp');
204
+ if (state.session.recoveryState === 'failed') degradedDomains.push('session');
205
+ return {
206
+ degradedDomains,
207
+ providerProblems,
208
+ degradedMcpServers,
209
+ quarantinedMcpServers,
210
+ integrationProblems: state.integrations.problemIds,
211
+ daemonTransportState: state.daemon.transportState,
212
+ acpTransportState: state.acp.managerTransportState,
213
+ recoveryState: state.session.recoveryState,
214
+ };
215
+ }),
216
+ };
217
+ }
@@ -0,0 +1,59 @@
1
+ export type { UiObservabilityReadModelOptions } from './ui-read-models-observability-options.ts';
2
+ export type {
3
+ UiRemoteSnapshot,
4
+ UiRemoteReadModels,
5
+ } from './ui-read-models-observability-remote.ts';
6
+ export type {
7
+ UiIntelligenceSnapshot,
8
+ UiMarketplaceSnapshot,
9
+ UiCockpitSnapshot,
10
+ UiHealthSnapshot,
11
+ UiSystemObservabilityReadModels,
12
+ } from './ui-read-models-observability-system.ts';
13
+ export type {
14
+ UiSecuritySnapshot,
15
+ UiMcpServerSnapshot,
16
+ UiMcpSnapshot,
17
+ UiLocalAuthSnapshot,
18
+ UiSecurityObservabilityReadModels,
19
+ } from './ui-read-models-observability-security.ts';
20
+ export type {
21
+ UiSettingsSnapshot,
22
+ UiContinuitySnapshot,
23
+ UiWorktreeSnapshot,
24
+ UiMaintenanceObservabilityReadModels,
25
+ } from './ui-read-models-observability-maintenance.ts';
26
+
27
+ import type { RuntimeServices } from './services.ts';
28
+ import { createRemoteReadModels, type UiRemoteReadModels } from './ui-read-models-observability-remote.ts';
29
+ import {
30
+ createSystemObservabilityReadModels,
31
+ type UiSystemObservabilityReadModels,
32
+ } from './ui-read-models-observability-system.ts';
33
+ import {
34
+ createSecurityObservabilityReadModels,
35
+ type UiSecurityObservabilityReadModels,
36
+ } from './ui-read-models-observability-security.ts';
37
+ import {
38
+ createMaintenanceObservabilityReadModels,
39
+ type UiMaintenanceObservabilityReadModels,
40
+ } from './ui-read-models-observability-maintenance.ts';
41
+ import type { UiObservabilityReadModelOptions } from './ui-read-models-observability-options.ts';
42
+
43
+ export interface UiObservabilityReadModels
44
+ extends UiRemoteReadModels,
45
+ UiSystemObservabilityReadModels,
46
+ UiSecurityObservabilityReadModels,
47
+ UiMaintenanceObservabilityReadModels {}
48
+
49
+ export function createObservabilityReadModels(
50
+ runtimeServices: RuntimeServices,
51
+ options: UiObservabilityReadModelOptions = {},
52
+ ): UiObservabilityReadModels {
53
+ return {
54
+ ...createRemoteReadModels(runtimeServices),
55
+ ...createSystemObservabilityReadModels(runtimeServices, options),
56
+ ...createSecurityObservabilityReadModels(runtimeServices, options),
57
+ ...createMaintenanceObservabilityReadModels(runtimeServices),
58
+ };
59
+ }
@@ -0,0 +1,203 @@
1
+ import type { ControlPlaneRecentEvent, SharedApprovalRecord, SharedSessionRecord } from '../control-plane/index.ts';
2
+ import type { RuntimeServices } from './services.ts';
3
+ import type { AutomationJob } from '@pellux/goodvibes-sdk/platform/automation/jobs';
4
+ import type { AutomationRun } from '@pellux/goodvibes-sdk/platform/automation/runs';
5
+ import type { AutomationRouteBinding } from '@pellux/goodvibes-sdk/platform/automation/routes';
6
+ import type { WatcherRecord } from '@pellux/goodvibes-sdk/platform/runtime/store/domains/watchers';
7
+ import type { OrchestrationGraphRecord } from '@pellux/goodvibes-sdk/platform/runtime/store/domains/orchestration';
8
+ import type { RuntimeCommunicationRecord } from '@pellux/goodvibes-sdk/platform/runtime/store/domains/communication';
9
+ import type { ControlPlaneClientRecord } from '@pellux/goodvibes-sdk/platform/runtime/store/domains/control-plane';
10
+ import type { AcpConnection } from '@pellux/goodvibes-sdk/platform/runtime/store/domains/acp';
11
+ import { combineSubscriptions, createStoreBackedReadModel } from './ui-read-model-helpers.ts';
12
+ import type { UiReadModel } from '@pellux/goodvibes-sdk/platform/runtime/ui-read-models-base';
13
+
14
+ export interface UiAutomationSnapshot {
15
+ readonly jobs: readonly AutomationJob[];
16
+ readonly runs: readonly AutomationRun[];
17
+ readonly totalJobs: number;
18
+ readonly totalRuns: number;
19
+ readonly activeRunIds: readonly string[];
20
+ readonly totalFailed: number;
21
+ readonly sourceCount: number;
22
+ readonly deliveryTotals: {
23
+ readonly succeeded: number;
24
+ readonly failed: number;
25
+ readonly deadLettered: number;
26
+ };
27
+ }
28
+
29
+ export interface UiRoutesSnapshot {
30
+ readonly bindings: readonly AutomationRouteBinding[];
31
+ readonly bindingIdsBySurface: Readonly<Record<string, readonly string[]>>;
32
+ readonly totalBindings: number;
33
+ readonly activeBindingIds: readonly string[];
34
+ readonly totalResolved: number;
35
+ readonly totalFailures: number;
36
+ }
37
+
38
+ export interface UiWatchersSnapshot {
39
+ readonly watchers: readonly WatcherRecord[];
40
+ readonly totalWatchers: number;
41
+ readonly activeWatcherIds: readonly string[];
42
+ readonly totalDegraded: number;
43
+ readonly totalLagged: number;
44
+ }
45
+
46
+ export interface UiOrchestrationSnapshot {
47
+ readonly graphs: readonly OrchestrationGraphRecord[];
48
+ readonly totalGraphs: number;
49
+ readonly activeGraphIds: readonly string[];
50
+ readonly totalCompletedGraphs: number;
51
+ readonly totalFailedGraphs: number;
52
+ readonly recursionGuardTrips: number;
53
+ }
54
+
55
+ export interface UiCommunicationSnapshot {
56
+ readonly records: readonly RuntimeCommunicationRecord[];
57
+ readonly totalSent: number;
58
+ readonly totalDelivered: number;
59
+ readonly totalBlocked: number;
60
+ }
61
+
62
+ export interface UiControlPlaneSnapshot {
63
+ readonly connectionState: string;
64
+ readonly activeClientIds: readonly string[];
65
+ readonly requestCount: number;
66
+ readonly errorCount: number;
67
+ readonly host: string;
68
+ readonly port: number;
69
+ readonly clients: readonly ControlPlaneClientRecord[];
70
+ readonly approvals: readonly SharedApprovalRecord[];
71
+ readonly sessions: readonly SharedSessionRecord[];
72
+ readonly recentEvents: readonly ControlPlaneRecentEvent[];
73
+ }
74
+
75
+ export interface UiOperationsReadModels {
76
+ readonly automation: UiReadModel<UiAutomationSnapshot>;
77
+ readonly routes: UiReadModel<UiRoutesSnapshot>;
78
+ readonly watchers: UiReadModel<UiWatchersSnapshot>;
79
+ readonly orchestration: UiReadModel<UiOrchestrationSnapshot>;
80
+ readonly communication: UiReadModel<UiCommunicationSnapshot>;
81
+ readonly controlPlane: UiReadModel<UiControlPlaneSnapshot>;
82
+ }
83
+
84
+ export interface UiOperationsReadModelOptions {
85
+ readonly getControlPlaneRecentEvents?: (limit: number) => readonly ControlPlaneRecentEvent[];
86
+ }
87
+
88
+ export function createOperationsReadModels(
89
+ runtimeServices: RuntimeServices,
90
+ options: UiOperationsReadModelOptions = {},
91
+ ): UiOperationsReadModels {
92
+ const { runtimeStore } = runtimeServices;
93
+
94
+ return {
95
+ automation: createStoreBackedReadModel(runtimeServices, () => {
96
+ const state = runtimeStore.getState();
97
+ const jobs = state.automation.jobIds
98
+ .map((id) => state.automation.jobs.get(id))
99
+ .filter((job): job is AutomationJob => job !== undefined)
100
+ .sort((a, b) => (b.nextRunAt ?? 0) - (a.nextRunAt ?? 0) || a.name.localeCompare(b.name));
101
+ const runs = state.automation.runIds
102
+ .map((id) => state.automation.runs.get(id))
103
+ .filter((run): run is AutomationRun => run !== undefined)
104
+ .sort((a, b) => b.queuedAt - a.queuedAt || a.id.localeCompare(b.id));
105
+ return {
106
+ jobs,
107
+ runs,
108
+ totalJobs: state.automation.totalJobs,
109
+ totalRuns: state.automation.totalRuns,
110
+ activeRunIds: state.automation.activeRunIds,
111
+ totalFailed: state.automation.totalFailed,
112
+ sourceCount: state.automation.sourceIds.length,
113
+ deliveryTotals: {
114
+ succeeded: state.deliveries.totalSucceeded,
115
+ failed: state.deliveries.totalFailed,
116
+ deadLettered: state.deliveries.totalDeadLettered,
117
+ },
118
+ };
119
+ }),
120
+ routes: createStoreBackedReadModel(runtimeServices, () => {
121
+ const state = runtimeStore.getState().routes;
122
+ const bindings = state.bindingIds
123
+ .map((id) => state.bindings.get(id))
124
+ .filter((binding): binding is AutomationRouteBinding => binding !== undefined)
125
+ .sort((a, b) => b.lastSeenAt - a.lastSeenAt || a.id.localeCompare(b.id));
126
+ return {
127
+ bindings,
128
+ bindingIdsBySurface: state.bindingIdsBySurface,
129
+ totalBindings: state.totalBindings,
130
+ activeBindingIds: state.activeBindingIds,
131
+ totalResolved: state.totalResolved,
132
+ totalFailures: state.totalFailures,
133
+ };
134
+ }),
135
+ watchers: createStoreBackedReadModel(runtimeServices, () => {
136
+ const state = runtimeStore.getState().watchers;
137
+ const watchers = state.watcherIds
138
+ .map((id) => state.watchers.get(id))
139
+ .filter((watcher): watcher is WatcherRecord => watcher !== undefined)
140
+ .sort((a, b) => (b.lastHeartbeatAt ?? 0) - (a.lastHeartbeatAt ?? 0) || a.id.localeCompare(b.id));
141
+ return {
142
+ watchers,
143
+ totalWatchers: state.watcherIds.length,
144
+ activeWatcherIds: state.activeWatcherIds,
145
+ totalDegraded: state.totalDegraded,
146
+ totalLagged: state.totalLagged,
147
+ };
148
+ }),
149
+ orchestration: createStoreBackedReadModel(runtimeServices, () => {
150
+ const state = runtimeStore.getState().orchestration;
151
+ const graphs = [...state.graphs.values()].sort((a, b) => b.createdAt - a.createdAt);
152
+ return {
153
+ graphs,
154
+ totalGraphs: state.totalGraphs,
155
+ activeGraphIds: state.activeGraphIds,
156
+ totalCompletedGraphs: state.totalCompletedGraphs,
157
+ totalFailedGraphs: state.totalFailedGraphs,
158
+ recursionGuardTrips: state.recursionGuardTrips,
159
+ };
160
+ }),
161
+ communication: createStoreBackedReadModel(runtimeServices, () => {
162
+ const state = runtimeStore.getState().communication;
163
+ const records = state.recentRecordIds
164
+ .map((id) => state.records.get(id))
165
+ .filter((record): record is RuntimeCommunicationRecord => record !== undefined)
166
+ .sort((a, b) => b.timestamp - a.timestamp);
167
+ return {
168
+ records,
169
+ totalSent: state.totalSent,
170
+ totalDelivered: state.totalDelivered,
171
+ totalBlocked: state.totalBlocked,
172
+ };
173
+ }),
174
+ controlPlane: {
175
+ getSnapshot() {
176
+ const state = runtimeStore.getState().controlPlane;
177
+ const clients = state.clientIds
178
+ .map((id) => state.clients.get(id))
179
+ .filter((client): client is ControlPlaneClientRecord => client !== undefined)
180
+ .sort((a, b) => (b.lastSeenAt ?? 0) - (a.lastSeenAt ?? 0) || a.id.localeCompare(b.id));
181
+ return {
182
+ connectionState: state.connectionState,
183
+ activeClientIds: state.activeClientIds,
184
+ requestCount: state.requestCount,
185
+ errorCount: state.errorCount,
186
+ host: state.host,
187
+ port: state.port,
188
+ clients,
189
+ approvals: runtimeServices.approvalBroker.listApprovals(6),
190
+ sessions: runtimeServices.sessionBroker.listSessions(6),
191
+ recentEvents: options.getControlPlaneRecentEvents?.(6) ?? [],
192
+ };
193
+ },
194
+ subscribe(listener) {
195
+ const unsubs = [
196
+ runtimeStore.subscribe(listener),
197
+ runtimeServices.approvalBroker.subscribe(listener),
198
+ ];
199
+ return combineSubscriptions(...unsubs);
200
+ },
201
+ },
202
+ };
203
+ }
@@ -0,0 +1,61 @@
1
+ export type { UiReadModel } from '@pellux/goodvibes-sdk/platform/runtime/ui-read-models-base';
2
+ export type {
3
+ UiCoreReadModels,
4
+ UiProvidersSnapshot,
5
+ UiSessionSnapshot,
6
+ UiAgentsSnapshot,
7
+ UiTasksSnapshot,
8
+ } from './ui-read-models-core.ts';
9
+ export type {
10
+ UiOperationsReadModels,
11
+ UiAutomationSnapshot,
12
+ UiRoutesSnapshot,
13
+ UiWatchersSnapshot,
14
+ UiOrchestrationSnapshot,
15
+ UiCommunicationSnapshot,
16
+ UiControlPlaneSnapshot,
17
+ } from './ui-read-models-operations.ts';
18
+ export type {
19
+ UiObservabilityReadModels,
20
+ UiRemoteSnapshot,
21
+ UiIntelligenceSnapshot,
22
+ UiMarketplaceSnapshot,
23
+ UiCockpitSnapshot,
24
+ UiSecuritySnapshot,
25
+ UiHealthSnapshot,
26
+ UiMcpServerSnapshot,
27
+ UiMcpSnapshot,
28
+ UiLocalAuthSnapshot,
29
+ UiSettingsSnapshot,
30
+ UiContinuitySnapshot,
31
+ UiWorktreeSnapshot,
32
+ } from './ui-read-models-observability.ts';
33
+ export type { UiObservabilityReadModelOptions } from './ui-read-models-observability-options.ts';
34
+
35
+ import type { RuntimeServices } from './services.ts';
36
+ import { createCoreReadModels, type UiCoreReadModels } from './ui-read-models-core.ts';
37
+ import {
38
+ createOperationsReadModels,
39
+ type UiOperationsReadModels,
40
+ type UiOperationsReadModelOptions,
41
+ } from './ui-read-models-operations.ts';
42
+ import {
43
+ createObservabilityReadModels,
44
+ type UiObservabilityReadModels,
45
+ type UiObservabilityReadModelOptions,
46
+ } from './ui-read-models-observability.ts';
47
+
48
+ export type UiReadModelOptions = UiOperationsReadModelOptions & UiObservabilityReadModelOptions;
49
+
50
+ export type UiReadModels = UiCoreReadModels & UiOperationsReadModels & UiObservabilityReadModels;
51
+
52
+ export function createUiReadModels(
53
+ runtimeServices: RuntimeServices,
54
+ options: UiReadModelOptions = {},
55
+ ): UiReadModels {
56
+ return {
57
+ ...createCoreReadModels(runtimeServices),
58
+ ...createOperationsReadModels(runtimeServices, options),
59
+ ...createObservabilityReadModels(runtimeServices, options),
60
+ };
61
+ }
@@ -0,0 +1,114 @@
1
+ import type {
2
+ ServiceConfig,
3
+ ServiceConnectionTestResult,
4
+ ServiceInspection,
5
+ } from '../config/service-registry.ts';
6
+ import type {
7
+ PendingSubscriptionLogin,
8
+ ProviderSubscription,
9
+ } from '@pellux/goodvibes-sdk/platform/config/subscriptions';
10
+ import type { LocalAuthSnapshot } from '@pellux/goodvibes-sdk/platform/security/user-auth';
11
+ import type { SessionInfo } from '../sessions/manager.ts';
12
+ import type { Tool } from '@pellux/goodvibes-sdk/platform/types/tools';
13
+ import type { ModelDefinition } from '../providers/registry.ts';
14
+ import type {
15
+ ProviderApi,
16
+ ProviderRuntimeSnapshot,
17
+ } from '../providers/provider-api.ts';
18
+ import type { ExecutionPlan } from '@pellux/goodvibes-sdk/platform/core/execution-plan';
19
+ import type { PlannerDecision, ExecutionStrategy } from '@pellux/goodvibes-sdk/platform/core/adaptive-planner';
20
+
21
+ export interface EnvironmentVariableQuery {
22
+ hasEnvironmentVariable(name: string): boolean;
23
+ }
24
+
25
+ export interface ServiceInspectionQuery {
26
+ getAll(): Record<string, ServiceConfig>;
27
+ inspect(name: string): Promise<ServiceInspection | null>;
28
+ testConnection(name: string): Promise<ServiceConnectionTestResult>;
29
+ }
30
+
31
+ export interface SubscriptionAccessQuery {
32
+ list(): ProviderSubscription[];
33
+ listPending(): PendingSubscriptionLogin[];
34
+ get(provider: string): ProviderSubscription | null;
35
+ getPending(provider: string): PendingSubscriptionLogin | null;
36
+ getAccessToken(provider: string): string | null;
37
+ logout(provider: string): void;
38
+ }
39
+
40
+ export interface LocalAuthInspectionQuery {
41
+ inspect(): LocalAuthSnapshot;
42
+ }
43
+
44
+ export interface SessionBrowserQuery {
45
+ list(): SessionInfo[];
46
+ search(query: string): Array<{ session: SessionInfo; matchCount: number; snippets: string[] }>;
47
+ delete(name: string): void;
48
+ }
49
+
50
+ export interface SessionMemoryQuery {
51
+ list(): readonly unknown[];
52
+ }
53
+
54
+ export interface ToolCatalogQuery {
55
+ list(): Tool[];
56
+ }
57
+
58
+ export interface ProviderModelCatalogQuery {
59
+ listModels(): ModelDefinition[];
60
+ }
61
+
62
+ export interface ProviderAccountInspectionQuery {
63
+ readonly providerModels: ProviderModelCatalogQuery;
64
+ readonly services: Pick<ServiceInspectionQuery, 'getAll' | 'inspect'>;
65
+ readonly subscriptions: Pick<SubscriptionAccessQuery, 'list' | 'listPending' | 'get' | 'getPending'>;
66
+ readonly environment: EnvironmentVariableQuery;
67
+ }
68
+
69
+ export interface ProviderRuntimeInspectionQuery {
70
+ listProviderIds(): readonly string[];
71
+ inspectAll(): Promise<readonly ProviderRuntimeSnapshot[]>;
72
+ inspect(providerId: string): Promise<ProviderRuntimeSnapshot | null>;
73
+ }
74
+
75
+ export interface PlanDashboardQuery {
76
+ getActive(): ExecutionPlan | null;
77
+ }
78
+
79
+ export interface OpsStrategyQuery {
80
+ getLatest(): PlannerDecision | null;
81
+ getMode(): ExecutionStrategy;
82
+ getOverride(): ExecutionStrategy | null;
83
+ getHistory(limit?: number): PlannerDecision[];
84
+ }
85
+
86
+ export function createEnvironmentVariableQuery(
87
+ environment: Readonly<Record<string, string | undefined>>,
88
+ ): EnvironmentVariableQuery {
89
+ return {
90
+ hasEnvironmentVariable(name: string): boolean {
91
+ return Boolean(environment[name]);
92
+ },
93
+ };
94
+ }
95
+
96
+ export function createProviderRuntimeInspectionQuery(
97
+ providers: Pick<ProviderApi, 'listProviderIds' | 'queryRuntimeMetadata'>,
98
+ ): ProviderRuntimeInspectionQuery {
99
+ return {
100
+ listProviderIds(): readonly string[] {
101
+ return providers.listProviderIds();
102
+ },
103
+
104
+ async inspectAll(): Promise<readonly ProviderRuntimeSnapshot[]> {
105
+ const result = await providers.queryRuntimeMetadata({ scope: 'all' });
106
+ return result.scope === 'all' ? result.snapshots : [];
107
+ },
108
+
109
+ async inspect(providerId: string): Promise<ProviderRuntimeSnapshot | null> {
110
+ const result = await providers.queryRuntimeMetadata({ scope: 'provider', providerId });
111
+ return result.scope === 'provider' ? result.snapshot : null;
112
+ },
113
+ };
114
+ }