@supen-ai/cli 1.3.4 → 1.4.0

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 (131) hide show
  1. package/README.md +1 -1
  2. package/daemon/dist/agent-sdk/drivers/codex-app-server-driver.d.ts.map +1 -1
  3. package/daemon/dist/agent-sdk/drivers/codex-app-server-driver.js +0 -2
  4. package/daemon/dist/agent-sdk/drivers/codex-app-server-driver.js.map +1 -1
  5. package/daemon/dist/agent-sdk/drivers/registry.d.ts +2 -8
  6. package/daemon/dist/agent-sdk/drivers/registry.d.ts.map +1 -1
  7. package/daemon/dist/agent-sdk/drivers/registry.js +7 -138
  8. package/daemon/dist/agent-sdk/drivers/registry.js.map +1 -1
  9. package/daemon/dist/agent-sdk/index.d.ts +0 -11
  10. package/daemon/dist/agent-sdk/index.d.ts.map +1 -1
  11. package/daemon/dist/agent-sdk/index.js +0 -11
  12. package/daemon/dist/agent-sdk/index.js.map +1 -1
  13. package/daemon/dist/agent-sdk/session-manager.d.ts +1 -1
  14. package/daemon/dist/agent-sdk/session-manager.d.ts.map +1 -1
  15. package/daemon/dist/agent-sdk/session-manager.js +1 -2
  16. package/daemon/dist/agent-sdk/session-manager.js.map +1 -1
  17. package/daemon/dist/channels/acp.d.ts.map +1 -1
  18. package/daemon/dist/channels/acp.js +2 -3
  19. package/daemon/dist/channels/acp.js.map +1 -1
  20. package/daemon/dist/channels/http-routes.js +6 -6
  21. package/daemon/dist/channels/http-routes.js.map +1 -1
  22. package/daemon/dist/core/config.d.ts +1 -1
  23. package/daemon/dist/core/config.d.ts.map +1 -1
  24. package/daemon/dist/core/config.js +1 -1
  25. package/daemon/dist/core/config.js.map +1 -1
  26. package/daemon/dist/core/cortex.d.ts.map +1 -1
  27. package/daemon/dist/core/cortex.js +90 -205
  28. package/daemon/dist/core/cortex.js.map +1 -1
  29. package/daemon/dist/core/env.js +1 -1
  30. package/daemon/dist/core/gateway.d.ts.map +1 -1
  31. package/daemon/dist/core/gateway.js +1 -11
  32. package/daemon/dist/core/gateway.js.map +1 -1
  33. package/daemon/dist/core/loop-guard.d.ts +1 -1
  34. package/daemon/dist/core/loop-guard.js +1 -1
  35. package/daemon/dist/core/protocol-adapter.d.ts +1 -3
  36. package/daemon/dist/core/protocol-adapter.d.ts.map +1 -1
  37. package/daemon/dist/core/protocol-adapter.js +1 -3
  38. package/daemon/dist/core/protocol-adapter.js.map +1 -1
  39. package/daemon/dist/http/routes/rpc.d.ts.map +1 -1
  40. package/daemon/dist/http/routes/rpc.js +16 -1
  41. package/daemon/dist/http/routes/rpc.js.map +1 -1
  42. package/daemon/dist/http/routes/system.d.ts +2 -0
  43. package/daemon/dist/http/routes/system.d.ts.map +1 -1
  44. package/daemon/dist/http/routes/system.js +426 -138
  45. package/daemon/dist/http/routes/system.js.map +1 -1
  46. package/daemon/dist/mcp/index.d.ts +2 -6
  47. package/daemon/dist/mcp/index.d.ts.map +1 -1
  48. package/daemon/dist/mcp/index.js +2 -6
  49. package/daemon/dist/mcp/index.js.map +1 -1
  50. package/daemon/dist/mcp/tools.d.ts +5 -7
  51. package/daemon/dist/mcp/tools.d.ts.map +1 -1
  52. package/daemon/dist/mcp/tools.js +4 -8
  53. package/daemon/dist/mcp/tools.js.map +1 -1
  54. package/daemon/dist/tools/built-ins.d.ts +9 -84
  55. package/daemon/dist/tools/built-ins.d.ts.map +1 -1
  56. package/daemon/dist/tools/built-ins.js +3 -3
  57. package/daemon/dist/tools/built-ins.js.map +1 -1
  58. package/daemon/dist/tools/local-tool.d.ts +7 -0
  59. package/daemon/dist/tools/local-tool.d.ts.map +1 -0
  60. package/daemon/dist/tools/local-tool.js +4 -0
  61. package/daemon/dist/tools/local-tool.js.map +1 -0
  62. package/daemon/dist/tools/skill-tools.d.ts +5 -8
  63. package/daemon/dist/tools/skill-tools.d.ts.map +1 -1
  64. package/daemon/dist/tools/skill-tools.js +6 -10
  65. package/daemon/dist/tools/skill-tools.js.map +1 -1
  66. package/daemon/package.json +6 -9
  67. package/dist/backend.js +5 -5
  68. package/dist/backend.js.map +1 -1
  69. package/dist/bootstrap.js +2 -6
  70. package/dist/bootstrap.js.map +1 -1
  71. package/dist/computer.js +1 -1
  72. package/dist/doctor.js +1 -1
  73. package/dist/doctor.js.map +1 -1
  74. package/dist/index.js +1 -1
  75. package/dist/repl.js +6 -66
  76. package/dist/repl.js.map +1 -1
  77. package/dist/service.js +2 -3
  78. package/dist/service.js.map +1 -1
  79. package/package.json +3 -6
  80. package/daemon/dist/agent-sdk/drivers/acpx-driver.d.ts +0 -21
  81. package/daemon/dist/agent-sdk/drivers/acpx-driver.d.ts.map +0 -1
  82. package/daemon/dist/agent-sdk/drivers/acpx-driver.js +0 -488
  83. package/daemon/dist/agent-sdk/drivers/acpx-driver.js.map +0 -1
  84. package/daemon/dist/agent-sdk/drivers/claude-acpx-driver.d.ts +0 -5
  85. package/daemon/dist/agent-sdk/drivers/claude-acpx-driver.d.ts.map +0 -1
  86. package/daemon/dist/agent-sdk/drivers/claude-acpx-driver.js +0 -7
  87. package/daemon/dist/agent-sdk/drivers/claude-acpx-driver.js.map +0 -1
  88. package/daemon/dist/agent-sdk/drivers/claude-cli-direct-driver.d.ts +0 -20
  89. package/daemon/dist/agent-sdk/drivers/claude-cli-direct-driver.d.ts.map +0 -1
  90. package/daemon/dist/agent-sdk/drivers/claude-cli-direct-driver.js +0 -264
  91. package/daemon/dist/agent-sdk/drivers/claude-cli-direct-driver.js.map +0 -1
  92. package/daemon/dist/agent-sdk/drivers/claude-code-driver.d.ts +0 -29
  93. package/daemon/dist/agent-sdk/drivers/claude-code-driver.d.ts.map +0 -1
  94. package/daemon/dist/agent-sdk/drivers/claude-code-driver.js +0 -24
  95. package/daemon/dist/agent-sdk/drivers/claude-code-driver.js.map +0 -1
  96. package/daemon/dist/agent-sdk/drivers/claude-code-events.d.ts +0 -25
  97. package/daemon/dist/agent-sdk/drivers/claude-code-events.d.ts.map +0 -1
  98. package/daemon/dist/agent-sdk/drivers/claude-code-events.js +0 -58
  99. package/daemon/dist/agent-sdk/drivers/claude-code-events.js.map +0 -1
  100. package/daemon/dist/agent-sdk/drivers/claude-code-items.d.ts +0 -41
  101. package/daemon/dist/agent-sdk/drivers/claude-code-items.d.ts.map +0 -1
  102. package/daemon/dist/agent-sdk/drivers/claude-code-items.js +0 -77
  103. package/daemon/dist/agent-sdk/drivers/claude-code-items.js.map +0 -1
  104. package/daemon/dist/agent-sdk/drivers/codex-acpx-driver.d.ts +0 -5
  105. package/daemon/dist/agent-sdk/drivers/codex-acpx-driver.d.ts.map +0 -1
  106. package/daemon/dist/agent-sdk/drivers/codex-acpx-driver.js +0 -7
  107. package/daemon/dist/agent-sdk/drivers/codex-acpx-driver.js.map +0 -1
  108. package/daemon/dist/agent-sdk/drivers/codex-exec-driver.d.ts +0 -28
  109. package/daemon/dist/agent-sdk/drivers/codex-exec-driver.d.ts.map +0 -1
  110. package/daemon/dist/agent-sdk/drivers/codex-exec-driver.js +0 -219
  111. package/daemon/dist/agent-sdk/drivers/codex-exec-driver.js.map +0 -1
  112. package/daemon/dist/agent-sdk/drivers/codex-exec-events.d.ts +0 -9
  113. package/daemon/dist/agent-sdk/drivers/codex-exec-events.d.ts.map +0 -1
  114. package/daemon/dist/agent-sdk/drivers/codex-exec-events.js +0 -82
  115. package/daemon/dist/agent-sdk/drivers/codex-exec-events.js.map +0 -1
  116. package/daemon/dist/agent-sdk/drivers/codex-exec-items.d.ts +0 -9
  117. package/daemon/dist/agent-sdk/drivers/codex-exec-items.d.ts.map +0 -1
  118. package/daemon/dist/agent-sdk/drivers/codex-exec-items.js +0 -86
  119. package/daemon/dist/agent-sdk/drivers/codex-exec-items.js.map +0 -1
  120. package/daemon/dist/agent-sdk/drivers/gemini-cli-driver.d.ts +0 -17
  121. package/daemon/dist/agent-sdk/drivers/gemini-cli-driver.d.ts.map +0 -1
  122. package/daemon/dist/agent-sdk/drivers/gemini-cli-driver.js +0 -255
  123. package/daemon/dist/agent-sdk/drivers/gemini-cli-driver.js.map +0 -1
  124. package/daemon/dist/core/sdk-wrapper.d.ts +0 -36
  125. package/daemon/dist/core/sdk-wrapper.d.ts.map +0 -1
  126. package/daemon/dist/core/sdk-wrapper.js +0 -533
  127. package/daemon/dist/core/sdk-wrapper.js.map +0 -1
  128. package/daemon/dist/skills/claude_code.d.ts +0 -25
  129. package/daemon/dist/skills/claude_code.d.ts.map +0 -1
  130. package/daemon/dist/skills/claude_code.js +0 -49
  131. package/daemon/dist/skills/claude_code.js.map +0 -1
