@claudexor/cli 3.1.2 → 3.2.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 (235) hide show
  1. package/dist/about-command.d.ts.map +1 -1
  2. package/dist/accounts-projection.d.ts +8 -1
  3. package/dist/accounts-projection.d.ts.map +1 -1
  4. package/dist/accounts-projection.js +33 -20
  5. package/dist/accounts-projection.js.map +1 -1
  6. package/dist/accounts-services.d.ts +206 -0
  7. package/dist/accounts-services.d.ts.map +1 -0
  8. package/dist/accounts-services.js +71 -0
  9. package/dist/accounts-services.js.map +1 -0
  10. package/dist/acp-surface-runner.d.ts +39 -0
  11. package/dist/acp-surface-runner.d.ts.map +1 -1
  12. package/dist/acp-surface-runner.js +104 -30
  13. package/dist/acp-surface-runner.js.map +1 -1
  14. package/dist/attachment-upload.d.ts +5 -0
  15. package/dist/attachment-upload.d.ts.map +1 -0
  16. package/dist/attachment-upload.js +64 -0
  17. package/dist/attachment-upload.js.map +1 -0
  18. package/dist/capabilities.d.ts.map +1 -1
  19. package/dist/capabilities.js +6 -1
  20. package/dist/capabilities.js.map +1 -1
  21. package/dist/choice-input.d.ts +7 -0
  22. package/dist/choice-input.d.ts.map +1 -0
  23. package/dist/choice-input.js +17 -0
  24. package/dist/choice-input.js.map +1 -0
  25. package/dist/claude-oauth-usage.js.map +1 -1
  26. package/dist/claudexord-entry.js.map +1 -1
  27. package/dist/claudexord.d.ts +1 -13
  28. package/dist/claudexord.d.ts.map +1 -1
  29. package/dist/claudexord.js +45 -69
  30. package/dist/claudexord.js.map +1 -1
  31. package/dist/cli-error.d.ts.map +1 -1
  32. package/dist/cli-error.js +21 -11
  33. package/dist/cli-error.js.map +1 -1
  34. package/dist/cli.js +143 -163
  35. package/dist/cli.js.map +1 -1
  36. package/dist/codex-device-login.js.map +1 -1
  37. package/dist/codex-quota-source.js.map +1 -1
  38. package/dist/command-flags.d.ts +16 -1
  39. package/dist/command-flags.d.ts.map +1 -1
  40. package/dist/command-flags.js +41 -19
  41. package/dist/command-flags.js.map +1 -1
  42. package/dist/command-registry.d.ts +21 -8
  43. package/dist/command-registry.d.ts.map +1 -1
  44. package/dist/command-registry.js +59 -116
  45. package/dist/command-registry.js.map +1 -1
  46. package/dist/command-scope.d.ts +13 -0
  47. package/dist/command-scope.d.ts.map +1 -0
  48. package/dist/command-scope.js +61 -0
  49. package/dist/command-scope.js.map +1 -0
  50. package/dist/control-services.d.ts +1631 -1003
  51. package/dist/control-services.d.ts.map +1 -1
  52. package/dist/control-services.js +38 -65
  53. package/dist/control-services.js.map +1 -1
  54. package/dist/credential-commands.d.ts.map +1 -1
  55. package/dist/credential-commands.js +13 -3
  56. package/dist/credential-commands.js.map +1 -1
  57. package/dist/daemon-lifecycle.d.ts.map +1 -1
  58. package/dist/daemon-outcome.d.ts +3 -5
  59. package/dist/daemon-outcome.d.ts.map +1 -1
  60. package/dist/daemon-outcome.js +7 -19
  61. package/dist/daemon-outcome.js.map +1 -1
  62. package/dist/daemon-run.d.ts +21 -12
  63. package/dist/daemon-run.d.ts.map +1 -1
  64. package/dist/daemon-run.js +59 -40
  65. package/dist/daemon-run.js.map +1 -1
  66. package/dist/daemon-runtime-shutdown.d.ts +7 -0
  67. package/dist/daemon-runtime-shutdown.d.ts.map +1 -1
  68. package/dist/daemon-runtime-shutdown.js +29 -0
  69. package/dist/daemon-runtime-shutdown.js.map +1 -1
  70. package/dist/delegation-belt-descriptor.js.map +1 -1
  71. package/dist/delegation-output.d.ts +2 -0
  72. package/dist/delegation-output.d.ts.map +1 -1
  73. package/dist/delegation-output.js +3 -1
  74. package/dist/delegation-output.js.map +1 -1
  75. package/dist/harness-command.d.ts +13 -0
  76. package/dist/harness-command.d.ts.map +1 -0
  77. package/dist/harness-command.js +35 -0
  78. package/dist/harness-command.js.map +1 -0
  79. package/dist/harness-installer.d.ts +79 -0
  80. package/dist/harness-installer.d.ts.map +1 -0
  81. package/dist/harness-installer.js +256 -0
  82. package/dist/harness-installer.js.map +1 -0
  83. package/dist/interaction-prompt.d.ts +19 -0
  84. package/dist/interaction-prompt.d.ts.map +1 -0
  85. package/dist/interaction-prompt.js +114 -0
  86. package/dist/interaction-prompt.js.map +1 -0
  87. package/dist/live.d.ts +2 -6
  88. package/dist/live.d.ts.map +1 -1
  89. package/dist/live.js +88 -75
  90. package/dist/live.js.map +1 -1
  91. package/dist/mcp-daemon-unavailable.d.ts +6 -0
  92. package/dist/mcp-daemon-unavailable.d.ts.map +1 -0
  93. package/dist/mcp-daemon-unavailable.js +16 -0
  94. package/dist/mcp-daemon-unavailable.js.map +1 -0
  95. package/dist/mcp-run-projections.d.ts +29 -0
  96. package/dist/mcp-run-projections.d.ts.map +1 -1
  97. package/dist/mcp-run-projections.js +17 -17
  98. package/dist/mcp-run-projections.js.map +1 -1
  99. package/dist/mcp-runner.d.ts.map +1 -1
  100. package/dist/mcp-runner.js +81 -39
  101. package/dist/mcp-runner.js.map +1 -1
  102. package/dist/native-login.js.map +1 -1
  103. package/dist/ops-command-specs.d.ts +64 -0
  104. package/dist/ops-command-specs.d.ts.map +1 -0
  105. package/dist/ops-command-specs.js +146 -0
  106. package/dist/ops-command-specs.js.map +1 -0
  107. package/dist/ops-commands.d.ts.map +1 -1
  108. package/dist/ops-commands.js +23 -5
  109. package/dist/ops-commands.js.map +1 -1
  110. package/dist/orphan-reaper.js.map +1 -1
  111. package/dist/output-mode.d.ts +11 -0
  112. package/dist/output-mode.d.ts.map +1 -0
  113. package/dist/output-mode.js +28 -0
  114. package/dist/output-mode.js.map +1 -0
  115. package/dist/plan-question-loop.d.ts.map +1 -1
  116. package/dist/plan-question-loop.js +16 -13
  117. package/dist/plan-question-loop.js.map +1 -1
  118. package/dist/plugins.js +1 -1
  119. package/dist/plugins.js.map +1 -1
  120. package/dist/primary-output.d.ts +9 -4
  121. package/dist/primary-output.d.ts.map +1 -1
  122. package/dist/primary-output.js +50 -2
  123. package/dist/primary-output.js.map +1 -1
  124. package/dist/quota-subject-universe.d.ts +6 -0
  125. package/dist/quota-subject-universe.d.ts.map +1 -0
  126. package/dist/quota-subject-universe.js +31 -0
  127. package/dist/quota-subject-universe.js.map +1 -0
  128. package/dist/registry.js.map +1 -1
  129. package/dist/release-command.d.ts +1 -1
  130. package/dist/release-command.js +2 -2
  131. package/dist/remote-command-specs.d.ts +45 -0
  132. package/dist/remote-command-specs.d.ts.map +1 -0
  133. package/dist/remote-command-specs.js +29 -0
  134. package/dist/remote-command-specs.js.map +1 -0
  135. package/dist/remote-command.d.ts +11 -0
  136. package/dist/remote-command.d.ts.map +1 -0
  137. package/dist/remote-command.js +262 -0
  138. package/dist/remote-command.js.map +1 -0
  139. package/dist/remote-filesystem.d.ts +33 -0
  140. package/dist/remote-filesystem.d.ts.map +1 -0
  141. package/dist/remote-filesystem.js +280 -0
  142. package/dist/remote-filesystem.js.map +1 -0
  143. package/dist/repo-asset-authority.js.map +1 -1
  144. package/dist/request-preflight.d.ts +11 -2
  145. package/dist/request-preflight.d.ts.map +1 -1
  146. package/dist/request-preflight.js +36 -13
  147. package/dist/request-preflight.js.map +1 -1
  148. package/dist/retry-command-specs.d.ts.map +1 -1
  149. package/dist/retry-command-specs.js +2 -0
  150. package/dist/retry-command-specs.js.map +1 -1
  151. package/dist/run-applicability.d.ts +74 -0
  152. package/dist/run-applicability.d.ts.map +1 -0
  153. package/dist/run-applicability.js +72 -0
  154. package/dist/run-applicability.js.map +1 -0
  155. package/dist/run-detail-projections.d.ts +23 -0
  156. package/dist/run-detail-projections.d.ts.map +1 -1
  157. package/dist/run-detail-projections.js +32 -1
  158. package/dist/run-detail-projections.js.map +1 -1
  159. package/dist/run-detail-response.d.ts +7 -0
  160. package/dist/run-detail-response.d.ts.map +1 -0
  161. package/dist/run-detail-response.js +23 -0
  162. package/dist/run-detail-response.js.map +1 -0
  163. package/dist/run-facts-projection.d.ts +22 -0
  164. package/dist/run-facts-projection.d.ts.map +1 -0
  165. package/dist/run-facts-projection.js +86 -0
  166. package/dist/run-facts-projection.js.map +1 -0
  167. package/dist/runtime-replacement-stop.d.ts +25 -0
  168. package/dist/runtime-replacement-stop.d.ts.map +1 -0
  169. package/dist/runtime-replacement-stop.js +145 -0
  170. package/dist/runtime-replacement-stop.js.map +1 -0
  171. package/dist/settings-command.d.ts +1 -0
  172. package/dist/settings-command.d.ts.map +1 -1
  173. package/dist/settings-command.js +27 -21
  174. package/dist/settings-command.js.map +1 -1
  175. package/dist/settings-service.d.ts +7 -7
  176. package/dist/settings-service.d.ts.map +1 -1
  177. package/dist/settings-service.js +3 -3
  178. package/dist/settings-service.js.map +1 -1
  179. package/dist/setup-client-pty.d.ts +14 -0
  180. package/dist/setup-client-pty.d.ts.map +1 -0
  181. package/dist/setup-client-pty.js +61 -0
  182. package/dist/setup-client-pty.js.map +1 -0
  183. package/dist/setup-device-code-disclosure.d.ts +15 -0
  184. package/dist/setup-device-code-disclosure.d.ts.map +1 -0
  185. package/dist/setup-device-code-disclosure.js +52 -0
  186. package/dist/setup-device-code-disclosure.js.map +1 -0
  187. package/dist/setup-job-reducer.d.ts.map +1 -1
  188. package/dist/setup-job-reducer.js +1 -0
  189. package/dist/setup-job-reducer.js.map +1 -1
  190. package/dist/setup-job-store.d.ts +275 -75
  191. package/dist/setup-job-store.d.ts.map +1 -1
  192. package/dist/setup-job-store.js.map +1 -1
  193. package/dist/setup-job-support.js.map +1 -1
  194. package/dist/setup-jobs.d.ts +517 -137
  195. package/dist/setup-jobs.d.ts.map +1 -1
  196. package/dist/setup-jobs.js +68 -118
  197. package/dist/setup-jobs.js.map +1 -1
  198. package/dist/setup-lifecycle-binding.d.ts +7 -0
  199. package/dist/setup-lifecycle-binding.d.ts.map +1 -1
  200. package/dist/setup-lifecycle-binding.js +6 -0
  201. package/dist/setup-lifecycle-binding.js.map +1 -1
  202. package/dist/setup-login-child-lifecycle.d.ts +13 -0
  203. package/dist/setup-login-child-lifecycle.d.ts.map +1 -0
  204. package/dist/setup-login-child-lifecycle.js +45 -0
  205. package/dist/setup-login-child-lifecycle.js.map +1 -0
  206. package/dist/setup-login-inline.d.ts +11 -12
  207. package/dist/setup-login-inline.d.ts.map +1 -1
  208. package/dist/setup-login-inline.js +26 -15
  209. package/dist/setup-login-inline.js.map +1 -1
  210. package/dist/setup-login-permit.d.ts +10 -0
  211. package/dist/setup-login-permit.d.ts.map +1 -0
  212. package/dist/setup-login-permit.js +52 -0
  213. package/dist/setup-login-permit.js.map +1 -0
  214. package/dist/setup-login-protocol.d.ts.map +1 -1
  215. package/dist/setup-login-protocol.js +9 -2
  216. package/dist/setup-login-protocol.js.map +1 -1
  217. package/dist/setup-login-runner.d.ts +1 -0
  218. package/dist/setup-login-runner.d.ts.map +1 -1
  219. package/dist/setup-login-runner.js +20 -31
  220. package/dist/setup-login-runner.js.map +1 -1
  221. package/dist/setup-supervisor.d.ts.map +1 -1
  222. package/dist/setup-supervisor.js.map +1 -1
  223. package/dist/terminal-run-output.d.ts +12 -0
  224. package/dist/terminal-run-output.d.ts.map +1 -0
  225. package/dist/terminal-run-output.js +33 -0
  226. package/dist/terminal-run-output.js.map +1 -0
  227. package/dist/thread-execution-workspace.d.ts +15 -0
  228. package/dist/thread-execution-workspace.d.ts.map +1 -1
  229. package/dist/thread-execution-workspace.js +39 -5
  230. package/dist/thread-execution-workspace.js.map +1 -1
  231. package/dist/thread-turn-services.d.ts +104 -0
  232. package/dist/thread-turn-services.d.ts.map +1 -0
  233. package/dist/thread-turn-services.js +27 -0
  234. package/dist/thread-turn-services.js.map +1 -0
  235. package/package.json +23 -23
