@openacp/cli 2026.331.1 → 2026.331.3

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 (182) hide show
  1. package/README.md +2 -1
  2. package/dist/cli.js +24987 -270
  3. package/dist/cli.js.map +1 -1
  4. package/dist/data/registry-snapshot.json +1 -1
  5. package/dist/index.d.ts +10 -0
  6. package/dist/index.js +17669 -406
  7. package/dist/index.js.map +1 -1
  8. package/package.json +2 -2
  9. package/dist/adapter-ELG3VRZ3.js +0 -14
  10. package/dist/adapter-ELG3VRZ3.js.map +0 -1
  11. package/dist/agent-catalog-UYD26QDK.js +0 -10
  12. package/dist/agent-catalog-UYD26QDK.js.map +0 -1
  13. package/dist/agent-dependencies-ED2ZTUHG.js +0 -23
  14. package/dist/agent-dependencies-ED2ZTUHG.js.map +0 -1
  15. package/dist/agent-registry-YOGP656W.js +0 -8
  16. package/dist/agent-registry-YOGP656W.js.map +0 -1
  17. package/dist/agent-store-5UHZH2XI.js +0 -8
  18. package/dist/agent-store-5UHZH2XI.js.map +0 -1
  19. package/dist/api-client-PEMHYL5U.js +0 -13
  20. package/dist/api-client-PEMHYL5U.js.map +0 -1
  21. package/dist/api-server-DATG2KBR.js +0 -10
  22. package/dist/api-server-DATG2KBR.js.map +0 -1
  23. package/dist/api-server-L5Z7XACW.js +0 -7
  24. package/dist/api-server-L5Z7XACW.js.map +0 -1
  25. package/dist/autostart-CUPZMKKC.js +0 -22
  26. package/dist/autostart-CUPZMKKC.js.map +0 -1
  27. package/dist/chunk-23SRIVG4.js +0 -50
  28. package/dist/chunk-23SRIVG4.js.map +0 -1
  29. package/dist/chunk-2KT6TROD.js +0 -129
  30. package/dist/chunk-2KT6TROD.js.map +0 -1
  31. package/dist/chunk-2R5XM3ES.js +0 -154
  32. package/dist/chunk-2R5XM3ES.js.map +0 -1
  33. package/dist/chunk-3EWTPOF7.js +0 -51
  34. package/dist/chunk-3EWTPOF7.js.map +0 -1
  35. package/dist/chunk-566W6INH.js +0 -83
  36. package/dist/chunk-566W6INH.js.map +0 -1
  37. package/dist/chunk-5WGVYX3C.js +0 -55
  38. package/dist/chunk-5WGVYX3C.js.map +0 -1
  39. package/dist/chunk-7GXEMMEV.js +0 -44
  40. package/dist/chunk-7GXEMMEV.js.map +0 -1
  41. package/dist/chunk-7U6IZIJP.js +0 -186
  42. package/dist/chunk-7U6IZIJP.js.map +0 -1
  43. package/dist/chunk-7YIKTRSM.js +0 -105
  44. package/dist/chunk-7YIKTRSM.js.map +0 -1
  45. package/dist/chunk-7ZCQF6QM.js +0 -27
  46. package/dist/chunk-7ZCQF6QM.js.map +0 -1
  47. package/dist/chunk-AFKX424Q.js +0 -92
  48. package/dist/chunk-AFKX424Q.js.map +0 -1
  49. package/dist/chunk-BYCJQPMN.js +0 -543
  50. package/dist/chunk-BYCJQPMN.js.map +0 -1
  51. package/dist/chunk-CDAUYTVP.js +0 -41
  52. package/dist/chunk-CDAUYTVP.js.map +0 -1
  53. package/dist/chunk-EWVXSTQK.js +0 -6544
  54. package/dist/chunk-EWVXSTQK.js.map +0 -1
  55. package/dist/chunk-FNRSWA2K.js +0 -1
  56. package/dist/chunk-FNRSWA2K.js.map +0 -1
  57. package/dist/chunk-FPKQYCQS.js +0 -776
  58. package/dist/chunk-FPKQYCQS.js.map +0 -1
  59. package/dist/chunk-IZ5UEZF7.js +0 -138
  60. package/dist/chunk-IZ5UEZF7.js.map +0 -1
  61. package/dist/chunk-K6UY5M75.js +0 -653
  62. package/dist/chunk-K6UY5M75.js.map +0 -1
  63. package/dist/chunk-KGAQW6F4.js +0 -106
  64. package/dist/chunk-KGAQW6F4.js.map +0 -1
  65. package/dist/chunk-LGFWH3AE.js +0 -26
  66. package/dist/chunk-LGFWH3AE.js.map +0 -1
  67. package/dist/chunk-LRV56K2M.js +0 -4106
  68. package/dist/chunk-LRV56K2M.js.map +0 -1
  69. package/dist/chunk-MDJHCCFS.js +0 -485
  70. package/dist/chunk-MDJHCCFS.js.map +0 -1
  71. package/dist/chunk-MLF4W5R6.js +0 -101
  72. package/dist/chunk-MLF4W5R6.js.map +0 -1
  73. package/dist/chunk-NHD5XDD2.js +0 -686
  74. package/dist/chunk-NHD5XDD2.js.map +0 -1
  75. package/dist/chunk-NJX75BLK.js +0 -259
  76. package/dist/chunk-NJX75BLK.js.map +0 -1
  77. package/dist/chunk-NOEAJNTK.js +0 -156
  78. package/dist/chunk-NOEAJNTK.js.map +0 -1
  79. package/dist/chunk-ON7HB5O7.js +0 -58
  80. package/dist/chunk-ON7HB5O7.js.map +0 -1
  81. package/dist/chunk-OSBZXY2W.js +0 -126
  82. package/dist/chunk-OSBZXY2W.js.map +0 -1
  83. package/dist/chunk-OYSAN7UX.js +0 -15
  84. package/dist/chunk-OYSAN7UX.js.map +0 -1
  85. package/dist/chunk-P3HHJANC.js +0 -209
  86. package/dist/chunk-P3HHJANC.js.map +0 -1
  87. package/dist/chunk-R2YLDQLI.js +0 -1115
  88. package/dist/chunk-R2YLDQLI.js.map +0 -1
  89. package/dist/chunk-R6KZYF7D.js +0 -231
  90. package/dist/chunk-R6KZYF7D.js.map +0 -1
  91. package/dist/chunk-S64CB6J3.js +0 -98
  92. package/dist/chunk-S64CB6J3.js.map +0 -1
  93. package/dist/chunk-SSLVNCEA.js +0 -236
  94. package/dist/chunk-SSLVNCEA.js.map +0 -1
  95. package/dist/chunk-TGP34LQN.js +0 -681
  96. package/dist/chunk-TGP34LQN.js.map +0 -1
  97. package/dist/chunk-VUSCVRJL.js +0 -229
  98. package/dist/chunk-VUSCVRJL.js.map +0 -1
  99. package/dist/chunk-W26AUH5B.js +0 -61
  100. package/dist/chunk-W26AUH5B.js.map +0 -1
  101. package/dist/chunk-WQCJTU2C.js +0 -84
  102. package/dist/chunk-WQCJTU2C.js.map +0 -1
  103. package/dist/chunk-XRJUS6FE.js +0 -53
  104. package/dist/chunk-XRJUS6FE.js.map +0 -1
  105. package/dist/chunk-YZCKSNRN.js +0 -453
  106. package/dist/chunk-YZCKSNRN.js.map +0 -1
  107. package/dist/chunk-ZIRH6QWW.js +0 -69
  108. package/dist/chunk-ZIRH6QWW.js.map +0 -1
  109. package/dist/chunk-ZSLHHQPQ.js +0 -282
  110. package/dist/chunk-ZSLHHQPQ.js.map +0 -1
  111. package/dist/config-X4UP7H6R.js +0 -13
  112. package/dist/config-X4UP7H6R.js.map +0 -1
  113. package/dist/config-editor-7BENRVG5.js +0 -11
  114. package/dist/config-editor-7BENRVG5.js.map +0 -1
  115. package/dist/config-registry-M3FFWEVM.js +0 -18
  116. package/dist/config-registry-M3FFWEVM.js.map +0 -1
  117. package/dist/context-FVGCU5TI.js +0 -9
  118. package/dist/context-FVGCU5TI.js.map +0 -1
  119. package/dist/core-plugins-JSY2I44L.js +0 -25
  120. package/dist/core-plugins-JSY2I44L.js.map +0 -1
  121. package/dist/daemon-UOSRDEXW.js +0 -34
  122. package/dist/daemon-UOSRDEXW.js.map +0 -1
  123. package/dist/dev-loader-7P3HZCIA.js +0 -37
  124. package/dist/dev-loader-7P3HZCIA.js.map +0 -1
  125. package/dist/doctor-6DLACBR4.js +0 -10
  126. package/dist/doctor-6DLACBR4.js.map +0 -1
  127. package/dist/file-service-FQQYME7M.js +0 -8
  128. package/dist/file-service-FQQYME7M.js.map +0 -1
  129. package/dist/install-cloudflared-LNS5L5FR.js +0 -33
  130. package/dist/install-cloudflared-LNS5L5FR.js.map +0 -1
  131. package/dist/install-context-KZO5FR4D.js +0 -78
  132. package/dist/install-context-KZO5FR4D.js.map +0 -1
  133. package/dist/install-jq-SN4IA5K4.js +0 -31
  134. package/dist/install-jq-SN4IA5K4.js.map +0 -1
  135. package/dist/instance-context-FLCE7VZ4.js +0 -13
  136. package/dist/instance-context-FLCE7VZ4.js.map +0 -1
  137. package/dist/instance-registry-SW5FWKHO.js +0 -7
  138. package/dist/instance-registry-SW5FWKHO.js.map +0 -1
  139. package/dist/integrate-JIEZYDOR.js +0 -371
  140. package/dist/integrate-JIEZYDOR.js.map +0 -1
  141. package/dist/log-YZ243M5G.js +0 -25
  142. package/dist/log-YZ243M5G.js.map +0 -1
  143. package/dist/main-D7M2AKRM.js +0 -697
  144. package/dist/main-D7M2AKRM.js.map +0 -1
  145. package/dist/menu-ALFN37IR.js +0 -15
  146. package/dist/menu-ALFN37IR.js.map +0 -1
  147. package/dist/notifications-MO23S7S3.js +0 -8
  148. package/dist/notifications-MO23S7S3.js.map +0 -1
  149. package/dist/plugin-create-HFKS23JY.js +0 -968
  150. package/dist/plugin-create-HFKS23JY.js.map +0 -1
  151. package/dist/plugin-installer-VSTYZSXC.js +0 -9
  152. package/dist/plugin-installer-VSTYZSXC.js.map +0 -1
  153. package/dist/plugin-registry-6J3YSFHF.js +0 -7
  154. package/dist/plugin-registry-6J3YSFHF.js.map +0 -1
  155. package/dist/plugin-search-MGKAL5JM.js +0 -39
  156. package/dist/plugin-search-MGKAL5JM.js.map +0 -1
  157. package/dist/post-upgrade-F4YPMTUT.js +0 -79
  158. package/dist/post-upgrade-F4YPMTUT.js.map +0 -1
  159. package/dist/read-text-file-DJBTITIB.js +0 -7
  160. package/dist/read-text-file-DJBTITIB.js.map +0 -1
  161. package/dist/registry-client-GTBWLXYU.js +0 -7
  162. package/dist/registry-client-GTBWLXYU.js.map +0 -1
  163. package/dist/security-O4XGN2CM.js +0 -8
  164. package/dist/security-O4XGN2CM.js.map +0 -1
  165. package/dist/settings-manager-B4UN2LAC.js +0 -7
  166. package/dist/settings-manager-B4UN2LAC.js.map +0 -1
  167. package/dist/setup-44WLBIOT.js +0 -989
  168. package/dist/setup-44WLBIOT.js.map +0 -1
  169. package/dist/speech-GHTSWDAN.js +0 -9
  170. package/dist/speech-GHTSWDAN.js.map +0 -1
  171. package/dist/suggest-RST5VOHB.js +0 -36
  172. package/dist/suggest-RST5VOHB.js.map +0 -1
  173. package/dist/telegram-D7ASLVEB.js +0 -7
  174. package/dist/telegram-D7ASLVEB.js.map +0 -1
  175. package/dist/tunnel-ALJDPFDQ.js +0 -10
  176. package/dist/tunnel-ALJDPFDQ.js.map +0 -1
  177. package/dist/tunnel-service-TBAHDXMF.js +0 -755
  178. package/dist/tunnel-service-TBAHDXMF.js.map +0 -1
  179. package/dist/validators-GITLOFXC.js +0 -11
  180. package/dist/validators-GITLOFXC.js.map +0 -1
  181. package/dist/version-AXXV6IV2.js +0 -15
  182. package/dist/version-AXXV6IV2.js.map +0 -1
