@opengoat/core 2026.2.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 (288) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +20 -0
  3. package/dist/apps/runtime/create-opengoat-runtime.d.ts +14 -0
  4. package/dist/apps/runtime/create-opengoat-runtime.js +23 -0
  5. package/dist/apps/runtime/create-opengoat-runtime.js.map +1 -0
  6. package/dist/core/acp/application/acp-agent.d.ts +60 -0
  7. package/dist/core/acp/application/acp-agent.js +424 -0
  8. package/dist/core/acp/application/acp-agent.js.map +1 -0
  9. package/dist/core/acp/application/session-store.d.ts +13 -0
  10. package/dist/core/acp/application/session-store.js +40 -0
  11. package/dist/core/acp/application/session-store.js.map +1 -0
  12. package/dist/core/acp/domain/meta.d.ts +7 -0
  13. package/dist/core/acp/domain/meta.js +31 -0
  14. package/dist/core/acp/domain/meta.js.map +1 -0
  15. package/dist/core/acp/domain/session.d.ts +23 -0
  16. package/dist/core/acp/domain/session.js +2 -0
  17. package/dist/core/acp/domain/session.js.map +1 -0
  18. package/dist/core/acp/index.d.ts +5 -0
  19. package/dist/core/acp/index.js +4 -0
  20. package/dist/core/acp/index.js.map +1 -0
  21. package/dist/core/agents/application/agent-manifest.service.d.ts +20 -0
  22. package/dist/core/agents/application/agent-manifest.service.js +89 -0
  23. package/dist/core/agents/application/agent-manifest.service.js.map +1 -0
  24. package/dist/core/agents/application/agent.service.d.ts +25 -0
  25. package/dist/core/agents/application/agent.service.js +191 -0
  26. package/dist/core/agents/application/agent.service.js.map +1 -0
  27. package/dist/core/agents/application/workspace-context.service.d.ts +28 -0
  28. package/dist/core/agents/application/workspace-context.service.js +157 -0
  29. package/dist/core/agents/application/workspace-context.service.js.map +1 -0
  30. package/dist/core/agents/domain/agent-manifest.d.ts +37 -0
  31. package/dist/core/agents/domain/agent-manifest.js +228 -0
  32. package/dist/core/agents/domain/agent-manifest.js.map +1 -0
  33. package/dist/core/agents/domain/workspace-context.d.ts +13 -0
  34. package/dist/core/agents/domain/workspace-context.js +14 -0
  35. package/dist/core/agents/domain/workspace-context.js.map +1 -0
  36. package/dist/core/agents/index.d.ts +6 -0
  37. package/dist/core/agents/index.js +6 -0
  38. package/dist/core/agents/index.js.map +1 -0
  39. package/dist/core/bootstrap/application/bootstrap.service.d.ts +24 -0
  40. package/dist/core/bootstrap/application/bootstrap.service.js +108 -0
  41. package/dist/core/bootstrap/application/bootstrap.service.js.map +1 -0
  42. package/dist/core/bootstrap/index.d.ts +1 -0
  43. package/dist/core/bootstrap/index.js +2 -0
  44. package/dist/core/bootstrap/index.js.map +1 -0
  45. package/dist/core/domain/agent-id.d.ts +3 -0
  46. package/dist/core/domain/agent-id.js +12 -0
  47. package/dist/core/domain/agent-id.js.map +1 -0
  48. package/dist/core/domain/agent.d.ts +39 -0
  49. package/dist/core/domain/agent.js +2 -0
  50. package/dist/core/domain/agent.js.map +1 -0
  51. package/dist/core/domain/opengoat-paths.d.ts +29 -0
  52. package/dist/core/domain/opengoat-paths.js +2 -0
  53. package/dist/core/domain/opengoat-paths.js.map +1 -0
  54. package/dist/core/gateway/domain/protocol.d.ts +113 -0
  55. package/dist/core/gateway/domain/protocol.js +394 -0
  56. package/dist/core/gateway/domain/protocol.js.map +1 -0
  57. package/dist/core/gateway/index.d.ts +2 -0
  58. package/dist/core/gateway/index.js +2 -0
  59. package/dist/core/gateway/index.js.map +1 -0
  60. package/dist/core/llm/application/vercel-ai-text-runtime.d.ts +26 -0
  61. package/dist/core/llm/application/vercel-ai-text-runtime.js +223 -0
  62. package/dist/core/llm/application/vercel-ai-text-runtime.js.map +1 -0
  63. package/dist/core/llm/domain/text-runtime.d.ts +22 -0
  64. package/dist/core/llm/domain/text-runtime.js +2 -0
  65. package/dist/core/llm/domain/text-runtime.js.map +1 -0
  66. package/dist/core/llm/index.d.ts +2 -0
  67. package/dist/core/llm/index.js +2 -0
  68. package/dist/core/llm/index.js.map +1 -0
  69. package/dist/core/logging/application/structured-logger.d.ts +29 -0
  70. package/dist/core/logging/application/structured-logger.js +86 -0
  71. package/dist/core/logging/application/structured-logger.js.map +1 -0
  72. package/dist/core/logging/domain/logger.d.ts +16 -0
  73. package/dist/core/logging/domain/logger.js +18 -0
  74. package/dist/core/logging/domain/logger.js.map +1 -0
  75. package/dist/core/logging/index.d.ts +3 -0
  76. package/dist/core/logging/index.js +3 -0
  77. package/dist/core/logging/index.js.map +1 -0
  78. package/dist/core/opengoat/application/opengoat.service.d.ts +84 -0
  79. package/dist/core/opengoat/application/opengoat.service.js +308 -0
  80. package/dist/core/opengoat/application/opengoat.service.js.map +1 -0
  81. package/dist/core/opengoat/index.d.ts +1 -0
  82. package/dist/core/opengoat/index.js +2 -0
  83. package/dist/core/opengoat/index.js.map +1 -0
  84. package/dist/core/orchestration/application/orchestration-planner.service.d.ts +28 -0
  85. package/dist/core/orchestration/application/orchestration-planner.service.js +279 -0
  86. package/dist/core/orchestration/application/orchestration-planner.service.js.map +1 -0
  87. package/dist/core/orchestration/application/orchestration.service.d.ts +52 -0
  88. package/dist/core/orchestration/application/orchestration.service.js +1044 -0
  89. package/dist/core/orchestration/application/orchestration.service.js.map +1 -0
  90. package/dist/core/orchestration/application/routing.service.d.ts +11 -0
  91. package/dist/core/orchestration/application/routing.service.js +108 -0
  92. package/dist/core/orchestration/application/routing.service.js.map +1 -0
  93. package/dist/core/orchestration/domain/loop.d.ts +119 -0
  94. package/dist/core/orchestration/domain/loop.js +2 -0
  95. package/dist/core/orchestration/domain/loop.js.map +1 -0
  96. package/dist/core/orchestration/domain/routing.d.ts +58 -0
  97. package/dist/core/orchestration/domain/routing.js +2 -0
  98. package/dist/core/orchestration/domain/routing.js.map +1 -0
  99. package/dist/core/orchestration/domain/run-events.d.ts +21 -0
  100. package/dist/core/orchestration/domain/run-events.js +2 -0
  101. package/dist/core/orchestration/domain/run-events.js.map +1 -0
  102. package/dist/core/orchestration/index.d.ts +6 -0
  103. package/dist/core/orchestration/index.js +4 -0
  104. package/dist/core/orchestration/index.js.map +1 -0
  105. package/dist/core/plugins/application/plugin.service.d.ts +32 -0
  106. package/dist/core/plugins/application/plugin.service.js +236 -0
  107. package/dist/core/plugins/application/plugin.service.js.map +1 -0
  108. package/dist/core/plugins/domain/openclaw-compat.d.ts +60 -0
  109. package/dist/core/plugins/domain/openclaw-compat.js +9 -0
  110. package/dist/core/plugins/domain/openclaw-compat.js.map +1 -0
  111. package/dist/core/plugins/index.d.ts +3 -0
  112. package/dist/core/plugins/index.js +3 -0
  113. package/dist/core/plugins/index.js.map +1 -0
  114. package/dist/core/ports/command-runner.port.d.ts +14 -0
  115. package/dist/core/ports/command-runner.port.js +2 -0
  116. package/dist/core/ports/command-runner.port.js.map +1 -0
  117. package/dist/core/ports/file-system.port.d.ts +9 -0
  118. package/dist/core/ports/file-system.port.js +2 -0
  119. package/dist/core/ports/file-system.port.js.map +1 -0
  120. package/dist/core/ports/path.port.d.ts +3 -0
  121. package/dist/core/ports/path.port.js +2 -0
  122. package/dist/core/ports/path.port.js.map +1 -0
  123. package/dist/core/ports/paths-provider.port.d.ts +4 -0
  124. package/dist/core/ports/paths-provider.port.js +2 -0
  125. package/dist/core/ports/paths-provider.port.js.map +1 -0
  126. package/dist/core/providers/application/provider.service.d.ts +80 -0
  127. package/dist/core/providers/application/provider.service.js +391 -0
  128. package/dist/core/providers/application/provider.service.js.map +1 -0
  129. package/dist/core/providers/base-provider.d.ts +20 -0
  130. package/dist/core/providers/base-provider.js +44 -0
  131. package/dist/core/providers/base-provider.js.map +1 -0
  132. package/dist/core/providers/cli-provider.d.ts +26 -0
  133. package/dist/core/providers/cli-provider.js +151 -0
  134. package/dist/core/providers/cli-provider.js.map +1 -0
  135. package/dist/core/providers/command-executor.d.ts +12 -0
  136. package/dist/core/providers/command-executor.js +76 -0
  137. package/dist/core/providers/command-executor.js.map +1 -0
  138. package/dist/core/providers/errors.d.ts +30 -0
  139. package/dist/core/providers/errors.js +52 -0
  140. package/dist/core/providers/errors.js.map +1 -0
  141. package/dist/core/providers/index.d.ts +18 -0
  142. package/dist/core/providers/index.js +27 -0
  143. package/dist/core/providers/index.js.map +1 -0
  144. package/dist/core/providers/loader.d.ts +2 -0
  145. package/dist/core/providers/loader.js +99 -0
  146. package/dist/core/providers/loader.js.map +1 -0
  147. package/dist/core/providers/onboarding.d.ts +13 -0
  148. package/dist/core/providers/onboarding.js +149 -0
  149. package/dist/core/providers/onboarding.js.map +1 -0
  150. package/dist/core/providers/provider-module.d.ts +19 -0
  151. package/dist/core/providers/provider-module.js +2 -0
  152. package/dist/core/providers/provider-module.js.map +1 -0
  153. package/dist/core/providers/provider-session.d.ts +3 -0
  154. package/dist/core/providers/provider-session.js +44 -0
  155. package/dist/core/providers/provider-session.js.map +1 -0
  156. package/dist/core/providers/providers/claude/index.d.ts +4 -0
  157. package/dist/core/providers/providers/claude/index.js +19 -0
  158. package/dist/core/providers/providers/claude/index.js.map +1 -0
  159. package/dist/core/providers/providers/claude/provider.d.ts +8 -0
  160. package/dist/core/providers/providers/claude/provider.js +106 -0
  161. package/dist/core/providers/providers/claude/provider.js.map +1 -0
  162. package/dist/core/providers/providers/codex/index.d.ts +4 -0
  163. package/dist/core/providers/providers/codex/index.js +19 -0
  164. package/dist/core/providers/providers/codex/index.js.map +1 -0
  165. package/dist/core/providers/providers/codex/provider.d.ts +7 -0
  166. package/dist/core/providers/providers/codex/provider.js +31 -0
  167. package/dist/core/providers/providers/codex/provider.js.map +1 -0
  168. package/dist/core/providers/providers/cursor/index.d.ts +4 -0
  169. package/dist/core/providers/providers/cursor/index.js +19 -0
  170. package/dist/core/providers/providers/cursor/index.js.map +1 -0
  171. package/dist/core/providers/providers/cursor/provider.d.ts +11 -0
  172. package/dist/core/providers/providers/cursor/provider.js +90 -0
  173. package/dist/core/providers/providers/cursor/provider.js.map +1 -0
  174. package/dist/core/providers/providers/extended-http/catalog.d.ts +40 -0
  175. package/dist/core/providers/providers/extended-http/catalog.js +728 -0
  176. package/dist/core/providers/providers/extended-http/catalog.js.map +1 -0
  177. package/dist/core/providers/providers/extended-http/index.d.ts +5 -0
  178. package/dist/core/providers/providers/extended-http/index.js +13 -0
  179. package/dist/core/providers/providers/extended-http/index.js.map +1 -0
  180. package/dist/core/providers/providers/extended-http/provider.d.ts +31 -0
  181. package/dist/core/providers/providers/extended-http/provider.js +580 -0
  182. package/dist/core/providers/providers/extended-http/provider.js.map +1 -0
  183. package/dist/core/providers/providers/gemini/index.d.ts +4 -0
  184. package/dist/core/providers/providers/gemini/index.js +37 -0
  185. package/dist/core/providers/providers/gemini/index.js.map +1 -0
  186. package/dist/core/providers/providers/gemini/provider.d.ts +7 -0
  187. package/dist/core/providers/providers/gemini/provider.js +59 -0
  188. package/dist/core/providers/providers/gemini/provider.js.map +1 -0
  189. package/dist/core/providers/providers/grok/index.d.ts +4 -0
  190. package/dist/core/providers/providers/grok/index.js +41 -0
  191. package/dist/core/providers/providers/grok/index.js.map +1 -0
  192. package/dist/core/providers/providers/grok/provider.d.ts +13 -0
  193. package/dist/core/providers/providers/grok/provider.js +95 -0
  194. package/dist/core/providers/providers/grok/provider.js.map +1 -0
  195. package/dist/core/providers/providers/openai/index.d.ts +4 -0
  196. package/dist/core/providers/providers/openai/index.js +45 -0
  197. package/dist/core/providers/providers/openai/index.js.map +1 -0
  198. package/dist/core/providers/providers/openai/provider.d.ts +14 -0
  199. package/dist/core/providers/providers/openai/provider.js +203 -0
  200. package/dist/core/providers/providers/openai/provider.js.map +1 -0
  201. package/dist/core/providers/providers/openclaw/index.d.ts +4 -0
  202. package/dist/core/providers/providers/openclaw/index.js +31 -0
  203. package/dist/core/providers/providers/openclaw/index.js.map +1 -0
  204. package/dist/core/providers/providers/openclaw/provider.d.ts +11 -0
  205. package/dist/core/providers/providers/openclaw/provider.js +108 -0
  206. package/dist/core/providers/providers/openclaw/provider.js.map +1 -0
  207. package/dist/core/providers/providers/opencode/index.d.ts +4 -0
  208. package/dist/core/providers/providers/opencode/index.js +23 -0
  209. package/dist/core/providers/providers/opencode/index.js.map +1 -0
  210. package/dist/core/providers/providers/opencode/provider.d.ts +11 -0
  211. package/dist/core/providers/providers/opencode/provider.js +215 -0
  212. package/dist/core/providers/providers/opencode/provider.js.map +1 -0
  213. package/dist/core/providers/providers/openrouter/index.d.ts +4 -0
  214. package/dist/core/providers/providers/openrouter/index.js +37 -0
  215. package/dist/core/providers/providers/openrouter/index.js.map +1 -0
  216. package/dist/core/providers/providers/openrouter/provider.d.ts +13 -0
  217. package/dist/core/providers/providers/openrouter/provider.js +80 -0
  218. package/dist/core/providers/providers/openrouter/provider.js.map +1 -0
  219. package/dist/core/providers/registry.d.ts +13 -0
  220. package/dist/core/providers/registry.js +36 -0
  221. package/dist/core/providers/registry.js.map +1 -0
  222. package/dist/core/providers/types.d.ts +101 -0
  223. package/dist/core/providers/types.js +2 -0
  224. package/dist/core/providers/types.js.map +1 -0
  225. package/dist/core/scenarios/application/scenario-runner.service.d.ts +23 -0
  226. package/dist/core/scenarios/application/scenario-runner.service.js +172 -0
  227. package/dist/core/scenarios/application/scenario-runner.service.js.map +1 -0
  228. package/dist/core/scenarios/domain/scenario.d.ts +43 -0
  229. package/dist/core/scenarios/domain/scenario.js +2 -0
  230. package/dist/core/scenarios/domain/scenario.js.map +1 -0
  231. package/dist/core/scenarios/index.d.ts +2 -0
  232. package/dist/core/scenarios/index.js +2 -0
  233. package/dist/core/scenarios/index.js.map +1 -0
  234. package/dist/core/sessions/application/session.service.d.ts +74 -0
  235. package/dist/core/sessions/application/session.service.js +895 -0
  236. package/dist/core/sessions/application/session.service.js.map +1 -0
  237. package/dist/core/sessions/domain/session.d.ts +80 -0
  238. package/dist/core/sessions/domain/session.js +24 -0
  239. package/dist/core/sessions/domain/session.js.map +1 -0
  240. package/dist/core/sessions/domain/transcript.d.ts +28 -0
  241. package/dist/core/sessions/domain/transcript.js +10 -0
  242. package/dist/core/sessions/domain/transcript.js.map +1 -0
  243. package/dist/core/sessions/errors.d.ts +12 -0
  244. package/dist/core/sessions/errors.js +22 -0
  245. package/dist/core/sessions/errors.js.map +1 -0
  246. package/dist/core/sessions/index.d.ts +6 -0
  247. package/dist/core/sessions/index.js +4 -0
  248. package/dist/core/sessions/index.js.map +1 -0
  249. package/dist/core/skills/application/skill.service.d.ts +24 -0
  250. package/dist/core/skills/application/skill.service.js +375 -0
  251. package/dist/core/skills/application/skill.service.js.map +1 -0
  252. package/dist/core/skills/domain/skill.d.ts +62 -0
  253. package/dist/core/skills/domain/skill.js +46 -0
  254. package/dist/core/skills/domain/skill.js.map +1 -0
  255. package/dist/core/skills/index.d.ts +3 -0
  256. package/dist/core/skills/index.js +3 -0
  257. package/dist/core/skills/index.js.map +1 -0
  258. package/dist/core/templates/default-templates.d.ts +19 -0
  259. package/dist/core/templates/default-templates.js +259 -0
  260. package/dist/core/templates/default-templates.js.map +1 -0
  261. package/dist/index.d.ts +27 -0
  262. package/dist/index.js +28 -0
  263. package/dist/index.js.map +1 -0
  264. package/dist/platform/node/acp-server.d.ts +12 -0
  265. package/dist/platform/node/acp-server.js +18 -0
  266. package/dist/platform/node/acp-server.js.map +1 -0
  267. package/dist/platform/node/dotenv.d.ts +6 -0
  268. package/dist/platform/node/dotenv.js +67 -0
  269. package/dist/platform/node/dotenv.js.map +1 -0
  270. package/dist/platform/node/node-command-runner.d.ts +4 -0
  271. package/dist/platform/node/node-command-runner.js +29 -0
  272. package/dist/platform/node/node-command-runner.js.map +1 -0
  273. package/dist/platform/node/node-file-system.d.ts +10 -0
  274. package/dist/platform/node/node-file-system.js +47 -0
  275. package/dist/platform/node/node-file-system.js.map +1 -0
  276. package/dist/platform/node/node-logger.d.ts +9 -0
  277. package/dist/platform/node/node-logger.js +124 -0
  278. package/dist/platform/node/node-logger.js.map +1 -0
  279. package/dist/platform/node/node-path.port.d.ts +9 -0
  280. package/dist/platform/node/node-path.port.js +41 -0
  281. package/dist/platform/node/node-path.port.js.map +1 -0
  282. package/dist/platform/node/opengoat-gateway-client.d.ts +19 -0
  283. package/dist/platform/node/opengoat-gateway-client.js +194 -0
  284. package/dist/platform/node/opengoat-gateway-client.js.map +1 -0
  285. package/dist/platform/node/opengoat-gateway-server.d.ts +53 -0
  286. package/dist/platform/node/opengoat-gateway-server.js +906 -0
  287. package/dist/platform/node/opengoat-gateway-server.js.map +1 -0
  288. package/package.json +37 -0
