@goondocks/myco 0.17.1 → 0.17.2

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 (160) hide show
  1. package/README.md +1 -1
  2. package/dist/{agent-run-BGW4TY3D.js → agent-run-7AYHXIEF.js} +6 -6
  3. package/dist/{agent-tasks-XUJ6FTPL.js → agent-tasks-UUIFKBD4.js} +6 -6
  4. package/dist/{chunk-VGVRBSLC.js → chunk-25WHTV4N.js} +2 -2
  5. package/dist/{chunk-ZUSTCXHT.js → chunk-3NCVCGUZ.js} +3 -3
  6. package/dist/chunk-5NFJTZ64.js +14 -0
  7. package/dist/chunk-5NFJTZ64.js.map +1 -0
  8. package/dist/{chunk-2WRXLYG6.js → chunk-5ZISXCDC.js} +2 -2
  9. package/dist/{chunk-6SDC6V3N.js → chunk-7DAH5GLC.js} +1 -5
  10. package/dist/{chunk-6SDC6V3N.js.map → chunk-7DAH5GLC.js.map} +1 -1
  11. package/dist/{chunk-KOTFMGL5.js → chunk-BZDZORVP.js} +4 -4
  12. package/dist/{chunk-KKEMVH6D.js → chunk-C3C5QVLK.js} +2 -2
  13. package/dist/{chunk-XQHL4GMO.js → chunk-CTF7TQMJ.js} +3 -3
  14. package/dist/{chunk-CPL76CYD.js → chunk-DT42247G.js} +3 -3
  15. package/dist/{chunk-VQQ57UPG.js → chunk-F6C4IC6R.js} +4 -4
  16. package/dist/{chunk-VQQ57UPG.js.map → chunk-F6C4IC6R.js.map} +1 -1
  17. package/dist/{chunk-SODRR3HE.js → chunk-GFR542SM.js} +1 -1
  18. package/dist/chunk-GFR542SM.js.map +1 -0
  19. package/dist/{chunk-QQ7CXA7Q.js → chunk-HPZ7YAMA.js} +95 -10
  20. package/dist/{chunk-QQ7CXA7Q.js.map → chunk-HPZ7YAMA.js.map} +1 -1
  21. package/dist/{chunk-GBYLHPML.js → chunk-IGBHLFV5.js} +2 -2
  22. package/dist/{chunk-DKSQMH5X.js → chunk-ML6GTPZU.js} +2 -2
  23. package/dist/{chunk-KQOII5RU.js → chunk-NUSTG3BH.js} +3 -3
  24. package/dist/{chunk-2IJ6C63F.js → chunk-RKPTMHED.js} +2 -2
  25. package/dist/{chunk-YTOD6L6N.js → chunk-RMJPQZGF.js} +97 -7
  26. package/dist/chunk-RMJPQZGF.js.map +1 -0
  27. package/dist/{chunk-LA7NDX3J.js → chunk-SI5BBQAT.js} +2 -2
  28. package/dist/{chunk-OGNEW5CN.js → chunk-UTLWSKDV.js} +2 -2
  29. package/dist/{chunk-FEX6ALLH.js → chunk-XD3NEN3Q.js} +29 -3
  30. package/dist/chunk-XD3NEN3Q.js.map +1 -0
  31. package/dist/{chunk-N6JNOSBQ.js → chunk-XZWFMMJR.js} +3 -3
  32. package/dist/{chunk-UDBCAFXS.js → chunk-ZSJPI5MS.js} +2 -2
  33. package/dist/{cli-353VNZIY.js → cli-WJVYP2QT.js} +39 -39
  34. package/dist/{client-7KJ453V4.js → client-LZ3ZR4HC.js} +4 -4
  35. package/dist/{config-K3CJEFFO.js → config-ZQIMG3FB.js} +4 -4
  36. package/dist/{detect-providers-OE6HWW3M.js → detect-providers-C64L3QET.js} +4 -4
  37. package/dist/{doctor-RYFP7ABA.js → doctor-XEPBNHM3.js} +11 -11
  38. package/dist/doctor-XEPBNHM3.js.map +1 -0
  39. package/dist/{executor-YOKYS7OT.js → executor-NXKJU5KW.js} +25 -106
  40. package/dist/executor-NXKJU5KW.js.map +1 -0
  41. package/dist/{init-XR2JZWY2.js → init-BHVQAQ27.js} +54 -72
  42. package/dist/init-BHVQAQ27.js.map +1 -0
  43. package/dist/{llm-PGETQHZ2.js → llm-KTD6SR55.js} +4 -7
  44. package/dist/{loader-J56KP27U.js → loader-NEX3UF6U.js} +3 -3
  45. package/dist/{loader-AVWL7PNO.js → loader-SHRKUKOS.js} +3 -3
  46. package/dist/{main-6DGPZXRF.js → main-YFVBIRRK.js} +87 -57
  47. package/dist/main-YFVBIRRK.js.map +1 -0
  48. package/dist/{open-P7YEH7UJ.js → open-2U7ZRGA3.js} +10 -9
  49. package/dist/open-2U7ZRGA3.js.map +1 -0
  50. package/dist/open-browser-EBKBAYSM.js +9 -0
  51. package/dist/{post-compact-WPS4SONO.js → post-compact-QIBMEWL3.js} +6 -6
  52. package/dist/{post-tool-use-5WLLRGZ5.js → post-tool-use-ICGFXDVY.js} +5 -5
  53. package/dist/{post-tool-use-failure-6C6HSBHI.js → post-tool-use-failure-C7TLH3XQ.js} +6 -6
  54. package/dist/{pre-compact-Z4E4JLAK.js → pre-compact-IF7K4TQK.js} +6 -6
  55. package/dist/{provider-check-CESRPIY5.js → provider-check-LTLQ6BUZ.js} +4 -4
  56. package/dist/{registry-SPKP2WLI.js → registry-TFQ22Z7N.js} +4 -4
  57. package/dist/{remove-B2PFVQXK.js → remove-FBGM2QVJ.js} +7 -7
  58. package/dist/{resolution-events-CLDXZF67.js → resolution-events-HGKIJOTA.js} +4 -4
  59. package/dist/{restart-XAJDOL3E.js → restart-TQEECRNW.js} +7 -7
  60. package/dist/{search-ERTCTAQ3.js → search-NN5FC4Z6.js} +7 -7
  61. package/dist/{server-LXUA7XUQ.js → server-XMWJ4GF7.js} +4 -4
  62. package/dist/{session-433T6V3C.js → session-GLPAFYPO.js} +8 -8
  63. package/dist/{session-end-4Y5VY4OI.js → session-end-TI3ILRBC.js} +5 -5
  64. package/dist/{session-start-3STH4HFL.js → session-start-PJLJDVJJ.js} +10 -10
  65. package/dist/{setup-llm-UBBSQWX5.js → setup-llm-AQSWLXCZ.js} +8 -8
  66. package/dist/src/cli.js +1 -1
  67. package/dist/src/daemon/main.js +1 -1
  68. package/dist/src/hooks/post-tool-use.js +1 -1
  69. package/dist/src/hooks/session-end.js +1 -1
  70. package/dist/src/hooks/session-start.js +1 -1
  71. package/dist/src/hooks/stop.js +1 -1
  72. package/dist/src/hooks/user-prompt-submit.js +1 -1
  73. package/dist/src/mcp/server.js +1 -1
  74. package/dist/{stats-3NW7PGQK.js → stats-BISBIBXZ.js} +8 -8
  75. package/dist/{stop-L7BLMHUD.js → stop-47BJ42EO.js} +5 -5
  76. package/dist/{stop-failure-P5MYHGAZ.js → stop-failure-VU5BTLWX.js} +6 -6
  77. package/dist/{subagent-start-AIEFG4HA.js → subagent-start-SPTKQRHU.js} +6 -6
  78. package/dist/{subagent-stop-TZ62BSNI.js → subagent-stop-UU75BYLC.js} +6 -6
  79. package/dist/{task-completed-ZKVCUBCP.js → task-completed-MVDO7TZF.js} +6 -6
  80. package/dist/{team-WHZW6IFU.js → team-7X64J4Y6.js} +4 -4
  81. package/dist/ui/assets/index-CRmkSi63.css +1 -0
  82. package/dist/ui/assets/index-rpmSpJpm.js +842 -0
  83. package/dist/ui/index.html +2 -2
  84. package/dist/{update-P7GIQLIV.js → update-DA7VEXOS.js} +7 -7
  85. package/dist/{user-prompt-submit-4J7ZW6X3.js → user-prompt-submit-ADZ4NTVO.js} +5 -5
  86. package/dist/{verify-PSERIZPF.js → verify-QYSERHF7.js} +5 -8
  87. package/dist/{verify-PSERIZPF.js.map → verify-QYSERHF7.js.map} +1 -1
  88. package/dist/{version-OHJ5ZLHX.js → version-A72TAL2J.js} +2 -2
  89. package/package.json +6 -2
  90. package/dist/chunk-FEX6ALLH.js.map +0 -1
  91. package/dist/chunk-KGL5QSDN.js +0 -66
  92. package/dist/chunk-KGL5QSDN.js.map +0 -1
  93. package/dist/chunk-SODRR3HE.js.map +0 -1
  94. package/dist/chunk-U3SSOSIR.js +0 -26
  95. package/dist/chunk-U3SSOSIR.js.map +0 -1
  96. package/dist/chunk-Y7QCKCEJ.js +0 -26
  97. package/dist/chunk-Y7QCKCEJ.js.map +0 -1
  98. package/dist/chunk-YTOD6L6N.js.map +0 -1
  99. package/dist/doctor-RYFP7ABA.js.map +0 -1
  100. package/dist/executor-YOKYS7OT.js.map +0 -1
  101. package/dist/init-XR2JZWY2.js.map +0 -1
  102. package/dist/init-wizard-5CH2FD76.js +0 -294
  103. package/dist/init-wizard-5CH2FD76.js.map +0 -1
  104. package/dist/main-6DGPZXRF.js.map +0 -1
  105. package/dist/open-P7YEH7UJ.js.map +0 -1
  106. package/dist/openai-embeddings-LZKY6RV5.js +0 -14
  107. package/dist/openrouter-UTOZG6Z5.js +0 -14
  108. package/dist/ui/assets/index-2UyTdjlV.js +0 -842
  109. package/dist/ui/assets/index-Cts1wLEW.css +0 -1
  110. package/dist/version-OHJ5ZLHX.js.map +0 -1
  111. /package/dist/{agent-run-BGW4TY3D.js.map → agent-run-7AYHXIEF.js.map} +0 -0
  112. /package/dist/{agent-tasks-XUJ6FTPL.js.map → agent-tasks-UUIFKBD4.js.map} +0 -0
  113. /package/dist/{chunk-VGVRBSLC.js.map → chunk-25WHTV4N.js.map} +0 -0
  114. /package/dist/{chunk-ZUSTCXHT.js.map → chunk-3NCVCGUZ.js.map} +0 -0
  115. /package/dist/{chunk-2WRXLYG6.js.map → chunk-5ZISXCDC.js.map} +0 -0
  116. /package/dist/{chunk-KOTFMGL5.js.map → chunk-BZDZORVP.js.map} +0 -0
  117. /package/dist/{chunk-KKEMVH6D.js.map → chunk-C3C5QVLK.js.map} +0 -0
  118. /package/dist/{chunk-XQHL4GMO.js.map → chunk-CTF7TQMJ.js.map} +0 -0
  119. /package/dist/{chunk-CPL76CYD.js.map → chunk-DT42247G.js.map} +0 -0
  120. /package/dist/{chunk-GBYLHPML.js.map → chunk-IGBHLFV5.js.map} +0 -0
  121. /package/dist/{chunk-DKSQMH5X.js.map → chunk-ML6GTPZU.js.map} +0 -0
  122. /package/dist/{chunk-KQOII5RU.js.map → chunk-NUSTG3BH.js.map} +0 -0
  123. /package/dist/{chunk-2IJ6C63F.js.map → chunk-RKPTMHED.js.map} +0 -0
  124. /package/dist/{chunk-LA7NDX3J.js.map → chunk-SI5BBQAT.js.map} +0 -0
  125. /package/dist/{chunk-OGNEW5CN.js.map → chunk-UTLWSKDV.js.map} +0 -0
  126. /package/dist/{chunk-N6JNOSBQ.js.map → chunk-XZWFMMJR.js.map} +0 -0
  127. /package/dist/{chunk-UDBCAFXS.js.map → chunk-ZSJPI5MS.js.map} +0 -0
  128. /package/dist/{cli-353VNZIY.js.map → cli-WJVYP2QT.js.map} +0 -0
  129. /package/dist/{client-7KJ453V4.js.map → client-LZ3ZR4HC.js.map} +0 -0
  130. /package/dist/{config-K3CJEFFO.js.map → config-ZQIMG3FB.js.map} +0 -0
  131. /package/dist/{detect-providers-OE6HWW3M.js.map → detect-providers-C64L3QET.js.map} +0 -0
  132. /package/dist/{llm-PGETQHZ2.js.map → llm-KTD6SR55.js.map} +0 -0
  133. /package/dist/{loader-AVWL7PNO.js.map → loader-NEX3UF6U.js.map} +0 -0
  134. /package/dist/{loader-J56KP27U.js.map → loader-SHRKUKOS.js.map} +0 -0
  135. /package/dist/{openai-embeddings-LZKY6RV5.js.map → open-browser-EBKBAYSM.js.map} +0 -0
  136. /package/dist/{post-compact-WPS4SONO.js.map → post-compact-QIBMEWL3.js.map} +0 -0
  137. /package/dist/{post-tool-use-5WLLRGZ5.js.map → post-tool-use-ICGFXDVY.js.map} +0 -0
  138. /package/dist/{post-tool-use-failure-6C6HSBHI.js.map → post-tool-use-failure-C7TLH3XQ.js.map} +0 -0
  139. /package/dist/{pre-compact-Z4E4JLAK.js.map → pre-compact-IF7K4TQK.js.map} +0 -0
  140. /package/dist/{openrouter-UTOZG6Z5.js.map → provider-check-LTLQ6BUZ.js.map} +0 -0
  141. /package/dist/{provider-check-CESRPIY5.js.map → registry-TFQ22Z7N.js.map} +0 -0
  142. /package/dist/{remove-B2PFVQXK.js.map → remove-FBGM2QVJ.js.map} +0 -0
  143. /package/dist/{registry-SPKP2WLI.js.map → resolution-events-HGKIJOTA.js.map} +0 -0
  144. /package/dist/{restart-XAJDOL3E.js.map → restart-TQEECRNW.js.map} +0 -0
  145. /package/dist/{search-ERTCTAQ3.js.map → search-NN5FC4Z6.js.map} +0 -0
  146. /package/dist/{server-LXUA7XUQ.js.map → server-XMWJ4GF7.js.map} +0 -0
  147. /package/dist/{session-433T6V3C.js.map → session-GLPAFYPO.js.map} +0 -0
  148. /package/dist/{session-end-4Y5VY4OI.js.map → session-end-TI3ILRBC.js.map} +0 -0
  149. /package/dist/{session-start-3STH4HFL.js.map → session-start-PJLJDVJJ.js.map} +0 -0
  150. /package/dist/{setup-llm-UBBSQWX5.js.map → setup-llm-AQSWLXCZ.js.map} +0 -0
  151. /package/dist/{stats-3NW7PGQK.js.map → stats-BISBIBXZ.js.map} +0 -0
  152. /package/dist/{stop-L7BLMHUD.js.map → stop-47BJ42EO.js.map} +0 -0
  153. /package/dist/{stop-failure-P5MYHGAZ.js.map → stop-failure-VU5BTLWX.js.map} +0 -0
  154. /package/dist/{subagent-start-AIEFG4HA.js.map → subagent-start-SPTKQRHU.js.map} +0 -0
  155. /package/dist/{subagent-stop-TZ62BSNI.js.map → subagent-stop-UU75BYLC.js.map} +0 -0
  156. /package/dist/{task-completed-ZKVCUBCP.js.map → task-completed-MVDO7TZF.js.map} +0 -0
  157. /package/dist/{team-WHZW6IFU.js.map → team-7X64J4Y6.js.map} +0 -0
  158. /package/dist/{update-P7GIQLIV.js.map → update-DA7VEXOS.js.map} +0 -0
  159. /package/dist/{user-prompt-submit-4J7ZW6X3.js.map → user-prompt-submit-ADZ4NTVO.js.map} +0 -0
  160. /package/dist/{resolution-events-CLDXZF67.js.map → version-A72TAL2J.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/config/updates.ts"],"sourcesContent":["import type { MycoConfig, EmbeddingProviderConfig, ContextConfig, TaskProviderOverride, PhaseOverride } from './schema.js';\n\n/**\n * Set a value at a dot-separated path, returning a new config object.\n * Creates intermediate objects along the path as needed.\n */\nexport function withValue(config: MycoConfig, dotPath: string, value: unknown): MycoConfig {\n const clone = structuredClone(config) as MycoConfig & Record<string, unknown>;\n const segments = dotPath.split('.');\n let current: Record<string, unknown> = clone;\n\n for (let i = 0; i < segments.length - 1; i++) {\n const segment = segments[i];\n if (current[segment] === undefined || current[segment] === null || typeof current[segment] !== 'object') {\n current[segment] = {};\n }\n current = current[segment] as Record<string, unknown>;\n }\n\n current[segments[segments.length - 1]] = value;\n\n return clone as MycoConfig;\n}\n\n/** Provider override shape used in task config updates. Null means delete. */\ninterface ProviderInput {\n type: 'anthropic' | 'ollama' | 'lmstudio';\n model?: string;\n base_url?: string;\n context_length?: number;\n}\n\n/** Phase override input. Null fields mean delete. */\ninterface PhaseInput {\n provider?: ProviderInput | null;\n model?: string | null;\n maxTurns?: number | null;\n}\n\n/** Input shape for task config updates. Null values mean \"delete this field\". */\nexport interface TaskConfigUpdate {\n provider?: ProviderInput | null;\n model?: string | null;\n maxTurns?: number | null;\n timeoutSeconds?: number | null;\n phases?: Record<string, PhaseInput | null> | null;\n schedule?: { enabled?: boolean; intervalSeconds?: number; runIn?: ('active' | 'idle' | 'sleep')[] } | null;\n}\n\n/**\n * Apply partial task config updates, returning a new config object.\n * Null values delete fields. Empty task entries and phase maps are cleaned up.\n */\nexport function withTaskConfig(\n config: MycoConfig,\n taskId: string,\n update: TaskConfigUpdate,\n): MycoConfig {\n const tasks = { ...(config.agent.tasks ?? {}) };\n const entry: TaskProviderOverride = { ...(tasks[taskId] ?? {}) };\n\n // Apply top-level fields\n if ('provider' in update) {\n if (update.provider === null) {\n delete entry.provider;\n } else if (update.provider !== undefined) {\n entry.provider = { ...update.provider };\n }\n }\n\n if ('model' in update) {\n if (update.model === null) delete entry.model;\n else if (update.model !== undefined) entry.model = update.model;\n }\n\n if ('maxTurns' in update) {\n if (update.maxTurns === null) delete entry.maxTurns;\n else if (update.maxTurns !== undefined) entry.maxTurns = update.maxTurns;\n }\n\n if ('timeoutSeconds' in update) {\n if (update.timeoutSeconds === null) delete entry.timeoutSeconds;\n else if (update.timeoutSeconds !== undefined) entry.timeoutSeconds = update.timeoutSeconds;\n }\n\n // Handle schedule\n if ('schedule' in update) {\n if (update.schedule === null) {\n delete entry.schedule;\n } else if (update.schedule !== undefined) {\n entry.schedule = { ...entry.schedule, ...update.schedule };\n }\n }\n\n // Apply phase overrides\n if ('phases' in update) {\n if (update.phases === null) {\n delete entry.phases;\n } else if (update.phases !== undefined) {\n const phases: Record<string, PhaseOverride> = { ...(entry.phases ?? {}) };\n\n for (const [phaseName, phaseValue] of Object.entries(update.phases)) {\n if (phaseValue === null) {\n delete phases[phaseName];\n } else {\n const pe: PhaseOverride = { ...(phases[phaseName] ?? {}) };\n if ('provider' in phaseValue) {\n if (phaseValue.provider === null) delete pe.provider;\n else if (phaseValue.provider !== undefined) pe.provider = { ...phaseValue.provider };\n }\n if ('model' in phaseValue) {\n if (phaseValue.model === null) delete pe.model;\n else if (phaseValue.model !== undefined) pe.model = phaseValue.model;\n }\n if ('maxTurns' in phaseValue) {\n if (phaseValue.maxTurns === null) delete pe.maxTurns;\n else if (phaseValue.maxTurns !== undefined) pe.maxTurns = phaseValue.maxTurns;\n }\n phases[phaseName] = pe;\n }\n }\n\n // Clean up empty phases map\n if (Object.keys(phases).length === 0) {\n delete entry.phases;\n } else {\n entry.phases = phases;\n }\n }\n }\n\n // Clean up empty task entry\n if (Object.keys(entry).length === 0) {\n delete tasks[taskId];\n } else {\n tasks[taskId] = entry;\n }\n\n return {\n ...config,\n agent: {\n ...config.agent,\n tasks: Object.keys(tasks).length > 0 ? tasks : undefined,\n },\n };\n}\n\n/**\n * Merge partial embedding updates into config, returning a new config object.\n */\nexport function withEmbedding(\n config: MycoConfig,\n updates: Partial<EmbeddingProviderConfig>,\n): MycoConfig {\n return {\n ...config,\n embedding: { ...config.embedding, ...updates },\n };\n}\n\n/**\n * Merge partial context injection updates into config, returning a new config object.\n */\nexport function withContext(\n config: MycoConfig,\n updates: Partial<ContextConfig>,\n): MycoConfig {\n return {\n ...config,\n context: { ...config.context, ...updates },\n };\n}\n"],"mappings":"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","names":[]}
@@ -1,17 +1,13 @@
1
1
  import { createRequire as __cr } from 'node:module'; const require = __cr(import.meta.url);
2
- import {
3
- OpenRouterEmbeddingProvider
4
- } from "./chunk-U3SSOSIR.js";
5
- import {
6
- OpenAIEmbeddingProvider
7
- } from "./chunk-Y7QCKCEJ.js";
8
2
  import {
9
3
  LmStudioBackend,
10
4
  OllamaBackend
11
- } from "./chunk-DKSQMH5X.js";
5
+ } from "./chunk-ML6GTPZU.js";
12
6
  import {
13
- LLM_REQUEST_TIMEOUT_MS
14
- } from "./chunk-6SDC6V3N.js";
7
+ EMBEDDING_REQUEST_TIMEOUT_MS,
8
+ LLM_REQUEST_TIMEOUT_MS,
9
+ PROVIDER_DETECT_TIMEOUT_MS
10
+ } from "./chunk-7DAH5GLC.js";
15
11
 
