@bookedsolid/reagent 0.12.2 → 0.13.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.
- package/README.md +373 -943
- package/dist/cli/commands/init/index.d.ts.map +1 -1
- package/dist/cli/commands/init/index.js +45 -35
- package/dist/cli/commands/init/index.js.map +1 -1
- package/dist/cli/commands/init/mcp-config.d.ts +11 -0
- package/dist/cli/commands/init/mcp-config.d.ts.map +1 -0
- package/dist/cli/commands/init/mcp-config.js +64 -0
- package/dist/cli/commands/init/mcp-config.js.map +1 -0
- package/dist/cli/commands/init/policy.d.ts +1 -1
- package/dist/cli/commands/init/policy.d.ts.map +1 -1
- package/dist/cli/commands/init/policy.js +2 -2
- package/dist/cli/commands/init/policy.js.map +1 -1
- package/dist/cli/index.js +2 -11
- package/dist/cli/index.js.map +1 -1
- package/hooks/_lib/common.sh +18 -0
- package/hooks/settings-protection.sh +5 -3
- package/package.json +2 -9
- package/profiles/astro/hooks/astro-ssr-guard.sh +1 -0
- package/profiles/drupal/hooks/drupal-coding-standards.sh +1 -0
- package/profiles/drupal/hooks/hook-update-guard.sh +1 -0
- package/profiles/lit-wc/hooks/cem-integrity-gate.sh +1 -0
- package/profiles/lit-wc/hooks/shadow-dom-guard.sh +1 -0
- package/profiles/nextjs/hooks/server-component-drift.sh +1 -0
- package/dist/cli/commands/daemon/eject.d.ts +0 -13
- package/dist/cli/commands/daemon/eject.d.ts.map +0 -1
- package/dist/cli/commands/daemon/eject.js +0 -74
- package/dist/cli/commands/daemon/eject.js.map +0 -1
- package/dist/cli/commands/daemon/index.d.ts +0 -5
- package/dist/cli/commands/daemon/index.d.ts.map +0 -1
- package/dist/cli/commands/daemon/index.js +0 -64
- package/dist/cli/commands/daemon/index.js.map +0 -1
- package/dist/cli/commands/daemon/restart.d.ts +0 -10
- package/dist/cli/commands/daemon/restart.d.ts.map +0 -1
- package/dist/cli/commands/daemon/restart.js +0 -20
- package/dist/cli/commands/daemon/restart.js.map +0 -1
- package/dist/cli/commands/daemon/start.d.ts +0 -2
- package/dist/cli/commands/daemon/start.d.ts.map +0 -1
- package/dist/cli/commands/daemon/start.js +0 -143
- package/dist/cli/commands/daemon/start.js.map +0 -1
- package/dist/cli/commands/daemon/status.d.ts +0 -2
- package/dist/cli/commands/daemon/status.d.ts.map +0 -1
- package/dist/cli/commands/daemon/status.js +0 -90
- package/dist/cli/commands/daemon/status.js.map +0 -1
- package/dist/cli/commands/daemon/stop.d.ts +0 -2
- package/dist/cli/commands/daemon/stop.d.ts.map +0 -1
- package/dist/cli/commands/daemon/stop.js +0 -73
- package/dist/cli/commands/daemon/stop.js.map +0 -1
- package/dist/config/daemon-loader.d.ts +0 -16
- package/dist/config/daemon-loader.d.ts.map +0 -1
- package/dist/config/daemon-loader.js +0 -76
- package/dist/config/daemon-loader.js.map +0 -1
- package/dist/types/daemon.d.ts +0 -45
- package/dist/types/daemon.d.ts.map +0 -1
- package/dist/types/daemon.js +0 -2
- package/dist/types/daemon.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init/index.ts"],"names":[],"mappings":"AAmBA,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAoL5C"}
|
|
@@ -8,6 +8,7 @@ import { installClaudeHooks } from './claude-hooks.js';
|
|
|
8
8
|
import { installClaudeMd } from './claude-md.js';
|
|
9
9
|
import { installPolicy } from './policy.js';
|
|
10
10
|
import { installGatewayConfig, checkMcpDuplicates } from './gateway-config.js';
|
|
11
|
+
import { installMcpJson } from './mcp-config.js';
|
|
11
12
|
import { installAgents } from './agents.js';
|
|
12
13
|
import { installClaudeCommands } from './commands.js';
|
|
13
14
|
import { installPm } from './pm.js';
|
|
@@ -21,12 +22,6 @@ export function runInit(args) {
|
|
|
21
22
|
const withGitHub = args.includes('--github');
|
|
22
23
|
const withDiscord = args.includes('--discord');
|
|
23
24
|
const PKG_VERSION = getPkgVersion();
|
|
24
|
-
console.log(`\n@bookedsolid/reagent v${PKG_VERSION} init`);
|
|
25
|
-
console.log(` Profile: ${profileName}`);
|
|
26
|
-
console.log(` Target: ${targetDir}`);
|
|
27
|
-
if (dryRun)
|
|
28
|
-
console.log(` Mode: dry-run (no changes written)`);
|
|
29
|
-
console.log('');
|
|
30
25
|
// Validate profile name format
|
|
31
26
|
if (!/^[a-z0-9][a-z0-9-]*$/.test(profileName)) {
|
|
32
27
|
console.error(`Invalid profile name: "${profileName}" (only lowercase letters, numbers, hyphens allowed)`);
|
|
@@ -35,34 +30,26 @@ export function runInit(args) {
|
|
|
35
30
|
const profilesDir = path.join(PKG_ROOT, 'profiles');
|
|
36
31
|
const techProfiles = listTechProfiles();
|
|
37
32
|
const isTechProfile = techProfiles.includes(profileName);
|
|
38
|
-
//
|
|
33
|
+
// Tech profiles layer on top of a base JSON profile.
|
|
34
|
+
// --base-profile selects which base to use; defaults to client-engagement.
|
|
35
|
+
const baseProfileName = isTechProfile
|
|
36
|
+
? parseFlag(args, '--base-profile') || 'client-engagement'
|
|
37
|
+
: profileName;
|
|
38
|
+
console.log(`\n@bookedsolid/reagent v${PKG_VERSION} init`);
|
|
39
39
|
if (isTechProfile) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
if (profileResult.gatesInstalled.length > 0) {
|
|
45
|
-
console.log(`Tech profile "${profileName}" gates (add to your preflight script):`);
|
|
46
|
-
for (const gate of profileResult.gatesInstalled) {
|
|
47
|
-
console.log(` [${gate.on_failure}] ${gate.name}: ${gate.command}`);
|
|
48
|
-
}
|
|
49
|
-
console.log('');
|
|
50
|
-
}
|
|
51
|
-
// Announce recommended agents
|
|
52
|
-
if (profileResult.agentsInstalled.length > 0) {
|
|
53
|
-
console.log(`Recommended agents for "${profileName}":`);
|
|
54
|
-
for (const agent of profileResult.agentsInstalled) {
|
|
55
|
-
console.log(` - ${agent}`);
|
|
56
|
-
}
|
|
57
|
-
console.log('');
|
|
58
|
-
}
|
|
59
|
-
printSummary(results, dryRun, false);
|
|
60
|
-
return;
|
|
40
|
+
console.log(` Profile: ${baseProfileName} + ${profileName}`);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
console.log(` Profile: ${profileName}`);
|
|
61
44
|
}
|
|
45
|
+
console.log(` Target: ${targetDir}`);
|
|
46
|
+
if (dryRun)
|
|
47
|
+
console.log(` Mode: dry-run (no changes written)`);
|
|
48
|
+
console.log('');
|
|
62
49
|
// Load base JSON profile — validate path to prevent traversal
|
|
63
|
-
const profilePath = path.resolve(profilesDir, `${
|
|
50
|
+
const profilePath = path.resolve(profilesDir, `${baseProfileName}.json`);
|
|
64
51
|
if (!profilePath.startsWith(profilesDir + path.sep)) {
|
|
65
|
-
console.error(`Invalid profile name: "${
|
|
52
|
+
console.error(`Invalid profile name: "${baseProfileName}" (path traversal detected)`);
|
|
66
53
|
process.exit(1);
|
|
67
54
|
}
|
|
68
55
|
if (!fs.existsSync(profilePath)) {
|
|
@@ -70,7 +57,9 @@ export function runInit(args) {
|
|
|
70
57
|
.readdirSync(profilesDir)
|
|
71
58
|
.filter((f) => f.endsWith('.json'))
|
|
72
59
|
.map((f) => f.replace('.json', ''));
|
|
73
|
-
console.error(
|
|
60
|
+
console.error(isTechProfile
|
|
61
|
+
? `Base profile not found: ${baseProfileName} (override with --base-profile)`
|
|
62
|
+
: `Profile not found: ${baseProfileName}`);
|
|
74
63
|
console.error(`Available base profiles: ${availableJson.join(', ')}`);
|
|
75
64
|
console.error(`Available tech profiles: ${techProfiles.join(', ')}`);
|
|
76
65
|
process.exit(1);
|
|
@@ -112,10 +101,12 @@ export function runInit(args) {
|
|
|
112
101
|
results.push(...installClaudeMd(targetDir, profile.claudeMd, dryRun));
|
|
113
102
|
}
|
|
114
103
|
// Step 8: Policy
|
|
115
|
-
results.push(...installPolicy(targetDir, profileName, profile, dryRun));
|
|
116
|
-
// Step 9:
|
|
104
|
+
results.push(...installPolicy(targetDir, profileName, profile, dryRun, isTechProfile ? profileName : undefined));
|
|
105
|
+
// Step 9: MCP server config (.mcp.json — tells Claude Code how to connect to reagent serve)
|
|
106
|
+
results.push(...installMcpJson(targetDir, dryRun));
|
|
107
|
+
// Step 9a: Gateway config (.reagent/gateway.yaml — downstream servers proxied through reagent)
|
|
117
108
|
results.push(...installGatewayConfig(targetDir, dryRun));
|
|
118
|
-
// Step
|
|
109
|
+
// Step 9b: Warn about duplicate MCP server entries (skip in dry-run — files may not exist)
|
|
119
110
|
if (!dryRun) {
|
|
120
111
|
checkMcpDuplicates(targetDir);
|
|
121
112
|
}
|
|
@@ -139,6 +130,25 @@ export function runInit(args) {
|
|
|
139
130
|
const discordOpts = parseDiscordArgs(args);
|
|
140
131
|
results.push(...installDiscord(targetDir, discordOpts, dryRun));
|
|
141
132
|
}
|
|
133
|
+
// Step 15: Tech profile overlay (hooks, gates, agents) — runs after base init
|
|
134
|
+
if (isTechProfile) {
|
|
135
|
+
const profileResult = installProfile(profileName, targetDir, dryRun);
|
|
136
|
+
results.push(...profileResult.results);
|
|
137
|
+
if (profileResult.gatesInstalled.length > 0) {
|
|
138
|
+
console.log(`Tech profile "${profileName}" gates (add to your preflight script):`);
|
|
139
|
+
for (const gate of profileResult.gatesInstalled) {
|
|
140
|
+
console.log(` [${gate.on_failure}] ${gate.name}: ${gate.command}`);
|
|
141
|
+
}
|
|
142
|
+
console.log('');
|
|
143
|
+
}
|
|
144
|
+
if (profileResult.agentsInstalled.length > 0) {
|
|
145
|
+
console.log(`Recommended agents for "${profileName}":`);
|
|
146
|
+
for (const agent of profileResult.agentsInstalled) {
|
|
147
|
+
console.log(` - ${agent}`);
|
|
148
|
+
}
|
|
149
|
+
console.log('');
|
|
150
|
+
}
|
|
151
|
+
}
|
|
142
152
|
printSummary(results, dryRun, true);
|
|
143
153
|
}
|
|
144
154
|
function printSummary(results, dryRun, showCommitInstructions) {
|
|
@@ -167,7 +177,7 @@ function printSummary(results, dryRun, showCommitInstructions) {
|
|
|
167
177
|
console.log('\n✓ reagent init complete');
|
|
168
178
|
if (showCommitInstructions) {
|
|
169
179
|
console.log('\nCommit these files (safe to commit):');
|
|
170
|
-
console.log(' git add .cursor/rules/ .husky/ .claude/commands/ CLAUDE.md .reagent/policy.yaml .reagent/gateway.yaml && git commit -m "chore: add reagent zero-trust config"');
|
|
180
|
+
console.log(' git add .mcp.json .cursor/rules/ .husky/ .claude/commands/ CLAUDE.md .reagent/policy.yaml .reagent/gateway.yaml && git commit -m "chore: add reagent zero-trust config"');
|
|
171
181
|
console.log('');
|
|
172
182
|
console.log('Do NOT commit (gitignored — stays on your machine):');
|
|
173
183
|
console.log(' .claude/hooks/');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/commands/init/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhE,MAAM,UAAU,OAAO,CAAC,IAAc;IACpC,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,mBAAmB,CAAC;IACxE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,aAAa,EAAE,CAAC;IAEpC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/commands/init/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { InstallResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Write (or merge into) .mcp.json in `targetDir` with a reagent stdio entry.
|
|
4
|
+
*
|
|
5
|
+
* Idempotent:
|
|
6
|
+
* - If .mcp.json doesn't exist: creates it with the reagent entry.
|
|
7
|
+
* - If .mcp.json exists but has no `mcpServers.reagent` key: adds the entry.
|
|
8
|
+
* - If .mcp.json already has a `mcpServers.reagent` key: skips (preserves existing).
|
|
9
|
+
*/
|
|
10
|
+
export declare function installMcpJson(targetDir: string, dryRun: boolean): InstallResult[];
|
|
11
|
+
//# sourceMappingURL=mcp-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-config.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init/mcp-config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAqBhD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,aAAa,EAAE,CAyClF"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
/**
|
|
4
|
+
* The reagent MCP server entry to write into .mcp.json.
|
|
5
|
+
*
|
|
6
|
+
* Uses stdio transport so Claude Code spawns `reagent serve` directly —
|
|
7
|
+
* no daemon required, works immediately after `reagent init`.
|
|
8
|
+
*
|
|
9
|
+
* `npx reagent serve` resolves in order:
|
|
10
|
+
* 1. ./node_modules/.bin/reagent (local install)
|
|
11
|
+
* 2. PATH reagent (global install)
|
|
12
|
+
*
|
|
13
|
+
* This means the committed .mcp.json works on any machine regardless of
|
|
14
|
+
* whether reagent was installed locally or globally.
|
|
15
|
+
*/
|
|
16
|
+
const REAGENT_MCP_ENTRY = {
|
|
17
|
+
type: 'stdio',
|
|
18
|
+
command: 'npx',
|
|
19
|
+
args: ['reagent', 'serve'],
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Write (or merge into) .mcp.json in `targetDir` with a reagent stdio entry.
|
|
23
|
+
*
|
|
24
|
+
* Idempotent:
|
|
25
|
+
* - If .mcp.json doesn't exist: creates it with the reagent entry.
|
|
26
|
+
* - If .mcp.json exists but has no `mcpServers.reagent` key: adds the entry.
|
|
27
|
+
* - If .mcp.json already has a `mcpServers.reagent` key: skips (preserves existing).
|
|
28
|
+
*/
|
|
29
|
+
export function installMcpJson(targetDir, dryRun) {
|
|
30
|
+
const mcpPath = path.join(targetDir, '.mcp.json');
|
|
31
|
+
// Case 1: file exists — check if reagent already registered
|
|
32
|
+
if (fs.existsSync(mcpPath)) {
|
|
33
|
+
let existing;
|
|
34
|
+
try {
|
|
35
|
+
existing = JSON.parse(fs.readFileSync(mcpPath, 'utf8'));
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// Unparseable .mcp.json — don't overwrite; warn and bail
|
|
39
|
+
return [{ file: '.mcp.json', status: 'warn' }];
|
|
40
|
+
}
|
|
41
|
+
if (existing.mcpServers?.reagent) {
|
|
42
|
+
// Already configured — leave it alone
|
|
43
|
+
return [{ file: '.mcp.json', status: 'skipped' }];
|
|
44
|
+
}
|
|
45
|
+
// Add reagent entry to existing file
|
|
46
|
+
existing.mcpServers = existing.mcpServers ?? {};
|
|
47
|
+
existing.mcpServers.reagent = REAGENT_MCP_ENTRY;
|
|
48
|
+
if (!dryRun) {
|
|
49
|
+
fs.writeFileSync(mcpPath, JSON.stringify(existing, null, 2) + '\n');
|
|
50
|
+
}
|
|
51
|
+
return [{ file: '.mcp.json', status: 'updated' }];
|
|
52
|
+
}
|
|
53
|
+
// Case 2: file doesn't exist — create it
|
|
54
|
+
const config = {
|
|
55
|
+
mcpServers: {
|
|
56
|
+
reagent: REAGENT_MCP_ENTRY,
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
if (!dryRun) {
|
|
60
|
+
fs.writeFileSync(mcpPath, JSON.stringify(config, null, 2) + '\n');
|
|
61
|
+
}
|
|
62
|
+
return [{ file: '.mcp.json', status: 'installed' }];
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=mcp-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-config.js","sourceRoot":"","sources":["../../../../src/cli/commands/init/mcp-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B;;;;;;;;;;;;GAYG;AACH,MAAM,iBAAiB,GAAG;IACxB,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC;CAClB,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,MAAe;IAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAElD,4DAA4D;IAC5D,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,IAAI,QAAkD,CAAC;QACvD,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAErD,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,yDAAyD;YACzD,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,QAAQ,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;YACjC,sCAAsC;YACtC,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,qCAAqC;QACrC,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC;QAChD,QAAQ,CAAC,UAAU,CAAC,OAAO,GAAG,iBAAiB,CAAC;QAEhD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,yCAAyC;IACzC,MAAM,MAAM,GAAG;QACb,UAAU,EAAE;YACV,OAAO,EAAE,iBAAiB;SAC3B;KACF,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { InstallResult, ProfileConfig } from './types.js';
|
|
2
|
-
export declare function installPolicy(targetDir: string, profileName: string, profile: ProfileConfig, dryRun: boolean): InstallResult[];
|
|
2
|
+
export declare function installPolicy(targetDir: string, profileName: string, profile: ProfileConfig, dryRun: boolean, techProfile?: string): InstallResult[];
|
|
3
3
|
//# sourceMappingURL=policy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init/policy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE/D,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init/policy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE/D,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,OAAO,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,aAAa,EAAE,CAkFjB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { getPkgVersion } from '../../utils.js';
|
|
4
|
-
export function installPolicy(targetDir, profileName, profile, dryRun) {
|
|
4
|
+
export function installPolicy(targetDir, profileName, profile, dryRun, techProfile) {
|
|
5
5
|
const PKG_VERSION = getPkgVersion();
|
|
6
6
|
const reagentDir = path.join(targetDir, '.reagent');
|
|
7
7
|
const policyPath = path.join(reagentDir, 'policy.yaml');
|
|
@@ -32,7 +32,7 @@ export function installPolicy(targetDir, profileName, profile, dryRun) {
|
|
|
32
32
|
|
|
33
33
|
version: "1"
|
|
34
34
|
profile: "${profileName}"
|
|
35
|
-
installed_by: "reagent@${PKG_VERSION}"
|
|
35
|
+
${techProfile ? `tech_profile: "${techProfile}"\n` : ''}installed_by: "reagent@${PKG_VERSION}"
|
|
36
36
|
installed_at: "${now}"
|
|
37
37
|
|
|
38
38
|
# Autonomy levels:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../../src/cli/commands/init/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,MAAM,UAAU,aAAa,CAC3B,SAAiB,EACjB,WAAmB,EACnB,OAAsB,EACtB,MAAe;
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../../../src/cli/commands/init/policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,MAAM,UAAU,aAAa,CAC3B,SAAiB,EACjB,WAAmB,EACnB,OAAsB,EACtB,MAAe,EACf,WAAoB;IAEpB,MAAM,WAAW,GAAG,aAAa,EAAE,CAAC;IACpC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAExD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,KAAK,IAAI,CAAC;QAC7D,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,EAAE,cAAc,IAAI,UAAU,CAAC;QACtE,MAAM,eAAe,GAAG,OAAO,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;QAC3D,MAAM,iBAAiB,GAAG,OAAO,CAAC,QAAQ,EAAE,SAAS,IAAI,EAAE,CAAC;QAC5D,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI;YAC3C,sBAAsB;YACtB,eAAe;YACf,4BAA4B;YAC5B,oBAAoB;YACpB,MAAM;YACN,QAAQ;SACT,CAAC;QACF,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM;YAC1C,CAAC,CAAC,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACjE,CAAC,CAAC,KAAK,CAAC;QACV,MAAM,OAAO,GAAG,+DAA+D,WAAW;;;;;YAKlF,WAAW;EACrB,WAAW,CAAC,CAAC,CAAC,kBAAkB,WAAW,KAAK,CAAC,CAAC,CAAC,EAAE,0BAA0B,WAAW;iBAC3E,GAAG;;;;;;;;;;;;;;;;;;wBAkBI,gBAAgB;;;gBAGxB,gBAAgB;;;;;;;;;;;;aAYnB,eAAe;eACb,iBAAiB;;;;;;;;sBAQV,cAAc;CACnC,CAAC;QACE,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;AACjE,CAAC"}
|
package/dist/cli/index.js
CHANGED
|
@@ -7,7 +7,6 @@ import { runUnfreeze } from './commands/unfreeze.js';
|
|
|
7
7
|
import { runServe } from './commands/serve.js';
|
|
8
8
|
import { runCache } from './commands/cache.js';
|
|
9
9
|
import { runCatalyze } from './commands/catalyze/index.js';
|
|
10
|
-
import { runDaemon } from './commands/daemon/index.js';
|
|
11
10
|
import { runUpgrade } from './commands/upgrade.js';
|
|
12
11
|
const [, , cmd, ...rest] = process.argv;
|
|
13
12
|
if (!cmd || cmd === 'help' || cmd === '--help' || cmd === '-h') {
|
|
@@ -36,9 +35,6 @@ switch (cmd) {
|
|
|
36
35
|
case 'catalyze':
|
|
37
36
|
runCatalyze(rest);
|
|
38
37
|
break;
|
|
39
|
-
case 'daemon':
|
|
40
|
-
runDaemon(rest);
|
|
41
|
-
break;
|
|
42
38
|
case 'upgrade':
|
|
43
39
|
runUpgrade(rest);
|
|
44
40
|
break;
|
|
@@ -50,7 +46,7 @@ switch (cmd) {
|
|
|
50
46
|
function printHelp() {
|
|
51
47
|
const PKG_VERSION = getPkgVersion();
|
|
52
48
|
console.log(`
|
|
53
|
-
@bookedsolid/reagent v${PKG_VERSION} — zero-trust MCP
|
|
49
|
+
@bookedsolid/reagent v${PKG_VERSION} — zero-trust MCP server
|
|
54
50
|
|
|
55
51
|
Usage:
|
|
56
52
|
npx @bookedsolid/reagent <command> [options]
|
|
@@ -61,8 +57,7 @@ Commands:
|
|
|
61
57
|
check Check what reagent components are installed
|
|
62
58
|
freeze Create .reagent/HALT to suspend all agent operations
|
|
63
59
|
unfreeze Remove .reagent/HALT to resume agent operations
|
|
64
|
-
serve Start the MCP
|
|
65
|
-
daemon Manage the persistent HTTP/SSE multi-project daemon
|
|
60
|
+
serve Start the MCP server (stdio transport — called by Claude Code via .mcp.json)
|
|
66
61
|
cache Manage review cache (check, set, clear)
|
|
67
62
|
upgrade Re-sync installed hooks and update policy.yaml version stamp
|
|
68
63
|
help Show this help
|
|
@@ -107,10 +102,6 @@ Examples:
|
|
|
107
102
|
npx @bookedsolid/reagent freeze --reason "security incident"
|
|
108
103
|
npx @bookedsolid/reagent unfreeze
|
|
109
104
|
npx @bookedsolid/reagent serve
|
|
110
|
-
npx @bookedsolid/reagent daemon start
|
|
111
|
-
npx @bookedsolid/reagent daemon status
|
|
112
|
-
npx @bookedsolid/reagent daemon stop
|
|
113
|
-
npx @bookedsolid/reagent daemon restart
|
|
114
105
|
npx @bookedsolid/reagent upgrade
|
|
115
106
|
npx @bookedsolid/reagent upgrade --dry-run
|
|
116
107
|
`);
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,CAAC,EAAE,AAAD,EAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAExC,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;IAC/D,SAAS,EAAE,CAAC;IACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,QAAQ,GAAG,EAAE,CAAC;IACZ,KAAK,MAAM;QACT,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,MAAM;IACR,KAAK,OAAO;QACV,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,MAAM;IACR,KAAK,QAAQ;QACX,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,MAAM;IACR,KAAK,UAAU;QACb,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM;IACR,KAAK,OAAO;QACV,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrB,MAAM;IACR,KAAK,OAAO;QACV,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,MAAM;IACR,KAAK,UAAU;QACb,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM;IACR,KAAK,SAAS;QACZ,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM;IACR;QACE,OAAO,CAAC,KAAK,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAC;QAC3C,SAAS,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,WAAW,GAAG,aAAa,EAAE,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC;wBACU,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0DlC,CAAC,CAAC;AACH,CAAC"}
|
package/hooks/_lib/common.sh
CHANGED
|
@@ -61,6 +61,24 @@ json_output() {
|
|
|
61
61
|
fi
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
+
# Exit 0 (skip) if the project's tech_profile does not match the expected type.
|
|
65
|
+
# Usage: check_project_type "lit-wc"
|
|
66
|
+
# Reads tech_profile from .reagent/policy.yaml; if absent or mismatched, exits 0.
|
|
67
|
+
check_project_type() {
|
|
68
|
+
local expected_type="$1"
|
|
69
|
+
local root
|
|
70
|
+
root=$(reagent_root)
|
|
71
|
+
local policy="${root}/.reagent/policy.yaml"
|
|
72
|
+
if [[ ! -f "$policy" ]]; then
|
|
73
|
+
exit 0
|
|
74
|
+
fi
|
|
75
|
+
local actual_type
|
|
76
|
+
actual_type=$(grep -E '^tech_profile:' "$policy" 2>/dev/null | sed 's/^tech_profile:[[:space:]]*//' | tr -d '"' || echo "")
|
|
77
|
+
if [[ -z "$actual_type" || "$actual_type" != "$expected_type" ]]; then
|
|
78
|
+
exit 0
|
|
79
|
+
fi
|
|
80
|
+
}
|
|
81
|
+
|
|
64
82
|
# Score a diff for triage purposes
|
|
65
83
|
# Reads from stdin (expects unified diff output)
|
|
66
84
|
# Returns: "trivial" (<20 lines), "standard" (20-200), "significant" (>200)
|
|
@@ -4,14 +4,17 @@
|
|
|
4
4
|
# Blocks modifications to critical configuration files that, if tampered with,
|
|
5
5
|
# would disable the entire hook safety layer.
|
|
6
6
|
#
|
|
7
|
-
# Protected paths:
|
|
7
|
+
# Protected paths (security controls and hook infrastructure ONLY):
|
|
8
8
|
# .claude/settings.json — hook configuration
|
|
9
9
|
# .claude/settings.local.json — local hook overrides
|
|
10
10
|
# .claude/hooks/* — hook scripts themselves
|
|
11
11
|
# .husky/* — git hook scripts
|
|
12
12
|
# .reagent/policy.yaml — autonomy/blocking policy
|
|
13
13
|
# .reagent/HALT — kill switch file
|
|
14
|
-
#
|
|
14
|
+
#
|
|
15
|
+
# NOT protected (operational files agents may legitimately write):
|
|
16
|
+
# .reagent/review-cache.json — cache file, writable by CLI and agents
|
|
17
|
+
# .reagent/tasks.jsonl — task store, managed by task MCP tools
|
|
15
18
|
#
|
|
16
19
|
# Exit codes:
|
|
17
20
|
# 0 = allow (path not protected)
|
|
@@ -79,7 +82,6 @@ PROTECTED_PATTERNS=(
|
|
|
79
82
|
'.husky/'
|
|
80
83
|
'.reagent/policy.yaml'
|
|
81
84
|
'.reagent/HALT'
|
|
82
|
-
'.reagent/review-cache.json'
|
|
83
85
|
)
|
|
84
86
|
|
|
85
87
|
for pattern in "${PROTECTED_PATTERNS[@]}"; do
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bookedsolid/reagent",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Zero-trust MCP
|
|
3
|
+
"version": "0.13.0",
|
|
4
|
+
"description": "Zero-trust MCP server — policy enforcement, secret redaction, and audit logging for AI-assisted projects",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Booked Solid Technology <oss@bookedsolid.tech> (https://bookedsolid.tech)",
|
|
7
7
|
"homepage": "https://github.com/bookedsolidtech/reagent#readme",
|
|
@@ -52,13 +52,6 @@
|
|
|
52
52
|
"changeset": "changeset",
|
|
53
53
|
"changeset:version": "changeset version",
|
|
54
54
|
"changeset:publish": "changeset publish",
|
|
55
|
-
"daemon:start": "mkdir -p ~/.reagent && nohup ./daemon/target/release/reagent-daemon > ~/.reagent/daemon.log 2>&1 & echo $! > ~/.reagent/daemon.pid && echo \"reagent daemon started (PID $(cat ~/.reagent/daemon.pid))\"",
|
|
56
|
-
"daemon:stop": "PID=$(cat ~/.reagent/daemon.pid 2>/dev/null); if [[ \"$PID\" =~ ^[0-9]+$ ]]; then kill -- \"$PID\" 2>/dev/null && rm -f ~/.reagent/daemon.pid && echo \"reagent daemon stopped\" || echo \"reagent daemon was not running\"; else echo \"reagent daemon was not running\"; fi",
|
|
57
|
-
"daemon:status": "[ -f ~/.reagent/daemon.pid ] && kill -0 $(cat ~/.reagent/daemon.pid) 2>/dev/null && echo \"running (PID $(cat ~/.reagent/daemon.pid))\" || echo \"not running\"",
|
|
58
|
-
"daemon:logs": "tail -f ~/.reagent/daemon.log",
|
|
59
|
-
"daemon:eject": "pkill -KILL -f reagent-daemon 2>/dev/null; rm -f ~/.reagent/daemon.pid; echo \"ejected\"",
|
|
60
|
-
"daemon:restart": "npx reagent daemon restart",
|
|
61
|
-
"daemon:build": "cargo build --release --manifest-path daemon/Cargo.toml",
|
|
62
55
|
"lint": "eslint .",
|
|
63
56
|
"format": "prettier --write .",
|
|
64
57
|
"format:check": "prettier --check .",
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `reagent daemon eject` — unconditional nuclear kill.
|
|
3
|
-
*
|
|
4
|
-
* Does not attempt graceful shutdown. Suitable as a last resort when the
|
|
5
|
-
* daemon is stuck and `reagent daemon stop` is unresponsive.
|
|
6
|
-
*
|
|
7
|
-
* Steps:
|
|
8
|
-
* 1. SIGKILL the PID recorded in ~/.reagent/daemon.pid
|
|
9
|
-
* 2. pkill -f reagent-daemon as a fallback (catches orphans not in PID file)
|
|
10
|
-
* 3. Remove ~/.reagent/daemon.pid
|
|
11
|
-
*/
|
|
12
|
-
export declare function runDaemonEject(_args: string[]): void;
|
|
13
|
-
//# sourceMappingURL=eject.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eject.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/daemon/eject.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAoDpD"}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import fs from 'node:fs';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import os from 'node:os';
|
|
4
|
-
import { execSync } from 'node:child_process';
|
|
5
|
-
/** Path to the PID file written by the daemon on startup. */
|
|
6
|
-
function getPidFilePath() {
|
|
7
|
-
return path.join(os.homedir(), '.reagent', 'daemon.pid');
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* `reagent daemon eject` — unconditional nuclear kill.
|
|
11
|
-
*
|
|
12
|
-
* Does not attempt graceful shutdown. Suitable as a last resort when the
|
|
13
|
-
* daemon is stuck and `reagent daemon stop` is unresponsive.
|
|
14
|
-
*
|
|
15
|
-
* Steps:
|
|
16
|
-
* 1. SIGKILL the PID recorded in ~/.reagent/daemon.pid
|
|
17
|
-
* 2. pkill -f reagent-daemon as a fallback (catches orphans not in PID file)
|
|
18
|
-
* 3. Remove ~/.reagent/daemon.pid
|
|
19
|
-
*/
|
|
20
|
-
export function runDaemonEject(_args) {
|
|
21
|
-
const pidPath = getPidFilePath();
|
|
22
|
-
let killedViaPid = false;
|
|
23
|
-
// Step 1: kill via PID file
|
|
24
|
-
if (fs.existsSync(pidPath)) {
|
|
25
|
-
const raw = fs.readFileSync(pidPath, 'utf8').trim();
|
|
26
|
-
const pid = parseInt(raw, 10);
|
|
27
|
-
if (!isNaN(pid)) {
|
|
28
|
-
try {
|
|
29
|
-
process.kill(pid, 'SIGKILL');
|
|
30
|
-
console.log(`[reagent] SIGKILL sent to daemon (PID ${pid})`);
|
|
31
|
-
killedViaPid = true;
|
|
32
|
-
}
|
|
33
|
-
catch (err) {
|
|
34
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
35
|
-
// ESRCH means the process does not exist — not an error for eject
|
|
36
|
-
if (err.code !== 'ESRCH') {
|
|
37
|
-
console.error(`[reagent] Could not SIGKILL PID ${pid}: ${msg}`);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
console.log(`[reagent] PID ${pid} was not running (stale PID file)`);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
console.error(`[reagent] PID file contains invalid value: ${JSON.stringify(raw)}`);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
console.log(`[reagent] No PID file found at ${pidPath}`);
|
|
50
|
-
}
|
|
51
|
-
// Step 2: pkill fallback — catches orphaned processes not tracked by PID file
|
|
52
|
-
try {
|
|
53
|
-
execSync('pkill -KILL -f reagent-daemon 2>/dev/null || true', { stdio: 'ignore' });
|
|
54
|
-
if (!killedViaPid) {
|
|
55
|
-
console.log('[reagent] pkill -KILL -f reagent-daemon executed (orphan sweep)');
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
catch {
|
|
59
|
-
// pkill exits non-zero when no processes matched — that is acceptable
|
|
60
|
-
}
|
|
61
|
-
// Step 3: remove PID file
|
|
62
|
-
if (fs.existsSync(pidPath)) {
|
|
63
|
-
try {
|
|
64
|
-
fs.unlinkSync(pidPath);
|
|
65
|
-
console.log(`[reagent] Removed PID file: ${pidPath}`);
|
|
66
|
-
}
|
|
67
|
-
catch (err) {
|
|
68
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
69
|
-
console.error(`[reagent] Could not remove PID file: ${msg}`);
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
console.log('[reagent] Eject complete.\n');
|
|
73
|
-
}
|
|
74
|
-
//# sourceMappingURL=eject.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eject.js","sourceRoot":"","sources":["../../../../src/cli/commands/daemon/eject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,6DAA6D;AAC7D,SAAS,cAAc;IACrB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAC,KAAe;IAC5C,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,IAAI,YAAY,GAAG,KAAK,CAAC;IAEzB,4BAA4B;IAC5B,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAE9B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,yCAAyC,GAAG,GAAG,CAAC,CAAC;gBAC7D,YAAY,GAAG,IAAI,CAAC;YACtB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,kEAAkE;gBAClE,IAAK,GAA6B,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACpD,OAAO,CAAC,KAAK,CAAC,mCAAmC,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC;gBAClE,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,mCAAmC,CAAC,CAAC;gBACvE,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,8CAA8C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,8EAA8E;IAC9E,IAAI,CAAC;QACH,QAAQ,CAAC,mDAAmD,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;IACxE,CAAC;IAED,0BAA0B;IAC1B,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,+BAA+B,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,KAAK,CAAC,wCAAwC,GAAG,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AAC7C,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/daemon/index.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CA6B9C"}
|