@@ -0,0 +1,391 @@
1
+ import { DEFAULT_BOOTSTRAP_MAX_CHARS } from "../../agents/index.js";
2
+ import { isDefaultAgentId } from "../../domain/agent-id.js";
3
+ import { createNoopLogger } from "../../logging/index.js";
4
+ import { AgentConfigNotFoundError, DEFAULT_PROVIDER_ID, InvalidAgentConfigError, InvalidProviderConfigError, UnsupportedProviderActionError, listProviderSummaries } from "../index.js";
5
+ export class ProviderService {
6
+ fileSystem;
7
+ pathPort;
8
+ providerRegistryInput;
9
+ providerRegistryPromise;
10
+ workspaceContextService;
11
+ skillService;
12
+ nowIso;
13
+ logger;
14
+ constructor(deps) {
15
+ this.fileSystem = deps.fileSystem;
16
+ this.pathPort = deps.pathPort;
17
+ this.providerRegistryInput = deps.providerRegistry;
18
+ this.workspaceContextService = deps.workspaceContextService;
19
+ this.skillService = deps.skillService;
20
+ this.nowIso = deps.nowIso;
21
+ this.logger = (deps.logger ?? createNoopLogger()).child({ scope: "provider-service" });
22
+ }
23
+ async listProviders() {
24
+ const registry = await this.getProviderRegistry();
25
+ return listProviderSummaries(registry);
26
+ }
27
+ async getProviderOnboarding(providerId) {
28
+ const registry = await this.getProviderRegistry();
29
+ return registry.getProviderOnboarding(providerId);
30
+ }
31
+ async invokeProviderAuth(paths, providerId, options = {}) {
32
+ const registry = await this.getProviderRegistry();
33
+ const provider = registry.create(providerId);
34
+ const env = await this.resolveProviderEnv(paths, provider.id, options.env);
35
+ this.logger.info("Invoking provider auth.", {
36
+ providerId: provider.id
37
+ });
38
+ return provider.invokeAuth?.({
39
+ ...options,
40
+ env
41
+ }) ?? {
42
+ code: 1,
43
+ stdout: "",
44
+ stderr: `${provider.id} does not support auth\n`
45
+ };
46
+ }
47
+ async getProviderConfig(paths, providerId) {
48
+ const configPath = this.getProviderConfigPath(paths, providerId);
49
+ const exists = await this.fileSystem.exists(configPath);
50
+ if (!exists) {
51
+ return null;
52
+ }
53
+ const raw = await this.fileSystem.readFile(configPath);
54
+ let parsed;
55
+ try {
56
+ parsed = JSON.parse(raw);
57
+ }
58
+ catch {
59
+ throw new InvalidProviderConfigError(providerId, configPath);
60
+ }
61
+ if (!isProviderStoredConfig(parsed)) {
62
+ throw new InvalidProviderConfigError(providerId, configPath, "schema mismatch");
63
+ }
64
+ return parsed;
65
+ }
66
+ async setProviderConfig(paths, providerId, env) {
67
+ const registry = await this.getProviderRegistry();
68
+ const provider = registry.create(providerId);
69
+ const providerDir = this.pathPort.join(paths.providersDir, provider.id);
70
+ const configPath = this.getProviderConfigPath(paths, provider.id);
71
+ const existing = await this.getProviderConfig(paths, provider.id);
72
+ const mergedEnv = sanitizeEnvMap({
73
+ ...(existing?.env ?? {}),
74
+ ...env
75
+ });
76
+ const next = {
77
+ schemaVersion: 1,
78
+ providerId: provider.id,
79
+ env: mergedEnv,
80
+ updatedAt: this.nowIso()
81
+ };
82
+ await this.fileSystem.ensureDir(providerDir);
83
+ await this.fileSystem.writeFile(configPath, `${JSON.stringify(next, null, 2)}\n`);
84
+ return next;
85
+ }
86
+ async getAgentProvider(paths, agentId, configOverride) {
87
+ const registry = await this.getProviderRegistry();
88
+ const config = configOverride ?? (await this.readAgentConfig(paths, agentId));
89
+ const configuredProviderId = getConfiguredProviderId(config);
90
+ // Validate at read time so invalid configs are surfaced early.
91
+ const provider = registry.create(configuredProviderId);
92
+ return {
93
+ agentId,
94
+ providerId: provider.id
95
+ };
96
+ }
97
+ async setAgentProvider(paths, agentId, providerId) {
98
+ const registry = await this.getProviderRegistry();
99
+ const provider = registry.create(providerId);
100
+ const configPath = this.getAgentConfigPath(paths, agentId);
101
+ const config = await this.readAgentConfig(paths, agentId);
102
+ config.provider = {
103
+ id: provider.id,
104
+ updatedAt: this.nowIso()
105
+ };
106
+ await this.fileSystem.writeFile(configPath, `${JSON.stringify(config, null, 2)}\n`);
107
+ return {
108
+ agentId,
109
+ providerId: provider.id
110
+ };
111
+ }
112
+ async invokeAgent(paths, agentId, options, runtimeContext = {}) {
113
+ const registry = await this.getProviderRegistry();
114
+ const config = await this.readAgentConfig(paths, agentId);
115
+ const binding = await this.getAgentProvider(paths, agentId, config);
116
+ const provider = registry.create(binding.providerId);
117
+ const workspaceDir = this.pathPort.join(paths.workspacesDir, agentId);
118
+ const workspaceAccess = resolveWorkspaceAccess(agentId, config.runtime?.workspaceAccess, provider.kind);
119
+ const contextSystemPrompt = workspaceAccess === "internal"
120
+ ? await this.buildInternalWorkspacePrompt(paths, agentId, config, workspaceDir, options.skillsPromptOverride)
121
+ : "";
122
+ const sessionContext = options.sessionContext?.trim();
123
+ const sessionContextPrompt = sessionContext ? ["## Session Context", sessionContext].join("\n") : "";
124
+ const mergedSystemPrompt = [
125
+ options.systemPrompt?.trim() || "",
126
+ contextSystemPrompt,
127
+ sessionContextPrompt
128
+ ]
129
+ .filter(Boolean)
130
+ .join("\n\n");
131
+ const resolvedCwd = resolveInvokeCwd(workspaceAccess, options.cwd, workspaceDir);
132
+ const invokeOptions = {
133
+ ...options,
134
+ systemPrompt: mergedSystemPrompt || undefined,
135
+ cwd: resolvedCwd,
136
+ env: await this.resolveProviderEnv(paths, provider.id, options.env),
137
+ agent: provider.capabilities.agent ? options.agent || agentId : options.agent
138
+ };
139
+ this.logger.info("Invoking provider for agent.", {
140
+ agentId,
141
+ providerId: provider.id,
142
+ cwd: invokeOptions.cwd,
143
+ workspaceAccess
144
+ });
145
+ runtimeContext.hooks?.onInvocationStarted?.({
146
+ runId: runtimeContext.runId,
147
+ timestamp: this.nowIso(),
148
+ step: runtimeContext.step,
149
+ agentId,
150
+ providerId: provider.id
151
+ });
152
+ this.logger.debug("Provider invoke request payload.", {
153
+ agentId,
154
+ providerId: provider.id,
155
+ message: invokeOptions.message,
156
+ systemPrompt: invokeOptions.systemPrompt,
157
+ sessionRef: options.sessionRef,
158
+ forceNewSession: options.forceNewSession,
159
+ disableSession: options.disableSession,
160
+ providerSessionId: options.providerSessionId,
161
+ forceNewProviderSession: options.forceNewProviderSession,
162
+ passthroughArgs: invokeOptions.passthroughArgs,
163
+ model: invokeOptions.model
164
+ });
165
+ const result = await provider.invoke(invokeOptions);
166
+ this.logger.info("Provider invocation completed.", {
167
+ agentId,
168
+ providerId: provider.id,
169
+ code: result.code
170
+ });
171
+ runtimeContext.hooks?.onInvocationCompleted?.({
172
+ runId: runtimeContext.runId,
173
+ timestamp: this.nowIso(),
174
+ step: runtimeContext.step,
175
+ agentId,
176
+ providerId: provider.id,
177
+ code: result.code
178
+ });
179
+ this.logger.debug("Provider invoke response payload.", {
180
+ agentId,
181
+ providerId: provider.id,
182
+ code: result.code,
183
+ stdout: result.stdout,
184
+ stderr: result.stderr,
185
+ providerSessionId: result.providerSessionId
186
+ });
187
+ return {
188
+ ...result,
189
+ ...binding
190
+ };
191
+ }
192
+ async createProviderAgent(paths, agentId, options) {
193
+ const registry = await this.getProviderRegistry();
194
+ const binding = options.providerId
195
+ ? {
196
+ agentId,
197
+ providerId: registry.create(options.providerId).id
198
+ }
199
+ : await this.getAgentProvider(paths, agentId);
200
+ const provider = registry.create(binding.providerId);
201
+ this.logger.info("Creating provider-side agent.", {
202
+ agentId,
203
+ providerId: provider.id
204
+ });
205
+ if (!provider.capabilities.agentCreate || !provider.createAgent) {
206
+ throw new UnsupportedProviderActionError(provider.id, "create_agent");
207
+ }
208
+ const result = await provider.createAgent({
209
+ agentId,
210
+ displayName: options.displayName,
211
+ workspaceDir: options.workspaceDir,
212
+ internalConfigDir: options.internalConfigDir,
213
+ cwd: options.cwd,
214
+ env: await this.resolveProviderEnv(paths, provider.id, options.env),
215
+ onStdout: options.onStdout,
216
+ onStderr: options.onStderr
217
+ });
218
+ this.logger.info("Provider-side agent creation completed.", {
219
+ agentId,
220
+ providerId: provider.id,
221
+ code: result.code
222
+ });
223
+ return {
224
+ ...result,
225
+ ...binding
226
+ };
227
+ }
228
+ async deleteProviderAgent(paths, agentId, options) {
229
+ const registry = await this.getProviderRegistry();
230
+ const binding = options.providerId
231
+ ? {
232
+ agentId,
233
+ providerId: registry.create(options.providerId).id
234
+ }
235
+ : await this.getAgentProvider(paths, agentId);
236
+ const provider = registry.create(binding.providerId);
237
+ this.logger.info("Deleting provider-side agent.", {
238
+ agentId,
239
+ providerId: provider.id
240
+ });
241
+ if (!provider.capabilities.agentDelete || !provider.deleteAgent) {
242
+ throw new UnsupportedProviderActionError(provider.id, "delete_agent");
243
+ }
244
+ const result = await provider.deleteAgent({
245
+ agentId,
246
+ cwd: options.cwd,
247
+ env: await this.resolveProviderEnv(paths, provider.id, options.env),
248
+ onStdout: options.onStdout,
249
+ onStderr: options.onStderr
250
+ });
251
+ this.logger.info("Provider-side agent deletion completed.", {
252
+ agentId,
253
+ providerId: provider.id,
254
+ code: result.code
255
+ });
256
+ return {
257
+ ...result,
258
+ ...binding
259
+ };
260
+ }
261
+ async getAgentRuntimeProfile(paths, agentId) {
262
+ const registry = await this.getProviderRegistry();
263
+ const config = await this.readAgentConfig(paths, agentId);
264
+ const binding = await this.getAgentProvider(paths, agentId, config);
265
+ const provider = registry.create(binding.providerId);
266
+ return {
267
+ agentId,
268
+ providerId: provider.id,
269
+ providerKind: provider.kind,
270
+ workspaceAccess: resolveWorkspaceAccess(agentId, config.runtime?.workspaceAccess, provider.kind)
271
+ };
272
+ }
273
+ async buildInternalWorkspacePrompt(paths, agentId, config, workspaceDir, skillsPromptOverride) {
274
+ const bootstrapFiles = await this.workspaceContextService.loadWorkspaceBootstrapFiles(workspaceDir, this.workspaceContextService.resolveBootstrapFileNames(config.prompt?.bootstrapFiles));
275
+ const contextFiles = this.workspaceContextService.buildContextFiles(bootstrapFiles, {
276
+ maxChars: resolveBootstrapMaxChars(config.runtime?.bootstrapMaxChars)
277
+ });
278
+ const systemPrompt = this.workspaceContextService.buildSystemPrompt({
279
+ agentId,
280
+ displayName: config.displayName?.trim() || agentId,
281
+ workspaceDir,
282
+ nowIso: this.nowIso(),
283
+ contextFiles
284
+ });
285
+ const skillsPrompt = typeof skillsPromptOverride === "string" && skillsPromptOverride.trim().length > 0
286
+ ? skillsPromptOverride.trim()
287
+ : (await this.skillService.buildSkillsPrompt(paths, agentId, config.runtime?.skills)).prompt.trim();
288
+ return [systemPrompt, skillsPrompt].filter(Boolean).join("\n\n");
289
+ }
290
+ async readAgentConfig(paths, agentId) {
291
+ const configPath = this.getAgentConfigPath(paths, agentId);
292
+ const exists = await this.fileSystem.exists(configPath);
293
+ if (!exists) {
294
+ throw new AgentConfigNotFoundError(agentId);
295
+ }
296
+ const raw = await this.fileSystem.readFile(configPath);
297
+ let parsed;
298
+ try {
299
+ parsed = JSON.parse(raw);
300
+ }
301
+ catch {
302
+ throw new InvalidAgentConfigError(agentId, configPath);
303
+ }
304
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
305
+ throw new InvalidAgentConfigError(agentId, configPath, "expected JSON object");
306
+ }
307
+ return parsed;
308
+ }
309
+ getAgentConfigPath(paths, agentId) {
310
+ return this.pathPort.join(paths.agentsDir, agentId, "config.json");
311
+ }
312
+ getProviderConfigPath(paths, providerId) {
313
+ return this.pathPort.join(paths.providersDir, providerId, "config.json");
314
+ }
315
+ async resolveProviderEnv(paths, providerId, inputEnv) {
316
+ const config = await this.getProviderConfig(paths, providerId);
317
+ return {
318
+ ...(config?.env ?? {}),
319
+ ...(inputEnv ?? process.env)
320
+ };
321
+ }
322
+ getProviderRegistry() {
323
+ if (!this.providerRegistryPromise) {
324
+ this.providerRegistryPromise = this.resolveProviderRegistry(this.providerRegistryInput);
325
+ }
326
+ return this.providerRegistryPromise;
327
+ }
328
+ resolveProviderRegistry(input) {
329
+ if (typeof input === "function") {
330
+ return Promise.resolve(input());
331
+ }
332
+ return Promise.resolve(input);
333
+ }
334
+ }
335
+ function resolveWorkspaceAccess(agentId, configuredAccess, providerKind) {
336
+ if (configuredAccess === "internal" || configuredAccess === "external") {
337
+ return configuredAccess;
338
+ }
339
+ if (isDefaultAgentId(agentId)) {
340
+ return "internal";
341
+ }
342
+ return providerKind === "http" ? "internal" : "external";
343
+ }
344
+ function resolveInvokeCwd(workspaceAccess, requestedCwd, workspaceDir) {
345
+ if (workspaceAccess === "internal") {
346
+ return requestedCwd || workspaceDir;
347
+ }
348
+ return requestedCwd || process.cwd();
349
+ }
350
+ function getConfiguredProviderId(config) {
351
+ const providerId = config.provider?.id?.trim().toLowerCase();
352
+ return providerId || DEFAULT_PROVIDER_ID;
353
+ }
354
+ function resolveBootstrapMaxChars(raw) {
355
+ if (typeof raw === "number" && Number.isFinite(raw) && raw > 0) {
356
+ return Math.floor(raw);
357
+ }
358
+ return DEFAULT_BOOTSTRAP_MAX_CHARS;
359
+ }
360
+ function isProviderStoredConfig(value) {
361
+ if (typeof value !== "object" || value === null) {
362
+ return false;
363
+ }
364
+ const record = value;
365
+ if (record.schemaVersion !== 1) {
366
+ return false;
367
+ }
368
+ if (typeof record.providerId !== "string" || !record.providerId.trim()) {
369
+ return false;
370
+ }
371
+ if (typeof record.updatedAt !== "string" || !record.updatedAt.trim()) {
372
+ return false;
373
+ }
374
+ if (typeof record.env !== "object" || record.env === null) {
375
+ return false;
376
+ }
377
+ return true;
378
+ }
379
+ function sanitizeEnvMap(input) {
380
+ const sanitized = {};
381
+ for (const [key, value] of Object.entries(input)) {
382
+ const normalizedKey = key.trim();
383
+ const normalizedValue = String(value).trim();
384
+ if (!normalizedKey || !normalizedValue) {
385
+ continue;
386
+ }
387
+ sanitized[normalizedKey] = normalizedValue;
388
+ }
389
+ return sanitized;
390
+ }
391
+ //# sourceMappingURL=provider.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.service.js","sourceRoot":"","sources":["../../../../src/core/providers/application/provider.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { Provider, ProviderAuthOptions, ProviderCreateAgentOptions, ProviderDeleteAgentOptions, ProviderCapabilities, ProviderExecutionResult, ProviderInvokeOptions, ProviderKind } from "./types.js";
2
+ export interface BaseProviderConfig {
3
+ id: string;
4
+ displayName: string;
5
+ kind: ProviderKind;
6
+ capabilities: ProviderCapabilities;
7
+ }
8
+ export declare abstract class BaseProvider implements Provider {
9
+ readonly id: string;
10
+ readonly displayName: string;
11
+ readonly kind: ProviderKind;
12
+ readonly capabilities: ProviderCapabilities;
13
+ protected constructor(config: BaseProviderConfig);
14
+ protected validateInvokeOptions(options: ProviderInvokeOptions): void;
15
+ protected requireEnvValue(env: NodeJS.ProcessEnv, name: string): string;
16
+ abstract invoke(options: ProviderInvokeOptions): Promise<ProviderExecutionResult>;
17
+ invokeAuth(_options?: ProviderAuthOptions): Promise<ProviderExecutionResult>;
18
+ createAgent(_options: ProviderCreateAgentOptions): Promise<ProviderExecutionResult>;
19
+ deleteAgent(_options: ProviderDeleteAgentOptions): Promise<ProviderExecutionResult>;
20
+ }
@@ -0,0 +1,44 @@
1
+ import { ProviderAuthenticationError, ProviderRuntimeError, UnsupportedProviderActionError, UnsupportedProviderOptionError } from "./errors.js";
2
+ export class BaseProvider {
3
+ id;
4
+ displayName;
5
+ kind;
6
+ capabilities;
7
+ constructor(config) {
8
+ this.id = config.id;
9
+ this.displayName = config.displayName;
10
+ this.kind = config.kind;
11
+ this.capabilities = config.capabilities;
12
+ }
13
+ validateInvokeOptions(options) {
14
+ if (!options.message.trim()) {
15
+ throw new ProviderRuntimeError(this.id, "message cannot be empty");
16
+ }
17
+ if (options.agent && !this.capabilities.agent) {
18
+ throw new UnsupportedProviderOptionError(this.id, "--agent");
19
+ }
20
+ if (options.model && !this.capabilities.model) {
21
+ throw new UnsupportedProviderOptionError(this.id, "--model");
22
+ }
23
+ if (options.passthroughArgs && options.passthroughArgs.length > 0 && !this.capabilities.passthrough) {
24
+ throw new UnsupportedProviderOptionError(this.id, "passthrough args");
25
+ }
26
+ }
27
+ requireEnvValue(env, name) {
28
+ const value = env[name]?.trim();
29
+ if (!value) {
30
+ throw new ProviderAuthenticationError(this.id, `missing required environment variable ${name}`);
31
+ }
32
+ return value;
33
+ }
34
+ invokeAuth(_options = {}) {
35
+ throw new UnsupportedProviderActionError(this.id, "auth");
36
+ }
37
+ createAgent(_options) {
38
+ throw new UnsupportedProviderActionError(this.id, "create_agent");
39
+ }
40
+ deleteAgent(_options) {
41
+ throw new UnsupportedProviderActionError(this.id, "delete_agent");
42
+ }
43
+ }
44
+ //# sourceMappingURL=base-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-provider.js","sourceRoot":"","sources":["../../../src/core/providers/base-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,8BAA8B,EAC9B,8BAA8B,EAC/B,MAAM,aAAa,CAAC;AAmBrB,MAAM,OAAgB,YAAY;IAChB,EAAE,CAAS;IACX,WAAW,CAAS;IACpB,IAAI,CAAe;IACnB,YAAY,CAAuB;IAEnD,YAAsB,MAA0B;QAC9C,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IAC1C,CAAC;IAES,qBAAqB,CAAC,OAA8B;QAC5D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5B,MAAM,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,EAAE,yBAAyB,CAAC,CAAC;QACrE,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YAC9C,MAAM,IAAI,8BAA8B,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YAC9C,MAAM,IAAI,8BAA8B,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAC/D,CAAC;QAED,IAAI,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;YACpG,MAAM,IAAI,8BAA8B,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IAES,eAAe,CAAC,GAAsB,EAAE,IAAY;QAC5D,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,2BAA2B,CAAC,IAAI,CAAC,EAAE,EAAE,yCAAyC,IAAI,EAAE,CAAC,CAAC;QAClG,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAIM,UAAU,CAAC,WAAgC,EAAE;QAClD,MAAM,IAAI,8BAA8B,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5D,CAAC;IAEM,WAAW,CAAC,QAAoC;QACrD,MAAM,IAAI,8BAA8B,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;IACpE,CAAC;IAEM,WAAW,CAAC,QAAoC;QACrD,MAAM,IAAI,8BAA8B,CAAC,IAAI,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;IACpE,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ import { BaseProvider, type BaseProviderConfig } from "./base-provider.js";
2
+ import type { ProviderAuthOptions, ProviderCreateAgentOptions, ProviderDeleteAgentOptions, ProviderExecutionResult, ProviderInvocation, ProviderInvokeOptions } from "./types.js";
3
+ export interface BaseCliProviderConfig extends BaseProviderConfig {
4
+ command: string;
5
+ commandEnvVar: string;
6
+ }
7
+ export declare abstract class BaseCliProvider extends BaseProvider {
8
+ private readonly command;
9
+ private readonly commandEnvVar;
10
+ protected constructor(config: BaseCliProviderConfig);
11
+ protected resolveCommand(env: NodeJS.ProcessEnv): string;
12
+ protected abstract buildInvocationArgs(options: ProviderInvokeOptions, command: string): string[];
13
+ protected buildAuthInvocationArgs(options: ProviderAuthOptions, _command: string): string[];
14
+ protected buildCreateAgentInvocationArgs(_options: ProviderCreateAgentOptions, _command: string): string[];
15
+ protected buildDeleteAgentInvocationArgs(_options: ProviderDeleteAgentOptions, _command: string): string[];
16
+ protected prepareExecutionEnv(env: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
17
+ buildInvocation(options: ProviderInvokeOptions, env?: NodeJS.ProcessEnv): ProviderInvocation;
18
+ buildAuthInvocation(options?: ProviderAuthOptions, env?: NodeJS.ProcessEnv): ProviderInvocation;
19
+ buildCreateAgentInvocation(options: ProviderCreateAgentOptions, env?: NodeJS.ProcessEnv): ProviderInvocation;
20
+ buildDeleteAgentInvocation(options: ProviderDeleteAgentOptions, env?: NodeJS.ProcessEnv): ProviderInvocation;
21
+ invoke(options: ProviderInvokeOptions): Promise<ProviderExecutionResult>;
22
+ invokeAuth(options?: ProviderAuthOptions): Promise<ProviderExecutionResult>;
23
+ createAgent(options: ProviderCreateAgentOptions): Promise<ProviderExecutionResult>;
24
+ deleteAgent(options: ProviderDeleteAgentOptions): Promise<ProviderExecutionResult>;
25
+ private mergeSystemPrompt;
26
+ }
@@ -0,0 +1,151 @@
1
+ import { executeCommand } from "./command-executor.js";
2
+ import { ProviderCommandNotFoundError, UnsupportedProviderActionError } from "./errors.js";
3
+ import { BaseProvider } from "./base-provider.js";
4
+ export class BaseCliProvider extends BaseProvider {
5
+ command;
6
+ commandEnvVar;
7
+ constructor(config) {
8
+ super(config);
9
+ this.command = config.command;
10
+ this.commandEnvVar = config.commandEnvVar;
11
+ }
12
+ resolveCommand(env) {
13
+ const override = env[this.commandEnvVar]?.trim();
14
+ return override || this.command;
15
+ }
16
+ buildAuthInvocationArgs(options, _command) {
17
+ if (!this.capabilities.auth) {
18
+ throw new UnsupportedProviderActionError(this.id, "auth");
19
+ }
20
+ return options.passthroughArgs ?? [];
21
+ }
22
+ buildCreateAgentInvocationArgs(_options, _command) {
23
+ throw new UnsupportedProviderActionError(this.id, "create_agent");
24
+ }
25
+ buildDeleteAgentInvocationArgs(_options, _command) {
26
+ throw new UnsupportedProviderActionError(this.id, "delete_agent");
27
+ }
28
+ prepareExecutionEnv(env) {
29
+ return env;
30
+ }
31
+ buildInvocation(options, env = process.env) {
32
+ this.validateInvokeOptions(options);
33
+ const command = this.resolveCommand(env);
34
+ const args = this.buildInvocationArgs(this.mergeSystemPrompt(options), command);
35
+ return { command, args };
36
+ }
37
+ buildAuthInvocation(options = {}, env = process.env) {
38
+ const command = this.resolveCommand(env);
39
+ const args = this.buildAuthInvocationArgs(options, command);
40
+ return { command, args };
41
+ }
42
+ buildCreateAgentInvocation(options, env = process.env) {
43
+ const command = this.resolveCommand(env);
44
+ const args = this.buildCreateAgentInvocationArgs(options, command);
45
+ return { command, args };
46
+ }
47
+ buildDeleteAgentInvocation(options, env = process.env) {
48
+ const command = this.resolveCommand(env);
49
+ const args = this.buildDeleteAgentInvocationArgs(options, command);
50
+ return { command, args };
51
+ }
52
+ async invoke(options) {
53
+ const env = this.prepareExecutionEnv(options.env ?? process.env);
54
+ const invocation = this.buildInvocation(options, env);
55
+ try {
56
+ return await executeCommand({
57
+ command: invocation.command,
58
+ args: invocation.args,
59
+ cwd: options.cwd,
60
+ env,
61
+ abortSignal: options.abortSignal,
62
+ onStdout: options.onStdout,
63
+ onStderr: options.onStderr
64
+ });
65
+ }
66
+ catch (error) {
67
+ if (isSpawnPermissionOrMissing(error)) {
68
+ throw new ProviderCommandNotFoundError(this.id, invocation.command);
69
+ }
70
+ throw error;
71
+ }
72
+ }
73
+ async invokeAuth(options = {}) {
74
+ const env = this.prepareExecutionEnv(options.env ?? process.env);
75
+ const invocation = this.buildAuthInvocation(options, env);
76
+ try {
77
+ return await executeCommand({
78
+ command: invocation.command,
79
+ args: invocation.args,
80
+ cwd: options.cwd,
81
+ env,
82
+ onStdout: options.onStdout,
83
+ onStderr: options.onStderr
84
+ });
85
+ }
86
+ catch (error) {
87
+ if (isSpawnPermissionOrMissing(error)) {
88
+ throw new ProviderCommandNotFoundError(this.id, invocation.command);
89
+ }
90
+ throw error;
91
+ }
92
+ }
93
+ async createAgent(options) {
94
+ const env = this.prepareExecutionEnv(options.env ?? process.env);
95
+ const invocation = this.buildCreateAgentInvocation(options, env);
96
+ try {
97
+ return await executeCommand({
98
+ command: invocation.command,
99
+ args: invocation.args,
100
+ cwd: options.cwd,
101
+ env,
102
+ onStdout: options.onStdout,
103
+ onStderr: options.onStderr
104
+ });
105
+ }
106
+ catch (error) {
107
+ if (isSpawnPermissionOrMissing(error)) {
108
+ throw new ProviderCommandNotFoundError(this.id, invocation.command);
109
+ }
110
+ throw error;
111
+ }
112
+ }
113
+ async deleteAgent(options) {
114
+ const env = this.prepareExecutionEnv(options.env ?? process.env);
115
+ const invocation = this.buildDeleteAgentInvocation(options, env);
116
+ try {
117
+ return await executeCommand({
118
+ command: invocation.command,
119
+ args: invocation.args,
120
+ cwd: options.cwd,
121
+ env,
122
+ onStdout: options.onStdout,
123
+ onStderr: options.onStderr
124
+ });
125
+ }
126
+ catch (error) {
127
+ if (isSpawnPermissionOrMissing(error)) {
128
+ throw new ProviderCommandNotFoundError(this.id, invocation.command);
129
+ }
130
+ throw error;
131
+ }
132
+ }
133
+ mergeSystemPrompt(options) {
134
+ const systemPrompt = options.systemPrompt?.trim();
135
+ if (!systemPrompt) {
136
+ return options;
137
+ }
138
+ return {
139
+ ...options,
140
+ message: `${systemPrompt}\n\n# User Message\n${options.message}`
141
+ };
142
+ }
143
+ }
144
+ function isSpawnPermissionOrMissing(error) {
145
+ return (typeof error === "object" &&
146
+ error !== null &&
147
+ "code" in error &&
148
+ ((error.code ?? "") === "ENOENT" ||
149
+ (error.code ?? "") === "EACCES"));
150
+ }
151
+ //# sourceMappingURL=cli-provider.js.map