@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
@@ -6,8 +6,8 @@ import type {
6
6
  ProviderEmbeddingResult,
7
7
  ProviderRuntimeMetadata,
8
8
  ProviderRuntimeMetadataDeps,
9
- } from './interface.ts';
10
- import { REASONING_BUDGET_MAP } from './interface.ts';
9
+ } from '@pellux/goodvibes-sdk/platform/providers/interface';
10
+ import { REASONING_BUDGET_MAP } from '@pellux/goodvibes-sdk/platform/providers/interface';
11
11
  import { ProviderError } from '@pellux/goodvibes-sdk/platform/types/errors';
12
12
  import { withRetry } from '@pellux/goodvibes-sdk/platform/utils/retry';
13
13
  import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
@@ -15,8 +15,8 @@ import {
15
15
  toGeminiFunctionDeclarations,
16
16
  toGeminiContents,
17
17
  fromGeminiParts,
18
- } from './tool-formats.ts';
19
- import type { GeminiPart } from './tool-formats.ts';
18
+ } from '@pellux/goodvibes-sdk/platform/providers/tool-formats';
19
+ import type { GeminiPart } from '@pellux/goodvibes-sdk/platform/providers/tool-formats';
20
20
  import type { CacheHitTracker } from '@pellux/goodvibes-sdk/platform/providers/cache-strategy';
