@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,125 @@
1
+ import { maskDigest } from "../../runtime/digest-mask.js";
2
+ import { formatSessionPermissionLine } from "../interactive/permissions-command.js";
3
+ export function formatTrustLoopSnapshotLines(session) {
4
+ const lines = ["Trust loop (session, redacted):"];
5
+ lines.push(` permission: ${formatSessionPermissionLine(session.getPermissionMode())}`);
6
+ const goal = session.getCurrentGoal();
7
+ lines.push(` goal: ${goal ?? "(none)"}`);
8
+ const pending = session.getPendingAction();
9
+ if (pending) {
10
+ const digest = pending.artifactDigest || pending.previewDigest
11
+ ? ` · artifact ${maskDigest(pending.artifactDigest)}`
12
+ : "";
13
+ lines.push(` pending: ${pending.kind} · ${pending.objective}${digest}`);
14
+ }
15
+ else {
16
+ lines.push(" pending: (none)");
17
+ }
18
+ lines.push(...formatDiffApprovalSection(session));
19
+ lines.push(...formatApplyHistorySection(session));
20
+ lines.push(...formatLastApplySection(session));
21
+ lines.push(...formatLastVerifySection(session));
22
+ lines.push(...formatDriftRecoverySection(session));
23
+ return lines;
24
+ }
25
+ function formatDiffApprovalSection(session) {
26
+ const lines = [];
27
+ const diffReview = session.getDiffReviewState();
28
+ const approval = session.getApprovalGate();
29
+ if (diffReview) {
30
+ lines.push(" diff review:");
31
+ lines.push(` reviewed: yes · patch: ${diffReview.hasPatchBody ? "yes" : "no"}`);
32
+ lines.push(` artifact: ${maskDigest(diffReview.artifactDigest)}`);
33
+ lines.push(` preview: ${maskDigest(diffReview.previewDigest)}`);
34
+ if (diffReview.filesChanged.length) {
35
+ lines.push(` files: ${formatFileList(diffReview.filesChanged)}`);
36
+ }
37
+ }
38
+ else {
39
+ lines.push(" diff review: (not reviewed this session)");
40
+ }
41
+ if (approval) {
42
+ lines.push(" approval gate:");
43
+ lines.push(` action: ${approval.action}`);
44
+ lines.push(` artifact: ${maskDigest(approval.artifactDigest)}`);
45
+ lines.push(` preview: ${maskDigest(approval.previewDigest)}`);
46
+ lines.push(` files: ${formatFileList(approval.filesChanged)}`);
47
+ lines.push(` approved_at: ${approval.approvedAt}`);
48
+ }
49
+ else {
50
+ lines.push(" approval gate: (none)");
51
+ }
52
+ return lines;
53
+ }
54
+ function formatApplyHistorySection(session) {
55
+ const history = session.getApplyHistory();
56
+ if (!history.length) {
57
+ return [" apply history: (none this process)"];
58
+ }
59
+ const lines = [` apply history: ${history.length} record(s) (local process only)`];
60
+ const recent = history.slice(-3);
61
+ for (const entry of recent) {
62
+ lines.push(` - ${maskDigest(entry.artifactDigest)} · ${entry.filesWritten.length} file(s) · ${entry.appliedAt}`);
63
+ }
64
+ if (history.length > recent.length) {
65
+ lines.push(` … ${history.length - recent.length} earlier record(s) omitted`);
66
+ }
67
+ return lines;
68
+ }
69
+ function formatLastApplySection(session) {
70
+ const applied = session.getLastApplyResult();
71
+ if (!applied) {
72
+ return [" last apply: (none)"];
73
+ }
74
+ const lines = [
75
+ " last apply:",
76
+ ` artifact: ${maskDigest(applied.artifactDigest)}`,
77
+ ` files written: ${formatFileList(applied.filesWritten)}`,
78
+ ` applied_at: ${applied.appliedAt}`,
79
+ ` gate_consumed: ${applied.gateConsumed ? "yes" : "no"}`,
80
+ ];
81
+ return lines;
82
+ }
83
+ function formatLastVerifySection(session) {
84
+ const verified = session.getLastVerifyResult();
85
+ if (!verified) {
86
+ return [" last verify: (none)"];
87
+ }
88
+ const lines = [
89
+ " last verify:",
90
+ ` status: ${verified.status}`,
91
+ ` verified_at: ${verified.checkedAt}`,
92
+ ];
93
+ if (verified.filesChecked.length) {
94
+ lines.push(` files checked: ${formatFileList(verified.filesChecked)}`);
95
+ }
96
+ if (verified.issues.length) {
97
+ lines.push(" issues:");
98
+ for (const issue of verified.issues) {
99
+ lines.push(` - ${issue}`);
100
+ }
101
+ }
102
+ return lines;
103
+ }
104
+ function formatDriftRecoverySection(session) {
105
+ if (!session.isVerifyDriftBlocked()) {
106
+ return [];
107
+ }
108
+ return [
109
+ " drift recovery: active",
110
+ " Approval/apply blocked until /reject or /verify passes.",
111
+ ];
112
+ }
113
+ function formatFileList(files) {
114
+ if (!files.length) {
115
+ return "(none)";
116
+ }
117
+ if (files.length === 1) {
118
+ return files[0];
119
+ }
120
+ if (files.length <= 3) {
121
+ return files.join(", ");
122
+ }
123
+ return `${files.slice(0, 2).join(", ")} (+${files.length - 2} more)`;
124
+ }
125
+ //# sourceMappingURL=trust-loop-snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trust-loop-snapshot.js","sourceRoot":"","sources":["../../../src/cli/commands/trust-loop-snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function formatVerifyDriftBlockedLines(): string[];
2
+ //# sourceMappingURL=verify-drift-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-drift-guard.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/verify-drift-guard.ts"],"names":[],"mappings":"AAAA,wBAAgB,6BAA6B,IAAI,MAAM,EAAE,CASxD"}
@@ -0,0 +1,11 @@
1
+ export function formatVerifyDriftBlockedLines() {
2
+ return [
3
+ "Blocked (fail-closed).",
4
+ "",
5
+ "Last /verify failed due to drift.",
6
+ "Fix files and re-run /verify, or /reject to clear recovery state.",
7
+ "Approval and apply stay disabled until recovery completes.",
8
+ "No files modified.",
9
+ ];
10
+ }
11
+ //# sourceMappingURL=verify-drift-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-drift-guard.js","sourceRoot":"","sources":["../../../src/cli/commands/verify-drift-guard.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,6BAA6B;IAC3C,OAAO;QACL,wBAAwB;QACxB,EAAE;QACF,mCAAmC;QACnC,mEAAmE;QACnE,4DAA4D;QAC5D,oBAAoB;KACrB,CAAA;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { InteractiveSession } from "../interactive/session.js";
2
+ export type VerifyCommandResult = {
3
+ exitCode: number;
4
+ lines: string[];
5
+ status: "passed" | "failed" | "unavailable";
6
+ };
7
+ export declare function runVerifyCommand(session: InteractiveSession, options?: {
8
+ now?: () => string;
9
+ }): VerifyCommandResult;
10
+ export declare function formatVerifyDisabledReport(): string[];
11
+ export declare function formatVerifySummaryOnly(): string[];
12
+ //# sourceMappingURL=verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/verify.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAEnE,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,aAAa,CAAA;CAC5C,CAAA;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,kBAAkB,EAC3B,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAO,GACnC,mBAAmB,CAuCrB;AAED,wBAAgB,0BAA0B,IAAI,MAAM,EAAE,CAerD;AAED,wBAAgB,uBAAuB,IAAI,MAAM,EAAE,CAMlD"}
@@ -0,0 +1,62 @@
1
+ import { verifyAppliedPatch } from "../../runtime/apply-verify.js";
2
+ export function runVerifyCommand(session, options = {}) {
3
+ const lastApply = session.getLastApplyResult();
4
+ const gate = session.getApprovalGate();
5
+ const pending = session.getPendingAction();
6
+ const gateKey = lastApply
7
+ ? session.buildGateKey(lastApply.artifactDigest, lastApply.previewDigest)
8
+ : null;
9
+ const result = verifyAppliedPatch({
10
+ cwd: session.cwd,
11
+ lastApply,
12
+ approvalGateActive: gate !== null,
13
+ pendingApprovedPatch: pending?.kind === "approved_apply_patch",
14
+ gateConsumed: gateKey ? session.isGateConsumed(gateKey) : false,
15
+ });
16
+ if (result.status !== "unavailable") {
17
+ const checkedAt = options.now?.() ?? new Date().toISOString();
18
+ session.setLastVerifyResult({
19
+ status: result.status,
20
+ checkedAt,
21
+ filesChecked: result.checks
22
+ .filter((check) => check.relativePath !== "(session)")
23
+ .map((check) => check.relativePath),
24
+ issues: result.issues,
25
+ });
26
+ if (result.status === "failed" && lastApply) {
27
+ session.markVerifyDriftBlocked(lastApply.artifactDigest, lastApply.previewDigest);
28
+ }
29
+ else if (result.status === "passed") {
30
+ session.clearVerifyDriftBlocked();
31
+ }
32
+ }
33
+ return {
34
+ exitCode: result.exitCode,
35
+ lines: result.lines,
36
+ status: result.status,
37
+ };
38
+ }
39
+ export function formatVerifyDisabledReport() {
40
+ return [
41
+ "Patze code verify (non-interactive)",
42
+ "",
43
+ "patze code verify prints a local-safe summary only.",
44
+ "Full verification requires an interactive session with a prior /apply.",
45
+ "",
46
+ "Use inside `patze`:",
47
+ " /apply",
48
+ " /verify",
49
+ "",
50
+ "No shell commands. No npm test. No network.",
51
+ "",
52
+ "Command-based project test/lint verify remains a future gated capability.",
53
+ ];
54
+ }
55
+ export function formatVerifySummaryOnly() {
56
+ return [
57
+ ...formatVerifyDisabledReport(),
58
+ "",
59
+ "status: unavailable (no interactive apply session)",
60
+ ];
61
+ }
62
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/cli/commands/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AASlE,MAAM,UAAU,gBAAgB,CAC9B,OAA2B,EAC3B,UAAkC,EAAE;IAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAA;IAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,eAAe,EAAE,CAAA;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAA;IAC1C,MAAM,OAAO,GAAG,SAAS;QACvB,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,aAAa,CAAC;QACzE,CAAC,CAAC,IAAI,CAAA;IAER,MAAM,MAAM,GAAG,kBAAkB,CAAC;QAChC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,SAAS;QACT,kBAAkB,EAAE,IAAI,KAAK,IAAI;QACjC,oBAAoB,EAAE,OAAO,EAAE,IAAI,KAAK,sBAAsB;QAC9D,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK;KAChE,CAAC,CAAA;IAEF,IAAI,MAAM,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC7D,OAAO,CAAC,mBAAmB,CAAC;YAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS;YACT,YAAY,EAAE,MAAM,CAAC,MAAM;iBACxB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,KAAK,WAAW,CAAC;iBACrD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;YACrC,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAA;QAEF,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,SAAS,EAAE,CAAC;YAC5C,OAAO,CAAC,sBAAsB,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,aAAa,CAAC,CAAA;QACnF,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACtC,OAAO,CAAC,uBAAuB,EAAE,CAAA;QACnC,CAAC;IACH,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO;QACL,qCAAqC;QACrC,EAAE;QACF,qDAAqD;QACrD,wEAAwE;QACxE,EAAE;QACF,qBAAqB;QACrB,UAAU;QACV,WAAW;QACX,EAAE;QACF,6CAA6C;QAC7C,EAAE;QACF,2EAA2E;KAC5E,CAAA;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,GAAG,0BAA0B,EAAE;QAC/B,EAAE;QACF,oDAAoD;KACrD,CAAA;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Printer } from "./ui/printer.js";
2
+ export declare function printHelp(printer: Printer): void;
3
+ //# sourceMappingURL=help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAE9C,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkChD"}
@@ -0,0 +1,36 @@
1
+ export function printHelp(printer) {
2
+ printer.line("Patze Code — local terminal coding agent (internal beta)");
3
+ printer.line("");
4
+ printer.line("Usage:");
5
+ printer.line(" patze Interactive shell (trust loop)");
6
+ printer.line(" patze --help Show help");
7
+ printer.line(" patze --version Show version");
8
+ printer.line(" patze status [--check] Local posture + trust-loop snapshot");
9
+ printer.line(" patze doctor [--check] Read-only diagnostics (no network by default)");
10
+ printer.line(" patze login <api> <token> <id> Save credentials locally");
11
+ printer.line(' patze goal "<task>" --dry-run Plan without mutation');
12
+ printer.line(" patze code inspect|plan|diff Read-only / preview commands");
13
+ printer.line(" patze code apply|verify Disabled or help-only — use /apply /verify in shell");
14
+ printer.line(" patze runs list|open <id> (planned)");
15
+ printer.line(" patze config (planned)");
16
+ printer.line("");
17
+ printer.line("Interactive trust loop:");
18
+ printer.line(" prompt → inspect → plan → diff → permissions → approve → apply → verify");
19
+ printer.line("");
20
+ printer.line("Slash commands (inside patze):");
21
+ printer.line(" /help /status /context /goal /inspect /plan /permissions /tools");
22
+ printer.line(" /diff /approve /apply /verify /reject /reset /clear /exit");
23
+ printer.line("");
24
+ printer.line("Safety:");
25
+ printer.line(" • No auto-apply · no --yes · no shell verify");
26
+ printer.line(" • Apply is interactive-only with typed confirmation");
27
+ printer.line(" • full-auto permission is forbidden");
28
+ printer.line(" • Session digests are masked in output");
29
+ printer.line("");
30
+ printer.line("Environment:");
31
+ printer.line(" PATZE_CODE_API, PATZE_CODE_TOKEN, PATZE_CODE_USER_ID");
32
+ printer.line("");
33
+ printer.line("Docs: docs/trust-loop.md · docs/safety-model.md · docs/internal-beta.md");
34
+ printer.line(" docs/beta-tester-checklist.md · docs/beta-feedback-template.md");
35
+ }
36
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,SAAS,CAAC,OAAgB;IACxC,OAAO,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;IACxE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtB,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAA;IAC/E,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;IAC1D,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAA;IAC7D,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAA;IACpF,OAAO,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAA;IAC9F,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAA;IACzE,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAA;IACtE,OAAO,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAA;IAC7E,OAAO,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAA;IACpG,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;IAC1D,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;IAC1D,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;IACvC,OAAO,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAA;IACzF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;IAC9C,OAAO,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAA;IACjF,OAAO,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAA;IAC3E,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACvB,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;IAC9D,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAA;IACrE,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA;IACrD,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;IACxD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC5B,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAA;IACtE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAA;IACvF,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAA;AACtF,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { InspectSummary } from "./session-state.js";
2
+ import type { StoredPreviewResult } from "./session-state.js";
3
+ export type AgentTurnModel = {
4
+ objective: string;
5
+ inspectSummary: InspectSummary;
6
+ planSource: "server" | "local";
7
+ previewResult: StoredPreviewResult;
8
+ permissionMode: string;
9
+ permissionLabel: string;
10
+ toolSteps: string[];
11
+ authReady: boolean;
12
+ mutationsEnabled: false;
13
+ };
14
+ export declare function formatAgentTurnLines(model: AgentTurnModel): string[];
15
+ //# sourceMappingURL=agent-turn-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-turn-format.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn-format.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAE7D,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,EAAE,QAAQ,GAAG,OAAO,CAAA;IAC9B,aAAa,EAAE,mBAAmB,CAAA;IAClC,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,gBAAgB,EAAE,KAAK,CAAA;CACxB,CAAA;AAiBD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,EAAE,CA2CpE"}
@@ -0,0 +1,70 @@
1
+ import { formatInspectSummaryCompact } from "../commands/inspect-format.js";
2
+ import { formatPreviewResponseLines } from "../commands/plan-format.js";
3
+ function useColor() {
4
+ return !process.env.NO_COLOR;
5
+ }
6
+ function sectionTitle(title) {
7
+ if (!useColor()) {
8
+ return title;
9
+ }
10
+ return `\x1b[1m${title}\x1b[0m`;
11
+ }
12
+ function bullet(line) {
13
+ return ` - ${line}`;
14
+ }
15
+ export function formatAgentTurnLines(model) {
16
+ const lines = [
17
+ sectionTitle("Task"),
18
+ bullet(`accepted: ${model.objective}`),
19
+ "",
20
+ sectionTitle("Thinking"),
21
+ bullet("Understand the request within the current workspace boundaries."),
22
+ bullet(model.authReady
23
+ ? "Auth is ready — request a server preview digest."
24
+ : "Auth is incomplete — stay local with a dry-run plan."),
25
+ bullet("Do not mutate files or shell state in this turn."),
26
+ "",
27
+ sectionTitle("Tools"),
28
+ ...model.toolSteps.map((step) => bullet(step)),
29
+ "",
30
+ sectionTitle("Context"),
31
+ ...formatInspectSummaryCompact(model.inspectSummary).map((line) => bullet(line)),
32
+ "",
33
+ sectionTitle("Plan"),
34
+ bullet(`source: ${model.planSource === "server" ? "server preview" : "local dry-run"}`),
35
+ ...formatPlanSection(model),
36
+ "",
37
+ sectionTitle("Safety"),
38
+ bullet(`permission mode: ${model.permissionLabel} (${model.permissionMode})`),
39
+ bullet("mutations: disabled"),
40
+ bullet("auto-apply: forbidden"),
41
+ bullet(`network: ${model.planSource === "server" ? "preview endpoint only" : "none"}`),
42
+ "",
43
+ sectionTitle("Next"),
44
+ bullet("/diff — review patch proposal when preview includes one"),
45
+ bullet(model.previewResult.source === "server" && model.previewResult.status === "ok"
46
+ ? "/approve — available when a pending preview action exists"
47
+ : "/approve — review pending action after a successful preview"),
48
+ bullet("/permissions — inspect or change permission mode"),
49
+ bullet("/context — show stored goal, inspect, and preview state"),
50
+ bullet("/exit — leave interactive mode"),
51
+ ];
52
+ return lines;
53
+ }
54
+ function formatPlanSection(model) {
55
+ const lines = [];
56
+ if (model.previewResult.source === "server" && model.previewResult.server) {
57
+ lines.push(...formatPreviewResponseLines(model.previewResult.server).map((line) => bullet(line)));
58
+ return lines;
59
+ }
60
+ lines.push(bullet(`status: ${model.previewResult.status}`));
61
+ const steps = model.previewResult.localSteps ?? [];
62
+ if (steps.length) {
63
+ lines.push(bullet("steps:"));
64
+ for (const step of steps) {
65
+ lines.push(` • ${step}`);
66
+ }
67
+ }
68
+ return lines;
69
+ }
70
+ //# sourceMappingURL=agent-turn-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-turn-format.js","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn-format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type PlanPreviewOptions } from "../commands/plan.js";
2
+ import type { InteractiveSession } from "./session.js";
3
+ export type AgentTurnResult = {
4
+ lines: string[];
5
+ exitCode: number;
6
+ };
7
+ export type AgentTurnOptions = PlanPreviewOptions;
8
+ export declare function runAgentTurn(session: InteractiveSession, objective: string, options?: AgentTurnOptions): Promise<AgentTurnResult>;
9
+ //# sourceMappingURL=agent-turn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-turn.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAK7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAItD,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,CAAA;AAEjD,wBAAsB,YAAY,CAChC,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAiG1B"}
@@ -0,0 +1,103 @@
1
+ import { isAuthConfigured } from "../../backend/auth.js";
2
+ import { loadConfig } from "../../config/config.js";
3
+ import { buildGoalDryRunPlan } from "../commands/goal.js";
4
+ import { toInspectSummary } from "../commands/inspect-format.js";
5
+ import { runPlanPreview } from "../commands/plan.js";
6
+ import { inspectWorkspace } from "../../runtime/inspect.js";
7
+ import { getPermissionModeDef } from "../../runtime/permissions.js";
8
+ import { normalizePatchProposalInput } from "../../runtime/patch-proposal.js";
9
+ import { hasPatchBody } from "../../runtime/patch-proposal.js";
10
+ import { formatAgentTurnLines } from "./agent-turn-format.js";
11
+ export async function runAgentTurn(session, objective, options = {}) {
12
+ const trimmed = objective.trim();
13
+ if (!trimmed) {
14
+ return {
15
+ lines: ["Task is empty. Type a goal or use /goal <task>."],
16
+ exitCode: 2,
17
+ };
18
+ }
19
+ session.setCurrentGoal(trimmed);
20
+ session.clearReviewAndApprovalState();
21
+ const config = loadConfig(session.cwd);
22
+ const inspectResult = inspectWorkspace(session.cwd, config.defaultAllow, config.defaultDeny);
23
+ const inspectSummary = toInspectSummary(inspectResult);
24
+ session.setLastInspectSummary(inspectSummary);
25
+ const authReady = isAuthConfigured(config);
26
+ const toolSteps = ["accept_task", "inspect_workspace"];
27
+ let planSource = "local";
28
+ let previewResult;
29
+ let exitCode = 0;
30
+ let pendingAction = null;
31
+ if (authReady) {
32
+ toolSteps.push("plan_preview_server");
33
+ planSource = "server";
34
+ const plan = await runPlanPreview(trimmed, { cwd: session.cwd, fetchImpl: options.fetchImpl });
35
+ exitCode = plan.exitCode;
36
+ if (plan.preview?.ok) {
37
+ previewResult = {
38
+ source: "server",
39
+ objective: trimmed,
40
+ status: plan.preview.response.status,
41
+ server: plan.preview.response,
42
+ };
43
+ if (plan.preview.response.status === "ok" && plan.preview.response.artifact_digest) {
44
+ const normalized = normalizePatchProposalInput({
45
+ artifactDigest: plan.preview.response.artifact_digest,
46
+ previewDigest: plan.preview.response.preview_digest,
47
+ objective: trimmed,
48
+ raw: plan.preview.response.patch_proposal ?? null,
49
+ });
50
+ pendingAction = {
51
+ kind: normalized && hasPatchBody(normalized) ? "patch_available" : "review_diff",
52
+ objective: trimmed,
53
+ artifactDigest: plan.preview.response.artifact_digest,
54
+ previewDigest: plan.preview.response.preview_digest,
55
+ createdAt: "deterministic",
56
+ };
57
+ }
58
+ }
59
+ else {
60
+ previewResult = {
61
+ source: "server",
62
+ objective: trimmed,
63
+ status: plan.preview?.ok === false ? plan.preview.kind : "failed",
64
+ };
65
+ }
66
+ }
67
+ else {
68
+ toolSteps.push("plan_preview_local");
69
+ const dryRun = buildGoalDryRunPlan({ objective: trimmed, cwd: session.cwd });
70
+ previewResult = {
71
+ source: "local",
72
+ objective: trimmed,
73
+ status: "dry-run",
74
+ localSteps: [...dryRun.verify.steps, ...dryRun.nextSteps],
75
+ };
76
+ pendingAction = {
77
+ kind: "local_plan",
78
+ objective: trimmed,
79
+ createdAt: "deterministic",
80
+ };
81
+ }
82
+ session.setLastPreviewResult(previewResult);
83
+ if (pendingAction) {
84
+ session.setPendingAction(pendingAction);
85
+ }
86
+ const permission = getPermissionModeDef(session.getPermissionMode());
87
+ const model = {
88
+ objective: trimmed,
89
+ inspectSummary,
90
+ planSource,
91
+ previewResult,
92
+ permissionMode: permission.mode,
93
+ permissionLabel: permission.label,
94
+ toolSteps,
95
+ authReady,
96
+ mutationsEnabled: false,
97
+ };
98
+ return {
99
+ lines: formatAgentTurnLines(model),
100
+ exitCode,
101
+ };
102
+ }
103
+ //# sourceMappingURL=agent-turn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-turn.js","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { PermissionMode } from "../../runtime/permissions.js";
2
+ export declare function renderInteractiveHeader(cwd: string, permissionMode?: PermissionMode): string[];
3
+ export declare const INTERACTIVE_PROMPT = "\u203A ";
4
+ //# sourceMappingURL=header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/header.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAUlE,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,cAAc,GAAG,MAAM,EAAE,CAkB9F;AAED,eAAO,MAAM,kBAAkB,YAAO,CAAA"}
@@ -0,0 +1,28 @@
1
+ import { getPermissionModeDef } from "../../runtime/permissions.js";
2
+ import { loadConfig } from "../../config/config.js";
3
+ import { isAuthConfigured } from "../../backend/auth.js";
4
+ import { resolveApproval } from "../../runtime/approvals.js";
5
+ import { resolveSandbox } from "../../runtime/sandbox.js";
6
+ import { guessWorkspaceRoot } from "../../runtime/workspace.js";
7
+ import { formatCliVersionLine } from "../../version.js";
8
+ import { formatSessionPermissionLine } from "./permissions-command.js";
9
+ export function renderInteractiveHeader(cwd, permissionMode) {
10
+ const config = loadConfig(cwd);
11
+ const authReady = isAuthConfigured(config);
12
+ const approval = resolveApproval(config.approvalMode);
13
+ const sandbox = resolveSandbox(config.sandboxMode);
14
+ const workspace = guessWorkspaceRoot(cwd);
15
+ const permission = permissionMode
16
+ ? formatSessionPermissionLine(permissionMode)
17
+ : `${getPermissionModeDef("read-only").label} (read-only)`;
18
+ return [
19
+ formatCliVersionLine(),
20
+ `${"workspace".padEnd(14)} ${workspace}`,
21
+ `${"auth".padEnd(14)} ${authReady ? "ready" : "incomplete"}`,
22
+ `${"permission".padEnd(14)} ${permission}`,
23
+ `${"safety".padEnd(14)} ${approval.mode} · ${sandbox.mode}`,
24
+ `${"hint".padEnd(14)} Type a task or /help`,
25
+ ];
26
+ }
27
+ export const INTERACTIVE_PROMPT = "› ";
28
+ //# sourceMappingURL=header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"header.js","sourceRoot":"","sources":["../../../src/cli/interactive/header.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAA;AAEtE,MAAM,UAAU,uBAAuB,CAAC,GAAW,EAAE,cAA+B;IAClF,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAC9B,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAC1C,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACrD,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IAClD,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACzC,MAAM,UAAU,GAAG,cAAc;QAC/B,CAAC,CAAC,2BAA2B,CAAC,cAAc,CAAC;QAC7C,CAAC,CAAC,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC,KAAK,cAAc,CAAA;IAE5D,OAAO;QACL,oBAAoB,EAAE;QACtB,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE;QACxC,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,EAAE;QAC5D,GAAG,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,UAAU,EAAE;QAC1C,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,MAAM,OAAO,CAAC,IAAI,EAAE;QAC3D,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,uBAAuB;KAC5C,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAA"}
@@ -0,0 +1,15 @@
1
+ import type { InteractiveSession } from "./session.js";
2
+ import type { PermissionMode } from "../../runtime/permissions.js";
3
+ export type PermissionsCommandOptions = {
4
+ interactive?: boolean;
5
+ keySequence?: readonly string[];
6
+ };
7
+ export type PermissionsCommandResult = {
8
+ lines: string[];
9
+ exitCode: number;
10
+ };
11
+ export declare function runPermissionsCommand(session: InteractiveSession, rawArgs: string, options?: PermissionsCommandOptions): Promise<PermissionsCommandResult>;
12
+ export declare function formatSessionPermissionLine(mode: PermissionMode): string;
13
+ export declare function formatPermissionModeRefusedLines(mode: PermissionMode): string[];
14
+ export declare function formatPermissionModeAppliedLines(mode: PermissionMode): string[];
15
+ //# sourceMappingURL=permissions-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permissions-command.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/permissions-command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAqBlE,MAAM,MAAM,yBAAyB,GAAG;IACtC,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,wBAAwB,CAAC,CAgBnC;AA6ED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAGxE;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,EAAE,CAE/E;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,EAAE,CAE/E"}