@bookedsolid/reagent 0.7.2 → 0.10.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 (119) hide show
  1. package/README.md +277 -140
  2. package/agents/engineering/pr-voice-reviewer.md +229 -0
  3. package/agents/product-owner.md +152 -0
  4. package/agents/reagent-orchestrator.md +8 -0
  5. package/commands/pm-status.md +230 -0
  6. package/commands/review-pr.md +197 -0
  7. package/dist/cli/commands/catalyze/gap-detector.d.ts.map +1 -1
  8. package/dist/cli/commands/catalyze/gap-detector.js +1 -3
  9. package/dist/cli/commands/catalyze/gap-detector.js.map +1 -1
  10. package/dist/cli/commands/daemon/index.d.ts +5 -0
  11. package/dist/cli/commands/daemon/index.d.ts.map +1 -0
  12. package/dist/cli/commands/daemon/index.js +59 -0
  13. package/dist/cli/commands/daemon/index.js.map +1 -0
  14. package/dist/cli/commands/daemon/restart.d.ts +10 -0
  15. package/dist/cli/commands/daemon/restart.d.ts.map +1 -0
  16. package/dist/cli/commands/daemon/restart.js +20 -0
  17. package/dist/cli/commands/daemon/restart.js.map +1 -0
  18. package/dist/cli/commands/daemon/start.d.ts +2 -0
  19. package/dist/cli/commands/daemon/start.d.ts.map +1 -0
  20. package/dist/cli/commands/daemon/start.js +143 -0
  21. package/dist/cli/commands/daemon/start.js.map +1 -0
  22. package/dist/cli/commands/daemon/status.d.ts +2 -0
  23. package/dist/cli/commands/daemon/status.d.ts.map +1 -0
  24. package/dist/cli/commands/daemon/status.js +90 -0
  25. package/dist/cli/commands/daemon/status.js.map +1 -0
  26. package/dist/cli/commands/daemon/stop.d.ts +2 -0
  27. package/dist/cli/commands/daemon/stop.d.ts.map +1 -0
  28. package/dist/cli/commands/daemon/stop.js +73 -0
  29. package/dist/cli/commands/daemon/stop.js.map +1 -0
  30. package/dist/cli/commands/init/claude-hooks.d.ts +1 -1
  31. package/dist/cli/commands/init/claude-hooks.d.ts.map +1 -1
  32. package/dist/cli/commands/init/claude-hooks.js +10 -4
  33. package/dist/cli/commands/init/claude-hooks.js.map +1 -1
  34. package/dist/cli/commands/init/index.d.ts.map +1 -1
  35. package/dist/cli/commands/init/index.js +5 -1
  36. package/dist/cli/commands/init/index.js.map +1 -1
  37. package/dist/cli/commands/init/policy.d.ts.map +1 -1
  38. package/dist/cli/commands/init/policy.js +21 -0
  39. package/dist/cli/commands/init/policy.js.map +1 -1
  40. package/dist/cli/commands/init/types.d.ts +16 -0
  41. package/dist/cli/commands/init/types.d.ts.map +1 -1
  42. package/dist/cli/index.js +9 -0
  43. package/dist/cli/index.js.map +1 -1
  44. package/dist/config/daemon-loader.d.ts +16 -0
  45. package/dist/config/daemon-loader.d.ts.map +1 -0
  46. package/dist/config/daemon-loader.js +76 -0
  47. package/dist/config/daemon-loader.js.map +1 -0
  48. package/dist/config/gateway-config.d.ts.map +1 -1
  49. package/dist/config/gateway-config.js +6 -0
  50. package/dist/config/gateway-config.js.map +1 -1
  51. package/dist/config/policy-loader.d.ts +27 -0
  52. package/dist/config/policy-loader.d.ts.map +1 -1
  53. package/dist/config/policy-loader.js +103 -10
  54. package/dist/config/policy-loader.js.map +1 -1
  55. package/dist/gateway/circuit-breaker.d.ts +60 -0
  56. package/dist/gateway/circuit-breaker.d.ts.map +1 -0
  57. package/dist/gateway/circuit-breaker.js +104 -0
  58. package/dist/gateway/circuit-breaker.js.map +1 -0
  59. package/dist/gateway/collision-detector.d.ts +31 -0
  60. package/dist/gateway/collision-detector.d.ts.map +1 -0
  61. package/dist/gateway/collision-detector.js +53 -0
  62. package/dist/gateway/collision-detector.js.map +1 -0
  63. package/dist/gateway/middleware/blocked-paths.js +2 -2
  64. package/dist/gateway/middleware/blocked-paths.js.map +1 -1
  65. package/dist/gateway/middleware/circuit-breaker.d.ts +12 -0
  66. package/dist/gateway/middleware/circuit-breaker.d.ts.map +1 -0
  67. package/dist/gateway/middleware/circuit-breaker.js +44 -0
  68. package/dist/gateway/middleware/circuit-breaker.js.map +1 -0
  69. package/dist/gateway/middleware/injection.d.ts +23 -0
  70. package/dist/gateway/middleware/injection.d.ts.map +1 -0
  71. package/dist/gateway/middleware/injection.js +129 -0
  72. package/dist/gateway/middleware/injection.js.map +1 -0
  73. package/dist/gateway/middleware/policy.js +2 -2
  74. package/dist/gateway/middleware/policy.js.map +1 -1
  75. package/dist/gateway/middleware/rate-limit.d.ts +13 -0
  76. package/dist/gateway/middleware/rate-limit.d.ts.map +1 -0
  77. package/dist/gateway/middleware/rate-limit.js +32 -0
  78. package/dist/gateway/middleware/rate-limit.js.map +1 -0
  79. package/dist/gateway/middleware/redact.d.ts.map +1 -1
  80. package/dist/gateway/middleware/redact.js +7 -0
  81. package/dist/gateway/middleware/redact.js.map +1 -1
  82. package/dist/gateway/middleware/result-size-cap.d.ts +14 -0
  83. package/dist/gateway/middleware/result-size-cap.d.ts.map +1 -0
  84. package/dist/gateway/middleware/result-size-cap.js +49 -0
  85. package/dist/gateway/middleware/result-size-cap.js.map +1 -0
  86. package/dist/gateway/native-tools.js +1 -1
  87. package/dist/gateway/native-tools.js.map +1 -1
  88. package/dist/gateway/rate-limiter.d.ts +47 -0
  89. package/dist/gateway/rate-limiter.d.ts.map +1 -0
  90. package/dist/gateway/rate-limiter.js +89 -0
  91. package/dist/gateway/rate-limiter.js.map +1 -0
  92. package/dist/gateway/server.d.ts.map +1 -1
  93. package/dist/gateway/server.js +27 -1
  94. package/dist/gateway/server.js.map +1 -1
  95. package/dist/gateway/tool-proxy.js +1 -1
  96. package/dist/gateway/tool-proxy.js.map +1 -1
  97. package/dist/types/daemon.d.ts +45 -0
  98. package/dist/types/daemon.d.ts.map +1 -0
  99. package/dist/types/daemon.js +2 -0
  100. package/dist/types/daemon.js.map +1 -0
  101. package/dist/types/gateway.d.ts +9 -0
  102. package/dist/types/gateway.d.ts.map +1 -1
  103. package/dist/types/policy.d.ts +1 -0
  104. package/dist/types/policy.d.ts.map +1 -1
  105. package/hooks/_lib/discord.sh +75 -0
  106. package/hooks/blocked-paths-enforcer.sh +0 -1
  107. package/hooks/changeset-security-gate.sh +143 -0
  108. package/hooks/commit-review-gate.sh +12 -4
  109. package/hooks/import-guard.sh +14 -0
  110. package/hooks/network-exfil-guard.sh +20 -2
  111. package/hooks/pr-issue-link-gate.sh +65 -0
  112. package/hooks/push-review-gate.sh +17 -2
  113. package/hooks/rate-limit-guard.sh +26 -2
  114. package/hooks/reagent-notify.sh +65 -0
  115. package/hooks/security-disclosure-gate.sh +146 -0
  116. package/husky/pre-push.sh +84 -0
  117. package/package.json +10 -2
  118. package/profiles/bst-internal.json +12 -2
  119. package/profiles/client-engagement.json +12 -2
