@claudexor/cli 1.0.1 → 2.1.3

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 (221) hide show
  1. package/dist/acp-surface-runner.d.ts +17 -0
  2. package/dist/acp-surface-runner.d.ts.map +1 -0
  3. package/dist/acp-surface-runner.js +187 -0
  4. package/dist/acp-surface-runner.js.map +1 -0
  5. package/dist/args.d.ts.map +1 -1
  6. package/dist/args.js.map +1 -1
  7. package/dist/bridge-serve.d.ts +3 -0
  8. package/dist/bridge-serve.d.ts.map +1 -0
  9. package/dist/bridge-serve.js +39 -0
  10. package/dist/bridge-serve.js.map +1 -0
  11. package/dist/capabilities.d.ts.map +1 -1
  12. package/dist/capabilities.js +12 -3
  13. package/dist/capabilities.js.map +1 -1
  14. package/dist/claude-oauth-usage.d.ts +33 -0
  15. package/dist/claude-oauth-usage.d.ts.map +1 -0
  16. package/dist/claude-oauth-usage.js +190 -0
  17. package/dist/claude-oauth-usage.js.map +1 -0
  18. package/dist/claude-statusline.d.ts +25 -0
  19. package/dist/claude-statusline.d.ts.map +1 -0
  20. package/dist/claude-statusline.js +259 -0
  21. package/dist/claude-statusline.js.map +1 -0
  22. package/dist/claudexord.js +346 -543
  23. package/dist/claudexord.js.map +1 -1
  24. package/dist/cli-io.d.ts +8 -9
  25. package/dist/cli-io.d.ts.map +1 -1
  26. package/dist/cli-io.js +11 -7
  27. package/dist/cli-io.js.map +1 -1
  28. package/dist/cli.js +475 -516
  29. package/dist/cli.js.map +1 -1
  30. package/dist/codex-quota-source.d.ts +11 -0
  31. package/dist/codex-quota-source.d.ts.map +1 -0
  32. package/dist/codex-quota-source.js +181 -0
  33. package/dist/codex-quota-source.js.map +1 -0
  34. package/dist/command-flags.d.ts +18 -0
  35. package/dist/command-flags.d.ts.map +1 -0
  36. package/dist/command-flags.js +124 -0
  37. package/dist/command-flags.js.map +1 -0
  38. package/dist/command-registry.d.ts +2 -40
  39. package/dist/command-registry.d.ts.map +1 -1
  40. package/dist/command-registry.js +74 -164
  41. package/dist/command-registry.js.map +1 -1
  42. package/dist/control-services.d.ts +2490 -0
  43. package/dist/control-services.d.ts.map +1 -0
  44. package/dist/control-services.js +453 -0
  45. package/dist/control-services.js.map +1 -0
  46. package/dist/credential-commands.d.ts +9 -0
  47. package/dist/credential-commands.d.ts.map +1 -0
  48. package/dist/credential-commands.js +224 -0
  49. package/dist/credential-commands.js.map +1 -0
  50. package/dist/daemon-lifecycle.d.ts +7 -3
  51. package/dist/daemon-lifecycle.d.ts.map +1 -1
  52. package/dist/daemon-lifecycle.js +40 -12
  53. package/dist/daemon-lifecycle.js.map +1 -1
  54. package/dist/daemon-run.d.ts +2 -0
  55. package/dist/daemon-run.d.ts.map +1 -1
  56. package/dist/daemon-run.js +62 -14
  57. package/dist/daemon-run.js.map +1 -1
  58. package/dist/daemon-runtime-shutdown.d.ts +58 -0
  59. package/dist/daemon-runtime-shutdown.d.ts.map +1 -0
  60. package/dist/daemon-runtime-shutdown.js +142 -0
  61. package/dist/daemon-runtime-shutdown.js.map +1 -0
  62. package/dist/decision.d.ts.map +1 -1
  63. package/dist/decision.js +12 -3
  64. package/dist/decision.js.map +1 -1
  65. package/dist/live.d.ts +29 -0
  66. package/dist/live.d.ts.map +1 -1
  67. package/dist/live.js +117 -6
  68. package/dist/live.js.map +1 -1
  69. package/dist/local-attachment.d.ts +14 -0
  70. package/dist/local-attachment.d.ts.map +1 -0
  71. package/dist/local-attachment.js +67 -0
  72. package/dist/local-attachment.js.map +1 -0
  73. package/dist/mcp-runner.d.ts +4 -15
  74. package/dist/mcp-runner.d.ts.map +1 -1
  75. package/dist/mcp-runner.js +276 -145
  76. package/dist/mcp-runner.js.map +1 -1
  77. package/dist/native-login.d.ts +21 -0
  78. package/dist/native-login.d.ts.map +1 -0
  79. package/dist/native-login.js +110 -0
  80. package/dist/native-login.js.map +1 -0
  81. package/dist/ops-commands.d.ts +8 -6
  82. package/dist/ops-commands.d.ts.map +1 -1
  83. package/dist/ops-commands.js +250 -168
  84. package/dist/ops-commands.js.map +1 -1
  85. package/dist/orchestrate-options.d.ts.map +1 -1
  86. package/dist/orchestrate-options.js +1 -1
  87. package/dist/orchestrate-options.js.map +1 -1
  88. package/dist/orphan-reaper.d.ts +4 -5
  89. package/dist/orphan-reaper.d.ts.map +1 -1
  90. package/dist/orphan-reaper.js +29 -56
  91. package/dist/orphan-reaper.js.map +1 -1
  92. package/dist/orphan-sweeper.d.ts +1 -2
  93. package/dist/orphan-sweeper.d.ts.map +1 -1
  94. package/dist/orphan-sweeper.js +29 -48
  95. package/dist/orphan-sweeper.js.map +1 -1
  96. package/dist/plugins.d.ts.map +1 -1
  97. package/dist/plugins.js +196 -64
  98. package/dist/plugins.js.map +1 -1
  99. package/dist/primary-output.d.ts.map +1 -1
  100. package/dist/primary-output.js.map +1 -1
  101. package/dist/profile-compatibility.d.ts +6 -0
  102. package/dist/profile-compatibility.d.ts.map +1 -0
  103. package/dist/profile-compatibility.js +21 -0
  104. package/dist/profile-compatibility.js.map +1 -0
  105. package/dist/profile-registration.d.ts +15 -0
  106. package/dist/profile-registration.d.ts.map +1 -0
  107. package/dist/profile-registration.js +68 -0
  108. package/dist/profile-registration.js.map +1 -0
  109. package/dist/project-command.d.ts +3 -0
  110. package/dist/project-command.d.ts.map +1 -0
  111. package/dist/project-command.js +87 -0
  112. package/dist/project-command.js.map +1 -0
  113. package/dist/quota-command.d.ts +3 -0
  114. package/dist/quota-command.d.ts.map +1 -0
  115. package/dist/quota-command.js +59 -0
  116. package/dist/quota-command.js.map +1 -0
  117. package/dist/registry.d.ts +1 -1
  118. package/dist/registry.d.ts.map +1 -1
  119. package/dist/registry.js +16 -4
  120. package/dist/registry.js.map +1 -1
  121. package/dist/release.d.ts.map +1 -1
  122. package/dist/release.js +15 -3
  123. package/dist/release.js.map +1 -1
  124. package/dist/repl.d.ts +3 -8
  125. package/dist/repl.d.ts.map +1 -1
  126. package/dist/repl.js +23 -122
  127. package/dist/repl.js.map +1 -1
  128. package/dist/request-preflight.d.ts +13 -0
  129. package/dist/request-preflight.d.ts.map +1 -0
  130. package/dist/request-preflight.js +81 -0
  131. package/dist/request-preflight.js.map +1 -0
  132. package/dist/retention-service.d.ts +24 -0
  133. package/dist/retention-service.d.ts.map +1 -0
  134. package/dist/retention-service.js +100 -0
  135. package/dist/retention-service.js.map +1 -0
  136. package/dist/retry-command-specs.d.ts +3 -0
  137. package/dist/retry-command-specs.d.ts.map +1 -0
  138. package/dist/retry-command-specs.js +21 -0
  139. package/dist/retry-command-specs.js.map +1 -0
  140. package/dist/retry-command.d.ts +4 -0
  141. package/dist/retry-command.d.ts.map +1 -0
  142. package/dist/retry-command.js +57 -0
  143. package/dist/retry-command.js.map +1 -0
  144. package/dist/review-command.d.ts.map +1 -1
  145. package/dist/review-command.js +47 -12
  146. package/dist/review-command.js.map +1 -1
  147. package/dist/run-options.d.ts +2 -2
  148. package/dist/run-options.d.ts.map +1 -1
  149. package/dist/run-options.js +27 -5
  150. package/dist/run-options.js.map +1 -1
  151. package/dist/settings-command.d.ts.map +1 -1
  152. package/dist/settings-command.js +143 -188
  153. package/dist/settings-command.js.map +1 -1
  154. package/dist/settings-service.d.ts +50 -0
  155. package/dist/settings-service.d.ts.map +1 -1
  156. package/dist/settings-service.js +67 -1
  157. package/dist/settings-service.js.map +1 -1
  158. package/dist/setup-job-reducer.d.ts +9 -0
  159. package/dist/setup-job-reducer.d.ts.map +1 -0
  160. package/dist/setup-job-reducer.js +290 -0
  161. package/dist/setup-job-reducer.js.map +1 -0
  162. package/dist/setup-job-store.d.ts +250 -0
  163. package/dist/setup-job-store.d.ts.map +1 -0
  164. package/dist/setup-job-store.js +359 -0
  165. package/dist/setup-job-store.js.map +1 -0
  166. package/dist/setup-job-support.d.ts +27 -0
  167. package/dist/setup-job-support.d.ts.map +1 -0
  168. package/dist/setup-job-support.js +141 -0
  169. package/dist/setup-job-support.js.map +1 -0
  170. package/dist/setup-jobs.d.ts +437 -22
  171. package/dist/setup-jobs.d.ts.map +1 -1
  172. package/dist/setup-jobs.js +813 -423
  173. package/dist/setup-jobs.js.map +1 -1
  174. package/dist/setup-lifecycle-binding.d.ts +40 -0
  175. package/dist/setup-lifecycle-binding.d.ts.map +1 -0
  176. package/dist/setup-lifecycle-binding.js +159 -0
  177. package/dist/setup-lifecycle-binding.js.map +1 -0
  178. package/dist/setup-login-protocol.d.ts +13 -0
  179. package/dist/setup-login-protocol.d.ts.map +1 -0
  180. package/dist/setup-login-protocol.js +179 -0
  181. package/dist/setup-login-protocol.js.map +1 -0
  182. package/dist/setup-login-runner.d.ts +20 -0
  183. package/dist/setup-login-runner.d.ts.map +1 -0
  184. package/dist/setup-login-runner.js +225 -0
  185. package/dist/setup-login-runner.js.map +1 -0
  186. package/dist/setup-supervisor.d.ts +53 -0
  187. package/dist/setup-supervisor.d.ts.map +1 -0
  188. package/dist/setup-supervisor.js +177 -0
  189. package/dist/setup-supervisor.js.map +1 -0
  190. package/dist/spec-thread-scope.d.ts +3 -0
  191. package/dist/spec-thread-scope.d.ts.map +1 -0
  192. package/dist/spec-thread-scope.js +9 -0
  193. package/dist/spec-thread-scope.js.map +1 -0
  194. package/dist/spec.d.ts +9 -20
  195. package/dist/spec.d.ts.map +1 -1
  196. package/dist/spec.js +49 -21
  197. package/dist/spec.js.map +1 -1
  198. package/dist/thread-delivery.d.ts +18 -0
  199. package/dist/thread-delivery.d.ts.map +1 -0
  200. package/dist/thread-delivery.js +67 -0
  201. package/dist/thread-delivery.js.map +1 -0
  202. package/dist/thread-select.d.ts +9 -0
  203. package/dist/thread-select.d.ts.map +1 -0
  204. package/dist/thread-select.js +12 -0
  205. package/dist/thread-select.js.map +1 -0
  206. package/dist/trust-command.d.ts.map +1 -1
  207. package/dist/trust-command.js +69 -61
  208. package/dist/trust-command.js.map +1 -1
  209. package/dist/trust-services.d.ts +5 -6
  210. package/dist/trust-services.d.ts.map +1 -1
  211. package/dist/trust-services.js +42 -13
  212. package/dist/trust-services.js.map +1 -1
  213. package/package.json +24 -22
  214. package/dist/attachment-resolver.d.ts +0 -11
  215. package/dist/attachment-resolver.d.ts.map +0 -1
  216. package/dist/attachment-resolver.js +0 -61
  217. package/dist/attachment-resolver.js.map +0 -1
  218. package/dist/settings-display.d.ts +0 -3
  219. package/dist/settings-display.d.ts.map +0 -1
  220. package/dist/settings-display.js +0 -33
  221. package/dist/settings-display.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQpD,MAAM,WAAW,eAAe;IAC9B,mFAAmF;IACnF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,GAAE,eAAoB,GAAG,eAAe,CAsBzE;AAED,wBAAgB,YAAY,CAAC,IAAI,GAAE,eAAoB,GAAG,cAAc,CAEvE;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAoB/H"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAQpD,MAAM,WAAW,eAAe;IAC9B,mFAAmF;IACnF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,GAAE,eAAoB,GAAG,eAAe,CAsBzE;AAED,wBAAgB,YAAY,CAAC,IAAI,GAAE,eAAoB,GAAG,cAAc,CAEvE;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,YAAY,UAAQ,EACpB,KAAK,CAAC,EAAE,eAAe,GAAG,SAAS,GAClC,OAAO,CAAC,4BAA4B,CAAC,CAmCvC"}
