@namzu/sdk 59.0.0 → 60.0.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 (260) hide show
  1. package/CHANGELOG.md +102 -0
  2. package/dist/compaction/context-window.d.ts +53 -0
  3. package/dist/compaction/context-window.d.ts.map +1 -1
  4. package/dist/compaction/context-window.js +141 -2
  5. package/dist/compaction/context-window.js.map +1 -1
  6. package/dist/execution/workflow/index.d.ts +3 -1
  7. package/dist/execution/workflow/index.d.ts.map +1 -1
  8. package/dist/execution/workflow/index.js +2 -1
  9. package/dist/execution/workflow/index.js.map +1 -1
  10. package/dist/execution/workflow/journal.d.ts +24 -4
  11. package/dist/execution/workflow/journal.d.ts.map +1 -1
  12. package/dist/execution/workflow/journal.js +131 -9
  13. package/dist/execution/workflow/journal.js.map +1 -1
  14. package/dist/execution/workflow/prelude.d.ts +2 -0
  15. package/dist/execution/workflow/prelude.d.ts.map +1 -1
  16. package/dist/execution/workflow/prelude.js +49 -8
  17. package/dist/execution/workflow/prelude.js.map +1 -1
  18. package/dist/execution/workflow/resume.d.ts +59 -0
  19. package/dist/execution/workflow/resume.d.ts.map +1 -0
  20. package/dist/execution/workflow/resume.js +273 -0
  21. package/dist/execution/workflow/resume.js.map +1 -0
  22. package/dist/execution/workflow/runtime.d.ts.map +1 -1
  23. package/dist/execution/workflow/runtime.js +112 -8
  24. package/dist/execution/workflow/runtime.js.map +1 -1
  25. package/dist/execution/workflow/types.d.ts +105 -1
  26. package/dist/execution/workflow/types.d.ts.map +1 -1
  27. package/dist/index.d.ts +3 -0
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +4 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/plugin/compat.d.ts +24 -0
  32. package/dist/plugin/compat.d.ts.map +1 -0
  33. package/dist/plugin/compat.js +149 -0
  34. package/dist/plugin/compat.js.map +1 -0
  35. package/dist/plugin/loader.d.ts +2 -1
  36. package/dist/plugin/loader.d.ts.map +1 -1
  37. package/dist/plugin/loader.js +6 -0
  38. package/dist/plugin/loader.js.map +1 -1
  39. package/dist/pricing/index.d.ts.map +1 -1
  40. package/dist/pricing/index.js +2 -1
  41. package/dist/pricing/index.js.map +1 -1
  42. package/dist/process/kill-tree.d.ts +44 -0
  43. package/dist/process/kill-tree.d.ts.map +1 -1
  44. package/dist/process/kill-tree.js +102 -4
  45. package/dist/process/kill-tree.js.map +1 -1
  46. package/dist/prompt/coding-agent-doctrine.d.ts +1 -1
  47. package/dist/prompt/coding-agent-doctrine.d.ts.map +1 -1
  48. package/dist/prompt/coding-agent-doctrine.js +9 -1
  49. package/dist/prompt/coding-agent-doctrine.js.map +1 -1
  50. package/dist/provider/model-window-suffix.d.ts +18 -0
  51. package/dist/provider/model-window-suffix.d.ts.map +1 -0
  52. package/dist/provider/model-window-suffix.js +77 -0
  53. package/dist/provider/model-window-suffix.js.map +1 -0
  54. package/dist/public-runtime.d.ts +5 -3
  55. package/dist/public-runtime.d.ts.map +1 -1
  56. package/dist/public-runtime.js +5 -4
  57. package/dist/public-runtime.js.map +1 -1
  58. package/dist/public-types.d.ts +1 -0
  59. package/dist/public-types.d.ts.map +1 -1
  60. package/dist/registry/command/kernel-commands.d.ts +1 -4
  61. package/dist/registry/command/kernel-commands.d.ts.map +1 -1
  62. package/dist/registry/command/kernel-commands.js +0 -28
  63. package/dist/registry/command/kernel-commands.js.map +1 -1
  64. package/dist/runtime/jobs/awaited-jobs.d.ts +6 -0
  65. package/dist/runtime/jobs/awaited-jobs.d.ts.map +1 -1
  66. package/dist/runtime/jobs/awaited-jobs.js +11 -0
  67. package/dist/runtime/jobs/awaited-jobs.js.map +1 -1
  68. package/dist/runtime/jobs/host-exit-finalizer.d.ts +20 -0
  69. package/dist/runtime/jobs/host-exit-finalizer.d.ts.map +1 -0
  70. package/dist/runtime/jobs/host-exit-finalizer.js +57 -0
  71. package/dist/runtime/jobs/host-exit-finalizer.js.map +1 -0
  72. package/dist/runtime/jobs/liveness.d.ts +67 -0
  73. package/dist/runtime/jobs/liveness.d.ts.map +1 -0
  74. package/dist/runtime/jobs/liveness.js +94 -0
  75. package/dist/runtime/jobs/liveness.js.map +1 -0
  76. package/dist/runtime/jobs/registry.d.ts +21 -0
  77. package/dist/runtime/jobs/registry.d.ts.map +1 -1
  78. package/dist/runtime/jobs/registry.js +104 -2
  79. package/dist/runtime/jobs/registry.js.map +1 -1
  80. package/dist/runtime/jobs/wake-budget.d.ts +35 -0
  81. package/dist/runtime/jobs/wake-budget.d.ts.map +1 -0
  82. package/dist/runtime/jobs/wake-budget.js +48 -0
  83. package/dist/runtime/jobs/wake-budget.js.map +1 -0
  84. package/dist/runtime/query/detached-calls.d.ts +65 -0
  85. package/dist/runtime/query/detached-calls.d.ts.map +1 -0
  86. package/dist/runtime/query/detached-calls.js +116 -0
  87. package/dist/runtime/query/detached-calls.js.map +1 -0
  88. package/dist/runtime/query/executor.d.ts +4 -1
  89. package/dist/runtime/query/executor.d.ts.map +1 -1
  90. package/dist/runtime/query/executor.js +90 -6
  91. package/dist/runtime/query/executor.js.map +1 -1
  92. package/dist/runtime/query/index.d.ts +20 -0
  93. package/dist/runtime/query/index.d.ts.map +1 -1
  94. package/dist/runtime/query/index.js +31 -5
  95. package/dist/runtime/query/index.js.map +1 -1
  96. package/dist/runtime/query/iteration/outstanding-work.d.ts.map +1 -1
  97. package/dist/runtime/query/iteration/outstanding-work.js +11 -3
  98. package/dist/runtime/query/iteration/outstanding-work.js.map +1 -1
  99. package/dist/runtime/query/iteration/phases/context.d.ts +7 -0
  100. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  101. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  102. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  103. package/dist/runtime/query/iteration/phases/tool-review.js +63 -1
  104. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  105. package/dist/runtime/query/session-storage.d.ts.map +1 -1
  106. package/dist/runtime/query/session-storage.js +8 -3
  107. package/dist/runtime/query/session-storage.js.map +1 -1
  108. package/dist/runtime/query/steering.d.ts +29 -3
  109. package/dist/runtime/query/steering.d.ts.map +1 -1
  110. package/dist/runtime/query/steering.js +58 -3
  111. package/dist/runtime/query/steering.js.map +1 -1
  112. package/dist/runtime/query/tooling.d.ts +1 -0
  113. package/dist/runtime/query/tooling.d.ts.map +1 -1
  114. package/dist/runtime/query/tooling.js +1 -0
  115. package/dist/runtime/query/tooling.js.map +1 -1
  116. package/dist/runtime/system-events.d.ts +5 -0
  117. package/dist/runtime/system-events.d.ts.map +1 -1
  118. package/dist/runtime/system-events.js +7 -1
  119. package/dist/runtime/system-events.js.map +1 -1
  120. package/dist/sandbox/denial.d.ts +11 -0
  121. package/dist/sandbox/denial.d.ts.map +1 -0
  122. package/dist/sandbox/denial.js +61 -0
  123. package/dist/sandbox/denial.js.map +1 -0
  124. package/dist/sandbox/file-walk-program.d.ts.map +1 -1
  125. package/dist/sandbox/file-walk-program.js +31 -13
  126. package/dist/sandbox/file-walk-program.js.map +1 -1
  127. package/dist/sandbox/file-walk.d.ts +2 -0
  128. package/dist/sandbox/file-walk.d.ts.map +1 -1
  129. package/dist/sandbox/file-walk.js +64 -13
  130. package/dist/sandbox/file-walk.js.map +1 -1
  131. package/dist/sandbox/ignore-matcher.d.ts +30 -0
  132. package/dist/sandbox/ignore-matcher.d.ts.map +1 -0
  133. package/dist/sandbox/ignore-matcher.js +11 -0
  134. package/dist/sandbox/ignore-matcher.js.map +1 -0
  135. package/dist/sandbox/ignore-source.d.ts +26 -0
  136. package/dist/sandbox/ignore-source.d.ts.map +1 -0
  137. package/dist/sandbox/ignore-source.js +221 -0
  138. package/dist/sandbox/ignore-source.js.map +1 -0
  139. package/dist/sandbox/provider/local.d.ts.map +1 -1
  140. package/dist/sandbox/provider/local.js +11 -1
  141. package/dist/sandbox/provider/local.js.map +1 -1
  142. package/dist/scheduler/completion-inbox.d.ts.map +1 -1
  143. package/dist/scheduler/completion-inbox.js +1 -0
  144. package/dist/scheduler/completion-inbox.js.map +1 -1
  145. package/dist/session/log-hash.d.ts.map +1 -1
  146. package/dist/session/log-hash.js +18 -1
  147. package/dist/session/log-hash.js.map +1 -1
  148. package/dist/store/session-index/sqlite.d.ts.map +1 -1
  149. package/dist/store/session-index/sqlite.js +169 -16
  150. package/dist/store/session-index/sqlite.js.map +1 -1
  151. package/dist/tools/builtins/bash.d.ts.map +1 -1
  152. package/dist/tools/builtins/bash.js +10 -4
  153. package/dist/tools/builtins/bash.js.map +1 -1
  154. package/dist/tools/builtins/computer-use.d.ts +35 -0
  155. package/dist/tools/builtins/computer-use.d.ts.map +1 -1
  156. package/dist/tools/builtins/computer-use.js +512 -67
  157. package/dist/tools/builtins/computer-use.js.map +1 -1
  158. package/dist/tools/builtins/glob.d.ts +1 -0
  159. package/dist/tools/builtins/glob.d.ts.map +1 -1
  160. package/dist/tools/builtins/glob.js +65 -28
  161. package/dist/tools/builtins/glob.js.map +1 -1
  162. package/dist/tools/builtins/grep.d.ts +2 -0
  163. package/dist/tools/builtins/grep.d.ts.map +1 -1
  164. package/dist/tools/builtins/grep.js +94 -40
  165. package/dist/tools/builtins/grep.js.map +1 -1
  166. package/dist/tools/builtins/job.d.ts +1 -1
  167. package/dist/tools/builtins/job.d.ts.map +1 -1
  168. package/dist/tools/builtins/job.js +34 -7
  169. package/dist/tools/builtins/job.js.map +1 -1
  170. package/dist/tools/builtins/search-support.d.ts +44 -0
  171. package/dist/tools/builtins/search-support.d.ts.map +1 -0
  172. package/dist/tools/builtins/search-support.js +89 -0
  173. package/dist/tools/builtins/search-support.js.map +1 -0
  174. package/dist/tools/builtins/wait-for-job-bounds.d.ts +2 -0
  175. package/dist/tools/builtins/wait-for-job-bounds.d.ts.map +1 -1
  176. package/dist/tools/builtins/wait-for-job-bounds.js +3 -1
  177. package/dist/tools/builtins/wait-for-job-bounds.js.map +1 -1
  178. package/dist/tools/builtins/wait-for-job.d.ts +1 -1
  179. package/dist/tools/builtins/wait-for-job.d.ts.map +1 -1
  180. package/dist/tools/builtins/wait-for-job.js +13 -2
  181. package/dist/tools/builtins/wait-for-job.js.map +1 -1
  182. package/dist/tools/command-shell.d.ts.map +1 -1
  183. package/dist/tools/command-shell.js +14 -5
  184. package/dist/tools/command-shell.js.map +1 -1
  185. package/dist/types/computer-use/index.d.ts +129 -13
  186. package/dist/types/computer-use/index.d.ts.map +1 -1
  187. package/dist/types/computer-use/index.js.map +1 -1
  188. package/dist/types/plugin/index.d.ts +24 -0
  189. package/dist/types/plugin/index.d.ts.map +1 -1
  190. package/dist/types/plugin/index.js +4 -0
  191. package/dist/types/plugin/index.js.map +1 -1
  192. package/dist/types/sandbox/index.d.ts +38 -1
  193. package/dist/types/sandbox/index.d.ts.map +1 -1
  194. package/dist/types/sandbox/index.js.map +1 -1
  195. package/dist/types/session/records.d.ts +264 -0
  196. package/dist/types/session/records.d.ts.map +1 -1
  197. package/dist/types/session/records.js +32 -1
  198. package/dist/types/session/records.js.map +1 -1
  199. package/dist/types/tool/index.d.ts +30 -0
  200. package/dist/types/tool/index.d.ts.map +1 -1
  201. package/dist/types/tool/index.js.map +1 -1
  202. package/dist/types/tool/presentation.d.ts +8 -0
  203. package/dist/types/tool/presentation.d.ts.map +1 -1
  204. package/package.json +1 -1
  205. package/src/compaction/context-window.ts +163 -2
  206. package/src/execution/workflow/index.ts +14 -1
  207. package/src/execution/workflow/journal.ts +161 -11
  208. package/src/execution/workflow/prelude.ts +51 -8
  209. package/src/execution/workflow/resume.ts +313 -0
  210. package/src/execution/workflow/runtime.ts +127 -9
  211. package/src/execution/workflow/types.ts +109 -1
  212. package/src/index.ts +17 -0
  213. package/src/plugin/compat.ts +173 -0
  214. package/src/plugin/loader.ts +7 -1
  215. package/src/pricing/index.ts +2 -1
  216. package/src/process/kill-tree.ts +106 -4
  217. package/src/prompt/coding-agent-doctrine.ts +9 -1
  218. package/src/provider/model-window-suffix.ts +84 -0
  219. package/src/public-runtime.ts +21 -2
  220. package/src/public-types.ts +1 -0
  221. package/src/registry/command/kernel-commands.ts +1 -32
  222. package/src/runtime/jobs/awaited-jobs.ts +11 -0
  223. package/src/runtime/jobs/host-exit-finalizer.ts +67 -0
  224. package/src/runtime/jobs/liveness.ts +144 -0
  225. package/src/runtime/jobs/registry.ts +114 -2
  226. package/src/runtime/jobs/wake-budget.ts +55 -0
  227. package/src/runtime/query/detached-calls.ts +135 -0
  228. package/src/runtime/query/executor.ts +92 -10
  229. package/src/runtime/query/index.ts +50 -7
  230. package/src/runtime/query/iteration/outstanding-work.ts +12 -3
  231. package/src/runtime/query/iteration/phases/context.ts +7 -0
  232. package/src/runtime/query/iteration/phases/tool-review.ts +73 -8
  233. package/src/runtime/query/session-storage.ts +8 -3
  234. package/src/runtime/query/steering.ts +77 -6
  235. package/src/runtime/query/tooling.ts +2 -0
  236. package/src/runtime/system-events.ts +12 -1
  237. package/src/sandbox/denial.ts +79 -0
  238. package/src/sandbox/file-walk-program.ts +32 -13
  239. package/src/sandbox/file-walk.ts +75 -12
  240. package/src/sandbox/ignore-matcher.ts +46 -0
  241. package/src/sandbox/ignore-source.ts +220 -0
  242. package/src/sandbox/provider/local.ts +11 -1
  243. package/src/scheduler/completion-inbox.ts +1 -0
  244. package/src/session/log-hash.ts +21 -0
  245. package/src/store/session-index/sqlite.ts +171 -16
  246. package/src/tools/builtins/bash.ts +11 -4
  247. package/src/tools/builtins/computer-use.ts +593 -68
  248. package/src/tools/builtins/glob.ts +79 -32
  249. package/src/tools/builtins/grep.ts +107 -43
  250. package/src/tools/builtins/job.ts +42 -12
  251. package/src/tools/builtins/search-support.ts +107 -0
  252. package/src/tools/builtins/wait-for-job-bounds.ts +5 -1
  253. package/src/tools/builtins/wait-for-job.ts +14 -2
  254. package/src/tools/command-shell.ts +13 -5
  255. package/src/types/computer-use/index.ts +157 -15
  256. package/src/types/plugin/index.ts +8 -0
  257. package/src/types/sandbox/index.ts +40 -1
  258. package/src/types/session/records.ts +36 -2
  259. package/src/types/tool/index.ts +30 -0
  260. package/src/types/tool/presentation.ts +8 -0
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Reading a sandboxed command's failure: did the command fail, did the
3
+ * sandbox refuse it, or did the launcher never get as far as running it?
4
+ *
5
+ * The model cannot tell these apart from an exit code. A denied write looks
6
+ * like any other failure, so it retries the same command and burns turns
7
+ * on something no retry can fix; a launcher that could not set up its
8
+ * namespaces looks like the command crashing. Both call for a different
9
+ * answer (ask for the escape, or report a runner fault).
10
+ *
11
+ * This is inference from stderr text, not a verdict from the kernel, and
12
+ * the wording says so. It only ever adds a note; the result is unchanged.
13
+ */
14
+ /** Launcher setup failures print this prefix before any user command runs. */
15
+ const RUNNER_PREFIX = {
16
+ 'linux-bwrap': /^bwrap: (?!execvp )/m,
17
+ 'linux-namespace': /^unshare: /m,
18
+ 'macos-seatbelt': /^sandbox-exec: /m,
19
+ };
20
+ const EROFS = /Read-only file system|\bEROFS\b/i;
21
+ const PERMISSION = /Permission denied|Operation not permitted|\bEACCES\b|\bEPERM\b/i;
22
+ const ABSOLUTE_PATH = /(?:^|[\s'"`:(])(\/[^\s'"`:)]+)/g;
23
+ /** Only tiers that confine file writes can produce a sandbox denial. */
24
+ const CONFINES_FILES = new Set(['linux-bwrap', 'macos-seatbelt']);
25
+ function within(path, root) {
26
+ return path === root || path.startsWith(root.endsWith('/') ? root : `${root}/`);
27
+ }
28
+ function pathsIn(line) {
29
+ return [...line.matchAll(ABSOLUTE_PATH)].map((m) => m[1]);
30
+ }
31
+ export function attributeSandboxFailure(input) {
32
+ if (input.exitCode === 0 || input.timedOut || input.stderr === '')
33
+ return undefined;
34
+ const runner = RUNNER_PREFIX[input.environment];
35
+ if (runner?.test(input.stderr)) {
36
+ const line = input.stderr.split('\n').find((l) => runner.test(l)) ?? '';
37
+ return {
38
+ kind: 'runner-failure',
39
+ message: `The sandbox launcher failed before the command could run (${line.trim()}). This is a runner fault, not a failure of the command; retrying the same command will not help.`,
40
+ };
41
+ }
42
+ if (!CONFINES_FILES.has(input.environment))
43
+ return undefined;
44
+ for (const line of input.stderr.split('\n')) {
45
+ if (EROFS.test(line))
46
+ return denial();
47
+ if (!PERMISSION.test(line))
48
+ continue;
49
+ const paths = pathsIn(line);
50
+ if (paths.some((p) => !input.allowedRoots.some((root) => within(p, root))))
51
+ return denial();
52
+ }
53
+ return undefined;
54
+ }
55
+ function denial() {
56
+ return {
57
+ kind: 'denial',
58
+ message: 'This looks like a sandbox denial: the command touched a path the sandbox does not allow it to write. This is inferred from the error text, not proven. Retrying the same command will fail the same way; if the action is needed, ask to run it outside the sandbox instead.',
59
+ };
60
+ }
61
+ //# sourceMappingURL=denial.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"denial.js","sourceRoot":"","sources":["../../src/sandbox/denial.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,8EAA8E;AAC9E,MAAM,aAAa,GAAgD;IAClE,aAAa,EAAE,sBAAsB;IACrC,iBAAiB,EAAE,aAAa;IAChC,gBAAgB,EAAE,kBAAkB;CACpC,CAAA;AAED,MAAM,KAAK,GAAG,kCAAkC,CAAA;AAChD,MAAM,UAAU,GAAG,iEAAiE,CAAA;AACpF,MAAM,aAAa,GAAG,iCAAiC,CAAA;AAEvD,wEAAwE;AACxE,MAAM,cAAc,GAAoC,IAAI,GAAG,CAAC,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC,CAAA;AAElG,SAAS,MAAM,CAAC,IAAY,EAAE,IAAY;IACzC,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;AAChF,CAAC;AAED,SAAS,OAAO,CAAC,IAAY;IAC5B,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAW,CAAC,CAAA;AACpE,CAAC;AAWD,MAAM,UAAU,uBAAuB,CACtC,KAAuB;IAEvB,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE;QAAE,OAAO,SAAS,CAAA;IAEnF,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IAC/C,IAAI,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACvE,OAAO;YACN,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,6DAA6D,IAAI,CAAC,IAAI,EAAE,mGAAmG;SACpL,CAAA;IACF,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAA;IAE5D,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,MAAM,EAAE,CAAA;QACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAQ;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;QAC3B,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,MAAM,EAAE,CAAA;IAC5F,CAAC;IACD,OAAO,SAAS,CAAA;AACjB,CAAC;AAED,SAAS,MAAM;IACd,OAAO;QACN,IAAI,EAAE,QAAQ;QACd,OAAO,EACN,8QAA8Q;KAC/Q,CAAA;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-walk-program.d.ts","sourceRoot":"","sources":["../../src/sandbox/file-walk-program.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,eAAO,MAAM,iBAAiB,QAmG7B,CAAA"}
1
+ {"version":3,"file":"file-walk-program.d.ts","sourceRoot":"","sources":["../../src/sandbox/file-walk-program.ts"],"names":[],"mappings":"AAEA,mFAAmF;AACnF,eAAO,MAAM,iBAAiB,QAoH3B,CAAA"}
@@ -1,5 +1,6 @@
1
+ import { IGNORE_SOURCE } from './ignore-source.js';
1
2
  /** Stable guest code: host bundlers must never rewrite a function we serialize. */
2
- export const FILE_WALK_PROGRAM = String.raw `
3
+ export const FILE_WALK_PROGRAM = `${IGNORE_SOURCE}${String.raw `
3
4
  const fs = require('node:fs/promises');
4
5
  const path = require('node:path');
5
6
  const plan = JSON.parse(process.argv[1]);
@@ -9,10 +10,17 @@ const write = async value => {
9
10
  await new Promise(resolve => process.stdout.once('drain', resolve));
10
11
  }
11
12
  };
13
+ let stopped;
14
+ let visitedTotal = 0;
15
+ let ignoredDirs = 0;
12
16
  const visit = count => {
13
- if (count > plan.maxVisitedEntries) {
17
+ visitedTotal = count;
18
+ if (count <= plan.maxVisitedEntries) return true;
19
+ if (plan.failOnLimit) {
14
20
  throw Object.assign(new Error('File search stopped after examining ' + plan.maxVisitedEntries + ' entries; narrow its root or pattern.'), {code:'ERR_FILE_WALK_LIMIT'});
15
21
  }
22
+ stopped = 'entry-limit';
23
+ return false;
16
24
  };
17
25
  const patterns = plan.patterns.map(set => set.map(part =>
18
26
  typeof part === 'object' && part !== null ? new RegExp(part.source, part.flags + 's') : part));
@@ -41,9 +49,13 @@ async function run() {
41
49
  let emitted = 0;
42
50
  const matchers = plan.expressions.map(({source, flags}) => new RegExp(source, flags + 's'));
43
51
  const maxDepth = plan.maxDepth === null ? Infinity : plan.maxDepth;
44
- const open = async (absolute, relative, depth) => {
45
- try { stack.push({dir: await fs.opendir(absolute), relative, depth}); }
46
- catch (error) { if (!missing(error)) throw error; }
52
+ const ignore = plan.respectIgnore ? ignCreate({fs, path, extraFiles: []}) : null;
53
+ const open = async (absolute, relative, depth, layered) => {
54
+ try {
55
+ const dir = await fs.opendir(absolute);
56
+ if (layered && ignore) await ignore.enter(absolute);
57
+ stack.push({dir, relative, depth, layered});
58
+ } catch (error) { if (!missing(error)) throw error; }
47
59
  };
48
60
  try {
49
61
  if (plan.patterns.length === 0) return;
@@ -53,36 +65,42 @@ async function run() {
53
65
  if (canonicalRoot !== path.resolve(plan.root)) throw new Error('File walk root follows a symbolic link; use its authorized real directory');
54
66
  const rootInfo = await fs.lstat(plan.root);
55
67
  if (rootInfo.isFile()) {
56
- visit(++visited);
68
+ if (!visit(++visited)) return;
57
69
  if (matchers.some(matcher => matcher.test(path.basename(plan.root)))) {
58
70
  await write({type:'entry', path:plan.root, size:rootInfo.size});
59
71
  }
60
72
  return;
61
73
  }
74
+ if (ignore) { await ignore.init(plan.root); await ignore.enter(plan.root); }
62
75
  let start = plan.root;
63
76
  for (const part of plan.prefix) {
64
77
  start = path.join(start, part);
65
78
  let info;
66
79
  try { info = await fs.lstat(start); }
67
80
  catch (error) { if (missing(error)) return; throw error; }
68
- visit(++visited);
81
+ if (!visit(++visited)) return;
69
82
  if (!info.isDirectory()) return;
83
+ if (ignore) await ignore.enter(start);
70
84
  }
71
85
  if (plan.prefix.length >= maxDepth) return;
72
- await open(start, plan.prefix.join('/'), plan.prefix.length);
86
+ await open(start, plan.prefix.join('/'), plan.prefix.length, false);
73
87
  while (stack.length) {
74
88
  const frame = stack[stack.length - 1];
75
89
  const entry = await frame.dir.read();
76
- if (!entry) { stack.pop(); await frame.dir.close(); continue; }
77
- visit(++visited);
90
+ if (!entry) { stack.pop(); if (frame.layered && ignore) ignore.leave(); await frame.dir.close(); continue; }
91
+ if (!visit(++visited)) return;
92
+ if (IGN_VCS.includes(entry.name)) continue;
78
93
  const relative = frame.relative ? frame.relative + '/' + entry.name : entry.name;
79
94
  const absolute = path.join(plan.root, relative);
80
95
  const depth = frame.depth + 1;
81
96
  if (entry.isDirectory()) {
82
- if (depth < maxDepth && canDescend(relative)) await open(absolute, relative, depth);
97
+ if (depth >= maxDepth || !canDescend(relative)) continue;
98
+ if (ignore && ignore.isIgnored(absolute, true)) { ignoredDirs++; continue; }
99
+ await open(absolute, relative, depth, true);
83
100
  continue;
84
101
  }
85
102
  if (!entry.isFile() || !matchers.some(matcher => matcher.test(relative))) continue;
103
+ if (ignore && ignore.isIgnored(absolute, false)) continue;
86
104
  let info;
87
105
  try { info = await fs.lstat(absolute); }
88
106
  catch (error) { if (missing(error)) continue; throw error; }
@@ -95,8 +113,8 @@ async function run() {
95
113
  }
96
114
  }
97
115
  run().then(
98
- () => write({type:'done'}),
116
+ () => write({type:'done', visited:visitedTotal, ignoredDirs, stopped}),
99
117
  async error => { await write({type:'error', message:error.message, code:error.code}); process.exitCode = 1; },
100
118
  );
101
- `;
119
+ `}`;
102
120
  //# sourceMappingURL=file-walk-program.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"file-walk-program.js","sourceRoot":"","sources":["../../src/sandbox/file-walk-program.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmG1C,CAAA"}
1
+ {"version":3,"file":"file-walk-program.js","sourceRoot":"","sources":["../../src/sandbox/file-walk-program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAElD,mFAAmF;AACnF,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,aAAa,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoH7D,EAAE,CAAA"}
@@ -1,4 +1,6 @@
1
1
  import type { SandboxExecOptions, SandboxExecResult, SandboxFileEntry, SandboxWalkFilesOptions } from '../types/sandbox/index.js';
2
+ /** Entries a walk examines before it stops with what it has: a safety valve, not a budget. */
3
+ export declare const DEFAULT_MAX_VISITED_ENTRIES = 500000;
2
4
  /** Internal host path; the caller first resolves its authorized filesystem root. */
3
5
  export declare function walkFilesLocally(rootPath: string, options: SandboxWalkFilesOptions): AsyncGenerator<SandboxFileEntry>;
4
6
  /** The existing sandbox execution seam; no separate worker protocol is needed. */
@@ -1 +1 @@
1
- {"version":3,"file":"file-walk.d.ts","sourceRoot":"","sources":["../../src/sandbox/file-walk.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,MAAM,2BAA2B,CAAA;AA4SlC,oFAAoF;AACpF,wBAAuB,gBAAgB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,uBAAuB,GAC9B,cAAc,CAAC,gBAAgB,CAAC,CAGlC;AAED,kFAAkF;AAClF,MAAM,MAAM,mBAAmB,GAAG,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,OAAO,CAAC,EAAE,kBAAkB,KACxB,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAE/B;;;;GAIG;AACH,wBAAuB,gBAAgB,CACtC,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,uBAAuB,GAC9B,cAAc,CAAC,gBAAgB,CAAC,CA0IlC"}
1
+ {"version":3,"file":"file-walk.d.ts","sourceRoot":"","sources":["../../src/sandbox/file-walk.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EAEvB,MAAM,2BAA2B,CAAA;AAKlC,8FAA8F;AAC9F,eAAO,MAAM,2BAA2B,SAAU,CAAA;AA2VlD,oFAAoF;AACpF,wBAAuB,gBAAgB,CACtC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,uBAAuB,GAC9B,cAAc,CAAC,gBAAgB,CAAC,CAGlC;AAED,kFAAkF;AAClF,MAAM,MAAM,mBAAmB,GAAG,CACjC,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,OAAO,CAAC,EAAE,kBAAkB,KACxB,OAAO,CAAC,iBAAiB,CAAC,CAAA;AAE/B;;;;GAIG;AACH,wBAAuB,gBAAgB,CACtC,IAAI,EAAE,mBAAmB,EACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,uBAAuB,GAC9B,cAAc,CAAC,gBAAgB,CAAC,CAmJlC"}
@@ -1,8 +1,11 @@
1
- import { isAbsolute, posix } from 'node:path';
1
+ import { isAbsolute, join, posix } from 'node:path';
2
2
  import braceExpansion from 'brace-expansion';
3
3
  import { GLOBSTAR, Minimatch } from 'minimatch';
4
4
  import { subscribeToAbort } from '../utils/abort.js';
5
5
  import { FILE_WALK_PROGRAM } from './file-walk-program.js';
6
+ import { VCS_NAMES, createIgnoreStack } from './ignore-matcher.js';
7
+ /** Entries a walk examines before it stops with what it has: a safety valve, not a budget. */
8
+ export const DEFAULT_MAX_VISITED_ENTRIES = 500_000;
6
9
  // brace-expansion 2.1.4 implements these bounds; its older DefinitelyTyped
7
10
  // declaration only describes the first argument.
8
11
  const expandBraces = braceExpansion;
@@ -73,8 +76,10 @@ function planWalk(root, options) {
73
76
  expressions,
74
77
  maxDepth: Number.isFinite(maxDepth) ? maxDepth : null,
75
78
  maxEntries: positiveInteger(options.maxEntries, 'maxEntries'),
76
- maxVisitedEntries: positiveInteger(options.maxVisitedEntries ?? 20_000, 'maxVisitedEntries'),
79
+ maxVisitedEntries: positiveInteger(options.maxVisitedEntries ?? DEFAULT_MAX_VISITED_ENTRIES, 'maxVisitedEntries'),
77
80
  includeHidden: options.includeHidden ?? false,
81
+ respectIgnore: options.respectIgnore ?? true,
82
+ failOnLimit: options.failOnLimit ?? false,
78
83
  patterns: sets.map((set) => set.map((segment) => segment === GLOBSTAR
79
84
  ? null
80
85
  : typeof segment === 'string'
@@ -112,13 +117,18 @@ function directoryMatcher(plan) {
112
117
  });
113
118
  }
114
119
  /** Local traversal uses the same compiled matching/pruning plan as the guest. */
115
- async function* executeWalk(plan, signal) {
120
+ async function* executeWalk(plan, signal, onSummary) {
116
121
  const fs = await import('node:fs/promises');
117
122
  const path = await import('node:path');
118
123
  const { EventEmitter } = await import('node:events');
119
124
  const open = [];
120
125
  let visited = 0;
121
126
  let emitted = 0;
127
+ let ignoredDirectories = 0;
128
+ let stopped;
129
+ const ignore = plan.respectIgnore
130
+ ? createIgnoreStack({ fs, path, extraFiles: globalIgnoreFiles() })
131
+ : undefined;
122
132
  const matchers = plan.expressions.map(({ source, flags }) => new RegExp(source, `${flags}s`));
123
133
  const canDescend = directoryMatcher(plan);
124
134
  const maxDepth = plan.maxDepth ?? Number.POSITIVE_INFINITY;
@@ -170,11 +180,16 @@ async function* executeWalk(plan, signal) {
170
180
  dispose?.();
171
181
  }
172
182
  }
183
+ /** False once the safety valve trips; the walk then ends with what it has. */
173
184
  const noteVisit = () => {
174
185
  visited += 1;
175
- if (visited > plan.maxVisitedEntries) {
186
+ if (visited <= plan.maxVisitedEntries)
187
+ return true;
188
+ if (plan.failOnLimit) {
176
189
  throw Object.assign(new Error(`File search stopped after examining ${plan.maxVisitedEntries} entries; narrow its root or pattern.`), { code: 'ERR_FILE_WALK_LIMIT' });
177
190
  }
191
+ stopped = 'entry-limit';
192
+ return false;
178
193
  };
179
194
  try {
180
195
  check();
@@ -195,11 +210,15 @@ async function* executeWalk(plan, signal) {
195
210
  const rootInfo = await wait(fs.lstat(plan.root));
196
211
  check();
197
212
  if (rootInfo.isFile()) {
198
- noteVisit();
213
+ if (!noteVisit())
214
+ return;
199
215
  if (matchers.some((matcher) => matcher.test(path.basename(plan.root))))
200
216
  yield { path: plan.root, size: rootInfo.size };
201
217
  return;
202
218
  }
219
+ // An explicit root is never itself ignored: only what is below it is tested.
220
+ await ignore?.init(plan.root);
221
+ await ignore?.enter(plan.root);
203
222
  let start = plan.root;
204
223
  // Never follow a static-prefix symlink to speed up a pattern: traversal
205
224
  // and its optimized starting point must have the same link policy.
@@ -215,26 +234,30 @@ async function* executeWalk(plan, signal) {
215
234
  return;
216
235
  throw error;
217
236
  }
218
- noteVisit();
237
+ if (!noteVisit())
238
+ return;
219
239
  if (!info.isDirectory())
220
240
  return;
241
+ await ignore?.enter(start);
221
242
  }
222
243
  if (plan.prefix.length >= maxDepth)
223
244
  return;
224
- const openDirectory = async (absolute, relative, depth) => {
245
+ const openDirectory = async (absolute, relative, depth, layered) => {
225
246
  check();
226
247
  try {
227
248
  const dir = await wait(fs.opendir(absolute), (late) => {
228
249
  void close(late).catch(() => { });
229
250
  });
230
- open.push({ dir, relative, depth });
251
+ if (layered)
252
+ await ignore?.enter(absolute);
253
+ open.push({ dir, relative, depth, layered });
231
254
  }
232
255
  catch (error) {
233
256
  if (!missing(error))
234
257
  throw error;
235
258
  }
236
259
  };
237
- await openDirectory(start, plan.prefix.join('/'), plan.prefix.length);
260
+ await openDirectory(start, plan.prefix.join('/'), plan.prefix.length, false);
238
261
  while (open.length > 0) {
239
262
  check();
240
263
  const frame = open[open.length - 1];
@@ -242,20 +265,32 @@ async function* executeWalk(plan, signal) {
242
265
  check();
243
266
  if (!entry) {
244
267
  open.pop();
268
+ if (frame.layered)
269
+ ignore?.leave();
245
270
  await close(frame.dir);
246
271
  continue;
247
272
  }
248
- noteVisit();
273
+ if (!noteVisit())
274
+ return;
275
+ if (VCS_NAMES.has(entry.name))
276
+ continue;
249
277
  const relative = frame.relative ? `${frame.relative}/${entry.name}` : entry.name;
250
278
  const absolute = path.join(plan.root, relative);
251
279
  const depth = frame.depth + 1;
252
280
  if (entry.isDirectory()) {
253
- if (depth < maxDepth && canDescend(relative))
254
- await openDirectory(absolute, relative, depth);
281
+ if (depth >= maxDepth || !canDescend(relative))
282
+ continue;
283
+ if (ignore?.isIgnored(absolute, true)) {
284
+ ignoredDirectories += 1;
285
+ continue;
286
+ }
287
+ await openDirectory(absolute, relative, depth, true);
255
288
  continue;
256
289
  }
257
290
  if (!entry.isFile() || !matchers.some((matcher) => matcher.test(relative)))
258
291
  continue;
292
+ if (ignore?.isIgnored(absolute, false))
293
+ continue;
259
294
  let info;
260
295
  try {
261
296
  info = await wait(fs.lstat(absolute));
@@ -282,12 +317,19 @@ async function* executeWalk(plan, signal) {
282
317
  else
283
318
  await close(dir);
284
319
  }
320
+ onSummary?.({ visited, ignoredDirectories, ...(stopped ? { stopped } : {}) });
285
321
  }
286
322
  }
323
+ /** Global exclude files, lowest precedence. Only the host has them. */
324
+ function globalIgnoreFiles() {
325
+ const home = process.env.HOME ?? process.env.USERPROFILE;
326
+ const base = process.env.XDG_CONFIG_HOME || (home ? join(home, '.config') : undefined);
327
+ return base ? [join(base, 'git', 'ignore')] : [];
328
+ }
287
329
  /** Internal host path; the caller first resolves its authorized filesystem root. */
288
330
  export async function* walkFilesLocally(rootPath, options) {
289
331
  options.signal?.throwIfAborted();
290
- yield* executeWalk(planWalk(rootPath, options), options.signal);
332
+ yield* executeWalk(planWalk(rootPath, options), options.signal, options.onSummary);
291
333
  }
292
334
  /**
293
335
  * Lazy, bounded JSONL enumeration inside the execution boundary owned by exec.
@@ -309,6 +351,7 @@ export async function* walkFilesViaExec(exec, rootPath, options) {
309
351
  let terminal = false;
310
352
  let received = 0;
311
353
  let failure;
354
+ const outcome = {};
312
355
  const reject = (error) => {
313
356
  failure ??= error instanceof Error ? error : new Error(String(error));
314
357
  controller.abort(error);
@@ -323,6 +366,12 @@ export async function* walkFilesViaExec(exec, rootPath, options) {
323
366
  const record = value;
324
367
  if (record.type === 'done') {
325
368
  terminal = true;
369
+ const count = (value) => typeof value === 'number' && Number.isSafeInteger(value) && value >= 0 ? value : 0;
370
+ outcome.summary = {
371
+ visited: count(record.visited),
372
+ ignoredDirectories: count(record.ignoredDirs),
373
+ ...(record.stopped === 'entry-limit' ? { stopped: 'entry-limit' } : {}),
374
+ };
326
375
  return;
327
376
  }
328
377
  if (record.type === 'error' && typeof record.message === 'string') {
@@ -425,6 +474,8 @@ export async function* walkFilesViaExec(exec, rootPath, options) {
425
474
  }
426
475
  finally {
427
476
  dispose?.();
477
+ if (outcome.summary)
478
+ options.onSummary?.(outcome.summary);
428
479
  if (!settled)
429
480
  controller.abort(new Error('File walk consumer stopped'));
430
481
  await pending;
@@ -1 +1 @@
1
- {"version":3,"file":"file-walk.js","sourceRoot":"","sources":["../../src/sandbox/file-walk.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,cAAc,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAO/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAa1D,2EAA2E;AAC3E,iDAAiD;AACjD,MAAM,YAAY,GAAG,cAGR,CAAA;AAEb,SAAS,eAAe,CAAC,KAAa,EAAE,IAAY;IACnD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,kCAAkC,CAAC,CAAA;IAChE,CAAC;IACD,OAAO,KAAK,CAAA;AACb,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY,EAAE,OAAgC;IAC/D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAA;IAC3D,CAAC;IACD,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,CAAA;IACvC,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC3D,IACC,CAAC,OAAO;QACR,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QACvB,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAChC,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAA;IACxF,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI;QAAE,MAAM,IAAI,UAAU,CAAC,2CAA2C,CAAC,CAAA;IAC5F,0EAA0E;IAC1E,8EAA8E;IAC9E,gFAAgF;IAChF,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAA;IACzF,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG;QAAE,MAAM,IAAI,UAAU,CAAC,gDAAgD,CAAC,CAAA;IACjG,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACxC,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3F,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;QAC/D,CAAC;QACD,OAAO,IAAI,SAAS,CAAC,MAAM,EAAE;YAC5B,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;YACf,GAAG,EAAE,OAAO,CAAC,aAAa,IAAI,KAAK;YACnC,QAAQ,EAAE,OAAO;SACjB,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;IACF,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACvD,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAC/D,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAC5B,CAAC,EACD,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CACtF,CAAA;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACxB,YAAY,EACZ,OAAO,CAAC,QAAQ,KAAK,SAAS;QAC7B,CAAC,CAAC,MAAM,CAAC,iBAAiB;QAC1B,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAChD,CAAA;IACD,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAA;QAChC,IACC,OAAO,OAAO,KAAK,QAAQ;YAC3B,CAAC,OAAO;YACR,OAAO,KAAK,GAAG;YACf,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC;YAErE,MAAK;QACN,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACrB,CAAC;IACD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAChD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAA;QACnC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAClF,CAAC,CAAC,CAAA;IACF,OAAO;QACN,IAAI;QACJ,MAAM;QACN,WAAW;QACX,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;QACrD,UAAU,EAAE,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC;QAC7D,iBAAiB,EAAE,eAAe,CAAC,OAAO,CAAC,iBAAiB,IAAI,MAAM,EAAE,mBAAmB,CAAC;QAC5F,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,KAAK;QAC7C,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC1B,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACnB,OAAO,KAAK,QAAQ;YACnB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ;gBAC5B,CAAC,CAAC,OAAO;gBACT,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CACpD,CACD;KACD,CAAA;AACF,CAAC;AAED,iFAAiF;AACjF,SAAS,gBAAgB,CAAC,IAAc;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC1C,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAChB,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAC5F,CACD,CAAA;IACD,OAAO,CAAC,QAAQ,EAAE,EAAE,CACnB,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QACzB,MAAM,OAAO,GAAG,CAAC,MAAmB,EAAE,EAAE;YACvC,KAAK,MAAM,KAAK,IAAI,MAAM;gBAAE,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI;oBAAE,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;YAC9E,OAAO,MAAM,CAAA;QACd,CAAC,CAAA;QACD,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAClC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;YAC9B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;gBAC9B,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;oBACtB,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;wBAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;gBACjE,CAAC;qBAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;oBAC9E,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;YACrB,CAAC;YACD,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;YACtB,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;gBAAE,OAAO,KAAK,CAAA;QACpC,CAAC;QACD,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,iFAAiF;AACjF,KAAK,SAAS,CAAC,CAAC,WAAW,CAC1B,IAAc,EACd,MAAoB;IAEpB,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAA;IAC3C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;IACtC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;IACpD,MAAM,IAAI,GAAsE,EAAE,CAAA;IAClF,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,CAAA;IAC7F,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;IACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,iBAAiB,CAAA;IAC1D,MAAM,OAAO,GAAG,CAAC,KAAc,EAAE,EAAE,CAClC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAE,KAA+B,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IAC5E,MAAM,KAAK,GAAG,KAAK,EAAE,GAA0B,EAAE,EAAE;QAClD,IAAI,CAAC;YACJ,MAAM,GAAG,CAAC,KAAK,EAAE,CAAA;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAK,KAA+B,CAAC,IAAI,KAAK,gBAAgB;gBAAE,MAAM,KAAK,CAAA;QAC5E,CAAC;IACF,CAAC,CAAA;IACD,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,CAAA;IAC5C,KAAK,UAAU,IAAI,CAAI,OAAmB,EAAE,IAAyB;QACpE,IAAI,CAAC,MAAM;YAAE,OAAO,MAAM,OAAO,CAAA;QACjC,IAAI,SAAS,GAAG,MAAM,CAAC,OAAO,CAAA;QAC9B,IAAI,OAAiC,CAAA;QACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACvC,IAAI,SAAS;gBAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAA;YAC5B,OAAO,KAAK,CAAA;QACb,CAAC,CAAC,CAAA;QACF,IAAI,CAAC;YACJ,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC;gBACzB,QAAQ;gBACR,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;oBAChC,MAAM,KAAK,GAAG,GAAG,EAAE;wBAClB,SAAS,GAAG,IAAI,CAAA;wBAChB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;oBACtB,CAAC,CAAA;oBACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;wBACpB,KAAK,EAAE,CAAA;wBACP,OAAM;oBACP,CAAC;oBACD,IAAI,OAAO,YAAY,CAAC,gBAAgB,KAAK,UAAU,EAAE,CAAC;wBACzD,MAAM,YAAY,GAAG,YAAY,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;wBACjE,OAAO,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;oBAC/C,CAAC;yBAAM,CAAC;wBACP,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;wBACvD,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;oBAC3D,CAAC;gBACF,CAAC,CAAC;aACF,CAAC,CAAA;QACH,CAAC;gBAAS,CAAC;YACV,OAAO,EAAE,EAAE,CAAA;QACZ,CAAC;IACF,CAAC;IACD,MAAM,SAAS,GAAG,GAAG,EAAE;QACtB,OAAO,IAAI,CAAC,CAAA;QACZ,IAAI,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACtC,MAAM,MAAM,CAAC,MAAM,CAClB,IAAI,KAAK,CACR,uCAAuC,IAAI,CAAC,iBAAiB,uCAAuC,CACpG,EACD,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAC/B,CAAA;QACF,CAAC;IACF,CAAC,CAAA;IACD,IAAI,CAAC;QACJ,KAAK,EAAE,CAAA;QACP,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QACtC,IAAI,aAAqB,CAAA;QACzB,IAAI,CAAC;YACJ,aAAa,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAM;YAC1B,MAAM,KAAK,CAAA;QACZ,CAAC;QACD,IAAI,aAAa,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAA;QAC7F,sEAAsE;QACtE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAChD,KAAK,EAAE,CAAA;QACP,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACvB,SAAS,EAAE,CAAA;YACX,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACrE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAA;YAC/C,OAAM;QACP,CAAC;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAA;QACrB,wEAAwE;QACxE,mEAAmE;QACnE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,KAAK,EAAE,CAAA;YACP,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;YAC9B,IAAI,IAA6B,CAAA;YACjC,IAAI,CAAC;gBACJ,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,OAAO,CAAC,KAAK,CAAC;oBAAE,OAAM;gBAC1B,MAAM,KAAK,CAAA;YACZ,CAAC;YACD,SAAS,EAAE,CAAA;YACX,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAAE,OAAM;QAChC,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,QAAQ;YAAE,OAAM;QAC1C,MAAM,aAAa,GAAG,KAAK,EAAE,QAAgB,EAAE,QAAgB,EAAE,KAAa,EAAE,EAAE;YACjF,KAAK,EAAE,CAAA;YACP,IAAI,CAAC;gBACJ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE;oBACrD,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;gBACjC,CAAC,CAAC,CAAA;gBACF,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAA;YACpC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;oBAAE,MAAM,KAAK,CAAA;YACjC,CAAC;QACF,CAAC,CAAA;QACD,MAAM,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACrE,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,KAAK,EAAE,CAAA;YACP,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAA0B,CAAA;YAC5D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;YAC1C,KAAK,EAAE,CAAA;YACP,IAAI,CAAC,KAAK,EAAE,CAAC;gBACZ,IAAI,CAAC,GAAG,EAAE,CAAA;gBACV,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBACtB,SAAQ;YACT,CAAC;YACD,SAAS,EAAE,CAAA;YACX,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAA;YAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;YAC/C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAA;YAC7B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACzB,IAAI,KAAK,GAAG,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC;oBAAE,MAAM,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;gBAC5F,SAAQ;YACT,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAAE,SAAQ;YACpF,IAAI,IAA6B,CAAA;YACjC,IAAI,CAAC;gBACJ,IAAI,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;YACtC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,OAAO,CAAC,KAAK,CAAC;oBAAE,SAAQ;gBAC5B,MAAM,KAAK,CAAA;YACZ,CAAC;YACD,KAAK,EAAE,CAAA;YACP,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAAE,SAAQ;YAC5B,OAAO,IAAI,CAAC,CAAA;YACZ,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAA;YACzC,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU;gBAAE,OAAM;QACvC,CAAC;IACF,CAAC;YAAS,CAAC;QACV,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACtC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBACrB,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;YAChC,CAAC;;gBAAM,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;QACxB,CAAC;IACF,CAAC;AACF,CAAC;AAED,oFAAoF;AACpF,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,gBAAgB,CACtC,QAAgB,EAChB,OAAgC;IAEhC,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAA;IAChC,KAAK,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;AAChE,CAAC;AASD;;;;GAIG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,gBAAgB,CACtC,IAAyB,EACzB,QAAgB,EAChB,OAAgC;IAEhC,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAA;IAChC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACxC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM;QAC7B,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClF,CAAC,CAAC,SAAS,CAAA;IACZ,MAAM,KAAK,GAAuB,EAAE,CAAA;IACpC,IAAI,IAA8B,CAAA;IAClC,IAAI,QAAQ,GAAG,EAAE,CAAA;IACjB,IAAI,cAAc,GAAG,KAAK,CAAA;IAC1B,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,OAAgB,CAAA;IACpB,MAAM,MAAM,GAAG,CAAC,KAAc,EAAE,EAAE;QACjC,OAAO,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACrE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACvB,IAAI,EAAE,EAAE,CAAA;IACT,CAAC,CAAA;IACD,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,EAAE;QAChC,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;QACvF,MAAM,KAAK,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACvC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAChG,MAAM,MAAM,GAAG,KAAgC,CAAA;QAC/C,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5B,QAAQ,GAAG,IAAI,CAAA;YACf,OAAM;QACP,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACnE,QAAQ,GAAG,IAAI,CAAA;YACf,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC9C,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;aAC/D,CAAC,CAAA;QACH,CAAC;QACD,IACC,MAAM,CAAC,IAAI,KAAK,OAAO;YACvB,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;YAC/B,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;YAC/B,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC;YAClC,MAAM,CAAC,IAAI,GAAG,CAAC,EACd,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;QAC3C,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;QACtD,IACC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC;YAC9B,QAAQ,KAAK,IAAI;YACjB,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC;YAC1B,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EACzB,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;QAC9D,CAAC;QACD,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QACvF,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IACrD,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE;QAC/B,IAAI,CAAC;YACJ,IAAI,KAAK,GAAG,CAAC,CAAA;YACb,SAAS,CAAC;gBACT,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;gBACzC,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAA;gBAC/C,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,MAAM;oBACzC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;gBAC9D,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;gBAClC,IAAI,OAAO,GAAG,CAAC;oBAAE,MAAK;gBACtB,OAAO,CAAC,QAAQ,CAAC,CAAA;gBACjB,QAAQ,GAAG,EAAE,CAAA;gBACb,KAAK,GAAG,OAAO,GAAG,CAAC,CAAA;YACpB,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,KAAK,CAAC,CAAA;QACd,CAAC;QACD,IAAI,EAAE,EAAE,CAAA;IACT,CAAC,CAAA;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE;SAC/B,IAAI,CAAC,GAAG,EAAE;QACV,UAAU,CAAC,MAAM,CAAC,cAAc,EAAE,CAAA;QAClC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;YACpE,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE;gBAC9B,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;oBACzB,cAAc,GAAG,IAAI,CAAA;oBACrB,MAAM,CAAC,IAAI,CAAC,CAAA;gBACb,CAAC;YACF,CAAC;SACD,CAAC,CAAA;IACH,CAAC,CAAC;SACD,IAAI,CACJ,CAAC,MAAM,EAAE,EAAE;QACV,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;YAAE,OAAM;QACrC,IAAI,CAAC,cAAc,IAAI,MAAM,CAAC,MAAM;YAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC3D,IAAI,QAAQ;YAAE,MAAM,CAAC,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC,CAAA;QAC5E,IAAI,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,eAAe;YACnD,MAAM,CAAC,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC,CAAA;QAC9D,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;YAC3C,MAAM,CACL,IAAI,KAAK,CACR,MAAM,CAAC,QAAQ;gBACd,CAAC,CAAC,qBAAqB;gBACvB,CAAC,CAAC,mCAAmC,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,MAAM,EAAE,CACzE,CACD,CAAA;QACF,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO;YAC1C,MAAM,CAAC,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC,CAAA;IACpE,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;QACT,MAAM,CAAC,KAAK,CAAC,CAAA;IACd,CAAC,CACD;SACA,OAAO,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,IAAI,CAAA;QACd,IAAI,EAAE,EAAE,CAAA;IACT,CAAC,CAAC,CAAA;IACH,IAAI,CAAC;QACJ,SAAS,CAAC;YACT,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAA;YAChC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;YAC3B,IAAI,KAAK,EAAE,CAAC;gBACX,MAAM,KAAK,CAAA;gBACX,SAAQ;YACT,CAAC;YACD,IAAI,OAAO;gBAAE,MAAM,OAAO,CAAA;YAC1B,IAAI,OAAO;gBAAE,MAAK;YAClB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBACnC,IAAI,GAAG,OAAO,CAAA;YACf,CAAC,CAAC,CAAA;YACF,IAAI,GAAG,SAAS,CAAA;QACjB,CAAC;IACF,CAAC;YAAS,CAAC;QACV,OAAO,EAAE,EAAE,CAAA;QACX,IAAI,CAAC,OAAO;YAAE,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAA;QACvE,MAAM,OAAO,CAAA;QACb,wEAAwE;QACxE,oEAAoE;QACpE,6GAA6G;QAC7G,IAAI,OAAO;YAAE,MAAM,OAAO,CAAA;IAC3B,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"file-walk.js","sourceRoot":"","sources":["../../src/sandbox/file-walk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /** One compiled ignore rule. */
2
+ export interface IgnoreRule {
3
+ readonly negate: boolean;
4
+ readonly dirOnly: boolean;
5
+ readonly re: RegExp;
6
+ }
7
+ /** Layered ignore rules for one depth-first walk; see `ignore-source.ts`. */
8
+ export interface IgnoreStack {
9
+ /** Find the enclosing repository and load the layers above the walk root. */
10
+ init(root: string): Promise<void>;
11
+ /** Load a directory's rule files; call before reading it. */
12
+ enter(directory: string): Promise<void>;
13
+ /** Drop the layer of the directory most recently entered. */
14
+ leave(): void;
15
+ isIgnored(absolute: string, isDirectory: boolean): boolean;
16
+ }
17
+ export interface IgnoreDeps {
18
+ readonly fs: unknown;
19
+ readonly path: unknown;
20
+ /** Global exclude files, lowest precedence. The guest has none. */
21
+ readonly extraFiles?: readonly string[];
22
+ }
23
+ /** Parse the text of one ignore file into rules; a line it cannot read is dropped. */
24
+ export declare const parseIgnoreRules: (text: string) => IgnoreRule[];
25
+ /** 0: no rule matches, 1: ignored, 2: re-included. The last matching rule wins. */
26
+ export declare const decideIgnore: (rules: readonly IgnoreRule[], relative: string, isDirectory: boolean) => 0 | 1 | 2;
27
+ export declare const createIgnoreStack: (deps: IgnoreDeps) => IgnoreStack;
28
+ /** Version-control directories that no walk ever descends into. */
29
+ export declare const VCS_NAMES: ReadonlySet<string>;
30
+ //# sourceMappingURL=ignore-matcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignore-matcher.d.ts","sourceRoot":"","sources":["../../src/sandbox/ignore-matcher.ts"],"names":[],"mappings":"AAEA,gCAAgC;AAChC,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CACnB;AAED,6EAA6E;AAC7E,MAAM,WAAW,WAAW;IAC3B,6EAA6E;IAC7E,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjC,6DAA6D;IAC7D,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,6DAA6D;IAC7D,KAAK,IAAI,IAAI,CAAA;IACb,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAA;CAC1D;AAED,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,mEAAmE;IACnE,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACvC;AAcD,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,SAZhB,MAAM,KAAG,UAAU,EAYa,CAAA;AAC7C,mFAAmF;AACnF,eAAO,MAAM,YAAY,UAbV,SAAS,UAAU,EAAE,YAAY,MAAM,eAAe,OAAO,KAAG,CAAC,GAAG,CAAC,GAAG,CAa7C,CAAA;AAC1C,eAAO,MAAM,iBAAiB,SAbhB,UAAU,KAAG,WAaoB,CAAA;AAC/C,mEAAmE;AACnE,eAAO,MAAM,SAAS,EAAE,WAAW,CAAC,MAAM,CAAwB,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { IGNORE_SOURCE } from './ignore-source.js';
2
+ // The same text is embedded in the guest program, so both walks share it.
3
+ const module_ = new Function(`${IGNORE_SOURCE}\nreturn { parse: ignParse, decide: ignDecide, create: ignCreate, vcs: IGN_VCS }`)();
4
+ /** Parse the text of one ignore file into rules; a line it cannot read is dropped. */
5
+ export const parseIgnoreRules = module_.parse;
6
+ /** 0: no rule matches, 1: ignored, 2: re-included. The last matching rule wins. */
7
+ export const decideIgnore = module_.decide;
8
+ export const createIgnoreStack = module_.create;
9
+ /** Version-control directories that no walk ever descends into. */
10
+ export const VCS_NAMES = new Set(module_.vcs);
11
+ //# sourceMappingURL=ignore-matcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignore-matcher.js","sourceRoot":"","sources":["../../src/sandbox/ignore-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAkClD,0EAA0E;AAC1E,MAAM,OAAO,GAAG,IAAI,QAAQ,CAC3B,GAAG,aAAa,kFAAkF,CAClG,EAAkB,CAAA;AAEnB,sFAAsF;AACtF,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAA;AAC7C,mFAAmF;AACnF,MAAM,CAAC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAA;AAC1C,MAAM,CAAC,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAA;AAC/C,mEAAmE;AACnE,MAAM,CAAC,MAAM,SAAS,GAAwB,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * The ignore-file matcher, as plain JavaScript source text.
3
+ *
4
+ * One implementation serves two runtimes. The host walker evaluates this text
5
+ * once (see `ignore-matcher.ts`); the guest program (`file-walk-program.ts`)
6
+ * embeds the same text, because that program travels as a single `node -e`
7
+ * argument with stdin closed and cannot import a package. Keeping it as
8
+ * source text, not a serialised function, means a host bundler cannot rewrite
9
+ * it, and the two walks cannot drift apart.
10
+ *
11
+ * Rules follow the gitignore format: `#` comments, `\#` and `\!` escapes,
12
+ * unescaped trailing spaces dropped, `!` negation, a leading or inner `/`
13
+ * anchors a rule to the file that holds it, a trailing `/` matches
14
+ * directories only, and `*`, `?`, `[...]`, `**` as git defines them. A deeper
15
+ * file beats a shallower one, `.ignore` beats `.gitignore` in the same
16
+ * directory, and the last matching line of a file wins. A rule this matcher
17
+ * does not understand is dropped (an unclosed `[`, or more than three
18
+ * separate `*` in one rule, which could backtrack for seconds), so a visible
19
+ * file is never hidden by one.
20
+ *
21
+ * Nothing here is allowed to contain a backtick or a `${`: it lives inside a
22
+ * template literal. Every helper is prefixed `ign` so that, inlined into the
23
+ * guest program, it cannot collide with that program's own names.
24
+ */
25
+ export declare const IGNORE_SOURCE: string;
26
+ //# sourceMappingURL=ignore-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignore-source.d.ts","sourceRoot":"","sources":["../../src/sandbox/ignore-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,aAAa,QAmMzB,CAAA"}