16
12
  // node_modules/@anthropic-ai/sdk/internal/tslib.mjs
17
13
  function __classPrivateFieldSet(receiver, state, value, kind, f) {
@@ -4899,6 +4895,94 @@ var AnthropicBackend = class {
4899
4895
  }
4900
4896
  };
4901
4897
 
4898
+ // src/cli/providers/cloud-embedding-base.ts
4899
+ var ERROR_BODY_PREVIEW_CHARS = 500;
4900
+ var CloudEmbeddingBase = class {
4901
+ name;
4902
+ apiKey;
4903
+ model;
4904
+ config;
4905
+ constructor(config, opts) {
4906
+ this.config = config;
4907
+ this.name = config.providerName;
4908
+ this.apiKey = opts?.api_key ?? process.env[config.apiKeyEnvVar] ?? "";
4909
+ this.model = opts?.model ?? config.defaultModel;
4910
+ }
4911
+ async embed(text) {
4912
+ const response = await fetch(`${this.config.apiBase}${this.config.embeddingsEndpoint}`, {
4913
+ method: "POST",
4914
+ headers: {
4915
+ "Content-Type": "application/json",
4916
+ "Authorization": `Bearer ${this.apiKey}`
4917
+ },
4918
+ body: JSON.stringify({ model: this.model, input: text }),
4919
+ signal: AbortSignal.timeout(EMBEDDING_REQUEST_TIMEOUT_MS)
4920
+ });
4921
+ if (!response.ok) {
4922
+ const body = await response.text().catch(() => "");
4923
+ throw new Error(`${this.name} embed failed: ${response.status} ${body.slice(0, ERROR_BODY_PREVIEW_CHARS)}`);
4924
+ }
4925
+ const data = await response.json();
4926
+ const embedding = data.data[0].embedding;
4927
+ return { embedding, model: data.model, dimensions: embedding.length };
4928
+ }
4929
+ async isAvailable() {
4930
+ try {
4931
+ const response = await fetch(`${this.config.apiBase}${this.config.modelsEndpoint}`, {
4932
+ headers: { "Authorization": `Bearer ${this.apiKey}` },
4933
+ signal: AbortSignal.timeout(PROVIDER_DETECT_TIMEOUT_MS)
4934
+ });
4935
+ return response.ok;
4936
+ } catch {
4937
+ return false;
4938
+ }
4939
+ }
4940
+ async listModels(timeoutMs) {
4941
+ try {
4942
+ const response = await fetch(`${this.config.apiBase}${this.config.modelsEndpoint}`, {
4943
+ headers: { "Authorization": `Bearer ${this.apiKey}` },
4944
+ signal: AbortSignal.timeout(timeoutMs ?? PROVIDER_DETECT_TIMEOUT_MS)
4945
+ });
4946
+ const data = await response.json();
4947
+ return data.data.filter((m) => this.config.modelFilter(m.id)).map((m) => m.id);
4948
+ } catch {
4949
+ return [];
4950
+ }
4951
+ }
4952
+ };
4953
+
4954
+ // src/cli/providers/openrouter.ts
4955
+ var OPENROUTER_API_KEY_ENV = "MYCO_OPENROUTER_API_KEY";
4956
+ var OpenRouterEmbeddingProvider = class extends CloudEmbeddingBase {
4957
+ constructor(opts) {
4958
+ super({
4959
+ apiBase: "https://openrouter.ai/api/v1",
4960
+ modelsEndpoint: "/models",
4961
+ embeddingsEndpoint: "/embeddings",
4962
+ apiKeyEnvVar: OPENROUTER_API_KEY_ENV,
4963
+ defaultModel: "openai/text-embedding-3-small",
4964
+ providerName: "openrouter",
4965
+ modelFilter: (id) => id.includes("embed")
4966
+ }, opts);
4967
+ }
4968
+ };
4969
+
4970
+ // src/cli/providers/openai-embeddings.ts
4971
+ var OPENAI_API_KEY_ENV = "MYCO_OPENAI_API_KEY";
4972
+ var OpenAIEmbeddingProvider = class extends CloudEmbeddingBase {
4973
+ constructor(opts) {
4974
+ super({
4975
+ apiBase: "https://api.openai.com/v1",
4976
+ modelsEndpoint: "/models",
4977
+ embeddingsEndpoint: "/embeddings",
4978
+ apiKeyEnvVar: OPENAI_API_KEY_ENV,
4979
+ defaultModel: "text-embedding-3-small",
4980
+ providerName: "openai",
4981
+ modelFilter: (id) => id.includes("embedding")
4982
+ }, opts);
4983
+ }
4984
+ };
4985
+
4902
4986
  // src/intelligence/llm.ts
4903
4987
  function createLlmProvider(config) {
4904
4988
  switch (config.provider) {
@@ -4930,7 +5014,8 @@ function createEmbeddingProvider(config) {
4930
5014
  }
4931
5015
 
4932
5016
  export {
5017
+ Anthropic,
4933
5018
  createLlmProvider,
4934
5019
  createEmbeddingProvider
4935
5020
  };
4936
- //# sourceMappingURL=chunk-QQ7CXA7Q.js.map
5021
+ //# sourceMappingURL=chunk-HPZ7YAMA.js.map