@pellux/goodvibes-tui 0.18.4 → 0.18.9

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