pi-codex-auto-review 0.1.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 (1057) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +10 -0
  3. package/README.md +77 -0
  4. package/dist/approvals.d.ts +72 -0
  5. package/dist/approvals.js +167 -0
  6. package/dist/approvals.js.map +1 -0
  7. package/dist/audit.d.ts +28 -0
  8. package/dist/audit.js +40 -0
  9. package/dist/audit.js.map +1 -0
  10. package/dist/cli.d.ts +2 -0
  11. package/dist/cli.js +70 -0
  12. package/dist/cli.js.map +1 -0
  13. package/dist/context-files.d.ts +14 -0
  14. package/dist/context-files.js +113 -0
  15. package/dist/context-files.js.map +1 -0
  16. package/dist/contracts.d.ts +258 -0
  17. package/dist/contracts.js +102 -0
  18. package/dist/contracts.js.map +1 -0
  19. package/dist/index.d.ts +28 -0
  20. package/dist/index.js +106 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/native/darwin-arm64/artifact.json +5 -0
  23. package/dist/native/darwin-arm64/pi-guard-execpolicy +0 -0
  24. package/dist/native/linux-x64/artifact.json +5 -0
  25. package/dist/native/linux-x64/pi-guard-execpolicy +0 -0
  26. package/dist/policy/domains.d.ts +5 -0
  27. package/dist/policy/domains.js +18 -0
  28. package/dist/policy/domains.js.map +1 -0
  29. package/dist/policy/index.d.ts +56 -0
  30. package/dist/policy/index.js +304 -0
  31. package/dist/policy/index.js.map +1 -0
  32. package/dist/policy/paths.d.ts +5 -0
  33. package/dist/policy/paths.js +54 -0
  34. package/dist/policy/paths.js.map +1 -0
  35. package/dist/policy/rules.d.ts +36 -0
  36. package/dist/policy/rules.js +61 -0
  37. package/dist/policy/rules.js.map +1 -0
  38. package/dist/policy/shell.d.ts +14 -0
  39. package/dist/policy/shell.js +122 -0
  40. package/dist/policy/shell.js.map +1 -0
  41. package/dist/reports.d.ts +21 -0
  42. package/dist/reports.js +42 -0
  43. package/dist/reports.js.map +1 -0
  44. package/dist/review/context.d.ts +25 -0
  45. package/dist/review/context.js +108 -0
  46. package/dist/review/context.js.map +1 -0
  47. package/dist/review/investigation.d.ts +39 -0
  48. package/dist/review/investigation.js +36 -0
  49. package/dist/review/investigation.js.map +1 -0
  50. package/dist/review/lifecycle.d.ts +29 -0
  51. package/dist/review/lifecycle.js +71 -0
  52. package/dist/review/lifecycle.js.map +1 -0
  53. package/dist/review/policy.d.ts +4 -0
  54. package/dist/review/policy.js +15 -0
  55. package/dist/review/policy.js.map +1 -0
  56. package/dist/review/upstream-policy.d.ts +2 -0
  57. package/dist/review/upstream-policy.js +210 -0
  58. package/dist/review/upstream-policy.js.map +1 -0
  59. package/dist/reviewer.d.ts +45 -0
  60. package/dist/reviewer.js +148 -0
  61. package/dist/reviewer.js.map +1 -0
  62. package/dist/sandbox/broker.d.ts +1 -0
  63. package/dist/sandbox/broker.js +135 -0
  64. package/dist/sandbox/broker.js.map +1 -0
  65. package/dist/sandbox/config.d.ts +5 -0
  66. package/dist/sandbox/config.js +91 -0
  67. package/dist/sandbox/config.js.map +1 -0
  68. package/dist/sandbox/executor.d.ts +20 -0
  69. package/dist/sandbox/executor.js +144 -0
  70. package/dist/sandbox/executor.js.map +1 -0
  71. package/dist/sandbox/hard-links.d.ts +4 -0
  72. package/dist/sandbox/hard-links.js +145 -0
  73. package/dist/sandbox/hard-links.js.map +1 -0
  74. package/dist/sandbox/linux-read-paths.d.ts +7 -0
  75. package/dist/sandbox/linux-read-paths.js +47 -0
  76. package/dist/sandbox/linux-read-paths.js.map +1 -0
  77. package/dist/sandbox/paths.d.ts +3 -0
  78. package/dist/sandbox/paths.js +10 -0
  79. package/dist/sandbox/paths.js.map +1 -0
  80. package/dist/sandbox/runtime-write-paths.d.ts +2 -0
  81. package/dist/sandbox/runtime-write-paths.js +8 -0
  82. package/dist/sandbox/runtime-write-paths.js.map +1 -0
  83. package/dist/sandbox/seccomp.d.ts +5 -0
  84. package/dist/sandbox/seccomp.js +16 -0
  85. package/dist/sandbox/seccomp.js.map +1 -0
  86. package/dist/sandbox/worker.d.ts +1 -0
  87. package/dist/sandbox/worker.js +73 -0
  88. package/dist/sandbox/worker.js.map +1 -0
  89. package/dist/signals.d.ts +10 -0
  90. package/dist/signals.js +21 -0
  91. package/dist/signals.js.map +1 -0
  92. package/dist/startup.d.ts +22 -0
  93. package/dist/startup.js +100 -0
  94. package/dist/startup.js.map +1 -0
  95. package/dist/tools/controller.d.ts +63 -0
  96. package/dist/tools/controller.js +286 -0
  97. package/dist/tools/controller.js.map +1 -0
  98. package/dist/tools/external.d.ts +30 -0
  99. package/dist/tools/external.js +24 -0
  100. package/dist/tools/external.js.map +1 -0
  101. package/dist/tools/mcp.d.ts +17 -0
  102. package/dist/tools/mcp.js +186 -0
  103. package/dist/tools/mcp.js.map +1 -0
  104. package/docs/publishing.md +73 -0
  105. package/docs/security/dependencies.md +43 -0
  106. package/docs/testing/auto-review-protection.md +130 -0
  107. package/docs/usage.md +217 -0
  108. package/native/execpolicy/LICENSE +201 -0
  109. package/native/execpolicy/NOTICE +6 -0
  110. package/node_modules/@anthropic-ai/sandbox-runtime/LICENSE +201 -0
  111. package/node_modules/@anthropic-ai/sandbox-runtime/README.md +901 -0
  112. package/node_modules/@anthropic-ai/sandbox-runtime/dist/cli.d.ts +3 -0
  113. package/node_modules/@anthropic-ai/sandbox-runtime/dist/cli.d.ts.map +1 -0
  114. package/node_modules/@anthropic-ai/sandbox-runtime/dist/cli.js +472 -0
  115. package/node_modules/@anthropic-ai/sandbox-runtime/dist/cli.js.map +1 -0
  116. package/node_modules/@anthropic-ai/sandbox-runtime/dist/index.d.ts +19 -0
  117. package/node_modules/@anthropic-ai/sandbox-runtime/dist/index.d.ts.map +1 -0
  118. package/node_modules/@anthropic-ai/sandbox-runtime/dist/index.js +17 -0
  119. package/node_modules/@anthropic-ai/sandbox-runtime/dist/index.js.map +1 -0
  120. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/address.d.ts +52 -0
  121. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/address.d.ts.map +1 -0
  122. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/address.js +153 -0
  123. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/address.js.map +1 -0
  124. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/aws-sigv4.d.ts +164 -0
  125. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/aws-sigv4.d.ts.map +1 -0
  126. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/aws-sigv4.js +246 -0
  127. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/aws-sigv4.js.map +1 -0
  128. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/body-substitution.d.ts +58 -0
  129. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/body-substitution.d.ts.map +1 -0
  130. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/body-substitution.js +128 -0
  131. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/body-substitution.js.map +1 -0
  132. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-aws-pairs.d.ts +124 -0
  133. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-aws-pairs.d.ts.map +1 -0
  134. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-aws-pairs.js +258 -0
  135. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-aws-pairs.js.map +1 -0
  136. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-decode.d.ts +87 -0
  137. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-decode.d.ts.map +1 -0
  138. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-decode.js +138 -0
  139. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-decode.js.map +1 -0
  140. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-extract.d.ts +67 -0
  141. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-extract.d.ts.map +1 -0
  142. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-extract.js +113 -0
  143. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-extract.js.map +1 -0
  144. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-env.d.ts +70 -0
  145. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-env.d.ts.map +1 -0
  146. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-env.js +171 -0
  147. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-env.js.map +1 -0
  148. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-files.d.ts +120 -0
  149. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-files.d.ts.map +1 -0
  150. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-files.js +281 -0
  151. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-mask-files.js.map +1 -0
  152. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-sentinel.d.ts +108 -0
  153. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-sentinel.d.ts.map +1 -0
  154. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-sentinel.js +208 -0
  155. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/credential-sentinel.js.map +1 -0
  156. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/domain-pattern.d.ts +82 -0
  157. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/domain-pattern.d.ts.map +1 -0
  158. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/domain-pattern.js +155 -0
  159. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/domain-pattern.js.map +1 -0
  160. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/generate-seccomp-filter.d.ts +44 -0
  161. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/generate-seccomp-filter.d.ts.map +1 -0
  162. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/generate-seccomp-filter.js +220 -0
  163. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/generate-seccomp-filter.js.map +1 -0
  164. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/http-proxy.d.ts +150 -0
  165. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/http-proxy.d.ts.map +1 -0
  166. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/http-proxy.js +678 -0
  167. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/http-proxy.js.map +1 -0
  168. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/java-proxy-agent.d.ts +32 -0
  169. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/java-proxy-agent.d.ts.map +1 -0
  170. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/java-proxy-agent.js +111 -0
  171. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/java-proxy-agent.js.map +1 -0
  172. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-sandbox-utils.d.ts +305 -0
  173. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-sandbox-utils.d.ts.map +1 -0
  174. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-sandbox-utils.js +2605 -0
  175. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-sandbox-utils.js.map +1 -0
  176. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-violation-monitor.d.ts +55 -0
  177. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-violation-monitor.d.ts.map +1 -0
  178. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-violation-monitor.js +152 -0
  179. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/linux-violation-monitor.js.map +1 -0
  180. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/listen-in-range.d.ts +12 -0
  181. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/listen-in-range.d.ts.map +1 -0
  182. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/listen-in-range.js +43 -0
  183. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/listen-in-range.js.map +1 -0
  184. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/macos-sandbox-utils.d.ts +116 -0
  185. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/macos-sandbox-utils.d.ts.map +1 -0
  186. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/macos-sandbox-utils.js +1195 -0
  187. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/macos-sandbox-utils.js.map +1 -0
  188. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-ca.d.ts +200 -0
  189. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-ca.d.ts.map +1 -0
  190. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-ca.js +443 -0
  191. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-ca.js.map +1 -0
  192. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-leaf.d.ts +28 -0
  193. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-leaf.d.ts.map +1 -0
  194. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-leaf.js +114 -0
  195. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mitm-leaf.js.map +1 -0
  196. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mux-proxy.d.ts +59 -0
  197. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mux-proxy.d.ts.map +1 -0
  198. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mux-proxy.js +159 -0
  199. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/mux-proxy.js.map +1 -0
  200. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/parent-proxy.d.ts +147 -0
  201. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/parent-proxy.d.ts.map +1 -0
  202. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/parent-proxy.js +445 -0
  203. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/parent-proxy.js.map +1 -0
  204. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/read-deny-glob.d.ts +17 -0
  205. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/read-deny-glob.d.ts.map +1 -0
  206. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/read-deny-glob.js +163 -0
  207. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/read-deny-glob.js.map +1 -0
  208. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/request-filter.d.ts +83 -0
  209. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/request-filter.d.ts.map +1 -0
  210. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/request-filter.js +212 -0
  211. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/request-filter.js.map +1 -0
  212. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/resolved-address-guard.d.ts +76 -0
  213. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/resolved-address-guard.d.ts.map +1 -0
  214. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/resolved-address-guard.js +221 -0
  215. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/resolved-address-guard.js.map +1 -0
  216. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-config.d.ts +1691 -0
  217. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-config.d.ts.map +1 -0
  218. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-config.js +1233 -0
  219. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-config.js.map +1 -0
  220. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-manager.d.ts +97 -0
  221. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-manager.d.ts.map +1 -0
  222. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-manager.js +1937 -0
  223. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-manager.js.map +1 -0
  224. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-schemas.d.ts +113 -0
  225. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-schemas.d.ts.map +1 -0
  226. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-schemas.js +3 -0
  227. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-schemas.js.map +1 -0
  228. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-utils.d.ts +411 -0
  229. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-utils.d.ts.map +1 -0
  230. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-utils.js +1408 -0
  231. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-utils.js.map +1 -0
  232. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-violation-store.d.ts +37 -0
  233. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-violation-store.d.ts.map +1 -0
  234. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-violation-store.js +125 -0
  235. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/sandbox-violation-store.js.map +1 -0
  236. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/socks-proxy.d.ts +57 -0
  237. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/socks-proxy.d.ts.map +1 -0
  238. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/socks-proxy.js +332 -0
  239. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/socks-proxy.js.map +1 -0
  240. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/tls-terminate-proxy.d.ts +100 -0
  241. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/tls-terminate-proxy.d.ts.map +1 -0
  242. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/tls-terminate-proxy.js +546 -0
  243. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/tls-terminate-proxy.js.map +1 -0
  244. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/windows-sandbox-utils.d.ts +923 -0
  245. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/windows-sandbox-utils.d.ts.map +1 -0
  246. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/windows-sandbox-utils.js +1419 -0
  247. package/node_modules/@anthropic-ai/sandbox-runtime/dist/sandbox/windows-sandbox-utils.js.map +1 -0
  248. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/config-loader.d.ts +31 -0
  249. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/config-loader.d.ts.map +1 -0
  250. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/config-loader.js +69 -0
  251. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/config-loader.js.map +1 -0
  252. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/debug.d.ts +7 -0
  253. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/debug.d.ts.map +1 -0
  254. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/debug.js +25 -0
  255. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/debug.js.map +1 -0
  256. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/platform.d.ts +15 -0
  257. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/platform.d.ts.map +1 -0
  258. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/platform.js +49 -0
  259. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/platform.js.map +1 -0
  260. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/ripgrep.d.ts +17 -0
  261. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/ripgrep.d.ts.map +1 -0
  262. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/ripgrep.js +37 -0
  263. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/ripgrep.js.map +1 -0
  264. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/shell-quote.d.ts +27 -0
  265. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/shell-quote.d.ts.map +1 -0
  266. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/shell-quote.js +47 -0
  267. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/shell-quote.js.map +1 -0
  268. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/which.d.ts +9 -0
  269. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/which.d.ts.map +1 -0
  270. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/which.js +25 -0
  271. package/node_modules/@anthropic-ai/sandbox-runtime/dist/utils/which.js.map +1 -0
  272. package/node_modules/@anthropic-ai/sandbox-runtime/package.json +88 -0
  273. package/node_modules/@anthropic-ai/sandbox-runtime/vendor/java-proxy-agent/build.ts +95 -0
  274. package/node_modules/@anthropic-ai/sandbox-runtime/vendor/java-proxy-agent/srt-proxy-agent.jar +0 -0
  275. package/node_modules/@anthropic-ai/sandbox-runtime/vendor/seccomp/arm64/apply-seccomp +0 -0
  276. package/node_modules/@anthropic-ai/sandbox-runtime/vendor/seccomp/build.ts +69 -0
  277. package/node_modules/@anthropic-ai/sandbox-runtime/vendor/seccomp/x64/apply-seccomp +0 -0
  278. package/node_modules/@anthropic-ai/sandbox-runtime/vendor/srt-win/arm64/srt-win.exe +0 -0
  279. package/node_modules/@anthropic-ai/sandbox-runtime/vendor/srt-win/build.ts +28 -0
  280. package/node_modules/@anthropic-ai/sandbox-runtime/vendor/srt-win/x64/srt-win.exe +0 -0
  281. package/node_modules/@pondwader/socks5-server/.github/workflows/ci.yml +27 -0
  282. package/node_modules/@pondwader/socks5-server/LICENSE +20 -0
  283. package/node_modules/@pondwader/socks5-server/README.md +151 -0
  284. package/node_modules/@pondwader/socks5-server/dist/index.d.mts +87 -0
  285. package/node_modules/@pondwader/socks5-server/dist/index.d.ts +87 -0
  286. package/node_modules/@pondwader/socks5-server/dist/index.js +346 -0
  287. package/node_modules/@pondwader/socks5-server/dist/index.mjs +307 -0
  288. package/node_modules/@pondwader/socks5-server/package.json +31 -0
  289. package/node_modules/commander/LICENSE +22 -0
  290. package/node_modules/commander/Readme.md +1157 -0
  291. package/node_modules/commander/esm.mjs +16 -0
  292. package/node_modules/commander/index.js +24 -0
  293. package/node_modules/commander/lib/argument.js +149 -0
  294. package/node_modules/commander/lib/command.js +2509 -0
  295. package/node_modules/commander/lib/error.js +39 -0
  296. package/node_modules/commander/lib/help.js +520 -0
  297. package/node_modules/commander/lib/option.js +330 -0
  298. package/node_modules/commander/lib/suggestSimilar.js +101 -0
  299. package/node_modules/commander/package-support.json +16 -0
  300. package/node_modules/commander/package.json +84 -0
  301. package/node_modules/commander/typings/esm.d.mts +3 -0
  302. package/node_modules/commander/typings/index.d.ts +969 -0
  303. package/node_modules/node-forge/.editorconfig +17 -0
  304. package/node_modules/node-forge/.eslintrc.js +24 -0
  305. package/node_modules/node-forge/.github/workflows/main.yaml +96 -0
  306. package/node_modules/node-forge/.istanbul.yml +2 -0
  307. package/node_modules/node-forge/.npmignore +15 -0
  308. package/node_modules/node-forge/CHANGELOG.md +555 -0
  309. package/node_modules/node-forge/CONTRIBUTING.md +18 -0
  310. package/node_modules/node-forge/LICENSE +331 -0
  311. package/node_modules/node-forge/README.md +2071 -0
  312. package/node_modules/node-forge/RELEASE.md +19 -0
  313. package/node_modules/node-forge/SECURITY.md +5 -0
  314. package/node_modules/node-forge/examples/create-cert.js +110 -0
  315. package/node_modules/node-forge/examples/create-csr.js +66 -0
  316. package/node_modules/node-forge/examples/create-pkcs12.js +160 -0
  317. package/node_modules/node-forge/examples/imap.js +46 -0
  318. package/node_modules/node-forge/examples/sign-p7.js +115 -0
  319. package/node_modules/node-forge/examples/tls.js +189 -0
  320. package/node_modules/node-forge/flash/PooledSocket.as +18 -0
  321. package/node_modules/node-forge/flash/README.md +48 -0
  322. package/node_modules/node-forge/flash/SocketEvent.as +36 -0
  323. package/node_modules/node-forge/flash/SocketPool.as +754 -0
  324. package/node_modules/node-forge/flash/mod_fsp/README +135 -0
  325. package/node_modules/node-forge/flash/mod_fsp/mod_fsp.c +415 -0
  326. package/node_modules/node-forge/flash/package.json +28 -0
  327. package/node_modules/node-forge/flash/policyserver.js +65 -0
  328. package/node_modules/node-forge/flash/policyserver.py +112 -0
  329. package/node_modules/node-forge/flash/swf/SocketPool.swf +0 -0
  330. package/node_modules/node-forge/karma-sauce.conf.js +79 -0
  331. package/node_modules/node-forge/karma.conf.js +133 -0
  332. package/node_modules/node-forge/lib/aes.js +1091 -0
  333. package/node_modules/node-forge/lib/aesCipherSuites.js +282 -0
  334. package/node_modules/node-forge/lib/asn1-validator.js +91 -0
  335. package/node_modules/node-forge/lib/asn1.js +1503 -0
  336. package/node_modules/node-forge/lib/baseN.js +186 -0
  337. package/node_modules/node-forge/lib/cipher.js +230 -0
  338. package/node_modules/node-forge/lib/cipherModes.js +999 -0
  339. package/node_modules/node-forge/lib/des.js +496 -0
  340. package/node_modules/node-forge/lib/ed25519.js +1091 -0
  341. package/node_modules/node-forge/lib/forge.js +13 -0
  342. package/node_modules/node-forge/lib/form.js +149 -0
  343. package/node_modules/node-forge/lib/hmac.js +146 -0
  344. package/node_modules/node-forge/lib/http.js +1346 -0
  345. package/node_modules/node-forge/lib/index.all.js +16 -0
  346. package/node_modules/node-forge/lib/index.js +33 -0
  347. package/node_modules/node-forge/lib/jsbn.js +1294 -0
  348. package/node_modules/node-forge/lib/kem.js +168 -0
  349. package/node_modules/node-forge/lib/log.js +319 -0
  350. package/node_modules/node-forge/lib/md.all.js +13 -0
  351. package/node_modules/node-forge/lib/md.js +11 -0
  352. package/node_modules/node-forge/lib/md5.js +289 -0
  353. package/node_modules/node-forge/lib/mgf.js +12 -0
  354. package/node_modules/node-forge/lib/mgf1.js +57 -0
  355. package/node_modules/node-forge/lib/oids.js +180 -0
  356. package/node_modules/node-forge/lib/pbe.js +1023 -0
  357. package/node_modules/node-forge/lib/pbkdf2.js +211 -0
  358. package/node_modules/node-forge/lib/pem.js +237 -0
  359. package/node_modules/node-forge/lib/pkcs1.js +276 -0
  360. package/node_modules/node-forge/lib/pkcs12.js +1078 -0
  361. package/node_modules/node-forge/lib/pkcs7.js +1260 -0
  362. package/node_modules/node-forge/lib/pkcs7asn1.js +410 -0
  363. package/node_modules/node-forge/lib/pki.js +102 -0
  364. package/node_modules/node-forge/lib/prime.js +297 -0
  365. package/node_modules/node-forge/lib/prime.worker.js +168 -0
  366. package/node_modules/node-forge/lib/prng.js +419 -0
  367. package/node_modules/node-forge/lib/pss.js +241 -0
  368. package/node_modules/node-forge/lib/random.js +191 -0
  369. package/node_modules/node-forge/lib/rc2.js +410 -0
  370. package/node_modules/node-forge/lib/rsa.js +1973 -0
  371. package/node_modules/node-forge/lib/sha1.js +319 -0
  372. package/node_modules/node-forge/lib/sha256.js +327 -0
  373. package/node_modules/node-forge/lib/sha512.js +561 -0
  374. package/node_modules/node-forge/lib/socket.js +287 -0
  375. package/node_modules/node-forge/lib/ssh.js +236 -0
  376. package/node_modules/node-forge/lib/tls.js +4282 -0
  377. package/node_modules/node-forge/lib/tlssocket.js +249 -0
  378. package/node_modules/node-forge/lib/util.js +2652 -0
  379. package/node_modules/node-forge/lib/x509.js +3251 -0
  380. package/node_modules/node-forge/lib/xhr.js +738 -0
  381. package/node_modules/node-forge/package.json +123 -0
  382. package/node_modules/node-forge/tests/.eslintrc.js +5 -0
  383. package/node_modules/node-forge/tests/README.md +4 -0
  384. package/node_modules/node-forge/tests/benchmarks/aes-speed.js +62 -0
  385. package/node_modules/node-forge/tests/benchmarks/so-44303784.js +246 -0
  386. package/node_modules/node-forge/tests/flash/README.md +7 -0
  387. package/node_modules/node-forge/tests/flash/Test.as +96 -0
  388. package/node_modules/node-forge/tests/flash/build-flash.xml +7 -0
  389. package/node_modules/node-forge/tests/flash/index.html +28 -0
  390. package/node_modules/node-forge/tests/index.html +33 -0
  391. package/node_modules/node-forge/tests/issues/heartbleed.js +55 -0
  392. package/node_modules/node-forge/tests/issues/issue-428.html +95 -0
  393. package/node_modules/node-forge/tests/issues/issue-428.js +375 -0
  394. package/node_modules/node-forge/tests/karma/index.js +8 -0
  395. package/node_modules/node-forge/tests/karma/testWorker.js +65 -0
  396. package/node_modules/node-forge/tests/karma/web-worker-rsa.js +55 -0
  397. package/node_modules/node-forge/tests/legacy/common.html +65 -0
  398. package/node_modules/node-forge/tests/legacy/common.js +2199 -0
  399. package/node_modules/node-forge/tests/legacy/form.html +148 -0
  400. package/node_modules/node-forge/tests/legacy/form.js +40 -0
  401. package/node_modules/node-forge/tests/legacy/http.html +235 -0
  402. package/node_modules/node-forge/tests/legacy/index.html +70 -0
  403. package/node_modules/node-forge/tests/legacy/keygen.html +113 -0
  404. package/node_modules/node-forge/tests/legacy/login.css +26 -0
  405. package/node_modules/node-forge/tests/legacy/loginDemo.html +32 -0
  406. package/node_modules/node-forge/tests/legacy/loginDemo.js +149 -0
  407. package/node_modules/node-forge/tests/legacy/performance.html +533 -0
  408. package/node_modules/node-forge/tests/legacy/result.txt +1 -0
  409. package/node_modules/node-forge/tests/legacy/socketPool.html +302 -0
  410. package/node_modules/node-forge/tests/legacy/tasks.html +54 -0
  411. package/node_modules/node-forge/tests/legacy/tasks.js +378 -0
  412. package/node_modules/node-forge/tests/legacy/tls.html +389 -0
  413. package/node_modules/node-forge/tests/legacy/webid.html +89 -0
  414. package/node_modules/node-forge/tests/legacy/webid.js +313 -0
  415. package/node_modules/node-forge/tests/legacy/ws-webid.js +120 -0
  416. package/node_modules/node-forge/tests/legacy/xhr.html +67 -0
  417. package/node_modules/node-forge/tests/legacy/xhr.js +590 -0
  418. package/node_modules/node-forge/tests/pocs/ghsa-2328-f5f3-gj25.js +85 -0
  419. package/node_modules/node-forge/tests/pocs/ghsa-ppp5-5v6c-4jwp.js +166 -0
  420. package/node_modules/node-forge/tests/pocs/ghsa-q67f-28xg-22rw.js +103 -0
  421. package/node_modules/node-forge/tests/security/cve-2025-12816.js +75 -0
  422. package/node_modules/node-forge/tests/security/ghsa-554w-wpv2-vw27.js +81 -0
  423. package/node_modules/node-forge/tests/security/index.js +3 -0
  424. package/node_modules/node-forge/tests/server.crt +26 -0
  425. package/node_modules/node-forge/tests/server.js +87 -0
  426. package/node_modules/node-forge/tests/server.key +27 -0
  427. package/node_modules/node-forge/tests/support/task.js +718 -0
  428. package/node_modules/node-forge/tests/tests.css +61 -0
  429. package/node_modules/node-forge/tests/unit/aes.js +1498 -0
  430. package/node_modules/node-forge/tests/unit/asn1.js +1337 -0
  431. package/node_modules/node-forge/tests/unit/csr.js +129 -0
  432. package/node_modules/node-forge/tests/unit/des.js +231 -0
  433. package/node_modules/node-forge/tests/unit/ed25519.js +395 -0
  434. package/node_modules/node-forge/tests/unit/forge.js +2 -0
  435. package/node_modules/node-forge/tests/unit/hmac.js +64 -0
  436. package/node_modules/node-forge/tests/unit/index.html +20 -0
  437. package/node_modules/node-forge/tests/unit/index.js +27 -0
  438. package/node_modules/node-forge/tests/unit/jsbn.js +40 -0
  439. package/node_modules/node-forge/tests/unit/kem.js +167 -0
  440. package/node_modules/node-forge/tests/unit/md5.js +114 -0
  441. package/node_modules/node-forge/tests/unit/mgf1.js +16 -0
  442. package/node_modules/node-forge/tests/unit/pbkdf2.js +182 -0
  443. package/node_modules/node-forge/tests/unit/pem.js +159 -0
  444. package/node_modules/node-forge/tests/unit/pkcs1.js +1077 -0
  445. package/node_modules/node-forge/tests/unit/pkcs12.js +739 -0
  446. package/node_modules/node-forge/tests/unit/pkcs7.js +792 -0
  447. package/node_modules/node-forge/tests/unit/random.js +48 -0
  448. package/node_modules/node-forge/tests/unit/rc2.js +88 -0
  449. package/node_modules/node-forge/tests/unit/rsa.js +1278 -0
  450. package/node_modules/node-forge/tests/unit/sha1.js +72 -0
  451. package/node_modules/node-forge/tests/unit/sha256.js +79 -0
  452. package/node_modules/node-forge/tests/unit/sha512.js +200 -0
  453. package/node_modules/node-forge/tests/unit/ssh.js +175 -0
  454. package/node_modules/node-forge/tests/unit/tls.js +175 -0
  455. package/node_modules/node-forge/tests/unit/util.js +595 -0
  456. package/node_modules/node-forge/tests/unit/x509.js +1986 -0
  457. package/node_modules/node-forge/tests/websockets/server-webid.js +495 -0
  458. package/node_modules/node-forge/tests/websockets/server-ws.js +158 -0
  459. package/node_modules/node-forge/webpack-tests.config.js +26 -0
  460. package/node_modules/node-forge/webpack.config.js +130 -0
  461. package/node_modules/zod/LICENSE +21 -0
  462. package/node_modules/zod/README.md +208 -0
  463. package/node_modules/zod/index.cjs +33 -0
  464. package/node_modules/zod/index.d.cts +4 -0
  465. package/node_modules/zod/index.d.ts +4 -0
  466. package/node_modules/zod/index.js +4 -0
  467. package/node_modules/zod/package.json +118 -0
  468. package/node_modules/zod/src/index.ts +4 -0
  469. package/node_modules/zod/src/v3/ZodError.ts +330 -0
  470. package/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
  471. package/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
  472. package/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
  473. package/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
  474. package/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
  475. package/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
  476. package/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
  477. package/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
  478. package/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
  479. package/node_modules/zod/src/v3/errors.ts +13 -0
  480. package/node_modules/zod/src/v3/external.ts +6 -0
  481. package/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
  482. package/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
  483. package/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
  484. package/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
  485. package/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
  486. package/node_modules/zod/src/v3/helpers/util.ts +224 -0
  487. package/node_modules/zod/src/v3/index.ts +4 -0
  488. package/node_modules/zod/src/v3/locales/en.ts +124 -0
  489. package/node_modules/zod/src/v3/standard-schema.ts +113 -0
  490. package/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
  491. package/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
  492. package/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
  493. package/node_modules/zod/src/v3/tests/array.test.ts +71 -0
  494. package/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
  495. package/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
  496. package/node_modules/zod/src/v3/tests/base.test.ts +29 -0
  497. package/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
  498. package/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
  499. package/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
  500. package/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
  501. package/node_modules/zod/src/v3/tests/complex.test.ts +56 -0
  502. package/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
  503. package/node_modules/zod/src/v3/tests/date.test.ts +32 -0
  504. package/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
  505. package/node_modules/zod/src/v3/tests/default.test.ts +112 -0
  506. package/node_modules/zod/src/v3/tests/description.test.ts +33 -0
  507. package/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
  508. package/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
  509. package/node_modules/zod/src/v3/tests/error.test.ts +551 -0
  510. package/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
  511. package/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
  512. package/node_modules/zod/src/v3/tests/function.test.ts +257 -0
  513. package/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
  514. package/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
  515. package/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
  516. package/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
  517. package/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
  518. package/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
  519. package/node_modules/zod/src/v3/tests/map.test.ts +110 -0
  520. package/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
  521. package/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
  522. package/node_modules/zod/src/v3/tests/nan.test.ts +21 -0
  523. package/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
  524. package/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
  525. package/node_modules/zod/src/v3/tests/number.test.ts +176 -0
  526. package/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
  527. package/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
  528. package/node_modules/zod/src/v3/tests/object.test.ts +434 -0
  529. package/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
  530. package/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
  531. package/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
  532. package/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
  533. package/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
  534. package/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
  535. package/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
  536. package/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
  537. package/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
  538. package/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
  539. package/node_modules/zod/src/v3/tests/record.test.ts +171 -0
  540. package/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
  541. package/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
  542. package/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
  543. package/node_modules/zod/src/v3/tests/set.test.ts +142 -0
  544. package/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
  545. package/node_modules/zod/src/v3/tests/string.test.ts +916 -0
  546. package/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
  547. package/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
  548. package/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
  549. package/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
  550. package/node_modules/zod/src/v3/tests/void.test.ts +15 -0
  551. package/node_modules/zod/src/v3/types.ts +5136 -0
  552. package/node_modules/zod/src/v4/classic/checks.ts +30 -0
  553. package/node_modules/zod/src/v4/classic/coerce.ts +27 -0
  554. package/node_modules/zod/src/v4/classic/compat.ts +66 -0
  555. package/node_modules/zod/src/v4/classic/errors.ts +75 -0
  556. package/node_modules/zod/src/v4/classic/external.ts +50 -0
  557. package/node_modules/zod/src/v4/classic/index.ts +5 -0
  558. package/node_modules/zod/src/v4/classic/iso.ts +90 -0
  559. package/node_modules/zod/src/v4/classic/parse.ts +33 -0
  560. package/node_modules/zod/src/v4/classic/schemas.ts +2054 -0
  561. package/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
  562. package/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
  563. package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +210 -0
  564. package/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
  565. package/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
  566. package/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
  567. package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
  568. package/node_modules/zod/src/v4/classic/tests/brand.test.ts +63 -0
  569. package/node_modules/zod/src/v4/classic/tests/catch.test.ts +252 -0
  570. package/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
  571. package/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
  572. package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +352 -0
  573. package/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
  574. package/node_modules/zod/src/v4/classic/tests/date.test.ts +31 -0
  575. package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +296 -0
  576. package/node_modules/zod/src/v4/classic/tests/default.test.ts +313 -0
  577. package/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
  578. package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +619 -0
  579. package/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
  580. package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +527 -0
  581. package/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
  582. package/node_modules/zod/src/v4/classic/tests/file.test.ts +91 -0
  583. package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +175 -0
  584. package/node_modules/zod/src/v4/classic/tests/function.test.ts +268 -0
  585. package/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
  586. package/node_modules/zod/src/v4/classic/tests/index.test.ts +829 -0
  587. package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +34 -0
  588. package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +171 -0
  589. package/node_modules/zod/src/v4/classic/tests/json.test.ts +108 -0
  590. package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
  591. package/node_modules/zod/src/v4/classic/tests/literal.test.ts +92 -0
  592. package/node_modules/zod/src/v4/classic/tests/map.test.ts +196 -0
  593. package/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
  594. package/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
  595. package/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +86 -0
  596. package/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
  597. package/node_modules/zod/src/v4/classic/tests/number.test.ts +247 -0
  598. package/node_modules/zod/src/v4/classic/tests/object.test.ts +563 -0
  599. package/node_modules/zod/src/v4/classic/tests/optional.test.ts +123 -0
  600. package/node_modules/zod/src/v4/classic/tests/partial.test.ts +147 -0
  601. package/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +127 -0
  602. package/node_modules/zod/src/v4/classic/tests/pipe.test.ts +81 -0
  603. package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +37 -0
  604. package/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +298 -0
  605. package/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
  606. package/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
  607. package/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
  608. package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
  609. package/node_modules/zod/src/v4/classic/tests/record.test.ts +342 -0
  610. package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +356 -0
  611. package/node_modules/zod/src/v4/classic/tests/refine.test.ts +532 -0
  612. package/node_modules/zod/src/v4/classic/tests/registries.test.ts +204 -0
  613. package/node_modules/zod/src/v4/classic/tests/set.test.ts +179 -0
  614. package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +57 -0
  615. package/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +109 -0
  616. package/node_modules/zod/src/v4/classic/tests/string.test.ts +881 -0
  617. package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +66 -0
  618. package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +758 -0
  619. package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +2314 -0
  620. package/node_modules/zod/src/v4/classic/tests/transform.test.ts +250 -0
  621. package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +163 -0
  622. package/node_modules/zod/src/v4/classic/tests/union.test.ts +94 -0
  623. package/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
  624. package/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
  625. package/node_modules/zod/src/v4/core/api.ts +1594 -0
  626. package/node_modules/zod/src/v4/core/checks.ts +1283 -0
  627. package/node_modules/zod/src/v4/core/config.ts +15 -0
  628. package/node_modules/zod/src/v4/core/core.ts +134 -0
  629. package/node_modules/zod/src/v4/core/doc.ts +44 -0
  630. package/node_modules/zod/src/v4/core/errors.ts +424 -0
  631. package/node_modules/zod/src/v4/core/function.ts +176 -0
  632. package/node_modules/zod/src/v4/core/index.ts +15 -0
  633. package/node_modules/zod/src/v4/core/json-schema.ts +143 -0
  634. package/node_modules/zod/src/v4/core/parse.ts +94 -0
  635. package/node_modules/zod/src/v4/core/regexes.ts +135 -0
  636. package/node_modules/zod/src/v4/core/registries.ts +96 -0
  637. package/node_modules/zod/src/v4/core/schemas.ts +3842 -0
  638. package/node_modules/zod/src/v4/core/standard-schema.ts +64 -0
  639. package/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
  640. package/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
  641. package/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
  642. package/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
  643. package/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
  644. package/node_modules/zod/src/v4/core/to-json-schema.ts +977 -0
  645. package/node_modules/zod/src/v4/core/util.ts +775 -0
  646. package/node_modules/zod/src/v4/core/versions.ts +5 -0
  647. package/node_modules/zod/src/v4/core/zsf.ts +323 -0
  648. package/node_modules/zod/src/v4/index.ts +4 -0
  649. package/node_modules/zod/src/v4/locales/ar.ts +125 -0
  650. package/node_modules/zod/src/v4/locales/az.ts +121 -0
  651. package/node_modules/zod/src/v4/locales/be.ts +184 -0
  652. package/node_modules/zod/src/v4/locales/ca.ts +127 -0
  653. package/node_modules/zod/src/v4/locales/cs.ts +142 -0
  654. package/node_modules/zod/src/v4/locales/de.ts +124 -0
  655. package/node_modules/zod/src/v4/locales/en.ts +127 -0
  656. package/node_modules/zod/src/v4/locales/eo.ts +125 -0
  657. package/node_modules/zod/src/v4/locales/es.ts +125 -0
  658. package/node_modules/zod/src/v4/locales/fa.ts +134 -0
  659. package/node_modules/zod/src/v4/locales/fi.ts +131 -0
  660. package/node_modules/zod/src/v4/locales/fr-CA.ts +126 -0
  661. package/node_modules/zod/src/v4/locales/fr.ts +124 -0
  662. package/node_modules/zod/src/v4/locales/he.ts +125 -0
  663. package/node_modules/zod/src/v4/locales/hu.ts +126 -0
  664. package/node_modules/zod/src/v4/locales/id.ts +125 -0
  665. package/node_modules/zod/src/v4/locales/index.ts +39 -0
  666. package/node_modules/zod/src/v4/locales/it.ts +125 -0
  667. package/node_modules/zod/src/v4/locales/ja.ts +122 -0
  668. package/node_modules/zod/src/v4/locales/kh.ts +126 -0
  669. package/node_modules/zod/src/v4/locales/ko.ts +131 -0
  670. package/node_modules/zod/src/v4/locales/mk.ts +127 -0
  671. package/node_modules/zod/src/v4/locales/ms.ts +124 -0
  672. package/node_modules/zod/src/v4/locales/nl.ts +126 -0
  673. package/node_modules/zod/src/v4/locales/no.ts +124 -0
  674. package/node_modules/zod/src/v4/locales/ota.ts +125 -0
  675. package/node_modules/zod/src/v4/locales/pl.ts +126 -0
  676. package/node_modules/zod/src/v4/locales/ps.ts +133 -0
  677. package/node_modules/zod/src/v4/locales/pt.ts +123 -0
  678. package/node_modules/zod/src/v4/locales/ru.ts +184 -0
  679. package/node_modules/zod/src/v4/locales/sl.ts +126 -0
  680. package/node_modules/zod/src/v4/locales/sv.ts +127 -0
  681. package/node_modules/zod/src/v4/locales/ta.ts +125 -0
  682. package/node_modules/zod/src/v4/locales/th.ts +126 -0
  683. package/node_modules/zod/src/v4/locales/tr.ts +121 -0
  684. package/node_modules/zod/src/v4/locales/ua.ts +126 -0
  685. package/node_modules/zod/src/v4/locales/ur.ts +126 -0
  686. package/node_modules/zod/src/v4/locales/vi.ts +125 -0
  687. package/node_modules/zod/src/v4/locales/zh-CN.ts +123 -0
  688. package/node_modules/zod/src/v4/locales/zh-TW.ts +125 -0
  689. package/node_modules/zod/src/v4/mini/checks.ts +32 -0
  690. package/node_modules/zod/src/v4/mini/coerce.ts +22 -0
  691. package/node_modules/zod/src/v4/mini/external.ts +40 -0
  692. package/node_modules/zod/src/v4/mini/index.ts +3 -0
  693. package/node_modules/zod/src/v4/mini/iso.ts +62 -0
  694. package/node_modules/zod/src/v4/mini/parse.ts +1 -0
  695. package/node_modules/zod/src/v4/mini/schemas.ts +1579 -0
  696. package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
  697. package/node_modules/zod/src/v4/mini/tests/brand.test.ts +51 -0
  698. package/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
  699. package/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
  700. package/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
  701. package/node_modules/zod/src/v4/mini/tests/functions.test.ts +43 -0
  702. package/node_modules/zod/src/v4/mini/tests/index.test.ts +871 -0
  703. package/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
  704. package/node_modules/zod/src/v4/mini/tests/object.test.ts +185 -0
  705. package/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
  706. package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +275 -0
  707. package/node_modules/zod/src/v4/mini/tests/string.test.ts +299 -0
  708. package/node_modules/zod/src/v4-mini/index.ts +1 -0
  709. package/node_modules/zod/v3/ZodError.cjs +138 -0
  710. package/node_modules/zod/v3/ZodError.d.cts +164 -0
  711. package/node_modules/zod/v3/ZodError.d.ts +164 -0
  712. package/node_modules/zod/v3/ZodError.js +133 -0
  713. package/node_modules/zod/v3/errors.cjs +17 -0
  714. package/node_modules/zod/v3/errors.d.cts +5 -0
  715. package/node_modules/zod/v3/errors.d.ts +5 -0
  716. package/node_modules/zod/v3/errors.js +9 -0
  717. package/node_modules/zod/v3/external.cjs +22 -0
  718. package/node_modules/zod/v3/external.d.cts +6 -0
  719. package/node_modules/zod/v3/external.d.ts +6 -0
  720. package/node_modules/zod/v3/external.js +6 -0
  721. package/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
  722. package/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
  723. package/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
  724. package/node_modules/zod/v3/helpers/enumUtil.js +1 -0
  725. package/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
  726. package/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
  727. package/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
  728. package/node_modules/zod/v3/helpers/errorUtil.js +6 -0
  729. package/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
  730. package/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
  731. package/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
  732. package/node_modules/zod/v3/helpers/parseUtil.js +109 -0
  733. package/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
  734. package/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
  735. package/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
  736. package/node_modules/zod/v3/helpers/partialUtil.js +1 -0
  737. package/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
  738. package/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
  739. package/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
  740. package/node_modules/zod/v3/helpers/typeAliases.js +1 -0
  741. package/node_modules/zod/v3/helpers/util.cjs +137 -0
  742. package/node_modules/zod/v3/helpers/util.d.cts +85 -0
  743. package/node_modules/zod/v3/helpers/util.d.ts +85 -0
  744. package/node_modules/zod/v3/helpers/util.js +133 -0
  745. package/node_modules/zod/v3/index.cjs +33 -0
  746. package/node_modules/zod/v3/index.d.cts +4 -0
  747. package/node_modules/zod/v3/index.d.ts +4 -0
  748. package/node_modules/zod/v3/index.js +4 -0
  749. package/node_modules/zod/v3/locales/en.cjs +111 -0
  750. package/node_modules/zod/v3/locales/en.d.cts +3 -0
  751. package/node_modules/zod/v3/locales/en.d.ts +3 -0
  752. package/node_modules/zod/v3/locales/en.js +109 -0
  753. package/node_modules/zod/v3/standard-schema.cjs +2 -0
  754. package/node_modules/zod/v3/standard-schema.d.cts +102 -0
  755. package/node_modules/zod/v3/standard-schema.d.ts +102 -0
  756. package/node_modules/zod/v3/standard-schema.js +1 -0
  757. package/node_modules/zod/v3/types.cjs +3775 -0
  758. package/node_modules/zod/v3/types.d.cts +1031 -0
  759. package/node_modules/zod/v3/types.d.ts +1031 -0
  760. package/node_modules/zod/v3/types.js +3693 -0
  761. package/node_modules/zod/v4/classic/checks.cjs +32 -0
  762. package/node_modules/zod/v4/classic/checks.d.cts +1 -0
  763. package/node_modules/zod/v4/classic/checks.d.ts +1 -0
  764. package/node_modules/zod/v4/classic/checks.js +1 -0
  765. package/node_modules/zod/v4/classic/coerce.cjs +47 -0
  766. package/node_modules/zod/v4/classic/coerce.d.cts +17 -0
  767. package/node_modules/zod/v4/classic/coerce.d.ts +17 -0
  768. package/node_modules/zod/v4/classic/coerce.js +17 -0
  769. package/node_modules/zod/v4/classic/compat.cjs +57 -0
  770. package/node_modules/zod/v4/classic/compat.d.cts +46 -0
  771. package/node_modules/zod/v4/classic/compat.d.ts +46 -0
  772. package/node_modules/zod/v4/classic/compat.js +27 -0
  773. package/node_modules/zod/v4/classic/errors.cjs +67 -0
  774. package/node_modules/zod/v4/classic/errors.d.cts +30 -0
  775. package/node_modules/zod/v4/classic/errors.d.ts +30 -0
  776. package/node_modules/zod/v4/classic/errors.js +41 -0
  777. package/node_modules/zod/v4/classic/external.cjs +70 -0
  778. package/node_modules/zod/v4/classic/external.d.cts +13 -0
  779. package/node_modules/zod/v4/classic/external.d.ts +13 -0
  780. package/node_modules/zod/v4/classic/external.js +18 -0
  781. package/node_modules/zod/v4/classic/index.cjs +33 -0
  782. package/node_modules/zod/v4/classic/index.d.cts +4 -0
  783. package/node_modules/zod/v4/classic/index.d.ts +4 -0
  784. package/node_modules/zod/v4/classic/index.js +4 -0
  785. package/node_modules/zod/v4/classic/iso.cjs +60 -0
  786. package/node_modules/zod/v4/classic/iso.d.cts +22 -0
  787. package/node_modules/zod/v4/classic/iso.d.ts +22 -0
  788. package/node_modules/zod/v4/classic/iso.js +30 -0
  789. package/node_modules/zod/v4/classic/parse.cjs +32 -0
  790. package/node_modules/zod/v4/classic/parse.d.cts +23 -0
  791. package/node_modules/zod/v4/classic/parse.d.ts +23 -0
  792. package/node_modules/zod/v4/classic/parse.js +6 -0
  793. package/node_modules/zod/v4/classic/schemas.cjs +1109 -0
  794. package/node_modules/zod/v4/classic/schemas.d.cts +630 -0
  795. package/node_modules/zod/v4/classic/schemas.d.ts +630 -0
  796. package/node_modules/zod/v4/classic/schemas.js +1006 -0
  797. package/node_modules/zod/v4/core/api.cjs +1039 -0
  798. package/node_modules/zod/v4/core/api.d.cts +284 -0
  799. package/node_modules/zod/v4/core/api.d.ts +284 -0
  800. package/node_modules/zod/v4/core/api.js +906 -0
  801. package/node_modules/zod/v4/core/checks.cjs +591 -0
  802. package/node_modules/zod/v4/core/checks.d.cts +278 -0
  803. package/node_modules/zod/v4/core/checks.d.ts +278 -0
  804. package/node_modules/zod/v4/core/checks.js +565 -0
  805. package/node_modules/zod/v4/core/core.cjs +67 -0
  806. package/node_modules/zod/v4/core/core.d.cts +49 -0
  807. package/node_modules/zod/v4/core/core.d.ts +49 -0
  808. package/node_modules/zod/v4/core/core.js +61 -0
  809. package/node_modules/zod/v4/core/doc.cjs +39 -0
  810. package/node_modules/zod/v4/core/doc.d.cts +14 -0
  811. package/node_modules/zod/v4/core/doc.d.ts +14 -0
  812. package/node_modules/zod/v4/core/doc.js +35 -0
  813. package/node_modules/zod/v4/core/errors.cjs +226 -0
  814. package/node_modules/zod/v4/core/errors.d.cts +208 -0
  815. package/node_modules/zod/v4/core/errors.d.ts +208 -0
  816. package/node_modules/zod/v4/core/errors.js +195 -0
  817. package/node_modules/zod/v4/core/function.cjs +102 -0
  818. package/node_modules/zod/v4/core/function.d.cts +52 -0
  819. package/node_modules/zod/v4/core/function.d.ts +52 -0
  820. package/node_modules/zod/v4/core/function.js +75 -0
  821. package/node_modules/zod/v4/core/index.cjs +44 -0
  822. package/node_modules/zod/v4/core/index.d.cts +15 -0
  823. package/node_modules/zod/v4/core/index.d.ts +15 -0
  824. package/node_modules/zod/v4/core/index.js +15 -0
  825. package/node_modules/zod/v4/core/json-schema.cjs +2 -0
  826. package/node_modules/zod/v4/core/json-schema.d.cts +87 -0
  827. package/node_modules/zod/v4/core/json-schema.d.ts +87 -0
  828. package/node_modules/zod/v4/core/json-schema.js +1 -0
  829. package/node_modules/zod/v4/core/parse.cjs +87 -0
  830. package/node_modules/zod/v4/core/parse.d.cts +25 -0
  831. package/node_modules/zod/v4/core/parse.d.ts +25 -0
  832. package/node_modules/zod/v4/core/parse.js +57 -0
  833. package/node_modules/zod/v4/core/regexes.cjs +103 -0
  834. package/node_modules/zod/v4/core/regexes.d.cts +62 -0
  835. package/node_modules/zod/v4/core/regexes.d.ts +62 -0
  836. package/node_modules/zod/v4/core/regexes.js +95 -0
  837. package/node_modules/zod/v4/core/registries.cjs +56 -0
  838. package/node_modules/zod/v4/core/registries.d.cts +35 -0
  839. package/node_modules/zod/v4/core/registries.d.ts +35 -0
  840. package/node_modules/zod/v4/core/registries.js +51 -0
  841. package/node_modules/zod/v4/core/schemas.cjs +1748 -0
  842. package/node_modules/zod/v4/core/schemas.d.cts +1041 -0
  843. package/node_modules/zod/v4/core/schemas.d.ts +1041 -0
  844. package/node_modules/zod/v4/core/schemas.js +1717 -0
  845. package/node_modules/zod/v4/core/standard-schema.cjs +2 -0
  846. package/node_modules/zod/v4/core/standard-schema.d.cts +55 -0
  847. package/node_modules/zod/v4/core/standard-schema.d.ts +55 -0
  848. package/node_modules/zod/v4/core/standard-schema.js +1 -0
  849. package/node_modules/zod/v4/core/to-json-schema.cjs +854 -0
  850. package/node_modules/zod/v4/core/to-json-schema.d.cts +88 -0
  851. package/node_modules/zod/v4/core/to-json-schema.d.ts +88 -0
  852. package/node_modules/zod/v4/core/to-json-schema.js +849 -0
  853. package/node_modules/zod/v4/core/util.cjs +539 -0
  854. package/node_modules/zod/v4/core/util.d.cts +183 -0
  855. package/node_modules/zod/v4/core/util.d.ts +183 -0
  856. package/node_modules/zod/v4/core/util.js +493 -0
  857. package/node_modules/zod/v4/core/versions.cjs +8 -0
  858. package/node_modules/zod/v4/core/versions.d.cts +5 -0
  859. package/node_modules/zod/v4/core/versions.d.ts +5 -0
  860. package/node_modules/zod/v4/core/versions.js +5 -0
  861. package/node_modules/zod/v4/index.cjs +22 -0
  862. package/node_modules/zod/v4/index.d.cts +3 -0
  863. package/node_modules/zod/v4/index.d.ts +3 -0
  864. package/node_modules/zod/v4/index.js +3 -0
  865. package/node_modules/zod/v4/locales/ar.cjs +142 -0
  866. package/node_modules/zod/v4/locales/ar.d.cts +4 -0
  867. package/node_modules/zod/v4/locales/ar.d.ts +4 -0
  868. package/node_modules/zod/v4/locales/ar.js +116 -0
  869. package/node_modules/zod/v4/locales/az.cjs +141 -0
  870. package/node_modules/zod/v4/locales/az.d.cts +4 -0
  871. package/node_modules/zod/v4/locales/az.d.ts +4 -0
  872. package/node_modules/zod/v4/locales/az.js +115 -0
  873. package/node_modules/zod/v4/locales/be.cjs +190 -0
  874. package/node_modules/zod/v4/locales/be.d.cts +4 -0
  875. package/node_modules/zod/v4/locales/be.d.ts +4 -0
  876. package/node_modules/zod/v4/locales/be.js +164 -0
  877. package/node_modules/zod/v4/locales/ca.cjs +144 -0
  878. package/node_modules/zod/v4/locales/ca.d.cts +4 -0
  879. package/node_modules/zod/v4/locales/ca.d.ts +4 -0
  880. package/node_modules/zod/v4/locales/ca.js +118 -0
  881. package/node_modules/zod/v4/locales/cs.cjs +161 -0
  882. package/node_modules/zod/v4/locales/cs.d.cts +4 -0
  883. package/node_modules/zod/v4/locales/cs.d.ts +4 -0
  884. package/node_modules/zod/v4/locales/cs.js +135 -0
  885. package/node_modules/zod/v4/locales/de.cjs +142 -0
  886. package/node_modules/zod/v4/locales/de.d.cts +4 -0
  887. package/node_modules/zod/v4/locales/de.d.ts +4 -0
  888. package/node_modules/zod/v4/locales/de.js +116 -0
  889. package/node_modules/zod/v4/locales/en.cjs +145 -0
  890. package/node_modules/zod/v4/locales/en.d.cts +5 -0
  891. package/node_modules/zod/v4/locales/en.d.ts +5 -0
  892. package/node_modules/zod/v4/locales/en.js +117 -0
  893. package/node_modules/zod/v4/locales/eo.cjs +144 -0
  894. package/node_modules/zod/v4/locales/eo.d.cts +5 -0
  895. package/node_modules/zod/v4/locales/eo.d.ts +5 -0
  896. package/node_modules/zod/v4/locales/eo.js +116 -0
  897. package/node_modules/zod/v4/locales/es.cjs +143 -0
  898. package/node_modules/zod/v4/locales/es.d.cts +4 -0
  899. package/node_modules/zod/v4/locales/es.d.ts +4 -0
  900. package/node_modules/zod/v4/locales/es.js +117 -0
  901. package/node_modules/zod/v4/locales/fa.cjs +148 -0
  902. package/node_modules/zod/v4/locales/fa.d.cts +4 -0
  903. package/node_modules/zod/v4/locales/fa.d.ts +4 -0
  904. package/node_modules/zod/v4/locales/fa.js +122 -0
  905. package/node_modules/zod/v4/locales/fi.cjs +148 -0
  906. package/node_modules/zod/v4/locales/fi.d.cts +4 -0
  907. package/node_modules/zod/v4/locales/fi.d.ts +4 -0
  908. package/node_modules/zod/v4/locales/fi.js +122 -0
  909. package/node_modules/zod/v4/locales/fr-CA.cjs +143 -0
  910. package/node_modules/zod/v4/locales/fr-CA.d.cts +4 -0
  911. package/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
  912. package/node_modules/zod/v4/locales/fr-CA.js +117 -0
  913. package/node_modules/zod/v4/locales/fr.cjs +142 -0
  914. package/node_modules/zod/v4/locales/fr.d.cts +4 -0
  915. package/node_modules/zod/v4/locales/fr.d.ts +4 -0
  916. package/node_modules/zod/v4/locales/fr.js +116 -0
  917. package/node_modules/zod/v4/locales/he.cjs +143 -0
  918. package/node_modules/zod/v4/locales/he.d.cts +4 -0
  919. package/node_modules/zod/v4/locales/he.d.ts +4 -0
  920. package/node_modules/zod/v4/locales/he.js +117 -0
  921. package/node_modules/zod/v4/locales/hu.cjs +143 -0
  922. package/node_modules/zod/v4/locales/hu.d.cts +4 -0
  923. package/node_modules/zod/v4/locales/hu.d.ts +4 -0
  924. package/node_modules/zod/v4/locales/hu.js +117 -0
  925. package/node_modules/zod/v4/locales/id.cjs +142 -0
  926. package/node_modules/zod/v4/locales/id.d.cts +4 -0
  927. package/node_modules/zod/v4/locales/id.d.ts +4 -0
  928. package/node_modules/zod/v4/locales/id.js +116 -0
  929. package/node_modules/zod/v4/locales/index.cjs +84 -0
  930. package/node_modules/zod/v4/locales/index.d.cts +39 -0
  931. package/node_modules/zod/v4/locales/index.d.ts +39 -0
  932. package/node_modules/zod/v4/locales/index.js +39 -0
  933. package/node_modules/zod/v4/locales/it.cjs +143 -0
  934. package/node_modules/zod/v4/locales/it.d.cts +4 -0
  935. package/node_modules/zod/v4/locales/it.d.ts +4 -0
  936. package/node_modules/zod/v4/locales/it.js +117 -0
  937. package/node_modules/zod/v4/locales/ja.cjs +141 -0
  938. package/node_modules/zod/v4/locales/ja.d.cts +4 -0
  939. package/node_modules/zod/v4/locales/ja.d.ts +4 -0
  940. package/node_modules/zod/v4/locales/ja.js +115 -0
  941. package/node_modules/zod/v4/locales/kh.cjs +143 -0
  942. package/node_modules/zod/v4/locales/kh.d.cts +4 -0
  943. package/node_modules/zod/v4/locales/kh.d.ts +4 -0
  944. package/node_modules/zod/v4/locales/kh.js +117 -0
  945. package/node_modules/zod/v4/locales/ko.cjs +147 -0
  946. package/node_modules/zod/v4/locales/ko.d.cts +4 -0
  947. package/node_modules/zod/v4/locales/ko.d.ts +4 -0
  948. package/node_modules/zod/v4/locales/ko.js +121 -0
  949. package/node_modules/zod/v4/locales/mk.cjs +144 -0
  950. package/node_modules/zod/v4/locales/mk.d.cts +4 -0
  951. package/node_modules/zod/v4/locales/mk.d.ts +4 -0
  952. package/node_modules/zod/v4/locales/mk.js +118 -0
  953. package/node_modules/zod/v4/locales/ms.cjs +142 -0
  954. package/node_modules/zod/v4/locales/ms.d.cts +4 -0
  955. package/node_modules/zod/v4/locales/ms.d.ts +4 -0
  956. package/node_modules/zod/v4/locales/ms.js +116 -0
  957. package/node_modules/zod/v4/locales/nl.cjs +143 -0
  958. package/node_modules/zod/v4/locales/nl.d.cts +4 -0
  959. package/node_modules/zod/v4/locales/nl.d.ts +4 -0
  960. package/node_modules/zod/v4/locales/nl.js +117 -0
  961. package/node_modules/zod/v4/locales/no.cjs +142 -0
  962. package/node_modules/zod/v4/locales/no.d.cts +4 -0
  963. package/node_modules/zod/v4/locales/no.d.ts +4 -0
  964. package/node_modules/zod/v4/locales/no.js +116 -0
  965. package/node_modules/zod/v4/locales/ota.cjs +143 -0
  966. package/node_modules/zod/v4/locales/ota.d.cts +4 -0
  967. package/node_modules/zod/v4/locales/ota.d.ts +4 -0
  968. package/node_modules/zod/v4/locales/ota.js +117 -0
  969. package/node_modules/zod/v4/locales/pl.cjs +143 -0
  970. package/node_modules/zod/v4/locales/pl.d.cts +4 -0
  971. package/node_modules/zod/v4/locales/pl.d.ts +4 -0
  972. package/node_modules/zod/v4/locales/pl.js +117 -0
  973. package/node_modules/zod/v4/locales/ps.cjs +148 -0
  974. package/node_modules/zod/v4/locales/ps.d.cts +4 -0
  975. package/node_modules/zod/v4/locales/ps.d.ts +4 -0
  976. package/node_modules/zod/v4/locales/ps.js +122 -0
  977. package/node_modules/zod/v4/locales/pt.cjs +142 -0
  978. package/node_modules/zod/v4/locales/pt.d.cts +4 -0
  979. package/node_modules/zod/v4/locales/pt.d.ts +4 -0
  980. package/node_modules/zod/v4/locales/pt.js +116 -0
  981. package/node_modules/zod/v4/locales/ru.cjs +190 -0
  982. package/node_modules/zod/v4/locales/ru.d.cts +4 -0
  983. package/node_modules/zod/v4/locales/ru.d.ts +4 -0
  984. package/node_modules/zod/v4/locales/ru.js +164 -0
  985. package/node_modules/zod/v4/locales/sl.cjs +143 -0
  986. package/node_modules/zod/v4/locales/sl.d.cts +4 -0
  987. package/node_modules/zod/v4/locales/sl.d.ts +4 -0
  988. package/node_modules/zod/v4/locales/sl.js +117 -0
  989. package/node_modules/zod/v4/locales/sv.cjs +144 -0
  990. package/node_modules/zod/v4/locales/sv.d.cts +4 -0
  991. package/node_modules/zod/v4/locales/sv.d.ts +4 -0
  992. package/node_modules/zod/v4/locales/sv.js +118 -0
  993. package/node_modules/zod/v4/locales/ta.cjs +143 -0
  994. package/node_modules/zod/v4/locales/ta.d.cts +4 -0
  995. package/node_modules/zod/v4/locales/ta.d.ts +4 -0
  996. package/node_modules/zod/v4/locales/ta.js +117 -0
  997. package/node_modules/zod/v4/locales/th.cjs +143 -0
  998. package/node_modules/zod/v4/locales/th.d.cts +4 -0
  999. package/node_modules/zod/v4/locales/th.d.ts +4 -0
  1000. package/node_modules/zod/v4/locales/th.js +117 -0
  1001. package/node_modules/zod/v4/locales/tr.cjs +143 -0
  1002. package/node_modules/zod/v4/locales/tr.d.cts +5 -0
  1003. package/node_modules/zod/v4/locales/tr.d.ts +5 -0
  1004. package/node_modules/zod/v4/locales/tr.js +115 -0
  1005. package/node_modules/zod/v4/locales/ua.cjs +143 -0
  1006. package/node_modules/zod/v4/locales/ua.d.cts +4 -0
  1007. package/node_modules/zod/v4/locales/ua.d.ts +4 -0
  1008. package/node_modules/zod/v4/locales/ua.js +117 -0
  1009. package/node_modules/zod/v4/locales/ur.cjs +143 -0
  1010. package/node_modules/zod/v4/locales/ur.d.cts +4 -0
  1011. package/node_modules/zod/v4/locales/ur.d.ts +4 -0
  1012. package/node_modules/zod/v4/locales/ur.js +117 -0
  1013. package/node_modules/zod/v4/locales/vi.cjs +142 -0
  1014. package/node_modules/zod/v4/locales/vi.d.cts +4 -0
  1015. package/node_modules/zod/v4/locales/vi.d.ts +4 -0
  1016. package/node_modules/zod/v4/locales/vi.js +116 -0
  1017. package/node_modules/zod/v4/locales/zh-CN.cjs +142 -0
  1018. package/node_modules/zod/v4/locales/zh-CN.d.cts +4 -0
  1019. package/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
  1020. package/node_modules/zod/v4/locales/zh-CN.js +116 -0
  1021. package/node_modules/zod/v4/locales/zh-TW.cjs +143 -0
  1022. package/node_modules/zod/v4/locales/zh-TW.d.cts +4 -0
  1023. package/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
  1024. package/node_modules/zod/v4/locales/zh-TW.js +117 -0
  1025. package/node_modules/zod/v4/mini/checks.cjs +34 -0
  1026. package/node_modules/zod/v4/mini/checks.d.cts +1 -0
  1027. package/node_modules/zod/v4/mini/checks.d.ts +1 -0
  1028. package/node_modules/zod/v4/mini/checks.js +1 -0
  1029. package/node_modules/zod/v4/mini/coerce.cjs +47 -0
  1030. package/node_modules/zod/v4/mini/coerce.d.cts +7 -0
  1031. package/node_modules/zod/v4/mini/coerce.d.ts +7 -0
  1032. package/node_modules/zod/v4/mini/coerce.js +17 -0
  1033. package/node_modules/zod/v4/mini/external.cjs +62 -0
  1034. package/node_modules/zod/v4/mini/external.d.cts +11 -0
  1035. package/node_modules/zod/v4/mini/external.d.ts +11 -0
  1036. package/node_modules/zod/v4/mini/external.js +13 -0
  1037. package/node_modules/zod/v4/mini/index.cjs +32 -0
  1038. package/node_modules/zod/v4/mini/index.d.cts +3 -0
  1039. package/node_modules/zod/v4/mini/index.d.ts +3 -0
  1040. package/node_modules/zod/v4/mini/index.js +3 -0
  1041. package/node_modules/zod/v4/mini/iso.cjs +60 -0
  1042. package/node_modules/zod/v4/mini/iso.d.cts +22 -0
  1043. package/node_modules/zod/v4/mini/iso.d.ts +22 -0
  1044. package/node_modules/zod/v4/mini/iso.js +30 -0
  1045. package/node_modules/zod/v4/mini/parse.cjs +8 -0
  1046. package/node_modules/zod/v4/mini/parse.d.cts +1 -0
  1047. package/node_modules/zod/v4/mini/parse.d.ts +1 -0
  1048. package/node_modules/zod/v4/mini/parse.js +1 -0
  1049. package/node_modules/zod/v4/mini/schemas.cjs +839 -0
  1050. package/node_modules/zod/v4/mini/schemas.d.cts +356 -0
  1051. package/node_modules/zod/v4/mini/schemas.d.ts +356 -0
  1052. package/node_modules/zod/v4/mini/schemas.js +732 -0
  1053. package/node_modules/zod/v4-mini/index.cjs +17 -0
  1054. package/node_modules/zod/v4-mini/index.d.cts +1 -0
  1055. package/node_modules/zod/v4-mini/index.d.ts +1 -0
  1056. package/node_modules/zod/v4-mini/index.js +1 -0
  1057. package/package.json +97 -0