21
21
  import { summarizeError, toProviderError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
22
22
 
@@ -1,10 +1,10 @@
1
1
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
2
  import { dirname, join } from 'node:path';
3
- import type { ChatRequest, ChatResponse, LLMProvider, ProviderRuntimeMetadata, ProviderRuntimeMetadataDeps } from './interface.ts';
4
- import { OpenAICompatProvider } from './openai-compat.ts';
5
- import { AnthropicCompatProvider } from './anthropic-compat.ts';
3
+ import type { ChatRequest, ChatResponse, LLMProvider, ProviderRuntimeMetadata, ProviderRuntimeMetadataDeps } from '@pellux/goodvibes-sdk/platform/providers/interface';
4
+ import { OpenAICompatProvider } from '@pellux/goodvibes-sdk/platform/providers/openai-compat';
5
+ import { AnthropicCompatProvider } from '@pellux/goodvibes-sdk/platform/providers/anthropic-compat';
6
6
  import { ProviderError } from '@pellux/goodvibes-sdk/platform/types/errors';
7
- import { buildStandardProviderAuthRoutes } from './runtime-metadata.ts';
7
+ import { buildStandardProviderAuthRoutes } from '@pellux/goodvibes-sdk/platform/providers/runtime-metadata';
8
8
  import { toProviderError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
9
9
 
10
10
  const COPILOT_TOKEN_URL = 'https://api.github.com/copilot_internal/v2/token';
@@ -1,47 +1 @@
1
- export type {
2
- ChatRequest,
3
- ChatResponse,
4
- ContentPart,
5
- LLMProvider,
6
- PartialToolCall,
7
- ProviderAuthRouteDescriptor,
8
- ProviderDeclaredAuthRoute,
9
- ProviderEmbeddingRequest,
10
- ProviderEmbeddingResult,
11
- ProviderMessage,
12
- ProviderRuntimeMetadata,
13
- ProviderRuntimeMetadataDeps,
14
- ProviderUsageCostMetadata,
15
- StreamDelta,
16
- } from './interface.ts';
17
- export { createProviderApi } from './provider-api.ts';
18
- export type {
19
- ProviderApi,
20
- ProviderApiBenchmarkStore,
21
- ProviderApiBenchmarkQuery,
22
- ProviderApiBenchmarkRecord,
23
- ProviderApiCatalogBenchmarkRecord,
24
- ProviderApiDependencies,
25
- ProviderApiFavoriteRecord,
26
- ProviderApiFavoritesStore,
27
- ProviderApiFavoriteState,
28
- ProviderApiFavoritesSnapshot,
29
- ProviderApiModelQuery,
30
- ProviderApiModelRecord,
31
- ProviderApiModelReference,
32
- ProviderApiModelRouting,
33
- ProviderApiRegistry,
34
- ProviderApiRuntimeQuery,
35
- ProviderApiRuntimeQueryResult,
36
- ProviderApiSyntheticBenchmarkRecord,
37
- ProviderApiSyntheticRouting,
38
- } from './provider-api.ts';
39
- export type {
40
- ContextWindowProvenance,
41
- ModelDefinition,
42
- ModelTier,
43
- ProviderRegistryOptions,
44
- RuntimeProviderRegistration,
45
- TokenLimits,
46
- } from './registry-types.ts';
47
- export type { ProviderRuntimeSnapshot, ProviderUsageSnapshot } from './runtime-snapshot.ts';
1
+ export * from '@pellux/goodvibes-sdk/platform/providers/index';
@@ -1,5 +1,5 @@
1
1
  import type { ToolDefinition, ToolCall } from '@pellux/goodvibes-sdk/platform/types/tools';
2
- import type { ProviderCapability } from './capabilities.ts';
2
+ import type { ProviderCapability } from '@pellux/goodvibes-sdk/platform/providers/capabilities';
3
3
  import type { SecretsManager } from '../config/secrets.ts';
4
4
  import type { ServiceRegistry } from '../config/service-registry.ts';
5
5
  import type { SubscriptionManager } from '@pellux/goodvibes-sdk/platform/config/subscriptions';
@@ -1,7 +1,7 @@
1
1
  import { withRetry } from '@pellux/goodvibes-sdk/platform/utils/retry';
2
2
  import { ProviderError } from '@pellux/goodvibes-sdk/platform/types/errors';
3
3
  import type { ToolCall } from '@pellux/goodvibes-sdk/platform/types/tools';
4
- import type { ProviderCapability } from './capabilities.ts';
4
+ import type { ProviderCapability } from '@pellux/goodvibes-sdk/platform/providers/capabilities';
5
5
  import type {
6
6
  ChatRequest,
7
7
  ChatResponse,
@@ -12,8 +12,8 @@ import type {
12
12
  ProviderMessage,
13
13
  ProviderRuntimeMetadata,
14
14
  ProviderRuntimeMetadataDeps,
15
- } from './interface.ts';
16
- import { OpenAICompatProvider, type OpenAICompatOptions } from './openai-compat.ts';
15
+ } from '@pellux/goodvibes-sdk/platform/providers/interface';
16
+ import { OpenAICompatProvider, type OpenAICompatOptions } from '@pellux/goodvibes-sdk/platform/providers/openai-compat';
17
17
  import { summarizeError, toProviderError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
18
18
  import {
19
19
  extractTextToolCalls,
@@ -21,7 +21,7 @@ import {
21
21
  toOpenAIMessages,
22
22
  toOpenAITools,
23
23
  type OpenAIToolCall,
24
- } from './tool-formats.ts';
24
+ } from '@pellux/goodvibes-sdk/platform/providers/tool-formats';
25
25
 
26
26
  type NativeFetch = (
27
27
  input: RequestInfo | URL,
@@ -7,7 +7,7 @@ import type {
7
7
  ChatResponse,
8
8
  ContentPart,
9
9
  ProviderMessage,
10
- } from './interface.ts';
10
+ } from '@pellux/goodvibes-sdk/platform/providers/interface';
11
11
 
12
12
  export type ResponsesInputItem =
13
13
  | { role: 'user'; content: Array<{ type: 'input_text'; text: string } | { type: 'input_image'; image_url: string; detail: 'auto' }> }
@@ -1,4 +1,4 @@
1
- import type { ProviderCapability } from './capabilities.ts';
1
+ import type { ProviderCapability } from '@pellux/goodvibes-sdk/platform/providers/capabilities';
2
2
  import type {
3
3
  ChatRequest,
4
4
  ChatResponse,
@@ -9,9 +9,9 @@ import type {
9
9
  ProviderMessage,
10
10
  ProviderRuntimeMetadata,
11
11
  ProviderRuntimeMetadataDeps,
12
- } from './interface.ts';
12
+ } from '@pellux/goodvibes-sdk/platform/providers/interface';
13
13
  import type { ToolCall, ToolDefinition } from '@pellux/goodvibes-sdk/platform/types/tools';
14
- import { OpenAICompatProvider, type OpenAICompatOptions } from './openai-compat.ts';
14
+ import { OpenAICompatProvider, type OpenAICompatOptions } from '@pellux/goodvibes-sdk/platform/providers/openai-compat';
15
15
  import { ProviderError } from '@pellux/goodvibes-sdk/platform/types/errors';
16
16
  import { withRetry } from '@pellux/goodvibes-sdk/platform/utils/retry';
17
17
  import {
@@ -37,7 +37,7 @@ import {
37
37
  shouldFallbackFromResponses,
38
38
  toNativeChatInput,
39
39
  toRecord,
40
- } from './lm-studio-helpers.ts';
40
+ } from '@pellux/goodvibes-sdk/platform/providers/lm-studio-helpers';
41
41
 
42
42
  export interface LMStudioProviderOptions extends OpenAICompatOptions {
43
43
  nativeFetch?: NativeFetch;
@@ -1,7 +1,7 @@
1
1
  import fs from 'node:fs';
2
2
  import { dirname, join } from 'node:path';
3
3
  import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
4
- import type { CatalogModel } from './model-catalog.ts';
4
+ import type { CatalogModel } from '@pellux/goodvibes-sdk/platform/providers/model-catalog';
5
5
  import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
6
6
 
7
7
  interface CatalogModelPricing {
@@ -1,6 +1,6 @@
1
1
  import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
2
2
  import type { FavoritesData } from '@pellux/goodvibes-sdk/platform/providers/favorites';
3
- import type { CatalogDiff, CatalogModel } from './model-catalog.ts';
3
+ import type { CatalogDiff, CatalogModel } from '@pellux/goodvibes-sdk/platform/providers/model-catalog';
4
4
 
5
5
  export function diffCatalogs(
6
6
  oldCatalog: readonly CatalogModel[],
@@ -1,8 +1,8 @@
1
1
  import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
2
2
  import type { BenchmarkEntry } from '@pellux/goodvibes-sdk/platform/providers/model-benchmarks';
3
3
  import { compositeScore } from '@pellux/goodvibes-sdk/platform/providers/model-benchmarks';
4
- import type { CatalogModel } from './model-catalog.ts';
5
- import type { SyntheticBackend, CanonicalModel, SyntheticTier } from './synthetic.ts';
4
+ import type { CatalogModel } from '@pellux/goodvibes-sdk/platform/providers/model-catalog';
5
+ import type { SyntheticBackend, CanonicalModel, SyntheticTier } from '@pellux/goodvibes-sdk/platform/providers/synthetic';
6
6
 
7
7
  export interface MinimalModelDefinition {
8
8
  id: string;
@@ -1,6 +1,6 @@
1
- import type { ModelDefinition, ProviderRegistry } from './registry.ts';
2
- import type { ModelLimitsService } from './model-limits.ts';
3
- import type { MinimalModelDefinition, SyntheticModelInfo } from './model-catalog-synthetic.ts';
1
+ import type { ModelDefinition, ProviderRegistry } from '@pellux/goodvibes-sdk/platform/providers/registry';
2
+ import type { ModelLimitsService } from '@pellux/goodvibes-sdk/platform/providers/model-limits';
3
+ import type { MinimalModelDefinition, SyntheticModelInfo } from '@pellux/goodvibes-sdk/platform/providers/model-catalog-synthetic';
4
4
 
5
5
  export interface CatalogProvider {
6
6
  id: string;
@@ -186,7 +186,7 @@ export function getCatalogModelDefinitionsFrom(models: readonly CatalogModel[]):
186
186
  });
187
187
  }
188
188
 
189
- export type { MinimalModelDefinition, SyntheticModelInfo } from './model-catalog-synthetic.ts';
189
+ export type { MinimalModelDefinition, SyntheticModelInfo } from '@pellux/goodvibes-sdk/platform/providers/model-catalog-synthetic';
190
190
  export {
191
191
  fetchCatalog,
192
192
  getCatalogCachePath,
@@ -194,7 +194,7 @@ export {
194
194
  isCatalogCacheStale,
195
195
  loadCatalogCache,
196
196
  saveCatalogCache,
197
- } from './model-catalog-cache.ts';
197
+ } from '@pellux/goodvibes-sdk/platform/providers/model-catalog-cache';
198
198
  export {
199
199
  buildSyntheticCanonicalModels,
200
200
  getSyntheticBackendModelIds,
@@ -202,10 +202,10 @@ export {
202
202
  getSyntheticModelInfo,
203
203
  nameToSlug,
204
204
  normalizeModelName,
205
- } from './model-catalog-synthetic.ts';
205
+ } from '@pellux/goodvibes-sdk/platform/providers/model-catalog-synthetic';
206
206
  export {
207
207
  diffCatalogs,
208
208
  filterRelevantChanges,
209
209
  formatChangeNotifications,
210
210
  notifyCatalogChanges,
211
- } from './model-catalog-notifications.ts';
211
+ } from '@pellux/goodvibes-sdk/platform/providers/model-catalog-notifications';
@@ -1,280 +1 @@
1
- import { dirname, join } from 'node:path';
2
- import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
3
- import type { ModelDefinition, TokenLimits } from './registry.ts';
4
- import { logger } from '@pellux/goodvibes-sdk/platform/utils/logger';
5
- import { summarizeError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
6
-
7
- interface OpenRouterModelData {
8
- id: string;
9
- context_length: number;
10
- top_provider: {
11
- max_completion_tokens: number | null;
12
- };
13
- supported_parameters?: string[];
14
- pricing?: {
15
- prompt: string;
16
- completion: string;
17
- };
18
- }
19
-
20
- interface OpenRouterResponse {
21
- data: OpenRouterModelData[];
22
- }
23
-
24
- interface ModelLimitsCache {
25
- version: 1;
26
- fetchedAt: number;
27
- ttlMs: number;
28
- models: Record<string, {
29
- contextLength: number;
30
- maxOutputTokens: number | null;
31
- supportedParameters: string[];
32
- pricing?: { prompt: number; completion: number };
33
- }>;
34
- }
35
-
36
- const OPENROUTER_MODELS_URL = 'https://openrouter.ai/api/v1/models';
37
- const FETCH_TIMEOUT_MS = 15_000;
38
- const CACHE_TTL_MS = 86_400_000;
39
-
40
- const DEFAULT_TOKEN_LIMITS: Required<TokenLimits> = {
41
- maxOutputTokens: 8192,
42
- maxToolResultTokens: 50_000,
43
- maxToolCalls: 128,
44
- maxReasoningTokens: 16384,
45
- };
46
-
47
- export interface ModelLimitsServiceOptions {
48
- readonly cachePath: string;
49
- }
50
-
51
- export function getModelLimitsCachePath(cacheDir: string): string {
52
- return join(cacheDir, 'model-limits.json');
53
- }
54
-
55
- function loadCachedLimits(cachePath: string): ModelLimitsCache | null {
56
- try {
57
- const raw = readFileSync(cachePath, 'utf-8');
58
- const parsed = JSON.parse(raw) as ModelLimitsCache;
59
- if (parsed.version !== 1) return null;
60
- return parsed;
61
- } catch (error) {
62
- const message = summarizeError(error);
63
- if (message.includes('ENOENT') || message.includes('no such file')) {
64
- logger.debug('[model-limits] No cache file found (first run)');
65
- } else {
66
- logger.warn('[model-limits] Cache load failed (corrupted?)', { error: message });
67
- }
68
- return null;
69
- }
70
- }
71
-
72
- function saveCachedLimits(cache: ModelLimitsCache, cachePath: string): void {
73
- try {
74
- mkdirSync(dirname(cachePath), { recursive: true });
75
- writeFileSync(cachePath, JSON.stringify(cache, null, 2), 'utf-8');
76
- } catch (error) {
77
- logger.debug('[model-limits] Cache write failed', { error: summarizeError(error) });
78
- }
79
- }
80
-
81
- function isCacheStale(cache: ModelLimitsCache): boolean {
82
- return Date.now() - cache.fetchedAt > cache.ttlMs;
83
- }
84
-
85
- async function fetchOpenRouterModels(): Promise<Map<string, OpenRouterModelData>> {
86
- const controller = new AbortController();
87
- const timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
88
-
89
- try {
90
- const response = await fetch(OPENROUTER_MODELS_URL, {
91
- signal: controller.signal,
92
- headers: { Accept: 'application/json' },
93
- });
94
- if (!response.ok) {
95
- throw new Error(`OpenRouter API returned ${response.status}`);
96
- }
97
-
98
- const json = await response.json() as OpenRouterResponse;
99
- const map = new Map<string, OpenRouterModelData>();
100
- if (Array.isArray(json.data)) {
101
- for (const model of json.data) {
102
- if (typeof model.id === 'string') {
103
- map.set(model.id, model);
104
- }
105
- }
106
- }
107
- return map;
108
- } finally {
109
- clearTimeout(timer);
110
- }
111
- }
112
-
113
- function getModelStem(modelId: string): string {
114
- return modelId
115
- .replace(/-\d{8}$/, '')
116
- .replace(/-(?:2[4-9]|3[0-9])\d{2}$/, '')
117
- .replace(/-\d{6}$/, '');
118
- }
119
-
120
- function findOpenRouterMatch(
121
- modelId: string,
122
- provider: string,
123
- orModels: Map<string, OpenRouterModelData>,
124
- ): OpenRouterModelData | null {
125
- if (orModels.has(modelId)) return orModels.get(modelId) ?? null;
126
-
127
- const prefixed = `${provider}/${modelId}`;
128
- if (orModels.has(prefixed)) return orModels.get(prefixed) ?? null;
129
-
130
- const stem = getModelStem(modelId);
131
- if (stem !== modelId) {
132
- if (orModels.has(stem)) return orModels.get(stem) ?? null;
133
- const prefixedStem = `${provider}/${stem}`;
134
- if (orModels.has(prefixedStem)) return orModels.get(prefixedStem) ?? null;
135
- }
136
-
137
- for (const [orId, orModel] of orModels) {
138
- if (orId.endsWith(`/${stem}`) || orId.endsWith(`/${modelId}`)) {
139
- return orModel;
140
- }
141
- }
142
-
143
- return null;
144
- }
145
-
146
- function buildOrMap(cache: ModelLimitsCache): Map<string, OpenRouterModelData> {
147
- const map = new Map<string, OpenRouterModelData>();
148
- for (const [id, entry] of Object.entries(cache.models)) {
149
- map.set(id, {
150
- id,
151
- context_length: entry.contextLength,
152
- top_provider: { max_completion_tokens: entry.maxOutputTokens },
153
- supported_parameters: entry.supportedParameters,
154
- pricing: entry.pricing
155
- ? { prompt: String(entry.pricing.prompt), completion: String(entry.pricing.completion) }
156
- : undefined,
157
- });
158
- }
159
- return map;
160
- }
161
-
162
- export class ModelLimitsService {
163
- private cachedData: ModelLimitsCache | null = null;
164
- private cachedOrMap: Map<string, OpenRouterModelData> | null = null;
165
-
166
- constructor(private readonly options: ModelLimitsServiceOptions) {}
167
-
168
- private ensureOpenRouterMap(): Map<string, OpenRouterModelData> | null {
169
- if (!this.cachedData) return null;
170
- if (!this.cachedOrMap) {
171
- this.cachedOrMap = buildOrMap(this.cachedData);
172
- }
173
- return this.cachedOrMap;
174
- }
175
-
176
- private resolveTokenLimits(
177
- modelDef: ModelDefinition,
178
- providerLimits?: Partial<TokenLimits>,
179
- ): Required<TokenLimits> {
180
- const result: Required<TokenLimits> = { ...DEFAULT_TOKEN_LIMITS };
181
- const orMap = this.ensureOpenRouterMap();
182
- if (orMap) {
183
- const orMatch = findOpenRouterMatch(modelDef.id, modelDef.provider, orMap);
184
- if (orMatch?.top_provider?.max_completion_tokens != null) {
185
- result.maxOutputTokens = orMatch.top_provider.max_completion_tokens;
186
- }
187
- }
188
- if (providerLimits) {
189
- if (providerLimits.maxOutputTokens != null) result.maxOutputTokens = providerLimits.maxOutputTokens;
190
- if (providerLimits.maxToolResultTokens != null) result.maxToolResultTokens = providerLimits.maxToolResultTokens;
191
- if (providerLimits.maxToolCalls != null) result.maxToolCalls = providerLimits.maxToolCalls;
192
- if (providerLimits.maxReasoningTokens != null) result.maxReasoningTokens = providerLimits.maxReasoningTokens;
193
- }
194
- const explicit = modelDef.tokenLimits;
195
- if (explicit) {
196
- if (explicit.maxOutputTokens != null) result.maxOutputTokens = explicit.maxOutputTokens;
197
- if (explicit.maxToolResultTokens != null) result.maxToolResultTokens = explicit.maxToolResultTokens;
198
- if (explicit.maxToolCalls != null) result.maxToolCalls = explicit.maxToolCalls;
199
- if (explicit.maxReasoningTokens != null) result.maxReasoningTokens = explicit.maxReasoningTokens;
200
- }
201
- return result;
202
- }
203
-
204
- getPricingForModel(modelId: string, provider: string): { prompt: number; completion: number } | null {
205
- const orMap = this.ensureOpenRouterMap();
206
- if (!orMap) return null;
207
- const match = findOpenRouterMatch(modelId, provider, orMap);
208
- if (!match?.pricing) return null;
209
- const prompt = parseFloat(match.pricing.prompt);
210
- const completion = parseFloat(match.pricing.completion);
211
- if (Number.isNaN(prompt) || Number.isNaN(completion)) return null;
212
- return { prompt, completion };
213
- }
214
-
215
- getTokenLimitsForModel(modelDef: ModelDefinition): Required<TokenLimits> {
216
- return this.resolveTokenLimits(modelDef);
217
- }
218
-
219
- getContextWindowForModel(modelDef: ModelDefinition): number {
220
- if (modelDef.contextWindowProvenance === 'provider_api' && modelDef.contextWindow > 0) {
221
- return modelDef.contextWindow;
222
- }
223
- const orMap = this.ensureOpenRouterMap();
224
- if (orMap) {
225
- const orMatch = findOpenRouterMatch(modelDef.id, modelDef.provider, orMap);
226
- if (orMatch?.context_length != null && orMatch.context_length > 0) {
227
- return orMatch.context_length;
228
- }
229
- }
230
- return modelDef.contextWindow;
231
- }
232
-
233
- getToolResultMaxCharsForModel(model: ModelDefinition | null | undefined): number {
234
- if (!model) return DEFAULT_TOKEN_LIMITS.maxToolResultTokens;
235
- return this.resolveTokenLimits(model).maxToolResultTokens;
236
- }
237
-
238
- async refresh(): Promise<number> {
239
- const orModels = await fetchOpenRouterModels();
240
- const models: ModelLimitsCache['models'] = {};
241
- for (const [id, model] of orModels) {
242
- let pricing: { prompt: number; completion: number } | undefined;
243
- if (model.pricing?.prompt != null && model.pricing?.completion != null) {
244
- const prompt = parseFloat(model.pricing.prompt);
245
- const completion = parseFloat(model.pricing.completion);
246
- if (!Number.isNaN(prompt) && !Number.isNaN(completion)) {
247
- pricing = { prompt, completion };
248
- }
249
- }
250
- models[id] = {
251
- contextLength: model.context_length ?? 0,
252
- maxOutputTokens: model.top_provider?.max_completion_tokens ?? null,
253
- supportedParameters: model.supported_parameters ?? [],
254
- pricing,
255
- };
256
- }
257
-
258
- const newCache: ModelLimitsCache = {
259
- version: 1,
260
- fetchedAt: Date.now(),
261
- ttlMs: CACHE_TTL_MS,
262
- models,
263
- };
264
-
265
- saveCachedLimits(newCache, this.options.cachePath);
266
- this.cachedData = newCache;
267
- this.cachedOrMap = buildOrMap(newCache);
268
- return orModels.size;
269
- }
270
-
271
- init(): void {
272
- this.cachedData = loadCachedLimits(this.options.cachePath);
273
- this.cachedOrMap = this.cachedData ? buildOrMap(this.cachedData) : null;
274
- if (!this.cachedData || isCacheStale(this.cachedData)) {
275
- void this.refresh().catch((error) => {
276
- logger.debug('[model-limits] Background refresh failed', { error: summarizeError(error) });
277
- });
278
- }
279
- }
280
- }
1
+ export * from '@pellux/goodvibes-sdk/platform/providers/model-limits';
@@ -1,7 +1,7 @@
1
1
  import { withRetry } from '@pellux/goodvibes-sdk/platform/utils/retry';
2
2
  import { ProviderError } from '@pellux/goodvibes-sdk/platform/types/errors';
3
3
  import type { ToolCall, ToolDefinition } from '@pellux/goodvibes-sdk/platform/types/tools';
4
- import type { ProviderCapability } from './capabilities.ts';
4
+ import type { ProviderCapability } from '@pellux/goodvibes-sdk/platform/providers/capabilities';
5
5
  import type {
6
6
  ChatRequest,
7
7
  ChatResponse,
@@ -13,9 +13,9 @@ import type {
13
13
  ProviderMessage,
14
14
  ProviderRuntimeMetadata,
15
15
  ProviderRuntimeMetadataDeps,
16
- } from './interface.ts';
17
- import { OpenAICompatProvider, type OpenAICompatOptions } from './openai-compat.ts';
18
- import { toOpenAITools } from './tool-formats.ts';
16
+ } from '@pellux/goodvibes-sdk/platform/providers/interface';
17
+ import { OpenAICompatProvider, type OpenAICompatOptions } from '@pellux/goodvibes-sdk/platform/providers/openai-compat';
18
+ import { toOpenAITools } from '@pellux/goodvibes-sdk/platform/providers/tool-formats';
19
19
  import { summarizeError, toProviderError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
20
20
 
21
21
  type NativeFetch = (
@@ -6,11 +6,11 @@ import type {
6
6
  ProviderMessage,
7
7
  ProviderRuntimeMetadata,
8
8
  ProviderRuntimeMetadataDeps,
9
- } from './interface.ts';
9
+ } from '@pellux/goodvibes-sdk/platform/providers/interface';
10
10
  import type { ToolCall, ToolDefinition } from '@pellux/goodvibes-sdk/platform/types/tools';
11
11
  import { ProviderError } from '@pellux/goodvibes-sdk/platform/types/errors';
12
12
  import { withRetry } from '@pellux/goodvibes-sdk/platform/utils/retry';
13
- import { resolveSubscriptionAccessToken } from '../config/subscription-auth.ts';
13
+ import { resolveSubscriptionAccessToken } from '@pellux/goodvibes-sdk/platform/config/subscription-auth';
14
14
  import { arch, platform, release } from 'node:os';
15
15
  import type { SubscriptionManager } from '@pellux/goodvibes-sdk/platform/config/subscriptions';
16
16
  import { toProviderError } from '@pellux/goodvibes-sdk/platform/utils/error-display';
@@ -7,8 +7,8 @@ import type {
7
7
  ProviderEmbeddingResult,
8
8
  ProviderRuntimeMetadata,
9
9
  ProviderRuntimeMetadataDeps,
10
- } from './interface.ts';
11
- import type { ProviderCapability } from './capabilities.ts';
10
+ } from '@pellux/goodvibes-sdk/platform/providers/interface';
11
+ import type { ProviderCapability } from '@pellux/goodvibes-sdk/platform/providers/capabilities';
12
12
  import { ProviderError } from '@pellux/goodvibes-sdk/platform/types/errors';
13
13
  import { withRetry } from '@pellux/goodvibes-sdk/platform/utils/retry';
14
14
  import {
@@ -16,8 +16,8 @@ import {
16
16
  toOpenAIMessages,
17
17
  fromOpenAIToolCalls,
18
18
  extractTextToolCalls,
19
- } from './tool-formats.ts';
20
- import type { OpenAIToolCall } from './tool-formats.ts';
19
+ } from '@pellux/goodvibes-sdk/platform/providers/tool-formats';
20
+ import type { OpenAIToolCall } from '@pellux/goodvibes-sdk/platform/providers/tool-formats';
21
21
  import { getCacheCapability } from '@pellux/goodvibes-sdk/platform/providers/cache-capability';
22
22
  import type { ProviderCacheCapability } from '@pellux/goodvibes-sdk/platform/providers/cache-capability';
23
23
  import type { CacheHitTracker } from '@pellux/goodvibes-sdk/platform/providers/cache-strategy';
@@ -7,7 +7,7 @@ import type {
7
7
  ProviderEmbeddingResult,
8
8
  ProviderRuntimeMetadata,
9
9
  ProviderRuntimeMetadataDeps,
10
- } from './interface.ts';
10
+ } from '@pellux/goodvibes-sdk/platform/providers/interface';
11
11
  import { ProviderError } from '@pellux/goodvibes-sdk/platform/types/errors';
12
12
  import { withRetry } from '@pellux/goodvibes-sdk/platform/utils/retry';
13
13
  import {
@@ -15,8 +15,8 @@ import {
15
15
  toOpenAIMessages,
16
16
  fromOpenAIToolCalls,
17
17
  extractTextToolCalls,
18
- } from './tool-formats.ts';
19
- import type { OpenAIToolCall } from './tool-formats.ts';
18
+ } from '@pellux/goodvibes-sdk/platform/providers/tool-formats';
19
+ import type { OpenAIToolCall } from '@pellux/goodvibes-sdk/platform/providers/tool-formats';
20
20
  import type { CacheHitTracker } from '@pellux/goodvibes-sdk/platform/providers/cache-strategy';
21
21
  import { extractOpenAIStreamTextDelta } from '@pellux/goodvibes-sdk/platform/providers/openai-stream-delta';
22
22
  import { summarizeError, toProviderError } from '@pellux/goodvibes-sdk/platform/utils/error-display';