@@ -1,282 +0,0 @@
1
- // src/core/agents/agent-dependencies.ts
2
- import { execFileSync } from "child_process";
3
- import * as fs from "fs";
4
- import * as path from "path";
5
- var AGENT_DEPENDENCIES = {
6
- "claude-acp": [
7
- {
8
- command: "claude",
9
- label: "Claude CLI",
10
- installHint: "npm install -g @anthropic-ai/claude-code"
11
- }
12
- ],
13
- "codex-acp": [
14
- {
15
- command: "codex",
16
- label: "Codex CLI",
17
- installHint: "npm install -g @openai/codex"
18
- }
19
- ]
20
- };
21
- var AGENT_SETUP = {
22
- // --- Agents requiring their own CLI installed first ---
23
- "claude-acp": {
24
- setupSteps: [
25
- "Install Claude CLI: npm install -g @anthropic-ai/claude-code",
26
- "Login: claude login (opens browser for Anthropic account)"
27
- ],
28
- loginCommand: "claude login"
29
- },
30
- "codex-acp": {
31
- setupSteps: [
32
- "Install Codex CLI: npm install -g @openai/codex",
33
- "Login: codex (select 'Sign in with ChatGPT')",
34
- "Or set API key: export OPENAI_API_KEY=<your-key>"
35
- ],
36
- loginCommand: "codex"
37
- },
38
- // --- Agents with built-in auth (npx handles download) ---
39
- "gemini": {
40
- setupSteps: [
41
- "Login with Google: openacp agents run gemini (select 'Sign in with Google')",
42
- "Or set API key: export GEMINI_API_KEY=<key> (get from aistudio.google.com/apikey)",
43
- "Free tier: 60 requests/min, 1000 requests/day"
44
- ],
45
- loginCommand: "openacp agents run gemini"
46
- },
47
- "github-copilot-cli": {
48
- setupSteps: [
49
- "Requires active GitHub Copilot subscription",
50
- "Login: openacp agents run copilot (use /login command inside CLI)",
51
- "Or set token: export GITHUB_TOKEN=<personal-access-token>"
52
- ],
53
- loginCommand: "openacp agents run copilot"
54
- },
55
- "cline": {
56
- setupSteps: [
57
- "Setup: openacp agents run cline (guided API key setup on first run)",
58
- "Supports: Anthropic, OpenAI, Gemini, AWS Bedrock, Azure, Ollama, and more",
59
- "Or set env: export ANTHROPIC_API_KEY=<key> (or OPENAI_API_KEY, etc.)"
60
- ],
61
- loginCommand: "openacp agents run cline"
62
- },
63
- "auggie": {
64
- setupSteps: [
65
- "Login: openacp agents run auggie (opens browser for Augment account on first run)"
66
- ],
67
- loginCommand: "openacp agents run auggie"
68
- },
69
- "qwen-code": {
70
- setupSteps: [
71
- "Login: openacp agents run qwen (use /auth command, select 'Qwen OAuth')",
72
- "Free: 1000 requests/day with Qwen OAuth",
73
- "Or set API key: export OPENAI_API_KEY=<key> in ~/.qwen/settings.json"
74
- ],
75
- loginCommand: "openacp agents run qwen"
76
- },
77
- // --- Agents requiring API keys via env vars ---
78
- "kimi": {
79
- setupSteps: [
80
- "Login: openacp agents run kimi (use /login command inside CLI)",
81
- "Recommended: select 'Kimi Code' for browser-based OAuth",
82
- "Or select another provider and enter API key manually"
83
- ],
84
- loginCommand: "openacp agents run kimi"
85
- },
86
- "cursor": {
87
- setupSteps: [
88
- "Requires active Cursor subscription",
89
- "Login: openacp agents run cursor (opens browser for Cursor account)"
90
- ],
91
- loginCommand: "openacp agents run cursor"
92
- },
93
- // --- Agents with provider selection on first run ---
94
- "goose": {
95
- setupSteps: [
96
- "First run auto-enters setup mode \u2014 choose your LLM provider",
97
- "Options: OpenAI, Anthropic, Google Gemini, OpenRouter, or local models",
98
- "Set provider API key: export OPENAI_API_KEY=<key> (or other provider)",
99
- "Reconfigure anytime: goose configure"
100
- ]
101
- },
102
- "junie": {
103
- setupSteps: [
104
- "Bring Your Own Key (BYOK) \u2014 provide API key from any supported provider",
105
- "Supports: OpenAI, Anthropic, Gemini, xAI, OpenRouter",
106
- "Free tier: up to $50 with Gemini 3 Flash included",
107
- "Set key via env or first-run setup prompt"
108
- ]
109
- },
110
- "kilo": {
111
- setupSteps: [
112
- "Options: bring your own API keys (Anthropic, OpenAI, Google) or use Kilo Gateway",
113
- "Kilo Gateway: pay-as-you-go, includes free models \u2014 no API key needed",
114
- "BYOK: set provider key, e.g. export ANTHROPIC_API_KEY=<key>"
115
- ]
116
- },
117
- "mistral-vibe": {
118
- setupSteps: [
119
- "Get API key from console.mistral.ai/codestral/cli",
120
- "Or sign up for Free/Pro/Team plan at mistral.ai",
121
- "Set key when prompted on first run"
122
- ]
123
- },
124
- "deepagents": {
125
- setupSteps: [
126
- "Powered by LangChain \u2014 set your LLM provider API key",
127
- "Example: export OPENAI_API_KEY=<key> or export ANTHROPIC_API_KEY=<key>"
128
- ]
129
- },
130
- // --- Agents that work out of the box (no setup / minimal setup) ---
131
- "crow-cli": {
132
- setupSteps: [
133
- "Requires uvx (Python package runner): pip install uv",
134
- "Bring your own API key for your chosen LLM provider"
135
- ]
136
- },
137
- "fast-agent": {
138
- setupSteps: [
139
- "Requires uvx (Python package runner): pip install uv",
140
- "Configure LLM provider in agent config file"
141
- ]
142
- }
143
- };
144
- function getAgentSetup(registryId) {
145
- return AGENT_SETUP[registryId];
146
- }
147
- var AGENT_CAPABILITIES = {
148
- claude: {
149
- supportsResume: true,
150
- resumeCommand: (sid) => `claude --resume ${sid}`,
151
- integration: {
152
- hookEvent: "UserPromptSubmit",
153
- settingsPath: "~/.claude/settings.json",
154
- settingsFormat: "settings_json",
155
- hooksDirPath: "~/.claude/hooks/",
156
- outputFormat: "plaintext",
157
- sessionIdField: ".session_id",
158
- commandsPath: "~/.claude/commands/",
159
- handoffCommandName: "openacp:handoff",
160
- commandFormat: "markdown",
161
- sessionIdVar: "CLAUDE_SESSION_ID",
162
- workingDirVar: "CLAUDE_WORKING_DIR"
163
- }
164
- },
165
- cursor: {
166
- supportsResume: true,
167
- resumeCommand: (sid) => `cursor --resume ${sid}`,
168
- integration: {
169
- hookEvent: "beforeSubmitPrompt",
170
- settingsPath: "~/.cursor/hooks.json",
171
- settingsFormat: "hooks_json",
172
- hooksDirPath: "~/.cursor/hooks/",
173
- outputFormat: "json",
174
- sessionIdField: ".conversation_id",
175
- commandsPath: "~/.cursor/skills/",
176
- handoffCommandName: "openacp-handoff",
177
- commandFormat: "skill"
178
- }
179
- },
180
- gemini: {
181
- supportsResume: true,
182
- resumeCommand: (sid) => `gemini --resume ${sid}`,
183
- integration: {
184
- hookEvent: "BeforeAgent",
185
- settingsPath: "~/.gemini/settings.json",
186
- settingsFormat: "settings_json",
187
- hooksDirPath: "~/.gemini/hooks/",
188
- outputFormat: "json",
189
- sessionIdField: ".session_id"
190
- }
191
- },
192
- cline: {
193
- supportsResume: true,
194
- resumeCommand: () => `cline --continue`,
195
- integration: {
196
- hookEvent: "TaskStart",
197
- settingsPath: "~/.cline/settings.json",
198
- settingsFormat: "settings_json",
199
- hooksDirPath: "~/.cline/hooks/",
200
- outputFormat: "json",
201
- sessionIdField: ".session_id"
202
- }
203
- },
204
- codex: {
205
- supportsResume: true,
206
- resumeCommand: (sid) => `codex resume ${sid}`
207
- },
208
- kilo: {
209
- supportsResume: true,
210
- resumeCommand: () => `kilo --continue`
211
- },
212
- amp: {
213
- supportsResume: true,
214
- resumeCommand: (sid) => `amp threads continue ${sid}`
215
- }
216
- };
217
- var REGISTRY_AGENT_ALIASES = {
218
- "claude-acp": "claude",
219
- "codex-acp": "codex",
220
- "gemini": "gemini",
221
- "cursor": "cursor",
222
- "github-copilot-cli": "copilot",
223
- "cline": "cline",
224
- "goose": "goose",
225
- "kilo": "kilo",
226
- "qwen-code": "qwen"
227
- };
228
- function getAgentAlias(registryId) {
229
- return REGISTRY_AGENT_ALIASES[registryId] ?? registryId;
230
- }
231
- function getAgentDependencies(registryId) {
232
- return AGENT_DEPENDENCIES[registryId] ?? [];
233
- }
234
- function getAgentCapabilities(agentName) {
235
- return AGENT_CAPABILITIES[agentName] ?? { supportsResume: false };
236
- }
237
- function listAgentsWithIntegration() {
238
- return Object.entries(AGENT_CAPABILITIES).filter(([, cap]) => cap.integration != null).map(([key]) => key);
239
- }
240
- function commandExists(cmd) {
241
- try {
242
- execFileSync("which", [cmd], { stdio: "pipe" });
243
- return true;
244
- } catch {
245
- }
246
- let dir = process.cwd();
247
- while (true) {
248
- const binPath = path.join(dir, "node_modules", ".bin", cmd);
249
- if (fs.existsSync(binPath)) return true;
250
- const parent = path.dirname(dir);
251
- if (parent === dir) break;
252
- dir = parent;
253
- }
254
- return false;
255
- }
256
- function checkDependencies(registryId) {
257
- const deps = getAgentDependencies(registryId);
258
- if (deps.length === 0) return { available: true };
259
- const missing = deps.filter((d) => !commandExists(d.command));
260
- if (missing.length === 0) return { available: true };
261
- return {
262
- available: false,
263
- reason: `Requires: ${missing.map((m) => m.label).join(", ")}`,
264
- missing: missing.map((m) => ({ label: m.label, installHint: m.installHint }))
265
- };
266
- }
267
- function checkRuntimeAvailable(runtime) {
268
- return commandExists(runtime);
269
- }
270
-
271
- export {
272
- getAgentSetup,
273
- REGISTRY_AGENT_ALIASES,
274
- getAgentAlias,
275
- getAgentDependencies,
276
- getAgentCapabilities,
277
- listAgentsWithIntegration,
278
- commandExists,
279
- checkDependencies,
280
- checkRuntimeAvailable
281
- };
282
- //# sourceMappingURL=chunk-ZSLHHQPQ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/core/agents/agent-dependencies.ts"],"sourcesContent":["import { execFileSync } from \"node:child_process\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { AvailabilityResult } from \"../types.js\";\n\nexport interface AgentDependency {\n command: string;\n label: string;\n installHint: string;\n}\n\nexport interface AgentSetupInfo {\n setupSteps: string[];\n loginCommand?: string;\n}\n\nexport interface AgentIntegrationSpec {\n hookEvent: string;\n settingsPath: string;\n settingsFormat: \"settings_json\" | \"hooks_json\";\n hooksDirPath: string;\n outputFormat: \"plaintext\" | \"json\";\n sessionIdField: string;\n commandsPath?: string;\n handoffCommandName?: string;\n commandFormat?: \"markdown\" | \"skill\";\n sessionIdVar?: string;\n workingDirVar?: string;\n}\n\nexport interface AgentCapability {\n supportsResume: boolean;\n resumeCommand?: (sessionId: string) => string;\n integration?: AgentIntegrationSpec;\n}\n\nconst AGENT_DEPENDENCIES: Record<string, AgentDependency[]> = {\n \"claude-acp\": [\n {\n command: \"claude\",\n label: \"Claude CLI\",\n installHint: \"npm install -g @anthropic-ai/claude-code\",\n },\n ],\n \"codex-acp\": [\n {\n command: \"codex\",\n label: \"Codex CLI\",\n installHint: \"npm install -g @openai/codex\",\n },\n ],\n};\n\nconst AGENT_SETUP: Record<string, AgentSetupInfo> = {\n // --- Agents requiring their own CLI installed first ---\n \"claude-acp\": {\n setupSteps: [\n \"Install Claude CLI: npm install -g @anthropic-ai/claude-code\",\n \"Login: claude login (opens browser for Anthropic account)\",\n ],\n loginCommand: \"claude login\",\n },\n \"codex-acp\": {\n setupSteps: [\n \"Install Codex CLI: npm install -g @openai/codex\",\n \"Login: codex (select 'Sign in with ChatGPT')\",\n \"Or set API key: export OPENAI_API_KEY=<your-key>\",\n ],\n loginCommand: \"codex\",\n },\n\n // --- Agents with built-in auth (npx handles download) ---\n \"gemini\": {\n setupSteps: [\n \"Login with Google: openacp agents run gemini (select 'Sign in with Google')\",\n \"Or set API key: export GEMINI_API_KEY=<key> (get from aistudio.google.com/apikey)\",\n \"Free tier: 60 requests/min, 1000 requests/day\",\n ],\n loginCommand: \"openacp agents run gemini\",\n },\n \"github-copilot-cli\": {\n setupSteps: [\n \"Requires active GitHub Copilot subscription\",\n \"Login: openacp agents run copilot (use /login command inside CLI)\",\n \"Or set token: export GITHUB_TOKEN=<personal-access-token>\",\n ],\n loginCommand: \"openacp agents run copilot\",\n },\n \"cline\": {\n setupSteps: [\n \"Setup: openacp agents run cline (guided API key setup on first run)\",\n \"Supports: Anthropic, OpenAI, Gemini, AWS Bedrock, Azure, Ollama, and more\",\n \"Or set env: export ANTHROPIC_API_KEY=<key> (or OPENAI_API_KEY, etc.)\",\n ],\n loginCommand: \"openacp agents run cline\",\n },\n \"auggie\": {\n setupSteps: [\n \"Login: openacp agents run auggie (opens browser for Augment account on first run)\",\n ],\n loginCommand: \"openacp agents run auggie\",\n },\n \"qwen-code\": {\n setupSteps: [\n \"Login: openacp agents run qwen (use /auth command, select 'Qwen OAuth')\",\n \"Free: 1000 requests/day with Qwen OAuth\",\n \"Or set API key: export OPENAI_API_KEY=<key> in ~/.qwen/settings.json\",\n ],\n loginCommand: \"openacp agents run qwen\",\n },\n\n // --- Agents requiring API keys via env vars ---\n \"kimi\": {\n setupSteps: [\n \"Login: openacp agents run kimi (use /login command inside CLI)\",\n \"Recommended: select 'Kimi Code' for browser-based OAuth\",\n \"Or select another provider and enter API key manually\",\n ],\n loginCommand: \"openacp agents run kimi\",\n },\n \"cursor\": {\n setupSteps: [\n \"Requires active Cursor subscription\",\n \"Login: openacp agents run cursor (opens browser for Cursor account)\",\n ],\n loginCommand: \"openacp agents run cursor\",\n },\n\n // --- Agents with provider selection on first run ---\n \"goose\": {\n setupSteps: [\n \"First run auto-enters setup mode — choose your LLM provider\",\n \"Options: OpenAI, Anthropic, Google Gemini, OpenRouter, or local models\",\n \"Set provider API key: export OPENAI_API_KEY=<key> (or other provider)\",\n \"Reconfigure anytime: goose configure\",\n ],\n },\n \"junie\": {\n setupSteps: [\n \"Bring Your Own Key (BYOK) — provide API key from any supported provider\",\n \"Supports: OpenAI, Anthropic, Gemini, xAI, OpenRouter\",\n \"Free tier: up to $50 with Gemini 3 Flash included\",\n \"Set key via env or first-run setup prompt\",\n ],\n },\n \"kilo\": {\n setupSteps: [\n \"Options: bring your own API keys (Anthropic, OpenAI, Google) or use Kilo Gateway\",\n \"Kilo Gateway: pay-as-you-go, includes free models — no API key needed\",\n \"BYOK: set provider key, e.g. export ANTHROPIC_API_KEY=<key>\",\n ],\n },\n \"mistral-vibe\": {\n setupSteps: [\n \"Get API key from console.mistral.ai/codestral/cli\",\n \"Or sign up for Free/Pro/Team plan at mistral.ai\",\n \"Set key when prompted on first run\",\n ],\n },\n \"deepagents\": {\n setupSteps: [\n \"Powered by LangChain — set your LLM provider API key\",\n \"Example: export OPENAI_API_KEY=<key> or export ANTHROPIC_API_KEY=<key>\",\n ],\n },\n\n // --- Agents that work out of the box (no setup / minimal setup) ---\n \"crow-cli\": {\n setupSteps: [\n \"Requires uvx (Python package runner): pip install uv\",\n \"Bring your own API key for your chosen LLM provider\",\n ],\n },\n \"fast-agent\": {\n setupSteps: [\n \"Requires uvx (Python package runner): pip install uv\",\n \"Configure LLM provider in agent config file\",\n ],\n },\n};\n\nexport function getAgentSetup(registryId: string): AgentSetupInfo | undefined {\n return AGENT_SETUP[registryId];\n}\n\nconst AGENT_CAPABILITIES: Record<string, AgentCapability> = {\n claude: {\n supportsResume: true,\n resumeCommand: (sid) => `claude --resume ${sid}`,\n integration: {\n hookEvent: \"UserPromptSubmit\",\n settingsPath: \"~/.claude/settings.json\",\n settingsFormat: \"settings_json\",\n hooksDirPath: \"~/.claude/hooks/\",\n outputFormat: \"plaintext\",\n sessionIdField: \".session_id\",\n commandsPath: \"~/.claude/commands/\",\n handoffCommandName: \"openacp:handoff\",\n commandFormat: \"markdown\",\n sessionIdVar: \"CLAUDE_SESSION_ID\",\n workingDirVar: \"CLAUDE_WORKING_DIR\",\n },\n },\n cursor: {\n supportsResume: true,\n resumeCommand: (sid) => `cursor --resume ${sid}`,\n integration: {\n hookEvent: \"beforeSubmitPrompt\",\n settingsPath: \"~/.cursor/hooks.json\",\n settingsFormat: \"hooks_json\",\n hooksDirPath: \"~/.cursor/hooks/\",\n outputFormat: \"json\",\n sessionIdField: \".conversation_id\",\n commandsPath: \"~/.cursor/skills/\",\n handoffCommandName: \"openacp-handoff\",\n commandFormat: \"skill\",\n },\n },\n gemini: {\n supportsResume: true,\n resumeCommand: (sid) => `gemini --resume ${sid}`,\n integration: {\n hookEvent: \"BeforeAgent\",\n settingsPath: \"~/.gemini/settings.json\",\n settingsFormat: \"settings_json\",\n hooksDirPath: \"~/.gemini/hooks/\",\n outputFormat: \"json\",\n sessionIdField: \".session_id\",\n },\n },\n cline: {\n supportsResume: true,\n resumeCommand: () => `cline --continue`,\n integration: {\n hookEvent: \"TaskStart\",\n settingsPath: \"~/.cline/settings.json\",\n settingsFormat: \"settings_json\",\n hooksDirPath: \"~/.cline/hooks/\",\n outputFormat: \"json\",\n sessionIdField: \".session_id\",\n },\n },\n codex: {\n supportsResume: true,\n resumeCommand: (sid) => `codex resume ${sid}`,\n },\n kilo: {\n supportsResume: true,\n resumeCommand: () => `kilo --continue`,\n },\n amp: {\n supportsResume: true,\n resumeCommand: (sid) => `amp threads continue ${sid}`,\n },\n};\n\nexport const REGISTRY_AGENT_ALIASES: Record<string, string> = {\n \"claude-acp\": \"claude\",\n \"codex-acp\": \"codex\",\n \"gemini\": \"gemini\",\n \"cursor\": \"cursor\",\n \"github-copilot-cli\": \"copilot\",\n \"cline\": \"cline\",\n \"goose\": \"goose\",\n \"kilo\": \"kilo\",\n \"qwen-code\": \"qwen\",\n};\n\nexport function getAgentAlias(registryId: string): string {\n return REGISTRY_AGENT_ALIASES[registryId] ?? registryId;\n}\n\nexport function getAgentDependencies(registryId: string): AgentDependency[] {\n return AGENT_DEPENDENCIES[registryId] ?? [];\n}\n\nexport function getAgentCapabilities(agentName: string): AgentCapability {\n return AGENT_CAPABILITIES[agentName] ?? { supportsResume: false };\n}\n\nexport function listAgentsWithIntegration(): string[] {\n return Object.entries(AGENT_CAPABILITIES)\n .filter(([, cap]) => cap.integration != null)\n .map(([key]) => key);\n}\n\nexport function commandExists(cmd: string): boolean {\n try {\n execFileSync(\"which\", [cmd], { stdio: \"pipe\" });\n return true;\n } catch {\n // not in PATH\n }\n // Check node_modules/.bin (walks up from cwd)\n let dir = process.cwd();\n while (true) {\n const binPath = path.join(dir, \"node_modules\", \".bin\", cmd);\n if (fs.existsSync(binPath)) return true;\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return false;\n}\n\nexport function checkDependencies(registryId: string): AvailabilityResult {\n const deps = getAgentDependencies(registryId);\n if (deps.length === 0) return { available: true };\n\n const missing = deps.filter((d) => !commandExists(d.command));\n if (missing.length === 0) return { available: true };\n\n return {\n available: false,\n reason: `Requires: ${missing.map((m) => m.label).join(\", \")}`,\n missing: missing.map((m) => ({ label: m.label, installHint: m.installHint })),\n };\n}\n\nexport function checkRuntimeAvailable(runtime: \"npx\" | \"uvx\"): boolean {\n return commandExists(runtime);\n}\n"],"mappings":"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","names":[]}
@@ -1,13 +0,0 @@
1
- import {
2
- ConfigManager,
3
- ConfigSchema,
4
- expandHome
5
- } from "./chunk-YZCKSNRN.js";
6
- import "./chunk-R6KZYF7D.js";
7
- import "./chunk-ON7HB5O7.js";
8
- export {
9
- ConfigManager,
10
- ConfigSchema,
11
- expandHome
12
- };
13
- //# sourceMappingURL=config-X4UP7H6R.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,11 +0,0 @@
1
- import {
2
- runConfigEditor
3
- } from "./chunk-TGP34LQN.js";
4
- import "./chunk-2R5XM3ES.js";
5
- import "./chunk-YZCKSNRN.js";
6
- import "./chunk-R6KZYF7D.js";
7
- import "./chunk-ON7HB5O7.js";
8
- export {
9
- runConfigEditor
10
- };
11
- //# sourceMappingURL=config-editor-7BENRVG5.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,18 +0,0 @@
1
- import {
2
- CONFIG_REGISTRY,
3
- getConfigValue,
4
- getFieldDef,
5
- getSafeFields,
6
- isHotReloadable,
7
- resolveOptions
8
- } from "./chunk-NOEAJNTK.js";
9
- import "./chunk-ON7HB5O7.js";
10
- export {
11
- CONFIG_REGISTRY,
12
- getConfigValue,
13
- getFieldDef,
14
- getSafeFields,
15
- isHotReloadable,
16
- resolveOptions
17
- };
18
- //# sourceMappingURL=config-registry-M3FFWEVM.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,9 +0,0 @@
1
- import {
2
- context_default
3
- } from "./chunk-FPKQYCQS.js";
4
- import "./chunk-BYCJQPMN.js";
5
- import "./chunk-NJX75BLK.js";
6
- export {
7
- context_default as default
8
- };
9
- //# sourceMappingURL=context-FVGCU5TI.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,25 +0,0 @@
1
- import {
2
- corePlugins
3
- } from "./chunk-7GXEMMEV.js";
4
- import "./chunk-KGAQW6F4.js";
5
- import "./chunk-SSLVNCEA.js";
6
- import "./chunk-P3HHJANC.js";
7
- import "./chunk-NHD5XDD2.js";
8
- import "./chunk-ZIRH6QWW.js";
9
- import "./chunk-FPKQYCQS.js";
10
- import "./chunk-VUSCVRJL.js";
11
- import "./chunk-5WGVYX3C.js";
12
- import "./chunk-3EWTPOF7.js";
13
- import "./chunk-IZ5UEZF7.js";
14
- import "./chunk-BYCJQPMN.js";
15
- import "./chunk-NJX75BLK.js";
16
- import "./chunk-2KT6TROD.js";
17
- import "./chunk-7ZCQF6QM.js";
18
- import "./chunk-R6KZYF7D.js";
19
- import "./chunk-ZSLHHQPQ.js";
20
- import "./chunk-OSBZXY2W.js";
21
- import "./chunk-LGFWH3AE.js";
22
- export {
23
- corePlugins
24
- };
25
- //# sourceMappingURL=core-plugins-JSY2I44L.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,34 +0,0 @@
1
- import {
2
- clearRunning,
3
- getLogDir,
4
- getPidPath,
5
- getRunningMarker,
6
- getStatus,
7
- isProcessRunning,
8
- markRunning,
9
- readPidFile,
10
- removePidFile,
11
- shouldAutoStart,
12
- startDaemon,
13
- stopDaemon,
14
- writePidFile
15
- } from "./chunk-7U6IZIJP.js";
16
- import "./chunk-YZCKSNRN.js";
17
- import "./chunk-R6KZYF7D.js";
18
- import "./chunk-ON7HB5O7.js";
19
- export {
20
- clearRunning,
21
- getLogDir,
22
- getPidPath,
23
- getRunningMarker,
24
- getStatus,
25
- isProcessRunning,
26
- markRunning,
27
- readPidFile,
28
- removePidFile,
29
- shouldAutoStart,
30
- startDaemon,
31
- stopDaemon,
32
- writePidFile
33
- };
34
- //# sourceMappingURL=daemon-UOSRDEXW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,37 +0,0 @@
1
- // src/core/plugin/dev-loader.ts
2
- import fs from "fs";
3
- import path from "path";
4
- var loadCounter = 0;
5
- var DevPluginLoader = class {
6
- pluginPath;
7
- constructor(pluginPath) {
8
- this.pluginPath = path.resolve(pluginPath);
9
- }
10
- async load() {
11
- const distIndex = path.join(this.pluginPath, "dist", "index.js");
12
- const srcIndex = path.join(this.pluginPath, "src", "index.ts");
13
- if (!fs.existsSync(distIndex) && !fs.existsSync(srcIndex)) {
14
- throw new Error(`Plugin not found at ${this.pluginPath}. Expected dist/index.js or src/index.ts`);
15
- }
16
- if (!fs.existsSync(distIndex)) {
17
- throw new Error(`Built plugin not found at ${distIndex}. Run 'npm run build' first.`);
18
- }
19
- const cacheBuster = `v=${Date.now()}-${++loadCounter}`;
20
- const mod = await import(`file://${distIndex}?${cacheBuster}`);
21
- const plugin = mod.default;
22
- if (!plugin || !plugin.name || !plugin.setup) {
23
- throw new Error(`Invalid plugin at ${distIndex}. Must export default OpenACPPlugin with name and setup().`);
24
- }
25
- return plugin;
26
- }
27
- getPluginPath() {
28
- return this.pluginPath;
29
- }
30
- getDistPath() {
31
- return path.join(this.pluginPath, "dist");
32
- }
33
- };
34
- export {
35
- DevPluginLoader
36
- };
37
- //# sourceMappingURL=dev-loader-7P3HZCIA.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/core/plugin/dev-loader.ts"],"sourcesContent":["import fs from 'node:fs'\nimport path from 'node:path'\nimport type { OpenACPPlugin } from './types.js'\n\nlet loadCounter = 0\n\nexport class DevPluginLoader {\n private pluginPath: string\n\n constructor(pluginPath: string) {\n this.pluginPath = path.resolve(pluginPath)\n }\n\n async load(): Promise<OpenACPPlugin> {\n const distIndex = path.join(this.pluginPath, 'dist', 'index.js')\n const srcIndex = path.join(this.pluginPath, 'src', 'index.ts')\n\n if (!fs.existsSync(distIndex) && !fs.existsSync(srcIndex)) {\n throw new Error(`Plugin not found at ${this.pluginPath}. Expected dist/index.js or src/index.ts`)\n }\n\n if (!fs.existsSync(distIndex)) {\n throw new Error(`Built plugin not found at ${distIndex}. Run 'npm run build' first.`)\n }\n\n // Node.js caches ESM imports by URL. Use a unique query string to bust\n // the cache on each reload while keeping the file in its original directory\n // so that relative imports (e.g., './adapter.js') still resolve correctly.\n const cacheBuster = `v=${Date.now()}-${++loadCounter}`\n const mod = await import(`file://${distIndex}?${cacheBuster}`)\n const plugin = mod.default as OpenACPPlugin\n\n if (!plugin || !plugin.name || !plugin.setup) {\n throw new Error(`Invalid plugin at ${distIndex}. Must export default OpenACPPlugin with name and setup().`)\n }\n\n return plugin\n }\n\n getPluginPath(): string {\n return this.pluginPath\n }\n\n getDistPath(): string {\n return path.join(this.pluginPath, 'dist')\n }\n}\n"],"mappings":";AAAA,OAAO,QAAQ;AACf,OAAO,UAAU;AAGjB,IAAI,cAAc;AAEX,IAAM,kBAAN,MAAsB;AAAA,EACnB;AAAA,EAER,YAAY,YAAoB;AAC9B,SAAK,aAAa,KAAK,QAAQ,UAAU;AAAA,EAC3C;AAAA,EAEA,MAAM,OAA+B;AACnC,UAAM,YAAY,KAAK,KAAK,KAAK,YAAY,QAAQ,UAAU;AAC/D,UAAM,WAAW,KAAK,KAAK,KAAK,YAAY,OAAO,UAAU;AAE7D,QAAI,CAAC,GAAG,WAAW,SAAS,KAAK,CAAC,GAAG,WAAW,QAAQ,GAAG;AACzD,YAAM,IAAI,MAAM,uBAAuB,KAAK,UAAU,0CAA0C;AAAA,IAClG;AAEA,QAAI,CAAC,GAAG,WAAW,SAAS,GAAG;AAC7B,YAAM,IAAI,MAAM,6BAA6B,SAAS,8BAA8B;AAAA,IACtF;AAKA,UAAM,cAAc,KAAK,KAAK,IAAI,CAAC,IAAI,EAAE,WAAW;AACpD,UAAM,MAAM,MAAM,OAAO,UAAU,SAAS,IAAI,WAAW;AAC3D,UAAM,SAAS,IAAI;AAEnB,QAAI,CAAC,UAAU,CAAC,OAAO,QAAQ,CAAC,OAAO,OAAO;AAC5C,YAAM,IAAI,MAAM,qBAAqB,SAAS,4DAA4D;AAAA,IAC5G;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,gBAAwB;AACtB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,cAAsB;AACpB,WAAO,KAAK,KAAK,KAAK,YAAY,MAAM;AAAA,EAC1C;AACF;","names":[]}
@@ -1,10 +0,0 @@
1
- import {
2
- DoctorEngine
3
- } from "./chunk-K6UY5M75.js";
4
- import "./chunk-YZCKSNRN.js";
5
- import "./chunk-R6KZYF7D.js";
6
- import "./chunk-ON7HB5O7.js";
7
- export {
8
- DoctorEngine
9
- };
10
- //# sourceMappingURL=doctor-6DLACBR4.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,8 +0,0 @@
1
- import {
2
- file_service_default
3
- } from "./chunk-ZIRH6QWW.js";
4
- import "./chunk-IZ5UEZF7.js";
5
- export {
6
- file_service_default as default
7
- };
8
- //# sourceMappingURL=file-service-FQQYME7M.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,33 +0,0 @@
1
- import {
2
- ensureBinary
3
- } from "./chunk-7YIKTRSM.js";
4
- import "./chunk-R6KZYF7D.js";
5
- import "./chunk-ZSLHHQPQ.js";
6
-
7
- // src/plugins/tunnel/providers/install-cloudflared.ts
8
- var CLOUDFLARED_SPEC = {
9
- name: "cloudflared",
10
- githubBaseUrl: "https://github.com/cloudflare/cloudflared/releases/latest/download",
11
- platforms: {
12
- darwin: {
13
- x64: "cloudflared-darwin-amd64.tgz",
14
- arm64: "cloudflared-darwin-arm64.tgz"
15
- },
16
- win32: {
17
- x64: "cloudflared-windows-amd64.exe"
18
- },
19
- linux: {
20
- x64: "cloudflared-linux-amd64",
21
- arm64: "cloudflared-linux-arm64"
22
- }
23
- },
24
- isArchive: (url) => url.endsWith(".tgz")
25
- };
26
- async function ensureCloudflared() {
27
- return ensureBinary(CLOUDFLARED_SPEC);
28
- }
29
- export {
30
- CLOUDFLARED_SPEC,
31
- ensureCloudflared
32
- };
33
- //# sourceMappingURL=install-cloudflared-LNS5L5FR.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/plugins/tunnel/providers/install-cloudflared.ts"],"sourcesContent":["import { ensureBinary, type BinarySpec } from '../../../core/utils/install-binary.js'\n\nexport const CLOUDFLARED_SPEC: BinarySpec = {\n name: 'cloudflared',\n githubBaseUrl: 'https://github.com/cloudflare/cloudflared/releases/latest/download',\n platforms: {\n darwin: {\n x64: 'cloudflared-darwin-amd64.tgz',\n arm64: 'cloudflared-darwin-arm64.tgz',\n },\n win32: {\n x64: 'cloudflared-windows-amd64.exe',\n },\n linux: {\n x64: 'cloudflared-linux-amd64',\n arm64: 'cloudflared-linux-arm64',\n },\n },\n isArchive: (url) => url.endsWith('.tgz'),\n}\n\nexport async function ensureCloudflared(): Promise<string> {\n return ensureBinary(CLOUDFLARED_SPEC)\n}\n"],"mappings":";;;;;;;AAEO,IAAM,mBAA+B;AAAA,EAC1C,MAAM;AAAA,EACN,eAAe;AAAA,EACf,WAAW;AAAA,IACT,QAAQ;AAAA,MACN,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA,MACL,KAAK;AAAA,IACP;AAAA,IACA,OAAO;AAAA,MACL,KAAK;AAAA,MACL,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EACA,WAAW,CAAC,QAAQ,IAAI,SAAS,MAAM;AACzC;AAEA,eAAsB,oBAAqC;AACzD,SAAO,aAAa,gBAAgB;AACtC;","names":[]}
@@ -1,78 +0,0 @@
1
- import {
2
- log
3
- } from "./chunk-R6KZYF7D.js";
4
-
5
- // src/core/plugin/install-context.ts
6
- import path from "path";
7
-
8
- // src/core/plugin/terminal-io.ts
9
- import * as clack from "@clack/prompts";
10
- function isCancel(value) {
11
- return typeof value === "symbol";
12
- }
13
- function guardCancel(value) {
14
- if (isCancel(value)) {
15
- throw new Error("cancelled");
16
- }
17
- return value;
18
- }
19
- function createTerminalIO() {
20
- return {
21
- async text(opts) {
22
- const result = await clack.text(opts);
23
- return guardCancel(result);
24
- },
25
- async select(opts) {
26
- const result = await clack.select(opts);
27
- return guardCancel(result);
28
- },
29
- async confirm(opts) {
30
- const result = await clack.confirm(opts);
31
- return guardCancel(result);
32
- },
33
- async password(opts) {
34
- const result = await clack.password(opts);
35
- return guardCancel(result);
36
- },
37
- async multiselect(opts) {
38
- const result = await clack.multiselect(opts);
39
- return guardCancel(result);
40
- },
41
- log: {
42
- info: (msg) => clack.log.info(msg),
43
- success: (msg) => clack.log.success(msg),
44
- warning: (msg) => clack.log.warning(msg),
45
- error: (msg) => clack.log.error(msg),
46
- step: (msg) => clack.log.step(msg)
47
- },
48
- spinner() {
49
- const s = clack.spinner();
50
- return {
51
- start: (msg) => s.start(msg),
52
- stop: (msg) => s.stop(msg),
53
- fail: (msg) => s.stop(msg ?? "Failed")
54
- };
55
- },
56
- note: (msg, title) => clack.note(msg, title),
57
- cancel: (msg) => clack.cancel(msg)
58
- };
59
- }
60
-
61
- // src/core/plugin/install-context.ts
62
- function createInstallContext(opts) {
63
- const { pluginName, settingsManager, basePath, legacyConfig, instanceRoot } = opts;
64
- const dataDir = path.join(basePath, pluginName, "data");
65
- return {
66
- pluginName,
67
- terminal: createTerminalIO(),
68
- settings: settingsManager.createAPI(pluginName),
69
- legacyConfig,
70
- dataDir,
71
- log: log.child({ plugin: pluginName }),
72
- instanceRoot
73
- };
74
- }
75
- export {
76
- createInstallContext
77
- };
78
- //# sourceMappingURL=install-context-KZO5FR4D.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/core/plugin/install-context.ts","../../src/core/plugin/terminal-io.ts"],"sourcesContent":["import path from 'node:path'\nimport type { InstallContext } from './types.js'\nimport type { SettingsManager } from './settings-manager.js'\nimport { createTerminalIO } from './terminal-io.js'\nimport { log as rootLog } from '../utils/log.js'\n\nexport interface CreateInstallContextOpts {\n pluginName: string\n settingsManager: SettingsManager\n basePath: string\n legacyConfig?: Record<string, unknown>\n instanceRoot?: string\n}\n\nexport function createInstallContext(opts: CreateInstallContextOpts): InstallContext {\n const { pluginName, settingsManager, basePath, legacyConfig, instanceRoot } = opts\n const dataDir = path.join(basePath, pluginName, 'data')\n\n return {\n pluginName,\n terminal: createTerminalIO(),\n settings: settingsManager.createAPI(pluginName),\n legacyConfig,\n dataDir,\n log: rootLog.child({ plugin: pluginName }),\n instanceRoot,\n }\n}\n","import * as clack from '@clack/prompts'\nimport type { TerminalIO } from './types.js'\n\nfunction isCancel(value: unknown): value is symbol {\n return typeof value === 'symbol'\n}\n\nfunction guardCancel<T>(value: T | symbol): T {\n if (isCancel(value)) {\n throw new Error('cancelled')\n }\n return value as T\n}\n\nexport function createTerminalIO(): TerminalIO {\n return {\n async text(opts) {\n const result = await clack.text(opts as Parameters<typeof clack.text>[0])\n return guardCancel(result)\n },\n async select<T>(opts: {\n message: string\n options: { value: T; label: string; hint?: string }[]\n }): Promise<T> {\n const result = await clack.select(opts as Parameters<typeof clack.select>[0])\n return guardCancel(result) as T\n },\n async confirm(opts) {\n const result = await clack.confirm(opts as Parameters<typeof clack.confirm>[0])\n return guardCancel(result)\n },\n async password(opts) {\n const result = await clack.password(opts as Parameters<typeof clack.password>[0])\n return guardCancel(result)\n },\n async multiselect<T>(opts: {\n message: string\n options: { value: T; label: string; hint?: string }[]\n required?: boolean\n }): Promise<T[]> {\n const result = await clack.multiselect(opts as Parameters<typeof clack.multiselect>[0])\n return guardCancel(result) as T[]\n },\n log: {\n info: (msg) => clack.log.info(msg),\n success: (msg) => clack.log.success(msg),\n warning: (msg) => clack.log.warning(msg),\n error: (msg) => clack.log.error(msg),\n step: (msg) => clack.log.step(msg),\n },\n spinner() {\n const s = clack.spinner()\n return {\n start: (msg: string) => s.start(msg),\n stop: (msg?: string) => s.stop(msg),\n fail: (msg?: string) => s.stop(msg ?? 'Failed'),\n }\n },\n note: (msg, title) => clack.note(msg, title),\n cancel: (msg) => clack.cancel(msg),\n }\n}\n"],"mappings":";;;;;AAAA,OAAO,UAAU;;;ACAjB,YAAY,WAAW;AAGvB,SAAS,SAAS,OAAiC;AACjD,SAAO,OAAO,UAAU;AAC1B;AAEA,SAAS,YAAe,OAAsB;AAC5C,MAAI,SAAS,KAAK,GAAG;AACnB,UAAM,IAAI,MAAM,WAAW;AAAA,EAC7B;AACA,SAAO;AACT;AAEO,SAAS,mBAA+B;AAC7C,SAAO;AAAA,IACL,MAAM,KAAK,MAAM;AACf,YAAM,SAAS,MAAY,WAAK,IAAwC;AACxE,aAAO,YAAY,MAAM;AAAA,IAC3B;AAAA,IACA,MAAM,OAAU,MAGD;AACb,YAAM,SAAS,MAAY,aAAO,IAA0C;AAC5E,aAAO,YAAY,MAAM;AAAA,IAC3B;AAAA,IACA,MAAM,QAAQ,MAAM;AAClB,YAAM,SAAS,MAAY,cAAQ,IAA2C;AAC9E,aAAO,YAAY,MAAM;AAAA,IAC3B;AAAA,IACA,MAAM,SAAS,MAAM;AACnB,YAAM,SAAS,MAAY,eAAS,IAA4C;AAChF,aAAO,YAAY,MAAM;AAAA,IAC3B;AAAA,IACA,MAAM,YAAe,MAIJ;AACf,YAAM,SAAS,MAAY,kBAAY,IAA+C;AACtF,aAAO,YAAY,MAAM;AAAA,IAC3B;AAAA,IACA,KAAK;AAAA,MACH,MAAM,CAAC,QAAc,UAAI,KAAK,GAAG;AAAA,MACjC,SAAS,CAAC,QAAc,UAAI,QAAQ,GAAG;AAAA,MACvC,SAAS,CAAC,QAAc,UAAI,QAAQ,GAAG;AAAA,MACvC,OAAO,CAAC,QAAc,UAAI,MAAM,GAAG;AAAA,MACnC,MAAM,CAAC,QAAc,UAAI,KAAK,GAAG;AAAA,IACnC;AAAA,IACA,UAAU;AACR,YAAM,IAAU,cAAQ;AACxB,aAAO;AAAA,QACL,OAAO,CAAC,QAAgB,EAAE,MAAM,GAAG;AAAA,QACnC,MAAM,CAAC,QAAiB,EAAE,KAAK,GAAG;AAAA,QAClC,MAAM,CAAC,QAAiB,EAAE,KAAK,OAAO,QAAQ;AAAA,MAChD;AAAA,IACF;AAAA,IACA,MAAM,CAAC,KAAK,UAAgB,WAAK,KAAK,KAAK;AAAA,IAC3C,QAAQ,CAAC,QAAc,aAAO,GAAG;AAAA,EACnC;AACF;;;AD/CO,SAAS,qBAAqB,MAAgD;AACnF,QAAM,EAAE,YAAY,iBAAiB,UAAU,cAAc,aAAa,IAAI;AAC9E,QAAM,UAAU,KAAK,KAAK,UAAU,YAAY,MAAM;AAEtD,SAAO;AAAA,IACL;AAAA,IACA,UAAU,iBAAiB;AAAA,IAC3B,UAAU,gBAAgB,UAAU,UAAU;AAAA,IAC9C;AAAA,IACA;AAAA,IACA,KAAK,IAAQ,MAAM,EAAE,QAAQ,WAAW,CAAC;AAAA,IACzC;AAAA,EACF;AACF;","names":[]}