@@ -0,0 +1,186 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { join } from 'node:path';
3
+ import { createMcpExtension } from '@earendil-works/pi-coding-agent';
4
+ import { canonicalJson, digest, GuardError } from '../contracts.js';
5
+ import { externalInvocations } from './external.js';
6
+ export function guardedExternalExtension(input, controller) {
7
+ const factory = typeof input.extension === 'function' ? input.extension : input.extension.factory;
8
+ const guarded = api => factory(new Proxy(api, { get(target, key, receiver) {
9
+ if (key === 'registerTool')
10
+ return (definition) => target.registerTool(controller().wrapExternalTool(definition, () => input.identifyTool(definition)));
11
+ return Reflect.get(target, key, receiver);
12
+ } }));
13
+ return typeof input.extension === 'function' ? guarded : { ...input.extension, factory: guarded };
14
+ }
15
+ function record(value) { return value && typeof value === 'object' && !Array.isArray(value) ? value : {}; }
16
+ function optionalText(value) { return typeof value === 'string' && value.length ? value : undefined; }
17
+ function guardedTransport(base, server, registration, catalog, policies) {
18
+ const pending = new Map();
19
+ const active = new Map();
20
+ let generation = 0;
21
+ const captureTools = (tools) => {
22
+ if (!Array.isArray(tools))
23
+ throw new GuardError('INVALID_MCP_CATALOG', 'MCP tools/list did not return tools');
24
+ for (const raw of tools) {
25
+ const tool = record(raw), meta = record(tool._meta);
26
+ if (typeof tool.name !== 'string' || !tool.name)
27
+ throw new GuardError('INVALID_MCP_CATALOG', 'MCP tool has no identity');
28
+ const override = policies[`${server}/${tool.name}`];
29
+ const identity = {
30
+ kind: 'mcp',
31
+ server, tool: tool.name, registration: `${registration}:${generation}:${digest(JSON.parse(JSON.stringify(tool)))}`,
32
+ ...(optionalText(meta.connector_id) ? { connectorId: meta.connector_id } : {}),
33
+ ...(optionalText(meta.account) ? { account: meta.account } : {}),
34
+ ...(override?.approvalMode ? { approvalMode: override.approvalMode } : {}),
35
+ annotations: record(tool.annotations),
36
+ requiresUserInput: meta.codex_requires_user_input === true,
37
+ isSensitiveAction: meta.codex_sensitive_action === true,
38
+ requiresStrictReview: meta.codex_strict_auto_review === true,
39
+ };
40
+ catalog.set(`${server}\0${tool.name}`, { identity, label: `${server}/${tool.name}`, namespace: `mcp__${server}` });
41
+ }
42
+ };
43
+ const elicit = async (message) => {
44
+ const params = record(message.params), meta = record(params._meta);
45
+ const callId = optionalText(meta.callId), invocation = callId ? active.get(callId) : undefined;
46
+ let isAllowed = false;
47
+ // Arbitrary forms and URL authentication need an actual human-input UI. Never infer their fields.
48
+ const schema = record(params.requestedSchema);
49
+ const isApprovalForm = params.mode !== 'url' && schema.type === 'object' && Object.keys(record(schema.properties)).length === 0 && (!Array.isArray(schema.required) || schema.required.length === 0);
50
+ if (invocation && !invocation.signal.aborted && isApprovalForm && meta.codex_approval_kind === 'mcp_tool_call' && typeof meta.tool_name === 'string' && meta.tool_params && typeof meta.tool_params === 'object' && !Array.isArray(meta.tool_params)) {
51
+ const isMatchingOuter = meta.tool_name === invocation.identity.tool && (meta.connector_id ?? undefined) === invocation.identity.connectorId;
52
+ if (isMatchingOuter) {
53
+ const nested = {
54
+ ...invocation.identity, tool: meta.tool_name,
55
+ ...(typeof meta.connector_id === 'string' ? { connectorId: meta.connector_id } : {}),
56
+ requiresUserInput: meta.codex_requires_user_input === true,
57
+ isSensitiveAction: meta.codex_sensitive_action === true,
58
+ requiresStrictReview: invocation.identity.requiresStrictReview === true || meta.codex_strict_auto_review === true,
59
+ };
60
+ try {
61
+ await invocation.checkCurrent();
62
+ isAllowed = await invocation.approveNested(nested, JSON.parse(canonicalJson(invocation.arguments)));
63
+ await invocation.checkCurrent();
64
+ isAllowed &&= active.get(callId) === invocation && !invocation.signal.aborted;
65
+ }
66
+ catch {
67
+ isAllowed = false;
68
+ }
69
+ }
70
+ }
71
+ await base.send({ jsonrpc: '2.0', id: message.id, result: { action: isAllowed ? 'accept' : 'decline', ...(isAllowed ? { content: {} } : {}) } });
72
+ };
73
+ return new Proxy(base, { get(target, key) {
74
+ if (key === 'send')
75
+ return async (message) => {
76
+ const raw = message;
77
+ if (raw.method && raw.id !== undefined) {
78
+ const invocation = externalInvocations.getStore();
79
+ if (raw.method === 'tools/call') {
80
+ if (!invocation || invocation.identity.server !== server || invocation.identity.tool !== raw.params?.name)
81
+ throw new GuardError('UNBOUND_MCP_CALL', 'MCP execution has no matching reviewed invocation');
82
+ await invocation.checkCurrent();
83
+ // Caller IDs can repeat; nested approvals must identify this exact in-flight invocation.
84
+ const callId = randomUUID();
85
+ active.set(callId, invocation);
86
+ pending.set(raw.id, { method: raw.method, callId });
87
+ return target.send({ ...raw, params: { ...raw.params, _meta: { ...record(raw.params?._meta), callId } } });
88
+ }
89
+ pending.set(raw.id, { method: raw.method });
90
+ if (raw.method === 'tools/list' && !raw.params?.cursor) {
91
+ generation++;
92
+ for (const [name, item] of catalog)
93
+ if (item.identity.server === server)
94
+ catalog.delete(name);
95
+ }
96
+ if (raw.method === 'initialize')
97
+ return target.send({ ...raw, params: { ...raw.params, capabilities: { ...record(raw.params?.capabilities), elicitation: { form: {} } } } });
98
+ }
99
+ return target.send(message);
100
+ };
101
+ if (key === 'onMessage')
102
+ return (listener) => target.onMessage(message => {
103
+ const raw = message;
104
+ if (raw.method === 'elicitation/create' && raw.id !== undefined) {
105
+ void elicit(raw).catch(() => { });
106
+ return;
107
+ }
108
+ const request = !raw.method && raw.id !== undefined ? pending.get(raw.id) : undefined;
109
+ if (request) {
110
+ pending.delete(raw.id);
111
+ if (request.callId)
112
+ active.delete(request.callId);
113
+ if (request.method === 'tools/list' && raw.result) {
114
+ try {
115
+ captureTools(raw.result.tools);
116
+ }
117
+ catch {
118
+ listener({ jsonrpc: '2.0', id: raw.id, error: { code: -32603, message: 'Invalid MCP tool catalog' } });
119
+ return;
120
+ }
121
+ }
122
+ }
123
+ listener(message);
124
+ });
125
+ if (key === 'close')
126
+ return async () => { active.clear(); pending.clear(); await target.close(); };
127
+ const value = Reflect.get(target, key, target);
128
+ return typeof value === 'function' ? value.bind(target) : value;
129
+ } });
130
+ }
131
+ /**
132
+ * Pi 0.99.1 exports the extension API but not its default transport/config helpers.
133
+ * This small, version-qualified seam preserves the SDK's transport, config and OAuth implementation.
134
+ */
135
+ export async function createGuardedMcpExtension(agentDir, controller, options = {}, policies = {}) {
136
+ const sdk = new URL('./', import.meta.resolve('@earendil-works/pi-coding-agent'));
137
+ const [runtime, config, auth] = await Promise.all([
138
+ import(new URL('extensions/mcp/runtime.js', sdk).href),
139
+ import(new URL('extensions/mcp/config.js', sdk).href),
140
+ import(new URL('core/auth-storage.js', sdk).href),
141
+ ]);
142
+ const catalog = new Map(), registrations = new Map();
143
+ const transportFactory = (entry, cwd, provider) => {
144
+ const registration = digest({ name: entry.name, source: entry.source, config: JSON.parse(JSON.stringify(entry.config)), connection: randomUUID() });
145
+ registrations.set(entry.name, registration);
146
+ return guardedTransport((options.createTransport ?? runtime.createDefaultTransport)(entry, cwd, provider), entry.name, registration, catalog, policies);
147
+ };
148
+ const mcpFactory = createMcpExtension({
149
+ ...options, createTransport: transportFactory,
150
+ loadConfig: options.loadConfig ?? (context => config.loadMcpConfig({ agentDir, cwd: context.cwd, projectTrusted: context.isProjectTrusted() })),
151
+ credentials: options.credentials ?? new runtime.McpOAuthCredentialStore(new auth.FileAuthStorageBackend(join(agentDir, 'mcp-auth.json')), agentDir),
152
+ logPath: options.logPath ?? join(agentDir, 'mcp.log'),
153
+ });
154
+ const factory = api => {
155
+ let hasStarted = false;
156
+ let shutdown;
157
+ return mcpFactory(new Proxy(api, { get(target, key, receiver) {
158
+ if (key === 'on')
159
+ return (event, handler) => {
160
+ if (event === 'session_shutdown') {
161
+ shutdown = handler;
162
+ return target.on('session_shutdown', async (...args) => { hasStarted = false; await handler(...args); });
163
+ }
164
+ if (event === 'session_start')
165
+ return target.on('session_start', async (event, context) => {
166
+ // Pi rebinds modes with another session_start, without a preceding shutdown.
167
+ if (hasStarted)
168
+ await shutdown?.({ type: 'session_shutdown' }, context);
169
+ hasStarted = true;
170
+ await handler(event, context);
171
+ });
172
+ return Reflect.apply(target.on, target, [event, handler]);
173
+ };
174
+ return Reflect.get(target, key, receiver);
175
+ } }));
176
+ };
177
+ return guardedExternalExtension({ extension: { name: 'guarded-mcp', factory }, identifyTool: definition => {
178
+ const entry = [...catalog.values()].find(item => item.label === definition.label && item.namespace === definition.namespace?.name);
179
+ if (entry)
180
+ return entry.identity;
181
+ if (['list_mcp_resources', 'list_mcp_resource_templates', 'read_mcp_resource'].includes(definition.name))
182
+ return { kind: 'mcp', server: 'mcp-resources', tool: definition.name, registration: digest([...registrations]), annotations: { readOnlyHint: true } };
183
+ throw new GuardError('UNBOUND_MCP_TOOL', 'Tool does not belong to the registered MCP catalog');
184
+ } }, controller);
185
+ }
186
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/tools/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAwH,MAAM,iCAAiC,CAAC;AAC3L,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAa,MAAM,iBAAiB,CAAC;AAE/E,OAAO,EAAE,mBAAmB,EAAsD,MAAM,eAAe,CAAC;AAUxG,MAAM,UAAU,wBAAwB,CAAC,KAAwB,EAAE,UAAiC;IAClG,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC;IAClG,MAAM,OAAO,GAAqB,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,EAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ;YACxF,IAAI,GAAG,KAAK,cAAc;gBAAE,OAAO,CAAC,UAAgB,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,gBAAgB,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC9J,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC5C,CAAC,EAAC,CAAC,CAAC,CAAC;IACL,OAAO,OAAO,KAAK,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAC,GAAG,KAAK,CAAC,SAAS,EAAE,OAAO,EAAC,OAAO,EAAC,CAAC;AACjG,CAAC;AAID,SAAS,MAAM,CAAC,KAAc,IAAyB,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAA4B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAChK,SAAS,YAAY,CAAC,KAAc,IAAwB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAEnI,SAAS,gBAAgB,CAAC,IAAe,EAAE,MAAc,EAAE,YAAoB,EAAE,OAAkC,EAAE,QAAyB;IAC5I,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsD,CAAC;IAC9E,MAAM,MAAM,GAAG,IAAI,GAAG,EAA8B,CAAC;IACrD,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,YAAY,GAAG,CAAC,KAAc,EAAE,EAAE;QACtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,qBAAqB,EAAE,qCAAqC,CAAC,CAAC;QAC9G,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,UAAU,CAAC,qBAAqB,EAAE,0BAA0B,CAAC,CAAC;YACzH,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAyB;gBACrC,IAAI,EAAC,KAAK;gBACV,MAAM,EAAE,IAAI,EAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAC,GAAG,YAAY,IAAI,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;gBAChH,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAC,WAAW,EAAC,IAAI,CAAC,YAAY,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3E,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAC,OAAO,EAAC,IAAI,CAAC,OAAO,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,EAAC,YAAY,EAAC,QAAQ,CAAC,YAAY,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,WAAW,EAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBACpC,iBAAiB,EAAC,IAAI,CAAC,yBAAyB,KAAK,IAAI;gBACzD,iBAAiB,EAAC,IAAI,CAAC,sBAAsB,KAAK,IAAI;gBACtD,oBAAoB,EAAC,IAAI,CAAC,wBAAwB,KAAK,IAAI;aAC5D,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAC,GAAG,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAC,QAAQ,MAAM,EAAE,EAAC,CAAC,CAAC;QACjH,CAAC;IACH,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,KAAK,EAAE,OAAY,EAAE,EAAE;QACpC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/F,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,kGAAkG;QAClG,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC9C,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;QACrM,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,cAAc,IAAI,IAAI,CAAC,mBAAmB,KAAK,eAAe,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACrP,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,SAAS,CAAC,KAAK,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC5I,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM,MAAM,GAAyB;oBACnC,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAC,IAAI,CAAC,SAAS;oBAC3C,GAAG,CAAC,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAC,WAAW,EAAC,IAAI,CAAC,YAAY,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjF,iBAAiB,EAAC,IAAI,CAAC,yBAAyB,KAAK,IAAI;oBACzD,iBAAiB,EAAC,IAAI,CAAC,sBAAsB,KAAK,IAAI;oBACtD,oBAAoB,EAAC,UAAU,CAAC,QAAQ,CAAC,oBAAoB,KAAK,IAAI,IAAI,IAAI,CAAC,wBAAwB,KAAK,IAAI;iBACjH,CAAC;gBACF,IAAI,CAAC;oBACH,MAAM,UAAU,CAAC,YAAY,EAAE,CAAC;oBAChC,SAAS,GAAG,MAAM,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBACpG,MAAM,UAAU,CAAC,YAAY,EAAE,CAAC;oBAChC,SAAS,KAAK,MAAM,CAAC,GAAG,CAAC,MAAO,CAAC,KAAK,UAAU,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;gBACjF,CAAC;gBAAC,MAAM,CAAC;oBAAC,SAAS,GAAG,KAAK,CAAC;gBAAC,CAAC;YAChC,CAAC;QACH,CAAC;QACD,MAAM,IAAI,CAAC,IAAI,CAAC,EAAC,OAAO,EAAC,KAAK,EAAC,EAAE,EAAC,OAAO,CAAC,EAAE,EAAC,MAAM,EAAC,EAAC,MAAM,EAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,OAAO,EAAC,EAAE,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAC,EAAC,CAAC,CAAC;IACtI,CAAC,CAAC;IACF,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,EAAC,GAAG,CAAC,MAAM,EAAE,GAAG;YACrC,IAAI,GAAG,KAAK,MAAM;gBAAE,OAAO,KAAK,EAAE,OAAgB,EAAE,EAAE;oBACpD,MAAM,GAAG,GAAG,OAAc,CAAC;oBAC3B,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;wBACvC,MAAM,UAAU,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAC;wBAClD,IAAI,GAAG,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;4BAChC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,GAAG,CAAC,MAAM,EAAE,IAAI;gCAAE,MAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE,mDAAmD,CAAC,CAAC;4BACzM,MAAM,UAAU,CAAC,YAAY,EAAE,CAAC;4BAChC,yFAAyF;4BACzF,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;4BAC5B,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;4BAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,EAAC,MAAM,EAAC,GAAG,CAAC,MAAM,EAAC,MAAM,EAAC,CAAC,CAAC;4BAChD,OAAO,MAAM,CAAC,IAAI,CAAC,EAAC,GAAG,GAAG,EAAC,MAAM,EAAC,EAAC,GAAG,GAAG,CAAC,MAAM,EAAC,KAAK,EAAC,EAAC,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,EAAC,MAAM,EAAC,EAAC,EAAC,CAAC,CAAC;wBAClG,CAAC;wBACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAC,EAAC,MAAM,EAAC,GAAG,CAAC,MAAM,EAAC,CAAC,CAAC;wBACxC,IAAI,GAAG,CAAC,MAAM,KAAK,YAAY,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;4BACvD,UAAU,EAAE,CAAC;4BACb,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,OAAO;gCAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM;oCAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wBAChG,CAAC;wBACD,IAAI,GAAG,CAAC,MAAM,KAAK,YAAY;4BAAE,OAAO,MAAM,CAAC,IAAI,CAAC,EAAC,GAAG,GAAG,EAAC,MAAM,EAAC,EAAC,GAAG,GAAG,CAAC,MAAM,EAAC,YAAY,EAAC,EAAC,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,EAAC,WAAW,EAAC,EAAC,IAAI,EAAC,EAAE,EAAC,EAAC,EAAC,EAAC,CAAC,CAAC;oBAChK,CAAC;oBACD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC9B,CAAC,CAAC;YACF,IAAI,GAAG,KAAK,WAAW;gBAAE,OAAO,CAAC,QAA+C,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;oBAC9G,MAAM,GAAG,GAAG,OAAc,CAAC;oBAC3B,IAAI,GAAG,CAAC,MAAM,KAAK,oBAAoB,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;wBAChE,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;wBAAC,OAAO;oBAC3C,CAAC;oBACD,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBACtF,IAAI,OAAO,EAAE,CAAC;wBACZ,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBACvB,IAAI,OAAO,CAAC,MAAM;4BAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;wBAClD,IAAI,OAAO,CAAC,MAAM,KAAK,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;4BAClD,IAAI,CAAC;gCAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;4BAAC,CAAC;4BAAC,MAAM,CAAC;gCAAC,QAAQ,CAAC,EAAC,OAAO,EAAC,KAAK,EAAC,EAAE,EAAC,GAAG,CAAC,EAAE,EAAC,KAAK,EAAC,EAAC,IAAI,EAAC,CAAC,KAAK,EAAC,OAAO,EAAC,0BAA0B,EAAC,EAAC,CAAC,CAAC;gCAAC,OAAO;4BAAC,CAAC;wBACvJ,CAAC;oBACH,CAAC;oBACD,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACpB,CAAC,CAAC,CAAC;YACH,IAAI,GAAG,KAAK,OAAO;gBAAE,OAAO,KAAK,IAAI,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YACnG,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAC,GAAG,EAAC,MAAM,CAAC,CAAC;YAC7C,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAClE,CAAC,EAAC,CAAC,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,QAAgB,EAAE,UAAiC,EAAE,UAA+B,EAAE,EAAE,WAA4B,EAAE;IACpK,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAClF,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAChD,MAAM,CAAC,IAAI,GAAG,CAAC,2BAA2B,EAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACrD,MAAM,CAAC,IAAI,GAAG,CAAC,0BAA0B,EAAC,GAAG,CAAC,CAAC,IAAI,CAAC;QACpD,MAAM,CAAC,IAAI,GAAG,CAAC,sBAAsB,EAAC,GAAG,CAAC,CAAC,IAAI,CAAC;KACjD,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,EAAE,aAAa,GAAG,IAAI,GAAG,EAAiB,CAAC;IAC1F,MAAM,gBAAgB,GAAwB,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;QACrE,MAAM,YAAY,GAAG,MAAM,CAAC,EAAC,IAAI,EAAC,KAAK,CAAC,IAAI,EAAC,MAAM,EAAC,KAAK,CAAC,MAAM,EAAC,MAAM,EAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAC,UAAU,EAAC,UAAU,EAAE,EAAC,CAAC,CAAC;QAC3I,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAC,YAAY,CAAC,CAAC;QAC3C,OAAO,gBAAgB,CAAC,CAAC,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAC,GAAG,EAAC,QAAQ,CAAC,EAAC,KAAK,CAAC,IAAI,EAAC,YAAY,EAAC,OAAO,EAAC,QAAQ,CAAC,CAAC;IACpJ,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,kBAAkB,CAAC;QACpC,GAAG,OAAO,EAAE,eAAe,EAAC,gBAAgB;QAC5C,UAAU,EAAC,OAAO,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,EAAC,QAAQ,EAAC,GAAG,EAAC,OAAO,CAAC,GAAG,EAAC,cAAc,EAAC,OAAO,CAAC,gBAAgB,EAAE,EAAC,CAAC,CAAC;QACxI,WAAW,EAAC,OAAO,CAAC,WAAW,IAAI,IAAI,OAAO,CAAC,uBAAuB,CAAC,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAC,eAAe,CAAC,CAAC,EAAC,QAAQ,CAAC;QAChJ,OAAO,EAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAC,SAAS,CAAC;KACpD,CAAC,CAAC;IACH,MAAM,OAAO,GAAqB,GAAG,CAAC,EAAE;QACtC,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,QAAmD,CAAC;QACxD,OAAO,UAAU,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,EAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ;gBACzD,IAAI,GAAG,KAAK,IAAI;oBAAE,OAAO,CAAC,KAAa,EAAE,OAAoC,EAAE,EAAE;wBAC/E,IAAI,KAAK,KAAK,kBAAkB,EAAE,CAAC;4BACjC,QAAQ,GAAG,OAAO,CAAC;4BACnB,OAAO,MAAM,CAAC,EAAE,CAAC,kBAAkB,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC3G,CAAC;wBACD,IAAI,KAAK,KAAK,eAAe;4BAAE,OAAO,MAAM,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;gCACxF,6EAA6E;gCAC7E,IAAI,UAAU;oCAAE,MAAM,QAAQ,EAAE,CAAC,EAAC,IAAI,EAAC,kBAAkB,EAAC,EAAE,OAAO,CAAC,CAAC;gCACrE,UAAU,GAAG,IAAI,CAAC;gCAClB,MAAM,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;4BAChC,CAAC,CAAC,CAAC;wBACH,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC5D,CAAC,CAAC;gBACF,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC5C,CAAC,EAAC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IACF,OAAO,wBAAwB,CAAC,EAAC,SAAS,EAAC,EAAC,IAAI,EAAC,aAAa,EAAC,OAAO,EAAC,EAAC,YAAY,EAAC,UAAU,CAAC,EAAE;YAChG,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACnI,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC,QAAQ,CAAC;YACjC,IAAI,CAAC,oBAAoB,EAAC,6BAA6B,EAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;gBAAE,OAAO,EAAC,IAAI,EAAC,KAAK,EAAC,MAAM,EAAC,eAAe,EAAC,IAAI,EAAC,UAAU,CAAC,IAAI,EAAC,YAAY,EAAC,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,EAAC,WAAW,EAAC,EAAC,YAAY,EAAC,IAAI,EAAC,EAAC,CAAC;YAChP,MAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE,oDAAoD,CAAC,CAAC;QACjG,CAAC,EAAC,EAAC,UAAU,CAAC,CAAC;AACjB,CAAC"}
@@ -0,0 +1,73 @@
1
+ # npm 배포 안내
2
+
3
+ macOS ARM64와 Linux x64에서 `pi install npm:pi-codex-auto-review`로 설치할 수 있는 압축 패키지를 준비하고 npm에 게시한다. 계정 로그인과 실제 게시는 배포자가 수행한다.
4
+
5
+ ## 배포 파일 준비
6
+
7
+ ### GitHub Actions에서 준비
8
+
9
+ 배포할 버전과 소스를 저장소에 반영한 뒤 GitHub Actions의 **npm 배포 패키지 준비** 워크플로를 해당 브랜치에서 실행한다.
10
+
11
+ 1. `macos-14`와 `ubuntu-22.04`에서 Rust 1.95.0으로 규칙 엔진을 각각 빌드한다.
12
+ 2. 같은 소스에서 만든 실행 파일과 소스·실행 파일 해시를 취합한다.
13
+ 3. 잠금 파일로 의존성을 설치하고 TypeScript를 컴파일한다.
14
+ 4. 두 플랫폼의 실행 파일 형식·CPU·해시, 설치된 `node-forge`의 보정 버전·소스 고정, 의존성 묶음과 필수 배포 파일을 확인한다.
15
+ 5. 성공하면 `npm-package` 결과물에 `pi-codex-auto-review-<버전>.tgz`를 저장한다.
16
+
17
+ 이 워크플로는 npm 인증이나 게시를 수행하지 않는다. Linux 실행 파일은 Ubuntu 22.04의 GNU 환경에서 빌드한다. Alpine 등 musl 환경과 macOS x64·Linux ARM64는 이 배포의 지원 대상에 포함하지 않는다. 격리·승인 동작의 플랫폼 전체 검증은 기존 운영체제 검증 절차로 별도 확인한다.
18
+
19
+ ### 로컬에서 준비
20
+
21
+ Node.js 22.19 이상과 Rust 1.95 이상이 있는 macOS ARM64 및 Linux x64 환경에서 **동일한 소스**를 사용한다. 각각 저장소 루트에서 실행한다.
22
+
23
+ ```sh
24
+ npm ci --ignore-scripts
25
+ npm run build
26
+ ```
27
+
28
+ `dist/native/darwin-arm64/`와 `dist/native/linux-x64/`가 생성된다. 각 디렉터리에는 실행 파일과 `artifact.json`이 있어야 한다. 두 디렉터리를 패키지를 만들 저장소의 `dist/native/` 아래에 취합한 뒤 그 저장소 루트에서 실행한다.
29
+
30
+ ```sh
31
+ npm pack
32
+ ```
33
+
34
+ `prepack`은 TypeScript를 다시 컴파일하고 게시 전 검사를 실행한다. 성공하면 현재 `package.json` 버전의 `.tgz`가 생성된다. 실행 파일 하나가 없거나 다른 소스에서 빌드됐다면 중단하며, 문제를 해결하고 같은 명령을 다시 실행할 수 있다. 정상 배포에서는 `--ignore-scripts`로 이 검사를 생략하지 않는다.
35
+
36
+ ## npm 계정과 게시
37
+
38
+ 현재 이름은 `pi-codex-auto-review`, 초기 버전은 `0.1.0`이다. 아래 이름 확인은 저장소 루트 또는 압축 파일을 내려받은 디렉터리에서 수행한다.
39
+
40
+ ```sh
41
+ npm view pi-codex-auto-review version --registry=https://registry.npmjs.org/
42
+ ```
43
+
44
+ 패키지가 조회되면 해당 이름에 대한 게시 권한이 있어야 한다. `E404`는 조회되는 패키지가 없다는 뜻이며 최종 등록 가능 여부는 게시 시 확인된다. 이름을 바꾸면 `package.json`, 설치 예제와 SDK import 예제도 함께 바꾼다.
45
+
46
+ npm 계정에서 2단계 인증을 준비하고 로그인한다. 게시 명령은 공개 레지스트리에 결과물을 공개한다. 검토한 압축 파일이 있는 디렉터리에서 현재 버전에 맞는 파일명을 사용한다.
47
+
48
+ ```sh
49
+ npm login --registry=https://registry.npmjs.org/
50
+ npm whoami --registry=https://registry.npmjs.org/
51
+ npm publish ./pi-codex-auto-review-0.1.0.tgz --access public --registry=https://registry.npmjs.org/
52
+ ```
53
+
54
+ 같은 이름·버전으로 다시 게시할 수 없으므로 수정 배포에는 새 버전을 사용한다. 시험 배포는 `package.json`과 잠금 파일의 버전을 `0.1.0-beta.1`처럼 지정하고 새 압축 패키지를 만든 다음 `--tag next`를 붙여 게시한다.
55
+
56
+ ## 게시 결과 확인
57
+
58
+ 게시한 버전이 조회되고 지원 환경의 Pi에서 설치·등록되는지 확인한다.
59
+
60
+ ```sh
61
+ npm view pi-codex-auto-review@0.1.0 version --registry=https://registry.npmjs.org/
62
+ pi install npm:pi-codex-auto-review@0.1.0
63
+ pi list
64
+ ```
65
+
66
+ Pi 등록 성공만으로 보호 시작을 보장하지 않는다. [사용법](usage.md)의 보호 CLI·SDK 진입점에서 규칙 엔진과 OS 샌드박스 준비가 성공하는지 확인한다. 설치를 취소하려면 `pi remove npm:pi-codex-auto-review`를 실행한다.
67
+
68
+ ## 관련 근거
69
+
70
+ - [Pi 패키지 등록](https://github.com/earendil-works/pi/blob/v0.99.1/packages/coding-agent/docs/packages.md)
71
+ - [npm 의존성 묶음과 overrides](https://docs.npmjs.com/cli/v11/configuring-npm/package-json/)
72
+ - [npm 공개 패키지 게시](https://docs.npmjs.com/creating-and-publishing-unscoped-public-packages/)
73
+ - [의존성 보안 보정](security/dependencies.md)
@@ -0,0 +1,43 @@
1
+ # 의존성 보안 수정
2
+
3
+ 2026-10-03 확인한 높은 심각도 3개 감사 항목을 조치했다. 깨끗한 `npm ci --ignore-scripts` 설치 후 실제 사용되는 버전은 `node-forge 1.4.1-0`, `brace-expansion 5.0.12`이며 npm 감사 결과는 0건이다. 실행 증거는 [보안 인계](https://github.com/buYoung/pi-codex-auto-review/blob/HEAD/docs/handoffs/auto-review/11-dependency-security.json)에 기록한다.
4
+
5
+ | 항목 | 적용한 수정 | 배포 상태 |
6
+ | --- | --- | --- |
7
+ | `node-forge` 및 이를 사용하는 `sandbox-runtime` | RSA `DigestAlgorithm`의 추가 요소를 거부하는 [수정 PR](https://github.com/digitalbazaar/forge/pull/1152)의 커밋 `ceba34402e329f0365134f23fe19898756527d65`을 고정 | **미병합 개발 버전**이다. 공식 수정 릴리스로 표현하지 않는다. 기존 1.4.0 대비 라이브러리 코드 변경은 RSA 검증부 한 곳이다. |
8
+ | `brace-expansion` | 공식 수정 버전 `5.0.12` 사용 | [공식 보안 공지](https://github.com/advisories/GHSA-q2hr-2g5m-vwhr)에 기재된 수정 버전이다. |
9
+
10
+ `node-forge`는 [공식 공지](https://github.com/advisories/GHSA-86w9-cpqp-85rv)에 수정 릴리스가 없다고 표시돼 있다. 버전 문자열을 임의로 올리거나 감사를 억제하지 않았다. 실제 패치 소스를 고정하고 정상 PKCS#1·PSS 서명, 네이티브 암호 모듈이 거부하는 변형 서명을 함께 검사했다.
11
+
12
+ ## Pi 패키지의 잠금 보정
13
+
14
+ Pi 0.99.1의 `npm-shrinkwrap.json`은 취약한 `brace-expansion 5.0.9`를 고정한다. 루트 `overrides`, 일반 업데이트, 감사 자동 수정으로는 바뀌지 않았고, 루트 잠금만 수정해도 깨끗한 설치 시 5.0.9가 다시 설치되는 것을 확인했다. 확인한 Pi 1.0.0 배포에도 같은 잠금이 있었다.
15
+
16
+ 따라서 공식 Pi 0.99.1 아카이브의 **잠금 항목 한 곳만** 수정한 개발 의존성을 사용한다. SDK 파일 1,227개를 대조했으며 소스·컴파일 결과·버전·라이선스는 동일하다. 아카이브와 변경 내역은 `vendor/`에 있으며, 이 아카이브도 검증 소스 해시에 포함된다. SDK API를 새 버전으로 바꾸지 않았다.
17
+
18
+ ```sh
19
+ python3 scripts/vendor-pi-sdk.py
20
+ npm install --package-lock-only --ignore-scripts
21
+ npm ci --ignore-scripts
22
+ npm run build
23
+ npm run test:contracts
24
+ npm audit --json
25
+ ```
26
+
27
+ 생성기는 공식 원본 아카이브의 SHA-512 무결성을 확인한다. 생성 파일의 SHA-256·SHA-512와 수정한 잠금 항목은 [`vendor/pi-sdk-security.json`](https://github.com/buYoung/pi-codex-auto-review/blob/HEAD/vendor/pi-sdk-security.json)에 기록한다. Docker도 같은 아카이브와 잠금 파일로 설치한다.
28
+
29
+ ## 확인한 결과
30
+
31
+ - 수정 전 정상 서명은 통과했으나 변형 서명이 `true`로 승인됐다. 중괄호 확장 입력은 5초 제한으로 중단됐다.
32
+ - 수정 후 정상 서명은 유지되고 변형 서명은 거부됐다. 같은 중괄호 입력도 제한 안에 완료됐다.
33
+ - 기존 계약·Pi 통합·네이티브 격리·패키지 실행을 합친 로컬 검증 58개가 통과했다. 플랫폼 전체 집계와 실모델 재검증은 후속 기능 변경을 합친 최종 소스에서 수행한다.
34
+
35
+ 이 보정은 저장소의 잠금 파일로 설치한 환경에 적용된다. 별도로 설치된 Pi 호스트나 다른 프로젝트의 의존성을 자동으로 바꾸지는 않는다. 다른 환경에서는 실제로 해석되는 의존성과 해당 환경의 감사 결과를 별도로 확인해야 한다.
36
+
37
+ ## npm 배포에서의 유지
38
+
39
+ 설치된 의존성의 `overrides`는 소비자 프로젝트에 적용되지 않고 `package-lock.json`도 게시되지 않는다. 따라서 npm 배포 패키지는 `bundleDependencies`로 `@anthropic-ai/sandbox-runtime`과 그 하위 의존성을 함께 포함한다. 잠금 파일로 설치한 보정된 `node-forge`도 묶음에 들어가며, 게시 전 검사는 고정된 소스 URL·설치 버전과 압축 패키지의 포함 여부를 확인한다.
40
+
41
+ Pi 호스트는 `peerDependencies`로 유지하고 묶지 않는다. 개발용 `vendor/pi-coding-agent-0.99.1-security.1.tgz`도 배포하지 않으므로 별도로 설치된 Pi의 `brace-expansion` 보정은 이 패키지의 보장 범위에 포함되지 않는다.
42
+
43
+ 플랫폼 실행 파일을 준비한 뒤 저장소 루트에서 `npm pack`을 실행하면 게시 전 검사가 적용된다. 소비자 설치에는 Rust 컴파일이나 보안 보정을 위한 설치 스크립트를 요구하지 않는다. 두 플랫폼의 실행 파일 취합은 [배포 안내](../publishing.md)를 따른다.
@@ -0,0 +1,130 @@
1
+ # 자동 검토 보호 경계 검증
2
+
3
+ 이 검증은 **정책 판단, 실제 Pi 도구 결과, 파일·네트워크 효과**를 함께 확인한다. 허용 대조군이 먼저 성공해야 차단 결과도 유효하다. 예외나 오류 메시지만 확인하고 보호 성공으로 판정하지 않는다.
4
+
5
+ 현재 검증 구성과 실제 실행 수는 각 실행의 `results`에 기록한다. GLM5.3 검증은 SDK 경로의 4개 시나리오와 배포된 CLI 경로의 1개 시나리오를 구분한다. Docker는 이에 앞서 고아 프로세스 회수도 검사한다. 구성에 포함됐다는 사실과 실제 통과는 구분한다. 최신 소스의 최종 결합 결과는 [정합성 인계](../handoffs/auto-review/07-conformance.json)와 그 안의 실행 근거를 확인한다. 이전 플랫폼 검증은 [운영체제 검증 인계](../handoffs/auto-review/17-platform-qualification.json), 이전 112개 검증은 [이전 보호 경계 인계](../handoffs/auto-review/10-protection-matrix.json)에 보존한다.
6
+
7
+ 개선 전 `85008b0` 시점에는 같은 소스의 macOS·실제 Linux x64·네이티브 및 에뮬레이션 Docker가 각각 142개를 통과했다. GLM5.3 네 사례와 Windows의 별도 규칙·사전 거부 검증도 통과했고, 감사 기록 217건과 실모델 로그·보고서 7개의 키 비노출을 확인했다. 이후 전체 검토에서 기존 검사에 없던 결함이 발견됐다. 이 과거 결과는 아래 회귀 사례와 현재 소스의 통과를 대신하지 않는다.
8
+
9
+ 이번 전체 개선의 수정 내역, 최종 실행 근거와 남은 플랫폼 조건은 [Pi 실행 개선 인계](../handoffs/auto-review/25-pi-runtime-alignment.md)에 정리했다.
10
+
11
+ ## 보호되는 경우와 허용되는 경우
12
+
13
+ | 경계 | 허용 대조군 | 차단 또는 검토 대상 | 최종 관찰 |
14
+ | --- | --- | --- | --- |
15
+ | 파일 도구 6종 | 작업 공간의 `read`, `grep`, `find`, `ls`, `write`, `edit` | 절대 보호 경로의 같은 도구 호출 | 도구 오류, 검토자 호출 0회, 보호 파일 불변, 내용 비노출 |
16
+ | 기본 읽기·임시 경로 | 일반 외부 파일 읽기, 기본 임시 경로 쓰기 | 임시 쓰기 루트를 제외한 뒤 같은 쓰기 | 읽기는 유지되고 쓰기는 검토 후 거부 |
17
+ | 읽기 전용 프로필 | 명시적으로 승인한 기존 파일 쓰기 | 승인하지 않은 작업 공간·임시 경로의 형제 파일, 다음 호출 | 승인 파일만 변경되고 나머지 불변 |
18
+ | 검토 중 경로 변경 | 처음 검토한 심볼릭 링크 대상 | 검토 중 다른 형제 경로나 보호 경로로 링크 교체 | 오래된 승인 거부, 세 대상 모두 불변 |
19
+ | 위험·인가 판단 | 높은 위험이라도 충분한 인가가 있는 합성 사례 | 낮은 위험의 명시적 정책 거부, 인가 부족, 최고 위험 | 주 모델에 전달된 도구 결과와 실제 쓰기 일치 |
20
+ | 검토 기술 오류 | 정상 구조의 승인 응답 | 공급자 오류, 잘못된 JSON, 권한 추가 필드 삽입, 시간 초과 | 정책 거부와 구별되는 실패, 파일 불변 |
21
+ | 승인 경로 설정 | 일반 작업 공간 쓰기·셸 출력 | 비활성화한 샌드박스·명령 규칙 승인 범주 | 검토자를 호출하지 않고 거부 |
22
+ | 명령 규칙 | 규칙에 걸리지 않는 정상 명령 | 허용 규칙과 동시에 일치하는 금지 규칙, 중첩 셸 | 직접·중첩 실행 모두 거부, 대상 파일 미생성 |
23
+ | 검토 취소 | 실제 Pi 직접 도구·`codemode`에서 검토 시작 | 검토 중 취소 후 늦게 도착한 승인 | 취소 신호 전달, 쓰기 미실행 |
24
+ | 파일 변조 7종 | 작업 공간의 추가 쓰기·길이 변경·삭제·이동·복사·모드 변경·하드 링크 생성 | 같은 작업의 범위 밖 대상 | 내용·존재·모드·원본 파일을 각각 확인 |
25
+ | 네트워크 목적지 | 허용 와일드카드의 하위 도메인 | 루트 도메인, 비슷한 접미사, 명시적 거부 도메인 | 소유한 서버의 실제 수신 횟수 |
26
+ | HTTP 리다이렉트 | 허용 호스트의 최초 요청 | 거부 호스트로의 리다이렉트 | 최초 요청만 도착하고 거부 대상은 미도달 |
27
+ | 환경변수 | 명시적인 일반 값이 자식 인터프리터에 전달 | 인증·로더·사용자 프록시 변수의 합성 비밀 값 | 자식 환경에 비밀 값 부재, 일반 값 보존 |
28
+ | Docker 프로세스 정리 | `--init`이 종료된 고아 프로세스를 회수 | PID 1이 고아를 회수하지 못하는 컨테이너 | 제한 시간 내 `/proc/<pid>` 소멸, 실패 시 본 검증 진입 차단 |
29
+ | 사전 생성 하드링크 | 모든 이름이 허용 범위 안에 있는 같은 inode | 보호 파일 별칭, 범위 밖 쓰기 별칭, 좁은 승인 파일의 형제 별칭 | 실행 전 차단, 외부 내용 불변; 모든 별칭을 포함한 디렉터리 승인은 허용 |
30
+ | 탐색 불가 디렉터리 | 접근 불가 하위 트리 옆의 정상 파일 쓰기 | 하위 트리의 권한 변경·읽기, 이름을 알면 접근 가능한 미검증 트리 | 접근 불가 트리는 OS 경계에서도 차단; 불완전한 검색 가능 범위는 시작 거부 |
31
+ | HTTPS CONNECT | 합성 인증서를 검증한 소유 서버 요청 | 허용하지 않은 목적지, 신뢰하지 않은 인증서 | 실제 HTTPS 응답과 서버 수신 횟수, 인증 실패 시 HTTP 효과 없음 |
32
+ | SOCKS5·UDP | 허용 SOCKS5 TCP, 호스트의 UDP 대조 요청 | 명시적으로 거부한 SOCKS5 목적지, 샌드박스의 직접 UDP | 허용 TCP만 도달, 직접 UDP 추가 수신 없음 |
33
+ | IPv6 | 동등한 IPv6 표기의 프록시 허용, 실행 중 정확한 목적지 승인 | 명시적 IPv6 거부, 직접 IPv6 통신 | 주소·포트가 검토에 전달되고 허용 요청만 서버 도달 |
34
+ | 원본 `.rules` | Starlark 함수·문자열 보간·대안 인자·실행 파일 경로·네트워크 규칙 | 틀린 예제, 경로 제약 위반, 잘못된 규칙, 취소 | 고정 Codex 엔진의 결과가 실제 정책과 네이티브 설정에 전달 |
35
+ | 자동 컨텍스트 | 신뢰한 루트부터 현재 위치까지의 지침, 전역·파일 우선순위 | 비신뢰 프로젝트, 보호 경로 별칭, 초과 바이트 | 출처와 내용이 Pi·검토자에 전달되며 새로고침 후 갱신 |
36
+ | MCP 최종 실행 | 일반 읽기 전용·설정상 허용, 검토로 승인된 정확한 호출 | 엄격 요청에서 표시·이전 승인으로 검토 생략, 거부, 등록 변경, 검토 취소 | 실제 Pi 클라이언트와 stdio 서버의 호출·파일 효과 일치 |
37
+ | 프로젝트 MCP 시작 | 저장된 신뢰 또는 명시적인 신뢰 선택 | 결정 없는 프로젝트, 명시적인 비신뢰 선택 | 도구 호출 전 서버 시작 효과도 신뢰 결정에 의해 제한 |
38
+ | MCP 추가 승인 | 원래 도구·연결·실제 입력과 일치하는 추가 요청 | 위조된 호출 ID, 다른 도구·커넥터 지목, 필수 사용자 입력의 자동 처리 | 원래 호출에 결합한 새 승인만 허용 |
39
+ | MCP 동시 호출 | 서로 다른 입력의 동시 호출 중 승인된 파일 변경 | 호출자 ID 재사용으로 다른 요청의 승인 차용 | 내부 연결 ID가 다르고, 거부 대상 파일은 불변 |
40
+ | MCP 이름 충돌 | `node_repl/js`에 대한 명시적 사용자 승인 | 승인 UI 없음, 명시적 거부 | 실제 stdio 서버의 대상 파일 불변·변경과 승인 창 횟수 일치 |
41
+ | Pi 제어 파일 | 사용자가 호스트에서 직접 변경한 MCP 설정 | 모델의 MCP 설정·신뢰한 확장 진입점·상대 import 모듈 변경 | 파일 불변, 재로딩 후 외부 효과 차단; 사용자 변경은 다음 시작에 적용 |
42
+ | 검토 응답 타입 | 문자열 위험 등급과 정상 승인 | 배열·`null` 등 잘못된 등급·승인 수준 | 외부 파일 불변, 기술 실패가 다음 모델 요청에 전달 |
43
+ | 문자 그대로의 경로 | 허용된 작업 영역 안의 `[route]`와 `*` 파일명 | 패턴 문자가 포함된 추가 권한 루트와 SDK 직접 프로필 | 승인 전·실행 전 차단, 비슷한 이름의 형제 파일 불변 |
44
+ | 거부 중단 후 직접 명령 | 사용자가 새로 요청한 직접 쉘 명령 | 중단된 모델의 후속 실행, 호출자 취소, 오래된 세션 | 모델 쓰기 미실행, 직접 명령 성공, 원래 취소 계약 유지 |
45
+ | 감사 기록 | 따옴표가 포함된 검토 사유의 정상 승인 | 합성 비밀 값의 기록 | JSON 파싱 성공, 값 가리기, 승인된 파일 변경 |
46
+ | 일반 Pi·CLI 진입점 | 패키지 기본 확장의 공식 MCP, CLI 명시적 공급자·모델 선택 | 중복 MCP 연결, 존재하지 않는 모델의 대체 실행 | 실제 Pi·CLI 도구 효과와 모델·검토 호출 일치 |
47
+ | Pi 자원 | 전역 skills와 신뢰한 프로젝트의 skills·프롬프트·테마 | 비신뢰 프로젝트 자원, 자동 확장 실행 | 모델 문맥과 펼쳐진 프롬프트에 전달, 비신뢰 코드 효과 없음 |
48
+ | MCP 재연결 정리 | 출력 모드에서 RPC로 재연결 후 승인 호출 | 이전 서버 프로세스 잔류 | 정상 종료 후 생성한 두 PID 모두 부재 |
49
+
50
+ ## Codex에서 반영한 하네스 방식
51
+
52
+ 기준은 공개 소스 `rust-v0.160.0`, 커밋 `a956835d020762cb2b570053af06f643a11c0ecc`다. 공개된 하네스의 검증 계약을 Pi의 스트림·도구 경로에 맞게 구현했다. `.rules`는 이 리비전의 `codex-execpolicy`를 실제 Rust 의존성으로 연결해 평가한다. 상류의 전체 Rust 테스트 스위트를 실행했다는 의미는 아니다.
53
+
54
+ | Codex 기준 | 반영한 검증 |
55
+ | --- | --- |
56
+ | [`responses.rs::mount_sse_sequence`](https://github.com/openai/codex/blob/a956835d020762cb2b570053af06f643a11c0ecc/codex-rs/core/tests/common/responses.rs#L1466) | 응답을 정해진 순서로 재생하고 주 모델·검토자 호출의 초과와 누락을 실패 처리한다. |
57
+ | [`exec_policy.rs::execpolicy_blocks_shell_invocation`](https://github.com/openai/codex/blob/a956835d020762cb2b570053af06f643a11c0ecc/codex-rs/core/tests/suite/exec_policy.rs#L517) | 정책 거부 결과가 다음 주 모델 요청에 도구 결과로 전달되는지 확인한다. |
58
+ | [`request_permissions.rs`](https://github.com/openai/codex/blob/a956835d020762cb2b570053af06f643a11c0ecc/codex-rs/core/tests/suite/request_permissions.rs#L834) | 읽기 전용 상태의 추가 권한이 승인하지 않은 작업 공간·임시 경로 쓰기로 넓어지지 않는지 확인한다. |
59
+ | [`guardian_review_cancellation.rs`](https://github.com/openai/codex/blob/a956835d020762cb2b570053af06f643a11c0ecc/codex-rs/core/tests/suite/guardian_review_cancellation.rs#L39) | 직접 도구와 중첩 코드 실행의 검토를 취소한 뒤 늦은 승인이 실행으로 이어지지 않는지 확인한다. |
60
+ | [`execpolicy`](https://github.com/openai/codex/tree/a956835d020762cb2b570053af06f643a11c0ecc/codex-rs/execpolicy) | 원본 Starlark 엔진과 예제 검증·실행 파일 경로·네트워크 규칙 변환을 연결한다. |
61
+ | [`agents_md.rs`](https://github.com/openai/codex/blob/a956835d020762cb2b570053af06f643a11c0ecc/codex-rs/core/src/agents_md.rs) | 프로젝트 루트·지침 우선순위·바이트 한도·신뢰 상태를 확인한다. |
62
+ | [`mcp_tool_call.rs`](https://github.com/openai/codex/blob/a956835d020762cb2b570053af06f643a11c0ecc/codex-rs/core/src/mcp_tool_call.rs), [`session/mcp.rs`](https://github.com/openai/codex/blob/a956835d020762cb2b570053af06f643a11c0ecc/codex-rs/core/src/session/mcp.rs) | annotation 우선순위, 엄격한 자동 검토, 민감한 중첩 승인과 호출 출처 결합을 확인한다. |
63
+
64
+ Pi 구현은 [`test/harness/scenarios.mjs`](../../test/harness/scenarios.mjs), 시나리오는 [`test/conformance/protection.test.mjs`](../../test/conformance/protection.test.mjs)에 있다. OS 격리 검사는 [`test/native/sandbox.test.mjs`](../../test/native/sandbox.test.mjs)에 있다. 하네스 자체도 호출 누락·초과, 이미 취소된 요청을 검사한다. 하네스 내부 assertion이 공급자 오류로 변환돼 조용히 통과하지 못하도록 별도로 보존한다.
65
+
66
+ 확장 검증 중 Docker PID 1 아래 좀비 프로세스 131개가 누적되고 `grep`의 스레드 생성이 실패하는 문제를 재현했다. 하네스의 `--init`과 고아 회수 사전 검증으로 수정하며, PID 한도 256개와 내부 파일·네트워크·seccomp 제한을 유지한다.
67
+
68
+ 후속 검증에서는 실행 전에 만든 하드링크가 macOS의 보호 파일 읽기와 외부 파일 쓰기를 우회하는 것을 재현했다. 실행 전 링크 수와 허용 범위의 이름을 대조해 수정했다. 또 Pi의 기본 신뢰값을 그대로 사용하면 새 프로젝트의 MCP 서버가 승인 도구 호출 전에 시작되는 것을 재현해, 저장된 신뢰와 명시적 선택으로 제한했다. 재현·수정 근거는 [하드링크 인계](../handoffs/auto-review/15-hard-links.json)와 [운영체제 후속 인계](../handoffs/auto-review/18-platform-followups.json)에 있다.
69
+
70
+ 실제 Ubuntu Docker에서는 내부 `bwrap`의 마운트가 외부 AppArmor 정책에 차단됐다. 하네스는 AppArmor 지원 여부를 확인하고 소유한 검증 컨테이너에만 `apparmor=unconfined`를 지정한다. 요청값과 실제 프로필을 실행 보고서에 기록하며, 내부 샌드박스의 파일·네트워크·seccomp 검증은 그대로 수행한다. 이는 [Docker의 컨테이너별 프로필 선택](https://docs.docker.com/engine/security/apparmor/)을 사용하는 검증 환경 설정이다. 수정 전후 실행은 [AppArmor 인계](../handoffs/auto-review/20-docker-apparmor.json)에 보존했다.
71
+
72
+ ARM64 커널에서 x64 프로그램을 실행한 추가 검증에서는 142개 중 정상 셸 출력 사례 하나가 3초 제한을 넘겼다. 해당 기능 검사의 호출자 지정 제한을 15초로 보정했다. 별도 생명주기 검사는 실제 2초 제한, 3.5초 반환 상한, 지연된 파일 변경 차단을 계속 확인한다. 실행기의 제한 처리 코드는 변경하지 않았다. 최초 실패와 집중 검사 결과는 [에뮬레이션 시간 인계](../handoffs/auto-review/22-emulated-shell-timing.json)에 있다.
73
+
74
+ macOS의 첫 최종 집계에서는 패키지 검사의 20초 관찰 시간이 초과됐다. 관찰 시간을 늘린 진단 복사본은 12.6초에 정상 완료됐으며, 원본 검사와 20초 제한을 유지한 재집계도 통과했다. 최초 지연의 세부 원인은 특정하지 못했다. [패키지 시간 관찰 인계](../handoffs/auto-review/24-macos-package-timing.json)에 초기 실패와 후속 성공을 함께 보존했다.
75
+
76
+ 일반 MCP 승인과 엄격 검토는 구분한다. Codex의 일반 경로는 검토자가 자동 모델이어도 annotation과 승인 모드를 따르며, 엄격 검토는 이런 생략 조건을 허용하지 않는다. 중첩 요청은 원래 호출의 엄격 검토 요구를 낮출 수 없다. 정정한 동작과 회귀 검증은 [MCP 승인 경로 인계](../handoffs/auto-review/19-mcp-routing.json)에 기록했다.
77
+
78
+ 현재 E2E는 [`test/e2e/guard.test.mjs`](../../test/e2e/guard.test.mjs)에 있다. 배열 위험 등급이 외부 파일을 변경하는 현상, 제한된 경로의 `[]`가 형제 파일 쓰기를 허용하는 현상, `node_repl/js`가 승인 없이 MCP 효과를 실행하는 현상을 수정 전 실제 Pi·OS 경로에서 재현했다. 감사 JSON 실패와 거부 중단 후 직접 명령 실패도 같은 방식으로 재현했다. 기본 패키지 검사는 공개 Pi 세션과 실제 MCP 서버까지 실행하도록 확장했으므로, 하위 프로세스 관찰 한도를 기존 20초에서 60초로 조정했다. 실제 실행기의 취소·시간 제한 검사는 별도로 유지한다.
79
+
80
+ CLI 관찰기는 Pi 0.99.1의 확장용 호환 레지스트리가 가리키는 실제 `ModelRuntime`을 계측한다. 호환 레지스트리만 감싸면 주 에이전트 호출을 놓치므로, 로컬 HTTP 공급자 대조군으로 주 실행 2회·검토 1회의 실제 수신과 관찰 기록을 대조한다. 검토 출력 한도 `777`과 주 실행의 4096토큰 상한이 HTTP 요청에 전달되고, 최종 파일이 변경돼야 통과한다. 이 계측은 고정 버전용 검증 코드이며 제품의 응답을 대체하지 않는다.
81
+
82
+ 테스트 프로세스의 `TMPDIR`은 해당 실행이 만든 디렉터리로 지정하고 종료 시 정리한다. 호스트의 공유 임시 경로가 디렉터리 검사 한도 10만 개를 넘는 환경을 관찰했기 때문이다. 실행기의 검사 한도와 불완전한 검사의 차단 정책은 유지하며, 기본 임시 루트 허용과 명시적 제외를 별도 대조군으로 검사한다.
83
+
84
+ 첫 ARM64 Docker 실행에서는 154개 중 정상 `grep` 대조군 하나가 실패했다. 추가 검사와 실제 마운트 관찰에서, 존재하지 않는 `.git`이 `/dev/null` 장치로 바인딩되고 `nodev`로 인해 읽기가 거부되는 것을 확인했다. `.git/HEAD` 하위 차단을 함께 전달해 런타임이 읽기 전용 빈 디렉터리를 만들도록 수정했다. 원래 부모 차단은 유지하며, 읽기 선언을 늘리는 초기 수정은 별도 대조군에서 불필요함을 확인하고 되돌렸다. SDK 호출자의 읽기 전용 경로 선택도 보존한다. 추가 대조군은 정상 검색·일반 디렉터리 생성·Pi 설정 생성 차단을 함께 확인한다. 허용 루트와 절대 차단 루트가 직접 겹치거나 별칭으로 겹치는 경우는 실제 경로로 정규화한 뒤 실행 전에 거부한다.
85
+
86
+ 추가 승인 연결 검사에서는 같은 호출자 ID를 사용한 두 MCP 요청이 겹칠 때 거부 대상 파일이 변경되는 것을 재현했다. MCP 전송마다 내부에서 생성한 고유 ID로 추가 승인을 연결하도록 수정했다. 실제 Pi에 등록된 도구를 동시에 실행해, 두 검토 입력이 각각 보존되고 승인된 파일만 변경되는지 확인한다.
87
+
88
+ ## 검증이 보장하는 범위
89
+
90
+ - 주 모델과 검토자를 재생하는 시나리오는 실제 Pi와 OS 샌드박스를 사용한다. 이 결과를 실제 GLM5.3의 판단 정확도로 표시하지 않는다. 실모델 SDK 4개와 CLI 1개 사례는 별도 실행·집계한다. 통합 판정에는 CLI의 실제 검토 호출·파일 변경·자격 증명 미기록도 필요하다.
91
+ - 기본 임시 디렉터리 쓰기와 일반 외부 파일 읽기는 기본 프로필이 허용하는 동작이다. 작업 공간 밖이라는 이유만으로 항상 차단된다고 가정하지 않는다.
92
+ - 셸 실행은 트랜잭션이 아니다. 허용된 첫 번째 쓰기 뒤 두 번째 쓰기가 거부되어도 첫 번째 변경은 남는다. 이 부분 효과도 테스트에서 명시적으로 확인한다.
93
+ - Linux에서 새 파일 생성은 승인할 부모 디렉터리 범위가 필요할 수 있다. 좁은 기존 파일 승인과 새 파일 생성의 범위를 구분한다.
94
+ - 사전 생성 하드링크와 좁은 승인 파일의 다른 이름을 검사한다. 실행 중 격리 밖의 호스트 프로그램이 동시에 링크 구조를 바꾸는 공격까지 보장하지 않는다. 검사 실패·한도 초과는 실행 차단으로 처리한다.
95
+ - Linux x64 호스트 실행과 ARM64 커널의 x64 실행은 기록을 분리한다. 최종 집계에는 같은 소스의 실제 Linux x64 호스트 결과가 필요하다.
96
+ - Windows는 실제 운영체제에서 원본 규칙 엔진·승인 정책과 미지원 네이티브 실행의 사전 거부를 확인하는 별도 검증이다. Windows 네이티브 격리의 성공을 뜻하지 않는다.
97
+ - 외부 MCP 실행기는 신뢰한 통합 계층이다. 이미 외부 서버에 전송된 요청의 취소 효과나 모든 공급자의 계정 식별·부수 효과를 보장하지 않는다. 비어 있는 승인 폼은 처리하지만 일반 입력 폼·URL elicitation은 거부한다. Pi에 없는 Computer Use 분류와 승인 예외는 제거했다.
98
+ - 패턴 문자가 들어간 네이티브 권한 루트는 런타임에서 문자 그대로 표현할 수 없어 차단한다. 일반 작업 영역 안의 특수문자 파일명 지원과 구분한다. 신뢰한 확장의 디렉터리는 제어 코드로 보호하지만, 임의의 신뢰 확장이 그 밖의 파일을 실행하거나 import하는 모든 의존 관계를 자동 분석하지는 않는다.
99
+ - HTTPS CONNECT·SOCKS5 TCP·IPv6와 직접 UDP 차단을 검사한다. SOCKS5 UDP 및 모든 네트워크 프로토콜을 지원·검증했다고 주장하지 않는다.
100
+ - 독점 Codex 모델과의 모든 판단 동일성은 보장하지 않는다. 공개 정책·흐름과 선택한 GLM5.3의 관찰 결과를 구분한다.
101
+
102
+ ## 실행
103
+
104
+ 저장소 루트에서 실행한다. 아래 명령은 모두 실제 자격 증명을 사용하지 않는다.
105
+
106
+ ```sh
107
+ npm run build
108
+ npm run test:conformance
109
+ npm run test:native
110
+ npm run verify:docker -- --mode offline --platform linux/amd64
111
+ ```
112
+
113
+ 실모델 검증은 `OLLAMA_API_KEY`가 export된 셸에서 실행한다. `.zshrc`에 저장했다면 해당 셸에서 먼저 불러온다. 키 값은 명령 인자에 넣지 않는다. 앞선 오프라인 실행의 출력에서 확인한 이미지 식별자를 사용한다.
114
+
115
+ ```sh
116
+ export OLLAMA_API_KEY
117
+ npm run verify:docker -- --mode conformance --platform linux/amd64 --model glm-5.3 --image <imageDigest>
118
+ npm run verify:guard
119
+ ```
120
+
121
+ `verify:platform`은 실행한 운영체제의 전체 결과를 남기고, Windows의 `verify:windows`는 이식 가능한 엔진과 사전 거부 결과만 남긴다. GitHub Actions에는 Ollama 키를 보내지 않는다. 검증한 Docker 이미지를 가져온 뒤 로컬 환경변수로 실모델 검증을 수행한다.
122
+
123
+ Docker 엔진에 따라 이미지를 내보낼 때와 불러온 뒤의 ID가 다를 수 있다. 이번 실행에서는 CI의 설정 해시를 로컬 매니페스트가 참조하고, 19개 레이어가 모두 같음을 확인했다. 이 경우에는 `docker image load`가 반환한 ID로 오프라인 검증을 다시 실행하고, 같은 ID로 실모델 검증을 실행한다.
124
+
125
+ ```sh
126
+ npm run verify:docker -- --mode offline --platform linux/amd64 --image <loadedImageID>
127
+ npm run verify:docker -- --mode conformance --platform linux/amd64 --model glm-5.3 --image <loadedImageID>
128
+ ```
129
+
130
+ `verify:guard`는 같은 소스·플랫폼·이미지의 결과만 합친다. 이번 작업의 초기 실패와 후속 성공 기록도 `.reports/pi-guard/runs/`에 별도로 남긴다.