@@ -0,0 +1,73 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import os from 'node:os';
4
+ /** Path to the PID file written by `reagent daemon start`. */
5
+ function getPidFilePath() {
6
+ return path.join(os.homedir(), '.reagent', 'daemon.pid');
7
+ }
8
+ export function runDaemonStop(_args, onDone) {
9
+ const pidPath = getPidFilePath();
10
+ if (!fs.existsSync(pidPath)) {
11
+ console.log(`\nreagent daemon is not running (no PID file at ${pidPath})\n`);
12
+ return;
13
+ }
14
+ const raw = fs.readFileSync(pidPath, 'utf8').trim();
15
+ const pid = parseInt(raw, 10);
16
+ if (isNaN(pid)) {
17
+ console.error(`[reagent] PID file contains invalid value: ${JSON.stringify(raw)}`);
18
+ console.error(` Remove it manually: ${pidPath}`);
19
+ process.exit(1);
20
+ }
21
+ // Verify the process is alive before sending SIGTERM
22
+ let alive = true;
23
+ try {
24
+ process.kill(pid, 0);
25
+ }
26
+ catch {
27
+ alive = false;
28
+ }
29
+ if (!alive) {
30
+ console.log(`\nreagent daemon (PID ${pid}) is not running — removing stale PID file.`);
31
+ fs.unlinkSync(pidPath);
32
+ onDone?.();
33
+ return;
34
+ }
35
+ console.log(`\nSending SIGTERM to reagent daemon (PID ${pid})...`);
36
+ try {
37
+ process.kill(pid, 'SIGTERM');
38
+ }
39
+ catch (err) {
40
+ console.error(`[reagent] Failed to send SIGTERM to PID ${pid}: ${err instanceof Error ? err.message : err}`);
41
+ process.exit(1);
42
+ }
43
+ // Poll for up to 10 seconds to confirm the process exited
44
+ const deadline = Date.now() + 10_000;
45
+ const pollIntervalMs = 250;
46
+ const poll = () => {
47
+ let still_alive = true;
48
+ try {
49
+ process.kill(pid, 0);
50
+ }
51
+ catch {
52
+ still_alive = false;
53
+ }
54
+ if (!still_alive) {
55
+ // Remove stale PID file — daemon removes it on clean exit, but handle
56
+ // the case where it didn't
57
+ if (fs.existsSync(pidPath)) {
58
+ fs.unlinkSync(pidPath);
59
+ }
60
+ console.log(` Daemon stopped.\n`);
61
+ onDone?.();
62
+ return;
63
+ }
64
+ if (Date.now() >= deadline) {
65
+ console.error(`[reagent] Daemon (PID ${pid}) did not exit within 10 seconds.`);
66
+ console.error(` Send SIGKILL manually: kill -9 ${pid}`);
67
+ process.exit(1);
68
+ }
69
+ setTimeout(poll, pollIntervalMs);
70
+ };
71
+ setTimeout(poll, pollIntervalMs);
72
+ }
73
+ //# sourceMappingURL=stop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../../src/cli/commands/daemon/stop.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import type { InstallResult, HooksConfig } from './types.js';
2
- export declare function installClaudeHooks(targetDir: string, hooksConfig: HooksConfig, dryRun: boolean): InstallResult[];
2
+ export declare function installClaudeHooks(targetDir: string, hooksConfig: HooksConfig, dryRun: boolean, envOverrides?: Record<string, string>): InstallResult[];
3
3
  //# sourceMappingURL=claude-hooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-hooks.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init/claude-hooks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAa,MAAM,YAAY,CAAC;AAExE,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,OAAO,GACd,aAAa,EAAE,CAuEjB"}
