@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,601 +1 @@
1
- /**
2
- * Provider Capability Registry
3
- *
4
- * Unified capability contracts per provider/model for routing decisions.
5
- * Routing choices are fully explainable from capability records.
6
- */
7
-
8
- import { getCacheCapability, type CacheType } from '@pellux/goodvibes-sdk/platform/providers/cache-capability';
9
- import type { LLMProvider } from './interface.ts';
10
-
11
- // ---------------------------------------------------------------------------
12
- // Core Types
13
- // ---------------------------------------------------------------------------
14
-
15
- /**
16
- * Unified capability contract describing what a provider/model can do.
17
- * All fields are required — use `getCapability()` which always returns a
18
- * fully-resolved record derived from provider defaults and model overrides.
19
- */
20
- export interface ProviderCapability {
21
- /** Whether the provider streams responses incrementally. */
22
- streaming: boolean;
23
- /** Whether the model accepts tool/function definitions in requests. */
24
- toolCalling: boolean;
25
- /** Whether the model can execute multiple tool calls in one turn. */
26
- parallelTools: boolean;
27
- /** Whether the provider supports JSON mode / structured output. */
28
- jsonMode: boolean;
29
- /** Whether the model exposes reasoning effort / budget controls. */
30
- reasoningControls: boolean;
31
- /** Maximum tokens the model can receive (context window). */
32
- maxContextTokens: number;
33
- /** Maximum tokens the model can generate in one response. */
34
- maxOutputTokens: number;
35
- /** Provider-level request timeout in milliseconds. */
36
- timeoutMs: number;
37
- /** Prompt-caching strategy supported by this provider. */
38
- caching: CacheType;
39
- }
40
-
41
- /**
42
- * A request profile describing what capabilities are needed to handle a
43
- * particular task. All fields are optional — omitted means "no requirement".
44
- */
45
- export interface RequestProfile {
46
- /** Whether the request requires streaming output. */
47
- requiresStreaming?: boolean;
48
- /** Whether the request submits tool definitions. */
49
- requiresToolCalling?: boolean;
50
- /** Whether the request expects parallel tool execution. */
51
- requiresParallelTools?: boolean;
52
- /** Whether the request expects a JSON-mode / structured output response. */
53
- requiresJsonMode?: boolean;
54
- /** Whether the request tunes reasoning effort (budget, effort label). */
55
- requiresReasoningControls?: boolean;
56
- /** Minimum context window size the request needs (in tokens). */
57
- minContextTokens?: number;
58
- /** Minimum output capacity the request needs (in tokens). */
59
- minOutputTokens?: number;
60
- }
61
-
62
- // ---------------------------------------------------------------------------
63
- // Route Explanation
64
- // ---------------------------------------------------------------------------
65
-
66
- /**
67
- * Typed reason codes for routing rejections.
68
- * Use these instead of free-form strings so callers can branch on them.
69
- */
70
- export const RouteRejectionCode = {
71
- NO_STREAMING: 'NO_STREAMING',
72
- NO_TOOL_CALLING: 'NO_TOOL_CALLING',
73
- NO_PARALLEL_TOOLS: 'NO_PARALLEL_TOOLS',
74
- NO_JSON_MODE: 'NO_JSON_MODE',
75
- NO_REASONING_CONTROLS: 'NO_REASONING_CONTROLS',
76
- CONTEXT_TOO_SMALL: 'CONTEXT_TOO_SMALL',
77
- OUTPUT_TOO_SMALL: 'OUTPUT_TOO_SMALL',
78
- } as const;
79
-
80
- export type RouteRejectionCode = (typeof RouteRejectionCode)[keyof typeof RouteRejectionCode];
81
-
82
- /** A single capability requirement that was not met. */
83
- export interface RouteRejectionDetail {
84
- /** Machine-readable rejection code. */
85
- code: RouteRejectionCode;
86
- /** Human-readable description of why this requirement failed. */
87
- reason: string;
88
- /** Actual capability value on the provider. */
89
- actual: boolean | number | string;
90
- /** Required value from the request profile. */
91
- required: boolean | number | string;
92
- }
93
-
94
- /** Structured result of a routing decision for a provider/model/request triple. */
95
- export type RouteExplanation =
96
- | {
97
- accepted: true;
98
- providerId: string;
99
- modelId: string;
100
- /** Human-readable summary of why this route was chosen. */
101
- summary: string;
102
- /** The resolved capability record used for this decision. */
103
- capability: ProviderCapability;
104
- }
105
- | {
106
- accepted: false;
107
- providerId: string;
108
- modelId: string;
109
- /** Human-readable summary of why this route was rejected. */
110
- summary: string;
111
- /** Ordered list of unmet requirements (non-empty when accepted=false). */
112
- rejections: RouteRejectionDetail[];
113
- /** The resolved capability record used for this decision. */
114
- capability: ProviderCapability;
115
- };
116
-
117
- // ---------------------------------------------------------------------------
118
- // Provider Defaults
119
- // ---------------------------------------------------------------------------
120
-
121
- /**
122
- * Baseline capability defaults per built-in provider.
123
- * Fields not listed fall back to `GLOBAL_DEFAULTS`.
124
- *
125
- * Note: All known providers intentionally specify every field — this makes each
126
- * provider's contract explicit and self-contained, at the cost of requiring all
127
- * entries to be updated when a new `ProviderCapability` field is added.
128
- * Unknown/custom providers fall back to `GLOBAL_DEFAULTS` for unspecified fields.
129
- */
130
- const PROVIDER_DEFAULTS: Record<string, Partial<ProviderCapability>> = {
131
- anthropic: {
132
- streaming: true,
133
- toolCalling: true,
134
- parallelTools: true,
135
- jsonMode: false, // Anthropic uses structured output via tool schemas, not a json_mode flag
136
- reasoningControls: false, // Extended thinking enabled per-model via reasoningEffort
137
- maxContextTokens: 200_000,
138
- maxOutputTokens: 8_192,
139
- timeoutMs: 120_000,
140
- },
141
- openai: {
142
- streaming: true,
143
- toolCalling: true,
144
- parallelTools: true,
145
- jsonMode: true,
146
- reasoningControls: false, // o-series models override this
147
- maxContextTokens: 128_000,
148
- maxOutputTokens: 16_384,
149
- timeoutMs: 120_000,
150
- },
151
- gemini: {
152
- streaming: true,
153
- toolCalling: true,
154
- parallelTools: true,
155
- jsonMode: true,
156
- reasoningControls: false,
157
- maxContextTokens: 1_000_000,
158
- maxOutputTokens: 8_192,
159
- timeoutMs: 120_000,
160
- },
161
- inceptionlabs: {
162
- streaming: true,
163
- toolCalling: false, // mercury-2 does not support tool calling
164
- parallelTools: false,
165
- jsonMode: false,
166
- reasoningControls: true, // mercury reasoning budget
167
- maxContextTokens: 128_000,
168
- maxOutputTokens: 32_000,
169
- timeoutMs: 60_000,
170
- },
171
- openrouter: {
172
- streaming: true,
173
- toolCalling: true, // varies per routed model; default optimistic
174
- parallelTools: true,
175
- jsonMode: true,
176
- reasoningControls: false,
177
- maxContextTokens: 128_000,
178
- maxOutputTokens: 4_096,
179
- timeoutMs: 120_000,
180
- },
181
- groq: {
182
- streaming: true,
183
- toolCalling: true,
184
- parallelTools: false, // Groq does not support parallel tool calls
185
- jsonMode: true,
186
- reasoningControls: false,
187
- maxContextTokens: 131_072,
188
- maxOutputTokens: 8_192,
189
- timeoutMs: 30_000, // Groq is very fast; short timeout appropriate
190
- },
191
- cerebras: {
192
- streaming: true,
193
- toolCalling: true,
194
- parallelTools: false,
195
- jsonMode: true,
196
- reasoningControls: false,
197
- maxContextTokens: 128_000,
198
- maxOutputTokens: 8_192,
199
- timeoutMs: 30_000,
200
- },
201
- mistral: {
202
- streaming: true,
203
- toolCalling: true,
204
- parallelTools: false,
205
- jsonMode: true,
206
- reasoningControls: false,
207
- maxContextTokens: 128_000,
208
- maxOutputTokens: 4_096,
209
- timeoutMs: 60_000,
210
- },
211
- huggingface: {
212
- streaming: true,
213
- toolCalling: true,
214
- parallelTools: false,
215
- jsonMode: false,
216
- reasoningControls: false,
217
- maxContextTokens: 128_000,
218
- maxOutputTokens: 8_192,
219
- timeoutMs: 120_000,
220
- },
221
- ollama: {
222
- streaming: true,
223
- toolCalling: true,
224
- parallelTools: false,
225
- jsonMode: true,
226
- reasoningControls: false,
227
- maxContextTokens: 32_768,
228
- maxOutputTokens: 4_096,
229
- timeoutMs: 300_000, // Local models may be slow
230
- },
231
- 'ollama-cloud': {
232
- streaming: true,
233
- toolCalling: true,
234
- parallelTools: false,
235
- jsonMode: true,
236
- reasoningControls: false,
237
- maxContextTokens: 131_072,
238
- maxOutputTokens: 8_192,
239
- timeoutMs: 120_000,
240
- },
241
- aihubmix: {
242
- streaming: true,
243
- toolCalling: true,
244
- parallelTools: true,
245
- jsonMode: true,
246
- reasoningControls: false,
247
- maxContextTokens: 128_000,
248
- maxOutputTokens: 8_192,
249
- timeoutMs: 120_000,
250
- },
251
- deepseek: {
252
- streaming: true,
253
- toolCalling: true,
254
- parallelTools: false,
255
- jsonMode: true,
256
- reasoningControls: false,
257
- maxContextTokens: 128_000,
258
- maxOutputTokens: 8_192,
259
- timeoutMs: 120_000,
260
- },
261
- together: {
262
- streaming: true,
263
- toolCalling: true,
264
- parallelTools: true,
265
- jsonMode: true,
266
- reasoningControls: false,
267
- maxContextTokens: 131_072,
268
- maxOutputTokens: 8_192,
269
- timeoutMs: 120_000,
270
- },
271
- fireworks: {
272
- streaming: true,
273
- toolCalling: true,
274
- parallelTools: true,
275
- jsonMode: true,
276
- reasoningControls: false,
277
- maxContextTokens: 131_072,
278
- maxOutputTokens: 8_192,
279
- timeoutMs: 120_000,
280
- },
281
- 'github-copilot': {
282
- streaming: true,
283
- toolCalling: true,
284
- parallelTools: true,
285
- jsonMode: true,
286
- reasoningControls: false,
287
- maxContextTokens: 128_000,
288
- maxOutputTokens: 8_192,
289
- timeoutMs: 120_000,
290
- },
291
- 'amazon-bedrock': {
292
- streaming: true,
293
- toolCalling: true,
294
- parallelTools: true,
295
- jsonMode: false,
296
- reasoningControls: true,
297
- maxContextTokens: 200_000,
298
- maxOutputTokens: 8_192,
299
- timeoutMs: 120_000,
300
- },
301
- 'amazon-bedrock-mantle': {
302
- streaming: true,
303
- toolCalling: true,
304
- parallelTools: true,
305
- jsonMode: false,
306
- reasoningControls: true,
307
- maxContextTokens: 200_000,
308
- maxOutputTokens: 8_192,
309
- timeoutMs: 120_000,
310
- },
311
- 'anthropic-vertex': {
312
- streaming: true,
313
- toolCalling: true,
314
- parallelTools: true,
315
- jsonMode: false,
316
- reasoningControls: true,
317
- maxContextTokens: 200_000,
318
- maxOutputTokens: 8_192,
319
- timeoutMs: 120_000,
320
- },
321
- minimax: {
322
- streaming: true,
323
- toolCalling: true,
324
- parallelTools: true,
325
- jsonMode: false,
326
- reasoningControls: true,
327
- maxContextTokens: 128_000,
328
- maxOutputTokens: 8_192,
329
- timeoutMs: 120_000,
330
- },
331
- xai: {
332
- streaming: true,
333
- toolCalling: true,
334
- parallelTools: true,
335
- jsonMode: true,
336
- reasoningControls: false,
337
- maxContextTokens: 131_072,
338
- maxOutputTokens: 8_192,
339
- timeoutMs: 120_000,
340
- },
341
- };
342
-
343
- /**
344
- * Fallback defaults applied when a provider is not in `PROVIDER_DEFAULTS`.
345
- * Intentionally conservative: no reasoning controls, modest token limits.
346
- */
347
- const GLOBAL_DEFAULTS: ProviderCapability = {
348
- streaming: true,
349
- toolCalling: true,
350
- parallelTools: false,
351
- jsonMode: false,
352
- reasoningControls: false,
353
- maxContextTokens: 32_768,
354
- maxOutputTokens: 4_096,
355
- timeoutMs: 120_000,
356
- caching: 'none',
357
- };
358
-
359
- // ---------------------------------------------------------------------------
360
- // Per-model overrides
361
- // ---------------------------------------------------------------------------
362
-
363
- /**
364
- * Model-level capability overrides keyed by model ID.
365
- * These take precedence over both provider defaults and `LLMProvider.capabilities`.
366
- */
367
- const MODEL_OVERRIDES: Record<string, Partial<ProviderCapability>> = {
368
- // Anthropic reasoning models
369
- 'claude-opus-4-5': { reasoningControls: true, maxOutputTokens: 32_000 },
370
- 'claude-sonnet-4-5': { reasoningControls: true, maxOutputTokens: 64_000 },
371
- 'claude-3-5-sonnet-20241022': { maxOutputTokens: 8_192 },
372
- 'claude-3-7-sonnet-20250219': { reasoningControls: true, maxOutputTokens: 64_000 },
373
- // OpenAI reasoning models
374
- 'o1': { reasoningControls: true, jsonMode: false, maxOutputTokens: 32_768 },
375
- 'o1-mini': { reasoningControls: true, jsonMode: false, maxOutputTokens: 65_536 },
376
- 'o1-preview': { reasoningControls: true, jsonMode: false, maxOutputTokens: 32_768 },
377
- 'o3': { reasoningControls: true, maxOutputTokens: 100_000 },
378
- 'o3-mini': { reasoningControls: true, maxOutputTokens: 65_536 },
379
- 'o4-mini': { reasoningControls: true, maxOutputTokens: 65_536 },
380
- // Mercury models (InceptionLabs)
381
- 'mercury-2': { toolCalling: false, parallelTools: false, reasoningControls: true, maxOutputTokens: 32_000 },
382
- 'mercury-edit': { toolCalling: false, parallelTools: false, reasoningControls: false, maxOutputTokens: 32_000 },
383
- // Gemini large context
384
- 'gemini-2.5-pro': { maxContextTokens: 2_097_152, maxOutputTokens: 65_536, reasoningControls: true },
385
- 'gemini-2.5-flash': { maxContextTokens: 1_048_576, maxOutputTokens: 65_536, reasoningControls: true },
386
- 'gemini-2.0-flash': { maxContextTokens: 1_048_576, maxOutputTokens: 8_192 },
387
- // Gemini 3 series
388
- 'gemini-3-flash-preview': { maxContextTokens: 1_048_576, maxOutputTokens: 65_536, reasoningControls: true },
389
- };
390
-
391
- // ---------------------------------------------------------------------------
392
- // ProviderCapabilityRegistry
393
- // ---------------------------------------------------------------------------
394
-
395
- /**
396
- * Registry that resolves and caches capability records per provider/model,
397
- * and provides explainable routing decisions.
398
- *
399
- * Merge order (lowest to highest priority):
400
- * 1. `GLOBAL_DEFAULTS` — conservative baseline
401
- * 2. `PROVIDER_DEFAULTS[providerId]` — provider-level defaults
402
- * 3. `LLMProvider.capabilities` — self-declared by the provider instance
403
- * 4. `MODEL_OVERRIDES` — static per-model overrides
404
- *
405
- * Exception: the `caching` field is always sourced from `getCacheCapability(providerId)`
406
- * (falling back to `MODEL_OVERRIDES.caching` if present), so self-declared caching
407
- * from `LLMProvider.capabilities` is intentionally ignored.
408
- *
409
- * The cache key is `${providerId}::${modelId}`. Call `invalidate()` after dynamic
410
- * provider registration to avoid stale entries.
411
- */
412
- export class ProviderCapabilityRegistry {
413
- private readonly cache = new Map<string, ProviderCapability>();
414
-
415
- /**
416
- * Resolve the full capability record for a provider/model pair.
417
- *
418
- * @param providerId - The registered provider name (e.g. `'anthropic'`).
419
- * @param modelId - The model ID (e.g. `'claude-opus-4-5'`).
420
- * @param provider - Optional provider instance for self-declared capabilities.
421
- * @returns A fully-resolved, immutable `ProviderCapability`.
422
- */
423
- getCapability(
424
- providerId: string,
425
- modelId: string,
426
- provider?: Pick<LLMProvider, 'capabilities'>,
427
- ): ProviderCapability {
428
- const key = `${providerId}::${modelId}`;
429
- const cached = this.cache.get(key);
430
- if (cached) return cached;
431
-
432
- const resolved = this._resolve(providerId, modelId, provider);
433
- this.cache.set(key, resolved);
434
- return resolved;
435
- }
436
-
437
- /**
438
- * Invalidate all cached capability records.
439
- * Call after dynamic provider registration or model discovery.
440
- */
441
- invalidate(): void {
442
- this.cache.clear();
443
- }
444
-
445
- /**
446
- * Check whether a resolved capability record satisfies a request profile.
447
- *
448
- * @param capability - Resolved capability from `getCapability()`.
449
- * @param request - The request profile describing requirements.
450
- * @returns `true` if every requirement in the profile is satisfied.
451
- */
452
- canHandle(capability: ProviderCapability, request: RequestProfile): boolean {
453
- return this._collectRejections(capability, request).length === 0;
454
- }
455
-
456
- /**
457
- * Produce a structured routing explanation for a provider/model/request triple.
458
- * Always returns a complete `RouteExplanation` — never throws.
459
- *
460
- * @param providerId - The registered provider name.
461
- * @param modelId - The model ID.
462
- * @param request - The request profile.
463
- * @param provider - Optional provider instance for self-declared capabilities.
464
- * @returns A `RouteExplanation` with `accepted` flag, rejections, and capability.
465
- */
466
- getRouteExplanation(
467
- providerId: string,
468
- modelId: string,
469
- request: RequestProfile,
470
- provider?: Pick<LLMProvider, 'capabilities'>,
471
- ): RouteExplanation {
472
- const capability = this.getCapability(providerId, modelId, provider);
473
- const rejections = this._collectRejections(capability, request);
474
-
475
- if (rejections.length === 0) {
476
- return {
477
- accepted: true,
478
- providerId,
479
- modelId,
480
- summary: `Route accepted: ${providerId}/${modelId} satisfies all request requirements.`,
481
- capability,
482
- };
483
- }
484
-
485
- const reasons = rejections.map((r) => r.reason).join('; ');
486
- return {
487
- accepted: false,
488
- providerId,
489
- modelId,
490
- summary: `Route rejected: ${providerId}/${modelId} — ${reasons}`,
491
- rejections,
492
- capability,
493
- };
494
- }
495
-
496
- // -------------------------------------------------------------------------
497
- // Private helpers
498
- // -------------------------------------------------------------------------
499
-
500
- private _resolve(
501
- providerId: string,
502
- modelId: string,
503
- provider?: Pick<LLMProvider, 'capabilities'>,
504
- ): ProviderCapability {
505
- const providerDefaults = PROVIDER_DEFAULTS[providerId] ?? {};
506
- const selfDeclared: Partial<ProviderCapability> = provider?.capabilities ?? {};
507
- const modelOverride: Partial<ProviderCapability> = MODEL_OVERRIDES[modelId] ?? {};
508
-
509
- // Resolve caching separately via cache-capability module
510
- const cacheType = getCacheCapability(providerId).type;
511
-
512
- // Merge: GLOBAL_DEFAULTS < provider defaults < self-declared < model overrides
513
- return Object.freeze({
514
- ...GLOBAL_DEFAULTS,
515
- ...providerDefaults,
516
- ...selfDeclared,
517
- ...modelOverride,
518
- // caching always derived from getCacheCapability; not overridable via selfDeclared
519
- // but can be overridden by MODEL_OVERRIDES if a future model has different caching
520
- caching: modelOverride.caching ?? cacheType,
521
- });
522
- }
523
-
524
- private _collectRejections(
525
- capability: ProviderCapability,
526
- request: RequestProfile,
527
- ): RouteRejectionDetail[] {
528
- const rejections: RouteRejectionDetail[] = [];
529
-
530
- if (request.requiresStreaming === true && !capability.streaming) {
531
- rejections.push({
532
- code: RouteRejectionCode.NO_STREAMING,
533
- reason: 'Provider does not support streaming responses',
534
- actual: capability.streaming,
535
- required: true,
536
- });
537
- }
538
-
539
- if (request.requiresToolCalling === true && !capability.toolCalling) {
540
- rejections.push({
541
- code: RouteRejectionCode.NO_TOOL_CALLING,
542
- reason: 'Model does not support tool/function calling',
543
- actual: capability.toolCalling,
544
- required: true,
545
- });
546
- }
547
-
548
- if (request.requiresParallelTools === true && !capability.parallelTools) {
549
- rejections.push({
550
- code: RouteRejectionCode.NO_PARALLEL_TOOLS,
551
- reason: 'Model does not support parallel tool execution',
552
- actual: capability.parallelTools,
553
- required: true,
554
- });
555
- }
556
-
557
- if (request.requiresJsonMode === true && !capability.jsonMode) {
558
- rejections.push({
559
- code: RouteRejectionCode.NO_JSON_MODE,
560
- reason: 'Provider does not support JSON mode / structured output',
561
- actual: capability.jsonMode,
562
- required: true,
563
- });
564
- }
565
-
566
- if (request.requiresReasoningControls === true && !capability.reasoningControls) {
567
- rejections.push({
568
- code: RouteRejectionCode.NO_REASONING_CONTROLS,
569
- reason: 'Model does not expose reasoning effort or budget controls',
570
- actual: capability.reasoningControls,
571
- required: true,
572
- });
573
- }
574
-
575
- if (
576
- request.minContextTokens !== undefined &&
577
- capability.maxContextTokens < request.minContextTokens
578
- ) {
579
- rejections.push({
580
- code: RouteRejectionCode.CONTEXT_TOO_SMALL,
581
- reason: `Context window (${capability.maxContextTokens.toLocaleString()} tokens) is smaller than the required minimum (${request.minContextTokens.toLocaleString()} tokens)`,
582
- actual: capability.maxContextTokens,
583
- required: request.minContextTokens,
584
- });
585
- }
586
-
587
- if (
588
- request.minOutputTokens !== undefined &&
589
- capability.maxOutputTokens < request.minOutputTokens
590
- ) {
591
- rejections.push({
592
- code: RouteRejectionCode.OUTPUT_TOO_SMALL,
593
- reason: `Output capacity (${capability.maxOutputTokens.toLocaleString()} tokens) is smaller than the required minimum (${request.minOutputTokens.toLocaleString()} tokens)`,
594
- actual: capability.maxOutputTokens,
595
- required: request.minOutputTokens,
596
- });
597
- }
598
-
599
- return rejections;
600
- }
601
- }
1
+ export * from '@pellux/goodvibes-sdk/platform/providers/capabilities';
@@ -1,12 +1,12 @@
1
1
  import * as fs from 'fs';
