@soleri/cli 9.10.0 → 9.12.1
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.
- package/README.md +44 -15
- package/dist/commands/agent.js +11 -7
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/create.js +11 -2
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/dev.js +11 -9
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/dream.d.ts +10 -0
- package/dist/commands/dream.js +151 -0
- package/dist/commands/dream.js.map +1 -0
- package/dist/commands/uninstall.js +161 -3
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/main.js +2 -0
- package/dist/main.js.map +1 -1
- package/dist/utils/agent-artifacts.d.ts +63 -0
- package/dist/utils/agent-artifacts.js +276 -0
- package/dist/utils/agent-artifacts.js.map +1 -0
- package/package.json +1 -1
- package/src/__tests__/dream.test.ts +119 -0
- package/src/__tests__/uninstall-full.test.ts +566 -0
- package/src/commands/agent.ts +14 -10
- package/src/commands/create.ts +10 -2
- package/src/commands/dev.ts +19 -9
- package/src/commands/dream.ts +174 -0
- package/src/commands/uninstall.ts +214 -31
- package/src/main.ts +2 -0
- package/src/utils/agent-artifacts.ts +366 -0
|
@@ -3,6 +3,8 @@ import { join, resolve } from 'node:path';
|
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import * as p from '@clack/prompts';
|
|
5
5
|
import { detectAgent } from '../utils/agent-context.js';
|
|
6
|
+
import { detectArtifacts, removeDirectory, removeClaudeMdBlock, removePermissionEntries, removeLauncherScript, } from '../utils/agent-artifacts.js';
|
|
7
|
+
import { pass, fail, warn, skip, heading, dim } from '../utils/logger.js';
|
|
6
8
|
function uninstallClaude(agentId) {
|
|
7
9
|
const configPath = join(homedir(), '.claude.json');
|
|
8
10
|
if (!existsSync(configPath)) {
|
|
@@ -70,12 +72,161 @@ function uninstallOpencode(agentId) {
|
|
|
70
72
|
function escapeRegExp(s) {
|
|
71
73
|
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
72
74
|
}
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
// Full uninstall helpers
|
|
77
|
+
// ---------------------------------------------------------------------------
|
|
78
|
+
function countArtifacts(manifest) {
|
|
79
|
+
let count = 0;
|
|
80
|
+
if (manifest.projectDir?.exists)
|
|
81
|
+
count++;
|
|
82
|
+
if (manifest.dataDir?.exists)
|
|
83
|
+
count++;
|
|
84
|
+
if (manifest.dataDirLegacy?.exists)
|
|
85
|
+
count++;
|
|
86
|
+
count += manifest.claudeMdBlocks.length;
|
|
87
|
+
count += manifest.mcpServerEntries.length;
|
|
88
|
+
if (manifest.permissionEntries.length > 0)
|
|
89
|
+
count++;
|
|
90
|
+
if (manifest.launcherScript?.exists)
|
|
91
|
+
count++;
|
|
92
|
+
return count;
|
|
93
|
+
}
|
|
94
|
+
function displayManifest(manifest) {
|
|
95
|
+
heading(`Artifacts for "${manifest.agentId}"`);
|
|
96
|
+
const show = (label, loc) => {
|
|
97
|
+
if (loc?.exists)
|
|
98
|
+
warn(label, loc.path);
|
|
99
|
+
else
|
|
100
|
+
dim(`${label} — not found`);
|
|
101
|
+
};
|
|
102
|
+
show('Project directory', manifest.projectDir);
|
|
103
|
+
show('Data directory', manifest.dataDir);
|
|
104
|
+
show('Data directory (legacy)', manifest.dataDirLegacy);
|
|
105
|
+
show('Launcher script', manifest.launcherScript);
|
|
106
|
+
if (manifest.claudeMdBlocks.length > 0) {
|
|
107
|
+
for (const block of manifest.claudeMdBlocks) {
|
|
108
|
+
warn('CLAUDE.md block', `${block.path} (lines ${block.startLine}-${block.endLine})`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
dim('CLAUDE.md blocks — none found');
|
|
113
|
+
}
|
|
114
|
+
if (manifest.mcpServerEntries.length > 0) {
|
|
115
|
+
for (const entry of manifest.mcpServerEntries) {
|
|
116
|
+
warn(`MCP server (${entry.target})`, `${entry.file} → ${entry.key}`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
dim('MCP server entries — none found');
|
|
121
|
+
}
|
|
122
|
+
if (manifest.permissionEntries.length > 0) {
|
|
123
|
+
for (const pe of manifest.permissionEntries) {
|
|
124
|
+
warn(`Permissions (${pe.matches.length} entries)`, pe.file);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
dim('Permission entries — none found');
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
function reportResult(label, result) {
|
|
132
|
+
if (result.removed)
|
|
133
|
+
pass(label, result.path);
|
|
134
|
+
else if (result.error)
|
|
135
|
+
fail(label, result.error);
|
|
136
|
+
else
|
|
137
|
+
skip(label, result.path);
|
|
138
|
+
}
|
|
139
|
+
async function fullUninstall(agentId, agentDir, target, dryRun, force) {
|
|
140
|
+
const manifest = detectArtifacts(agentId, agentDir);
|
|
141
|
+
const total = countArtifacts(manifest);
|
|
142
|
+
displayManifest(manifest);
|
|
143
|
+
if (total === 0) {
|
|
144
|
+
p.log.info('Nothing to remove.');
|
|
145
|
+
process.exit(2);
|
|
146
|
+
}
|
|
147
|
+
console.log(`\n Found ${total} artifact(s) to remove.\n`);
|
|
148
|
+
if (dryRun) {
|
|
149
|
+
p.log.info('Dry run — no changes made.');
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
if (!force) {
|
|
153
|
+
const confirmed = await p.confirm({
|
|
154
|
+
message: `Remove all artifacts for "${agentId}"? This cannot be undone.`,
|
|
155
|
+
});
|
|
156
|
+
if (p.isCancel(confirmed) || !confirmed) {
|
|
157
|
+
p.log.info('Cancelled.');
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
let removed = 0;
|
|
162
|
+
heading('Removing artifacts');
|
|
163
|
+
// 1. MCP server entries (existing logic)
|
|
164
|
+
if (target === 'claude' || target === 'both' || target === 'all') {
|
|
165
|
+
uninstallClaude(agentId);
|
|
166
|
+
}
|
|
167
|
+
if (target === 'codex' || target === 'both' || target === 'all') {
|
|
168
|
+
uninstallCodex(agentId);
|
|
169
|
+
}
|
|
170
|
+
if (target === 'opencode' || target === 'all') {
|
|
171
|
+
uninstallOpencode(agentId);
|
|
172
|
+
}
|
|
173
|
+
removed += manifest.mcpServerEntries.length;
|
|
174
|
+
// 2. Permission entries
|
|
175
|
+
for (const pe of manifest.permissionEntries) {
|
|
176
|
+
const result = await removePermissionEntries(pe.file, agentId);
|
|
177
|
+
reportResult(`Permissions (${pe.matches.length} entries)`, result);
|
|
178
|
+
if (result.removed)
|
|
179
|
+
removed++;
|
|
180
|
+
}
|
|
181
|
+
// 3. CLAUDE.md blocks (reverse order to preserve line numbers)
|
|
182
|
+
const sortedBlocks = [...manifest.claudeMdBlocks].sort((a, b) => b.startLine - a.startLine);
|
|
183
|
+
for (const block of sortedBlocks) {
|
|
184
|
+
const result = await removeClaudeMdBlock(block.path, block.startLine, block.endLine);
|
|
185
|
+
reportResult('CLAUDE.md block', result);
|
|
186
|
+
if (result.removed)
|
|
187
|
+
removed++;
|
|
188
|
+
}
|
|
189
|
+
// 4. Launcher script
|
|
190
|
+
if (manifest.launcherScript?.exists) {
|
|
191
|
+
const result = await removeLauncherScript(manifest.launcherScript.path);
|
|
192
|
+
reportResult('Launcher script', result);
|
|
193
|
+
if (result.removed)
|
|
194
|
+
removed++;
|
|
195
|
+
}
|
|
196
|
+
// 5. Data directories
|
|
197
|
+
if (manifest.dataDir?.exists) {
|
|
198
|
+
const result = await removeDirectory(manifest.dataDir.path);
|
|
199
|
+
reportResult('Data directory', result);
|
|
200
|
+
if (result.removed)
|
|
201
|
+
removed++;
|
|
202
|
+
}
|
|
203
|
+
if (manifest.dataDirLegacy?.exists) {
|
|
204
|
+
const result = await removeDirectory(manifest.dataDirLegacy.path);
|
|
205
|
+
reportResult('Data directory (legacy)', result);
|
|
206
|
+
if (result.removed)
|
|
207
|
+
removed++;
|
|
208
|
+
}
|
|
209
|
+
// 6. Project directory (last — most destructive)
|
|
210
|
+
if (manifest.projectDir?.exists) {
|
|
211
|
+
const result = await removeDirectory(manifest.projectDir.path);
|
|
212
|
+
reportResult('Project directory', result);
|
|
213
|
+
if (result.removed)
|
|
214
|
+
removed++;
|
|
215
|
+
}
|
|
216
|
+
console.log(`\n Removed ${removed}/${total} artifacts for "${agentId}".\n`);
|
|
217
|
+
}
|
|
218
|
+
// ---------------------------------------------------------------------------
|
|
219
|
+
// Command registration
|
|
220
|
+
// ---------------------------------------------------------------------------
|
|
73
221
|
export function registerUninstall(program) {
|
|
74
222
|
program
|
|
75
223
|
.command('uninstall')
|
|
76
224
|
.argument('[dir]', 'Agent directory (defaults to cwd)')
|
|
77
|
-
.option('--target <target>', 'Registration target: opencode, claude, codex, or all'
|
|
78
|
-
.
|
|
225
|
+
.option('--target <target>', 'Registration target: opencode, claude, codex, or all')
|
|
226
|
+
.option('--full', 'Remove all agent artifacts (project, data, configs, permissions, launcher)')
|
|
227
|
+
.option('--dry-run', 'Show what would be removed without making changes')
|
|
228
|
+
.option('--force', 'Skip confirmation prompt')
|
|
229
|
+
.description('Remove agent MCP server entries (or all artifacts with --full)')
|
|
79
230
|
.action(async (dir, opts) => {
|
|
80
231
|
const resolvedDir = dir ? resolve(dir) : undefined;
|
|
81
232
|
const ctx = detectAgent(resolvedDir);
|
|
@@ -83,12 +234,19 @@ export function registerUninstall(program) {
|
|
|
83
234
|
p.log.error('Not in an agent project. Run from an agent directory or pass its path.');
|
|
84
235
|
process.exit(1);
|
|
85
236
|
}
|
|
86
|
-
|
|
237
|
+
// Default: 'all' when --full, 'opencode' otherwise
|
|
238
|
+
const defaultTarget = opts?.full ? 'all' : 'opencode';
|
|
239
|
+
const target = (opts?.target ?? defaultTarget);
|
|
87
240
|
const validTargets = ['claude', 'codex', 'opencode', 'both', 'all'];
|
|
88
241
|
if (!validTargets.includes(target)) {
|
|
89
242
|
p.log.error(`Invalid target "${target}". Use: ${validTargets.join(', ')}`);
|
|
90
243
|
process.exit(1);
|
|
91
244
|
}
|
|
245
|
+
if (opts?.full) {
|
|
246
|
+
await fullUninstall(ctx.agentId, resolvedDir, target, !!opts.dryRun, !!opts.force);
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
// Default: MCP-only removal (backward compatible)
|
|
92
250
|
if (target === 'claude' || target === 'both' || target === 'all') {
|
|
93
251
|
uninstallClaude(ctx.agentId);
|
|
94
252
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"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"}
|
package/dist/main.js
CHANGED
|
@@ -27,6 +27,7 @@ import { registerTelegram } from './commands/telegram.js';
|
|
|
27
27
|
import { registerStaging } from './commands/staging.js';
|
|
28
28
|
import { registerVault } from './commands/vault.js';
|
|
29
29
|
import { registerYolo } from './commands/yolo.js';
|
|
30
|
+
import { registerDream } from './commands/dream.js';
|
|
30
31
|
const require = createRequire(import.meta.url);
|
|
31
32
|
const { version } = require('../package.json');
|
|
32
33
|
const RESET = '\x1b[0m';
|
|
@@ -84,5 +85,6 @@ registerTelegram(program);
|
|
|
84
85
|
registerStaging(program);
|
|
85
86
|
registerVault(program);
|
|
86
87
|
registerYolo(program);
|
|
88
|
+
registerDream(program);
|
|
87
89
|
program.parse();
|
|
88
90
|
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAEA,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC7D,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;IACf,OAAO,CAAC,KAAK,CACX,yDAAyD,OAAO,CAAC,QAAQ,CAAC,IAAI,sCAAsC,CACrH,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export interface ArtifactLocation {
|
|
2
|
+
path: string;
|
|
3
|
+
exists: boolean;
|
|
4
|
+
}
|
|
5
|
+
export interface ClaudeMdBlock {
|
|
6
|
+
path: string;
|
|
7
|
+
startLine: number;
|
|
8
|
+
endLine: number;
|
|
9
|
+
startMarker: string;
|
|
10
|
+
endMarker: string;
|
|
11
|
+
}
|
|
12
|
+
export interface McpServerEntry {
|
|
13
|
+
file: string;
|
|
14
|
+
key: string;
|
|
15
|
+
target: 'claude' | 'codex' | 'opencode';
|
|
16
|
+
}
|
|
17
|
+
export interface PermissionEntry {
|
|
18
|
+
file: string;
|
|
19
|
+
pattern: string;
|
|
20
|
+
matches: string[];
|
|
21
|
+
}
|
|
22
|
+
export interface ArtifactManifest {
|
|
23
|
+
agentId: string;
|
|
24
|
+
projectDir: ArtifactLocation | null;
|
|
25
|
+
dataDir: ArtifactLocation | null;
|
|
26
|
+
dataDirLegacy: ArtifactLocation | null;
|
|
27
|
+
claudeMdBlocks: ClaudeMdBlock[];
|
|
28
|
+
mcpServerEntries: McpServerEntry[];
|
|
29
|
+
permissionEntries: PermissionEntry[];
|
|
30
|
+
launcherScript: ArtifactLocation | null;
|
|
31
|
+
}
|
|
32
|
+
export interface RemovalResult {
|
|
33
|
+
removed: boolean;
|
|
34
|
+
path: string;
|
|
35
|
+
error?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Detect all artifacts installed by a Soleri agent.
|
|
39
|
+
* Non-destructive — reads the filesystem but never modifies it.
|
|
40
|
+
*/
|
|
41
|
+
export declare function detectArtifacts(agentId: string, agentDir?: string): ArtifactManifest;
|
|
42
|
+
/**
|
|
43
|
+
* Remove a directory recursively.
|
|
44
|
+
* Idempotent — returns { removed: false } if the directory doesn't exist.
|
|
45
|
+
*/
|
|
46
|
+
export declare function removeDirectory(dirPath: string): Promise<RemovalResult>;
|
|
47
|
+
/**
|
|
48
|
+
* Remove a CLAUDE.md block by line range (1-based, inclusive).
|
|
49
|
+
* Collapses triple+ blank lines down to at most two consecutive newlines.
|
|
50
|
+
* Idempotent — returns { removed: false } if the file doesn't exist.
|
|
51
|
+
*/
|
|
52
|
+
export declare function removeClaudeMdBlock(filePath: string, startLine: number, endLine: number): Promise<RemovalResult>;
|
|
53
|
+
/**
|
|
54
|
+
* Remove permission entries for an agent from settings.local.json.
|
|
55
|
+
* Filters out entries from permissions.allow that start with `mcp__<agentId>__`.
|
|
56
|
+
* Idempotent — returns { removed: false } if the file doesn't exist or has no matches.
|
|
57
|
+
*/
|
|
58
|
+
export declare function removePermissionEntries(filePath: string, agentId: string): Promise<RemovalResult>;
|
|
59
|
+
/**
|
|
60
|
+
* Remove a launcher script (e.g. /usr/local/bin/<agentId>).
|
|
61
|
+
* Idempotent — returns { removed: false } if the file doesn't exist.
|
|
62
|
+
*/
|
|
63
|
+
export declare function removeLauncherScript(scriptPath: string): Promise<RemovalResult>;
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect all artifacts left by an installed Soleri agent.
|
|
3
|
+
* Read-only — never modifies the filesystem.
|
|
4
|
+
*/
|
|
5
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
6
|
+
import { rm, readFile, writeFile, unlink } from 'node:fs/promises';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
import { homedir } from 'node:os';
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// Helpers
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
const SOLERI_HOME = process.env.SOLERI_HOME ?? join(homedir(), '.soleri');
|
|
13
|
+
function escapeRegExp(s) {
|
|
14
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
15
|
+
}
|
|
16
|
+
function location(p) {
|
|
17
|
+
return { path: p, exists: existsSync(p) };
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Read a file safely — returns null if the file doesn't exist or can't be read.
|
|
21
|
+
*/
|
|
22
|
+
function safeRead(filePath) {
|
|
23
|
+
try {
|
|
24
|
+
if (!existsSync(filePath))
|
|
25
|
+
return null;
|
|
26
|
+
return readFileSync(filePath, 'utf-8');
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Parse a JSON file safely, optionally stripping single-line comments first.
|
|
34
|
+
*/
|
|
35
|
+
function safeParseJson(filePath, stripComments = false) {
|
|
36
|
+
const raw = safeRead(filePath);
|
|
37
|
+
if (raw === null)
|
|
38
|
+
return null;
|
|
39
|
+
try {
|
|
40
|
+
const content = stripComments ? raw.replace(/^\s*\/\/.*$/gm, '') : raw;
|
|
41
|
+
return JSON.parse(content);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
48
|
+
// Detection: CLAUDE.md blocks
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
function detectClaudeMdBlocks(agentId) {
|
|
51
|
+
const home = homedir();
|
|
52
|
+
const paths = [join(home, 'CLAUDE.md'), join(home, '.claude', 'CLAUDE.md')];
|
|
53
|
+
const startMarker = `<!-- agent:${agentId}:mode -->`;
|
|
54
|
+
const endMarker = `<!-- /agent:${agentId}:mode -->`;
|
|
55
|
+
const blocks = [];
|
|
56
|
+
for (const filePath of paths) {
|
|
57
|
+
const content = safeRead(filePath);
|
|
58
|
+
if (content === null)
|
|
59
|
+
continue;
|
|
60
|
+
const lines = content.split('\n');
|
|
61
|
+
let startLine = null;
|
|
62
|
+
for (let i = 0; i < lines.length; i++) {
|
|
63
|
+
const trimmed = lines[i].trim();
|
|
64
|
+
if (trimmed === startMarker) {
|
|
65
|
+
startLine = i + 1; // 1-based
|
|
66
|
+
}
|
|
67
|
+
else if (trimmed === endMarker && startLine !== null) {
|
|
68
|
+
blocks.push({
|
|
69
|
+
path: filePath,
|
|
70
|
+
startLine,
|
|
71
|
+
endLine: i + 1, // 1-based
|
|
72
|
+
startMarker,
|
|
73
|
+
endMarker,
|
|
74
|
+
});
|
|
75
|
+
startLine = null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return blocks;
|
|
80
|
+
}
|
|
81
|
+
// ---------------------------------------------------------------------------
|
|
82
|
+
// Detection: MCP server entries
|
|
83
|
+
// ---------------------------------------------------------------------------
|
|
84
|
+
function detectMcpServerEntries(agentId) {
|
|
85
|
+
const home = homedir();
|
|
86
|
+
const entries = [];
|
|
87
|
+
const escapedId = escapeRegExp(agentId);
|
|
88
|
+
// Claude: ~/.claude.json → mcpServers.<key>
|
|
89
|
+
const claudeConfigPath = join(home, '.claude.json');
|
|
90
|
+
const claudeConfig = safeParseJson(claudeConfigPath);
|
|
91
|
+
if (claudeConfig) {
|
|
92
|
+
const servers = claudeConfig.mcpServers;
|
|
93
|
+
if (servers && typeof servers === 'object') {
|
|
94
|
+
for (const key of Object.keys(servers)) {
|
|
95
|
+
if (key.includes(agentId)) {
|
|
96
|
+
entries.push({ file: claudeConfigPath, key, target: 'claude' });
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Codex: ~/.codex/config.toml → [mcp_servers.<agentId>]
|
|
102
|
+
const codexConfigPath = join(home, '.codex', 'config.toml');
|
|
103
|
+
const codexContent = safeRead(codexConfigPath);
|
|
104
|
+
if (codexContent !== null) {
|
|
105
|
+
const sectionRegex = new RegExp(`\\[mcp_servers\\.${escapedId}\\]`);
|
|
106
|
+
if (sectionRegex.test(codexContent)) {
|
|
107
|
+
entries.push({ file: codexConfigPath, key: agentId, target: 'codex' });
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// OpenCode: ~/.config/opencode/opencode.json → mcp.<key>
|
|
111
|
+
const opencodeConfigPath = join(home, '.config', 'opencode', 'opencode.json');
|
|
112
|
+
const opencodeConfig = safeParseJson(opencodeConfigPath, true);
|
|
113
|
+
if (opencodeConfig) {
|
|
114
|
+
const servers = opencodeConfig.mcp;
|
|
115
|
+
if (servers && typeof servers === 'object') {
|
|
116
|
+
for (const key of Object.keys(servers)) {
|
|
117
|
+
if (key.includes(agentId)) {
|
|
118
|
+
entries.push({ file: opencodeConfigPath, key, target: 'opencode' });
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return entries;
|
|
124
|
+
}
|
|
125
|
+
// ---------------------------------------------------------------------------
|
|
126
|
+
// Detection: Permission entries
|
|
127
|
+
// ---------------------------------------------------------------------------
|
|
128
|
+
function detectPermissionEntries(agentId) {
|
|
129
|
+
const home = homedir();
|
|
130
|
+
const settingsPath = join(home, '.claude', 'settings.local.json');
|
|
131
|
+
const config = safeParseJson(settingsPath);
|
|
132
|
+
if (!config)
|
|
133
|
+
return [];
|
|
134
|
+
const permissions = config.permissions;
|
|
135
|
+
if (!permissions || typeof permissions !== 'object')
|
|
136
|
+
return [];
|
|
137
|
+
const allowList = permissions.allow;
|
|
138
|
+
if (!Array.isArray(allowList))
|
|
139
|
+
return [];
|
|
140
|
+
const prefix = `mcp__${agentId}__`;
|
|
141
|
+
const matches = allowList.filter((entry) => typeof entry === 'string' && entry.startsWith(prefix));
|
|
142
|
+
if (matches.length === 0)
|
|
143
|
+
return [];
|
|
144
|
+
return [{ file: settingsPath, pattern: prefix, matches }];
|
|
145
|
+
}
|
|
146
|
+
// ---------------------------------------------------------------------------
|
|
147
|
+
// Main entry point
|
|
148
|
+
// ---------------------------------------------------------------------------
|
|
149
|
+
/**
|
|
150
|
+
* Detect all artifacts installed by a Soleri agent.
|
|
151
|
+
* Non-destructive — reads the filesystem but never modifies it.
|
|
152
|
+
*/
|
|
153
|
+
export function detectArtifacts(agentId, agentDir) {
|
|
154
|
+
const home = homedir();
|
|
155
|
+
// Project directory
|
|
156
|
+
const projectPath = agentDir ?? join(home, 'projects', agentId);
|
|
157
|
+
const projectDir = location(projectPath);
|
|
158
|
+
// Data directory (current): ~/.soleri/<agentId>/
|
|
159
|
+
const dataDir = location(join(SOLERI_HOME, agentId));
|
|
160
|
+
// Data directory (legacy): ~/.<agentId>/
|
|
161
|
+
const dataDirLegacy = location(join(home, `.${agentId}`));
|
|
162
|
+
// Launcher script: /usr/local/bin/<agentId>
|
|
163
|
+
const launcherScript = location(join('/usr/local/bin', agentId));
|
|
164
|
+
return {
|
|
165
|
+
agentId,
|
|
166
|
+
projectDir,
|
|
167
|
+
dataDir,
|
|
168
|
+
dataDirLegacy,
|
|
169
|
+
claudeMdBlocks: detectClaudeMdBlocks(agentId),
|
|
170
|
+
mcpServerEntries: detectMcpServerEntries(agentId),
|
|
171
|
+
permissionEntries: detectPermissionEntries(agentId),
|
|
172
|
+
launcherScript,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
// ---------------------------------------------------------------------------
|
|
176
|
+
// Removal handlers
|
|
177
|
+
// ---------------------------------------------------------------------------
|
|
178
|
+
/**
|
|
179
|
+
* Remove a directory recursively.
|
|
180
|
+
* Idempotent — returns { removed: false } if the directory doesn't exist.
|
|
181
|
+
*/
|
|
182
|
+
export async function removeDirectory(dirPath) {
|
|
183
|
+
try {
|
|
184
|
+
if (!existsSync(dirPath)) {
|
|
185
|
+
return { removed: false, path: dirPath };
|
|
186
|
+
}
|
|
187
|
+
await rm(dirPath, { recursive: true, force: true });
|
|
188
|
+
return { removed: true, path: dirPath };
|
|
189
|
+
}
|
|
190
|
+
catch (err) {
|
|
191
|
+
return { removed: false, path: dirPath, error: err.message };
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Remove a CLAUDE.md block by line range (1-based, inclusive).
|
|
196
|
+
* Collapses triple+ blank lines down to at most two consecutive newlines.
|
|
197
|
+
* Idempotent — returns { removed: false } if the file doesn't exist.
|
|
198
|
+
*/
|
|
199
|
+
export async function removeClaudeMdBlock(filePath, startLine, endLine) {
|
|
200
|
+
try {
|
|
201
|
+
if (!existsSync(filePath)) {
|
|
202
|
+
return { removed: false, path: filePath };
|
|
203
|
+
}
|
|
204
|
+
const content = await readFile(filePath, 'utf-8');
|
|
205
|
+
const lines = content.split('\n');
|
|
206
|
+
// Remove lines from startLine to endLine (1-based, inclusive)
|
|
207
|
+
lines.splice(startLine - 1, endLine - startLine + 1);
|
|
208
|
+
// Collapse triple+ blank lines to max 2 consecutive newlines
|
|
209
|
+
const result = lines.join('\n').replace(/\n{3,}/g, '\n\n');
|
|
210
|
+
await writeFile(filePath, result, 'utf-8');
|
|
211
|
+
return { removed: true, path: filePath };
|
|
212
|
+
}
|
|
213
|
+
catch (err) {
|
|
214
|
+
return { removed: false, path: filePath, error: err.message };
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Remove permission entries for an agent from settings.local.json.
|
|
219
|
+
* Filters out entries from permissions.allow that start with `mcp__<agentId>__`.
|
|
220
|
+
* Idempotent — returns { removed: false } if the file doesn't exist or has no matches.
|
|
221
|
+
*/
|
|
222
|
+
export async function removePermissionEntries(filePath, agentId) {
|
|
223
|
+
try {
|
|
224
|
+
if (!existsSync(filePath)) {
|
|
225
|
+
return { removed: false, path: filePath };
|
|
226
|
+
}
|
|
227
|
+
const raw = await readFile(filePath, 'utf-8');
|
|
228
|
+
let config;
|
|
229
|
+
try {
|
|
230
|
+
config = JSON.parse(raw);
|
|
231
|
+
}
|
|
232
|
+
catch {
|
|
233
|
+
return { removed: false, path: filePath, error: 'Failed to parse JSON' };
|
|
234
|
+
}
|
|
235
|
+
const permissions = config.permissions;
|
|
236
|
+
if (!permissions || typeof permissions !== 'object') {
|
|
237
|
+
return { removed: false, path: filePath };
|
|
238
|
+
}
|
|
239
|
+
const allowList = permissions.allow;
|
|
240
|
+
if (!Array.isArray(allowList)) {
|
|
241
|
+
return { removed: false, path: filePath };
|
|
242
|
+
}
|
|
243
|
+
const prefix = `mcp__${agentId}__`;
|
|
244
|
+
const filtered = allowList.filter((entry) => !(typeof entry === 'string' && entry.startsWith(prefix)));
|
|
245
|
+
if (filtered.length === allowList.length) {
|
|
246
|
+
return { removed: false, path: filePath };
|
|
247
|
+
}
|
|
248
|
+
permissions.allow = filtered;
|
|
249
|
+
await writeFile(filePath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
250
|
+
return { removed: true, path: filePath };
|
|
251
|
+
}
|
|
252
|
+
catch (err) {
|
|
253
|
+
return { removed: false, path: filePath, error: err.message };
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Remove a launcher script (e.g. /usr/local/bin/<agentId>).
|
|
258
|
+
* Idempotent — returns { removed: false } if the file doesn't exist.
|
|
259
|
+
*/
|
|
260
|
+
export async function removeLauncherScript(scriptPath) {
|
|
261
|
+
try {
|
|
262
|
+
if (!existsSync(scriptPath)) {
|
|
263
|
+
return { removed: false, path: scriptPath };
|
|
264
|
+
}
|
|
265
|
+
await unlink(scriptPath);
|
|
266
|
+
return { removed: true, path: scriptPath };
|
|
267
|
+
}
|
|
268
|
+
catch (err) {
|
|
269
|
+
const code = err.code;
|
|
270
|
+
const message = code === 'EACCES'
|
|
271
|
+
? `Permission denied — you may need sudo to remove ${scriptPath}`
|
|
272
|
+
: err.message;
|
|
273
|
+
return { removed: false, path: scriptPath, error: message };
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
//# sourceMappingURL=agent-artifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-artifacts.js","sourceRoot":"","sources":["../../src/utils/agent-artifacts.ts"],"names":[],"mappings":"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"}
|