1
+ {"version":3,"file":"claude-hooks.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init/claude-hooks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAa,MAAM,YAAY,CAAC;AAExE,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,OAAO,EACf,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACpC,aAAa,EAAE,CAuEjB"}
@@ -1,7 +1,7 @@
1
1
  import fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { PKG_ROOT } from '../../utils.js';
4
- export function installClaudeHooks(targetDir, hooksConfig, dryRun) {
4
+ export function installClaudeHooks(targetDir, hooksConfig, dryRun, envOverrides) {
5
5
  const claudeHooksDir = path.join(targetDir, '.claude', 'hooks');
6
6
  if (!dryRun) {
7
7
  // If a stale symlink exists (e.g. from a retired .clarity submodule), remove it first.
@@ -47,7 +47,7 @@ export function installClaudeHooks(targetDir, hooksConfig, dryRun) {
47
47
  }
48
48
  // Write settings.json
49
49
  const settingsPath = path.join(targetDir, '.claude', 'settings.json');
50
- const settings = buildSettingsJson(hooksConfig, installedHookNames);
50
+ const settings = buildSettingsJson(hooksConfig, installedHookNames, envOverrides);
51
51
  const settingsContent = JSON.stringify(settings, null, 2) + '\n';
52
52
  const settingsExists = fs.existsSync(settingsPath);
53
53
  const settingsSame = settingsExists && fs.readFileSync(settingsPath, 'utf8') === settingsContent;
@@ -60,9 +60,9 @@ export function installClaudeHooks(targetDir, hooksConfig, dryRun) {
60
60
  });
61
61
  return results;
62
62
  }
63
- function buildSettingsJson(hooksConfig, installedHookNames) {
63
+ function buildSettingsJson(hooksConfig, installedHookNames, envOverrides) {
64
64
  const settings = {
65
- env: { ENABLE_TOOL_SEARCH: 'auto:5' },
65
+ env: { ENABLE_TOOL_SEARCH: 'auto:5', ...envOverrides },
66
66
  hooks: {},
67
67
  };
68
68
  function buildHookEntries(entries) {
@@ -131,6 +131,9 @@ function getHookTimeout(hookName) {
131
131
  'import-guard': 5000,
132
132
  'network-exfil-guard': 10000,
133
133
  'rate-limit-guard': 5000,
134
+ 'security-disclosure-gate': 5000,
135
+ 'changeset-security-gate': 5000,
136
+ 'pr-issue-link-gate': 5000,
134
137
  };
135
138
  return timeouts[hookName] || 10000;
136
139
  }
@@ -155,6 +158,9 @@ function getHookStatusMessage(hookName) {
155
158
  'import-guard': 'Checking for dangerous imports...',
156
159
  'network-exfil-guard': 'Checking network destinations...',
157
160
  'rate-limit-guard': 'Checking rate limits...',
161
+ 'security-disclosure-gate': 'Checking disclosure policy...',
162
+ 'changeset-security-gate': 'Checking changeset for security leaks...',
163
+ 'pr-issue-link-gate': 'Checking PR for issue reference...',
158
164
  };
159
165
  return messages[hookName] || `Running ${hookName}...`;
160
166
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claude-hooks.js","sourceRoot":"","sources":["../../../../src/cli/commands/init/claude-hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-hooks.js","sourceRoot":"","sources":["../../../../src/cli/commands/init/claude-hooks.ts"],"names":[],"mappings":"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"}
@@ -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,CAwJ5C"}
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,CA4J5C"}
@@ -101,7 +101,11 @@ export function runInit(args) {
101
101
  }
102
102
  // Step 6: Claude hooks
103
103
  if (profile.claudeHooks) {
104
- results.push(...installClaudeHooks(targetDir, profile.claudeHooks, dryRun));
104
+ // Build env vars to inject into .claude/settings.json for hook configuration
105
+ const hookEnv = {};
106
+ const disclosureMode = profile.security?.disclosureMode ?? 'advisory';
107
+ hookEnv['REAGENT_DISCLOSURE_MODE'] = disclosureMode;
108
+ results.push(...installClaudeHooks(targetDir, profile.claudeHooks, dryRun, hookEnv));
105
109
  }
106
110
  // Step 7: CLAUDE.md
107
111
  if (profile.claudeMd) {
@@ -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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"}
@@ -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,CA2DjB"}
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"}
@@ -12,6 +12,9 @@ export function installPolicy(targetDir, profileName, profile, dryRun) {
12
12
  fs.mkdirSync(reagentDir, { recursive: true });
13
13
  const now = new Date().toISOString();
14
14
  const blockAttribution = profile.blockAiAttribution === true;
15
+ const disclosureMode = profile.security?.disclosureMode ?? 'advisory';
16
+ const coverageEnabled = profile.coverage?.enabled === true;
17
+ const coverageThreshold = profile.coverage?.threshold ?? 80;
15
18
  const blockedPaths = profile.blockedPaths ?? [
16
19
  '.reagent/',
17
20
  '.github/workflows/',
@@ -53,6 +56,24 @@ blocked_paths:${blockedPathsYaml}
53
56
 
54
57
  # Optional: Discord webhook for halt/promote notifications
55
58
  notification_channel: ""
59
+
60
+ # Coverage quality gate (opt-in)
61
+ # When enabled, the pre-push hook enforces minimum test coverage before push.
62
+ # Requires @vitest/coverage-v8 (or equivalent) installed in the project.
63
+ # enabled — set to true to activate the gate
64
+ # threshold — minimum percentage for lines, functions, and statements
65
+ # branches threshold is automatically set to threshold - 10
66
+ coverage:
67
+ enabled: ${coverageEnabled}
68
+ threshold: ${coverageThreshold}
69
+
70
+ # Security disclosure configuration
71
+ # Controls how the security-disclosure-gate hook routes security findings:
72
+ # advisory — public OSS repos: redirect to GitHub Security Advisories (default)
73
+ # issues — private client repos: redirect to labeled internal issue queue
74
+ # disabled — no gate (not recommended)
75
+ security:
76
+ disclosure_mode: "${disclosureMode}"
56
77
  `;
57
78
  fs.writeFileSync(policyPath, content, 'utf8');
58
79
  }
@@ -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,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;;;;CAI/B,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;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"}
@@ -14,6 +14,20 @@ export interface ClaudeMdConfig {
14
14
  preflightCmd?: string;
15
15
  attributionRule?: string;
16
16
  }
17
+ export interface CoverageConfig {
18
+ /** Enable the coverage threshold gate in the pre-push husky hook. Default: false. */
19
+ enabled?: boolean;
20
+ /** Minimum coverage percentage for lines, functions, statements. Default: 80. */
21
+ threshold?: number;
22
+ }
23
+ export interface SecurityConfig {
24
+ /** Controls how security findings are disclosed. Default: 'advisory'.
25
+ * advisory — public OSS repos: redirect to GitHub Security Advisories
26
+ * issues — private repos: redirect to labeled internal issue queue
27
+ * disabled — no gate (not recommended)
28
+ */
29
+ disclosureMode?: 'advisory' | 'issues' | 'disabled';
30
+ }
17
31
  export interface ProfileConfig {
18
32
  blockAiAttribution?: boolean;
19
33
  blockedPaths?: string[];
@@ -24,6 +38,8 @@ export interface ProfileConfig {
24
38
  huskyPrePush?: boolean;
25
39
  claudeHooks?: HooksConfig;
26
40
  claudeMd?: ClaudeMdConfig;
41
+ security?: SecurityConfig;
42
+ coverage?: CoverageConfig;
27
43
  [key: string]: unknown;
28
44
  }
29
45
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;CACtD;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/init/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;CACtD;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,qFAAqF;IACrF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,cAAc,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;CACrD;AAED,MAAM,WAAW,aAAa;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB"}
package/dist/cli/index.js CHANGED
@@ -7,6 +7,7 @@ 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';
10
11
  const [, , cmd, ...rest] = process.argv;
11
12
  if (!cmd || cmd === 'help' || cmd === '--help' || cmd === '-h') {
12
13
  printHelp();
@@ -34,6 +35,9 @@ switch (cmd) {
34
35
  case 'catalyze':
35
36
  runCatalyze(rest);
36
37
  break;
38
+ case 'daemon':
39
+ runDaemon(rest);
40
+ break;
37
41
  default:
38
42
  console.error(`\nUnknown command: ${cmd}`);
39
43
  printHelp();
@@ -54,6 +58,7 @@ Commands:
54
58
  freeze Create .reagent/HALT to suspend all agent operations
55
59
  unfreeze Remove .reagent/HALT to resume agent operations
56
60
  serve Start the MCP gateway server (stdio transport)
61
+ daemon Manage the persistent HTTP/SSE multi-project daemon
57
62
  cache Manage review cache (check, set, clear)
58
63
  help Show this help
59
64
 
@@ -97,6 +102,10 @@ Examples:
97
102
  npx @bookedsolid/reagent freeze --reason "security incident"
98
103
  npx @bookedsolid/reagent unfreeze
99
104
  npx @bookedsolid/reagent serve
105
+ npx @bookedsolid/reagent daemon start
106
+ npx @bookedsolid/reagent daemon status
107
+ npx @bookedsolid/reagent daemon stop
108
+ npx @bookedsolid/reagent daemon restart
100
109
  `);
101
110
  }
102
111
  //# sourceMappingURL=index.js.map
@@ -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;AAE3D,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;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDlC,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,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAEvD,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;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4DlC,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { DaemonConfig } from '../types/daemon.js';
2
+ /**
3
+ * Async daemon config loader.
4
+ *
5
+ * Reads ~/.reagent/daemon.yaml and returns a validated DaemonConfig.
6
+ * Falls back to defaults if the file is absent — the daemon does not require
7
+ * the config file to exist.
8
+ */
9
+ export declare function loadDaemonConfigAsync(): Promise<DaemonConfig>;
10
+ /**
11
+ * Synchronous daemon config loader — for CLI startup paths that must be sync.
12
+ *
13
+ * Falls back to defaults if ~/.reagent/daemon.yaml is absent.
14
+ */
15
+ export declare function loadDaemonConfig(): DaemonConfig;
16
+ //# sourceMappingURL=daemon-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-loader.d.ts","sourceRoot":"","sources":["../../src/config/daemon-loader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA+CvD;;;;;;GAMG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,YAAY,CAAC,CAYnE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAS/C"}
@@ -0,0 +1,76 @@
1
+ import fs from 'node:fs';
2
+ import fsPromises from 'node:fs/promises';
3
+ import os from 'node:os';
4
+ import path from 'node:path';
5
+ import { parse as parseYaml } from 'yaml';
6
+ import { z } from 'zod';
7
+ /** Path to the global daemon config: ~/.reagent/daemon.yaml */
8
+ function getDaemonConfigPath() {
9
+ return path.join(os.homedir(), '.reagent', 'daemon.yaml');
10
+ }
11
+ const DaemonAuthSchema = z.object({
12
+ api_keys: z.array(z.string()).optional(),
13
+ });
14
+ const DaemonConfigSchema = z.object({
15
+ port: z.number().int().min(1).max(65535).default(7777),
16
+ bind: z.string().default('127.0.0.1'),
17
+ session_ttl_minutes: z.number().int().min(1).default(30),
18
+ log_level: z.enum(['debug', 'info', 'warn', 'error']).default('info'),
19
+ auth: DaemonAuthSchema.optional(),
20
+ });
21
+ /** Default config used when ~/.reagent/daemon.yaml is absent. */
22
+ const DAEMON_DEFAULTS = {
23
+ port: 7777,
24
+ bind: '127.0.0.1',
25
+ session_ttl_minutes: 30,
26
+ log_level: 'info',
27
+ };
28
+ function parseRawDaemonConfig(raw, configPath) {
29
+ let parsed;
30
+ try {
31
+ parsed = parseYaml(raw);
32
+ }
33
+ catch (yamlErr) {
34
+ throw new Error(`Failed to parse daemon YAML at ${configPath}: ${yamlErr instanceof Error ? yamlErr.message : yamlErr}`);
35
+ }
36
+ try {
37
+ // parseYaml returns null for an empty file — treat as empty object so defaults apply
38
+ return DaemonConfigSchema.parse(parsed ?? {});
39
+ }
40
+ catch (zodErr) {
41
+ throw new Error(`Invalid daemon config schema at ${configPath}: ${zodErr instanceof Error ? zodErr.message : zodErr}`);
42
+ }
43
+ }
44
+ /**
45
+ * Async daemon config loader.
46
+ *
47
+ * Reads ~/.reagent/daemon.yaml and returns a validated DaemonConfig.
48
+ * Falls back to defaults if the file is absent — the daemon does not require
49
+ * the config file to exist.
50
+ */
51
+ export async function loadDaemonConfigAsync() {
52
+ const configPath = getDaemonConfigPath();
53
+ let raw;
54
+ try {
55
+ raw = await fsPromises.readFile(configPath, 'utf8');
56
+ }
57
+ catch {
58
+ // File absent — return defaults
59
+ return { ...DAEMON_DEFAULTS };
60
+ }
61
+ return parseRawDaemonConfig(raw, configPath);
62
+ }
63
+ /**
64
+ * Synchronous daemon config loader — for CLI startup paths that must be sync.
65
+ *
66
+ * Falls back to defaults if ~/.reagent/daemon.yaml is absent.
67
+ */
68
+ export function loadDaemonConfig() {
69
+ const configPath = getDaemonConfigPath();
70
+ if (!fs.existsSync(configPath)) {
71
+ return { ...DAEMON_DEFAULTS };
72
+ }
73
+ const raw = fs.readFileSync(configPath, 'utf8');
74
+ return parseRawDaemonConfig(raw, configPath);
75
+ }
76
+ //# sourceMappingURL=daemon-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-loader.js","sourceRoot":"","sources":["../../src/config/daemon-loader.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-config.d.ts","sourceRoot":"","sources":["../../src/config/gateway-config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAsCvD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAmChE"}
1
+ {"version":3,"file":"gateway-config.d.ts","sourceRoot":"","sources":["../../src/config/gateway-config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AA6CvD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAmChE"}
@@ -12,10 +12,16 @@ const DownstreamServerSchema = z.object({
12
12
  args: z.array(z.string()).default([]),
13
13
  env: z.record(z.string()).optional(),
14
14
  tool_overrides: z.record(ToolOverrideSchema).optional(),
15
+ max_concurrent_calls: z.number().int().min(0).optional(),
16
+ calls_per_minute: z.number().int().min(0).optional(),
17
+ });
18
+ const GatewayOptionsSchema = z.object({
19
+ max_result_size_kb: z.number().int().min(1).optional(),
15
20
  });
16
21
  const GatewayConfigSchema = z.object({
17
22
  version: z.string(),
18
23
  servers: z.record(DownstreamServerSchema),
24
+ gateway: GatewayOptionsSchema.optional(),
19
25
  });
20
26
  /**
21
27
  * Resolve `${ENV_VAR}` references in string values.
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-config.js","sourceRoot":"","sources":["../../src/config/gateway-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gateway-config.js","sourceRoot":"","sources":["../../src/config/gateway-config.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,30 @@
1
1
  import type { Policy } from '../types/index.js';
2
+ /**
3
+ * Async policy loader with TTL cache and mtime-based invalidation.
4
+ *
5
+ * Cache behavior:
6
+ * - On each call, stat the file to get current mtime.
7
+ * - If mtime changed since the cached entry, invalidate immediately regardless of TTL.
8
+ * - If the entry is older than the TTL, re-read from disk.
9
+ * - Otherwise, return the cached entry.
10
+ *
11
+ * TTL is configurable via the REAGENT_POLICY_CACHE_TTL_MS environment variable.
12
+ *
13
+ * PERFORMANCE: fs.promises.readFile avoids blocking the event loop on every tool invocation.
14
+ * SECURITY: mtime invalidation ensures a tightened policy takes effect on the next call.
15
+ * CONCURRENCY: inflightReads map guarantees at most one disk read per baseDir at a time.
16
+ */
17
+ export declare function loadPolicyAsync(baseDir: string): Promise<Policy>;
18
+ /**
19
+ * Synchronous policy loader — retained for CLI startup paths that must be sync.
20
+ * Does NOT use the cache — always reads from disk.
21
+ *
22
+ * Prefer loadPolicyAsync for middleware and any async context.
23
+ */
2
24
  export declare function loadPolicy(baseDir: string): Policy;
25
+ /**
26
+ * Invalidate the cache for a given baseDir.
27
+ * Exposed for testing — production code should rely on TTL and mtime invalidation.
28
+ */
29
+ export declare function invalidatePolicyCache(baseDir?: string): void;
3
30
  //# sourceMappingURL=policy-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"policy-loader.d.ts","sourceRoot":"","sources":["../../src/config/policy-loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAuBhD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAoClD"}
1
+ {"version":3,"file":"policy-loader.d.ts","sourceRoot":"","sources":["../../src/config/policy-loader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AA+FhD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA6BtE;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CASlD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAM5D"}