@@ -0,0 +1,280 @@
1
+ import { closeSync, constants, accessSync, fstatSync, openSync, readSync, readdirSync, realpathSync, statSync, } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { isAbsolute, join, relative, resolve, sep } from "node:path";
4
+ import { ControlDirectoryListing } from "@claudexor/schema";
5
+ const MAX_DIRECTORY_ENTRIES = 1_000;
6
+ const MAX_PROJECT_FILE_BYTES = 25 * 1024 * 1024;
7
+ // Enough bytes to identify every allowed raster signature (WebP needs 12).
8
+ const IMAGE_HEADER_BYTES = 12;
9
+ const PNG_MAGIC = Buffer.from([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
10
+ /**
11
+ * QA-067: the project-file endpoint exists for exactly one consumer — the
12
+ * remote markdown image gallery. Content type is identified by magic bytes,
13
+ * never by file name: a file whose leading bytes are not a known raster
14
+ * signature is refused before any further content is read. A matching file's
15
+ * REMAINING bytes are then served verbatim — the sniff authenticates the
16
+ * header only, not the whole container, so a raster-prefixed polyglot (PNG
17
+ * magic + arbitrary tail) is served in full. Accepted risk: writing such a
18
+ * file into a registered project already requires owning the remote user.
19
+ * SVG is deliberately excluded: it is a scripting-capable text format, not a
20
+ * raster image.
21
+ */
22
+ function sniffRasterImage(header) {
23
+ if (header.length >= 8 && header.subarray(0, 8).equals(PNG_MAGIC))
24
+ return "image/png";
25
+ if (header.length >= 3 && header[0] === 0xff && header[1] === 0xd8 && header[2] === 0xff) {
26
+ return "image/jpeg";
27
+ }
28
+ if (header.length >= 6) {
29
+ const gif = header.subarray(0, 6).toString("latin1");
30
+ if (gif === "GIF87a" || gif === "GIF89a")
31
+ return "image/gif";
32
+ }
33
+ if (header.length >= 12 &&
34
+ header.subarray(0, 4).toString("latin1") === "RIFF" &&
35
+ header.subarray(8, 12).toString("latin1") === "WEBP") {
36
+ return "image/webp";
37
+ }
38
+ return null;
39
+ }
40
+ /**
41
+ * QA-067: hidden trees under HOME (`~/.ssh`, `~/.gnupg`, `~/.aws`, harness
42
+ * homes, …) are where credentials and secret-bearing names live, and no
43
+ * legitimate remote project root lives inside one — so the picker neither
44
+ * lists a hidden directory nor lists INTO one.
45
+ */
46
+ function hiddenUnderHome(home, canonical) {
47
+ const rel = relative(home, canonical);
48
+ if (rel === "")
49
+ return false;
50
+ return rel.split(sep).some((segment) => segment.startsWith("."));
51
+ }
52
+ function contained(root, candidate) {
53
+ const rel = relative(root, candidate);
54
+ return rel === "" || (!rel.startsWith(`..${sep}`) && rel !== ".." && !isAbsolute(rel));
55
+ }
56
+ /**
57
+ * QA-067: a refusal must not be an existence oracle. The listing deliberately
58
+ * hides hidden trees and everything outside HOME, so the four refusal causes
59
+ * — absent, outside home, not a directory, hidden — must be indistinguishable
60
+ * by status, code, and message: one typed refusal with constant text that
61
+ * never echoes the requested path. Distinct responses here would confirm
62
+ * guessed secret-bearing names the listing never discloses.
63
+ */
64
+ function refuseDirectoryListing() {
65
+ throw Object.assign(new Error("directory is not listable"), {
66
+ status: 404,
67
+ code: "directory_not_listable",
68
+ });
69
+ }
70
+ function canonicalDirectory(path, root) {
71
+ // Shape-only validation (no filesystem state involved) may stay specific.
72
+ if (!isAbsolute(path)) {
73
+ throw Object.assign(new Error("directory path must be absolute"), { status: 400 });
74
+ }
75
+ let canonical;
76
+ try {
77
+ canonical = realpathSync(path);
78
+ }
79
+ catch {
80
+ refuseDirectoryListing();
81
+ }
82
+ if (!contained(root, canonical))
83
+ refuseDirectoryListing();
84
+ if (!statSync(canonical).isDirectory())
85
+ refuseDirectoryListing();
86
+ if (hiddenUnderHome(root, canonical))
87
+ refuseDirectoryListing();
88
+ return canonical;
89
+ }
90
+ export function listRemoteDirectory(requestedPath, homePath = homedir()) {
91
+ const home = realpathSync(homePath);
92
+ const path = canonicalDirectory(requestedPath || home, home);
93
+ const candidates = [];
94
+ for (const name of readdirSync(path)) {
95
+ // QA-067: project selection needs visible directories only — file names
96
+ // and dot-entries are undisclosed (they can carry secret-bearing names).
97
+ if (name.startsWith("."))
98
+ continue;
99
+ const lexical = join(path, name);
100
+ try {
101
+ const target = realpathSync(lexical);
102
+ if (!contained(home, target) || hiddenUnderHome(home, target))
103
+ continue;
104
+ const stat = statSync(target);
105
+ if (!stat.isDirectory())
106
+ continue;
107
+ let readable = true;
108
+ try {
109
+ accessSync(target, constants.R_OK);
110
+ }
111
+ catch {
112
+ readable = false;
113
+ }
114
+ candidates.push({
115
+ name,
116
+ path: target,
117
+ kind: "directory",
118
+ readable,
119
+ });
120
+ }
121
+ catch {
122
+ // Broken and inaccessible symlinks are not actionable picker entries.
123
+ }
124
+ }
125
+ candidates.sort((left, right) => left.name.localeCompare(right.name));
126
+ const entries = candidates.slice(0, MAX_DIRECTORY_ENTRIES);
127
+ const parentPath = path === home ? null : resolve(path, "..");
128
+ return ControlDirectoryListing.parse({
129
+ path,
130
+ home,
131
+ parent: parentPath && contained(home, parentPath) ? parentPath : null,
132
+ entries,
133
+ truncated: candidates.length > MAX_DIRECTORY_ENTRIES,
134
+ });
135
+ }
136
+ export function readScopedProjectFile(projects, projectId, requestedPath) {
137
+ const project = projects.get(projectId);
138
+ if (!project)
139
+ throw Object.assign(new Error(`no such project: ${projectId}`), { status: 404 });
140
+ if (!requestedPath ||
141
+ isAbsolute(requestedPath) ||
142
+ requestedPath.includes("\0") ||
143
+ requestedPath.split(/[\\/]/).includes("..")) {
144
+ throw Object.assign(new Error("project file path must be a contained relative path"), {
145
+ status: 400,
146
+ });
147
+ }
148
+ const root = realpathSync(project.root);
149
+ const lexical = resolve(root, requestedPath);
150
+ let canonical;
151
+ let expected;
152
+ try {
153
+ canonical = realpathSync(lexical);
154
+ expected = statSync(canonical);
155
+ }
156
+ catch {
157
+ throw Object.assign(new Error("project file does not exist"), { status: 404 });
158
+ }
159
+ if (!contained(root, canonical)) {
160
+ throw Object.assign(new Error("project file path escapes its registered project"), {
161
+ status: 403,
162
+ code: "project_file_path_escape",
163
+ });
164
+ }
165
+ let descriptor;
166
+ try {
167
+ descriptor = openSync(canonical, constants.O_RDONLY | constants.O_NOFOLLOW);
168
+ }
169
+ catch {
170
+ throw Object.assign(new Error("project file changed or is not a regular file"), {
171
+ status: 409,
172
+ code: "project_file_changed",
173
+ });
174
+ }
175
+ try {
176
+ const openedPath = openedDescriptorPath(descriptor, canonical);
177
+ if (!contained(root, openedPath)) {
178
+ throw Object.assign(new Error("opened project file escapes its registered project"), {
179
+ status: 403,
180
+ code: "project_file_path_escape",
181
+ });
182
+ }
183
+ const before = fstatSync(descriptor);
184
+ if (before.dev !== expected.dev || before.ino !== expected.ino || !before.isFile()) {
185
+ throw Object.assign(new Error("project file changed before it was opened"), {
186
+ status: 409,
187
+ code: "project_file_changed",
188
+ });
189
+ }
190
+ if (before.size > MAX_PROJECT_FILE_BYTES) {
191
+ throw Object.assign(new Error(`project file exceeds the ${MAX_PROJECT_FILE_BYTES} byte fetch limit`), { status: 413, code: "project_file_too_large" });
192
+ }
193
+ const buffer = Buffer.allocUnsafe(Math.min(MAX_PROJECT_FILE_BYTES + 1, before.size + 1));
194
+ let bytes = 0;
195
+ // Sniff the magic bytes FIRST: a non-image is refused before its content
196
+ // is read (QA-067 — this endpoint must never page a secret into memory).
197
+ while (bytes < Math.min(IMAGE_HEADER_BYTES, buffer.length)) {
198
+ const count = readSync(descriptor, buffer, bytes, Math.min(IMAGE_HEADER_BYTES, buffer.length) - bytes, null);
199
+ if (count === 0)
200
+ break;
201
+ bytes += count;
202
+ }
203
+ const contentType = sniffRasterImage(buffer.subarray(0, bytes));
204
+ if (!contentType) {
205
+ throw Object.assign(new Error("project file fetch serves raster images only"), {
206
+ status: 415,
207
+ code: "project_file_not_raster_image",
208
+ });
209
+ }
210
+ for (;;) {
211
+ const count = readSync(descriptor, buffer, bytes, buffer.length - bytes, null);
212
+ if (count === 0)
213
+ break;
214
+ bytes += count;
215
+ if (bytes > MAX_PROJECT_FILE_BYTES) {
216
+ throw Object.assign(new Error(`project file exceeds the ${MAX_PROJECT_FILE_BYTES} byte fetch limit`), { status: 413, code: "project_file_too_large" });
217
+ }
218
+ }
219
+ const after = fstatSync(descriptor);
220
+ let finalPath;
221
+ let final;
222
+ try {
223
+ finalPath = realpathSync(lexical);
224
+ final = statSync(finalPath);
225
+ }
226
+ catch {
227
+ throw Object.assign(new Error("project file changed while it was being read"), {
228
+ status: 409,
229
+ code: "project_file_changed",
230
+ });
231
+ }
232
+ if (before.dev !== after.dev ||
233
+ before.ino !== after.ino ||
234
+ after.size !== bytes ||
235
+ final.dev !== after.dev ||
236
+ final.ino !== after.ino ||
237
+ finalPath !== canonical) {
238
+ throw Object.assign(new Error("project file changed while it was being read"), {
239
+ status: 409,
240
+ code: "project_file_changed",
241
+ });
242
+ }
243
+ return {
244
+ data: buffer.subarray(0, bytes),
245
+ contentType,
246
+ fileName: openedPath.split(sep).at(-1) ?? "remote-file",
247
+ };
248
+ }
249
+ finally {
250
+ closeSync(descriptor);
251
+ }
252
+ }
253
+ /**
254
+ * QA-067: the filesystem routes exist for the SSH remote runtime (the app
255
+ * browses the remote host through the control tunnel). A local daemon must not
256
+ * grow a generic bearer-reachable filesystem surface, so the services — and
257
+ * with them the routes, which answer 501 without a bound service — are wired
258
+ * only when the process runs as the remote runtime.
259
+ */
260
+ export function remoteFilesystemServices(projects, env = process.env) {
261
+ if (env.CLAUDEXOR_REMOTE_RUNTIME !== "1")
262
+ return {};
263
+ return {
264
+ listDirectory: async (path) => listRemoteDirectory(path),
265
+ fetchProjectFile: async (projectId, path) => readScopedProjectFile(projects(), projectId, path),
266
+ };
267
+ }
268
+ function openedDescriptorPath(descriptor, fallback) {
269
+ // Linux exposes the kernel-bound pathname for an open descriptor. Darwin's
270
+ // /dev/fd entries are not symlinks and realpath cannot recover F_GETPATH, so
271
+ // the inode checks before and after the bounded descriptor read remain the
272
+ // portability fence there.
273
+ try {
274
+ return realpathSync(`/proc/self/fd/${descriptor}`);
275
+ }
276
+ catch {
277
+ return fallback;
278
+ }
279
+ }
280
+ //# sourceMappingURL=remote-filesystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-filesystem.js","sourceRoot":"","sources":["../src/remote-filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,QAAQ,GACT,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAErE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,MAAM,qBAAqB,GAAG,KAAK,CAAC;AACpC,MAAM,sBAAsB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAChD,2EAA2E;AAC3E,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAEhF;;;;;;;;;;;GAWG;AACH,SAAS,gBAAgB,CAAC,MAAc;IACtC,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;QAAE,OAAO,WAAW,CAAC;IACtF,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACzF,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,QAAQ;YAAE,OAAO,WAAW,CAAC;IAC/D,CAAC;IACD,IACE,MAAM,CAAC,MAAM,IAAI,EAAE;QACnB,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,MAAM;QACnD,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,MAAM,EACpD,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe,CAAC,IAAY,EAAE,SAAiB;IACtD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACtC,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,KAAK,CAAC;IAC7B,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,SAAiB;IAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACtC,OAAO,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACzF,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,sBAAsB;IAC7B,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,EAAE;QAC1D,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,wBAAwB;KAC/B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY,EAAE,IAAY;IACpD,0EAA0E;IAC1E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,IAAI,SAAiB,CAAC;IACtB,IAAI,CAAC;QACH,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC;QAAE,sBAAsB,EAAE,CAAC;IAC1D,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;QAAE,sBAAsB,EAAE,CAAC;IACjE,IAAI,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC;QAAE,sBAAsB,EAAE,CAAC;IAC/D,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,aAAiC,EAAE,QAAQ,GAAG,OAAO,EAAE;IACzF,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,kBAAkB,CAAC,aAAa,IAAI,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,wEAAwE;QACxE,yEAAyE;QACzE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC;gBAAE,SAAS;YACxE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAAE,SAAS;YAClC,IAAI,QAAQ,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC;gBACH,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;YACD,UAAU,CAAC,IAAI,CAAC;gBACd,IAAI;gBACJ,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,WAAoB;gBAC1B,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;QACxE,CAAC;IACH,CAAC;IACD,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9D,OAAO,uBAAuB,CAAC,KAAK,CAAC;QACnC,IAAI;QACJ,IAAI;QACJ,MAAM,EAAE,UAAU,IAAI,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;QACrE,OAAO;QACP,SAAS,EAAE,UAAU,CAAC,MAAM,GAAG,qBAAqB;KACrD,CAAC,CAAC;AACL,CAAC;AAQD,MAAM,UAAU,qBAAqB,CACnC,QAAsB,EACtB,SAAiB,EACjB,aAAqB;IAErB,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO;QAAE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/F,IACE,CAAC,aAAa;QACd,UAAU,CAAC,aAAa,CAAC;QACzB,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC5B,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC3C,CAAC;QACD,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qDAAqD,CAAC,EAAE;YACpF,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC;IACL,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC7C,IAAI,SAAiB,CAAC;IACtB,IAAI,QAAqC,CAAC;IAC1C,IAAI,CAAC;QACH,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAClC,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;QAChC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,kDAAkD,CAAC,EAAE;YACjF,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,0BAA0B;SACjC,CAAC,CAAC;IACL,CAAC;IACD,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACH,UAAU,GAAG,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,+CAA+C,CAAC,EAAE;YAC9E,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,sBAAsB;SAC7B,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,oBAAoB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC;YACjC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,oDAAoD,CAAC,EAAE;gBACnF,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,0BAA0B;aACjC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACnF,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,2CAA2C,CAAC,EAAE;gBAC1E,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,sBAAsB;aAC7B,CAAC,CAAC;QACL,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,GAAG,sBAAsB,EAAE,CAAC;YACzC,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CAAC,4BAA4B,sBAAsB,mBAAmB,CAAC,EAChF,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAChD,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,sBAAsB,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;QACzF,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,yEAAyE;QACzE,yEAAyE;QACzE,OAAO,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3D,MAAM,KAAK,GAAG,QAAQ,CACpB,UAAU,EACV,MAAM,EACN,KAAK,EACL,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,EACnD,IAAI,CACL,CAAC;YACF,IAAI,KAAK,KAAK,CAAC;gBAAE,MAAM;YACvB,KAAK,IAAI,KAAK,CAAC;QACjB,CAAC;QACD,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,8CAA8C,CAAC,EAAE;gBAC7E,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,+BAA+B;aACtC,CAAC,CAAC;QACL,CAAC;QACD,SAAS,CAAC;YACR,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;YAC/E,IAAI,KAAK,KAAK,CAAC;gBAAE,MAAM;YACvB,KAAK,IAAI,KAAK,CAAC;YACf,IAAI,KAAK,GAAG,sBAAsB,EAAE,CAAC;gBACnC,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CAAC,4BAA4B,sBAAsB,mBAAmB,CAAC,EAChF,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAChD,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,SAAiB,CAAC;QACtB,IAAI,KAAkC,CAAC;QACvC,IAAI,CAAC;YACH,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YAClC,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,8CAA8C,CAAC,EAAE;gBAC7E,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,sBAAsB;aAC7B,CAAC,CAAC;QACL,CAAC;QACD,IACE,MAAM,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG;YACxB,MAAM,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG;YACxB,KAAK,CAAC,IAAI,KAAK,KAAK;YACpB,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG;YACvB,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG;YACvB,SAAS,KAAK,SAAS,EACvB,CAAC;YACD,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,8CAA8C,CAAC,EAAE;gBAC7E,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,sBAAsB;aAC7B,CAAC,CAAC;QACL,CAAC;QACD,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC;YAC/B,WAAW;YACX,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa;SACxD,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,UAAU,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAOD;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAA4B,EAC5B,GAAG,GAAsB,OAAO,CAAC,GAAG;IAEpC,IAAI,GAAG,CAAC,wBAAwB,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC;IACpD,OAAO;QACL,aAAa,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;QACjE,gBAAgB,EAAE,KAAK,EAAE,SAAiB,EAAE,IAAY,EAAE,EAAE,CAC1D,qBAAqB,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC;KACrD,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAkB,EAAE,QAAgB;IAChE,2EAA2E;IAC3E,6EAA6E;IAC7E,2EAA2E;IAC3E,2BAA2B;IAC3B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,iBAAiB,UAAU,EAAE,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"repo-asset-authority.js","sourceRoot":"","sources":["../src/repo-asset-authority.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repo-asset-authority.js","sourceRoot":"","sources":["../src/repo-asset-authority.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,6EAA6E;AAC7E,sEAAsE;AACtE,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,2EAA2E;AAC3E,qEAAqE;AACrE,6DAA6D;AAC7D,EAAE;AACF,6EAA6E;AAC7E,uEAAuE;AACvE,uEAAuE;AACvE,EAAE;AACF,yEAAyE;AACzE,+EAA+E;AAC/E,6EAA6E;AAC7E,6EAA6E;AA+B7E,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAa;IAC/C,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAAsD;IAEtD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAwD,CAAC;IACpF,IAAI,qBAAqB,GAAG,CAAC,CAAC;IAC9B,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,KAAK,MAAM,OAAO,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC;YAC1C,MAAM,KAAK,GAAG,OAAO,KAAK,EAAE,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,MAAM,IAAI,GAAG,OAAO,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;YACxE,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACtD,iBAAiB,IAAI,KAAK,CAAC;YAC3B,IAAI,YAAY;gBAAE,qBAAqB,IAAI,KAAK,CAAC;YACjD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE;gBACpB,SAAS,EAAE,CAAC,QAAQ,EAAE,SAAS,IAAI,CAAC,CAAC,GAAG,KAAK;gBAC7C,YAAY,EAAE,QAAQ,EAAE,YAAY,IAAI,YAAY;aACrD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;SACxC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;SACpF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC7C,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC;AAChE,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,wBAAwB,CACtC,QAAsD;IAEtD,OAAO,yBAAyB,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC;AACnE,CAAC;AAED,8EAA8E;AAC9E,4DAA4D;AAC5D,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAc,EAAE,QAAQ,GAAG,GAAG;IAChE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC;AAC1D,CAAC;AAYD,+EAA+E;AAC/E,MAAM,UAAU,OAAO,CAAC,CAAC,GAAS,IAAI,IAAI,EAAE;IAC1C,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,IAAY;IACtD,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,OAAO,YAAY,CAAC,CAAC;IAC3C,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;IACpC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAkD,EAClD,SAAiB,EACjB,OAAe;IAEf,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QAChC,IAAI,OAAO,KAAK,EAAE,GAAG,KAAK,QAAQ;YAAE,SAAS;QAC7C,IAAI,KAAK,CAAC,GAAG,GAAG,SAAS,IAAI,KAAK,CAAC,GAAG,IAAI,OAAO,EAAE,CAAC;YAClD,GAAG,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,sEAAsE;AACtE,8EAA8E;AAE9E,MAAM,CAAC,MAAM,UAAU,GAAG,qEAAqE,CAAC;AAYhG,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,MAAM,KAAK,GAAG,IAAI;SACf,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IAChE,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,8CAA8C,UAAU,EAAE,CAAC,CAAC;IAC9E,CAAC;IACD,MAAM,WAAW,GAAG,qBAAqB,CAAC;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC;QAChE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,wBAAwB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,GAAG,CAAC,0BAA0B,CAAC,CAAC;QAC/E,CAAC;QACD,IACE,CAAC,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC;YAChC,SAAS,GAAG,CAAC;YACb,CAAC,MAAM,CAAC,aAAa,CAAC,wBAAwB,CAAC;YAC/C,wBAAwB,GAAG,CAAC;YAC5B,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC;YACtC,eAAe,KAAK,SAAS,GAAG,wBAAwB,EACxD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,GAAG,CAAC,8BAA8B,CAAC,CAAC;QACnF,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,wBAAwB,EAAE,eAAe,EAAE,CAAC;IACrF,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAA2B;IACtD,MAAM,IAAI,GAAG,IAAI;SACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACT,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,wBAAwB,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAC9F;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,CAAC;AAC1E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,IAA2B,EAAE,GAAe;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAA2B,EAAE,IAAY;IAC3E,IAAI,MAAM,GAAsB,IAAI,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YAAE,MAAM,GAAG,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAS;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SACjB,QAAQ,EAAE;SACV,OAAO,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;AAC3C,CAAC"}
@@ -1,13 +1,22 @@
1
1
  import type { AdapterRegistry } from "@claudexor/core";
2
2
  import type { ResourceStore } from "@claudexor/daemon";
3
3
  import type { HarnessStatus } from "@claudexor/gateway";
4
- import type { AccessProfile, ControlRunStartRequest } from "@claudexor/schema";
4
+ import { type AccessProfile, type ControlRunStartRequest, type GitCapability } from "@claudexor/schema";
5
5
  interface RunRequirementsPreflightDependencies {
6
6
  statusAll?: (cwd: string) => Promise<Array<Pick<HarnessStatus, "id" | "status" | "enabledIntents">>>;
7
7
  registry?: AdapterRegistry;
8
8
  accessDefault?: (cwd: string) => AccessProfile;
9
+ gitCapability?: () => Promise<GitCapability>;
10
+ requiresGit?: (request: ControlRunStartRequest) => boolean;
9
11
  }
12
+ export interface RunRequirementsPreflightPolicy {
13
+ /** Thread turns defer Git to the durable daemon job; direct runs keep eager admission. */
14
+ git?: "eager" | "durable_job";
15
+ }
16
+ /** Canonical Git admission used both eagerly by direct runs and immediately
17
+ * pre-provider by durable thread jobs. */
18
+ export declare function preflightRunGitRequirement(request: ControlRunStartRequest, dependencies?: Pick<RunRequirementsPreflightDependencies, "gitCapability" | "requiresGit">): Promise<void>;
10
19
  /** 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>;
20
+ export declare function createRunRequirementsPreflight(resources: Pick<ResourceStore, "resolve">, noProjectRoot: string, dependencies?: RunRequirementsPreflightDependencies, policy?: RunRequirementsPreflightPolicy): (request: ControlRunStartRequest) => Promise<void>;
12
21
  export {};
13
22
  //# sourceMappingURL=request-preflight.d.ts.map
@@ -1 +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;AASvF,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"}
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,EAEL,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAEnB,MAAM,mBAAmB,CAAC;AAU3B,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;IAC/C,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,OAAO,CAAC;CAC5D;AAED,MAAM,WAAW,8BAA8B;IAC7C,0FAA0F;IAC1F,GAAG,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;CAC/B;AAED;0CAC0C;AAC1C,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,sBAAsB,EAC/B,YAAY,GAAE,IAAI,CAAC,oCAAoC,EAAE,eAAe,GAAG,aAAa,CAAM,GAC7F,OAAO,CAAC,IAAI,CAAC,CAef;AAED,yFAAyF;AACzF,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,EACzC,aAAa,EAAE,MAAM,EACrB,YAAY,GAAE,oCAAyC,EACvD,MAAM,GAAE,8BAAmC,GAC1C,CAAC,OAAO,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,CAkFpD"}
@@ -1,15 +1,39 @@
1
1
  import { loadConfig } from "@claudexor/config";
2
2
  import { RequestRequirementsResolver } from "@claudexor/orchestrator";
3
+ import { runStartRequiresGit, } from "@claudexor/schema";
4
+ import { gitCapabilityProblem, probeGitCapability } from "@claudexor/workspace";
3
5
  import { buildGateway, buildRegistry } from "./registry.js";
4
6
  const modeIntent = {
5
7
  agent: "implement",
6
8
  ask: "explain",
7
9
  plan: "plan",
8
10
  };
11
+ /** Canonical Git admission used both eagerly by direct runs and immediately
12
+ * pre-provider by durable thread jobs. */
13
+ export async function preflightRunGitRequirement(request, dependencies = {}) {
14
+ if (!(dependencies.requiresGit ?? runStartRequiresGit)(request))
15
+ return;
16
+ const git = await (dependencies.gitCapability ?? probeGitCapability)();
17
+ const blocker = gitCapabilityProblem(git);
18
+ if (!blocker)
19
+ return;
20
+ throw Object.assign(new Error(blocker.reason), {
21
+ status: 503,
22
+ code: blocker.code,
23
+ retryable: true,
24
+ requiredActions: [blocker.remediation ?? "Install Git and retry."],
25
+ context: {
26
+ capability: "git",
27
+ capabilityStatus: git.status,
28
+ },
29
+ });
30
+ }
9
31
  /** Refuse requests that no selected lane can satisfy before a run or turn is created. */
10
- export function createRunRequirementsPreflight(resources, noProjectRoot, dependencies = {}) {
32
+ export function createRunRequirementsPreflight(resources, noProjectRoot, dependencies = {}, policy = {}) {
11
33
  const requirements = new RequestRequirementsResolver();
12
34
  return async (request) => {
35
+ if ((policy.git ?? "eager") === "eager")
36
+ await preflightRunGitRequirement(request, dependencies);
13
37
  if ((request.attachments?.length ?? 0) === 0 && request.browser !== true)
14
38
  return;
15
39
  const cwd = request.scope.kind === "project" ? request.scope.root : noProjectRoot;
@@ -35,19 +59,18 @@ export function createRunRequirementsPreflight(resources, noProjectRoot, depende
35
59
  throw requestError(`unknown harness lane: ${harnessId}`, 400, "harness_unavailable");
36
60
  return { harnessId, manifest: await adapter.discover() };
37
61
  }));
38
- const compatibleManifests = [];
39
- for (const { harnessId, manifest } of manifests) {
40
- const refusal = requirements.attachmentRefusal(harnessId, attachments, manifest.capability_profile.attachment_inputs);
41
- if (refusal) {
42
- if (explicitPool)
43
- throw requestError(refusal, 400, "attachment_pool_unsupported");
44
- continue;
45
- }
46
- compatibleManifests.push({ harnessId, manifest });
47
- }
48
- if (compatibleManifests.length === 0) {
49
- throw requestError("no eligible harness lane can receive every required attachment", 400, "attachment_pool_unsupported");
62
+ const attachmentAdmission = requirements.resolveAttachmentPool(explicitPool ? "explicit" : "auto", attachments, manifests.map(({ harnessId, manifest }) => ({
63
+ harnessId,
64
+ declarations: manifest.capability_profile.attachment_inputs,
65
+ available: true,
66
+ })));
67
+ if (attachmentAdmission.outcome === "refused") {
68
+ throw requestError(attachmentAdmission.message ??
69
+ "no eligible harness lane can receive every required attachment", 400, "attachment_pool_unsupported");
50
70
  }
71
+ const compatibleManifests = attachmentAdmission.admittedHarnessIds
72
+ .map((harnessId) => manifests.find((entry) => entry.harnessId === harnessId))
73
+ .filter((entry) => entry !== undefined);
51
74
  if (request.browser !== true)
52
75
  return;
53
76
  const access = intent === "implement"
@@ -1 +1 @@
1
- {"version":3,"file":"request-preflight.js","sourceRoot":"","sources":["../src/request-preflight.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request-preflight.js","sourceRoot":"","sources":["../src/request-preflight.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"retry-command-specs.d.ts","sourceRoot":"","sources":["../src/retry-command-specs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,eAAO,MAAM,mBAAmB,EAAE,SAAS,cAAc,EAmBxD,CAAC"}
1
+ {"version":3,"file":"retry-command-specs.d.ts","sourceRoot":"","sources":["../src/retry-command-specs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,eAAO,MAAM,mBAAmB,EAAE,SAAS,cAAc,EAqBxD,CAAC"}
@@ -1,6 +1,7 @@
1
1
  export const RETRY_COMMAND_SPECS = [
2
2
  {
3
3
  id: "retry",
4
+ positionalPatterns: [{ min: 1, max: 1 }],
4
5
  usageArgs: "<run_id>",
5
6
  summary: "Exact Retry with the immutable original request and fresh preflight",
6
7
  flags: ["json"],
@@ -10,6 +11,7 @@ export const RETRY_COMMAND_SPECS = [
10
11
  },
11
12
  {
12
13
  id: "run-again",
14
+ positionalPatterns: [{ min: 1, max: 1 }],
13
15
  usageArgs: "<run_id>",
14
16
  summary: "Print an editable draft copied from a prior run",
15
17
  flags: ["json"],
@@ -1 +1 @@
1
- {"version":3,"file":"retry-command-specs.js","sourceRoot":"","sources":["../src/retry-command-specs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAA8B;IAC5D;QACE,EAAE,EAAE,OAAO;QACX,SAAS,EAAE,UAAU;QACrB,OAAO,EAAE,qEAAqE;QAC9E,KAAK,EAAE,CAAC,MAAM,CAAC;QACf,UAAU,EAAE,OAAO;QACnB,SAAS,EAAE,QAAQ;QACnB,QAAQ,EAAE,IAAI;KACf;IACD;QACE,EAAE,EAAE,WAAW;QACf,SAAS,EAAE,UAAU;QACrB,OAAO,EAAE,iDAAiD;QAC1D,KAAK,EAAE,CAAC,MAAM,CAAC;QACf,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,QAAQ;QACnB,QAAQ,EAAE,IAAI;KACf;CACF,CAAC"}
1
+ {"version":3,"file":"retry-command-specs.js","sourceRoot":"","sources":["../src/retry-command-specs.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,mBAAmB,GAA8B;IAC5D;QACE,EAAE,EAAE,OAAO;QACX,kBAAkB,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QACxC,SAAS,EAAE,UAAU;QACrB,OAAO,EAAE,qEAAqE;QAC9E,KAAK,EAAE,CAAC,MAAM,CAAC;QACf,UAAU,EAAE,OAAO;QACnB,SAAS,EAAE,QAAQ;QACnB,QAAQ,EAAE,IAAI;KACf;IACD;QACE,EAAE,EAAE,WAAW;QACf,kBAAkB,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QACxC,SAAS,EAAE,UAAU;QACrB,OAAO,EAAE,iDAAiD;QAC1D,KAAK,EAAE,CAAC,MAAM,CAAC;QACf,UAAU,EAAE,MAAM;QAClB,SAAS,EAAE,QAAQ;QACnB,QAAQ,EAAE,IAAI;KACf;CACF,CAAC"}
@@ -0,0 +1,74 @@
1
+ import { type GitCapability, type RunGitApplicabilityMatrix } from "@claudexor/schema";
2
+ export interface RunApplicabilityDependencies {
3
+ gitCapability?: () => Promise<GitCapability>;
4
+ protectedPaths?: (repoRoot: string) => readonly string[];
5
+ }
6
+ /**
7
+ * Project one complete matrix through the same predicate the actual thread
8
+ * resolver and run preflight use. Clients only select a cell from their exact
9
+ * outgoing wire; they never reproduce Git/worktree business rules.
10
+ */
11
+ export declare function buildRunApplicabilityMatrix(input: {
12
+ repoRoot: string;
13
+ protectedPaths: readonly string[];
14
+ git: GitCapability;
15
+ }): RunGitApplicabilityMatrix;
16
+ /** Root-scoped service behind GET /run-applicability. */
17
+ export declare function projectRunApplicability(requestedRoot: string, dependencies?: RunApplicabilityDependencies): Promise<{
18
+ repoRoot: string;
19
+ git: {
20
+ status: "available" | "developer_tools_stub" | "failed" | "missing";
21
+ version: string | null;
22
+ detail: string | null;
23
+ remediation: string | null;
24
+ };
25
+ matrix: {
26
+ in_place: {
27
+ read_only: {
28
+ applicable: boolean;
29
+ requiresGit: boolean;
30
+ code: "git_developer_tools_stub" | "git_failed" | "git_missing" | null;
31
+ reason: string | null;
32
+ remediation: string | null;
33
+ };
34
+ agent_convergence: {
35
+ applicable: boolean;
36
+ requiresGit: boolean;
37
+ code: "git_developer_tools_stub" | "git_failed" | "git_missing" | null;
38
+ reason: string | null;
39
+ remediation: string | null;
40
+ };
41
+ agent_other: {
42
+ applicable: boolean;
43
+ requiresGit: boolean;
44
+ code: "git_developer_tools_stub" | "git_failed" | "git_missing" | null;
45
+ reason: string | null;
46
+ remediation: string | null;
47
+ };
48
+ };
49
+ isolated: {
50
+ read_only: {
51
+ applicable: boolean;
52
+ requiresGit: boolean;
53
+ code: "git_developer_tools_stub" | "git_failed" | "git_missing" | null;
54
+ reason: string | null;
55
+ remediation: string | null;
56
+ };
57
+ agent_convergence: {
58
+ applicable: boolean;
59
+ requiresGit: boolean;
60
+ code: "git_developer_tools_stub" | "git_failed" | "git_missing" | null;
61
+ reason: string | null;
62
+ remediation: string | null;
63
+ };
64
+ agent_other: {
65
+ applicable: boolean;
66
+ requiresGit: boolean;
67
+ code: "git_developer_tools_stub" | "git_failed" | "git_missing" | null;
68
+ reason: string | null;
69
+ remediation: string | null;
70
+ };
71
+ };
72
+ };
73
+ }>;
74
+ //# sourceMappingURL=run-applicability.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-applicability.d.ts","sourceRoot":"","sources":["../src/run-applicability.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,aAAa,EAElB,KAAK,yBAAyB,EAE/B,MAAM,mBAAmB,CAAC;AAM3B,MAAM,WAAW,4BAA4B;IAC3C,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7C,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,MAAM,EAAE,CAAC;CAC1D;AA+BD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,GAAG,EAAE,aAAa,CAAC;CACpB,GAAG,yBAAyB,CAqB5B;AAED,yDAAyD;AACzD,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,MAAM,EACrB,YAAY,GAAE,4BAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAehD"}
@@ -0,0 +1,72 @@
1
+ import { loadConfig } from "@claudexor/config";
2
+ import { normalizeExistingProjectRoot } from "@claudexor/control-api";
3
+ import { ControlRunApplicabilityResponse, ThreadWorkspace, } from "@claudexor/schema";
4
+ import { gitCapabilityProblem, probeGitCapability } from "@claudexor/workspace";
5
+ import { threadRunStartRequiresGit } from "./thread-execution-workspace.js";
6
+ function requestFor(repoRoot, shape) {
7
+ const base = {
8
+ prompt: "run applicability projection",
9
+ scope: { kind: "project", root: repoRoot, context: "auto" },
10
+ execution: { isolation: shape === "read_only" ? "envelope" : "live" },
11
+ };
12
+ if (shape === "read_only")
13
+ return { ...base, mode: "ask" };
14
+ if (shape === "agent_convergence")
15
+ return { ...base, mode: "agent", untilClean: true };
16
+ return { ...base, mode: "agent" };
17
+ }
18
+ function cell(requiresGit, git) {
19
+ const blocker = gitCapabilityProblem(git);
20
+ if (!requiresGit || blocker === null) {
21
+ return {
22
+ applicable: true,
23
+ requiresGit,
24
+ code: null,
25
+ reason: null,
26
+ remediation: null,
27
+ };
28
+ }
29
+ return {
30
+ applicable: false,
31
+ requiresGit: true,
32
+ ...blocker,
33
+ };
34
+ }
35
+ /**
36
+ * Project one complete matrix through the same predicate the actual thread
37
+ * resolver and run preflight use. Clients only select a cell from their exact
38
+ * outgoing wire; they never reproduce Git/worktree business rules.
39
+ */
40
+ export function buildRunApplicabilityMatrix(input) {
41
+ const workspace = (mode) => ({
42
+ workspace: ThreadWorkspace.parse({ mode }),
43
+ });
44
+ const project = (mode) => {
45
+ const thread = workspace(mode);
46
+ const projectCell = (shape) => cell(threadRunStartRequiresGit(requestFor(input.repoRoot, shape), thread, input.protectedPaths), input.git);
47
+ return {
48
+ read_only: projectCell("read_only"),
49
+ agent_convergence: projectCell("agent_convergence"),
50
+ agent_other: projectCell("agent_other"),
51
+ };
52
+ };
53
+ return {
54
+ in_place: project("in_place"),
55
+ isolated: project("isolated"),
56
+ };
57
+ }
58
+ /** Root-scoped service behind GET /run-applicability. */
59
+ export async function projectRunApplicability(requestedRoot, dependencies = {}) {
60
+ const repoRoot = normalizeExistingProjectRoot(requestedRoot);
61
+ const [git, protectedPaths] = await Promise.all([
62
+ (dependencies.gitCapability ?? probeGitCapability)(),
63
+ Promise.resolve(dependencies.protectedPaths?.(repoRoot) ??
64
+ loadConfig(repoRoot).project.constraints.protected_paths),
65
+ ]);
66
+ return ControlRunApplicabilityResponse.parse({
67
+ repoRoot,
68
+ git,
69
+ matrix: buildRunApplicabilityMatrix({ repoRoot, protectedPaths, git }),
70
+ });
71
+ }
72
+ //# sourceMappingURL=run-applicability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-applicability.js","sourceRoot":"","sources":["../src/run-applicability.ts"],"names":[],"mappings":"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"}