@bookedsolid/reagent 0.12.1 → 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.
Files changed (56) hide show
  1. package/README.md +373 -943
  2. package/dist/cli/commands/init/index.d.ts.map +1 -1
  3. package/dist/cli/commands/init/index.js +45 -35
  4. package/dist/cli/commands/init/index.js.map +1 -1
  5. package/dist/cli/commands/init/mcp-config.d.ts +11 -0
  6. package/dist/cli/commands/init/mcp-config.d.ts.map +1 -0
  7. package/dist/cli/commands/init/mcp-config.js +64 -0
  8. package/dist/cli/commands/init/mcp-config.js.map +1 -0
  9. package/dist/cli/commands/init/policy.d.ts +1 -1
  10. package/dist/cli/commands/init/policy.d.ts.map +1 -1
  11. package/dist/cli/commands/init/policy.js +5 -3
  12. package/dist/cli/commands/init/policy.js.map +1 -1
  13. package/dist/cli/index.js +2 -11
  14. package/dist/cli/index.js.map +1 -1
  15. package/hooks/_lib/common.sh +18 -0
  16. package/hooks/blocked-paths-enforcer.sh +17 -9
  17. package/hooks/settings-protection.sh +5 -3
  18. package/package.json +2 -9
  19. package/profiles/astro/hooks/astro-ssr-guard.sh +1 -0
  20. package/profiles/drupal/hooks/drupal-coding-standards.sh +1 -0
  21. package/profiles/drupal/hooks/hook-update-guard.sh +1 -0
  22. package/profiles/lit-wc/hooks/cem-integrity-gate.sh +1 -0
  23. package/profiles/lit-wc/hooks/shadow-dom-guard.sh +1 -0
  24. package/profiles/nextjs/hooks/server-component-drift.sh +1 -0
  25. package/dist/cli/commands/daemon/eject.d.ts +0 -13
  26. package/dist/cli/commands/daemon/eject.d.ts.map +0 -1
  27. package/dist/cli/commands/daemon/eject.js +0 -74
  28. package/dist/cli/commands/daemon/eject.js.map +0 -1
  29. package/dist/cli/commands/daemon/index.d.ts +0 -5
  30. package/dist/cli/commands/daemon/index.d.ts.map +0 -1
  31. package/dist/cli/commands/daemon/index.js +0 -64
  32. package/dist/cli/commands/daemon/index.js.map +0 -1
  33. package/dist/cli/commands/daemon/restart.d.ts +0 -10
  34. package/dist/cli/commands/daemon/restart.d.ts.map +0 -1
  35. package/dist/cli/commands/daemon/restart.js +0 -20
  36. package/dist/cli/commands/daemon/restart.js.map +0 -1
  37. package/dist/cli/commands/daemon/start.d.ts +0 -2
  38. package/dist/cli/commands/daemon/start.d.ts.map +0 -1
  39. package/dist/cli/commands/daemon/start.js +0 -143
  40. package/dist/cli/commands/daemon/start.js.map +0 -1
  41. package/dist/cli/commands/daemon/status.d.ts +0 -2
  42. package/dist/cli/commands/daemon/status.d.ts.map +0 -1
  43. package/dist/cli/commands/daemon/status.js +0 -90
  44. package/dist/cli/commands/daemon/status.js.map +0 -1
  45. package/dist/cli/commands/daemon/stop.d.ts +0 -2
  46. package/dist/cli/commands/daemon/stop.d.ts.map +0 -1
  47. package/dist/cli/commands/daemon/stop.js +0 -73
  48. package/dist/cli/commands/daemon/stop.js.map +0 -1
  49. package/dist/config/daemon-loader.d.ts +0 -16
  50. package/dist/config/daemon-loader.d.ts.map +0 -1
  51. package/dist/config/daemon-loader.js +0 -76
  52. package/dist/config/daemon-loader.js.map +0 -1
  53. package/dist/types/daemon.d.ts +0 -45
  54. package/dist/types/daemon.d.ts.map +0 -1
  55. package/dist/types/daemon.js +0 -2
  56. 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":"AAkBA,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAiK5C"}
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
- // If this is a tech stack profile (directory-based), run it directly
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
- const results = [];
41
- const profileResult = installProfile(profileName, targetDir, dryRun);
42
- results.push(...profileResult.results);
43
- // Announce gates
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, `${profileName}.json`);
50
+ const profilePath = path.resolve(profilesDir, `${baseProfileName}.json`);
64
51
  if (!profilePath.startsWith(profilesDir + path.sep)) {
65
- console.error(`Invalid profile name: "${profileName}" (path traversal detected)`);
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(`Profile not found: ${profileName}`);
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: Gateway config
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 9a: Warn about duplicate MCP server entries (skip in dry-run — files may not exist)
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":"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"}
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,GACd,aAAa,EAAE,CAgFjB"}
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');
@@ -16,7 +16,9 @@ export function installPolicy(targetDir, profileName, profile, dryRun) {
16
16
  const coverageEnabled = profile.coverage?.enabled === true;
17
17
  const coverageThreshold = profile.coverage?.threshold ?? 80;
18
18
  const blockedPaths = profile.blockedPaths ?? [
19
- '.reagent/',
19
+ '.reagent/policy.yaml',
20
+ '.reagent/HALT',
21
+ '.reagent/review-cache.json',
20
22
  '.github/workflows/',
21
23
  '.env',
22
24
  '.env.*',
@@ -30,7 +32,7 @@ export function installPolicy(targetDir, profileName, profile, dryRun) {
30
32
 
31
33
  version: "1"
32
34
  profile: "${profileName}"
33
- installed_by: "reagent@${PKG_VERSION}"
35
+ ${techProfile ? `tech_profile: "${techProfile}"\n` : ''}installed_by: "reagent@${PKG_VERSION}"
34
36
  installed_at: "${now}"
35
37
 
36
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;IAEf,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,WAAW;YACX,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;yBACE,WAAW;iBACnB,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"}
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 gateway
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 gateway server (stdio transport)
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
  `);
@@ -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,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,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,QAAQ;QACX,SAAS,CAAC,IAAI,CAAC,CAAC;QAChB,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+DlC,CAAC,CAAC;AACH,CAAC"}
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"}
@@ -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)
@@ -90,28 +90,36 @@ if [[ ${#BLOCKED_PATHS[@]} -eq 0 ]]; then
90
90
  exit 0
91
91
  fi
92
92
 
93
- # ── 6. Normalize and match ────────────────────────────────────────────────────
93
+ # ── 6. Agent-writable allowlist ───────────────────────────────────────────────
94
+ # These paths under .reagent/ must always be writable by agents regardless of
95
+ # what blocked_paths says. Blocking the whole .reagent/ directory in policy
96
+ # is a common default, but tasks.jsonl is the PM data store — agents must
97
+ # write there. Settings-protection.sh guards the sensitive files explicitly.
98
+ AGENT_WRITABLE=(
99
+ '.reagent/tasks.jsonl'
100
+ '.reagent/audit/'
101
+ )
94
102
 
95
- # Convert to relative path from project root
96
103
  normalize_path() {
97
104
  local p="$1"
98
105
  local root="$REAGENT_ROOT"
99
-
100
- # Strip project root prefix if present
101
106
  if [[ "$p" == "$root"/* ]]; then
102
107
  p="${p#$root/}"
103
108
  fi
104
-
105
- # URL decode common sequences
106
109
  p=$(printf '%s' "$p" | sed 's/%2[Ff]/\//g; s/%2[Ee]/./g; s/%20/ /g')
107
-
108
- # Remove ./ prefix
109
110
  p="${p#./}"
110
-
111
111
  printf '%s' "$p"
112
112
  }
113
113
 
114
114
  NORMALIZED=$(normalize_path "$FILE_PATH")
115
+
116
+ for writable in "${AGENT_WRITABLE[@]}"; do
117
+ if [[ "$NORMALIZED" == "$writable" ]] || [[ "$NORMALIZED" == "$writable"* && "$writable" == */ ]]; then
118
+ exit 0
119
+ fi
120
+ done
121
+
122
+ # ── 7. Match against blocked_paths ───────────────────────────────────────────
115
123
  LOWER_NORM=$(printf '%s' "$NORMALIZED" | tr '[:upper:]' '[:lower:]')
116
124
 
117
125
  for blocked in "${BLOCKED_PATHS[@]}"; do
@@ -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
- # .reagent/review-cache.json — review cache (integrity-sensitive)
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.12.1",
4
- "description": "Zero-trust MCP gateway — policy enforcement, secret redaction, and audit logging for AI-assisted projects",
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 .",
@@ -11,6 +11,7 @@ LIB="$HOOK_DIR/../../../hooks/_lib/common.sh"
11
11
  if [[ -f "$LIB" ]]; then
12
12
  source "$LIB"
13
13
  check_halt
14
+ check_project_type "astro"
14
15
  fi
15
16
 
16
17
  INPUT=$(cat)
@@ -11,6 +11,7 @@ LIB="$HOOK_DIR/../../../hooks/_lib/common.sh"
11
11
  if [[ -f "$LIB" ]]; then
12
12
  source "$LIB"
13
13
  check_halt
14
+ check_project_type "drupal"
14
15
  fi
15
16
 
16
17
  INPUT=$(cat)
@@ -11,6 +11,7 @@ LIB="$HOOK_DIR/../../../hooks/_lib/common.sh"
11
11
  if [[ -f "$LIB" ]]; then
12
12
  source "$LIB"
13
13
  check_halt
14
+ check_project_type "drupal"
14
15
  fi
15
16
 
16
17
  INPUT=$(cat)
@@ -11,6 +11,7 @@ LIB="$HOOK_DIR/../../../hooks/_lib/common.sh"
11
11
  if [[ -f "$LIB" ]]; then
12
12
  source "$LIB"
13
13
  check_halt
14
+ check_project_type "lit-wc"
14
15
  fi
15
16
 
16
17
  INPUT=$(cat)
@@ -12,6 +12,7 @@ if [[ -f "$LIB" ]]; then
12
12
  # shellcheck source=hooks/_lib/common.sh
13
13
  source "$LIB"
14
14
  check_halt
15
+ check_project_type "lit-wc"
15
16
  fi
16
17
 
17
18
  # Read tool input from stdin
@@ -11,6 +11,7 @@ LIB="$HOOK_DIR/../../../hooks/_lib/common.sh"
11
11
  if [[ -f "$LIB" ]]; then
12
12
  source "$LIB"
13
13
  check_halt
14
+ check_project_type "nextjs"
14
15
  fi
15
16
 
16
17
  INPUT=$(cat)
@@ -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"}