package/dist/registry.js CHANGED
@@ -47,23 +47,35 @@ export function buildGateway(opts = {}) {
47
47
  * only when the harness has no truth source at all. Fails soft — adapter
48
48
  * models() already swallows network/auth errors and returns [].
49
49
  */
50
- export async function harnessModels(harnessId, cwd, includeFakes = false) {
50
+ export async function harnessModels(harnessId, cwd, includeFakes = false, route) {
51
51
  const adapter = buildRegistry({ includeFakes }).get(harnessId);
52
52
  if (!adapter) {
53
53
  return { harnessId, models: [], source: "none", verifiedAgainst: null };
54
54
  }
55
55
  if (typeof adapter.models === "function") {
56
+ // A live enumeration already reflects the credentials it ran under; the
57
+ // route filter applies to manifest annotations only.
56
58
  const models = await adapter.models({ cwd });
57
- return { harnessId, models, source: "api", verifiedAgainst: null };
59
+ return {
60
+ harnessId,
61
+ models: models.map((m) => ({ ...m, routes: m.routes ?? null })),
62
+ source: "api",
63
+ verifiedAgainst: null,
64
+ };
58
65
  }
59
66
  const manifest = await adapter.discover();
60
- const known = manifest.capabilities.known_models;
67
+ const known = manifest.capabilities.known_models.filter((entry) =>
68
+ // Route filter (one matcher shape with the governance gate): a bare string
69
+ // is every-route; an annotated entry must include the requested route.
70
+ typeof entry === "string" ? true : route === undefined || entry.routes.includes(route));
61
71
  if (known.length === 0) {
62
72
  return { harnessId, models: [], source: "none", verifiedAgainst: null };
63
73
  }
64
74
  return {
65
75
  harnessId,
66
- models: known.map((id) => ({ id, label: null, context_window: null })),
76
+ models: known.map((entry) => typeof entry === "string"
77
+ ? { id: entry, label: null, context_window: null, routes: null }
78
+ : { id: entry.id, label: null, context_window: null, routes: entry.routes }),
67
79
  source: "manifest",
68
80
  verifiedAgainst: manifest.capabilities.known_models_verified_against,
69
81
  };
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../src/release.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAC5D,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,gBAAgB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAWD;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAoBlE"}
1
+ {"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../src/release.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAC5D,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,gBAAgB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAWD;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAkClE"}
package/dist/release.js CHANGED
@@ -19,13 +19,25 @@ export async function checkName(name) {
19
19
  const npm = await head(`https://registry.npmjs.org/${encodeURIComponent(lc)}`);
20
20
  checks.push({ registry: "npm", availability: availability(npm), detail: status(npm) });
21
21
  const npmScoped = await head(`https://registry.npmjs.org/${encodeURIComponent("@" + lc + "/cli")}`);
22
- checks.push({ registry: "npm (@scope/cli)", availability: availability(npmScoped), detail: status(npmScoped) });
22
+ checks.push({
23
+ registry: "npm (@scope/cli)",
24
+ availability: availability(npmScoped),
25
+ detail: status(npmScoped),
26
+ });
23
27
  const pypi = await head(`https://pypi.org/pypi/${encodeURIComponent(lc)}/json`);
24
28
  checks.push({ registry: "pypi", availability: availability(pypi), detail: status(pypi) });
25
29
  const crates = await head(`https://crates.io/api/v1/crates/${encodeURIComponent(lc)}`);
26
- checks.push({ registry: "crates.io", availability: availability(crates), detail: status(crates) });
30
+ checks.push({
31
+ registry: "crates.io",
32
+ availability: availability(crates),
33
+ detail: status(crates),
34
+ });
27
35
  const ghUser = await head(`https://github.com/${encodeURIComponent(lc)}`);
28
- checks.push({ registry: "github org/user", availability: availability(ghUser), detail: status(ghUser) });
36
+ checks.push({
37
+ registry: "github org/user",
38
+ availability: availability(ghUser),
39
+ detail: status(ghUser),
40
+ });
29
41
  return checks;
30
42
  }
31
43
  function availability(code) {
@@ -1 +1 @@
1
- {"version":3,"file":"release.js","sourceRoot":"","sources":["../src/release.ts"],"names":[],"mappings":"AAOA,KAAK,UAAU,IAAI,CAAC,GAAW;IAC7B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAChD,OAAO,GAAG,CAAC,MAAM,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAgB,EAAE,CAAC;IAE/B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,8BAA8B,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/E,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEvF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,8BAA8B,kBAAkB,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IACpG,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,YAAY,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAEhH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,yBAAyB,kBAAkB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAChF,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE1F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mCAAmC,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACvF,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEnG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1E,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAEzG,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,MAAM,CAAC;IAChC,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,OAAO,CAAC;IACjC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,MAAM,CAAC,IAAY;IAC1B,IAAI,IAAI,KAAK,CAAC,CAAC;QAAE,OAAO,wBAAwB,CAAC;IACjD,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,YAAY,CAAC;IACtC,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,aAAa,CAAC;IACvC,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,wCAAwC,CAAC;IAClE,OAAO,QAAQ,IAAI,YAAY,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"release.js","sourceRoot":"","sources":["../src/release.ts"],"names":[],"mappings":"AAOA,KAAK,UAAU,IAAI,CAAC,GAAW;IAC7B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAChD,OAAO,GAAG,CAAC,MAAM,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAgB,EAAE,CAAC;IAE/B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,8BAA8B,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/E,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEvF,MAAM,SAAS,GAAG,MAAM,IAAI,CAC1B,8BAA8B,kBAAkB,CAAC,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,CACtE,CAAC;IACF,MAAM,CAAC,IAAI,CAAC;QACV,QAAQ,EAAE,kBAAkB;QAC5B,YAAY,EAAE,YAAY,CAAC,SAAS,CAAC;QACrC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC;KAC1B,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,yBAAyB,kBAAkB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;IAChF,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAE1F,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mCAAmC,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACvF,MAAM,CAAC,IAAI,CAAC;QACV,QAAQ,EAAE,WAAW;QACrB,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC;QAClC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;KACvB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,sBAAsB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1E,MAAM,CAAC,IAAI,CAAC;QACV,QAAQ,EAAE,iBAAiB;QAC3B,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC;QAClC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;KACvB,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,MAAM,CAAC;IAChC,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,OAAO,CAAC;IACjC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,MAAM,CAAC,IAAY;IAC1B,IAAI,IAAI,KAAK,CAAC,CAAC;QAAE,OAAO,wBAAwB,CAAC;IACjD,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,YAAY,CAAC;IACtC,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,aAAa,CAAC;IACvC,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,wCAAwC,CAAC;IAClE,OAAO,QAAQ,IAAI,YAAY,CAAC;AAClC,CAAC"}
package/dist/repl.d.ts CHANGED
@@ -1,6 +1,4 @@
1
1
  import type { ModeKind } from "@claudexor/schema";
2
- /** Does this REPL turn mode mutate the tree? (such turns are daemon-only.) */
3
- export declare function replModeIsMutating(mode: ModeKind): boolean;
4
2
  interface ReplTurnSpec {
5
3
  mode: ModeKind;
6
4
  prompt: string;
@@ -14,12 +12,9 @@ declare function parseReplLine(line: string): ReplTurnSpec | {
14
12
  * Interactive REPL: `claudexor` with no arguments. A thread of turns over the
15
13
  * project in the current directory. The REPL is a THIN CLIENT of the control
16
14
  * API — threads live in the daemon SSOT and appear in the macOS app; turns
17
- * stream live through the same follow pipeline. If no daemon is up we AUTO-START
18
- * one (the same path `claudexor agent` uses) so mutating turns are daemon-tracked.
19
- * Only when the daemon cannot be started at all do we fall back to an
20
- * in-process engine — and that fallback serves READ-ONLY turns only; a mutating
21
- * (agent) turn there FAILS LOUDLY rather than silently running an in-process
22
- * Orchestrator that mutates the tree but no daemon tracks (un-unblockable).
15
+ * stream live through the same follow pipeline. If no daemon is up, the CLI
16
+ * starts the managed daemon; startup failure is surfaced instead of creating a
17
+ * second in-process thread/run authority.
23
18
  */
24
19
  export declare function runRepl(repoRoot: string): Promise<number>;
25
20
  export { parseReplLine };
@@ -1 +1 @@
1
- {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAalD,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAE1D;AAOD,UAAU,YAAY;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,iBAAS,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG;IAAE,OAAO,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA6BxH;AAaD;;;;;;;;;;GAUG;AACH,wBAAsB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAc/D;AAqLD,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AASlD,UAAU,YAAY;IACpB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,iBAAS,aAAa,CACpB,IAAI,EAAE,MAAM,GACX,YAAY,GAAG;IAAE,OAAO,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA6BrF;AAED;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAU/D;AAiID,OAAO,EAAE,aAAa,EAAE,CAAC"}
package/dist/repl.js CHANGED
@@ -1,20 +1,8 @@
1
1
  import { createInterface } from "node:readline";
2
2
  import process from "node:process";
3
- import { Orchestrator } from "@claudexor/orchestrator";
4
- import { buildRegistry } from "./registry.js";
5
3
  import { renderReplHelp } from "./command-registry.js";
6
- import { controlApiAddress, followRun } from "./live.js";
4
+ import { controlApiFetch, followRun } from "./live.js";
7
5
  import { ensureDaemon } from "./daemon-run.js";
8
- /** REPL turn modes that MUTATE the tree. These are ALWAYS daemon-tracked —
9
- * there is NO in-process fallback for a mutating run (a run no daemon tracks is
10
- * un-unblockable by the apply gate). Read-only turns (ask/plan/audit, and
11
- * orchestrate which only plans in the REPL — no --autonomy surface here) may run
12
- * locally when the daemon cannot be started. */
13
- const MUTATING_REPL_MODES = new Set(["agent"]);
14
- /** Does this REPL turn mode mutate the tree? (such turns are daemon-only.) */
15
- export function replModeIsMutating(mode) {
16
- return MUTATING_REPL_MODES.has(mode);
17
- }
18
6
  // Rendered from the command registry (REPL_COMMANDS) — the same one owner
19
7
  // as the main CLI help.
20
8
  const REPL_HELP = renderReplHelp();
@@ -50,47 +38,32 @@ function parseReplLine(line) {
50
38
  return { command: "help" };
51
39
  }
52
40
  }
53
- /** Daemon control-api reachable right now? (threads SSOT lives there). */
54
- async function daemonAddress() {
55
- try {
56
- const addr = controlApiAddress();
57
- const res = await fetch(`${addr.baseUrl}/healthz`, { signal: AbortSignal.timeout(1500) });
58
- return res.ok ? addr : null;
59
- }
60
- catch {
61
- return null;
62
- }
63
- }
64
41
  /**
65
42
  * Interactive REPL: `claudexor` with no arguments. A thread of turns over the
66
43
  * project in the current directory. The REPL is a THIN CLIENT of the control
67
44
  * API — threads live in the daemon SSOT and appear in the macOS app; turns
68
- * stream live through the same follow pipeline. If no daemon is up we AUTO-START
69
- * one (the same path `claudexor agent` uses) so mutating turns are daemon-tracked.
70
- * Only when the daemon cannot be started at all do we fall back to an
71
- * in-process engine — and that fallback serves READ-ONLY turns only; a mutating
72
- * (agent) turn there FAILS LOUDLY rather than silently running an in-process
73
- * Orchestrator that mutates the tree but no daemon tracks (un-unblockable).
45
+ * stream live through the same follow pipeline. If no daemon is up, the CLI
46
+ * starts the managed daemon; startup failure is surfaced instead of creating a
47
+ * second in-process thread/run authority.
74
48
  */
75
49
  export async function runRepl(repoRoot) {
76
- const reachable = await daemonAddress();
77
- if (reachable)
78
- return runDaemonRepl(repoRoot, reachable);
79
- // No daemon reachable: auto-start it (mutating REPL turns MUST be daemon-tracked).
80
50
  try {
81
51
  const { addr } = await ensureDaemon();
82
52
  return runDaemonRepl(repoRoot, addr);
83
53
  }
84
54
  catch (err) {
85
- process.stdout.write(`claudexor: could not start the daemon (${err instanceof Error ? err.message : String(err)}).\n` +
86
- `Falling back to a local, READ-ONLY REPL — write turns require the daemon and will be refused.\n`);
87
- return runLocalRepl(repoRoot);
55
+ process.stderr.write(`claudexor: could not start the daemon (${err instanceof Error ? err.message : String(err)})\n`);
56
+ return 1;
88
57
  }
89
58
  }
90
59
  async function runDaemonRepl(repoRoot, addr) {
91
60
  const headers = { Authorization: `Bearer ${addr.token}`, "content-type": "application/json" };
92
61
  const api = async (method, path, body) => {
93
- const res = await fetch(`${addr.baseUrl}${path}`, { method, headers, body: body === undefined ? undefined : JSON.stringify(body) });
62
+ const res = await controlApiFetch(addr, path, {
63
+ method,
64
+ headers,
65
+ body: body === undefined ? undefined : JSON.stringify(body),
66
+ });
94
67
  const text = await res.text();
95
68
  const json = text ? JSON.parse(text) : {};
96
69
  if (!res.ok)
@@ -107,13 +80,20 @@ async function runDaemonRepl(repoRoot, addr) {
107
80
  const ensureThread = async (title) => {
108
81
  if (!thread) {
109
82
  const effectiveTitle = title ?? pendingTitle;
110
- thread = await api("POST", "/threads", { ...(effectiveTitle ? { title: effectiveTitle } : {}), scope: { kind: "project", root: repoRoot } });
83
+ thread = await api("POST", "/threads", {
84
+ ...(effectiveTitle ? { title: effectiveTitle } : {}),
85
+ scope: { kind: "project", root: repoRoot },
86
+ });
111
87
  pendingTitle = undefined;
112
88
  }
113
89
  return thread;
114
90
  };
115
91
  process.stdout.write(`claudexor REPL on ${repoRoot} (daemon-backed; the thread appears in the app on your first message)\nType /help for commands.\n`);
116
- const rl = createInterface({ input: process.stdin, output: process.stdout, prompt: "claudexor> " });
92
+ const rl = createInterface({
93
+ input: process.stdin,
94
+ output: process.stdout,
95
+ prompt: "claudexor> ",
96
+ });
117
97
  rl.prompt();
118
98
  for await (const line of rl) {
119
99
  const parsed = parseReplLine(line);
@@ -132,7 +112,9 @@ async function runDaemonRepl(repoRoot, addr) {
132
112
  // the empty-thread litter `/new` then quit was meant to avoid.
133
113
  thread = null;
134
114
  pendingTitle = parsed.arg || undefined;
135
- process.stdout.write(pendingTitle ? `new thread (will be titled on your first message)\n` : "new thread (starts on your next message)\n");
115
+ process.stdout.write(pendingTitle
116
+ ? `new thread (will be titled on your first message)\n`
117
+ : "new thread (starts on your next message)\n");
136
118
  }
137
119
  if (parsed.command === "thread") {
138
120
  if (!thread) {
@@ -192,86 +174,5 @@ async function runDaemonRepl(repoRoot, addr) {
192
174
  process.stdout.write("bye\n");
193
175
  return 0;
194
176
  }
195
- async function runLocalRepl(repoRoot) {
196
- // No daemon (and it could not be auto-started): in-process engine with
197
- // EPHEMERAL, in-memory continuity. There is no durable thread store here (the
198
- // daemon owns threads.json single-writer); native session ids are kept in
199
- // memory for this process so plan->continue still resumes within the session,
200
- // and nothing is persisted/shared. This path is READ-ONLY — mutating
201
- // (agent) turns are refused, never run in-process and left un-unblockable.
202
- const orch = new Orchestrator({ registry: buildRegistry() });
203
- let sessions = new Map();
204
- const localTurns = [];
205
- process.stdout.write(`claudexor REPL on ${repoRoot} (local engine; READ-ONLY ephemeral thread — start the daemon for write turns and to persist/share with the app)\nType /help for commands.\n`);
206
- const rl = createInterface({ input: process.stdin, output: process.stdout, prompt: "claudexor> " });
207
- rl.prompt();
208
- for await (const line of rl) {
209
- const parsed = parseReplLine(line);
210
- if (!parsed) {
211
- rl.prompt();
212
- continue;
213
- }
214
- if ("command" in parsed) {
215
- if (parsed.command === "quit")
216
- break;
217
- if (parsed.command === "help")
218
- process.stdout.write(REPL_HELP + "\n");
219
- if (parsed.command === "new") {
220
- sessions = new Map();
221
- localTurns.length = 0;
222
- process.stdout.write("new ephemeral thread\n");
223
- }
224
- if (parsed.command === "thread") {
225
- process.stdout.write(`ephemeral thread — ${localTurns.length} turn(s)\n`);
226
- for (const t of localTurns)
227
- process.stdout.write(` run=${t.runId ?? "-"} [${t.status}] :: ${t.prompt.slice(0, 80)}\n`);
228
- for (const [harnessId, nativeId] of sessions)
229
- process.stdout.write(` session ${harnessId} native=${nativeId}\n`);
230
- }
231
- rl.prompt();
232
- continue;
233
- }
234
- if (!parsed.prompt) {
235
- process.stdout.write("(empty prompt)\n");
236
- rl.prompt();
237
- continue;
238
- }
239
- // a mutating turn must be daemon-tracked. The local engine cannot
240
- // produce an applicable/unblockable run, so refuse it loudly here instead of
241
- // silently mutating the tree with a run no daemon owns.
242
- if (replModeIsMutating(parsed.mode)) {
243
- process.stdout.write("write turns require the daemon (start it with `claudexor daemon start`, then retry); this local REPL serves read-only turns (/ask, /plan, /audit, /orchestrate) only\n");
244
- rl.prompt();
245
- continue;
246
- }
247
- try {
248
- const res = await orch.run({
249
- repoRoot,
250
- prompt: parsed.prompt,
251
- mode: parsed.mode,
252
- n: parsed.race ? 2 : undefined,
253
- resumeSessions: Object.fromEntries(sessions),
254
- onSessionObserved: (harnessId, nativeSessionId) => sessions.set(harnessId, nativeSessionId),
255
- onHarnessEvent: (ev) => {
256
- if (ev.type === "message" && ev.text)
257
- process.stdout.write(ev.text.endsWith("\n") ? ev.text : ev.text + "\n");
258
- else if (ev.type === "tool_call" && ev.tool)
259
- process.stdout.write(` [tool] ${ev.tool.name}${ev.tool.target ? `: ${ev.tool.target}` : ""}\n`);
260
- else if (ev.type === "error" && ev.error)
261
- process.stdout.write(` [error] ${ev.error}\n`);
262
- },
263
- });
264
- localTurns.push({ runId: res.runId, status: res.status, prompt: parsed.prompt });
265
- process.stdout.write(`\n[turn done] status=${res.status} run=${res.runId}\n${res.summary ? res.summary.split("\n").slice(0, 6).join("\n") + "\n" : ""}`);
266
- }
267
- catch (err) {
268
- process.stdout.write(`turn failed: ${err instanceof Error ? err.message : String(err)}\n`);
269
- }
270
- rl.prompt();
271
- }
272
- rl.close();
273
- process.stdout.write("bye\n");
274
- return 0;
275
- }
276
177
  export { parseReplLine };
277
178
  //# sourceMappingURL=repl.js.map
package/dist/repl.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAkB,MAAM,eAAe,CAAC;AAChE,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAA0B,iBAAiB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C;;;;gDAIgD;AAChD,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AAEzD,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB,CAAC,IAAc;IAC/C,OAAO,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAGD,0EAA0E;AAC1E,wBAAwB;AACxB,MAAM,SAAS,GAAG,cAAc,EAAE,CAAC;AAQnC,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACxE,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAClC,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,KAAK;YACR,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QACtC,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QACvC,KAAK,OAAO;YACV,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QACxC,KAAK,SAAS;YACZ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACpD,KAAK,aAAa;YAChB,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QAC9C,KAAK,QAAQ;YACX,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QAC/B,KAAK,KAAK;YACR,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QACjC,KAAK,MAAM;YACT,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM;YACT,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC7B;YACE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,KAAK,UAAU,aAAa;IAC1B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,UAAU,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1F,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,QAAgB;IAC5C,MAAM,SAAS,GAAG,MAAM,aAAa,EAAE,CAAC;IACxC,IAAI,SAAS;QAAE,OAAO,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACzD,mFAAmF;IACnF,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,YAAY,EAAE,CAAC;QACtC,OAAO,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,0CAA0C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM;YAC9F,iGAAiG,CACpG,CAAC;QACF,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,IAAuB;IACpE,MAAM,OAAO,GAAG,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IAC9F,MAAM,GAAG,GAAG,KAAK,EAAE,MAAc,EAAE,IAAY,EAAE,IAAc,EAAgB,EAAE;QAC/E,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpI,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QAClG,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,2EAA2E;IAC3E,yEAAyE;IACzE,6EAA6E;IAC7E,mCAAmC;IACnC,IAAI,MAAM,GAAQ,IAAI,CAAC;IACvB,8EAA8E;IAC9E,IAAI,YAAgC,CAAC;IACrC,MAAM,YAAY,GAAG,KAAK,EAAE,KAAc,EAAgB,EAAE;QAC1D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,cAAc,GAAG,KAAK,IAAI,YAAY,CAAC;YAC7C,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC7I,YAAY,GAAG,SAAS,CAAC;QAC3B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,QAAQ,mGAAmG,CAAC,CAAC;IACvJ,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACpG,EAAE,CAAC,MAAM,EAAE,CAAC;IAEZ,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,EAAE,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS;QACX,CAAC;QACD,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YACxB,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM;gBAAE,MAAM;YACrC,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;YACtE,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC7B,sEAAsE;gBACtE,uEAAuE;gBACvE,+DAA+D;gBAC/D,MAAM,GAAG,IAAI,CAAC;gBACd,YAAY,GAAG,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC;gBACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC;YAC5I,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;oBACtE,EAAE,CAAC,MAAM,EAAE,CAAC;oBACZ,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,YAAY,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC7E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,UAAU,KAAK,CAAC,CAAC;oBAC5F,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE;wBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,IAAI,GAAG,QAAQ,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;oBAChK,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE;wBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,eAAe,IAAI,GAAG,UAAU,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CAAC,CAAC;gBACvJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACrG,CAAC;YACH,CAAC;YACD,EAAE,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS;QACX,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACzC,EAAE,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,YAAY,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;gBACnF,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjC,CAAC,CAAC;YACH,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,oEAAoE;gBACpE,oEAAoE;gBACpE,mCAAmC;gBACnC,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,IAAI,CAAC;oBACH,MAAM,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;gBAChD,CAAC;wBAAS,CAAC;oBACT,EAAE,CAAC,MAAM,EAAE,CAAC;gBACd,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7F,CAAC;QACD,EAAE,CAAC,MAAM,EAAE,CAAC;IACd,CAAC;IACD,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,uEAAuE;IACvE,8EAA8E;IAC9E,0EAA0E;IAC1E,8EAA8E;IAC9E,qEAAqE;IACrE,2EAA2E;IAC3E,MAAM,IAAI,GAAG,IAAI,YAAY,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;IAC7D,IAAI,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,MAAM,UAAU,GAA+D,EAAE,CAAC;IAElF,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qBAAqB,QAAQ,8IAA8I,CAC5K,CAAC;IACF,MAAM,EAAE,GAAc,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAC/G,EAAE,CAAC,MAAM,EAAE,CAAC;IAEZ,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,EAAE,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS;QACX,CAAC;QACD,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YACxB,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM;gBAAE,MAAM;YACrC,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;YACtE,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC7B,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;gBACrB,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;gBACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACjD,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,UAAU,CAAC,MAAM,YAAY,CAAC,CAAC;gBAC1E,KAAK,MAAM,CAAC,IAAI,UAAU;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,CAAC,MAAM,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;gBACxH,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,QAAQ;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,SAAS,WAAW,QAAQ,IAAI,CAAC,CAAC;YACpH,CAAC;YACD,EAAE,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS;QACX,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACzC,EAAE,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS;QACX,CAAC;QACD,kEAAkE;QAClE,6EAA6E;QAC7E,wDAAwD;QACxD,IAAI,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wKAAwK,CACzK,CAAC;YACF,EAAE,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC;gBACzB,QAAQ;gBACR,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC9B,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;gBAC5C,iBAAiB,EAAE,CAAC,SAAS,EAAE,eAAe,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC;gBAC3F,cAAc,EAAE,CAAC,EAAE,EAAE,EAAE;oBACrB,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,CAAC,IAAI;wBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;yBACzG,IAAI,EAAE,CAAC,IAAI,KAAK,WAAW,IAAI,EAAE,CAAC,IAAI;wBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;yBACzI,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,EAAE,CAAC,KAAK;wBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC;gBAC5F,CAAC;aACF,CAAC,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACjF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,GAAG,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3J,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7F,CAAC;QACD,EAAE,CAAC,MAAM,EAAE,CAAC;IACd,CAAC;IACD,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,CAAC;AACX,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAA0B,SAAS,EAAE,MAAM,WAAW,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,0EAA0E;AAC1E,wBAAwB;AACxB,MAAM,SAAS,GAAG,cAAc,EAAE,CAAC;AAQnC,SAAS,aAAa,CACpB,IAAY;IAEZ,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACxE,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAClC,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,KAAK;YACR,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QACtC,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QACvC,KAAK,OAAO;YACV,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QACxC,KAAK,SAAS;YACZ,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACpD,KAAK,aAAa;YAChB,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QAC9C,KAAK,QAAQ;YACX,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;QAC/B,KAAK,KAAK;YACR,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QACjC,KAAK,MAAM;YACT,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC;QACZ,KAAK,MAAM;YACT,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC7B;YACE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,QAAgB;IAC5C,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,YAAY,EAAE,CAAC;QACtC,OAAO,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,0CAA0C,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAChG,CAAC;QACF,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,IAAuB;IACpE,MAAM,OAAO,GAAG,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IAC9F,MAAM,GAAG,GAAG,KAAK,EAAE,MAAc,EAAE,IAAY,EAAE,IAAc,EAAgB,EAAE;QAC/E,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE;YAC5C,MAAM;YACN,OAAO;YACP,IAAI,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC5D,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,2EAA2E;IAC3E,yEAAyE;IACzE,6EAA6E;IAC7E,mCAAmC;IACnC,IAAI,MAAM,GAAQ,IAAI,CAAC;IACvB,8EAA8E;IAC9E,IAAI,YAAgC,CAAC;IACrC,MAAM,YAAY,GAAG,KAAK,EAAE,KAAc,EAAgB,EAAE;QAC1D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,cAAc,GAAG,KAAK,IAAI,YAAY,CAAC;YAC7C,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE;gBACrC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC3C,CAAC,CAAC;YACH,YAAY,GAAG,SAAS,CAAC;QAC3B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qBAAqB,QAAQ,mGAAmG,CACjI,CAAC;IACF,MAAM,EAAE,GAAG,eAAe,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,aAAa;KACtB,CAAC,CAAC;IACH,EAAE,CAAC,MAAM,EAAE,CAAC;IAEZ,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,EAAE,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS;QACX,CAAC;QACD,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YACxB,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM;gBAAE,MAAM;YACrC,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;YACtE,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC7B,sEAAsE;gBACtE,uEAAuE;gBACvE,+DAA+D;gBAC/D,MAAM,GAAG,IAAI,CAAC;gBACd,YAAY,GAAG,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC;gBACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,YAAY;oBACV,CAAC,CAAC,qDAAqD;oBACvD,CAAC,CAAC,4CAA4C,CACjD,CAAC;YACJ,CAAC;YACD,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;oBACtE,EAAE,CAAC,MAAM,EAAE,CAAC;oBACZ,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,YAAY,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC7E,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,UAAU,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,UAAU,KAAK,CACtE,CAAC;oBACF,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE;wBAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,IAAI,GAAG,QAAQ,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CACtG,CAAC;oBACJ,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE;wBACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,aAAa,CAAC,CAAC,SAAS,WAAW,CAAC,CAAC,eAAe,IAAI,GAAG,UAAU,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,CACxF,CAAC;gBACN,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wBAAwB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAC7E,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,EAAE,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS;QACX,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACzC,EAAE,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;YACpC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,YAAY,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE;gBACnF,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACjC,CAAC,CAAC;YACH,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAClB,oEAAoE;gBACpE,oEAAoE;gBACpE,mCAAmC;gBACnC,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,IAAI,CAAC;oBACH,MAAM,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;gBAChD,CAAC;wBAAS,CAAC;oBACT,EAAE,CAAC,MAAM,EAAE,CAAC;gBACd,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7F,CAAC;QACD,EAAE,CAAC,MAAM,EAAE,CAAC;IACd,CAAC;IACD,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,CAAC;AACX,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { AdapterRegistry } from "@claudexor/core";
2
+ import type { ResourceStore } from "@claudexor/daemon";
3
+ import type { HarnessStatus } from "@claudexor/gateway";
4
+ import type { AccessProfile, ControlRunStartRequest } from "@claudexor/schema";
5
+ interface RunRequirementsPreflightDependencies {
6
+ statusAll?: (cwd: string) => Promise<Array<Pick<HarnessStatus, "id" | "status" | "enabledIntents">>>;
7
+ registry?: AdapterRegistry;
8
+ accessDefault?: (cwd: string) => AccessProfile;
9
+ }
10
+ /** Refuse requests that no selected lane can satisfy before a run or turn is created. */
11
+ export declare function createRunRequirementsPreflight(resources: Pick<ResourceStore, "resolve">, noProjectRoot: string, dependencies?: RunRequirementsPreflightDependencies): (request: ControlRunStartRequest) => Promise<void>;
12
+ export {};
13
+ //# sourceMappingURL=request-preflight.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-preflight.d.ts","sourceRoot":"","sources":["../src/request-preflight.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAU,MAAM,mBAAmB,CAAC;AAWvF,UAAU,oCAAoC;IAC5C,SAAS,CAAC,EAAE,CACV,GAAG,EAAE,MAAM,KACR,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,QAAQ,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAC7E,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,aAAa,CAAC;CAChD;AAED,yFAAyF;AACzF,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,EACzC,aAAa,EAAE,MAAM,EACrB,YAAY,GAAE,oCAAyC,GACtD,CAAC,OAAO,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,CAgFpD"}
@@ -0,0 +1,81 @@
1
+ import { loadConfig } from "@claudexor/config";
2
+ import { RequestRequirementsResolver } from "@claudexor/orchestrator";
3
+ import { buildGateway, buildRegistry } from "./registry.js";
4
+ const modeIntent = {
5
+ agent: "implement",
6
+ ask: "explain",
7
+ plan: "plan",
8
+ audit: "audit",
9
+ orchestrate: "orchestrate",
10
+ };
11
+ /** Refuse requests that no selected lane can satisfy before a run or turn is created. */
12
+ export function createRunRequirementsPreflight(resources, noProjectRoot, dependencies = {}) {
13
+ const requirements = new RequestRequirementsResolver();
14
+ return async (request) => {
15
+ if ((request.attachments?.length ?? 0) === 0 && request.browser !== true)
16
+ return;
17
+ const cwd = request.scope.kind === "project" ? request.scope.root : noProjectRoot;
18
+ const explicitPool = (request.harnesses?.length ?? 0) > 0;
19
+ const intent = modeIntent[request.mode ?? "agent"];
20
+ let harnessIds = request.harnesses ?? [];
21
+ if (harnessIds.length === 0) {
22
+ const statuses = dependencies.statusAll
23
+ ? await dependencies.statusAll(cwd)
24
+ : await buildGateway({ includeFakes: false }).statusAll({ cwd });
25
+ harnessIds = statuses
26
+ .filter((status) => status.status === "ok" && status.enabledIntents.includes(intent))
27
+ .map((status) => status.id);
28
+ }
29
+ if (harnessIds.length === 0) {
30
+ throw requestError("no eligible harness lane can satisfy this request", 400, "request_requirements_unavailable");
31
+ }
32
+ const registry = dependencies.registry ?? buildRegistry({ includeFakes: true });
33
+ const attachments = resources.resolve(request.attachments ?? []);
34
+ const manifests = await Promise.all(harnessIds.map(async (harnessId) => {
35
+ const adapter = registry.get(harnessId);
36
+ if (!adapter)
37
+ throw requestError(`unknown harness lane: ${harnessId}`, 400, "harness_unavailable");
38
+ return { harnessId, manifest: await adapter.discover() };
39
+ }));
40
+ const compatibleManifests = [];
41
+ for (const { harnessId, manifest } of manifests) {
42
+ const refusal = requirements.attachmentRefusal(harnessId, attachments, manifest.capability_profile.attachment_inputs);
43
+ if (refusal) {
44
+ if (explicitPool)
45
+ throw requestError(refusal, 400, "attachment_pool_unsupported");
46
+ continue;
47
+ }
48
+ compatibleManifests.push({ harnessId, manifest });
49
+ }
50
+ if (compatibleManifests.length === 0) {
51
+ throw requestError("no eligible harness lane can receive every required attachment", 400, "attachment_pool_unsupported");
52
+ }
53
+ if (request.browser !== true)
54
+ return;
55
+ const access = intent === "implement"
56
+ ? (request.access ??
57
+ (dependencies.accessDefault
58
+ ? dependencies.accessDefault(cwd)
59
+ : loadConfig(cwd).trust.access_default))
60
+ : "readonly";
61
+ const resolutions = compatibleManifests.map(({ harnessId, manifest }) => requirements.resolveBrowser({
62
+ harnessId,
63
+ requested: true,
64
+ manifestCapable: manifest.capabilities.browser_tool,
65
+ webPolicy: request.externalContextPolicy ?? request.web ?? "auto",
66
+ access,
67
+ }));
68
+ try {
69
+ requirements.requireEffectiveBrowser(true, resolutions);
70
+ }
71
+ catch (error) {
72
+ throw Object.assign(error instanceof Error ? error : new Error(String(error)), {
73
+ status: 400,
74
+ });
75
+ }
76
+ };
77
+ }
78
+ function requestError(message, status, code) {
79
+ return Object.assign(new Error(message), { status, code });
80
+ }
81
+ //# sourceMappingURL=request-preflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-preflight.js","sourceRoot":"","sources":["../src/request-preflight.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { ProjectPartitions, ProjectStore } from "@claudexor/daemon";
2
+ import type { ControlGcReceipt, ControlGcRequest } from "@claudexor/schema";
3
+ export interface RetentionRunnerDeps {
4
+ projects: () => ProjectStore;
5
+ threads: ProjectPartitions;
6
+ daemonJobs: () => Promise<Array<{
7
+ runId?: string;
8
+ state: string;
9
+ finishedAt?: string;
10
+ }>>;
11
+ }
12
+ export type RetentionRunner = (request: ControlGcRequest) => Promise<ControlGcReceipt>;
13
+ export declare function createRetentionRunner(deps: RetentionRunnerDeps): RetentionRunner;
14
+ /**
15
+ * SCHEDULE one bounded retention pass after ownership+ready (W3.6) — it never
16
+ * blocks boot, and the unref'd timer never keeps a stopping daemon alive.
17
+ * Failures are logged, never fatal.
18
+ */
19
+ export declare function scheduleStartupRetention(runner: RetentionRunner, opts: {
20
+ logPath: string;
21
+ shuttingDown: () => boolean;
22
+ delayMs?: number;
23
+ }): void;
24
+ //# sourceMappingURL=retention-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retention-service.d.ts","sourceRoot":"","sources":["../src/retention-service.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAO5E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,YAAY,CAAC;IAC7B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,UAAU,EAAE,MAAM,OAAO,CAAC,KAAK,CAAC;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CAC1F;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAEvF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,GAAG,eAAe,CA4EhF;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GACvE,IAAI,CAkBN"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Composition of the daemon-owned retention service (W3.6): binds the
3
+ * control-api retention pass to the daemon's live truth — the project
4
+ * registry, thread lineage references, and journal-projected job records —
5
+ * and schedules the bounded startup maintenance pass. `claudexor gc` and the
6
+ * control route are thin callers of the runner built here.
7
+ */
8
+ import { join } from "node:path";
9
+ import { ArtifactStore } from "@claudexor/artifact-store";
10
+ import { runRetentionPass } from "@claudexor/control-api";
11
+ import { loadConfig } from "@claudexor/config";
12
+ import { noProjectRepoRoot } from "@claudexor/util";
13
+ import { logLine } from "./daemon-lifecycle.js";
14
+ export function createRetentionRunner(deps) {
15
+ const noProjectRoot = noProjectRepoRoot();
16
+ // Serialize passes (review sol #7): the startup pass and any concurrent
17
+ // `claudexor gc` / control-op invocation must not interleave rmSync +
18
+ // tombstone writes on the same candidates, which would double-count
19
+ // freed_bytes and cross-report deletions between receipts.
20
+ let inFlight = null;
21
+ const runOnce = async (request) => {
22
+ // Policy is read fresh per pass (configurable without restart); the
23
+ // reference set spans EVERY non-purged thread's full run lineage.
24
+ const retention = loadConfig(noProjectRoot).global.retention;
25
+ const jobs = await deps.daemonJobs();
26
+ const records = jobs
27
+ .filter((job) => Boolean(job.runId))
28
+ .map((job) => ({ runId: job.runId, state: job.state, finishedAt: job.finishedAt }));
29
+ const referencedRunIds = () => {
30
+ const referenced = new Set();
31
+ for (const thread of deps.threads.listThreads()) {
32
+ for (const id of thread.run_ids)
33
+ referenced.add(id);
34
+ if (thread.head_run_id)
35
+ referenced.add(thread.head_run_id);
36
+ for (const turn of deps.threads.turnsFor(thread.id)) {
37
+ for (const id of [turn.run_id, turn.parent_run_id, turn.plan_run_id]) {
38
+ if (id)
39
+ referenced.add(id);
40
+ }
41
+ }
42
+ }
43
+ return referenced;
44
+ };
45
+ // Fail CLOSED on a quarantined partition (review sol #6/#7): the
46
+ // reference set (listThreads/turnsFor) and job records both come ONLY
47
+ // from ready partitions. A project whose partition journal is not ready
48
+ // contributes an EMPTY reference set — GC'ing its runs against that would
49
+ // delete runs a live thread still references. So GC only project roots
50
+ // whose partition is ready; a quarantined project's runs are protected
51
+ // until it recovers. The no-project root has no partition and is always
52
+ // eligible.
53
+ const healthyRoots = new Set(deps.threads.healthyProjectRoots());
54
+ const roots = [
55
+ ...new Set([
56
+ ...deps
57
+ .projects()
58
+ .list()
59
+ .map((p) => p.root)
60
+ .filter((root) => healthyRoots.has(root)),
61
+ noProjectRoot,
62
+ ]),
63
+ ];
64
+ const gcProjects = roots.map((root) => ({
65
+ root,
66
+ runsDir: new ArtifactStore(root).runsDir(),
67
+ // Standalone diff-review debris lives in the user's repo; the
68
+ // no-project root has none.
69
+ reviewsDir: root === noProjectRoot ? null : join(root, ".claudexor", "reviews"),
70
+ }));
71
+ return runRetentionPass({
72
+ runsMaxAgeDays: retention.runs_max_age_days,
73
+ reviewsMaxAgeDays: retention.reviews_max_age_days,
74
+ keepLastRunsPerProject: retention.keep_last_runs_per_project,
75
+ }, request, { projects: () => gcProjects, records: () => records, referencedRunIds });
76
+ };
77
+ return (request) => {
78
+ const chained = (inFlight ?? Promise.resolve()).then(() => runOnce(request), () => runOnce(request));
79
+ inFlight = chained;
80
+ return chained.finally(() => {
81
+ if (inFlight === chained)
82
+ inFlight = null;
83
+ });
84
+ };
85
+ }
86
+ /**
87
+ * SCHEDULE one bounded retention pass after ownership+ready (W3.6) — it never
88
+ * blocks boot, and the unref'd timer never keeps a stopping daemon alive.
89
+ * Failures are logged, never fatal.
90
+ */
91
+ export function scheduleStartupRetention(runner, opts) {
92
+ const timer = setTimeout(() => {
93
+ if (opts.shuttingDown())
94
+ return;
95
+ void runner({ dry_run: false }).then((receipt) => logLine(opts.logPath, `retention: freed ${receipt.freed_bytes} bytes (${receipt.deleted_runs.length} runs, ` +
96
+ `${receipt.deleted_reviews.length} reviews, ${receipt.errors.length} errors)`), (error) => logLine(opts.logPath, `retention FAILED: ${error instanceof Error ? error.message : String(error)}`));
97
+ }, opts.delayMs ?? 60_000);
98
+ timer.unref?.();
99
+ }
100
+ //# sourceMappingURL=retention-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retention-service.js","sourceRoot":"","sources":["../src/retention-service.ts"],"names":[],"mappings":"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"}