@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,244 @@
|
|
|
1
|
+
import { DEFAULT_PERMISSION_MODE } from "../../runtime/permissions.js";
|
|
2
|
+
export class InteractiveSession {
|
|
3
|
+
cwd;
|
|
4
|
+
transcript = [];
|
|
5
|
+
currentGoal = null;
|
|
6
|
+
lastGoalObjective = null;
|
|
7
|
+
lastInspectSummary = null;
|
|
8
|
+
lastPreviewResult = null;
|
|
9
|
+
pendingAction = null;
|
|
10
|
+
diffReviewState = null;
|
|
11
|
+
approvalGate = null;
|
|
12
|
+
pendingApplyConfirmation = null;
|
|
13
|
+
lastApplyResult = null;
|
|
14
|
+
lastVerifyResult = null;
|
|
15
|
+
applyHistory = [];
|
|
16
|
+
verifyDriftBlocked = false;
|
|
17
|
+
verifyDriftGateKey = null;
|
|
18
|
+
consumedGateKeys = new Set();
|
|
19
|
+
permissionMode = DEFAULT_PERMISSION_MODE;
|
|
20
|
+
constructor(cwd) {
|
|
21
|
+
this.cwd = cwd;
|
|
22
|
+
}
|
|
23
|
+
append(entry) {
|
|
24
|
+
this.transcript.push(entry);
|
|
25
|
+
}
|
|
26
|
+
clear() {
|
|
27
|
+
this.transcript = [];
|
|
28
|
+
}
|
|
29
|
+
resetAgentState() {
|
|
30
|
+
this.currentGoal = null;
|
|
31
|
+
this.lastGoalObjective = null;
|
|
32
|
+
this.lastInspectSummary = null;
|
|
33
|
+
this.lastPreviewResult = null;
|
|
34
|
+
this.pendingAction = null;
|
|
35
|
+
this.diffReviewState = null;
|
|
36
|
+
this.approvalGate = null;
|
|
37
|
+
this.pendingApplyConfirmation = null;
|
|
38
|
+
this.lastApplyResult = null;
|
|
39
|
+
this.lastVerifyResult = null;
|
|
40
|
+
this.applyHistory = [];
|
|
41
|
+
this.verifyDriftBlocked = false;
|
|
42
|
+
this.verifyDriftGateKey = null;
|
|
43
|
+
this.consumedGateKeys.clear();
|
|
44
|
+
}
|
|
45
|
+
size() {
|
|
46
|
+
return this.transcript.length;
|
|
47
|
+
}
|
|
48
|
+
snapshot() {
|
|
49
|
+
return [...this.transcript];
|
|
50
|
+
}
|
|
51
|
+
setCurrentGoal(objective) {
|
|
52
|
+
const trimmed = objective.trim();
|
|
53
|
+
this.currentGoal = trimmed || null;
|
|
54
|
+
this.lastGoalObjective = trimmed || null;
|
|
55
|
+
}
|
|
56
|
+
getCurrentGoal() {
|
|
57
|
+
return this.currentGoal;
|
|
58
|
+
}
|
|
59
|
+
setLastGoalObjective(objective) {
|
|
60
|
+
this.lastGoalObjective = objective.trim() || null;
|
|
61
|
+
this.currentGoal = this.lastGoalObjective;
|
|
62
|
+
}
|
|
63
|
+
getLastGoalObjective() {
|
|
64
|
+
return this.lastGoalObjective ?? this.currentGoal;
|
|
65
|
+
}
|
|
66
|
+
setLastInspectSummary(summary) {
|
|
67
|
+
this.lastInspectSummary = summary;
|
|
68
|
+
}
|
|
69
|
+
getLastInspectSummary() {
|
|
70
|
+
return this.lastInspectSummary ? { ...this.lastInspectSummary, contextFiles: [...this.lastInspectSummary.contextFiles] } : null;
|
|
71
|
+
}
|
|
72
|
+
setLastPreviewResult(result) {
|
|
73
|
+
this.lastPreviewResult = result;
|
|
74
|
+
}
|
|
75
|
+
getLastPreviewResult() {
|
|
76
|
+
if (!this.lastPreviewResult) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
...this.lastPreviewResult,
|
|
81
|
+
localSteps: this.lastPreviewResult.localSteps ? [...this.lastPreviewResult.localSteps] : undefined,
|
|
82
|
+
server: this.lastPreviewResult.server
|
|
83
|
+
? {
|
|
84
|
+
...this.lastPreviewResult.server,
|
|
85
|
+
finding_codes: [...this.lastPreviewResult.server.finding_codes],
|
|
86
|
+
patch_proposal: this.lastPreviewResult.server.patch_proposal,
|
|
87
|
+
}
|
|
88
|
+
: undefined,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
setPendingAction(action) {
|
|
92
|
+
this.pendingAction = action;
|
|
93
|
+
}
|
|
94
|
+
clearPendingAction() {
|
|
95
|
+
this.pendingAction = null;
|
|
96
|
+
}
|
|
97
|
+
getPendingAction() {
|
|
98
|
+
return this.pendingAction ? { ...this.pendingAction } : null;
|
|
99
|
+
}
|
|
100
|
+
hasPendingAction() {
|
|
101
|
+
return this.pendingAction !== null;
|
|
102
|
+
}
|
|
103
|
+
setDiffReviewState(state) {
|
|
104
|
+
this.diffReviewState = {
|
|
105
|
+
...state,
|
|
106
|
+
filesChanged: [...state.filesChanged],
|
|
107
|
+
};
|
|
108
|
+
this.clearApprovalGate();
|
|
109
|
+
}
|
|
110
|
+
getDiffReviewState() {
|
|
111
|
+
if (!this.diffReviewState) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
...this.diffReviewState,
|
|
116
|
+
filesChanged: [...this.diffReviewState.filesChanged],
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
clearDiffReviewState() {
|
|
120
|
+
this.diffReviewState = null;
|
|
121
|
+
}
|
|
122
|
+
setApprovalGate(gate) {
|
|
123
|
+
this.approvalGate = {
|
|
124
|
+
...gate,
|
|
125
|
+
filesChanged: [...gate.filesChanged],
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
getApprovalGate() {
|
|
129
|
+
if (!this.approvalGate) {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
...this.approvalGate,
|
|
134
|
+
filesChanged: [...this.approvalGate.filesChanged],
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
clearApprovalGate() {
|
|
138
|
+
this.approvalGate = null;
|
|
139
|
+
}
|
|
140
|
+
clearReviewAndApprovalState() {
|
|
141
|
+
this.clearDiffReviewState();
|
|
142
|
+
this.clearApprovalGate();
|
|
143
|
+
this.clearPendingAction();
|
|
144
|
+
this.clearPendingApplyConfirmation();
|
|
145
|
+
}
|
|
146
|
+
setPendingApplyConfirmation(state) {
|
|
147
|
+
this.pendingApplyConfirmation = { ...state };
|
|
148
|
+
}
|
|
149
|
+
getPendingApplyConfirmation() {
|
|
150
|
+
return this.pendingApplyConfirmation ? { ...this.pendingApplyConfirmation } : null;
|
|
151
|
+
}
|
|
152
|
+
clearPendingApplyConfirmation() {
|
|
153
|
+
this.pendingApplyConfirmation = null;
|
|
154
|
+
}
|
|
155
|
+
hasPendingApplyConfirmation() {
|
|
156
|
+
return this.pendingApplyConfirmation !== null;
|
|
157
|
+
}
|
|
158
|
+
setLastApplyResult(result) {
|
|
159
|
+
this.lastApplyResult = {
|
|
160
|
+
...result,
|
|
161
|
+
filesWritten: [...result.filesWritten],
|
|
162
|
+
files: result.files.map((file) => ({ ...file })),
|
|
163
|
+
};
|
|
164
|
+
this.appendApplyHistory(result);
|
|
165
|
+
}
|
|
166
|
+
appendApplyHistory(result) {
|
|
167
|
+
this.applyHistory.push({
|
|
168
|
+
...result,
|
|
169
|
+
filesWritten: [...result.filesWritten],
|
|
170
|
+
files: result.files.map((file) => ({ ...file })),
|
|
171
|
+
});
|
|
172
|
+
if (this.applyHistory.length > 20) {
|
|
173
|
+
this.applyHistory.shift();
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
getApplyHistory() {
|
|
177
|
+
return this.applyHistory.map((entry) => ({
|
|
178
|
+
...entry,
|
|
179
|
+
filesWritten: [...entry.filesWritten],
|
|
180
|
+
files: entry.files.map((file) => ({ ...file })),
|
|
181
|
+
}));
|
|
182
|
+
}
|
|
183
|
+
getLastApplyResult() {
|
|
184
|
+
if (!this.lastApplyResult) {
|
|
185
|
+
return null;
|
|
186
|
+
}
|
|
187
|
+
return {
|
|
188
|
+
...this.lastApplyResult,
|
|
189
|
+
filesWritten: [...this.lastApplyResult.filesWritten],
|
|
190
|
+
files: this.lastApplyResult.files.map((file) => ({ ...file })),
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
setLastVerifyResult(result) {
|
|
194
|
+
this.lastVerifyResult = {
|
|
195
|
+
...result,
|
|
196
|
+
filesChecked: [...result.filesChecked],
|
|
197
|
+
issues: [...result.issues],
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
getLastVerifyResult() {
|
|
201
|
+
if (!this.lastVerifyResult) {
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
return {
|
|
205
|
+
...this.lastVerifyResult,
|
|
206
|
+
filesChecked: [...this.lastVerifyResult.filesChecked],
|
|
207
|
+
issues: [...this.lastVerifyResult.issues],
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
markVerifyDriftBlocked(artifactDigest, previewDigest) {
|
|
211
|
+
this.verifyDriftBlocked = true;
|
|
212
|
+
this.verifyDriftGateKey = this.buildGateKey(artifactDigest, previewDigest);
|
|
213
|
+
this.clearReviewAndApprovalState();
|
|
214
|
+
}
|
|
215
|
+
clearVerifyDriftBlocked() {
|
|
216
|
+
this.verifyDriftBlocked = false;
|
|
217
|
+
this.verifyDriftGateKey = null;
|
|
218
|
+
}
|
|
219
|
+
isVerifyDriftBlocked() {
|
|
220
|
+
return this.verifyDriftBlocked;
|
|
221
|
+
}
|
|
222
|
+
getVerifyDriftGateKey() {
|
|
223
|
+
return this.verifyDriftGateKey;
|
|
224
|
+
}
|
|
225
|
+
buildGateKey(artifactDigest, previewDigest) {
|
|
226
|
+
return `${artifactDigest}:${previewDigest}`;
|
|
227
|
+
}
|
|
228
|
+
markGateConsumed(artifactDigest, previewDigest) {
|
|
229
|
+
this.consumedGateKeys.add(this.buildGateKey(artifactDigest, previewDigest));
|
|
230
|
+
}
|
|
231
|
+
isGateConsumed(gateKey) {
|
|
232
|
+
return this.consumedGateKeys.has(gateKey);
|
|
233
|
+
}
|
|
234
|
+
isApprovalGateConsumed(gate) {
|
|
235
|
+
return this.isGateConsumed(this.buildGateKey(gate.artifactDigest, gate.previewDigest));
|
|
236
|
+
}
|
|
237
|
+
getPermissionMode() {
|
|
238
|
+
return this.permissionMode;
|
|
239
|
+
}
|
|
240
|
+
setPermissionMode(mode) {
|
|
241
|
+
this.permissionMode = mode;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/cli/interactive/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { TextWriter } from "../ui/text-writer.js";
|
|
2
|
+
export type InteractiveShellOptions = {
|
|
3
|
+
cwd?: string;
|
|
4
|
+
input?: readonly string[];
|
|
5
|
+
writer?: TextWriter;
|
|
6
|
+
prompt?: string;
|
|
7
|
+
};
|
|
8
|
+
export type InteractiveShellResult = {
|
|
9
|
+
exitCode: number;
|
|
10
|
+
lines: string[];
|
|
11
|
+
};
|
|
12
|
+
export declare function runInteractiveShell(options?: InteractiveShellOptions): Promise<InteractiveShellResult>;
|
|
13
|
+
//# sourceMappingURL=shell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/shell.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAWtD,MAAM,MAAM,uBAAuB,GAAG;IACpC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAED,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,sBAAsB,CAAC,CAwHjC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { createInterface } from "node:readline";
|
|
2
|
+
import { createBufferWriter, createStdoutWriter } from "../ui/text-writer.js";
|
|
3
|
+
import { INTERACTIVE_PROMPT, renderInteractiveHeader } from "./header.js";
|
|
4
|
+
import { InteractiveSession } from "./session.js";
|
|
5
|
+
import { parseSlashInput } from "./slash-parse.js";
|
|
6
|
+
import { dispatchAgentPrompt, dispatchSlashCommand, } from "./slash-dispatch.js";
|
|
7
|
+
import { runApplyConfirmationLine } from "../commands/apply.js";
|
|
8
|
+
export async function runInteractiveShell(options = {}) {
|
|
9
|
+
const cwd = options.cwd ?? process.cwd();
|
|
10
|
+
const buffer = createBufferWriter();
|
|
11
|
+
const sink = options.writer ?? createStdoutWriter();
|
|
12
|
+
const output = {
|
|
13
|
+
line(text = "") {
|
|
14
|
+
sink.line(text);
|
|
15
|
+
buffer.line(text);
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
const prompt = options.prompt ?? INTERACTIVE_PROMPT;
|
|
19
|
+
const session = new InteractiveSession(cwd);
|
|
20
|
+
for (const line of renderInteractiveHeader(cwd, session.getPermissionMode())) {
|
|
21
|
+
output.line(line);
|
|
22
|
+
}
|
|
23
|
+
output.line("");
|
|
24
|
+
let exitCode = 0;
|
|
25
|
+
const processLine = async (rawLine) => {
|
|
26
|
+
const line = rawLine.trim();
|
|
27
|
+
if (!line) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
const parsed = parseSlashInput(line);
|
|
31
|
+
if (!parsed) {
|
|
32
|
+
if (session.hasPendingApplyConfirmation()) {
|
|
33
|
+
const result = runApplyConfirmationLine(session, line);
|
|
34
|
+
session.append({ input: line, lines: result.lines });
|
|
35
|
+
for (const entry of result.lines) {
|
|
36
|
+
output.line(entry);
|
|
37
|
+
}
|
|
38
|
+
output.line("");
|
|
39
|
+
exitCode = result.exitCode;
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
const result = await dispatchAgentPrompt(session, line);
|
|
43
|
+
session.append({ input: line, lines: result.lines });
|
|
44
|
+
for (const entry of result.lines) {
|
|
45
|
+
output.line(entry);
|
|
46
|
+
}
|
|
47
|
+
output.line("");
|
|
48
|
+
exitCode = result.exitCode;
|
|
49
|
+
return result.exitShell;
|
|
50
|
+
}
|
|
51
|
+
const result = await dispatchSlashCommand(session, parsed, {
|
|
52
|
+
permissionsInteractive: Boolean(!options.input && process.stdin.isTTY && process.stdout.isTTY),
|
|
53
|
+
});
|
|
54
|
+
session.append({ input: line, lines: result.lines });
|
|
55
|
+
for (const entry of result.lines) {
|
|
56
|
+
output.line(entry);
|
|
57
|
+
}
|
|
58
|
+
output.line("");
|
|
59
|
+
exitCode = result.exitCode;
|
|
60
|
+
return result.exitShell;
|
|
61
|
+
};
|
|
62
|
+
if (options.input) {
|
|
63
|
+
output.line(`${prompt}(interactive)`);
|
|
64
|
+
for (const rawLine of options.input) {
|
|
65
|
+
output.line(`${prompt}${rawLine}`);
|
|
66
|
+
const shouldExit = await processLine(rawLine);
|
|
67
|
+
if (shouldExit) {
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return { exitCode, lines: buffer.lines };
|
|
72
|
+
}
|
|
73
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
74
|
+
const rl = createInterface({ input: process.stdin, crlfDelay: Infinity });
|
|
75
|
+
output.line(`${prompt}(piped)`);
|
|
76
|
+
try {
|
|
77
|
+
for await (const rawLine of rl) {
|
|
78
|
+
output.line(`${prompt}${rawLine}`);
|
|
79
|
+
const shouldExit = await processLine(rawLine);
|
|
80
|
+
if (shouldExit) {
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
finally {
|
|
86
|
+
rl.close();
|
|
87
|
+
}
|
|
88
|
+
return { exitCode, lines: buffer.lines };
|
|
89
|
+
}
|
|
90
|
+
const rl = createInterface({
|
|
91
|
+
input: process.stdin,
|
|
92
|
+
output: process.stdout,
|
|
93
|
+
terminal: true,
|
|
94
|
+
prompt,
|
|
95
|
+
});
|
|
96
|
+
rl.prompt();
|
|
97
|
+
await new Promise((resolvePromise) => {
|
|
98
|
+
rl.on("line", (rawLine) => {
|
|
99
|
+
void (async () => {
|
|
100
|
+
const shouldExit = await processLine(rawLine);
|
|
101
|
+
if (shouldExit) {
|
|
102
|
+
rl.close();
|
|
103
|
+
resolvePromise();
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
rl.prompt();
|
|
107
|
+
})();
|
|
108
|
+
});
|
|
109
|
+
rl.on("close", () => {
|
|
110
|
+
resolvePromise();
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
return { exitCode, lines: buffer.lines };
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/cli/interactive/shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { InteractiveSession } from "./session.js";
|
|
2
|
+
import type { ParsedSlashInput } from "./slash-parse.js";
|
|
3
|
+
export type SlashDispatchContext = {
|
|
4
|
+
permissionsInteractive?: boolean;
|
|
5
|
+
permissionKeySequence?: readonly string[];
|
|
6
|
+
};
|
|
7
|
+
export type SlashDispatchResult = {
|
|
8
|
+
lines: string[];
|
|
9
|
+
exitShell: boolean;
|
|
10
|
+
exitCode: number;
|
|
11
|
+
};
|
|
12
|
+
export declare function dispatchSlashCommand(session: InteractiveSession, parsed: ParsedSlashInput, context?: SlashDispatchContext): Promise<SlashDispatchResult>;
|
|
13
|
+
export declare function dispatchAgentPrompt(session: InteractiveSession, text: string): Promise<SlashDispatchResult>;
|
|
14
|
+
//# sourceMappingURL=slash-dispatch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slash-dispatch.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/slash-dispatch.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAaxD,MAAM,MAAM,oBAAoB,GAAG;IACjC,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC1C,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAuD9B;AA6OD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,kBAAkB,EAC3B,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,mBAAmB,CAAC,CAO9B"}
|