linkshell-cli 0.6.2 → 0.6.4
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/README.md +47 -132
- package/dist/cli/src/auth.js +1 -1
- package/dist/cli/src/auth.js.map +1 -1
- package/dist/cli/src/commands/doctor.d.ts +1 -1
- package/dist/cli/src/commands/doctor.js +76 -36
- package/dist/cli/src/commands/doctor.js.map +1 -1
- package/dist/cli/src/commands/host.d.ts +14 -0
- package/dist/cli/src/commands/host.js +94 -15
- package/dist/cli/src/commands/host.js.map +1 -1
- package/dist/cli/src/commands/logout.d.ts +1 -1
- package/dist/cli/src/commands/logout.js +10 -2
- package/dist/cli/src/commands/logout.js.map +1 -1
- package/dist/cli/src/commands/upgrade.js +11 -0
- package/dist/cli/src/commands/upgrade.js.map +1 -1
- package/dist/cli/src/config.js +1 -1
- package/dist/cli/src/config.js.map +1 -1
- package/dist/cli/src/index.js +94 -114
- package/dist/cli/src/index.js.map +1 -1
- package/dist/cli/tsconfig.tsbuildinfo +1 -1
- package/dist/host/src/carry.d.ts +15 -0
- package/dist/host/src/carry.js +83 -0
- package/dist/host/src/carry.js.map +1 -0
- package/dist/host/src/drivers/acp/driver.d.ts +13 -3
- package/dist/host/src/drivers/acp/driver.js +43 -8
- package/dist/host/src/drivers/acp/driver.js.map +1 -1
- package/dist/host/src/drivers/acp/mapper.d.ts +5 -1
- package/dist/host/src/drivers/acp/mapper.js +53 -5
- package/dist/host/src/drivers/acp/mapper.js.map +1 -1
- package/dist/host/src/drivers/claude/driver.d.ts +53 -8
- package/dist/host/src/drivers/claude/driver.js +357 -40
- package/dist/host/src/drivers/claude/driver.js.map +1 -1
- package/dist/host/src/drivers/claude/holders.d.ts +9 -0
- package/dist/host/src/drivers/claude/holders.js +61 -0
- package/dist/host/src/drivers/claude/holders.js.map +1 -0
- package/dist/host/src/drivers/claude/transcript.d.ts +100 -62
- package/dist/host/src/drivers/claude/transcript.js +246 -26
- package/dist/host/src/drivers/claude/transcript.js.map +1 -1
- package/dist/host/src/drivers/codex/commands.d.ts +27 -0
- package/dist/host/src/drivers/codex/commands.js +23 -0
- package/dist/host/src/drivers/codex/commands.js.map +1 -0
- package/dist/host/src/drivers/codex/driver.d.ts +15 -1
- package/dist/host/src/drivers/codex/driver.js +110 -1
- package/dist/host/src/drivers/codex/driver.js.map +1 -1
- package/dist/host/src/drivers/codex/mapper.d.ts +4 -0
- package/dist/host/src/drivers/codex/mapper.js +29 -5
- package/dist/host/src/drivers/codex/mapper.js.map +1 -1
- package/dist/host/src/drivers/types.d.ts +34 -3
- package/dist/host/src/fs.d.ts +26 -4
- package/dist/host/src/fs.js +71 -17
- package/dist/host/src/fs.js.map +1 -1
- package/dist/host/src/gateway.d.ts +3 -0
- package/dist/host/src/gateway.js +9 -0
- package/dist/host/src/gateway.js.map +1 -1
- package/dist/host/src/host.d.ts +7 -3
- package/dist/host/src/host.js +42 -18
- package/dist/host/src/host.js.map +1 -1
- package/dist/host/src/hub.d.ts +91 -15
- package/dist/host/src/hub.js +556 -33
- package/dist/host/src/hub.js.map +1 -1
- package/dist/host/src/rpc/server.d.ts +4 -2
- package/dist/host/src/rpc/server.js +51 -6
- package/dist/host/src/rpc/server.js.map +1 -1
- package/dist/host/src/screen.d.ts +11 -0
- package/dist/host/src/screen.js +57 -3
- package/dist/host/src/screen.js.map +1 -1
- package/dist/host/src/slim.d.ts +17 -0
- package/dist/host/src/slim.js +66 -0
- package/dist/host/src/slim.js.map +1 -0
- package/dist/host/src/store.d.ts +75 -3
- package/dist/host/src/store.js +216 -16
- package/dist/host/src/store.js.map +1 -1
- package/dist/host/src/terminals.d.ts +4 -4
- package/dist/host/src/worktrees.d.ts +36 -0
- package/dist/host/src/worktrees.js +96 -0
- package/dist/host/src/worktrees.js.map +1 -0
- package/dist/wire/src/model.d.ts +301 -153
- package/dist/wire/src/model.js +55 -0
- package/dist/wire/src/model.js.map +1 -1
- package/dist/wire/src/relay-client.d.ts +2 -0
- package/dist/wire/src/relay-client.js +12 -0
- package/dist/wire/src/relay-client.js.map +1 -1
- package/dist/wire/src/rpc.d.ts +6740 -1022
- package/dist/wire/src/rpc.js +130 -7
- package/dist/wire/src/rpc.js.map +1 -1
- package/dist/wire/src/updates.d.ts +498 -498
- package/package.json +5 -5
- package/src/auth.ts +1 -1
- package/src/commands/doctor.ts +76 -34
- package/src/commands/host.ts +98 -14
- package/src/commands/logout.ts +10 -2
- package/src/commands/upgrade.ts +11 -0
- package/src/config.ts +1 -1
- package/src/index.ts +93 -131
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// What a client is sent of an event. The log keeps everything an agent
|
|
2
|
+
// produced; a phone reading a session through a relay needs the conversation,
|
|
3
|
+
// not every screenshot and file dump in it. Pictures become references the
|
|
4
|
+
// client loads when it shows them, and very long text is cut.
|
|
5
|
+
/** Pictures up to this size (base64 characters) travel inline. */
|
|
6
|
+
const INLINE_IMAGE = 16 * 1024;
|
|
7
|
+
/** Text beyond this is cut. */
|
|
8
|
+
const MAX_TEXT = 32 * 1024;
|
|
9
|
+
const KEPT_TEXT = 24 * 1024;
|
|
10
|
+
const IMAGE_URI = /^linkshell-event:(\d+)\/(\d+)$/;
|
|
11
|
+
function isLargeImage(value) {
|
|
12
|
+
const block = value;
|
|
13
|
+
return block?.type === "image" && typeof block.data === "string" && block.data.length > INLINE_IMAGE && typeof block.mimeType === "string";
|
|
14
|
+
}
|
|
15
|
+
/** Visits every large picture in an update, in a fixed order; `replace` returns what takes its place. */
|
|
16
|
+
function walk(value, state, replace, cut) {
|
|
17
|
+
if (typeof value === "string") {
|
|
18
|
+
if (!cut || value.length <= MAX_TEXT)
|
|
19
|
+
return value;
|
|
20
|
+
return `${value.slice(0, KEPT_TEXT)}\n… [已省略 ${Math.round((value.length - KEPT_TEXT) / 1024)} KB,完整内容在电脑上]`;
|
|
21
|
+
}
|
|
22
|
+
if (Array.isArray(value)) {
|
|
23
|
+
let out;
|
|
24
|
+
value.forEach((entry, i) => {
|
|
25
|
+
const next = walk(entry, state, replace, cut);
|
|
26
|
+
if (next !== entry)
|
|
27
|
+
(out ??= value.slice())[i] = next;
|
|
28
|
+
});
|
|
29
|
+
return out ?? value;
|
|
30
|
+
}
|
|
31
|
+
if (value && typeof value === "object") {
|
|
32
|
+
if (isLargeImage(value))
|
|
33
|
+
return replace(value, state.images++);
|
|
34
|
+
let out;
|
|
35
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
36
|
+
const next = walk(entry, state, replace, cut);
|
|
37
|
+
if (next !== entry)
|
|
38
|
+
(out ??= { ...value })[key] = next;
|
|
39
|
+
}
|
|
40
|
+
return out ?? value;
|
|
41
|
+
}
|
|
42
|
+
return value;
|
|
43
|
+
}
|
|
44
|
+
/** The event as sent to a client; the same object when nothing in it is heavy. */
|
|
45
|
+
export function slimEvent(event, options = {}) {
|
|
46
|
+
const update = walk(event.update, { images: 0 }, (image, index) => options.lazyImages
|
|
47
|
+
? { type: "image", mimeType: image.mimeType, uri: `linkshell-event:${event.seq}/${index}` }
|
|
48
|
+
: { type: "text", text: "[图片]" }, true);
|
|
49
|
+
return update === event.update ? event : { ...event, update: update };
|
|
50
|
+
}
|
|
51
|
+
/** Which event and which of its pictures a `linkshell-event:` uri names. */
|
|
52
|
+
export function parseImageUri(uri) {
|
|
53
|
+
const match = IMAGE_URI.exec(uri);
|
|
54
|
+
return match ? { seq: Number(match[1]), index: Number(match[2]) } : undefined;
|
|
55
|
+
}
|
|
56
|
+
/** The picture `slimEvent` replaced with reference `index`. */
|
|
57
|
+
export function imageOf(event, index) {
|
|
58
|
+
let found;
|
|
59
|
+
walk(event.update, { images: 0 }, (image, at) => {
|
|
60
|
+
if (at === index)
|
|
61
|
+
found = { mimeType: image.mimeType, data: image.data };
|
|
62
|
+
return image;
|
|
63
|
+
}, false);
|
|
64
|
+
return found;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=slim.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slim.js","sourceRoot":"","sources":["../../../../host/src/slim.ts"],"names":[],"mappings":"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"}
|
package/dist/host/src/store.d.ts
CHANGED
|
@@ -36,6 +36,33 @@ export type SessionPatch = Partial<{
|
|
|
36
36
|
archived: boolean;
|
|
37
37
|
customTitle: string | null;
|
|
38
38
|
}>;
|
|
39
|
+
/** A git worktree made for sessions (see worktrees.ts). */
|
|
40
|
+
export interface WorktreeRecord {
|
|
41
|
+
/** The worktree's top directory. */
|
|
42
|
+
path: string;
|
|
43
|
+
branch: string;
|
|
44
|
+
/** The repository's top directory. */
|
|
45
|
+
source: string;
|
|
46
|
+
/** The directory the first session in it was started from (a project, possibly inside the repository). */
|
|
47
|
+
sourceCwd: string;
|
|
48
|
+
/** The commit it started at. */
|
|
49
|
+
base: string;
|
|
50
|
+
createdAt: number;
|
|
51
|
+
}
|
|
52
|
+
/** The worktree `cwd` is in, if any. */
|
|
53
|
+
export declare function worktreeOf(cwd: string, worktrees: WorktreeRecord[]): WorktreeRecord | undefined;
|
|
54
|
+
/** How much history one page carries (see `pageStart`). */
|
|
55
|
+
export interface PageBudget {
|
|
56
|
+
/** A page goes back whole turns until it has this many events or bytes… */
|
|
57
|
+
minEvents: number;
|
|
58
|
+
minBytes: number;
|
|
59
|
+
/** …and never more than this, even inside one turn. */
|
|
60
|
+
maxEvents: number;
|
|
61
|
+
maxBytes: number;
|
|
62
|
+
/** What one event counts for at most: its size as sent, not as stored. */
|
|
63
|
+
eventBytes: number;
|
|
64
|
+
}
|
|
65
|
+
export declare const PAGE: PageBudget;
|
|
39
66
|
/**
|
|
40
67
|
* Durable host state: session summaries plus one append-only event log per
|
|
41
68
|
* session. Every update a client sees gets a per-session `seq`, so a client
|
|
@@ -66,9 +93,54 @@ export declare class HostStore {
|
|
|
66
93
|
includeArchived?: boolean;
|
|
67
94
|
}): SessionSummary[];
|
|
68
95
|
listProjects(limit?: number): ProjectSummary[];
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
96
|
+
saveWorktree(worktree: WorktreeRecord): void;
|
|
97
|
+
listWorktrees(): WorktreeRecord[];
|
|
98
|
+
deleteWorktree(path: string): void;
|
|
99
|
+
/** Sessions whose directory is `path` or inside it. */
|
|
100
|
+
sessionsUnder(path: string): string[];
|
|
101
|
+
/** The seq of the latest event that mentions message or tool call `itemId`, and how many turns had started by then. */
|
|
102
|
+
locateItem(sessionId: string, itemId: string): {
|
|
103
|
+
seq: number;
|
|
104
|
+
turn: number;
|
|
105
|
+
} | undefined;
|
|
106
|
+
/** Where the exchange that `seq` is in ends: just before the user speaks next, or the end of the session. */
|
|
107
|
+
turnEnd(sessionId: string, seq: number): number;
|
|
108
|
+
/**
|
|
109
|
+
* Appends one update to the session's log and returns it with its seq.
|
|
110
|
+
* `activity` false: the session's "last updated" stays (a setting or a name
|
|
111
|
+
* is not something happening in the session).
|
|
112
|
+
*/
|
|
113
|
+
appendEvent(sessionId: string, update: SessionUpdate, ts?: number, activity?: boolean): SessionEvent;
|
|
114
|
+
/** Events after `afterSeq`, up to and including `upToSeq` when given. */
|
|
115
|
+
readEvents(sessionId: string, afterSeq: number, limit?: number, upToSeq?: number): SessionEvent[];
|
|
116
|
+
readEvent(sessionId: string, seq: number): SessionEvent | undefined;
|
|
117
|
+
/** How much was logged after `afterSeq`. */
|
|
118
|
+
sizeAfter(sessionId: string, afterSeq: number): {
|
|
119
|
+
events: number;
|
|
120
|
+
bytes: number;
|
|
121
|
+
};
|
|
122
|
+
/**
|
|
123
|
+
* Where a page of history ending at `beforeSeq` starts: the seq before its
|
|
124
|
+
* first event (0: the beginning of the log). Pages are whole turns, going
|
|
125
|
+
* back until one is worth showing; a single turn too big for a page is cut.
|
|
126
|
+
*/
|
|
127
|
+
pageStart(sessionId: string, beforeSeq: number, page?: PageBudget): number;
|
|
128
|
+
/** The calls that started a sub-agent, oldest first. */
|
|
129
|
+
subagentCalls(sessionId: string): SessionEvent[];
|
|
130
|
+
/** A tool call's own events (the call and its updates), oldest first. */
|
|
131
|
+
toolEvents(sessionId: string, toolCallId: string): SessionEvent[];
|
|
132
|
+
/** The latest `limit` events of the sub-agent under a tool call, oldest first. */
|
|
133
|
+
eventsUnder(sessionId: string, toolCallId: string, limit: number): SessionEvent[];
|
|
134
|
+
/** A tool call's latest status, whether the sub-agent under it is in a turn, and when that sub-agent last did anything. */
|
|
135
|
+
toolState(sessionId: string, toolCallId: string): {
|
|
136
|
+
status?: string;
|
|
137
|
+
ts?: number;
|
|
138
|
+
turnActive?: boolean;
|
|
139
|
+
lastChildTs?: number;
|
|
140
|
+
};
|
|
141
|
+
private joined;
|
|
142
|
+
/** The latest event of `kind` at or before `seq`. */
|
|
143
|
+
latestOfKind(sessionId: string, kind: SessionUpdate["sessionUpdate"], seq: number, limit?: number): SessionEvent[];
|
|
72
144
|
/** Marks a native item (message, tool call) as present in the log. Returns false if it already was. */
|
|
73
145
|
markItemLogged(sessionId: string, itemId: string): boolean;
|
|
74
146
|
isItemLogged(sessionId: string, itemId: string): boolean;
|
package/dist/host/src/store.js
CHANGED
|
@@ -27,6 +27,18 @@ CREATE TABLE IF NOT EXISTS events (
|
|
|
27
27
|
body TEXT NOT NULL,
|
|
28
28
|
PRIMARY KEY (session_id, seq)
|
|
29
29
|
) WITHOUT ROWID;
|
|
30
|
+
CREATE TABLE IF NOT EXISTS event_meta (
|
|
31
|
+
session_id TEXT NOT NULL,
|
|
32
|
+
seq INTEGER NOT NULL,
|
|
33
|
+
kind TEXT NOT NULL,
|
|
34
|
+
bytes INTEGER NOT NULL,
|
|
35
|
+
opens_turn INTEGER NOT NULL DEFAULT 0,
|
|
36
|
+
tool TEXT,
|
|
37
|
+
parent TEXT,
|
|
38
|
+
spawns INTEGER NOT NULL DEFAULT 0,
|
|
39
|
+
PRIMARY KEY (session_id, seq)
|
|
40
|
+
) WITHOUT ROWID;
|
|
41
|
+
CREATE INDEX IF NOT EXISTS event_meta_by_kind ON event_meta (session_id, kind, seq);
|
|
30
42
|
CREATE TABLE IF NOT EXISTS logged_items (
|
|
31
43
|
session_id TEXT NOT NULL,
|
|
32
44
|
item_id TEXT NOT NULL,
|
|
@@ -48,6 +60,14 @@ CREATE TABLE IF NOT EXISTS removed_sessions (
|
|
|
48
60
|
id TEXT PRIMARY KEY,
|
|
49
61
|
ts INTEGER NOT NULL
|
|
50
62
|
) WITHOUT ROWID;
|
|
63
|
+
CREATE TABLE IF NOT EXISTS worktrees (
|
|
64
|
+
path TEXT PRIMARY KEY,
|
|
65
|
+
branch TEXT NOT NULL,
|
|
66
|
+
source TEXT NOT NULL,
|
|
67
|
+
source_cwd TEXT NOT NULL,
|
|
68
|
+
base TEXT NOT NULL,
|
|
69
|
+
created_at INTEGER NOT NULL
|
|
70
|
+
) WITHOUT ROWID;
|
|
51
71
|
CREATE TABLE IF NOT EXISTS terminals (
|
|
52
72
|
id TEXT PRIMARY KEY,
|
|
53
73
|
cwd TEXT NOT NULL,
|
|
@@ -93,6 +113,15 @@ function toSummary(row) {
|
|
|
93
113
|
archived: row.archived === 1,
|
|
94
114
|
};
|
|
95
115
|
}
|
|
116
|
+
/** The worktree `cwd` is in, if any. */
|
|
117
|
+
export function worktreeOf(cwd, worktrees) {
|
|
118
|
+
return worktrees.find((worktree) => cwd === worktree.path || cwd.startsWith(`${worktree.path}/`));
|
|
119
|
+
}
|
|
120
|
+
/** The project a session in `cwd` belongs to: for a worktree, the directory it was made from. */
|
|
121
|
+
function projectOf(cwd, worktrees) {
|
|
122
|
+
return worktreeOf(cwd, worktrees)?.sourceCwd ?? cwd;
|
|
123
|
+
}
|
|
124
|
+
export const PAGE = { minEvents: 120, minBytes: 384 * 1024, maxEvents: 600, maxBytes: 2 * 1024 * 1024, eventBytes: 40 * 1024 };
|
|
96
125
|
/**
|
|
97
126
|
* Durable host state: session summaries plus one append-only event log per
|
|
98
127
|
* session. Every update a client sees gets a per-session `seq`, so a client
|
|
@@ -110,13 +139,41 @@ export class HostStore {
|
|
|
110
139
|
const columns = new Set(this.db.prepare("PRAGMA table_info(sessions)").all().map((c) => c.name));
|
|
111
140
|
if (!columns.has("custom_title"))
|
|
112
141
|
this.db.exec("ALTER TABLE sessions ADD COLUMN custom_title TEXT");
|
|
142
|
+
// event_meta came later (and its sub-agent columns later still): describe
|
|
143
|
+
// the events logged before it, once.
|
|
144
|
+
const meta = new Set(this.db.prepare("PRAGMA table_info(event_meta)").all().map((c) => c.name));
|
|
145
|
+
if (!meta.has("tool")) {
|
|
146
|
+
this.db.exec("ALTER TABLE event_meta ADD COLUMN tool TEXT; ALTER TABLE event_meta ADD COLUMN parent TEXT; ALTER TABLE event_meta ADD COLUMN spawns INTEGER NOT NULL DEFAULT 0;");
|
|
147
|
+
}
|
|
148
|
+
this.db.exec(`
|
|
149
|
+
CREATE INDEX IF NOT EXISTS event_meta_by_tool ON event_meta (session_id, tool, seq) WHERE tool IS NOT NULL;
|
|
150
|
+
CREATE INDEX IF NOT EXISTS event_meta_by_parent ON event_meta (session_id, parent, seq) WHERE parent IS NOT NULL;
|
|
151
|
+
CREATE INDEX IF NOT EXISTS event_meta_spawns ON event_meta (session_id, seq) WHERE spawns = 1;
|
|
152
|
+
`);
|
|
153
|
+
const { user_version: version } = this.db.prepare("PRAGMA user_version").get();
|
|
154
|
+
if (version < 2) {
|
|
155
|
+
this.db.exec(`
|
|
156
|
+
INSERT OR REPLACE INTO event_meta (session_id, seq, kind, bytes, opens_turn, tool, parent, spawns)
|
|
157
|
+
SELECT session_id, seq, COALESCE(json_extract(body, '$.sessionUpdate'), ''), length(CAST(body AS BLOB)),
|
|
158
|
+
CASE json_extract(body, '$.sessionUpdate')
|
|
159
|
+
WHEN 'user_message_chunk' THEN 1
|
|
160
|
+
WHEN 'ls_turn' THEN COALESCE(json_extract(body, '$.state') = 'started' AND json_extract(body, '$.parentToolCallId') IS NULL, 0)
|
|
161
|
+
ELSE 0 END,
|
|
162
|
+
json_extract(body, '$.toolCallId'),
|
|
163
|
+
json_extract(body, '$.parentToolCallId'),
|
|
164
|
+
COALESCE(json_extract(body, '$.sessionUpdate') = 'tool_call' AND json_extract(body, '$.detail.type') = 'subagent'
|
|
165
|
+
AND COALESCE(json_extract(body, '$.detail.action'), 'spawn') = 'spawn', 0)
|
|
166
|
+
FROM events;
|
|
167
|
+
PRAGMA user_version = 2;
|
|
168
|
+
`);
|
|
169
|
+
}
|
|
113
170
|
}
|
|
114
171
|
// ── removal ───────────────────────────────────────────────────────
|
|
115
172
|
/** Deleted by the user: forgotten, and kept out of rediscovery. */
|
|
116
173
|
removeSession(id) {
|
|
117
174
|
this.db.exec("BEGIN IMMEDIATE");
|
|
118
175
|
try {
|
|
119
|
-
for (const table of ["sessions", "events", "logged_items", "driver_state", "client_messages"]) {
|
|
176
|
+
for (const table of ["sessions", "events", "event_meta", "logged_items", "driver_state", "client_messages"]) {
|
|
120
177
|
const column = table === "sessions" ? "id" : "session_id";
|
|
121
178
|
this.db.prepare(`DELETE FROM ${table} WHERE ${column} = ?`).run(id);
|
|
122
179
|
}
|
|
@@ -225,28 +282,90 @@ export class HostStore {
|
|
|
225
282
|
}
|
|
226
283
|
listProjects(limit = 50) {
|
|
227
284
|
const rows = this.db
|
|
228
|
-
.prepare(`SELECT cwd, MAX(updated_at) AS last_active_at, COUNT(*) AS session_count
|
|
229
|
-
|
|
230
|
-
|
|
285
|
+
.prepare(`SELECT cwd, MAX(updated_at) AS last_active_at, COUNT(*) AS session_count FROM sessions WHERE archived = 0 GROUP BY cwd`)
|
|
286
|
+
.all();
|
|
287
|
+
// A session in a worktree belongs to the project the worktree was made from.
|
|
288
|
+
const worktrees = this.listWorktrees();
|
|
289
|
+
const projects = new Map();
|
|
290
|
+
for (const row of rows) {
|
|
291
|
+
const cwd = projectOf(row.cwd, worktrees);
|
|
292
|
+
const project = projects.get(cwd) ?? { cwd, name: basename(cwd) || cwd, lastActiveAt: 0, sessionCount: 0 };
|
|
293
|
+
project.lastActiveAt = Math.max(project.lastActiveAt, row.last_active_at);
|
|
294
|
+
project.sessionCount += row.session_count;
|
|
295
|
+
projects.set(cwd, project);
|
|
296
|
+
}
|
|
297
|
+
return [...projects.values()].sort((a, b) => b.lastActiveAt - a.lastActiveAt).slice(0, limit);
|
|
298
|
+
}
|
|
299
|
+
// ── worktrees ─────────────────────────────────────────────────────
|
|
300
|
+
saveWorktree(worktree) {
|
|
301
|
+
this.db
|
|
302
|
+
.prepare("INSERT OR REPLACE INTO worktrees (path, branch, source, source_cwd, base, created_at) VALUES (?, ?, ?, ?, ?, ?)")
|
|
303
|
+
.run(worktree.path, worktree.branch, worktree.source, worktree.sourceCwd, worktree.base, worktree.createdAt);
|
|
304
|
+
}
|
|
305
|
+
listWorktrees() {
|
|
306
|
+
const rows = this.db.prepare("SELECT * FROM worktrees ORDER BY created_at DESC").all();
|
|
231
307
|
return rows.map((row) => ({
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
308
|
+
path: String(row.path),
|
|
309
|
+
branch: String(row.branch),
|
|
310
|
+
source: String(row.source),
|
|
311
|
+
sourceCwd: String(row.source_cwd),
|
|
312
|
+
base: String(row.base),
|
|
313
|
+
createdAt: Number(row.created_at),
|
|
236
314
|
}));
|
|
237
315
|
}
|
|
238
|
-
|
|
239
|
-
|
|
316
|
+
deleteWorktree(path) {
|
|
317
|
+
this.db.prepare("DELETE FROM worktrees WHERE path = ?").run(path);
|
|
318
|
+
}
|
|
319
|
+
/** Sessions whose directory is `path` or inside it. */
|
|
320
|
+
sessionsUnder(path) {
|
|
321
|
+
const rows = this.db.prepare("SELECT id FROM sessions WHERE cwd = ? OR substr(cwd, 1, ?) = ?").all(path, path.length + 1, `${path}/`);
|
|
322
|
+
return rows.map((row) => row.id);
|
|
323
|
+
}
|
|
324
|
+
/** The seq of the latest event that mentions message or tool call `itemId`, and how many turns had started by then. */
|
|
325
|
+
locateItem(sessionId, itemId) {
|
|
326
|
+
const tool = this.db
|
|
327
|
+
.prepare("SELECT MAX(seq) AS seq FROM event_meta WHERE session_id = ? AND tool = ?")
|
|
328
|
+
.get(sessionId, itemId);
|
|
329
|
+
const needle = `"messageId":${JSON.stringify(itemId)}`;
|
|
330
|
+
const message = this.db
|
|
331
|
+
.prepare("SELECT MAX(seq) AS seq FROM events WHERE session_id = ? AND instr(body, ?) > 0")
|
|
332
|
+
.get(sessionId, needle);
|
|
333
|
+
const seq = Math.max(tool.seq ?? 0, message.seq ?? 0);
|
|
334
|
+
if (seq === 0)
|
|
335
|
+
return undefined;
|
|
336
|
+
const { turn } = this.db
|
|
337
|
+
.prepare("SELECT COUNT(*) AS turn FROM event_meta WHERE session_id = ? AND kind = 'ls_turn' AND opens_turn = 1 AND seq <= ?")
|
|
338
|
+
.get(sessionId, seq);
|
|
339
|
+
return { seq, turn };
|
|
340
|
+
}
|
|
341
|
+
/** Where the exchange that `seq` is in ends: just before the user speaks next, or the end of the session. */
|
|
342
|
+
turnEnd(sessionId, seq) {
|
|
343
|
+
const next = this.db
|
|
344
|
+
.prepare("SELECT MIN(seq) AS seq FROM event_meta WHERE session_id = ? AND kind = 'user_message_chunk' AND seq > ?")
|
|
345
|
+
.get(sessionId, seq);
|
|
346
|
+
return next.seq ? next.seq - 1 : (this.getSession(sessionId)?.lastSeq ?? seq);
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Appends one update to the session's log and returns it with its seq.
|
|
350
|
+
* `activity` false: the session's "last updated" stays (a setting or a name
|
|
351
|
+
* is not something happening in the session).
|
|
352
|
+
*/
|
|
353
|
+
appendEvent(sessionId, update, ts = Date.now(), activity = true) {
|
|
240
354
|
this.db.exec("BEGIN IMMEDIATE");
|
|
241
355
|
try {
|
|
242
356
|
const row = this.db.prepare("SELECT last_seq FROM sessions WHERE id = ?").get(sessionId);
|
|
243
357
|
if (!row)
|
|
244
358
|
throw new Error(`unknown session ${sessionId}`);
|
|
245
359
|
const seq = row.last_seq + 1;
|
|
360
|
+
const body = JSON.stringify(update);
|
|
361
|
+
this.db.prepare("INSERT INTO events (session_id, seq, ts, body) VALUES (?, ?, ?, ?)").run(sessionId, seq, ts, body);
|
|
362
|
+
const fields = update;
|
|
363
|
+
const opensTurn = update.sessionUpdate === "user_message_chunk" || (update.sessionUpdate === "ls_turn" && update.state === "started" && !fields.parentToolCallId);
|
|
364
|
+
const spawns = update.sessionUpdate === "tool_call" && update.detail?.type === "subagent" && (update.detail.action ?? "spawn") === "spawn";
|
|
246
365
|
this.db
|
|
247
|
-
.prepare("INSERT INTO
|
|
248
|
-
.run(sessionId, seq,
|
|
249
|
-
this.db.prepare("UPDATE sessions SET last_seq = ?, updated_at = MAX(updated_at, ?) WHERE id = ?").run(seq, ts, sessionId);
|
|
366
|
+
.prepare("INSERT INTO event_meta (session_id, seq, kind, bytes, opens_turn, tool, parent, spawns) VALUES (?, ?, ?, ?, ?, ?, ?, ?)")
|
|
367
|
+
.run(sessionId, seq, update.sessionUpdate, Buffer.byteLength(body), opensTurn ? 1 : 0, fields.toolCallId ?? null, fields.parentToolCallId ?? null, spawns ? 1 : 0);
|
|
368
|
+
this.db.prepare("UPDATE sessions SET last_seq = ?, updated_at = MAX(updated_at, ?) WHERE id = ?").run(seq, activity ? ts : 0, sessionId);
|
|
250
369
|
this.db.exec("COMMIT");
|
|
251
370
|
return { sessionId, seq, ts, update };
|
|
252
371
|
}
|
|
@@ -255,10 +374,91 @@ export class HostStore {
|
|
|
255
374
|
throw error;
|
|
256
375
|
}
|
|
257
376
|
}
|
|
258
|
-
|
|
377
|
+
/** Events after `afterSeq`, up to and including `upToSeq` when given. */
|
|
378
|
+
readEvents(sessionId, afterSeq, limit = 5000, upToSeq = Number.MAX_SAFE_INTEGER) {
|
|
379
|
+
const rows = this.db
|
|
380
|
+
.prepare("SELECT seq, ts, body FROM events WHERE session_id = ? AND seq > ? AND seq <= ? ORDER BY seq ASC LIMIT ?")
|
|
381
|
+
.all(sessionId, afterSeq, upToSeq, limit);
|
|
382
|
+
return rows.map((row) => ({ sessionId, seq: row.seq, ts: row.ts, update: JSON.parse(row.body) }));
|
|
383
|
+
}
|
|
384
|
+
readEvent(sessionId, seq) {
|
|
385
|
+
return this.readEvents(sessionId, seq - 1, 1, seq)[0];
|
|
386
|
+
}
|
|
387
|
+
/** How much was logged after `afterSeq`. */
|
|
388
|
+
sizeAfter(sessionId, afterSeq) {
|
|
389
|
+
const row = this.db
|
|
390
|
+
.prepare("SELECT COUNT(*) AS events, COALESCE(SUM(bytes), 0) AS bytes FROM event_meta WHERE session_id = ? AND seq > ?")
|
|
391
|
+
.get(sessionId, afterSeq);
|
|
392
|
+
return row;
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Where a page of history ending at `beforeSeq` starts: the seq before its
|
|
396
|
+
* first event (0: the beginning of the log). Pages are whole turns, going
|
|
397
|
+
* back until one is worth showing; a single turn too big for a page is cut.
|
|
398
|
+
*/
|
|
399
|
+
pageStart(sessionId, beforeSeq, page = PAGE) {
|
|
400
|
+
const rows = this.db
|
|
401
|
+
.prepare("SELECT seq, bytes, opens_turn FROM event_meta WHERE session_id = ? AND seq <= ? ORDER BY seq DESC LIMIT ?")
|
|
402
|
+
.all(sessionId, beforeSeq, page.maxEvents + 1);
|
|
403
|
+
let events = 0;
|
|
404
|
+
let bytes = 0;
|
|
405
|
+
for (let i = 0; i < rows.length; i++) {
|
|
406
|
+
const row = rows[i];
|
|
407
|
+
const previous = rows[i + 1];
|
|
408
|
+
events += 1;
|
|
409
|
+
// What a client receives: pictures are left out and long text is cut.
|
|
410
|
+
bytes += Math.min(row.bytes, page.eventBytes);
|
|
411
|
+
if (!previous)
|
|
412
|
+
return 0;
|
|
413
|
+
const turnStarts = row.opens_turn === 1 && previous.opens_turn === 0;
|
|
414
|
+
if (turnStarts && (events >= page.minEvents || bytes >= page.minBytes))
|
|
415
|
+
return previous.seq;
|
|
416
|
+
if (events >= page.maxEvents || bytes >= page.maxBytes)
|
|
417
|
+
return previous.seq;
|
|
418
|
+
}
|
|
419
|
+
return 0;
|
|
420
|
+
}
|
|
421
|
+
/** The calls that started a sub-agent, oldest first. */
|
|
422
|
+
subagentCalls(sessionId) {
|
|
423
|
+
return this.joined("m.session_id = ? AND m.spawns = 1 ORDER BY m.seq ASC", [sessionId]);
|
|
424
|
+
}
|
|
425
|
+
/** A tool call's own events (the call and its updates), oldest first. */
|
|
426
|
+
toolEvents(sessionId, toolCallId) {
|
|
427
|
+
return this.joined("m.session_id = ? AND m.tool = ? AND m.parent IS NULL ORDER BY m.seq ASC", [sessionId, toolCallId]);
|
|
428
|
+
}
|
|
429
|
+
/** The latest `limit` events of the sub-agent under a tool call, oldest first. */
|
|
430
|
+
eventsUnder(sessionId, toolCallId, limit) {
|
|
431
|
+
return this.joined("m.session_id = ? AND m.parent = ? ORDER BY m.seq DESC LIMIT ?", [sessionId, toolCallId, limit]).reverse();
|
|
432
|
+
}
|
|
433
|
+
/** A tool call's latest status, whether the sub-agent under it is in a turn, and when that sub-agent last did anything. */
|
|
434
|
+
toolState(sessionId, toolCallId) {
|
|
435
|
+
const last = this.db
|
|
436
|
+
.prepare(`SELECT e.ts, json_extract(e.body, '$.status') AS status FROM event_meta m JOIN events e ON e.session_id = m.session_id AND e.seq = m.seq
|
|
437
|
+
WHERE m.session_id = ? AND m.tool = ? AND m.parent IS NULL AND json_extract(e.body, '$.status') IS NOT NULL ORDER BY m.seq DESC LIMIT 1`)
|
|
438
|
+
.get(sessionId, toolCallId);
|
|
439
|
+
const turn = this.db
|
|
440
|
+
.prepare(`SELECT json_extract(e.body, '$.state') AS state FROM event_meta m JOIN events e ON e.session_id = m.session_id AND e.seq = m.seq
|
|
441
|
+
WHERE m.session_id = ? AND m.parent = ? AND m.kind = 'ls_turn' ORDER BY m.seq DESC LIMIT 1`)
|
|
442
|
+
.get(sessionId, toolCallId);
|
|
443
|
+
const child = this.db
|
|
444
|
+
.prepare(`SELECT e.ts FROM event_meta m JOIN events e ON e.session_id = m.session_id AND e.seq = m.seq
|
|
445
|
+
WHERE m.session_id = ? AND m.parent = ? ORDER BY m.seq DESC LIMIT 1`)
|
|
446
|
+
.get(sessionId, toolCallId);
|
|
447
|
+
return { status: last?.status, ts: last?.ts, turnActive: turn ? turn.state === "started" : undefined, lastChildTs: child?.ts };
|
|
448
|
+
}
|
|
449
|
+
joined(where, values) {
|
|
450
|
+
const rows = this.db
|
|
451
|
+
.prepare(`SELECT e.seq, e.ts, e.body FROM event_meta m JOIN events e ON e.session_id = m.session_id AND e.seq = m.seq WHERE ${where}`)
|
|
452
|
+
.all(...values);
|
|
453
|
+
const sessionId = String(values[0]);
|
|
454
|
+
return rows.map((row) => ({ sessionId, seq: row.seq, ts: row.ts, update: JSON.parse(row.body) }));
|
|
455
|
+
}
|
|
456
|
+
/** The latest event of `kind` at or before `seq`. */
|
|
457
|
+
latestOfKind(sessionId, kind, seq, limit = 1) {
|
|
259
458
|
const rows = this.db
|
|
260
|
-
.prepare(
|
|
261
|
-
|
|
459
|
+
.prepare(`SELECT e.seq, e.ts, e.body FROM event_meta m JOIN events e ON e.session_id = m.session_id AND e.seq = m.seq
|
|
460
|
+
WHERE m.session_id = ? AND m.kind = ? AND m.seq <= ? ORDER BY m.seq DESC LIMIT ?`)
|
|
461
|
+
.all(sessionId, kind, seq, limit);
|
|
262
462
|
return rows.map((row) => ({ sessionId, seq: row.seq, ts: row.ts, update: JSON.parse(row.body) }));
|
|
263
463
|
}
|
|
264
464
|
/** Marks a native item (message, tool call) as present in the log. Returns false if it already was. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../host/src/store.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../../../host/src/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,14 +34,14 @@ export declare class TerminalManager {
|
|
|
34
34
|
seq: number;
|
|
35
35
|
terminal: {
|
|
36
36
|
id: string;
|
|
37
|
-
|
|
38
|
-
rows: number;
|
|
37
|
+
title: string;
|
|
39
38
|
cwd: string;
|
|
40
39
|
createdAt: number;
|
|
41
|
-
|
|
40
|
+
cols: number;
|
|
41
|
+
rows: number;
|
|
42
42
|
activeAt: number;
|
|
43
|
-
exitCode?: number | null | undefined;
|
|
44
43
|
command?: string | undefined;
|
|
44
|
+
exitCode?: number | null | undefined;
|
|
45
45
|
interrupted?: boolean | undefined;
|
|
46
46
|
};
|
|
47
47
|
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type GitInfo } from "@linkshell/wire";
|
|
2
|
+
/** What git says about a directory; undefined when it isn't in a repository (or git is missing). */
|
|
3
|
+
export declare function gitInfo(path: string): Promise<GitInfo | undefined>;
|
|
4
|
+
/**
|
|
5
|
+
* The branch checked out in a directory (the abbreviated commit on a detached
|
|
6
|
+
* HEAD); undefined outside a repository. Doesn't look at the working tree, so
|
|
7
|
+
* it stays quick in a large repository.
|
|
8
|
+
*/
|
|
9
|
+
export declare function gitBranch(path: string): Promise<string | undefined>;
|
|
10
|
+
export interface CreatedWorktree {
|
|
11
|
+
/** The worktree's top directory. */
|
|
12
|
+
path: string;
|
|
13
|
+
/** Where a session started from `cwd` works: the same place inside the worktree. */
|
|
14
|
+
cwd: string;
|
|
15
|
+
branch: string;
|
|
16
|
+
/** The repository it was made from. */
|
|
17
|
+
source: string;
|
|
18
|
+
/** The commit it started at. */
|
|
19
|
+
base: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Makes a worktree of the repository `cwd` is in, on a new branch at its
|
|
23
|
+
* current commit. Uncommitted changes stay where they are.
|
|
24
|
+
*/
|
|
25
|
+
export declare function createWorktree(cwd: string, home: string, label: string): Promise<CreatedWorktree>;
|
|
26
|
+
/** Whether removing the worktree would lose work: uncommitted changes, and commits since it was made. */
|
|
27
|
+
export declare function worktreeState(path: string, base: string): Promise<{
|
|
28
|
+
dirty: boolean;
|
|
29
|
+
ahead: number;
|
|
30
|
+
}>;
|
|
31
|
+
/** Removes a worktree and the branch made for it. */
|
|
32
|
+
export declare function removeWorktree(worktree: {
|
|
33
|
+
path: string;
|
|
34
|
+
branch: string;
|
|
35
|
+
source: string;
|
|
36
|
+
}): Promise<void>;
|