@patze/code-cli 0.10.6 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +86 -0
- package/VERSION +1 -1
- package/bin/patze.mjs +0 -0
- package/dist/backend/agent-trace.d.ts +15 -0
- package/dist/backend/agent-trace.d.ts.map +1 -0
- package/dist/backend/agent-trace.js +53 -0
- package/dist/backend/agent-trace.js.map +1 -0
- package/dist/backend/execute-client.d.ts +51 -0
- package/dist/backend/execute-client.d.ts.map +1 -0
- package/dist/backend/execute-client.js +140 -0
- package/dist/backend/execute-client.js.map +1 -0
- package/dist/backend/preview-payload.d.ts +15 -3
- package/dist/backend/preview-payload.d.ts.map +1 -1
- package/dist/backend/preview-payload.js +38 -10
- package/dist/backend/preview-payload.js.map +1 -1
- package/dist/backend/run-record.d.ts +16 -0
- package/dist/backend/run-record.d.ts.map +1 -0
- package/dist/backend/run-record.js +43 -0
- package/dist/backend/run-record.js.map +1 -0
- package/dist/backend/run-stream-client.d.ts +36 -0
- package/dist/backend/run-stream-client.d.ts.map +1 -0
- package/dist/backend/run-stream-client.js +109 -0
- package/dist/backend/run-stream-client.js.map +1 -0
- package/dist/backend/runs-client.d.ts +35 -0
- package/dist/backend/runs-client.d.ts.map +1 -0
- package/dist/backend/runs-client.js +87 -0
- package/dist/backend/runs-client.js.map +1 -0
- package/dist/backend/session-client.d.ts +17 -0
- package/dist/backend/session-client.d.ts.map +1 -0
- package/dist/backend/session-client.js +54 -0
- package/dist/backend/session-client.js.map +1 -0
- package/dist/backend/sse-parse.d.ts +14 -0
- package/dist/backend/sse-parse.d.ts.map +1 -0
- package/dist/backend/sse-parse.js +63 -0
- package/dist/backend/sse-parse.js.map +1 -0
- package/dist/cli/commands/agent.d.ts +8 -0
- package/dist/cli/commands/agent.d.ts.map +1 -0
- package/dist/cli/commands/agent.js +72 -0
- package/dist/cli/commands/agent.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +3 -0
- package/dist/cli/commands/plan.d.ts.map +1 -1
- package/dist/cli/commands/plan.js +3 -0
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/runs-format.d.ts +4 -0
- package/dist/cli/commands/runs-format.d.ts.map +1 -0
- package/dist/cli/commands/runs-format.js +50 -0
- package/dist/cli/commands/runs-format.js.map +1 -0
- package/dist/cli/commands/runs.d.ts.map +1 -1
- package/dist/cli/commands/runs.js +78 -8
- package/dist/cli/commands/runs.js.map +1 -1
- package/dist/cli/commands/status-format.d.ts.map +1 -1
- package/dist/cli/commands/status-format.js +11 -0
- package/dist/cli/commands/status-format.js.map +1 -1
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +7 -3
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/interactive/agent-execute-turn.d.ts +26 -0
- package/dist/cli/interactive/agent-execute-turn.d.ts.map +1 -0
- package/dist/cli/interactive/agent-execute-turn.js +127 -0
- package/dist/cli/interactive/agent-execute-turn.js.map +1 -0
- package/dist/cli/interactive/agent-stream-format.d.ts +24 -0
- package/dist/cli/interactive/agent-stream-format.d.ts.map +1 -0
- package/dist/cli/interactive/agent-stream-format.js +170 -0
- package/dist/cli/interactive/agent-stream-format.js.map +1 -0
- package/dist/cli/interactive/agent-turn-context.d.ts +11 -0
- package/dist/cli/interactive/agent-turn-context.d.ts.map +1 -0
- package/dist/cli/interactive/agent-turn-context.js +57 -0
- package/dist/cli/interactive/agent-turn-context.js.map +1 -0
- package/dist/cli/interactive/agent-turn-format.d.ts +4 -3
- package/dist/cli/interactive/agent-turn-format.d.ts.map +1 -1
- package/dist/cli/interactive/agent-turn-format.js +38 -39
- package/dist/cli/interactive/agent-turn-format.js.map +1 -1
- package/dist/cli/interactive/agent-turn.d.ts +5 -1
- package/dist/cli/interactive/agent-turn.d.ts.map +1 -1
- package/dist/cli/interactive/agent-turn.js +84 -7
- package/dist/cli/interactive/agent-turn.js.map +1 -1
- package/dist/cli/interactive/cloud-git.d.ts +13 -0
- package/dist/cli/interactive/cloud-git.d.ts.map +1 -0
- package/dist/cli/interactive/cloud-git.js +43 -0
- package/dist/cli/interactive/cloud-git.js.map +1 -0
- package/dist/cli/interactive/header.d.ts +2 -1
- package/dist/cli/interactive/header.d.ts.map +1 -1
- package/dist/cli/interactive/header.js +9 -1
- package/dist/cli/interactive/header.js.map +1 -1
- package/dist/cli/interactive/launcher.d.ts +3 -0
- package/dist/cli/interactive/launcher.d.ts.map +1 -0
- package/dist/cli/interactive/launcher.js +43 -0
- package/dist/cli/interactive/launcher.js.map +1 -0
- package/dist/cli/interactive/line-editor.d.ts.map +1 -1
- package/dist/cli/interactive/line-editor.js +19 -8
- package/dist/cli/interactive/line-editor.js.map +1 -1
- package/dist/cli/interactive/model-command.d.ts +6 -0
- package/dist/cli/interactive/model-command.d.ts.map +1 -0
- package/dist/cli/interactive/model-command.js +40 -0
- package/dist/cli/interactive/model-command.js.map +1 -0
- package/dist/cli/interactive/run-replay.d.ts +17 -0
- package/dist/cli/interactive/run-replay.d.ts.map +1 -0
- package/dist/cli/interactive/run-replay.js +114 -0
- package/dist/cli/interactive/run-replay.js.map +1 -0
- package/dist/cli/interactive/session-controller.d.ts +22 -0
- package/dist/cli/interactive/session-controller.d.ts.map +1 -0
- package/dist/cli/interactive/session-controller.js +103 -0
- package/dist/cli/interactive/session-controller.js.map +1 -0
- package/dist/cli/interactive/session-store.d.ts +20 -0
- package/dist/cli/interactive/session-store.d.ts.map +1 -0
- package/dist/cli/interactive/session-store.js +88 -0
- package/dist/cli/interactive/session-store.js.map +1 -0
- package/dist/cli/interactive/session.d.ts +30 -0
- package/dist/cli/interactive/session.d.ts.map +1 -1
- package/dist/cli/interactive/session.js +69 -0
- package/dist/cli/interactive/session.js.map +1 -1
- package/dist/cli/interactive/shell.d.ts.map +1 -1
- package/dist/cli/interactive/shell.js +14 -43
- package/dist/cli/interactive/shell.js.map +1 -1
- package/dist/cli/interactive/slash-dispatch.d.ts +7 -1
- package/dist/cli/interactive/slash-dispatch.d.ts.map +1 -1
- package/dist/cli/interactive/slash-dispatch.js +116 -8
- package/dist/cli/interactive/slash-dispatch.js.map +1 -1
- package/dist/cli/interactive/slash-registry.d.ts.map +1 -1
- package/dist/cli/interactive/slash-registry.js +6 -0
- package/dist/cli/interactive/slash-registry.js.map +1 -1
- package/dist/cli/interactive/transcript-format.d.ts +3 -0
- package/dist/cli/interactive/transcript-format.d.ts.map +1 -0
- package/dist/cli/interactive/transcript-format.js +29 -0
- package/dist/cli/interactive/transcript-format.js.map +1 -0
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +35 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/one-shot-args.d.ts +9 -0
- package/dist/cli/one-shot-args.d.ts.map +1 -0
- package/dist/cli/one-shot-args.js +35 -0
- package/dist/cli/one-shot-args.js.map +1 -0
- package/dist/cli/read-stdin.d.ts +2 -0
- package/dist/cli/read-stdin.d.ts.map +1 -0
- package/dist/cli/read-stdin.js +12 -0
- package/dist/cli/read-stdin.js.map +1 -0
- package/dist/config/config.d.ts +2 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +8 -0
- package/dist/config/config.js.map +1 -1
- package/dist/config/models.d.ts +11 -0
- package/dist/config/models.d.ts.map +1 -0
- package/dist/config/models.js +51 -0
- package/dist/config/models.js.map +1 -0
- package/docs/known-limitations.md +12 -6
- package/package.json +4 -1
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { renderInteractiveHeader } from "./header.js";
|
|
2
|
+
import { redactSensitiveInput } from "./redact-input.js";
|
|
3
|
+
import { InteractiveSession } from "./session.js";
|
|
4
|
+
import { parseSlashInput } from "./slash-parse.js";
|
|
5
|
+
import { dispatchAgentPrompt, dispatchSlashCommand, } from "./slash-dispatch.js";
|
|
6
|
+
import { formatTranscriptEntry } from "./transcript-format.js";
|
|
7
|
+
import { runApplyConfirmationLine } from "../commands/apply.js";
|
|
8
|
+
import { loadPersistedSession, savePersistedSession } from "./session-store.js";
|
|
9
|
+
export function createInteractiveController(options) {
|
|
10
|
+
const cwd = options.cwd;
|
|
11
|
+
const session = new InteractiveSession(cwd);
|
|
12
|
+
const persisted = loadPersistedSession(cwd);
|
|
13
|
+
if (persisted) {
|
|
14
|
+
session.hydratePersistedState({
|
|
15
|
+
lastRunId: persisted.lastRunId,
|
|
16
|
+
modelOverride: persisted.modelOverride,
|
|
17
|
+
executionMode: persisted.executionMode,
|
|
18
|
+
permissionMode: persisted.permissionMode,
|
|
19
|
+
conversationEpoch: persisted.conversationEpoch,
|
|
20
|
+
transcript: persisted.transcript,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
const persistSession = () => {
|
|
24
|
+
savePersistedSession(cwd, session.exportPersistedState());
|
|
25
|
+
};
|
|
26
|
+
const canStreamPartials = options.streamPartials !== false && options.interactive !== false;
|
|
27
|
+
const processLine = async (rawLine, output) => {
|
|
28
|
+
const line = rawLine.trim();
|
|
29
|
+
if (!line) {
|
|
30
|
+
return { exitShell: false, exitCode: 0 };
|
|
31
|
+
}
|
|
32
|
+
const parsed = parseSlashInput(line);
|
|
33
|
+
if (!parsed) {
|
|
34
|
+
if (session.hasPendingApplyConfirmation()) {
|
|
35
|
+
const result = runApplyConfirmationLine(session, line);
|
|
36
|
+
session.append({ input: line, lines: result.lines });
|
|
37
|
+
for (const entry of result.lines) {
|
|
38
|
+
output.line(entry);
|
|
39
|
+
}
|
|
40
|
+
output.line("");
|
|
41
|
+
persistSession();
|
|
42
|
+
return { exitShell: false, exitCode: result.exitCode };
|
|
43
|
+
}
|
|
44
|
+
for (const entry of formatTranscriptEntry("you", line)) {
|
|
45
|
+
output.line(entry);
|
|
46
|
+
}
|
|
47
|
+
let partialActive = false;
|
|
48
|
+
const result = await dispatchAgentPrompt(session, line, {
|
|
49
|
+
onTranscriptLine: (entry) => {
|
|
50
|
+
output.line(entry);
|
|
51
|
+
},
|
|
52
|
+
onTranscriptPartial: canStreamPartials
|
|
53
|
+
? (chunk) => {
|
|
54
|
+
partialActive = true;
|
|
55
|
+
options.onPartial?.(chunk);
|
|
56
|
+
}
|
|
57
|
+
: undefined,
|
|
58
|
+
});
|
|
59
|
+
session.append({ input: line, lines: result.lines });
|
|
60
|
+
if (!result.streamed) {
|
|
61
|
+
for (const entry of result.lines) {
|
|
62
|
+
output.line(entry);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
else if (partialActive) {
|
|
66
|
+
output.line("");
|
|
67
|
+
}
|
|
68
|
+
output.line("");
|
|
69
|
+
persistSession();
|
|
70
|
+
return { exitShell: result.exitShell, exitCode: result.exitCode, streamed: result.streamed };
|
|
71
|
+
}
|
|
72
|
+
const result = await dispatchSlashCommand(session, parsed, {
|
|
73
|
+
permissionsInteractive: options.interactive === true,
|
|
74
|
+
onTranscriptLine: canStreamPartials
|
|
75
|
+
? (entry) => {
|
|
76
|
+
output.line(entry);
|
|
77
|
+
}
|
|
78
|
+
: undefined,
|
|
79
|
+
onTranscriptPartial: canStreamPartials
|
|
80
|
+
? (chunk) => {
|
|
81
|
+
options.onPartial?.(chunk);
|
|
82
|
+
}
|
|
83
|
+
: undefined,
|
|
84
|
+
});
|
|
85
|
+
session.append({ input: redactSensitiveInput(line), lines: result.lines });
|
|
86
|
+
if (!result.streamed) {
|
|
87
|
+
for (const entry of result.lines) {
|
|
88
|
+
output.line(entry);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
output.line("");
|
|
92
|
+
persistSession();
|
|
93
|
+
return { exitShell: result.exitShell, exitCode: result.exitCode, streamed: result.streamed };
|
|
94
|
+
};
|
|
95
|
+
return {
|
|
96
|
+
session,
|
|
97
|
+
cwd,
|
|
98
|
+
renderHeaderLines: () => renderInteractiveHeader(cwd, session.getPermissionMode(), session.getModelOverride(), session.getExecutionMode()),
|
|
99
|
+
persistSession,
|
|
100
|
+
processLine,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=session-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-controller.js","sourceRoot":"","sources":["../../../src/cli/interactive/session-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { PermissionMode } from "../../runtime/permissions.js";
|
|
2
|
+
import type { SessionTranscriptEntry } from "./session.js";
|
|
3
|
+
export type ExecutionMode = "local" | "cloud";
|
|
4
|
+
export type PersistedCliSession = {
|
|
5
|
+
version: 1;
|
|
6
|
+
cwd: string;
|
|
7
|
+
savedAt: string;
|
|
8
|
+
lastRunId: string | null;
|
|
9
|
+
modelOverride: string | null;
|
|
10
|
+
executionMode: ExecutionMode;
|
|
11
|
+
permissionMode: PermissionMode;
|
|
12
|
+
conversationEpoch: number;
|
|
13
|
+
transcript: SessionTranscriptEntry[];
|
|
14
|
+
};
|
|
15
|
+
export declare function sessionFilePath(cwd: string): string;
|
|
16
|
+
export declare function loadPersistedSession(cwd: string): PersistedCliSession | null;
|
|
17
|
+
export declare function savePersistedSession(cwd: string, snapshot: Omit<PersistedCliSession, "version" | "cwd" | "savedAt">): void;
|
|
18
|
+
export declare function trimTranscript(entries: SessionTranscriptEntry[]): SessionTranscriptEntry[];
|
|
19
|
+
export declare function buildConversationContext(entries: SessionTranscriptEntry[]): string;
|
|
20
|
+
//# sourceMappingURL=session-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/session-store.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAE1D,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,CAAA;AAE7C,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,CAAC,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,aAAa,EAAE,aAAa,CAAA;IAC5B,cAAc,EAAE,cAAc,CAAA;IAC9B,iBAAiB,EAAE,MAAM,CAAA;IACzB,UAAU,EAAE,sBAAsB,EAAE,CAAA;CACrC,CAAA;AAMD,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAInD;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAqB5E;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC,GAAG,IAAI,CAU1H;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,sBAAsB,EAAE,CAK1F;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,MAAM,CAelF"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { join, resolve } from "node:path";
|
|
5
|
+
const SESSION_DIR = join(homedir(), ".patze", "sessions");
|
|
6
|
+
const MAX_TRANSCRIPT_ENTRIES = 40;
|
|
7
|
+
const MAX_TRANSCRIPT_LINES = 12;
|
|
8
|
+
export function sessionFilePath(cwd) {
|
|
9
|
+
const normalized = resolve(cwd);
|
|
10
|
+
const hash = createHash("sha256").update(normalized).digest("hex").slice(0, 16);
|
|
11
|
+
return join(SESSION_DIR, `${hash}.json`);
|
|
12
|
+
}
|
|
13
|
+
export function loadPersistedSession(cwd) {
|
|
14
|
+
const path = sessionFilePath(cwd);
|
|
15
|
+
if (!existsSync(path)) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
const raw = JSON.parse(readFileSync(path, "utf8"));
|
|
20
|
+
if (!raw || typeof raw !== "object") {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
const row = raw;
|
|
24
|
+
if (row.version !== 1 || typeof row.cwd !== "string") {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
if (resolve(row.cwd) !== resolve(cwd)) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
return normalizeSnapshot(row);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export function savePersistedSession(cwd, snapshot) {
|
|
37
|
+
mkdirSync(SESSION_DIR, { recursive: true });
|
|
38
|
+
const payload = {
|
|
39
|
+
version: 1,
|
|
40
|
+
cwd: resolve(cwd),
|
|
41
|
+
savedAt: new Date().toISOString(),
|
|
42
|
+
...snapshot,
|
|
43
|
+
transcript: trimTranscript(snapshot.transcript),
|
|
44
|
+
};
|
|
45
|
+
writeFileSync(sessionFilePath(cwd), `${JSON.stringify(payload, null, 2)}\n`, "utf8");
|
|
46
|
+
}
|
|
47
|
+
export function trimTranscript(entries) {
|
|
48
|
+
return entries.slice(-MAX_TRANSCRIPT_ENTRIES).map((entry) => ({
|
|
49
|
+
input: entry.input.slice(0, 500),
|
|
50
|
+
lines: entry.lines.slice(0, MAX_TRANSCRIPT_LINES).map((line) => line.slice(0, 500)),
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
export function buildConversationContext(entries) {
|
|
54
|
+
const trimmed = trimTranscript(entries);
|
|
55
|
+
if (!trimmed.length) {
|
|
56
|
+
return "";
|
|
57
|
+
}
|
|
58
|
+
const blocks = [];
|
|
59
|
+
for (const entry of trimmed.slice(-8)) {
|
|
60
|
+
const reply = entry.lines.find((line) => line.trim())?.trim() ?? "";
|
|
61
|
+
blocks.push(`User: ${entry.input.slice(0, 400)}`);
|
|
62
|
+
if (reply) {
|
|
63
|
+
blocks.push(`Assistant: ${reply.slice(0, 400)}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const text = blocks.join("\n");
|
|
67
|
+
return text.length > 4000 ? text.slice(-4000) : text;
|
|
68
|
+
}
|
|
69
|
+
function normalizeSnapshot(row) {
|
|
70
|
+
return {
|
|
71
|
+
version: 1,
|
|
72
|
+
cwd: resolve(row.cwd ?? process.cwd()),
|
|
73
|
+
savedAt: typeof row.savedAt === "string" ? row.savedAt : "",
|
|
74
|
+
lastRunId: typeof row.lastRunId === "string" ? row.lastRunId : null,
|
|
75
|
+
modelOverride: typeof row.modelOverride === "string" ? row.modelOverride : null,
|
|
76
|
+
executionMode: row.executionMode === "cloud" ? "cloud" : "local",
|
|
77
|
+
permissionMode: row.permissionMode === "suggest" ||
|
|
78
|
+
row.permissionMode === "edit-with-approval" ||
|
|
79
|
+
row.permissionMode === "read-only"
|
|
80
|
+
? row.permissionMode
|
|
81
|
+
: "read-only",
|
|
82
|
+
conversationEpoch: typeof row.conversationEpoch === "number" ? row.conversationEpoch : 0,
|
|
83
|
+
transcript: Array.isArray(row.transcript)
|
|
84
|
+
? trimTranscript(row.transcript.filter((entry) => Boolean(entry && typeof entry === "object" && typeof entry.input === "string" && Array.isArray(entry.lines))))
|
|
85
|
+
: [],
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=session-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../../src/cli/interactive/session-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,6 +22,11 @@ export declare class InteractiveSession {
|
|
|
22
22
|
private verifyDriftGateKey;
|
|
23
23
|
private consumedGateKeys;
|
|
24
24
|
private permissionMode;
|
|
25
|
+
private lastRunId;
|
|
26
|
+
private modelOverride;
|
|
27
|
+
private executionMode;
|
|
28
|
+
private transcriptStartIndex;
|
|
29
|
+
private conversationEpoch;
|
|
25
30
|
constructor(cwd: string);
|
|
26
31
|
append(entry: SessionTranscriptEntry): void;
|
|
27
32
|
clear(): void;
|
|
@@ -67,5 +72,30 @@ export declare class InteractiveSession {
|
|
|
67
72
|
isApprovalGateConsumed(gate: ApprovalGate): boolean;
|
|
68
73
|
getPermissionMode(): PermissionMode;
|
|
69
74
|
setPermissionMode(mode: PermissionMode): void;
|
|
75
|
+
setLastRunId(runId: string | null): void;
|
|
76
|
+
getLastRunId(): string | null;
|
|
77
|
+
setModelOverride(model: string | null): void;
|
|
78
|
+
getModelOverride(): string | null;
|
|
79
|
+
getExecutionMode(): import("./session-store.js").ExecutionMode;
|
|
80
|
+
setExecutionMode(mode: import("./session-store.js").ExecutionMode): void;
|
|
81
|
+
getConversationEpoch(): number;
|
|
82
|
+
getTranscriptStartIndex(): number;
|
|
83
|
+
getActiveTranscript(): SessionTranscriptEntry[];
|
|
84
|
+
hydratePersistedState(input: {
|
|
85
|
+
lastRunId?: string | null;
|
|
86
|
+
modelOverride?: string | null;
|
|
87
|
+
executionMode?: import("./session-store.js").ExecutionMode;
|
|
88
|
+
permissionMode?: PermissionMode;
|
|
89
|
+
conversationEpoch?: number;
|
|
90
|
+
transcript?: SessionTranscriptEntry[];
|
|
91
|
+
}): void;
|
|
92
|
+
exportPersistedState(): {
|
|
93
|
+
lastRunId: string | null;
|
|
94
|
+
modelOverride: string | null;
|
|
95
|
+
executionMode: import("./session-store.js").ExecutionMode;
|
|
96
|
+
permissionMode: PermissionMode;
|
|
97
|
+
conversationEpoch: number;
|
|
98
|
+
transcript: SessionTranscriptEntry[];
|
|
99
|
+
};
|
|
70
100
|
}
|
|
71
101
|
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAElE,OAAO,KAAK,EACV,sBAAsB,EACtB,WAAW,EACX,YAAY,EACZ,eAAe,EACf,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,YAAY,EACb,MAAM,oBAAoB,CAAA;AAE3B,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAED,qBAAa,kBAAkB;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,iBAAiB,CAAsB;IAC/C,OAAO,CAAC,kBAAkB,CAA8B;IACxD,OAAO,CAAC,iBAAiB,CAAmC;IAC5D,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,wBAAwB,CAAsC;IACtE,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,gBAAgB,CAA4B;IACpD,OAAO,CAAC,YAAY,CAAoB;IACxC,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,kBAAkB,CAAsB;IAChD,OAAO,CAAC,gBAAgB,CAAoB;IAC5C,OAAO,CAAC,cAAc,CAA0C;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,11 @@ export class InteractiveSession {
|
|
|
17
17
|
verifyDriftGateKey = null;
|
|
18
18
|
consumedGateKeys = new Set();
|
|
19
19
|
permissionMode = DEFAULT_PERMISSION_MODE;
|
|
20
|
+
lastRunId = null;
|
|
21
|
+
modelOverride = null;
|
|
22
|
+
executionMode = "local";
|
|
23
|
+
transcriptStartIndex = 0;
|
|
24
|
+
conversationEpoch = 0;
|
|
20
25
|
constructor(cwd) {
|
|
21
26
|
this.cwd = cwd;
|
|
22
27
|
}
|
|
@@ -41,6 +46,9 @@ export class InteractiveSession {
|
|
|
41
46
|
this.verifyDriftBlocked = false;
|
|
42
47
|
this.verifyDriftGateKey = null;
|
|
43
48
|
this.consumedGateKeys.clear();
|
|
49
|
+
this.lastRunId = null;
|
|
50
|
+
this.transcriptStartIndex = this.transcript.length;
|
|
51
|
+
this.conversationEpoch += 1;
|
|
44
52
|
}
|
|
45
53
|
size() {
|
|
46
54
|
return this.transcript.length;
|
|
@@ -240,5 +248,66 @@ export class InteractiveSession {
|
|
|
240
248
|
setPermissionMode(mode) {
|
|
241
249
|
this.permissionMode = mode;
|
|
242
250
|
}
|
|
251
|
+
setLastRunId(runId) {
|
|
252
|
+
this.lastRunId = runId?.trim() || null;
|
|
253
|
+
}
|
|
254
|
+
getLastRunId() {
|
|
255
|
+
return this.lastRunId;
|
|
256
|
+
}
|
|
257
|
+
setModelOverride(model) {
|
|
258
|
+
this.modelOverride = model?.trim() || null;
|
|
259
|
+
}
|
|
260
|
+
getModelOverride() {
|
|
261
|
+
return this.modelOverride;
|
|
262
|
+
}
|
|
263
|
+
getExecutionMode() {
|
|
264
|
+
return this.executionMode;
|
|
265
|
+
}
|
|
266
|
+
setExecutionMode(mode) {
|
|
267
|
+
this.executionMode = mode === "cloud" ? "cloud" : "local";
|
|
268
|
+
}
|
|
269
|
+
getConversationEpoch() {
|
|
270
|
+
return this.conversationEpoch;
|
|
271
|
+
}
|
|
272
|
+
getTranscriptStartIndex() {
|
|
273
|
+
return this.transcriptStartIndex;
|
|
274
|
+
}
|
|
275
|
+
getActiveTranscript() {
|
|
276
|
+
return this.transcript.slice(this.transcriptStartIndex);
|
|
277
|
+
}
|
|
278
|
+
hydratePersistedState(input) {
|
|
279
|
+
if (input.lastRunId) {
|
|
280
|
+
this.lastRunId = input.lastRunId;
|
|
281
|
+
}
|
|
282
|
+
if (input.modelOverride) {
|
|
283
|
+
this.modelOverride = input.modelOverride;
|
|
284
|
+
}
|
|
285
|
+
if (input.executionMode) {
|
|
286
|
+
this.executionMode = input.executionMode;
|
|
287
|
+
}
|
|
288
|
+
if (input.permissionMode) {
|
|
289
|
+
this.permissionMode = input.permissionMode;
|
|
290
|
+
}
|
|
291
|
+
if (typeof input.conversationEpoch === "number") {
|
|
292
|
+
this.conversationEpoch = input.conversationEpoch;
|
|
293
|
+
}
|
|
294
|
+
if (input.transcript?.length) {
|
|
295
|
+
this.transcript = input.transcript.map((entry) => ({
|
|
296
|
+
input: entry.input,
|
|
297
|
+
lines: [...entry.lines],
|
|
298
|
+
}));
|
|
299
|
+
this.transcriptStartIndex = 0;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
exportPersistedState() {
|
|
303
|
+
return {
|
|
304
|
+
lastRunId: this.lastRunId,
|
|
305
|
+
modelOverride: this.modelOverride,
|
|
306
|
+
executionMode: this.executionMode,
|
|
307
|
+
permissionMode: this.permissionMode,
|
|
308
|
+
conversationEpoch: this.conversationEpoch,
|
|
309
|
+
transcript: this.snapshot(),
|
|
310
|
+
};
|
|
311
|
+
}
|
|
243
312
|
}
|
|
244
313
|
//# sourceMappingURL=session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/cli/interactive/session.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAiBtE,MAAM,OAAO,kBAAkB;IACpB,GAAG,CAAQ;IACZ,UAAU,GAA6B,EAAE,CAAA;IACzC,WAAW,GAAkB,IAAI,CAAA;IACjC,iBAAiB,GAAkB,IAAI,CAAA;IACvC,kBAAkB,GAA0B,IAAI,CAAA;IAChD,iBAAiB,GAA+B,IAAI,CAAA;IACpD,aAAa,GAAyB,IAAI,CAAA;IAC1C,eAAe,GAA2B,IAAI,CAAA;IAC9C,YAAY,GAAwB,IAAI,CAAA;IACxC,wBAAwB,GAAkC,IAAI,CAAA;IAC9D,eAAe,GAAuB,IAAI,CAAA;IAC1C,gBAAgB,GAAwB,IAAI,CAAA;IAC5C,YAAY,GAAkB,EAAE,CAAA;IAChC,kBAAkB,GAAG,KAAK,CAAA;IAC1B,kBAAkB,GAAkB,IAAI,CAAA;IACxC,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAA;IACpC,cAAc,GAAmB,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/cli/interactive/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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;
|
|
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;AAMtD,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,CA+EjC"}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
import { createInterface } from "node:readline";
|
|
2
2
|
import { createBufferWriter, createStdoutWriter } from "../ui/text-writer.js";
|
|
3
|
-
import { INTERACTIVE_PROMPT
|
|
3
|
+
import { INTERACTIVE_PROMPT } from "./header.js";
|
|
4
4
|
import { SlashLineEditor } from "./line-editor.js";
|
|
5
|
-
import {
|
|
6
|
-
import { InteractiveSession } from "./session.js";
|
|
7
|
-
import { parseSlashInput } from "./slash-parse.js";
|
|
8
|
-
import { dispatchAgentPrompt, dispatchSlashCommand, } from "./slash-dispatch.js";
|
|
9
|
-
import { runApplyConfirmationLine } from "../commands/apply.js";
|
|
5
|
+
import { createInteractiveController } from "./session-controller.js";
|
|
10
6
|
export async function runInteractiveShell(options = {}) {
|
|
11
7
|
const cwd = options.cwd ?? process.cwd();
|
|
12
8
|
const buffer = createBufferWriter();
|
|
@@ -18,53 +14,29 @@ export async function runInteractiveShell(options = {}) {
|
|
|
18
14
|
},
|
|
19
15
|
};
|
|
20
16
|
const prompt = options.prompt ?? INTERACTIVE_PROMPT;
|
|
21
|
-
const
|
|
22
|
-
|
|
17
|
+
const interactive = !options.input && Boolean(process.stdin.isTTY && process.stdout.isTTY);
|
|
18
|
+
const controller = createInteractiveController({
|
|
19
|
+
cwd,
|
|
20
|
+
interactive,
|
|
21
|
+
streamPartials: interactive,
|
|
22
|
+
onPartial: interactive ? (chunk) => process.stdout.write(chunk) : undefined,
|
|
23
|
+
});
|
|
24
|
+
for (const line of controller.renderHeaderLines()) {
|
|
23
25
|
output.line(line);
|
|
24
26
|
}
|
|
25
27
|
output.line("");
|
|
26
28
|
let exitCode = 0;
|
|
27
29
|
const processLine = async (rawLine) => {
|
|
28
|
-
const
|
|
29
|
-
if (!line) {
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
const parsed = parseSlashInput(line);
|
|
33
|
-
if (!parsed) {
|
|
34
|
-
if (session.hasPendingApplyConfirmation()) {
|
|
35
|
-
const result = runApplyConfirmationLine(session, line);
|
|
36
|
-
session.append({ input: line, lines: result.lines });
|
|
37
|
-
for (const entry of result.lines) {
|
|
38
|
-
output.line(entry);
|
|
39
|
-
}
|
|
40
|
-
output.line("");
|
|
41
|
-
exitCode = result.exitCode;
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
const result = await dispatchAgentPrompt(session, line);
|
|
45
|
-
session.append({ input: line, lines: result.lines });
|
|
46
|
-
for (const entry of result.lines) {
|
|
47
|
-
output.line(entry);
|
|
48
|
-
}
|
|
49
|
-
output.line("");
|
|
50
|
-
exitCode = result.exitCode;
|
|
51
|
-
return result.exitShell;
|
|
52
|
-
}
|
|
53
|
-
const result = await dispatchSlashCommand(session, parsed, {
|
|
54
|
-
permissionsInteractive: Boolean(!options.input && process.stdin.isTTY && process.stdout.isTTY),
|
|
55
|
-
});
|
|
56
|
-
session.append({ input: redactSensitiveInput(line), lines: result.lines });
|
|
57
|
-
for (const entry of result.lines) {
|
|
58
|
-
output.line(entry);
|
|
59
|
-
}
|
|
60
|
-
output.line("");
|
|
30
|
+
const result = await controller.processLine(rawLine, output);
|
|
61
31
|
exitCode = result.exitCode;
|
|
32
|
+
if (result.streamed && interactive) {
|
|
33
|
+
process.stdout.write("\n");
|
|
34
|
+
}
|
|
62
35
|
return result.exitShell;
|
|
63
36
|
};
|
|
64
37
|
if (options.input) {
|
|
65
38
|
output.line(`${prompt}(interactive)`);
|
|
66
39
|
for (const rawLine of options.input) {
|
|
67
|
-
output.line(`${prompt}${rawLine}`);
|
|
68
40
|
const shouldExit = await processLine(rawLine);
|
|
69
41
|
if (shouldExit) {
|
|
70
42
|
break;
|
|
@@ -77,7 +49,6 @@ export async function runInteractiveShell(options = {}) {
|
|
|
77
49
|
output.line(`${prompt}(piped)`);
|
|
78
50
|
try {
|
|
79
51
|
for await (const rawLine of rl) {
|
|
80
|
-
output.line(`${prompt}${rawLine}`);
|
|
81
52
|
const shouldExit = await processLine(rawLine);
|
|
82
53
|
if (shouldExit) {
|
|
83
54
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/cli/interactive/shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAG/C,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC7E,OAAO,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/cli/interactive/shell.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,18 @@ import type { ParsedSlashInput } from "./slash-parse.js";
|
|
|
3
3
|
export type SlashDispatchContext = {
|
|
4
4
|
permissionsInteractive?: boolean;
|
|
5
5
|
permissionKeySequence?: readonly string[];
|
|
6
|
+
onTranscriptLine?: (line: string) => void;
|
|
7
|
+
onTranscriptPartial?: (chunk: string) => void;
|
|
6
8
|
};
|
|
7
9
|
export type SlashDispatchResult = {
|
|
8
10
|
lines: string[];
|
|
9
11
|
exitShell: boolean;
|
|
10
12
|
exitCode: number;
|
|
13
|
+
streamed?: boolean;
|
|
11
14
|
};
|
|
12
15
|
export declare function dispatchSlashCommand(session: InteractiveSession, parsed: ParsedSlashInput, context?: SlashDispatchContext): Promise<SlashDispatchResult>;
|
|
13
|
-
export declare function dispatchAgentPrompt(session: InteractiveSession, text: string
|
|
16
|
+
export declare function dispatchAgentPrompt(session: InteractiveSession, text: string, options?: {
|
|
17
|
+
onTranscriptLine?: (line: string) => void;
|
|
18
|
+
onTranscriptPartial?: (chunk: string) => void;
|
|
19
|
+
}): Promise<SlashDispatchResult>;
|
|
14
20
|
//# sourceMappingURL=slash-dispatch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slash-dispatch.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/slash-dispatch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slash-dispatch.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/slash-dispatch.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAcxD,MAAM,MAAM,oBAAoB,GAAG;IACjC,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9C,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,kBAAkB,EAC3B,MAAM,EAAE,gBAAgB,EACxB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAkG9B;AA6XD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,kBAAkB,EAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAAO,GACzG,OAAO,CAAC,mBAAmB,CAAC,CAW9B"}
|