2
2
  import * as fsPromises from 'fs/promises';
3
3
  import * as path from 'path';
4
- import type { RuntimeEventBus } from '../runtime/events/index.ts';
5
- import { emitProviderWarning } from '../runtime/emitters/index.ts';
6
- import { OpenAICompatProvider } from './openai-compat.ts';
7
- import { AnthropicCompatProvider } from './anthropic-compat.ts';
8
- import type { LLMProvider } from './interface.ts';
9
- import type { ModelDefinition } from './registry.ts';
4
+ import type { RuntimeEventBus } from '@pellux/goodvibes-sdk/platform/runtime/events/index';
5
+ import { emitProviderWarning } from '@pellux/goodvibes-sdk/platform/runtime/emitters/index';
6
+ import { OpenAICompatProvider } from '@pellux/goodvibes-sdk/platform/providers/openai-compat';
7
+ import { AnthropicCompatProvider } from '@pellux/goodvibes-sdk/platform/providers/anthropic-compat';
8
+ import type { LLMProvider } from '@pellux/goodvibes-sdk/platform/providers/interface';
9
+ import type { ModelDefinition } from '@pellux/goodvibes-sdk/platform/providers/registry';
10
10
  import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
11
11
  import {
12
12
  LocalContextIngestionService,
@@ -1,18 +1,7 @@
1
- import type { OpenAICompatOptions } from './openai-compat.ts';
2
- import { OpenAICompatProvider } from './openai-compat.ts';
3
-
4
- export interface DiscoveredCompatOptions extends OpenAICompatOptions {}
5
-
6
- class DiscoveredCompatProvider extends OpenAICompatProvider {
7
- constructor(opts: DiscoveredCompatOptions) {
8
- super(opts);
9
- }
10
- }
11
-
12
- export class VLLMProvider extends DiscoveredCompatProvider {}
13
-
14
- export class LlamaCppProvider extends DiscoveredCompatProvider {}
15
-
16
- export class TGIProvider extends DiscoveredCompatProvider {}
17
-
18
- export class LocalAIProvider extends DiscoveredCompatProvider {}
1
+ export type { DiscoveredCompatOptions } from '@pellux/goodvibes-sdk/platform/providers/discovered-compat';
2
+ export {
3
+ LocalAIProvider,
4
+ LlamaCppProvider,
5
+ TGIProvider,
6
+ VLLMProvider,
7
+ } from '@pellux/goodvibes-sdk/platform/providers/discovered-compat';
@@ -1,11 +1,11 @@
1
1
  import type { DiscoveredServer } from '@pellux/goodvibes-sdk/platform/discovery/scanner';
2
- import type { LLMProvider } from './interface.ts';
3
- import { getDiscoveredTraits } from './discovered-traits.ts';
4
- import { LocalAIProvider, TGIProvider, VLLMProvider } from './discovered-compat.ts';
5
- import { LlamaCppProvider } from './llama-cpp.ts';
6
- import { LMStudioProvider } from './lm-studio.ts';
7
- import { OpenAICompatProvider } from './openai-compat.ts';
8
- import { OllamaProvider } from './ollama.ts';
2
+ import type { LLMProvider } from '@pellux/goodvibes-sdk/platform/providers/interface';
3
+ import { getDiscoveredTraits } from '@pellux/goodvibes-sdk/platform/providers/discovered-traits';
4
+ import { LocalAIProvider, TGIProvider, VLLMProvider } from '@pellux/goodvibes-sdk/platform/providers/discovered-compat';
5
+ import { LlamaCppProvider } from '@pellux/goodvibes-sdk/platform/providers/llama-cpp';
6
+ import { LMStudioProvider } from '@pellux/goodvibes-sdk/platform/providers/lm-studio';
7
+ import { OpenAICompatProvider } from '@pellux/goodvibes-sdk/platform/providers/openai-compat';
8
+ import { OllamaProvider } from '@pellux/goodvibes-sdk/platform/providers/ollama';
9
9
 
10
10
  export function createDiscoveredProvider(server: DiscoveredServer): LLMProvider {
11
11
  const traits = getDiscoveredTraits(server.serverType);
@@ -1,5 +1,5 @@
1
1
  import type { ServerType } from '@pellux/goodvibes-sdk/platform/discovery/scanner';
2
- import type { ProviderCapability } from './capabilities.ts';
2
+ import type { ProviderCapability } from '@pellux/goodvibes-sdk/platform/providers/capabilities';
3
3
 
4
4
  export interface DiscoveredServerTraits {
5
5
  readonly adapter: