@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.
- package/CHANGELOG.md +92 -0
- package/NOTICE.md +17 -0
- package/README.md +177 -0
- package/VERSION +1 -0
- package/bin/patze.mjs +7 -0
- package/dist/backend/auth.d.ts +13 -0
- package/dist/backend/auth.d.ts.map +1 -0
- package/dist/backend/auth.js +12 -0
- package/dist/backend/auth.js.map +1 -0
- package/dist/backend/client.d.ts +14 -0
- package/dist/backend/client.d.ts.map +1 -0
- package/dist/backend/client.js +51 -0
- package/dist/backend/client.js.map +1 -0
- package/dist/backend/preview-client.d.ts +33 -0
- package/dist/backend/preview-client.d.ts.map +1 -0
- package/dist/backend/preview-client.js +104 -0
- package/dist/backend/preview-client.js.map +1 -0
- package/dist/backend/preview-payload.d.ts +50 -0
- package/dist/backend/preview-payload.d.ts.map +1 -0
- package/dist/backend/preview-payload.js +92 -0
- package/dist/backend/preview-payload.js.map +1 -0
- package/dist/cli/argv.d.ts +10 -0
- package/dist/cli/argv.d.ts.map +1 -0
- package/dist/cli/argv.js +67 -0
- package/dist/cli/argv.js.map +1 -0
- package/dist/cli/commands/apply-format.d.ts +12 -0
- package/dist/cli/commands/apply-format.d.ts.map +1 -0
- package/dist/cli/commands/apply-format.js +50 -0
- package/dist/cli/commands/apply-format.js.map +1 -0
- package/dist/cli/commands/apply.d.ts +14 -0
- package/dist/cli/commands/apply.d.ts.map +1 -0
- package/dist/cli/commands/apply.js +256 -0
- package/dist/cli/commands/apply.js.map +1 -0
- package/dist/cli/commands/approve-format.d.ts +4 -0
- package/dist/cli/commands/approve-format.d.ts.map +1 -0
- package/dist/cli/commands/approve-format.js +40 -0
- package/dist/cli/commands/approve-format.js.map +1 -0
- package/dist/cli/commands/approve.d.ts +19 -0
- package/dist/cli/commands/approve.d.ts.map +1 -0
- package/dist/cli/commands/approve.js +91 -0
- package/dist/cli/commands/approve.js.map +1 -0
- package/dist/cli/commands/code.d.ts +4 -0
- package/dist/cli/commands/code.d.ts.map +1 -0
- package/dist/cli/commands/code.js +57 -0
- package/dist/cli/commands/code.js.map +1 -0
- package/dist/cli/commands/diff-format.d.ts +12 -0
- package/dist/cli/commands/diff-format.d.ts.map +1 -0
- package/dist/cli/commands/diff-format.js +151 -0
- package/dist/cli/commands/diff-format.js.map +1 -0
- package/dist/cli/commands/diff.d.ts +22 -0
- package/dist/cli/commands/diff.d.ts.map +1 -0
- package/dist/cli/commands/diff.js +101 -0
- package/dist/cli/commands/diff.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +6 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +99 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/goal-format.d.ts +3 -0
- package/dist/cli/commands/goal-format.d.ts.map +1 -0
- package/dist/cli/commands/goal-format.js +32 -0
- package/dist/cli/commands/goal-format.js.map +1 -0
- package/dist/cli/commands/goal.d.ts +28 -0
- package/dist/cli/commands/goal.d.ts.map +1 -0
- package/dist/cli/commands/goal.js +80 -0
- package/dist/cli/commands/goal.js.map +1 -0
- package/dist/cli/commands/inspect-format.d.ts +6 -0
- package/dist/cli/commands/inspect-format.d.ts.map +1 -0
- package/dist/cli/commands/inspect-format.js +62 -0
- package/dist/cli/commands/inspect-format.js.map +1 -0
- package/dist/cli/commands/inspect.d.ts +7 -0
- package/dist/cli/commands/inspect.d.ts.map +1 -0
- package/dist/cli/commands/inspect.js +11 -0
- package/dist/cli/commands/inspect.js.map +1 -0
- package/dist/cli/commands/login.d.ts +4 -0
- package/dist/cli/commands/login.d.ts.map +1 -0
- package/dist/cli/commands/login.js +21 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/plan-format.d.ts +7 -0
- package/dist/cli/commands/plan-format.d.ts.map +1 -0
- package/dist/cli/commands/plan-format.js +48 -0
- package/dist/cli/commands/plan-format.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +13 -0
- package/dist/cli/commands/plan.d.ts.map +1 -0
- package/dist/cli/commands/plan.js +64 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/runs.d.ts +5 -0
- package/dist/cli/commands/runs.d.ts.map +1 -0
- package/dist/cli/commands/runs.js +25 -0
- package/dist/cli/commands/runs.js.map +1 -0
- package/dist/cli/commands/session-snapshot-format.d.ts +3 -0
- package/dist/cli/commands/session-snapshot-format.d.ts.map +1 -0
- package/dist/cli/commands/session-snapshot-format.js +5 -0
- package/dist/cli/commands/session-snapshot-format.js.map +1 -0
- package/dist/cli/commands/status-format.d.ts +11 -0
- package/dist/cli/commands/status-format.d.ts.map +1 -0
- package/dist/cli/commands/status-format.js +57 -0
- package/dist/cli/commands/status-format.js.map +1 -0
- package/dist/cli/commands/status.d.ts +4 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +12 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/trust-loop-snapshot.d.ts +3 -0
- package/dist/cli/commands/trust-loop-snapshot.d.ts.map +1 -0
- package/dist/cli/commands/trust-loop-snapshot.js +125 -0
- package/dist/cli/commands/trust-loop-snapshot.js.map +1 -0
- package/dist/cli/commands/verify-drift-guard.d.ts +2 -0
- package/dist/cli/commands/verify-drift-guard.d.ts.map +1 -0
- package/dist/cli/commands/verify-drift-guard.js +11 -0
- package/dist/cli/commands/verify-drift-guard.js.map +1 -0
- package/dist/cli/commands/verify.d.ts +12 -0
- package/dist/cli/commands/verify.d.ts.map +1 -0
- package/dist/cli/commands/verify.js +62 -0
- package/dist/cli/commands/verify.js.map +1 -0
- package/dist/cli/help.d.ts +3 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +36 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/interactive/agent-turn-format.d.ts +15 -0
- package/dist/cli/interactive/agent-turn-format.d.ts.map +1 -0
- package/dist/cli/interactive/agent-turn-format.js +70 -0
- package/dist/cli/interactive/agent-turn-format.js.map +1 -0
- package/dist/cli/interactive/agent-turn.d.ts +9 -0
- package/dist/cli/interactive/agent-turn.d.ts.map +1 -0
- package/dist/cli/interactive/agent-turn.js +103 -0
- package/dist/cli/interactive/agent-turn.js.map +1 -0
- package/dist/cli/interactive/header.d.ts +4 -0
- package/dist/cli/interactive/header.d.ts.map +1 -0
- package/dist/cli/interactive/header.js +28 -0
- package/dist/cli/interactive/header.js.map +1 -0
- package/dist/cli/interactive/permissions-command.d.ts +15 -0
- package/dist/cli/interactive/permissions-command.d.ts.map +1 -0
- package/dist/cli/interactive/permissions-command.js +88 -0
- package/dist/cli/interactive/permissions-command.js.map +1 -0
- package/dist/cli/interactive/permissions-format.d.ts +18 -0
- package/dist/cli/interactive/permissions-format.d.ts.map +1 -0
- package/dist/cli/interactive/permissions-format.js +142 -0
- package/dist/cli/interactive/permissions-format.js.map +1 -0
- package/dist/cli/interactive/permissions-keys.d.ts +5 -0
- package/dist/cli/interactive/permissions-keys.d.ts.map +1 -0
- package/dist/cli/interactive/permissions-keys.js +58 -0
- package/dist/cli/interactive/permissions-keys.js.map +1 -0
- package/dist/cli/interactive/session-state.d.ts +68 -0
- package/dist/cli/interactive/session-state.d.ts.map +1 -0
- package/dist/cli/interactive/session-state.js +2 -0
- package/dist/cli/interactive/session-state.js.map +1 -0
- package/dist/cli/interactive/session.d.ts +71 -0
- package/dist/cli/interactive/session.d.ts.map +1 -0
- package/dist/cli/interactive/session.js +244 -0
- package/dist/cli/interactive/session.js.map +1 -0
- package/dist/cli/interactive/shell.d.ts +13 -0
- package/dist/cli/interactive/shell.d.ts.map +1 -0
- package/dist/cli/interactive/shell.js +115 -0
- package/dist/cli/interactive/shell.js.map +1 -0
- package/dist/cli/interactive/slash-dispatch.d.ts +14 -0
- package/dist/cli/interactive/slash-dispatch.d.ts.map +1 -0
- package/dist/cli/interactive/slash-dispatch.js +276 -0
- package/dist/cli/interactive/slash-dispatch.js.map +1 -0
- package/dist/cli/interactive/slash-parse.d.ts +9 -0
- package/dist/cli/interactive/slash-parse.d.ts.map +1 -0
- package/dist/cli/interactive/slash-parse.js +78 -0
- package/dist/cli/interactive/slash-parse.js.map +1 -0
- package/dist/cli/interactive/slash-registry.d.ts +11 -0
- package/dist/cli/interactive/slash-registry.d.ts.map +1 -0
- package/dist/cli/interactive/slash-registry.js +26 -0
- package/dist/cli/interactive/slash-registry.js.map +1 -0
- package/dist/cli/interactive/slash-suggest.d.ts +4 -0
- package/dist/cli/interactive/slash-suggest.d.ts.map +1 -0
- package/dist/cli/interactive/slash-suggest.js +46 -0
- package/dist/cli/interactive/slash-suggest.js.map +1 -0
- package/dist/cli/interactive/tools-catalog.d.ts +8 -0
- package/dist/cli/interactive/tools-catalog.d.ts.map +1 -0
- package/dist/cli/interactive/tools-catalog.js +51 -0
- package/dist/cli/interactive/tools-catalog.js.map +1 -0
- package/dist/cli/main.d.ts +2 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +69 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli/ui/diff-view.d.ts +7 -0
- package/dist/cli/ui/diff-view.d.ts.map +1 -0
- package/dist/cli/ui/diff-view.js +18 -0
- package/dist/cli/ui/diff-view.js.map +1 -0
- package/dist/cli/ui/printer.d.ts +13 -0
- package/dist/cli/ui/printer.d.ts.map +1 -0
- package/dist/cli/ui/printer.js +24 -0
- package/dist/cli/ui/printer.js.map +1 -0
- package/dist/cli/ui/spinner.d.ts +5 -0
- package/dist/cli/ui/spinner.d.ts.map +1 -0
- package/dist/cli/ui/spinner.js +30 -0
- package/dist/cli/ui/spinner.js.map +1 -0
- package/dist/cli/ui/text-writer.d.ts +8 -0
- package/dist/cli/ui/text-writer.d.ts.map +1 -0
- package/dist/cli/ui/text-writer.js +17 -0
- package/dist/cli/ui/text-writer.js.map +1 -0
- package/dist/config/config.d.ts +30 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +133 -0
- package/dist/config/config.js.map +1 -0
- package/dist/runtime/apply-verify.d.ts +28 -0
- package/dist/runtime/apply-verify.d.ts.map +1 -0
- package/dist/runtime/apply-verify.js +180 -0
- package/dist/runtime/apply-verify.js.map +1 -0
- package/dist/runtime/approvals.d.ts +10 -0
- package/dist/runtime/approvals.d.ts.map +1 -0
- package/dist/runtime/approvals.js +22 -0
- package/dist/runtime/approvals.js.map +1 -0
- package/dist/runtime/content-hash.d.ts +3 -0
- package/dist/runtime/content-hash.d.ts.map +1 -0
- package/dist/runtime/content-hash.js +8 -0
- package/dist/runtime/content-hash.js.map +1 -0
- package/dist/runtime/digest-mask.d.ts +2 -0
- package/dist/runtime/digest-mask.d.ts.map +1 -0
- package/dist/runtime/digest-mask.js +11 -0
- package/dist/runtime/digest-mask.js.map +1 -0
- package/dist/runtime/inspect.d.ts +20 -0
- package/dist/runtime/inspect.d.ts.map +1 -0
- package/dist/runtime/inspect.js +152 -0
- package/dist/runtime/inspect.js.map +1 -0
- package/dist/runtime/patch-apply.d.ts +32 -0
- package/dist/runtime/patch-apply.d.ts.map +1 -0
- package/dist/runtime/patch-apply.js +170 -0
- package/dist/runtime/patch-apply.js.map +1 -0
- package/dist/runtime/patch-path-guard.d.ts +17 -0
- package/dist/runtime/patch-path-guard.d.ts.map +1 -0
- package/dist/runtime/patch-path-guard.js +56 -0
- package/dist/runtime/patch-path-guard.js.map +1 -0
- package/dist/runtime/patch-proposal.d.ts +55 -0
- package/dist/runtime/patch-proposal.d.ts.map +1 -0
- package/dist/runtime/patch-proposal.js +118 -0
- package/dist/runtime/patch-proposal.js.map +1 -0
- package/dist/runtime/permissions.d.ts +18 -0
- package/dist/runtime/permissions.d.ts.map +1 -0
- package/dist/runtime/permissions.js +91 -0
- package/dist/runtime/permissions.js.map +1 -0
- package/dist/runtime/sandbox.d.ts +9 -0
- package/dist/runtime/sandbox.d.ts.map +1 -0
- package/dist/runtime/sandbox.js +17 -0
- package/dist/runtime/sandbox.js.map +1 -0
- package/dist/runtime/unified-diff.d.ts +19 -0
- package/dist/runtime/unified-diff.d.ts.map +1 -0
- package/dist/runtime/unified-diff.js +114 -0
- package/dist/runtime/unified-diff.js.map +1 -0
- package/dist/runtime/verifier.d.ts +6 -0
- package/dist/runtime/verifier.d.ts.map +1 -0
- package/dist/runtime/verifier.js +16 -0
- package/dist/runtime/verifier.js.map +1 -0
- package/dist/runtime/workspace.d.ts +10 -0
- package/dist/runtime/workspace.d.ts.map +1 -0
- package/dist/runtime/workspace.js +107 -0
- package/dist/runtime/workspace.js.map +1 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +10 -0
- package/dist/version.js.map +1 -0
- package/docs/beta-feedback-template.md +75 -0
- package/docs/beta-feedback-triage.md +169 -0
- package/docs/beta-release-handoff.md +182 -0
- package/docs/beta-tester-checklist.md +62 -0
- package/docs/install-beta.md +77 -0
- package/docs/internal-beta.md +84 -0
- package/docs/known-limitations.md +62 -0
- package/docs/patze-cli-architecture.md +137 -0
- package/docs/patze-cli-codex-reference-study.md +43 -0
- package/docs/release-checklist.md +83 -0
- package/docs/safety-model.md +69 -0
- package/docs/smoke-command-guide.md +61 -0
- package/docs/trust-loop.md +90 -0
- package/docs/uninstall-reset.md +44 -0
- 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 @@
|
|
|
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 @@
|
|
|
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"}
|
package/dist/cli/help.js
ADDED
|
@@ -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 @@
|
|
|
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"}
|