@patze/code-cli 0.10.2

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 (268) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/NOTICE.md +17 -0
  3. package/README.md +177 -0
  4. package/VERSION +1 -0
  5. package/bin/patze.mjs +7 -0
  6. package/dist/backend/auth.d.ts +13 -0
  7. package/dist/backend/auth.d.ts.map +1 -0
  8. package/dist/backend/auth.js +12 -0
  9. package/dist/backend/auth.js.map +1 -0
  10. package/dist/backend/client.d.ts +14 -0
  11. package/dist/backend/client.d.ts.map +1 -0
  12. package/dist/backend/client.js +51 -0
  13. package/dist/backend/client.js.map +1 -0
  14. package/dist/backend/preview-client.d.ts +33 -0
  15. package/dist/backend/preview-client.d.ts.map +1 -0
  16. package/dist/backend/preview-client.js +104 -0
  17. package/dist/backend/preview-client.js.map +1 -0
  18. package/dist/backend/preview-payload.d.ts +50 -0
  19. package/dist/backend/preview-payload.d.ts.map +1 -0
  20. package/dist/backend/preview-payload.js +92 -0
  21. package/dist/backend/preview-payload.js.map +1 -0
  22. package/dist/cli/argv.d.ts +10 -0
  23. package/dist/cli/argv.d.ts.map +1 -0
  24. package/dist/cli/argv.js +67 -0
  25. package/dist/cli/argv.js.map +1 -0
  26. package/dist/cli/commands/apply-format.d.ts +12 -0
  27. package/dist/cli/commands/apply-format.d.ts.map +1 -0
  28. package/dist/cli/commands/apply-format.js +50 -0
  29. package/dist/cli/commands/apply-format.js.map +1 -0
  30. package/dist/cli/commands/apply.d.ts +14 -0
  31. package/dist/cli/commands/apply.d.ts.map +1 -0
  32. package/dist/cli/commands/apply.js +256 -0
  33. package/dist/cli/commands/apply.js.map +1 -0
  34. package/dist/cli/commands/approve-format.d.ts +4 -0
  35. package/dist/cli/commands/approve-format.d.ts.map +1 -0
  36. package/dist/cli/commands/approve-format.js +40 -0
  37. package/dist/cli/commands/approve-format.js.map +1 -0
  38. package/dist/cli/commands/approve.d.ts +19 -0
  39. package/dist/cli/commands/approve.d.ts.map +1 -0
  40. package/dist/cli/commands/approve.js +91 -0
  41. package/dist/cli/commands/approve.js.map +1 -0
  42. package/dist/cli/commands/code.d.ts +4 -0
  43. package/dist/cli/commands/code.d.ts.map +1 -0
  44. package/dist/cli/commands/code.js +57 -0
  45. package/dist/cli/commands/code.js.map +1 -0
  46. package/dist/cli/commands/diff-format.d.ts +12 -0
  47. package/dist/cli/commands/diff-format.d.ts.map +1 -0
  48. package/dist/cli/commands/diff-format.js +151 -0
  49. package/dist/cli/commands/diff-format.js.map +1 -0
  50. package/dist/cli/commands/diff.d.ts +22 -0
  51. package/dist/cli/commands/diff.d.ts.map +1 -0
  52. package/dist/cli/commands/diff.js +101 -0
  53. package/dist/cli/commands/diff.js.map +1 -0
  54. package/dist/cli/commands/doctor.d.ts +6 -0
  55. package/dist/cli/commands/doctor.d.ts.map +1 -0
  56. package/dist/cli/commands/doctor.js +99 -0
  57. package/dist/cli/commands/doctor.js.map +1 -0
  58. package/dist/cli/commands/goal-format.d.ts +3 -0
  59. package/dist/cli/commands/goal-format.d.ts.map +1 -0
  60. package/dist/cli/commands/goal-format.js +32 -0
  61. package/dist/cli/commands/goal-format.js.map +1 -0
  62. package/dist/cli/commands/goal.d.ts +28 -0
  63. package/dist/cli/commands/goal.d.ts.map +1 -0
  64. package/dist/cli/commands/goal.js +80 -0
  65. package/dist/cli/commands/goal.js.map +1 -0
  66. package/dist/cli/commands/inspect-format.d.ts +6 -0
  67. package/dist/cli/commands/inspect-format.d.ts.map +1 -0
  68. package/dist/cli/commands/inspect-format.js +62 -0
  69. package/dist/cli/commands/inspect-format.js.map +1 -0
  70. package/dist/cli/commands/inspect.d.ts +7 -0
  71. package/dist/cli/commands/inspect.d.ts.map +1 -0
  72. package/dist/cli/commands/inspect.js +11 -0
  73. package/dist/cli/commands/inspect.js.map +1 -0
  74. package/dist/cli/commands/login.d.ts +4 -0
  75. package/dist/cli/commands/login.d.ts.map +1 -0
  76. package/dist/cli/commands/login.js +21 -0
  77. package/dist/cli/commands/login.js.map +1 -0
  78. package/dist/cli/commands/plan-format.d.ts +7 -0
  79. package/dist/cli/commands/plan-format.d.ts.map +1 -0
  80. package/dist/cli/commands/plan-format.js +48 -0
  81. package/dist/cli/commands/plan-format.js.map +1 -0
  82. package/dist/cli/commands/plan.d.ts +13 -0
  83. package/dist/cli/commands/plan.d.ts.map +1 -0
  84. package/dist/cli/commands/plan.js +64 -0
  85. package/dist/cli/commands/plan.js.map +1 -0
  86. package/dist/cli/commands/runs.d.ts +5 -0
  87. package/dist/cli/commands/runs.d.ts.map +1 -0
  88. package/dist/cli/commands/runs.js +25 -0
  89. package/dist/cli/commands/runs.js.map +1 -0
  90. package/dist/cli/commands/session-snapshot-format.d.ts +3 -0
  91. package/dist/cli/commands/session-snapshot-format.d.ts.map +1 -0
  92. package/dist/cli/commands/session-snapshot-format.js +5 -0
  93. package/dist/cli/commands/session-snapshot-format.js.map +1 -0
  94. package/dist/cli/commands/status-format.d.ts +11 -0
  95. package/dist/cli/commands/status-format.d.ts.map +1 -0
  96. package/dist/cli/commands/status-format.js +57 -0
  97. package/dist/cli/commands/status-format.js.map +1 -0
  98. package/dist/cli/commands/status.d.ts +4 -0
  99. package/dist/cli/commands/status.d.ts.map +1 -0
  100. package/dist/cli/commands/status.js +12 -0
  101. package/dist/cli/commands/status.js.map +1 -0
  102. package/dist/cli/commands/trust-loop-snapshot.d.ts +3 -0
  103. package/dist/cli/commands/trust-loop-snapshot.d.ts.map +1 -0
  104. package/dist/cli/commands/trust-loop-snapshot.js +125 -0
  105. package/dist/cli/commands/trust-loop-snapshot.js.map +1 -0
  106. package/dist/cli/commands/verify-drift-guard.d.ts +2 -0
  107. package/dist/cli/commands/verify-drift-guard.d.ts.map +1 -0
  108. package/dist/cli/commands/verify-drift-guard.js +11 -0
  109. package/dist/cli/commands/verify-drift-guard.js.map +1 -0
  110. package/dist/cli/commands/verify.d.ts +12 -0
  111. package/dist/cli/commands/verify.d.ts.map +1 -0
  112. package/dist/cli/commands/verify.js +62 -0
  113. package/dist/cli/commands/verify.js.map +1 -0
  114. package/dist/cli/help.d.ts +3 -0
  115. package/dist/cli/help.d.ts.map +1 -0
  116. package/dist/cli/help.js +36 -0
  117. package/dist/cli/help.js.map +1 -0
  118. package/dist/cli/interactive/agent-turn-format.d.ts +15 -0
  119. package/dist/cli/interactive/agent-turn-format.d.ts.map +1 -0
  120. package/dist/cli/interactive/agent-turn-format.js +70 -0
  121. package/dist/cli/interactive/agent-turn-format.js.map +1 -0
  122. package/dist/cli/interactive/agent-turn.d.ts +9 -0
  123. package/dist/cli/interactive/agent-turn.d.ts.map +1 -0
  124. package/dist/cli/interactive/agent-turn.js +103 -0
  125. package/dist/cli/interactive/agent-turn.js.map +1 -0
  126. package/dist/cli/interactive/header.d.ts +4 -0
  127. package/dist/cli/interactive/header.d.ts.map +1 -0
  128. package/dist/cli/interactive/header.js +28 -0
  129. package/dist/cli/interactive/header.js.map +1 -0
  130. package/dist/cli/interactive/permissions-command.d.ts +15 -0
  131. package/dist/cli/interactive/permissions-command.d.ts.map +1 -0
  132. package/dist/cli/interactive/permissions-command.js +88 -0
  133. package/dist/cli/interactive/permissions-command.js.map +1 -0
  134. package/dist/cli/interactive/permissions-format.d.ts +18 -0
  135. package/dist/cli/interactive/permissions-format.d.ts.map +1 -0
  136. package/dist/cli/interactive/permissions-format.js +142 -0
  137. package/dist/cli/interactive/permissions-format.js.map +1 -0
  138. package/dist/cli/interactive/permissions-keys.d.ts +5 -0
  139. package/dist/cli/interactive/permissions-keys.d.ts.map +1 -0
  140. package/dist/cli/interactive/permissions-keys.js +58 -0
  141. package/dist/cli/interactive/permissions-keys.js.map +1 -0
  142. package/dist/cli/interactive/session-state.d.ts +68 -0
  143. package/dist/cli/interactive/session-state.d.ts.map +1 -0
  144. package/dist/cli/interactive/session-state.js +2 -0
  145. package/dist/cli/interactive/session-state.js.map +1 -0
  146. package/dist/cli/interactive/session.d.ts +71 -0
  147. package/dist/cli/interactive/session.d.ts.map +1 -0
  148. package/dist/cli/interactive/session.js +244 -0
  149. package/dist/cli/interactive/session.js.map +1 -0
  150. package/dist/cli/interactive/shell.d.ts +13 -0
  151. package/dist/cli/interactive/shell.d.ts.map +1 -0
  152. package/dist/cli/interactive/shell.js +115 -0
  153. package/dist/cli/interactive/shell.js.map +1 -0
  154. package/dist/cli/interactive/slash-dispatch.d.ts +14 -0
  155. package/dist/cli/interactive/slash-dispatch.d.ts.map +1 -0
  156. package/dist/cli/interactive/slash-dispatch.js +276 -0
  157. package/dist/cli/interactive/slash-dispatch.js.map +1 -0
  158. package/dist/cli/interactive/slash-parse.d.ts +9 -0
  159. package/dist/cli/interactive/slash-parse.d.ts.map +1 -0
  160. package/dist/cli/interactive/slash-parse.js +78 -0
  161. package/dist/cli/interactive/slash-parse.js.map +1 -0
  162. package/dist/cli/interactive/slash-registry.d.ts +11 -0
  163. package/dist/cli/interactive/slash-registry.d.ts.map +1 -0
  164. package/dist/cli/interactive/slash-registry.js +26 -0
  165. package/dist/cli/interactive/slash-registry.js.map +1 -0
  166. package/dist/cli/interactive/slash-suggest.d.ts +4 -0
  167. package/dist/cli/interactive/slash-suggest.d.ts.map +1 -0
  168. package/dist/cli/interactive/slash-suggest.js +46 -0
  169. package/dist/cli/interactive/slash-suggest.js.map +1 -0
  170. package/dist/cli/interactive/tools-catalog.d.ts +8 -0
  171. package/dist/cli/interactive/tools-catalog.d.ts.map +1 -0
  172. package/dist/cli/interactive/tools-catalog.js +51 -0
  173. package/dist/cli/interactive/tools-catalog.js.map +1 -0
  174. package/dist/cli/main.d.ts +2 -0
  175. package/dist/cli/main.d.ts.map +1 -0
  176. package/dist/cli/main.js +69 -0
  177. package/dist/cli/main.js.map +1 -0
  178. package/dist/cli/ui/diff-view.d.ts +7 -0
  179. package/dist/cli/ui/diff-view.d.ts.map +1 -0
  180. package/dist/cli/ui/diff-view.js +18 -0
  181. package/dist/cli/ui/diff-view.js.map +1 -0
  182. package/dist/cli/ui/printer.d.ts +13 -0
  183. package/dist/cli/ui/printer.d.ts.map +1 -0
  184. package/dist/cli/ui/printer.js +24 -0
  185. package/dist/cli/ui/printer.js.map +1 -0
  186. package/dist/cli/ui/spinner.d.ts +5 -0
  187. package/dist/cli/ui/spinner.d.ts.map +1 -0
  188. package/dist/cli/ui/spinner.js +30 -0
  189. package/dist/cli/ui/spinner.js.map +1 -0
  190. package/dist/cli/ui/text-writer.d.ts +8 -0
  191. package/dist/cli/ui/text-writer.d.ts.map +1 -0
  192. package/dist/cli/ui/text-writer.js +17 -0
  193. package/dist/cli/ui/text-writer.js.map +1 -0
  194. package/dist/config/config.d.ts +30 -0
  195. package/dist/config/config.d.ts.map +1 -0
  196. package/dist/config/config.js +133 -0
  197. package/dist/config/config.js.map +1 -0
  198. package/dist/runtime/apply-verify.d.ts +28 -0
  199. package/dist/runtime/apply-verify.d.ts.map +1 -0
  200. package/dist/runtime/apply-verify.js +180 -0
  201. package/dist/runtime/apply-verify.js.map +1 -0
  202. package/dist/runtime/approvals.d.ts +10 -0
  203. package/dist/runtime/approvals.d.ts.map +1 -0
  204. package/dist/runtime/approvals.js +22 -0
  205. package/dist/runtime/approvals.js.map +1 -0
  206. package/dist/runtime/content-hash.d.ts +3 -0
  207. package/dist/runtime/content-hash.d.ts.map +1 -0
  208. package/dist/runtime/content-hash.js +8 -0
  209. package/dist/runtime/content-hash.js.map +1 -0
  210. package/dist/runtime/digest-mask.d.ts +2 -0
  211. package/dist/runtime/digest-mask.d.ts.map +1 -0
  212. package/dist/runtime/digest-mask.js +11 -0
  213. package/dist/runtime/digest-mask.js.map +1 -0
  214. package/dist/runtime/inspect.d.ts +20 -0
  215. package/dist/runtime/inspect.d.ts.map +1 -0
  216. package/dist/runtime/inspect.js +152 -0
  217. package/dist/runtime/inspect.js.map +1 -0
  218. package/dist/runtime/patch-apply.d.ts +32 -0
  219. package/dist/runtime/patch-apply.d.ts.map +1 -0
  220. package/dist/runtime/patch-apply.js +170 -0
  221. package/dist/runtime/patch-apply.js.map +1 -0
  222. package/dist/runtime/patch-path-guard.d.ts +17 -0
  223. package/dist/runtime/patch-path-guard.d.ts.map +1 -0
  224. package/dist/runtime/patch-path-guard.js +56 -0
  225. package/dist/runtime/patch-path-guard.js.map +1 -0
  226. package/dist/runtime/patch-proposal.d.ts +55 -0
  227. package/dist/runtime/patch-proposal.d.ts.map +1 -0
  228. package/dist/runtime/patch-proposal.js +118 -0
  229. package/dist/runtime/patch-proposal.js.map +1 -0
  230. package/dist/runtime/permissions.d.ts +18 -0
  231. package/dist/runtime/permissions.d.ts.map +1 -0
  232. package/dist/runtime/permissions.js +91 -0
  233. package/dist/runtime/permissions.js.map +1 -0
  234. package/dist/runtime/sandbox.d.ts +9 -0
  235. package/dist/runtime/sandbox.d.ts.map +1 -0
  236. package/dist/runtime/sandbox.js +17 -0
  237. package/dist/runtime/sandbox.js.map +1 -0
  238. package/dist/runtime/unified-diff.d.ts +19 -0
  239. package/dist/runtime/unified-diff.d.ts.map +1 -0
  240. package/dist/runtime/unified-diff.js +114 -0
  241. package/dist/runtime/unified-diff.js.map +1 -0
  242. package/dist/runtime/verifier.d.ts +6 -0
  243. package/dist/runtime/verifier.d.ts.map +1 -0
  244. package/dist/runtime/verifier.js +16 -0
  245. package/dist/runtime/verifier.js.map +1 -0
  246. package/dist/runtime/workspace.d.ts +10 -0
  247. package/dist/runtime/workspace.d.ts.map +1 -0
  248. package/dist/runtime/workspace.js +107 -0
  249. package/dist/runtime/workspace.js.map +1 -0
  250. package/dist/version.d.ts +3 -0
  251. package/dist/version.d.ts.map +1 -0
  252. package/dist/version.js +10 -0
  253. package/dist/version.js.map +1 -0
  254. package/docs/beta-feedback-template.md +75 -0
  255. package/docs/beta-feedback-triage.md +169 -0
  256. package/docs/beta-release-handoff.md +182 -0
  257. package/docs/beta-tester-checklist.md +62 -0
  258. package/docs/install-beta.md +77 -0
  259. package/docs/internal-beta.md +84 -0
  260. package/docs/known-limitations.md +62 -0
  261. package/docs/patze-cli-architecture.md +137 -0
  262. package/docs/patze-cli-codex-reference-study.md +43 -0
  263. package/docs/release-checklist.md +83 -0
  264. package/docs/safety-model.md +69 -0
  265. package/docs/smoke-command-guide.md +61 -0
  266. package/docs/trust-loop.md +90 -0
  267. package/docs/uninstall-reset.md +44 -0
  268. package/package.json +39 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type DiffLine = {
2
+ kind: "add" | "del" | "ctx";
3
+ text: string;
4
+ };
5
+ export declare function renderUnifiedDiff(lines: DiffLine[]): string;
6
+ export declare function placeholderDiffPreview(): DiffLine[];
7
+ //# sourceMappingURL=diff-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-view.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/diff-view.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAQ3D;AAED,wBAAgB,sBAAsB,IAAI,QAAQ,EAAE,CAKnD"}
@@ -0,0 +1,18 @@
1
+ export function renderUnifiedDiff(lines) {
2
+ return lines
3
+ .map((line) => {
4
+ if (line.kind === "add")
5
+ return `+ ${line.text}`;
6
+ if (line.kind === "del")
7
+ return `- ${line.text}`;
8
+ return ` ${line.text}`;
9
+ })
10
+ .join("\n");
11
+ }
12
+ export function placeholderDiffPreview() {
13
+ return [
14
+ { kind: "ctx", text: "@@ dry-run only — no files changed @@" },
15
+ { kind: "add", text: "Patze apply is approval-gated and not enabled in this slice." },
16
+ ];
17
+ }
18
+ //# sourceMappingURL=diff-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-view.js","sourceRoot":"","sources":["../../../src/cli/ui/diff-view.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,iBAAiB,CAAC,KAAiB;IACjD,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO,KAAK,IAAI,CAAC,IAAI,EAAE,CAAA;QAChD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO,KAAK,IAAI,CAAC,IAAI,EAAE,CAAA;QAChD,OAAO,KAAK,IAAI,CAAC,IAAI,EAAE,CAAA;IACzB,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,uCAAuC,EAAE;QAC9D,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,8DAA8D,EAAE;KACtF,CAAA;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ export type PrinterOptions = {
2
+ color: boolean;
3
+ };
4
+ export declare function createPrinter(options?: PrinterOptions): {
5
+ line(text?: string): void;
6
+ info(text: string): void;
7
+ warn(text: string): void;
8
+ error(text: string): void;
9
+ kv(key: string, value: string): void;
10
+ json(value: unknown): void;
11
+ };
12
+ export type Printer = ReturnType<typeof createPrinter>;
13
+ //# sourceMappingURL=printer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"printer.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/printer.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,OAAO,CAAA;CACf,CAAA;AAED,wBAAgB,aAAa,CAAC,OAAO,GAAE,cAAyE;yBAI3F,IAAI;eAGV,MAAM,GAAG,IAAI;eAGb,MAAM,GAAG,IAAI;gBAGZ,MAAM,GAAG,IAAI;YAGjB,MAAM,SAAS,MAAM,GAAG,IAAI;gBAGxB,OAAO,GAAG,IAAI;EAI7B;AAED,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAA"}
@@ -0,0 +1,24 @@
1
+ export function createPrinter(options = { color: process.stdout.isTTY && !process.env.NO_COLOR }) {
2
+ const useColor = options.color;
3
+ return {
4
+ line(text = "") {
5
+ process.stdout.write(`${text}\n`);
6
+ },
7
+ info(text) {
8
+ process.stdout.write(`${useColor ? "\x1b[36m" : ""}${text}${useColor ? "\x1b[0m" : ""}\n`);
9
+ },
10
+ warn(text) {
11
+ process.stderr.write(`${useColor ? "\x1b[33m" : ""}${text}${useColor ? "\x1b[0m" : ""}\n`);
12
+ },
13
+ error(text) {
14
+ process.stderr.write(`${useColor ? "\x1b[31m" : ""}${text}${useColor ? "\x1b[0m" : ""}\n`);
15
+ },
16
+ kv(key, value) {
17
+ process.stdout.write(`${key.padEnd(14)} ${value}\n`);
18
+ },
19
+ json(value) {
20
+ process.stdout.write(`${JSON.stringify(value, null, 2)}\n`);
21
+ },
22
+ };
23
+ }
24
+ //# sourceMappingURL=printer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"printer.js","sourceRoot":"","sources":["../../../src/cli/ui/printer.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,aAAa,CAAC,UAA0B,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;IAC9G,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAA;IAE9B,OAAO;QACL,IAAI,CAAC,IAAI,GAAG,EAAE;YACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAA;QACnC,CAAC;QACD,IAAI,CAAC,IAAY;YACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QAC5F,CAAC;QACD,IAAI,CAAC,IAAY;YACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QAC5F,CAAC;QACD,KAAK,CAAC,IAAY;YAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QAC5F,CAAC;QACD,EAAE,CAAC,GAAW,EAAE,KAAa;YAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;QACtD,CAAC;QACD,IAAI,CAAC,KAAc;YACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;QAC7D,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export type SpinnerHandle = {
2
+ stop(finalLabel?: string): void;
3
+ };
4
+ export declare function startSpinner(label: string): SpinnerHandle;
5
+ //# sourceMappingURL=spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/spinner.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAChC,CAAA;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CA8BzD"}
@@ -0,0 +1,30 @@
1
+ export function startSpinner(label) {
2
+ if (!process.stdout.isTTY || process.env.NO_COLOR) {
3
+ process.stdout.write(`${label}…\n`);
4
+ return {
5
+ stop(finalLabel) {
6
+ if (finalLabel) {
7
+ process.stdout.write(`${finalLabel}\n`);
8
+ }
9
+ },
10
+ };
11
+ }
12
+ const frames = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
13
+ let index = 0;
14
+ process.stdout.write("\x1b[?25l");
15
+ const timer = setInterval(() => {
16
+ process.stdout.write(`\r${frames[index % frames.length]} ${label}`);
17
+ index += 1;
18
+ }, 80);
19
+ return {
20
+ stop(finalLabel) {
21
+ clearInterval(timer);
22
+ process.stdout.write("\r\x1b[2K");
23
+ process.stdout.write("\x1b[?25h");
24
+ if (finalLabel) {
25
+ process.stdout.write(`${finalLabel}\n`);
26
+ }
27
+ },
28
+ };
29
+ }
30
+ //# sourceMappingURL=spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../../src/cli/ui/spinner.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,CAAA;QACnC,OAAO;YACL,IAAI,CAAC,UAAU;gBACb,IAAI,UAAU,EAAE,CAAC;oBACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,IAAI,CAAC,CAAA;gBACzC,CAAC;YACH,CAAC;SACF,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;IACjE,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACjC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,CAAA;QACnE,KAAK,IAAI,CAAC,CAAA;IACZ,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO;QACL,IAAI,CAAC,UAAU;YACb,aAAa,CAAC,KAAK,CAAC,CAAA;YACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;YACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;YACjC,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,IAAI,CAAC,CAAA;YACzC,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ export type TextWriter = {
2
+ line(text?: string): void;
3
+ };
4
+ export declare function createBufferWriter(): TextWriter & {
5
+ lines: string[];
6
+ };
7
+ export declare function createStdoutWriter(): TextWriter;
8
+ //# sourceMappingURL=text-writer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-writer.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/text-writer.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B,CAAA;AAED,wBAAgB,kBAAkB,IAAI,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAQrE;AAED,wBAAgB,kBAAkB,IAAI,UAAU,CAM/C"}
@@ -0,0 +1,17 @@
1
+ export function createBufferWriter() {
2
+ const lines = [];
3
+ return {
4
+ lines,
5
+ line(text = "") {
6
+ lines.push(text);
7
+ },
8
+ };
9
+ }
10
+ export function createStdoutWriter() {
11
+ return {
12
+ line(text = "") {
13
+ process.stdout.write(`${text}\n`);
14
+ },
15
+ };
16
+ }
17
+ //# sourceMappingURL=text-writer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-writer.js","sourceRoot":"","sources":["../../../src/cli/ui/text-writer.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,kBAAkB;IAChC,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,OAAO;QACL,KAAK;QACL,IAAI,CAAC,IAAI,GAAG,EAAE;YACZ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClB,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,IAAI,CAAC,IAAI,GAAG,EAAE;YACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAA;QACnC,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,30 @@
1
+ export type ApprovalMode = "preview-first" | "trusted";
2
+ export type SandboxMode = "read-only" | "workspace-write";
3
+ export type PatzeConfigFile = {
4
+ api?: string;
5
+ token?: string;
6
+ userId?: string;
7
+ approvalMode?: ApprovalMode;
8
+ sandboxMode?: SandboxMode;
9
+ defaultAllow?: string[];
10
+ defaultDeny?: string[];
11
+ };
12
+ export type ResolvedConfig = {
13
+ api: string | null;
14
+ token: string | null;
15
+ userId: string | null;
16
+ approvalMode: ApprovalMode;
17
+ sandboxMode: SandboxMode;
18
+ defaultAllow: string[];
19
+ defaultDeny: string[];
20
+ sources: {
21
+ globalPath: string | null;
22
+ projectPath: string | null;
23
+ env: string[];
24
+ };
25
+ };
26
+ export declare function globalConfigPath(): string;
27
+ export declare function findProjectConfigPath(cwd: string): string | null;
28
+ export declare function loadConfig(cwd?: string): ResolvedConfig;
29
+ export declare function maskSecret(value: string | null): string;
30
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,SAAS,CAAA;AACtD,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,iBAAiB,CAAA;AAEzD,MAAM,MAAM,eAAe,GAAG;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,YAAY,EAAE,YAAY,CAAA;IAC1B,WAAW,EAAE,WAAW,CAAA;IACxB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;QACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;QAC1B,GAAG,EAAE,MAAM,EAAE,CAAA;KACd,CAAA;CACF,CAAA;AAOD,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkBhE;AA0DD,wBAAgB,UAAU,CAAC,GAAG,SAAgB,GAAG,cAAc,CA2C9D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAQvD"}
@@ -0,0 +1,133 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { dirname, join, resolve } from "node:path";
4
+ const GLOBAL_CONFIG_PATH = join(homedir(), ".patze", "config.json");
5
+ const PROJECT_CONFIG_NAMES = [".patze/config.json", ".patze/cli.json"];
6
+ const DEFAULT_DENY = ["**/.env", "**/.env.*", "**/node_modules/**", "**/.git/**"];
7
+ export function globalConfigPath() {
8
+ return GLOBAL_CONFIG_PATH;
9
+ }
10
+ export function findProjectConfigPath(cwd) {
11
+ let current = resolve(cwd);
12
+ const home = resolve(homedir());
13
+ while (true) {
14
+ for (const name of PROJECT_CONFIG_NAMES) {
15
+ const candidate = join(current, name);
16
+ if (existsSync(candidate)) {
17
+ return candidate;
18
+ }
19
+ }
20
+ const parent = dirname(current);
21
+ if (parent === current || current === home) {
22
+ return null;
23
+ }
24
+ current = parent;
25
+ }
26
+ }
27
+ function readJsonFile(path) {
28
+ try {
29
+ const raw = readFileSync(path, "utf8");
30
+ const parsed = JSON.parse(raw);
31
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
32
+ return {};
33
+ }
34
+ return parsed;
35
+ }
36
+ catch {
37
+ return {};
38
+ }
39
+ }
40
+ function pickString(value) {
41
+ return typeof value === "string" && value.trim() ? value.trim() : null;
42
+ }
43
+ function pickStringArray(value) {
44
+ if (!Array.isArray(value)) {
45
+ return [];
46
+ }
47
+ return value.filter((item) => typeof item === "string" && item.trim().length > 0);
48
+ }
49
+ function normalizeConfig(raw) {
50
+ return {
51
+ api: pickString(raw.api) ?? undefined,
52
+ token: pickString(raw.token) ?? undefined,
53
+ userId: pickString(raw.userId) ?? undefined,
54
+ approvalMode: raw.approvalMode === "trusted" || raw.approvalMode === "preview-first"
55
+ ? raw.approvalMode
56
+ : undefined,
57
+ sandboxMode: raw.sandboxMode === "read-only" || raw.sandboxMode === "workspace-write"
58
+ ? raw.sandboxMode
59
+ : undefined,
60
+ defaultAllow: pickStringArray(raw.defaultAllow),
61
+ defaultDeny: pickStringArray(raw.defaultDeny),
62
+ };
63
+ }
64
+ function mergeConfigs(...layers) {
65
+ const merged = {};
66
+ for (const layer of layers) {
67
+ if (layer.api)
68
+ merged.api = layer.api;
69
+ if (layer.token)
70
+ merged.token = layer.token;
71
+ if (layer.userId)
72
+ merged.userId = layer.userId;
73
+ if (layer.approvalMode)
74
+ merged.approvalMode = layer.approvalMode;
75
+ if (layer.sandboxMode)
76
+ merged.sandboxMode = layer.sandboxMode;
77
+ if (layer.defaultAllow?.length)
78
+ merged.defaultAllow = layer.defaultAllow;
79
+ if (layer.defaultDeny?.length)
80
+ merged.defaultDeny = layer.defaultDeny;
81
+ }
82
+ return merged;
83
+ }
84
+ export function loadConfig(cwd = process.cwd()) {
85
+ const envKeys = [];
86
+ const globalPath = existsSync(GLOBAL_CONFIG_PATH) ? GLOBAL_CONFIG_PATH : null;
87
+ const projectPath = findProjectConfigPath(cwd);
88
+ const fileLayers = [];
89
+ if (globalPath) {
90
+ fileLayers.push(normalizeConfig(readJsonFile(globalPath)));
91
+ }
92
+ if (projectPath) {
93
+ fileLayers.push(normalizeConfig(readJsonFile(projectPath)));
94
+ }
95
+ const envLayer = {};
96
+ if (process.env.PATZE_CODE_API?.trim()) {
97
+ envLayer.api = process.env.PATZE_CODE_API.trim();
98
+ envKeys.push("PATZE_CODE_API");
99
+ }
100
+ if (process.env.PATZE_CODE_TOKEN?.trim()) {
101
+ envLayer.token = process.env.PATZE_CODE_TOKEN.trim();
102
+ envKeys.push("PATZE_CODE_TOKEN");
103
+ }
104
+ if (process.env.PATZE_CODE_USER_ID?.trim()) {
105
+ envLayer.userId = process.env.PATZE_CODE_USER_ID.trim();
106
+ envKeys.push("PATZE_CODE_USER_ID");
107
+ }
108
+ const merged = normalizeConfig(mergeConfigs(...fileLayers, envLayer));
109
+ return {
110
+ api: merged.api ?? null,
111
+ token: merged.token ?? null,
112
+ userId: merged.userId ?? null,
113
+ approvalMode: merged.approvalMode ?? "preview-first",
114
+ sandboxMode: merged.sandboxMode ?? "read-only",
115
+ defaultAllow: merged.defaultAllow ?? [],
116
+ defaultDeny: (merged.defaultDeny && merged.defaultDeny.length > 0) ? merged.defaultDeny : [...DEFAULT_DENY],
117
+ sources: {
118
+ globalPath,
119
+ projectPath,
120
+ env: envKeys,
121
+ },
122
+ };
123
+ }
124
+ export function maskSecret(value) {
125
+ if (!value) {
126
+ return "not set";
127
+ }
128
+ if (value.length <= 8) {
129
+ return "••••";
130
+ }
131
+ return `${value.slice(0, 4)}…${value.slice(-4)}`;
132
+ }
133
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { ApplyResult } from "../cli/interactive/session-state.js";
2
+ export type VerifyStatus = "passed" | "failed" | "unavailable";
3
+ export type VerifyCheck = {
4
+ relativePath: string;
5
+ ok: boolean;
6
+ detail: string;
7
+ };
8
+ export type LocalApplyVerification = {
9
+ status: VerifyStatus;
10
+ checks: VerifyCheck[];
11
+ lines: string[];
12
+ exitCode: number;
13
+ issues: string[];
14
+ };
15
+ export type VerifySessionSnapshot = {
16
+ lastApply: ApplyResult | null;
17
+ approvalGateActive: boolean;
18
+ pendingApprovedPatch: boolean;
19
+ gateConsumed: boolean;
20
+ };
21
+ export declare function verifyAppliedPatch(input: {
22
+ cwd: string;
23
+ lastApply: ApplyResult | null;
24
+ approvalGateActive: boolean;
25
+ pendingApprovedPatch: boolean;
26
+ gateConsumed: boolean;
27
+ }): LocalApplyVerification;
28
+ //# sourceMappingURL=apply-verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-verify.d.ts","sourceRoot":"","sources":["../../src/runtime/apply-verify.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAqB,WAAW,EAAE,MAAM,qCAAqC,CAAA;AAGzF,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa,CAAA;AAE9D,MAAM,MAAM,WAAW,GAAG;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,EAAE,EAAE,OAAO,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,EAAE,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,WAAW,GAAG,IAAI,CAAA;IAC7B,kBAAkB,EAAE,OAAO,CAAA;IAC3B,oBAAoB,EAAE,OAAO,CAAA;IAC7B,YAAY,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,WAAW,GAAG,IAAI,CAAA;IAC7B,kBAAkB,EAAE,OAAO,CAAA;IAC3B,oBAAoB,EAAE,OAAO,CAAA;IAC7B,YAAY,EAAE,OAAO,CAAA;CACtB,GAAG,sBAAsB,CA4DzB"}
@@ -0,0 +1,180 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { loadConfig } from "../config/config.js";
3
+ import { hashFileContent } from "./content-hash.js";
4
+ import { validatePatchPath } from "./patch-path-guard.js";
5
+ export function verifyAppliedPatch(input) {
6
+ if (!input.lastApply) {
7
+ return unavailable([
8
+ "No apply result in this session.",
9
+ "Run /apply after /diff, /approve, and /permissions edit-with-approval.",
10
+ ]);
11
+ }
12
+ const checks = [];
13
+ const config = loadConfig(input.cwd);
14
+ const deny = config.defaultDeny;
15
+ if (input.approvalGateActive) {
16
+ checks.push({
17
+ relativePath: "(session)",
18
+ ok: false,
19
+ detail: "Approval gate is still active after apply.",
20
+ });
21
+ }
22
+ if (input.pendingApprovedPatch) {
23
+ checks.push({
24
+ relativePath: "(session)",
25
+ ok: false,
26
+ detail: "Pending unapproved patch action remains in session.",
27
+ });
28
+ }
29
+ if (!input.gateConsumed) {
30
+ checks.push({
31
+ relativePath: "(session)",
32
+ ok: false,
33
+ detail: "Approval gate was not marked consumed after apply.",
34
+ });
35
+ }
36
+ if (!input.lastApply.gateConsumed) {
37
+ checks.push({
38
+ relativePath: "(session)",
39
+ ok: false,
40
+ detail: "Apply result missing gateConsumed marker.",
41
+ });
42
+ }
43
+ for (const file of input.lastApply.files) {
44
+ checks.push(...verifyAppliedFile(input.cwd, deny, file));
45
+ }
46
+ if (!input.lastApply.files.length) {
47
+ for (const relativePath of input.lastApply.filesWritten) {
48
+ checks.push(...verifyLegacyFile(input.cwd, deny, relativePath));
49
+ }
50
+ }
51
+ const failed = checks.filter((check) => !check.ok);
52
+ if (failed.length) {
53
+ return failedResult(checks, failed);
54
+ }
55
+ return passedResult(input.lastApply, checks);
56
+ }
57
+ function verifyAppliedFile(cwd, deny, file) {
58
+ const validated = validatePatchPath(file.relativePath, cwd, deny);
59
+ if (!validated.ok) {
60
+ return [
61
+ {
62
+ relativePath: file.relativePath,
63
+ ok: false,
64
+ detail: validated.reason,
65
+ },
66
+ ];
67
+ }
68
+ if (file.action === "delete") {
69
+ const exists = existsSync(validated.absolutePath);
70
+ return [
71
+ {
72
+ relativePath: file.relativePath,
73
+ ok: !exists,
74
+ detail: exists ? "File still exists after delete apply." : "Deleted as expected.",
75
+ },
76
+ ];
77
+ }
78
+ if (!existsSync(validated.absolutePath)) {
79
+ return [
80
+ {
81
+ relativePath: file.relativePath,
82
+ ok: false,
83
+ detail: "Expected file is missing.",
84
+ },
85
+ ];
86
+ }
87
+ const current = readFileSync(validated.absolutePath, "utf8");
88
+ const currentHash = hashFileContent(current);
89
+ const hashOk = file.afterHash ? currentHash === file.afterHash : true;
90
+ return [
91
+ {
92
+ relativePath: file.relativePath,
93
+ ok: hashOk,
94
+ detail: hashOk
95
+ ? "Content hash matches apply result."
96
+ : `Content hash mismatch (expected ${file.afterHash}, got ${currentHash}).`,
97
+ },
98
+ ];
99
+ }
100
+ function verifyLegacyFile(cwd, deny, relativePath) {
101
+ const validated = validatePatchPath(relativePath, cwd, deny);
102
+ if (!validated.ok) {
103
+ return [{ relativePath, ok: false, detail: validated.reason }];
104
+ }
105
+ if (!existsSync(validated.absolutePath)) {
106
+ return [{ relativePath, ok: false, detail: "Expected file is missing." }];
107
+ }
108
+ return [{ relativePath, ok: true, detail: "File exists inside workspace." }];
109
+ }
110
+ function passedResult(lastApply, checks) {
111
+ const files = checks
112
+ .filter((check) => check.relativePath !== "(session)")
113
+ .map((check) => check.relativePath);
114
+ return {
115
+ status: "passed",
116
+ checks,
117
+ exitCode: 0,
118
+ issues: [],
119
+ lines: [
120
+ "Patze verify",
121
+ "",
122
+ "status: passed",
123
+ `applied_at: ${lastApply.appliedAt}`,
124
+ "",
125
+ "files checked:",
126
+ ...files.map((file) => ` - ${file}`),
127
+ "",
128
+ "Safety",
129
+ " No shell commands executed.",
130
+ " Verification was local and read-only.",
131
+ ],
132
+ };
133
+ }
134
+ function failedResult(checks, failed) {
135
+ const issues = failed.map((check) => `${check.relativePath}: ${check.detail}`);
136
+ return {
137
+ status: "failed",
138
+ checks,
139
+ exitCode: 2,
140
+ issues,
141
+ lines: [
142
+ "Patze verify",
143
+ "",
144
+ "status: failed",
145
+ "",
146
+ "issues:",
147
+ ...issues.map((issue) => ` - ${issue}`),
148
+ "",
149
+ "Recommended next steps",
150
+ " /diff — review latest proposed patch",
151
+ " /reject — clear pending gate and drift recovery",
152
+ " manual review — file changed after apply",
153
+ "",
154
+ "Safety",
155
+ " No shell commands executed.",
156
+ " Verification was local and read-only.",
157
+ " Session remains open — review files before continuing.",
158
+ ],
159
+ };
160
+ }
161
+ function unavailable(reasonLines) {
162
+ return {
163
+ status: "unavailable",
164
+ checks: [],
165
+ exitCode: 2,
166
+ issues: [],
167
+ lines: [
168
+ "Patze verify",
169
+ "",
170
+ "status: unavailable",
171
+ "",
172
+ ...reasonLines,
173
+ "",
174
+ "Safety",
175
+ " No shell commands executed.",
176
+ " Verification was local and read-only.",
177
+ ],
178
+ };
179
+ }
180
+ //# sourceMappingURL=apply-verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-verify.js","sourceRoot":"","sources":["../../src/runtime/apply-verify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { ApprovalMode } from "../config/config.js";
2
+ export type ApprovalDecision = {
3
+ mode: ApprovalMode;
4
+ autoApply: false;
5
+ requiresExplicitApproval: boolean;
6
+ reason: string;
7
+ };
8
+ export declare function resolveApproval(mode: ApprovalMode): ApprovalDecision;
9
+ export declare function assertMutationAllowed(decision: ApprovalDecision): void;
10
+ //# sourceMappingURL=approvals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../src/runtime/approvals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,YAAY,CAAA;IAClB,SAAS,EAAE,KAAK,CAAA;IAChB,wBAAwB,EAAE,OAAO,CAAA;IACjC,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,gBAAgB,CAgBpE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAItE"}
@@ -0,0 +1,22 @@
1
+ export function resolveApproval(mode) {
2
+ if (mode === "trusted") {
3
+ return {
4
+ mode,
5
+ autoApply: false,
6
+ requiresExplicitApproval: true,
7
+ reason: "Patze server remains authoritative; trusted only skips local preview friction later.",
8
+ };
9
+ }
10
+ return {
11
+ mode: "preview-first",
12
+ autoApply: false,
13
+ requiresExplicitApproval: true,
14
+ reason: "Preview-first is the default safe posture.",
15
+ };
16
+ }
17
+ export function assertMutationAllowed(decision) {
18
+ if (decision.autoApply) {
19
+ throw new Error("Auto-apply is disabled in Patze CLI.");
20
+ }
21
+ }
22
+ //# sourceMappingURL=approvals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvals.js","sourceRoot":"","sources":["../../src/runtime/approvals.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,eAAe,CAAC,IAAkB;IAChD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO;YACL,IAAI;YACJ,SAAS,EAAE,KAAK;YAChB,wBAAwB,EAAE,IAAI;YAC9B,MAAM,EAAE,sFAAsF;SAC/F,CAAA;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,eAAe;QACrB,SAAS,EAAE,KAAK;QAChB,wBAAwB,EAAE,IAAI;QAC9B,MAAM,EAAE,4CAA4C;KACrD,CAAA;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAA0B;IAC9D,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;IACzD,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function hashContent(content: string): string;
2
+ export declare function hashFileContent(content: string): string;
3
+ //# sourceMappingURL=content-hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-hash.d.ts","sourceRoot":"","sources":["../../src/runtime/content-hash.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD"}
@@ -0,0 +1,8 @@
1
+ import { createHash } from "node:crypto";
2
+ export function hashContent(content) {
3
+ return createHash("sha256").update(content, "utf8").digest("hex").slice(0, 16);
4
+ }
5
+ export function hashFileContent(content) {
6
+ return hashContent(content.replace(/\r\n/g, "\n"));
7
+ }
8
+ //# sourceMappingURL=content-hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-hash.js","sourceRoot":"","sources":["../../src/runtime/content-hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AAChF,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;AACpD,CAAC"}