@@ -1,533 +0,0 @@
1
- /**
2
- * Claude-specific backend session implementation.
3
- *
4
- * This module remains the implementation detail used by the
5
- * Supen Agent SDK ClaudeCode driver. New backend integrations
6
- * should not call this file directly.
7
- */
8
- import fs from 'fs';
9
- import os from 'os';
10
- import { createRequire } from 'module';
11
- import path from 'path';
12
- import { fileURLToPath } from 'url';
13
- import { ClaudeCliDirectDriver } from '../agent-sdk/drivers/claude-cli-direct-driver.js';
14
- import { DEFAULT_MODEL, getAgentModelConfig, agentPaths } from './config.js';
15
- import { logger } from './logger.js';
16
- import { getLlmToken } from './gateway.js';
17
- import { SkillsRegistry } from '../skills/registry.js';
18
- import { listLoadableEnabledSkillEntries } from '../skills/enabled.js';
19
- import { inspectSkillRuntime, installSkillRuntime } from '../skills/runtime.js';
20
- import { isPathWithin } from './security.js';
21
- import { withRuntimeSpaceEnv } from './space-env.js';
22
- const require = createRequire(import.meta.url);
23
- const thisFileDir = typeof __dirname !== 'undefined'
24
- ? __dirname
25
- : path.dirname(fileURLToPath(import.meta.url));
26
- const resolvedWorkspaceRoot = path.resolve(thisFileDir, '../..');
27
- const daemonBinDir = path.join(resolvedWorkspaceRoot, 'bin');
28
- let cachedClaudeCliPath = null;
29
- function resolveClaudeCliPath() {
30
- if (cachedClaudeCliPath)
31
- return cachedClaudeCliPath;
32
- cachedClaudeCliPath =
33
- process.env.CLAUDE_CODE_EXECUTABLE?.trim() ||
34
- process.env.CLAUDE_PATH?.trim() ||
35
- 'claude';
36
- return cachedClaudeCliPath;
37
- }
38
- function sanitizeSkillRuntimeName(name) {
39
- const cleaned = name.trim().toLowerCase().replace(/[^a-z0-9._-]+/g, '-');
40
- return cleaned.replace(/^-+|-+$/g, '') || 'skill';
41
- }
42
- function resolveUserToolPathEntries() {
43
- const homeDir = process.env.HOME || os.homedir();
44
- if (!homeDir)
45
- return [];
46
- return [
47
- path.join(homeDir, '.dotnet', 'tools'),
48
- path.join(homeDir, '.local', 'bin'),
49
- path.join(homeDir, 'bin'),
50
- ];
51
- }
52
- function resolveSkillRuntimePathEntries(agentId) {
53
- const homeDir = process.env.HOME || os.homedir();
54
- const supenHome = process.env.SUPEN_HOME || (homeDir ? path.join(homeDir, '.supen') : undefined);
55
- const runtimeBins = supenHome
56
- ? resolveEnabledSkillEntries(agentId).map((entry) => path.join(supenHome, 'runtime', 'skills', sanitizeSkillRuntimeName(entry.skill.name), 'bin'))
57
- : [];
58
- return Array.from(new Set([...runtimeBins, ...resolveUserToolPathEntries()]));
59
- }
60
- function joinPathEntries(entries) {
61
- return Array.from(new Set(entries.filter((entry) => !!entry && entry.trim().length > 0))).join(path.delimiter);
62
- }
63
- function resolveLocalMcpServersRoot() {
64
- const candidates = [
65
- process.env.MCP_SERVERS_ROOT,
66
- path.join(process.env.HOME || '', 'work', 'mcp-servers'),
67
- path.join(process.env.HOME || '', 'tc', 'mcp-servers'),
68
- ].filter((entry) => !!entry && entry.trim().length > 0);
69
- for (const candidate of candidates) {
70
- if (fs.existsSync(path.join(candidate, 'servers', 'office', 'index.mjs'))) {
71
- return candidate;
72
- }
73
- }
74
- return undefined;
75
- }
76
- function resolveAutomationMcpConfig(agentId, sessionId) {
77
- const srcScheduler = path.join(resolvedWorkspaceRoot, 'src', 'bin', 'mcp-scheduler.ts');
78
- const distScheduler = path.join(resolvedWorkspaceRoot, 'dist', 'bin', 'mcp-scheduler.js');
79
- const mcpScript = fs.existsSync(srcScheduler) ? srcScheduler : distScheduler;
80
- if (!fs.existsSync(mcpScript))
81
- return undefined;
82
- let command = process.execPath;
83
- const args = [mcpScript];
84
- if (mcpScript.endsWith('.ts')) {
85
- try {
86
- const tsxPkgPath = require.resolve('tsx/package.json', { paths: [thisFileDir] });
87
- const candidate = path.join(path.dirname(tsxPkgPath), 'dist', 'cli.mjs');
88
- if (fs.existsSync(candidate)) {
89
- args.unshift(candidate);
90
- }
91
- else {
92
- command = 'tsx';
93
- // Keep a conservative fallback path if direct cli resolution fails.
94
- }
95
- }
96
- catch {
97
- command = 'tsx';
98
- }
99
- }
100
- return {
101
- command,
102
- args,
103
- env: {
104
- ...withRuntimeSpaceEnv(process.env),
105
- SUPEN_AGENT_ID: agentId,
106
- ...(sessionId ? { SUPEN_SESSION_ID: sessionId } : {}),
107
- },
108
- };
109
- }
110
- class AsyncMessageQueue {
111
- queue = [];
112
- readResolve;
113
- readReject;
114
- doneFlag = false;
115
- errorValue;
116
- enqueue(value) {
117
- if (this.doneFlag)
118
- return;
119
- if (this.readResolve) {
120
- const resolve = this.readResolve;
121
- this.readResolve = undefined;
122
- this.readReject = undefined;
123
- resolve({ value, done: false });
124
- return;
125
- }
126
- this.queue.push(value);
127
- }
128
- done() {
129
- this.doneFlag = true;
130
- if (this.readResolve) {
131
- const resolve = this.readResolve;
132
- this.readResolve = undefined;
133
- this.readReject = undefined;
134
- resolve({ value: undefined, done: true });
135
- }
136
- }
137
- error(error) {
138
- this.errorValue = error;
139
- if (this.readReject) {
140
- const reject = this.readReject;
141
- this.readResolve = undefined;
142
- this.readReject = undefined;
143
- reject(error);
144
- }
145
- }
146
- [Symbol.asyncIterator]() {
147
- return {
148
- next: async () => {
149
- if (this.queue.length > 0) {
150
- return { value: this.queue.shift(), done: false };
151
- }
152
- if (this.errorValue) {
153
- throw this.errorValue;
154
- }
155
- if (this.doneFlag) {
156
- return { value: undefined, done: true };
157
- }
158
- return new Promise((resolve, reject) => {
159
- this.readResolve = resolve;
160
- this.readReject = reject;
161
- });
162
- },
163
- return: async () => {
164
- this.done();
165
- return { value: undefined, done: true };
166
- },
167
- throw: async (error) => {
168
- this.error(error);
169
- throw error;
170
- },
171
- };
172
- }
173
- }
174
- const liveSessions = new Map();
175
- const sessionCreationInFlight = new Map();
176
- function resolveSdkModelAlias(model, providerId) {
177
- if (!model)
178
- return undefined;
179
- const normalized = model.trim().toLowerCase();
180
- if (!normalized)
181
- return undefined;
182
- if (providerId && providerId !== 'anthropic') {
183
- return 'sonnet';
184
- }
185
- if (normalized === 'sonnet' || normalized === 'opus' || normalized === 'haiku') {
186
- return normalized;
187
- }
188
- if (normalized.includes('haiku'))
189
- return 'haiku';
190
- if (normalized.includes('opus'))
191
- return 'opus';
192
- if (normalized.includes('sonnet') || normalized.includes('claude'))
193
- return 'sonnet';
194
- return model;
195
- }
196
- function resolveSelectedModel(agentId) {
197
- return getAgentModelConfig(agentId, true)[0] || DEFAULT_MODEL;
198
- }
199
- export function shouldWaitForGatewayToken(agentId) {
200
- if (getLlmToken())
201
- return false;
202
- const selectedModel = resolveSelectedModel(agentId);
203
- const providerId = selectedModel?.provider_id?.toLowerCase() || '';
204
- const isGatewayBackedProvider = providerId === 'supen' || providerId === 'babelark';
205
- if (isGatewayBackedProvider)
206
- return true;
207
- const configuredApiKey = process.env.ANTHROPIC_API_KEY || selectedModel?.api_key;
208
- return !configuredApiKey;
209
- }
210
- export function resetAgentSessionCache() {
211
- for (const session of liveSessions.values()) {
212
- try {
213
- session.close();
214
- }
215
- catch {
216
- // best effort cleanup for tests/shutdown paths
217
- }
218
- }
219
- liveSessions.clear();
220
- sessionCreationInFlight.clear();
221
- }
222
- export function hasLiveAgentSession(sessionKey) {
223
- return liveSessions.has(sessionKey) || sessionCreationInFlight.has(sessionKey);
224
- }
225
- function resolveEnabledSkillNames() {
226
- try {
227
- return Array.from(new Set(listLoadableEnabledSkillEntries()
228
- .map((entry) => entry.skill.name))).sort();
229
- }
230
- catch (err) {
231
- logger.warn({ err }, 'Failed to resolve enabled skill names for SDK session');
232
- return [];
233
- }
234
- }
235
- function resolveEnabledSkillEntries(agentId) {
236
- try {
237
- return listLoadableEnabledSkillEntries(agentId);
238
- }
239
- catch (err) {
240
- logger.warn({ err, agentId }, 'Failed to resolve enabled skill entries for SDK session');
241
- return [];
242
- }
243
- }
244
- function ensureEnabledSkillRuntimes(agentId) {
245
- for (const entry of resolveEnabledSkillEntries(agentId)) {
246
- if (!entry.skill.runtime)
247
- continue;
248
- let status = inspectSkillRuntime(entry);
249
- if (!status || status.ready)
250
- continue;
251
- if (!entry.skill.runtime.installScript) {
252
- logger.warn({ agentId, skill: entry.skill.name, checks: status.checks }, 'Enabled skill runtime is not ready and has no installer');
253
- continue;
254
- }
255
- try {
256
- status = installSkillRuntime(entry);
257
- logger.info({ agentId, skill: entry.skill.name, ready: status.ready }, 'Installed enabled skill runtime before SDK session start');
258
- }
259
- catch (err) {
260
- logger.warn({ err, agentId, skill: entry.skill.name }, 'Failed to install enabled skill runtime before SDK session start');
261
- }
262
- }
263
- }
264
- export function buildEnabledSkillsPrompt(agentId) {
265
- const entries = resolveEnabledSkillEntries(agentId);
266
- if (entries.length === 0)
267
- return undefined;
268
- const sections = entries
269
- .map((entry) => {
270
- const skillFilePath = path.join(entry.skillDirectory, 'SKILL.md');
271
- if (!fs.existsSync(skillFilePath)) {
272
- return undefined;
273
- }
274
- const raw = fs.readFileSync(skillFilePath, 'utf-8').trim();
275
- if (!raw) {
276
- return undefined;
277
- }
278
- return [
279
- `### Skill: ${entry.skill.name}`,
280
- `Skill directory: ${path.dirname(skillFilePath)}`,
281
- 'Use the current task folder for generated task files. Create subfolders only when this skill run actually needs them.',
282
- 'Resolve relative asset/template paths from the skill directory, but do not write generated task files into the skill directory.',
283
- raw.slice(0, 12000),
284
- ].join('\n');
285
- })
286
- .filter((value) => !!value);
287
- if (sections.length === 0)
288
- return undefined;
289
- return [
290
- '## Installed Supen Skills',
291
- 'The following Supen-managed skills are installed and enabled for this session.',
292
- 'Treat them as available capabilities even if they are not surfaced by Claude slash-command listings.',
293
- 'Do not call the built-in Skill tool for these Supen-managed skills.',
294
- 'When the user request matches one of these skills, follow the skill workflow directly.',
295
- 'The current working directory is the task folder. Keep generated files there and create only the task-specific subfolders that the request actually needs.',
296
- ...sections,
297
- ].join('\n\n');
298
- }
299
- function compileEnabledSkillsPlugin(agentId) {
300
- let skillHub;
301
- try {
302
- skillHub = new SkillsRegistry();
303
- }
304
- catch (err) {
305
- logger.warn({ err, agentId }, 'Failed to initialize SkillHub for SDK plugin compilation');
306
- return [];
307
- }
308
- const { base } = agentPaths(agentId);
309
- const pluginPath = path.join(base, 'sdk_plugin');
310
- const pluginMetaPath = path.join(pluginPath, '.claude-plugin');
311
- const pluginSkillsPath = path.join(pluginPath, 'skills');
312
- const managedRoot = path.dirname(path.dirname(skillHub.getConfig().statePath));
313
- const allowedRoots = Array.from(new Set([...skillHub.getConfig().directories, managedRoot].map((entry) => path.resolve(entry))));
314
- fs.mkdirSync(pluginMetaPath, { recursive: true });
315
- fs.mkdirSync(pluginSkillsPath, { recursive: true });
316
- fs.writeFileSync(path.join(pluginMetaPath, 'plugin.json'), JSON.stringify({
317
- name: 'supen-skills',
318
- version: '1.0.0',
319
- description: 'Supen dynamically compiled skills bundle for Claude SDK discovery.',
320
- }, null, 2));
321
- for (const entry of fs.readdirSync(pluginSkillsPath)) {
322
- fs.rmSync(path.join(pluginSkillsPath, entry), { recursive: true, force: true });
323
- }
324
- for (const entry of resolveEnabledSkillEntries(agentId)) {
325
- const skillDir = entry.skillDirectory;
326
- if (!skillDir)
327
- continue;
328
- const inAllowedRoot = allowedRoots.some((root) => isPathWithin(root, skillDir));
329
- if (!inAllowedRoot) {
330
- logger.warn({ agentId, skill: entry.skill.name, directory: skillDir }, 'Skipping skill outside configured skills scope');
331
- continue;
332
- }
333
- const linkPath = path.join(pluginSkillsPath, entry.skill.name);
334
- try {
335
- fs.rmSync(linkPath, { recursive: true, force: true });
336
- fs.symlinkSync(skillDir, linkPath, 'dir');
337
- }
338
- catch (err) {
339
- if (fs.existsSync(linkPath)) {
340
- continue;
341
- }
342
- logger.error({ err, agentId, skill: entry.skill.name }, 'Failed to symlink skill into SDK plugin');
343
- }
344
- }
345
- return [{ type: 'local', path: pluginPath }];
346
- }
347
- export async function buildAgentSessionConfig(config) {
348
- const cliPath = resolveClaudeCliPath();
349
- const gatewayToken = getLlmToken();
350
- const selectedModel = resolveSelectedModel(config.agentId);
351
- const providerId = selectedModel?.provider_id?.toLowerCase() || '';
352
- const configuredApiKey = process.env.ANTHROPIC_API_KEY || selectedModel?.api_key;
353
- const isGatewayBackedProvider = providerId === 'supen' || providerId === 'babelark';
354
- const llmToken = isGatewayBackedProvider
355
- ? (gatewayToken || configuredApiKey || 'dummy')
356
- : (configuredApiKey || gatewayToken || 'dummy');
357
- const anthropicApiKey = llmToken;
358
- const anthropicGatewayBaseUrl = process.env.SUPEN_LLM_ANTHROPIC_URL ||
359
- process.env.TEST_ANTHROPIC_BASE_URL;
360
- const configuredBaseUrl = isGatewayBackedProvider
361
- ? (anthropicGatewayBaseUrl ||
362
- selectedModel?.base_url ||
363
- (gatewayToken ? 'http://127.0.0.1:2755/api/llm/anthropic' : undefined))
364
- : ((providerId === 'anthropic' ? anthropicGatewayBaseUrl : undefined) ||
365
- selectedModel?.base_url);
366
- const configuredModelName = selectedModel?.model;
367
- const isThirdPartyProvider = !!selectedModel?.provider_id && selectedModel.provider_id !== 'anthropic';
368
- const nativeSkillToolSupported = !providerId || providerId === 'anthropic';
369
- const runningAsRoot = typeof process.getuid === 'function' && process.getuid() === 0;
370
- const permissionMode = runningAsRoot ? 'default' : 'bypassPermissions';
371
- const localMcpServersRoot = resolveLocalMcpServersRoot();
372
- const sessionConfig = {
373
- model: resolveSdkModelAlias(config.model || selectedModel?.model, selectedModel?.provider_id) || 'sonnet',
374
- resume: config.resume,
375
- cwd: config.cwd,
376
- // Surface incremental token events from Claude Code so the chat transport
377
- // can render streamed assistant text instead of waiting for the final block.
378
- includePartialMessages: true,
379
- // Non-Anthropic providers reject Claude Code's native Skill continuation
380
- // shape, so Supen-managed skills stay available through the appended prompt.
381
- settingSources: nativeSkillToolSupported ? ['project'] : [],
382
- // Claude Code rejects bypass mode under root/sudo. Cloud containers often run as root.
383
- permissionMode,
384
- ...(runningAsRoot
385
- ? {
386
- // Claude Code refuses bypassPermissions when running as root, which is
387
- // common in hosted space containers. Keep the SDK in default mode but
388
- // explicitly allow tool calls so template skills can run end to end
389
- // without an impossible interactive approval step.
390
- canUseTool: async (_toolName, input, options) => ({
391
- behavior: 'allow',
392
- updatedInput: input,
393
- ...(options?.toolUseID ? { toolUseID: options.toolUseID } : {}),
394
- }),
395
- }
396
- : { allowDangerouslySkipPermissions: true }),
397
- pathToClaudeCodeExecutable: cliPath,
398
- env: {
399
- ...withRuntimeSpaceEnv(process.env),
400
- PWD: config.cwd,
401
- PATH: joinPathEntries([daemonBinDir, ...resolveSkillRuntimePathEntries(config.agentId), process.env.PATH || '']),
402
- // Claude Code sends ANTHROPIC_API_KEY as the request auth credential for
403
- // custom Anthropic-compatible base URLs. Keep AUTH_TOKEN set as well for
404
- // runtimes that read it, but the gateway token must be present here.
405
- ANTHROPIC_API_KEY: anthropicApiKey,
406
- ANTHROPIC_AUTH_TOKEN: llmToken,
407
- ...(localMcpServersRoot
408
- ? { MCP_SERVERS_ROOT: localMcpServersRoot }
409
- : {}),
410
- ...(isThirdPartyProvider && configuredModelName
411
- ? {
412
- ANTHROPIC_MODEL: configuredModelName,
413
- ANTHROPIC_SMALL_FAST_MODEL: configuredModelName,
414
- ANTHROPIC_DEFAULT_SONNET_MODEL: configuredModelName,
415
- ANTHROPIC_DEFAULT_OPUS_MODEL: configuredModelName,
416
- ANTHROPIC_DEFAULT_HAIKU_MODEL: configuredModelName,
417
- }
418
- : {}),
419
- ...(configuredBaseUrl
420
- ? { ANTHROPIC_BASE_URL: configuredBaseUrl }
421
- : {}),
422
- },
423
- onMessage: (msg) => {
424
- logger.info({ type: msg.type }, 'SDK Message received in onMessage');
425
- },
426
- onError: (err) => {
427
- logger.error({ err, agentId: config.agentId }, 'SDK Session Error');
428
- }
429
- };
430
- const mergedMcpServers = {};
431
- const automationMcpConfig = resolveAutomationMcpConfig(config.agentId, config.sessionId);
432
- if (automationMcpConfig) {
433
- mergedMcpServers.mcpAutomations = {
434
- type: 'stdio',
435
- command: automationMcpConfig.command,
436
- args: automationMcpConfig.args,
437
- env: automationMcpConfig.env,
438
- };
439
- }
440
- if (config.mcpServers && Object.keys(config.mcpServers).length > 0) {
441
- Object.assign(mergedMcpServers, config.mcpServers);
442
- }
443
- const skillsPrompt = buildEnabledSkillsPrompt(config.agentId);
444
- const appendedPrompt = [config.systemPromptAppend?.trim(), skillsPrompt]
445
- .filter((value) => !!value && value.trim().length > 0)
446
- .join('\n\n');
447
- if (appendedPrompt) {
448
- sessionConfig.systemPrompt = {
449
- type: 'preset',
450
- preset: 'claude_code',
451
- append: appendedPrompt,
452
- };
453
- }
454
- // Pass MCP server configurations if provided.
455
- if (Object.keys(mergedMcpServers).length > 0) {
456
- sessionConfig.mcpServers = mergedMcpServers;
457
- }
458
- const disallowedTools = new Set([
459
- ...(Array.isArray(sessionConfig.disallowedTools) ? sessionConfig.disallowedTools : []),
460
- 'CronCreate',
461
- 'create_schedule',
462
- 'list_schedules',
463
- 'delete_schedule',
464
- ...(nativeSkillToolSupported ? [] : ['Skill']),
465
- ]);
466
- sessionConfig.disallowedTools = Array.from(disallowedTools);
467
- if (nativeSkillToolSupported) {
468
- sessionConfig.plugins = compileEnabledSkillsPlugin(config.agentId);
469
- const enabledSkills = resolveEnabledSkillNames();
470
- if (enabledSkills.length > 0) {
471
- sessionConfig.skills = enabledSkills;
472
- }
473
- }
474
- return sessionConfig;
475
- }
476
- /**
477
- * Exported for the ClaudeCode driver boundary and targeted wrapper tests.
478
- * New backend integrations should implement BackendDriver instead of
479
- * calling this Claude-specific helper directly.
480
- */
481
- export async function createAgentSession(config) {
482
- if (config.sessionKey) {
483
- const existingSession = liveSessions.get(config.sessionKey);
484
- if (existingSession)
485
- return existingSession;
486
- const inFlightSession = sessionCreationInFlight.get(config.sessionKey);
487
- if (inFlightSession)
488
- return inFlightSession;
489
- }
490
- const createSessionPromise = (async () => {
491
- ensureEnabledSkillRuntimes(config.agentId);
492
- const driver = new ClaudeCliDirectDriver();
493
- const session = await driver.startSession({
494
- agentId: config.agentId,
495
- sessionId: config.sessionId || config.sessionKey || 'claude-session',
496
- turnId: 'claude-turn',
497
- cwd: config.cwd,
498
- model: config.model,
499
- resume: config.resume,
500
- mcpServers: config.mcpServers,
501
- systemPromptAppend: config.systemPromptAppend,
502
- });
503
- const wrappedSession = {
504
- send: (message) => session.send(message),
505
- stream: () => session.stream(),
506
- supportedCommands: () => typeof session.supportedCommands === 'function'
507
- ? session.supportedCommands()
508
- : Promise.resolve([]),
509
- getContextUsage: () => typeof session.getContextUsage === 'function'
510
- ? session.getContextUsage()
511
- : Promise.resolve(undefined),
512
- close() {
513
- session.close();
514
- if (config.sessionKey) {
515
- liveSessions.delete(config.sessionKey);
516
- }
517
- },
518
- };
519
- if (config.sessionKey) {
520
- liveSessions.set(config.sessionKey, wrappedSession);
521
- }
522
- return wrappedSession;
523
- })();
524
- if (config.sessionKey) {
525
- const sessionKey = config.sessionKey;
526
- sessionCreationInFlight.set(sessionKey, createSessionPromise);
527
- createSessionPromise.finally(() => {
528
- sessionCreationInFlight.delete(sessionKey);
529
- });
530
- }
531
- return createSessionPromise;
532
- }
533
- //# sourceMappingURL=sdk-wrapper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sdk-wrapper.js","sourceRoot":"","sources":["../../src/core/sdk-wrapper.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- /**
2
- * Meta-Agent Tool: Delegates highly complex engineering tasks to the Claude Code CLI.
3
- * Assumes Claude CLI is already authenticated and installed globally or via npx.
4
- */
5
- export declare const delegateToClaudeTool: import("ai").Tool<{
6
- prompt: string;
7
- working_directory: string;
8
- }, {
9
- success: boolean;
10
- summary: string;
11
- output: string;
12
- warnings: string;
13
- error?: undefined;
14
- stdout?: undefined;
15
- stderr?: undefined;
16
- } | {
17
- success: boolean;
18
- error: any;
19
- stdout: any;
20
- stderr: any;
21
- summary?: undefined;
22
- output?: undefined;
23
- warnings?: undefined;
24
- }>;
25
- //# sourceMappingURL=claude_code.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude_code.d.ts","sourceRoot":"","sources":["../../src/skills/claude_code.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;EAsC/B,CAAC"}
@@ -1,49 +0,0 @@
1
- import { tool } from 'ai';
2
- import { z } from 'zod';
3
- import { exec } from 'child_process';
4
- import util from 'util';
5
- import { logger } from '../core/logger.js';
6
- import { withRuntimeSpaceEnv } from '../core/space-env.js';
7
- const execAsync = util.promisify(exec);
8
- /**
9
- * Meta-Agent Tool: Delegates highly complex engineering tasks to the Claude Code CLI.
10
- * Assumes Claude CLI is already authenticated and installed globally or via npx.
11
- */
12
- export const delegateToClaudeTool = tool({
13
- description: 'Invoke the advanced Claude Code engineering agent for complex, multi-step codebase refactorings. Pass the exact requirement as the prompt.',
14
- inputSchema: z.object({
15
- prompt: z.string().describe('The complex refactoring task or prompt to delegate.'),
16
- working_directory: z.string().describe('The absolute path to the workspace directory.')
17
- }),
18
- execute: async (args) => {
19
- const { prompt, working_directory } = args;
20
- logger.info({ prompt, workingDirectory: working_directory }, 'Delegating task to Claude Code CLI tool');
21
- try {
22
- // Sanitize prompt for shell execution
23
- const sanitizedPrompt = prompt.replace(/"/g, '\\"');
24
- // We run `npx @anthropic-ai/claude` assuming it is installed in the environment
25
- const { stdout, stderr } = await execAsync(`npx @anthropic-ai/claude -p "${sanitizedPrompt}"`, {
26
- cwd: working_directory,
27
- // Inherit environment to ensure git/npm/node commands inside work, but we can also set NO_INTERACTIVE flags if applicable.
28
- env: withRuntimeSpaceEnv(process.env)
29
- });
30
- logger.info('Claude Code delegation completed successfully');
31
- return {
32
- success: true,
33
- summary: "Task executed successfully via Claude Code.",
34
- output: stdout,
35
- warnings: stderr
36
- };
37
- }
38
- catch (error) {
39
- logger.error({ err: error.message }, 'Claude Code CLI delegation failed');
40
- return {
41
- success: false,
42
- error: error.message,
43
- stdout: error.stdout,
44
- stderr: error.stderr
45
- };
46
- }
47
- }
48
- });
49
- //# sourceMappingURL=claude_code.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude_code.js","sourceRoot":"","sources":["../../src/skills/claude_code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAEvC;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;IACvC,WAAW,EAAE,4IAA4I;IACzJ,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;QACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;QAClF,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;KACxF,CAAC;IACF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,EAAE,yCAAyC,CAAC,CAAC;QACxG,IAAI,CAAC;YACH,sCAAsC;YACtC,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAEpD,gFAAgF;YAChF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,gCAAgC,eAAe,GAAG,EAAE;gBAC7F,GAAG,EAAE,iBAAiB;gBACtB,2HAA2H;gBAC3H,GAAG,EAAE,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC;aACtC,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;YAE7D,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,6CAA6C;gBACtD,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,MAAM;aACjB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,mCAAmC,CAAC,CAAC;YAC1E,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,CAAC,OAAO;gBACpB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,MAAM,EAAE,KAAK,CAAC,MAAM;aACrB,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}