@prestyj/cli 5.2.0 → 5.3.1
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/dist/app-sidecar.js +856 -91
- package/dist/app-sidecar.js.map +1 -1
- package/dist/core/agent-session-compaction.test.js +89 -0
- package/dist/core/agent-session-compaction.test.js.map +1 -1
- package/dist/core/agent-session-queue.test.d.ts +2 -0
- package/dist/core/agent-session-queue.test.d.ts.map +1 -0
- package/dist/core/agent-session-queue.test.js +122 -0
- package/dist/core/agent-session-queue.test.js.map +1 -0
- package/dist/core/agent-session.d.ts +79 -3
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +268 -47
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/autopilot-cycle.d.ts +119 -0
- package/dist/core/autopilot-cycle.d.ts.map +1 -0
- package/dist/core/autopilot-cycle.js +119 -0
- package/dist/core/autopilot-cycle.js.map +1 -0
- package/dist/core/autopilot-cycle.test.d.ts +2 -0
- package/dist/core/autopilot-cycle.test.d.ts.map +1 -0
- package/dist/core/autopilot-cycle.test.js +375 -0
- package/dist/core/autopilot-cycle.test.js.map +1 -0
- package/dist/core/autopilot-gate.d.ts +109 -0
- package/dist/core/autopilot-gate.d.ts.map +1 -0
- package/dist/core/autopilot-gate.js +205 -0
- package/dist/core/autopilot-gate.js.map +1 -0
- package/dist/core/autopilot-gate.test.d.ts +2 -0
- package/dist/core/autopilot-gate.test.d.ts.map +1 -0
- package/dist/core/autopilot-gate.test.js +295 -0
- package/dist/core/autopilot-gate.test.js.map +1 -0
- package/dist/core/autopilot-verdict.d.ts +20 -2
- package/dist/core/autopilot-verdict.d.ts.map +1 -1
- package/dist/core/autopilot-verdict.js +94 -3
- package/dist/core/autopilot-verdict.js.map +1 -1
- package/dist/core/autopilot-verdict.test.js +73 -0
- package/dist/core/autopilot-verdict.test.js.map +1 -1
- package/dist/core/bash-spawn-benchmark.d.ts +2 -0
- package/dist/core/bash-spawn-benchmark.d.ts.map +1 -0
- package/dist/core/bash-spawn-benchmark.js +139 -0
- package/dist/core/bash-spawn-benchmark.js.map +1 -0
- package/dist/core/hashline-edit-benchmark.d.ts +33 -1
- package/dist/core/hashline-edit-benchmark.d.ts.map +1 -1
- package/dist/core/hashline-edit-benchmark.js +193 -21
- package/dist/core/hashline-edit-benchmark.js.map +1 -1
- package/dist/core/hashline-edit-benchmark.test.js +51 -2
- package/dist/core/hashline-edit-benchmark.test.js.map +1 -1
- package/dist/core/json-mode-flag-parity.test.d.ts +2 -0
- package/dist/core/json-mode-flag-parity.test.d.ts.map +1 -0
- package/dist/core/json-mode-flag-parity.test.js +66 -0
- package/dist/core/json-mode-flag-parity.test.js.map +1 -0
- package/dist/core/mcp/deferred-catalog.d.ts +28 -0
- package/dist/core/mcp/deferred-catalog.d.ts.map +1 -0
- package/dist/core/mcp/deferred-catalog.js +72 -0
- package/dist/core/mcp/deferred-catalog.js.map +1 -0
- package/dist/core/mcp/resolve-stdio.d.ts +19 -3
- package/dist/core/mcp/resolve-stdio.d.ts.map +1 -1
- package/dist/core/mcp/resolve-stdio.js +136 -5
- package/dist/core/mcp/resolve-stdio.js.map +1 -1
- package/dist/core/mcp/resolve-stdio.test.js +82 -1
- package/dist/core/mcp/resolve-stdio.test.js.map +1 -1
- package/dist/core/nolan-context.d.ts +43 -2
- package/dist/core/nolan-context.d.ts.map +1 -1
- package/dist/core/nolan-context.js +91 -8
- package/dist/core/nolan-context.js.map +1 -1
- package/dist/core/nolan-context.test.js +167 -5
- package/dist/core/nolan-context.test.js.map +1 -1
- package/dist/core/nolan-model.d.ts +46 -0
- package/dist/core/nolan-model.d.ts.map +1 -0
- package/dist/core/nolan-model.js +30 -0
- package/dist/core/nolan-model.js.map +1 -0
- package/dist/core/nolan-model.test.d.ts +2 -0
- package/dist/core/nolan-model.test.d.ts.map +1 -0
- package/dist/core/nolan-model.test.js +51 -0
- package/dist/core/nolan-model.test.js.map +1 -0
- package/dist/core/nolan-prompt.d.ts +5 -18
- package/dist/core/nolan-prompt.d.ts.map +1 -1
- package/dist/core/nolan-prompt.js +112 -19
- package/dist/core/nolan-prompt.js.map +1 -1
- package/dist/core/nolan-prompt.test.d.ts +2 -0
- package/dist/core/nolan-prompt.test.d.ts.map +1 -0
- package/dist/core/nolan-prompt.test.js +138 -0
- package/dist/core/nolan-prompt.test.js.map +1 -0
- package/dist/core/persistent-shell.d.ts +27 -0
- package/dist/core/persistent-shell.d.ts.map +1 -0
- package/dist/core/persistent-shell.js +150 -0
- package/dist/core/persistent-shell.js.map +1 -0
- package/dist/core/persistent-shell.test.d.ts +2 -0
- package/dist/core/persistent-shell.test.d.ts.map +1 -0
- package/dist/core/persistent-shell.test.js +84 -0
- package/dist/core/persistent-shell.test.js.map +1 -0
- package/dist/core/process-manager-dev-server-repro.test.js +34 -6
- package/dist/core/process-manager-dev-server-repro.test.js.map +1 -1
- package/dist/core/progress/engine.d.ts +23 -0
- package/dist/core/progress/engine.d.ts.map +1 -0
- package/dist/core/progress/engine.js +131 -0
- package/dist/core/progress/engine.js.map +1 -0
- package/dist/core/progress/engine.test.d.ts +2 -0
- package/dist/core/progress/engine.test.d.ts.map +1 -0
- package/dist/core/progress/engine.test.js +136 -0
- package/dist/core/progress/engine.test.js.map +1 -0
- package/dist/core/progress/git-xp.d.ts +16 -0
- package/dist/core/progress/git-xp.d.ts.map +1 -0
- package/dist/core/progress/git-xp.js +106 -0
- package/dist/core/progress/git-xp.js.map +1 -0
- package/dist/core/progress/git-xp.test.d.ts +2 -0
- package/dist/core/progress/git-xp.test.d.ts.map +1 -0
- package/dist/core/progress/git-xp.test.js +88 -0
- package/dist/core/progress/git-xp.test.js.map +1 -0
- package/dist/core/progress/ranks.d.ts +21 -0
- package/dist/core/progress/ranks.d.ts.map +1 -0
- package/dist/core/progress/ranks.js +141 -0
- package/dist/core/progress/ranks.js.map +1 -0
- package/dist/core/progress/ranks.test.d.ts +2 -0
- package/dist/core/progress/ranks.test.d.ts.map +1 -0
- package/dist/core/progress/ranks.test.js +59 -0
- package/dist/core/progress/ranks.test.js.map +1 -0
- package/dist/core/progress/rebuild.d.ts +7 -0
- package/dist/core/progress/rebuild.d.ts.map +1 -0
- package/dist/core/progress/rebuild.js +106 -0
- package/dist/core/progress/rebuild.js.map +1 -0
- package/dist/core/progress/rebuild.test.d.ts +2 -0
- package/dist/core/progress/rebuild.test.d.ts.map +1 -0
- package/dist/core/progress/rebuild.test.js +72 -0
- package/dist/core/progress/rebuild.test.js.map +1 -0
- package/dist/core/progress/store.d.ts +35 -0
- package/dist/core/progress/store.d.ts.map +1 -0
- package/dist/core/progress/store.js +200 -0
- package/dist/core/progress/store.js.map +1 -0
- package/dist/core/progress/store.test.d.ts +2 -0
- package/dist/core/progress/store.test.d.ts.map +1 -0
- package/dist/core/progress/store.test.js +108 -0
- package/dist/core/progress/store.test.js.map +1 -0
- package/dist/core/progress/types.d.ts +108 -0
- package/dist/core/progress/types.d.ts.map +1 -0
- package/dist/core/progress/types.js +3 -0
- package/dist/core/progress/types.js.map +1 -0
- package/dist/core/project-discovery.d.ts.map +1 -1
- package/dist/core/project-discovery.js +40 -9
- package/dist/core/project-discovery.js.map +1 -1
- package/dist/core/project-discovery.test.d.ts +2 -0
- package/dist/core/project-discovery.test.d.ts.map +1 -0
- package/dist/core/project-discovery.test.js +104 -0
- package/dist/core/project-discovery.test.js.map +1 -0
- package/dist/core/session-history.d.ts +51 -0
- package/dist/core/session-history.d.ts.map +1 -0
- package/dist/core/session-history.js +156 -0
- package/dist/core/session-history.js.map +1 -0
- package/dist/core/session-history.test.d.ts +2 -0
- package/dist/core/session-history.test.d.ts.map +1 -0
- package/dist/core/session-history.test.js +101 -0
- package/dist/core/session-history.test.js.map +1 -0
- package/dist/core/session-manager.d.ts +34 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +67 -0
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-manager.test.js +140 -1
- package/dist/core/session-manager.test.js.map +1 -1
- package/dist/core/settings-manager.d.ts +1 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +4 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/speed-benchmark.test.js +2 -3
- package/dist/core/speed-benchmark.test.js.map +1 -1
- package/dist/system-prompt.d.ts.map +1 -1
- package/dist/system-prompt.js +12 -8
- package/dist/system-prompt.js.map +1 -1
- package/dist/system-prompt.test.js +15 -20
- package/dist/system-prompt.test.js.map +1 -1
- package/dist/tools/bash.d.ts +1 -0
- package/dist/tools/bash.d.ts.map +1 -1
- package/dist/tools/bash.js +27 -2
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/edit.d.ts +9 -2
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +91 -10
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/edit.test.js +97 -0
- package/dist/tools/edit.test.js.map +1 -1
- package/dist/tools/plan-mode.test.js +25 -0
- package/dist/tools/plan-mode.test.js.map +1 -1
- package/dist/tools/prompt-hints.d.ts.map +1 -1
- package/dist/tools/prompt-hints.js +3 -0
- package/dist/tools/prompt-hints.js.map +1 -1
- package/dist/tools/subagent.d.ts.map +1 -1
- package/dist/tools/subagent.js +24 -1
- package/dist/tools/subagent.js.map +1 -1
- package/dist/tools/tool-search.d.ts +15 -0
- package/dist/tools/tool-search.d.ts.map +1 -0
- package/dist/tools/tool-search.js +35 -0
- package/dist/tools/tool-search.js.map +1 -0
- package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
- package/dist/ui/hooks/useAgentLoop.js +22 -9
- package/dist/ui/hooks/useAgentLoop.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Queue semantics the sidecar's stranded-queue drain depends on: a message
|
|
3
|
+
* queued while autopilot reviews (no run in flight) must come back OUT of the
|
|
4
|
+
* queue intact — text AND attachments — in FIFO order, exactly once.
|
|
5
|
+
*/
|
|
6
|
+
import fs from "node:fs/promises";
|
|
7
|
+
import os from "node:os";
|
|
8
|
+
import path from "node:path";
|
|
9
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
10
|
+
const agentLoopMock = vi.hoisted(() => vi.fn());
|
|
11
|
+
vi.mock("@prestyj/agent", async () => {
|
|
12
|
+
const actual = await vi.importActual("@prestyj/agent");
|
|
13
|
+
return {
|
|
14
|
+
...actual,
|
|
15
|
+
agentLoop: agentLoopMock,
|
|
16
|
+
};
|
|
17
|
+
});
|
|
18
|
+
vi.mock("./mcp/index.js", async () => {
|
|
19
|
+
const actual = await vi.importActual("./mcp/index.js");
|
|
20
|
+
return {
|
|
21
|
+
...actual,
|
|
22
|
+
MCPClientManager: vi.fn(function MCPClientManagerMock() {
|
|
23
|
+
return {
|
|
24
|
+
connectAll: vi.fn(async () => []),
|
|
25
|
+
dispose: vi.fn(async () => { }),
|
|
26
|
+
};
|
|
27
|
+
}),
|
|
28
|
+
};
|
|
29
|
+
});
|
|
30
|
+
let originalHome;
|
|
31
|
+
let tmpHome;
|
|
32
|
+
let tmpProject;
|
|
33
|
+
beforeEach(async () => {
|
|
34
|
+
originalHome = process.env.HOME;
|
|
35
|
+
tmpHome = await fs.mkdtemp(path.join(os.tmpdir(), "agent-session-queue-home-"));
|
|
36
|
+
tmpProject = await fs.mkdtemp(path.join(os.tmpdir(), "agent-session-queue-project-"));
|
|
37
|
+
process.env.HOME = tmpHome;
|
|
38
|
+
agentLoopMock.mockReset();
|
|
39
|
+
await fs.mkdir(path.join(tmpHome, ".ezcoder"), { recursive: true });
|
|
40
|
+
await fs.writeFile(path.join(tmpHome, ".ezcoder", "auth.json"), JSON.stringify({
|
|
41
|
+
anthropic: {
|
|
42
|
+
accessToken: "test-access-token",
|
|
43
|
+
refreshToken: "test-refresh-token",
|
|
44
|
+
expiresAt: Date.now() + 3_600_000,
|
|
45
|
+
},
|
|
46
|
+
}), "utf-8");
|
|
47
|
+
});
|
|
48
|
+
afterEach(async () => {
|
|
49
|
+
if (originalHome === undefined)
|
|
50
|
+
delete process.env.HOME;
|
|
51
|
+
else
|
|
52
|
+
process.env.HOME = originalHome;
|
|
53
|
+
await fs.rm(tmpHome, { recursive: true, force: true });
|
|
54
|
+
await fs.rm(tmpProject, { recursive: true, force: true });
|
|
55
|
+
vi.clearAllMocks();
|
|
56
|
+
});
|
|
57
|
+
async function makeSession() {
|
|
58
|
+
const { AgentSession } = await import("./agent-session.js");
|
|
59
|
+
const session = new AgentSession({
|
|
60
|
+
provider: "anthropic",
|
|
61
|
+
model: "claude-test",
|
|
62
|
+
cwd: tmpProject,
|
|
63
|
+
systemPrompt: "test system prompt",
|
|
64
|
+
transient: true,
|
|
65
|
+
});
|
|
66
|
+
await session.initialize();
|
|
67
|
+
return session;
|
|
68
|
+
}
|
|
69
|
+
describe("AgentSession queue — takeNextQueuedMessage", () => {
|
|
70
|
+
it("returns queued messages FIFO with attachments preserved, then null", async () => {
|
|
71
|
+
const session = await makeSession();
|
|
72
|
+
try {
|
|
73
|
+
const att = {
|
|
74
|
+
kind: "image",
|
|
75
|
+
name: "x.png",
|
|
76
|
+
mediaType: "image/png",
|
|
77
|
+
data: "AAAA",
|
|
78
|
+
path: "/x.png",
|
|
79
|
+
};
|
|
80
|
+
expect(session.queueMessage("first")).toBe(1);
|
|
81
|
+
expect(session.queueMessage("second", [att])).toBe(2);
|
|
82
|
+
expect(session.getQueuedCount()).toBe(2);
|
|
83
|
+
const a = session.takeNextQueuedMessage();
|
|
84
|
+
expect(a).toEqual({ text: "first", attachments: [] });
|
|
85
|
+
const b = session.takeNextQueuedMessage();
|
|
86
|
+
expect(b?.text).toBe("second");
|
|
87
|
+
// Attachments survive the take — drainQueue would have dropped them.
|
|
88
|
+
expect(b?.attachments).toEqual([att]);
|
|
89
|
+
expect(session.getQueuedCount()).toBe(0);
|
|
90
|
+
expect(session.takeNextQueuedMessage()).toBeNull();
|
|
91
|
+
}
|
|
92
|
+
finally {
|
|
93
|
+
await session.dispose();
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
it("take and drain never double-deliver the same message", async () => {
|
|
97
|
+
const session = await makeSession();
|
|
98
|
+
try {
|
|
99
|
+
session.queueMessage("only one");
|
|
100
|
+
expect(session.takeNextQueuedMessage()?.text).toBe("only one");
|
|
101
|
+
// Already taken — a subsequent cancel-path drain finds nothing.
|
|
102
|
+
expect(session.drainQueue()).toBe("");
|
|
103
|
+
expect(session.getQueuedCount()).toBe(0);
|
|
104
|
+
}
|
|
105
|
+
finally {
|
|
106
|
+
await session.dispose();
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
it("drainQueue still returns merged text for the cancel path", async () => {
|
|
110
|
+
const session = await makeSession();
|
|
111
|
+
try {
|
|
112
|
+
session.queueMessage("alpha");
|
|
113
|
+
session.queueMessage("beta");
|
|
114
|
+
expect(session.drainQueue()).toBe("alpha\n\nbeta");
|
|
115
|
+
expect(session.takeNextQueuedMessage()).toBeNull();
|
|
116
|
+
}
|
|
117
|
+
finally {
|
|
118
|
+
await session.dispose();
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
});
|
|
122
|
+
//# sourceMappingURL=agent-session-queue.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-session-queue.test.js","sourceRoot":"","sources":["../../src/core/agent-session-queue.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Message, type Provider, type ThinkingLevel } from "@prestyj/ai";
|
|
2
2
|
import { EventBus } from "./event-bus.js";
|
|
3
3
|
import { SlashCommandRegistry } from "./slash-commands.js";
|
|
4
|
-
import { type BranchInfo, type NolanTurnPayload } from "./session-manager.js";
|
|
4
|
+
import { type BranchInfo, type NolanTurnPayload, type AutopilotMarkerPayload, type AppMarkerPayload } from "./session-manager.js";
|
|
5
5
|
import type { BackgroundProcess } from "./process-manager.js";
|
|
6
6
|
import { type EnhanceResult } from "../utils/prompt-enhancer.js";
|
|
7
7
|
/** A chat attachment (image / video / other file) prepared for the model. The
|
|
@@ -58,7 +58,12 @@ export interface AgentSessionOptions {
|
|
|
58
58
|
* rebuilds. Hosts (e.g. the ezcoder-app sidecar) use these to surface plan-mode
|
|
59
59
|
* UI. Omitted by callers that don't want plan mode (CLI wires its own).
|
|
60
60
|
*/
|
|
61
|
-
|
|
61
|
+
/**
|
|
62
|
+
* Return `false` to decline plan mode (e.g. an unattended task run where no
|
|
63
|
+
* human is present to approve a plan). The `enter_plan` tool then tells the
|
|
64
|
+
* agent to skip planning and implement directly. Any other return accepts.
|
|
65
|
+
*/
|
|
66
|
+
onEnterPlan?: (reason?: string) => boolean | void | Promise<boolean | void>;
|
|
62
67
|
onExitPlan?: (planPath: string) => Promise<string>;
|
|
63
68
|
/**
|
|
64
69
|
* If provided, the session's tool set is filtered to ONLY these tool names
|
|
@@ -79,6 +84,16 @@ export interface AgentSessionOptions {
|
|
|
79
84
|
* MCP entirely (its dynamic tool names could never match a fixed allow-list).
|
|
80
85
|
*/
|
|
81
86
|
allowedMcpServers?: string[];
|
|
87
|
+
/**
|
|
88
|
+
* Force 1-h prompt-cache TTL + pre-warm regardless of the user's global
|
|
89
|
+
* `speedProfile` setting. Bursty read-only advisory sessions (the Nolan
|
|
90
|
+
* mentor + autopilot reviewer) call the same static system prompt on a
|
|
91
|
+
* schedule that routinely exceeds the default 5-min cache window — a
|
|
92
|
+
* dropped cache there resends the whole cached prefix at full price right
|
|
93
|
+
* when it matters most, independent of whatever the user picked for the
|
|
94
|
+
* main build session. Default (undefined) = follow `speedProfile`.
|
|
95
|
+
*/
|
|
96
|
+
forceLongCacheRetention?: boolean;
|
|
82
97
|
}
|
|
83
98
|
export interface AgentSessionState {
|
|
84
99
|
provider: Provider;
|
|
@@ -102,6 +117,8 @@ export declare class AgentSession {
|
|
|
102
117
|
private extensionLoader;
|
|
103
118
|
private messages;
|
|
104
119
|
private nolanTurns;
|
|
120
|
+
private autopilotMarkers;
|
|
121
|
+
private appMarkers;
|
|
105
122
|
private tools;
|
|
106
123
|
/** Rebuilds the read tool for a new model (video byte cap is baked in at
|
|
107
124
|
* creation). Called from switchModel so video-capable models get the
|
|
@@ -129,6 +146,8 @@ export declare class AgentSession {
|
|
|
129
146
|
private processManager?;
|
|
130
147
|
private lspManager?;
|
|
131
148
|
private mcpManager?;
|
|
149
|
+
/** Deferred MCP tools awaiting discovery via tool_search (bench A win). */
|
|
150
|
+
private mcpCatalog?;
|
|
132
151
|
private provider;
|
|
133
152
|
private model;
|
|
134
153
|
private cwd;
|
|
@@ -183,6 +202,16 @@ export declare class AgentSession {
|
|
|
183
202
|
* turn, so background-connected servers become available on the next prompt.
|
|
184
203
|
*/
|
|
185
204
|
private connectMcpServers;
|
|
205
|
+
/**
|
|
206
|
+
* Route freshly connected MCP tools: deferred into the tool_search catalog
|
|
207
|
+
* (default — keeps ~8k tokens of schema out of every cache-miss turn, see
|
|
208
|
+
* bench/RESULTS.md bench A) or pushed eagerly when the user opted out.
|
|
209
|
+
* Allow-listed sessions (Nolan) always get the eager path — their fixed tool
|
|
210
|
+
* expectations predate the catalog, and tool_search isn't allow-listed.
|
|
211
|
+
* Promotion pushes onto the live `this.tools` array the running agent loop
|
|
212
|
+
* re-reads every turn, so promoted tools are callable on the next step.
|
|
213
|
+
*/
|
|
214
|
+
private addMcpTools;
|
|
186
215
|
/**
|
|
187
216
|
* Process user input. Handles slash commands or runs agent loop.
|
|
188
217
|
*/
|
|
@@ -259,6 +288,14 @@ export declare class AgentSession {
|
|
|
259
288
|
queueMessage(text: string, attachments?: SessionAttachment[]): number;
|
|
260
289
|
/** Number of messages currently queued. */
|
|
261
290
|
getQueuedCount(): number;
|
|
291
|
+
/** Remove and return the oldest queued message (text + attachments), or null.
|
|
292
|
+
* Used by the sidecar to run a message that queued while autopilot was
|
|
293
|
+
* reviewing (no run in flight to steer it into) — unlike {@link drainQueue},
|
|
294
|
+
* attachments survive so queued media isn't silently dropped. */
|
|
295
|
+
takeNextQueuedMessage(): {
|
|
296
|
+
text: string;
|
|
297
|
+
attachments: SessionAttachment[];
|
|
298
|
+
} | null;
|
|
262
299
|
/** Clear the queue, returning the combined text (to restore to the composer).
|
|
263
300
|
* Queued attachments are dropped on cancel — the composer only restores text. */
|
|
264
301
|
drainQueue(): string;
|
|
@@ -287,6 +324,10 @@ export declare class AgentSession {
|
|
|
287
324
|
* by the host to interleave Nolan's advisory exchanges back into the transcript
|
|
288
325
|
* on resume. Never part of the LLM message history. */
|
|
289
326
|
getNolanTurns(): NolanTurnPayload[];
|
|
327
|
+
/** Autopilot verdict markers recorded against this session, in record order.
|
|
328
|
+
* Used by the host to interleave the auto-review loop's markers back into
|
|
329
|
+
* the transcript on resume, mirroring `getNolanTurns`. */
|
|
330
|
+
getAutopilotMarkers(): AutopilotMarkerPayload[];
|
|
290
331
|
/**
|
|
291
332
|
* Record one Nolan Grout (mentor agent) turn against this build session: the
|
|
292
333
|
* user's question + Nolan's reply. Kept in memory for the live transcript and
|
|
@@ -303,6 +344,40 @@ export declare class AgentSession {
|
|
|
303
344
|
* lost when the session is rewritten (those rewrites only re-persist
|
|
304
345
|
* messages). Each turn keeps its original `afterMessageCount` anchor. */
|
|
305
346
|
private rePersistNolanTurns;
|
|
347
|
+
/**
|
|
348
|
+
* Record one autopilot verdict marker (prompted / done / human / capped)
|
|
349
|
+
* against this build session. Kept in memory for the live transcript and
|
|
350
|
+
* persisted as a `custom` entry (parentId null, same as Nolan turns) so a
|
|
351
|
+
* resumed session renders the exact same Nolan bubble the live run showed
|
|
352
|
+
* instead of dropping the marker or falling back to a raw verdict string.
|
|
353
|
+
* No-op persistence for transient sessions (kept in memory only).
|
|
354
|
+
*/
|
|
355
|
+
persistAutopilotMarker(phase: AutopilotMarkerPayload["phase"], extra?: {
|
|
356
|
+
reason?: string;
|
|
357
|
+
body?: string;
|
|
358
|
+
}): Promise<void>;
|
|
359
|
+
/** Re-append the in-memory autopilot markers to the current session file.
|
|
360
|
+
* Mirrors `rePersistNolanTurns` — called after a continuation/compaction file
|
|
361
|
+
* is created so the auto-review history survives the rewrite. */
|
|
362
|
+
private rePersistAutopilotMarkers;
|
|
363
|
+
/** App transcript markers recorded against this session, in record order.
|
|
364
|
+
* Used by the host to interleave display-only rows (plan banner, task
|
|
365
|
+
* header, errors, user-bubble hints) back into the transcript on resume. */
|
|
366
|
+
getAppMarkers(): AppMarkerPayload[];
|
|
367
|
+
/**
|
|
368
|
+
* Record one app transcript marker (display-only row) against this session.
|
|
369
|
+
* Same treatment as autopilot markers: kept in memory for the live
|
|
370
|
+
* transcript, persisted as a `custom` entry (parentId null, never on the
|
|
371
|
+
* message DAG) so a resumed session shows the identical row. `anchorOffset`
|
|
372
|
+
* shifts the recorded `afterMessageCount` — pass +1 for a marker that should
|
|
373
|
+
* attach to the user message about to be pushed by the imminent prompt.
|
|
374
|
+
* No-op persistence for transient sessions.
|
|
375
|
+
*/
|
|
376
|
+
persistAppMarker(kind: AppMarkerPayload["kind"], data: Record<string, unknown>, anchorOffset?: number): Promise<void>;
|
|
377
|
+
/** Re-append the in-memory app markers to the current session file. Mirrors
|
|
378
|
+
* `rePersistNolanTurns` — called after a continuation/compaction file is
|
|
379
|
+
* created so display-only rows survive the rewrite. */
|
|
380
|
+
private rePersistAppMarkers;
|
|
306
381
|
/**
|
|
307
382
|
* Generate a short LLM session title from the conversation so far (first user
|
|
308
383
|
* message + first assistant reply). Best-effort; returns null on failure or
|
|
@@ -324,7 +399,8 @@ export declare class AgentSession {
|
|
|
324
399
|
setThinkingLevel(level: ThinkingLevel | undefined): void;
|
|
325
400
|
/** Replace the abort signal (e.g. after cancellation). */
|
|
326
401
|
setSignal(signal: AbortSignal): void;
|
|
327
|
-
/** True when speedProfile is "optimized" (1-h cache TTL + pre-warm)
|
|
402
|
+
/** True when speedProfile is "optimized" (1-h cache TTL + pre-warm), or the
|
|
403
|
+
* session was constructed with `forceLongCacheRetention` (Nolan sessions). */
|
|
328
404
|
private isSpeedOptimized;
|
|
329
405
|
/**
|
|
330
406
|
* Ordered auth-storage keys the current (provider, model) pair tries, first
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session.d.ts","sourceRoot":"","sources":["../../src/core/agent-session.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,aAAa,EAInB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EACL,oBAAoB,EAGrB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,
|
|
1
|
+
{"version":3,"file":"agent-session.d.ts","sourceRoot":"","sources":["../../src/core/agent-session.ts"],"names":[],"mappings":"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"}
|