@blxzer/cursor-trellis-core 0.1.0 → 0.1.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/package.json +1 -6
- package/dist/mem/adapters/claude.d.ts +0 -22
- package/dist/mem/adapters/claude.d.ts.map +0 -1
- package/dist/mem/adapters/claude.js +0 -225
- package/dist/mem/adapters/claude.js.map +0 -1
- package/dist/mem/adapters/codex.d.ts +0 -35
- package/dist/mem/adapters/codex.d.ts.map +0 -1
- package/dist/mem/adapters/codex.js +0 -222
- package/dist/mem/adapters/codex.js.map +0 -1
- package/dist/mem/adapters/opencode.d.ts +0 -19
- package/dist/mem/adapters/opencode.d.ts.map +0 -1
- package/dist/mem/adapters/opencode.js +0 -25
- package/dist/mem/adapters/opencode.js.map +0 -1
- package/dist/mem/context.d.ts +0 -23
- package/dist/mem/context.d.ts.map +0 -1
- package/dist/mem/context.js +0 -118
- package/dist/mem/context.js.map +0 -1
- package/dist/mem/dialogue.d.ts +0 -17
- package/dist/mem/dialogue.d.ts.map +0 -1
- package/dist/mem/dialogue.js +0 -51
- package/dist/mem/dialogue.js.map +0 -1
- package/dist/mem/filter.d.ts +0 -31
- package/dist/mem/filter.d.ts.map +0 -1
- package/dist/mem/filter.js +0 -66
- package/dist/mem/filter.js.map +0 -1
- package/dist/mem/index.d.ts +0 -18
- package/dist/mem/index.d.ts.map +0 -1
- package/dist/mem/index.js +0 -17
- package/dist/mem/index.js.map +0 -1
- package/dist/mem/internal/jsonl.d.ts +0 -35
- package/dist/mem/internal/jsonl.d.ts.map +0 -1
- package/dist/mem/internal/jsonl.js +0 -125
- package/dist/mem/internal/jsonl.js.map +0 -1
- package/dist/mem/internal/paths.d.ts +0 -18
- package/dist/mem/internal/paths.d.ts.map +0 -1
- package/dist/mem/internal/paths.js +0 -46
- package/dist/mem/internal/paths.js.map +0 -1
- package/dist/mem/phase.d.ts +0 -47
- package/dist/mem/phase.d.ts.map +0 -1
- package/dist/mem/phase.js +0 -223
- package/dist/mem/phase.js.map +0 -1
- package/dist/mem/projects.d.ts +0 -13
- package/dist/mem/projects.d.ts.map +0 -1
- package/dist/mem/projects.js +0 -37
- package/dist/mem/projects.js.map +0 -1
- package/dist/mem/search.d.ts +0 -32
- package/dist/mem/search.d.ts.map +0 -1
- package/dist/mem/search.js +0 -125
- package/dist/mem/search.js.map +0 -1
- package/dist/mem/sessions.d.ts +0 -37
- package/dist/mem/sessions.d.ts.map +0 -1
- package/dist/mem/sessions.js +0 -270
- package/dist/mem/sessions.js.map +0 -1
- package/dist/mem/types.d.ts +0 -177
- package/dist/mem/types.d.ts.map +0 -1
- package/dist/mem/types.js +0 -10
- package/dist/mem/types.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@blxzer/cursor-trellis-core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Trellis core SDK — channel and task domain primitives consumed by the Trellis CLI and downstream Node services",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -17,11 +17,6 @@
|
|
|
17
17
|
"import": "./dist/channel/index.js",
|
|
18
18
|
"default": "./dist/channel/index.js"
|
|
19
19
|
},
|
|
20
|
-
"./mem": {
|
|
21
|
-
"types": "./dist/mem/index.d.ts",
|
|
22
|
-
"import": "./dist/mem/index.js",
|
|
23
|
-
"default": "./dist/mem/index.js"
|
|
24
|
-
},
|
|
25
20
|
"./task": {
|
|
26
21
|
"types": "./dist/task/index.d.ts",
|
|
27
22
|
"import": "./dist/task/index.js",
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Persisted Claude Code session reader.
|
|
3
|
-
*
|
|
4
|
-
* Layout: `~/.claude/projects/<sanitized-cwd>/<sessionId>.jsonl`, with an
|
|
5
|
-
* optional `<projectDir>/sessions-index.json` providing cwd / created / title.
|
|
6
|
-
*/
|
|
7
|
-
import type { DialogueTurn, MemFilter, MemSessionInfo, SearchHit, TaskPyEvent } from "../types.js";
|
|
8
|
-
export declare function claudeListSessions(f: MemFilter): MemSessionInfo[];
|
|
9
|
-
export declare function claudeExtractDialogue(s: MemSessionInfo): DialogueTurn[];
|
|
10
|
-
export declare function claudeSearch(s: MemSessionInfo, kw: string): SearchHit;
|
|
11
|
-
/**
|
|
12
|
-
* Single-pass scan of a Claude JSONL file that produces both the cleaned
|
|
13
|
-
* dialogue turns (semantically identical to {@link claudeExtractDialogue}) and
|
|
14
|
-
* the list of `task.py create|start-execution` Bash tool_use events with their
|
|
15
|
-
* `turnIndex`. Compaction resets both `turns` AND `events` — pre-compact event
|
|
16
|
-
* indices stop pointing at real turns once history is collapsed.
|
|
17
|
-
*/
|
|
18
|
-
export declare function collectClaudeTurnsAndEvents(s: MemSessionInfo): {
|
|
19
|
-
turns: DialogueTurn[];
|
|
20
|
-
events: TaskPyEvent[];
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=claude.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../../src/mem/adapters/claude.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,cAAc,EACd,SAAS,EACT,WAAW,EACZ,MAAM,aAAa,CAAC;AAqCrB,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,SAAS,GAAG,cAAc,EAAE,CA+DjE;AAID,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,cAAc,GAAG,YAAY,EAAE,CAuDvE;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,CAErE;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,cAAc,GAAG;IAC9D,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB,CA6EA"}
|
|
@@ -1,225 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Persisted Claude Code session reader.
|
|
3
|
-
*
|
|
4
|
-
* Layout: `~/.claude/projects/<sanitized-cwd>/<sessionId>.jsonl`, with an
|
|
5
|
-
* optional `<projectDir>/sessions-index.json` providing cwd / created / title.
|
|
6
|
-
*/
|
|
7
|
-
import * as fs from "node:fs";
|
|
8
|
-
import * as path from "node:path";
|
|
9
|
-
import { stripInjectionTags, isBootstrapTurn } from "../dialogue.js";
|
|
10
|
-
import { inRangeOverlap, sameProject } from "../filter.js";
|
|
11
|
-
import { findInJsonl, readJsonFile, readJsonl, readJsonlFirst, } from "../internal/jsonl.js";
|
|
12
|
-
import { CLAUDE_PROJECTS, claudeProjectDirFromCwd } from "../internal/paths.js";
|
|
13
|
-
import { parseTaskPyCommandsAll } from "../phase.js";
|
|
14
|
-
import { searchInDialogue } from "../search.js";
|
|
15
|
-
// ---------- list ----------
|
|
16
|
-
export function claudeListSessions(f) {
|
|
17
|
-
if (!fs.existsSync(CLAUDE_PROJECTS))
|
|
18
|
-
return [];
|
|
19
|
-
const out = [];
|
|
20
|
-
const projectDirs = f.cwd
|
|
21
|
-
? [claudeProjectDirFromCwd(f.cwd)].filter((d) => fs.existsSync(d))
|
|
22
|
-
: fs.readdirSync(CLAUDE_PROJECTS).map((d) => path.join(CLAUDE_PROJECTS, d));
|
|
23
|
-
for (const dir of projectDirs) {
|
|
24
|
-
let entries;
|
|
25
|
-
try {
|
|
26
|
-
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
29
|
-
continue;
|
|
30
|
-
}
|
|
31
|
-
const indexFile = path.join(dir, "sessions-index.json");
|
|
32
|
-
const index = readJsonFile(indexFile);
|
|
33
|
-
const indexById = new Map();
|
|
34
|
-
for (const e of Array.isArray(index?.entries) ? index.entries : []) {
|
|
35
|
-
if (typeof e.id === "string")
|
|
36
|
-
indexById.set(e.id, e);
|
|
37
|
-
}
|
|
38
|
-
for (const e of entries) {
|
|
39
|
-
if (!e.isFile() || !e.name.endsWith(".jsonl"))
|
|
40
|
-
continue;
|
|
41
|
-
const filePath = path.join(dir, e.name);
|
|
42
|
-
const id = e.name.replace(/\.jsonl$/, "");
|
|
43
|
-
const idx = indexById.get(id);
|
|
44
|
-
let cwd = idx?.cwd;
|
|
45
|
-
let created = idx?.created;
|
|
46
|
-
const title = idx?.title;
|
|
47
|
-
if (!cwd || !created) {
|
|
48
|
-
const evt = findInJsonl(filePath, (o) => typeof o.cwd === "string", 100);
|
|
49
|
-
cwd = cwd ?? evt?.cwd;
|
|
50
|
-
created =
|
|
51
|
-
created ??
|
|
52
|
-
evt?.timestamp ??
|
|
53
|
-
readJsonlFirst(filePath)?.timestamp;
|
|
54
|
-
}
|
|
55
|
-
const stat = fs.statSync(filePath);
|
|
56
|
-
const updated = stat.mtime.toISOString();
|
|
57
|
-
// Interval overlap: cross-day sessions that started before --since but
|
|
58
|
-
// were still active inside the window must survive.
|
|
59
|
-
if (!inRangeOverlap(created, updated, f))
|
|
60
|
-
continue;
|
|
61
|
-
if (f.cwd && cwd && !sameProject(cwd, f.cwd))
|
|
62
|
-
continue;
|
|
63
|
-
out.push({
|
|
64
|
-
platform: "claude",
|
|
65
|
-
id,
|
|
66
|
-
title,
|
|
67
|
-
cwd,
|
|
68
|
-
created,
|
|
69
|
-
updated,
|
|
70
|
-
filePath,
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return out;
|
|
75
|
-
}
|
|
76
|
-
// ---------- extract ----------
|
|
77
|
-
export function claudeExtractDialogue(s) {
|
|
78
|
-
// - user: type=="user" + role=="user" + content is a string
|
|
79
|
-
// - assistant: type=="assistant" + role=="assistant", keep only `text` blocks
|
|
80
|
-
// - thinking / tool_use blocks dropped entirely; injection tags stripped
|
|
81
|
-
// - compaction: an `isCompactSummary` user event resets prior turns and
|
|
82
|
-
// replaces them with a single synthetic [compact summary] turn
|
|
83
|
-
let turns = [];
|
|
84
|
-
readJsonl(s.filePath, (obj) => {
|
|
85
|
-
const t = obj.type;
|
|
86
|
-
const msg = obj.message;
|
|
87
|
-
if (!msg)
|
|
88
|
-
return;
|
|
89
|
-
const content = msg.content;
|
|
90
|
-
if (t === "user" && obj.isCompactSummary === true) {
|
|
91
|
-
let summary = "";
|
|
92
|
-
if (typeof content === "string") {
|
|
93
|
-
summary = stripInjectionTags(content);
|
|
94
|
-
}
|
|
95
|
-
else if (Array.isArray(content)) {
|
|
96
|
-
const parts = [];
|
|
97
|
-
for (const block of content) {
|
|
98
|
-
if (block.type === "text" && typeof block.text === "string") {
|
|
99
|
-
const cleaned = stripInjectionTags(block.text);
|
|
100
|
-
if (cleaned)
|
|
101
|
-
parts.push(cleaned);
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
summary = parts.join("\n\n");
|
|
105
|
-
}
|
|
106
|
-
turns = summary
|
|
107
|
-
? [{ role: "user", text: `[compact summary]\n${summary}` }]
|
|
108
|
-
: [];
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
if (t === "user" && msg.role === "user") {
|
|
112
|
-
if (typeof content === "string") {
|
|
113
|
-
const text = stripInjectionTags(content);
|
|
114
|
-
if (text && !isBootstrapTurn(text, content.length)) {
|
|
115
|
-
turns.push({ role: "user", text });
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
else if (t === "assistant" &&
|
|
120
|
-
msg.role === "assistant" &&
|
|
121
|
-
Array.isArray(content)) {
|
|
122
|
-
const parts = [];
|
|
123
|
-
for (const block of content) {
|
|
124
|
-
if (block.type === "text" && typeof block.text === "string") {
|
|
125
|
-
const cleaned = stripInjectionTags(block.text);
|
|
126
|
-
if (cleaned)
|
|
127
|
-
parts.push(cleaned);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
if (parts.length)
|
|
131
|
-
turns.push({ role: "assistant", text: parts.join("\n\n") });
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
return turns;
|
|
135
|
-
}
|
|
136
|
-
export function claudeSearch(s, kw) {
|
|
137
|
-
return searchInDialogue(claudeExtractDialogue(s), kw);
|
|
138
|
-
}
|
|
139
|
-
/**
|
|
140
|
-
* Single-pass scan of a Claude JSONL file that produces both the cleaned
|
|
141
|
-
* dialogue turns (semantically identical to {@link claudeExtractDialogue}) and
|
|
142
|
-
* the list of `task.py create|start-execution` Bash tool_use events with their
|
|
143
|
-
* `turnIndex`. Compaction resets both `turns` AND `events` — pre-compact event
|
|
144
|
-
* indices stop pointing at real turns once history is collapsed.
|
|
145
|
-
*/
|
|
146
|
-
export function collectClaudeTurnsAndEvents(s) {
|
|
147
|
-
let turns = [];
|
|
148
|
-
let events = [];
|
|
149
|
-
readJsonl(s.filePath, (obj) => {
|
|
150
|
-
const t = obj.type;
|
|
151
|
-
const msg = obj.message;
|
|
152
|
-
if (!msg)
|
|
153
|
-
return;
|
|
154
|
-
const content = msg.content;
|
|
155
|
-
if (t === "user" && obj.isCompactSummary === true) {
|
|
156
|
-
let summary = "";
|
|
157
|
-
if (typeof content === "string") {
|
|
158
|
-
summary = stripInjectionTags(content);
|
|
159
|
-
}
|
|
160
|
-
else if (Array.isArray(content)) {
|
|
161
|
-
const parts = [];
|
|
162
|
-
for (const block of content) {
|
|
163
|
-
if (block.type === "text" && typeof block.text === "string") {
|
|
164
|
-
const cleaned = stripInjectionTags(block.text);
|
|
165
|
-
if (cleaned)
|
|
166
|
-
parts.push(cleaned);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
summary = parts.join("\n\n");
|
|
170
|
-
}
|
|
171
|
-
turns = summary
|
|
172
|
-
? [{ role: "user", text: `[compact summary]\n${summary}` }]
|
|
173
|
-
: [];
|
|
174
|
-
events = [];
|
|
175
|
-
return;
|
|
176
|
-
}
|
|
177
|
-
if (t === "user" && msg.role === "user") {
|
|
178
|
-
if (typeof content === "string") {
|
|
179
|
-
const text = stripInjectionTags(content);
|
|
180
|
-
if (text && !isBootstrapTurn(text, content.length)) {
|
|
181
|
-
turns.push({ role: "user", text });
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
if (t === "assistant" &&
|
|
187
|
-
msg.role === "assistant" &&
|
|
188
|
-
Array.isArray(content)) {
|
|
189
|
-
const parts = [];
|
|
190
|
-
for (const block of content) {
|
|
191
|
-
if (block.type === "text" && typeof block.text === "string") {
|
|
192
|
-
const cleaned = stripInjectionTags(block.text);
|
|
193
|
-
if (cleaned)
|
|
194
|
-
parts.push(cleaned);
|
|
195
|
-
}
|
|
196
|
-
else if (block.type === "tool_use") {
|
|
197
|
-
if (block.name !== "Bash")
|
|
198
|
-
continue;
|
|
199
|
-
const inp = block.input;
|
|
200
|
-
if (!inp || typeof inp !== "object")
|
|
201
|
-
continue;
|
|
202
|
-
const command = inp.command;
|
|
203
|
-
if (typeof command !== "string")
|
|
204
|
-
continue;
|
|
205
|
-
const parsedAll = parseTaskPyCommandsAll(command);
|
|
206
|
-
for (const parsed of parsedAll) {
|
|
207
|
-
const ev = {
|
|
208
|
-
action: parsed.action,
|
|
209
|
-
timestamp: obj.timestamp ?? "",
|
|
210
|
-
turnIndex: turns.length,
|
|
211
|
-
...(parsed.action === "create"
|
|
212
|
-
? { slug: parsed.slug }
|
|
213
|
-
: { taskDir: parsed.taskDir }),
|
|
214
|
-
};
|
|
215
|
-
events.push(ev);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
if (parts.length)
|
|
220
|
-
turns.push({ role: "assistant", text: parts.join("\n\n") });
|
|
221
|
-
}
|
|
222
|
-
});
|
|
223
|
-
return { turns, events };
|
|
224
|
-
}
|
|
225
|
-
//# sourceMappingURL=claude.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/mem/adapters/claude.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EACL,WAAW,EACX,YAAY,EACZ,SAAS,EACT,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AA0ChD,6BAA6B;AAE7B,MAAM,UAAU,kBAAkB,CAAC,CAAY;IAC7C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC;QAAE,OAAO,EAAE,CAAC;IAC/C,MAAM,GAAG,GAAqB,EAAE,CAAC;IACjC,MAAM,WAAW,GAAa,CAAC,CAAC,GAAG;QACjC,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC;IAE9E,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,OAAoB,CAAC;QACzB,IAAI,CAAC;YACH,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,YAAY,CAAc,SAAS,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;QACtD,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACnE,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ;gBAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YAC1C,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,GAAG,GAAuB,GAAG,EAAE,GAAG,CAAC;YACvC,IAAI,OAAO,GAAuB,GAAG,EAAE,OAAO,CAAC;YAC/C,MAAM,KAAK,GAAuB,GAAG,EAAE,KAAK,CAAC;YAE7C,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBACrB,MAAM,GAAG,GAAG,WAAW,CACrB,QAAQ,EACR,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,EAChC,GAAG,CACJ,CAAC;gBACF,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC;gBACtB,OAAO;oBACL,OAAO;wBACP,GAAG,EAAE,SAAS;wBACd,cAAc,CAAc,QAAQ,CAAC,EAAE,SAAS,CAAC;YACrD,CAAC;YAED,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACzC,uEAAuE;YACvE,oDAAoD;YACpD,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;gBAAE,SAAS;YACnD,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC;gBAAE,SAAS;YAEvD,GAAG,CAAC,IAAI,CAAC;gBACP,QAAQ,EAAE,QAAQ;gBAClB,EAAE;gBACF,KAAK;gBACL,GAAG;gBACH,OAAO;gBACP,OAAO;gBACP,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,gCAAgC;AAEhC,MAAM,UAAU,qBAAqB,CAAC,CAAiB;IACrD,4DAA4D;IAC5D,8EAA8E;IAC9E,yEAAyE;IACzE,wEAAwE;IACxE,iEAAiE;IACjE,IAAI,KAAK,GAAmB,EAAE,CAAC;IAC/B,SAAS,CAAc,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QACzC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;QACnB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;QACxB,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,KAAK,MAAM,IAAI,GAAG,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;YAClD,IAAI,OAAO,GAAG,EAAE,CAAC;YACjB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAChC,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACxC,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAa,EAAE,CAAC;gBAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC5D,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC/C,IAAI,OAAO;4BAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;gBACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;YACD,KAAK,GAAG,OAAO;gBACb,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,OAAO,EAAE,EAAE,CAAC;gBAC3D,CAAC,CAAC,EAAE,CAAC;YACP,OAAO;QACT,CAAC;QACD,IAAI,CAAC,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBACzC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBACnD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IACL,CAAC,KAAK,WAAW;YACjB,GAAG,CAAC,IAAI,KAAK,WAAW;YACxB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EACtB,CAAC;YACD,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC5D,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC/C,IAAI,OAAO;wBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YACD,IAAI,KAAK,CAAC,MAAM;gBACd,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAiB,EAAE,EAAU;IACxD,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CAAC,CAAiB;IAI3D,IAAI,KAAK,GAAmB,EAAE,CAAC;IAC/B,IAAI,MAAM,GAAkB,EAAE,CAAC;IAE/B,SAAS,CAAc,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;QACzC,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC;QACnB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;QACxB,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAE5B,IAAI,CAAC,KAAK,MAAM,IAAI,GAAG,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;YAClD,IAAI,OAAO,GAAG,EAAE,CAAC;YACjB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAChC,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACxC,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAa,EAAE,CAAC;gBAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC5D,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC/C,IAAI,OAAO;4BAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACnC,CAAC;gBACH,CAAC;gBACD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/B,CAAC;YACD,KAAK,GAAG,OAAO;gBACb,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,OAAO,EAAE,EAAE,CAAC;gBAC3D,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,GAAG,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;gBACzC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;oBACnD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;QAED,IACE,CAAC,KAAK,WAAW;YACjB,GAAG,CAAC,IAAI,KAAK,WAAW;YACxB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EACtB,CAAC;YACD,MAAM,KAAK,GAAa,EAAE,CAAC;YAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC5D,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC/C,IAAI,OAAO;wBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACnC,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACrC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;wBAAE,SAAS;oBACpC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC;oBACxB,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;wBAAE,SAAS;oBAC9C,MAAM,OAAO,GAAI,GAA6B,CAAC,OAAO,CAAC;oBACvD,IAAI,OAAO,OAAO,KAAK,QAAQ;wBAAE,SAAS;oBAC1C,MAAM,SAAS,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;oBAClD,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;wBAC/B,MAAM,EAAE,GAAgB;4BACtB,MAAM,EAAE,MAAM,CAAC,MAAM;4BACrB,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE;4BAC9B,SAAS,EAAE,KAAK,CAAC,MAAM;4BACvB,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ;gCAC5B,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE;gCACvB,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;yBACjC,CAAC;wBACF,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAClB,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,KAAK,CAAC,MAAM;gBACd,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Persisted Codex session reader.
|
|
3
|
-
*
|
|
4
|
-
* Layout: `~/.codex/sessions/**\/rollout-<ts>-<id>.jsonl`. Metadata is read
|
|
5
|
-
* from the first event's `payload`; the filename timestamp is a fallback
|
|
6
|
-
* `created`.
|
|
7
|
-
*/
|
|
8
|
-
import type { DialogueTurn, MemFilter, MemSessionInfo, SearchHit, TaskPyEvent } from "../types.js";
|
|
9
|
-
/**
|
|
10
|
-
* Recover the shell command string from a Codex `function_call` event's
|
|
11
|
-
* `arguments` field. Codex versions vary in how they encode it:
|
|
12
|
-
*
|
|
13
|
-
* - a raw shell string
|
|
14
|
-
* - a stringified JSON object with `cmd` / `command` (string) or
|
|
15
|
-
* `argv` (string[] — joined with spaces)
|
|
16
|
-
* - a raw object with the same `cmd` / `command` / `argv` shape
|
|
17
|
-
*
|
|
18
|
-
* Returns `undefined` when no command can be recovered.
|
|
19
|
-
*/
|
|
20
|
-
export declare function commandFromCodexArguments(argsRaw: unknown): string | undefined;
|
|
21
|
-
export declare function codexListSessions(f: MemFilter): MemSessionInfo[];
|
|
22
|
-
export declare function codexExtractDialogue(s: MemSessionInfo): DialogueTurn[];
|
|
23
|
-
export declare function codexSearch(s: MemSessionInfo, kw: string): SearchHit;
|
|
24
|
-
/**
|
|
25
|
-
* Codex twin of `collectClaudeTurnsAndEvents`. Single pass over the rollout
|
|
26
|
-
* file; emits both the cleaned dialogue turns and the list of
|
|
27
|
-
* `task.py create|start-execution` invocations found inside `function_call` events whose
|
|
28
|
-
* `name === "exec_command"` (or `"shell"`). Compaction resets both `turns` and
|
|
29
|
-
* `events`.
|
|
30
|
-
*/
|
|
31
|
-
export declare function collectCodexTurnsAndEvents(s: MemSessionInfo): {
|
|
32
|
-
turns: DialogueTurn[];
|
|
33
|
-
events: TaskPyEvent[];
|
|
34
|
-
};
|
|
35
|
-
//# sourceMappingURL=codex.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/mem/adapters/codex.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,OAAO,KAAK,EAEV,YAAY,EACZ,SAAS,EACT,cAAc,EACd,SAAS,EACT,WAAW,EACZ,MAAM,aAAa,CAAC;AAoCrB;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAgC9E;AAID,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,SAAS,GAAG,cAAc,EAAE,CAmChE;AAwBD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,cAAc,GAAG,YAAY,EAAE,CA8BtE;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,CAEpE;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,cAAc,GAAG;IAC7D,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB,CAoDA"}
|
|
@@ -1,222 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Persisted Codex session reader.
|
|
3
|
-
*
|
|
4
|
-
* Layout: `~/.codex/sessions/**\/rollout-<ts>-<id>.jsonl`. Metadata is read
|
|
5
|
-
* from the first event's `payload`; the filename timestamp is a fallback
|
|
6
|
-
* `created`.
|
|
7
|
-
*/
|
|
8
|
-
import * as fs from "node:fs";
|
|
9
|
-
import * as path from "node:path";
|
|
10
|
-
import { stripInjectionTags, isBootstrapTurn } from "../dialogue.js";
|
|
11
|
-
import { inRangeOverlap, sameProject } from "../filter.js";
|
|
12
|
-
import { readJsonl, readJsonlFirst } from "../internal/jsonl.js";
|
|
13
|
-
import { CODEX_SESSIONS, walkDir } from "../internal/paths.js";
|
|
14
|
-
import { parseTaskPyCommandsAll } from "../phase.js";
|
|
15
|
-
import { searchInDialogue } from "../search.js";
|
|
16
|
-
function parseDialogueRole(v) {
|
|
17
|
-
return v === "user" || v === "assistant" ? v : undefined;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Recover the shell command string from a Codex `function_call` event's
|
|
21
|
-
* `arguments` field. Codex versions vary in how they encode it:
|
|
22
|
-
*
|
|
23
|
-
* - a raw shell string
|
|
24
|
-
* - a stringified JSON object with `cmd` / `command` (string) or
|
|
25
|
-
* `argv` (string[] — joined with spaces)
|
|
26
|
-
* - a raw object with the same `cmd` / `command` / `argv` shape
|
|
27
|
-
*
|
|
28
|
-
* Returns `undefined` when no command can be recovered.
|
|
29
|
-
*/
|
|
30
|
-
export function commandFromCodexArguments(argsRaw) {
|
|
31
|
-
const fromObject = (obj) => {
|
|
32
|
-
const cmd = obj.cmd;
|
|
33
|
-
if (typeof cmd === "string")
|
|
34
|
-
return cmd;
|
|
35
|
-
const command = obj.command;
|
|
36
|
-
if (typeof command === "string")
|
|
37
|
-
return command;
|
|
38
|
-
const argv = obj.argv;
|
|
39
|
-
if (Array.isArray(argv)) {
|
|
40
|
-
const parts = argv.filter((a) => typeof a === "string");
|
|
41
|
-
if (parts.length)
|
|
42
|
-
return parts.join(" ");
|
|
43
|
-
}
|
|
44
|
-
return undefined;
|
|
45
|
-
};
|
|
46
|
-
if (typeof argsRaw === "string") {
|
|
47
|
-
try {
|
|
48
|
-
const parsed = JSON.parse(argsRaw);
|
|
49
|
-
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
50
|
-
return fromObject(parsed);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
catch {
|
|
54
|
-
// Not JSON — some Codex versions inline the raw shell string.
|
|
55
|
-
return argsRaw;
|
|
56
|
-
}
|
|
57
|
-
return undefined;
|
|
58
|
-
}
|
|
59
|
-
if (argsRaw && typeof argsRaw === "object" && !Array.isArray(argsRaw)) {
|
|
60
|
-
return fromObject(argsRaw);
|
|
61
|
-
}
|
|
62
|
-
return undefined;
|
|
63
|
-
}
|
|
64
|
-
// ---------- list ----------
|
|
65
|
-
export function codexListSessions(f) {
|
|
66
|
-
if (!fs.existsSync(CODEX_SESSIONS))
|
|
67
|
-
return [];
|
|
68
|
-
const out = [];
|
|
69
|
-
for (const file of walkDir(CODEX_SESSIONS)) {
|
|
70
|
-
if (!file.endsWith(".jsonl"))
|
|
71
|
-
continue;
|
|
72
|
-
const base = path.basename(file, ".jsonl");
|
|
73
|
-
const m = base.match(/^rollout-(\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2})-(.+)$/);
|
|
74
|
-
const tsFromName = m?.[1]
|
|
75
|
-
? new Date(m[1].replace(/T(\d{2})-(\d{2})-(\d{2})/, "T$1:$2:$3") + "Z").toISOString()
|
|
76
|
-
: undefined;
|
|
77
|
-
const first = readJsonlFirst(file);
|
|
78
|
-
const meta = first?.payload;
|
|
79
|
-
const id = meta?.id ?? m?.[2] ?? base;
|
|
80
|
-
const cwd = meta?.cwd;
|
|
81
|
-
const created = first?.timestamp ?? tsFromName ?? "";
|
|
82
|
-
if (f.cwd && !sameProject(cwd, f.cwd))
|
|
83
|
-
continue;
|
|
84
|
-
const updated = fs.statSync(file).mtime.toISOString();
|
|
85
|
-
if (!inRangeOverlap(created, updated, f))
|
|
86
|
-
continue;
|
|
87
|
-
out.push({
|
|
88
|
-
platform: "codex",
|
|
89
|
-
id,
|
|
90
|
-
cwd,
|
|
91
|
-
created,
|
|
92
|
-
updated,
|
|
93
|
-
filePath: file,
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
return out;
|
|
97
|
-
}
|
|
98
|
-
// ---------- extract ----------
|
|
99
|
-
function buildTurnFromMessage(role, parts) {
|
|
100
|
-
const collected = [];
|
|
101
|
-
let totalRaw = 0;
|
|
102
|
-
for (const c of parts ?? []) {
|
|
103
|
-
const txt = c.text;
|
|
104
|
-
if (typeof txt !== "string")
|
|
105
|
-
continue;
|
|
106
|
-
if (c.type !== "input_text" && c.type !== "output_text")
|
|
107
|
-
continue;
|
|
108
|
-
totalRaw += txt.length;
|
|
109
|
-
const cleaned = stripInjectionTags(txt);
|
|
110
|
-
if (cleaned)
|
|
111
|
-
collected.push(cleaned);
|
|
112
|
-
}
|
|
113
|
-
if (!collected.length)
|
|
114
|
-
return null;
|
|
115
|
-
const merged = collected.join("\n\n");
|
|
116
|
-
if (isBootstrapTurn(merged, totalRaw))
|
|
117
|
-
return null;
|
|
118
|
-
return { role, text: merged };
|
|
119
|
-
}
|
|
120
|
-
export function codexExtractDialogue(s) {
|
|
121
|
-
// payload.type=="message" with role in {user, assistant} only.
|
|
122
|
-
// Compaction: a top-level `compacted` event carries payload.replacement_history
|
|
123
|
-
// — the new authoritative history replacing everything before.
|
|
124
|
-
let turns = [];
|
|
125
|
-
readJsonl(s.filePath, (obj) => {
|
|
126
|
-
if (obj.type === "compacted") {
|
|
127
|
-
const rh = obj.payload?.replacement_history;
|
|
128
|
-
turns = [];
|
|
129
|
-
if (!Array.isArray(rh))
|
|
130
|
-
return;
|
|
131
|
-
for (const item of rh) {
|
|
132
|
-
if (item.type !== "message")
|
|
133
|
-
continue;
|
|
134
|
-
const role = parseDialogueRole(item.role);
|
|
135
|
-
if (!role)
|
|
136
|
-
continue;
|
|
137
|
-
const turn = buildTurnFromMessage(role, item.content);
|
|
138
|
-
if (turn)
|
|
139
|
-
turns.push({ role: turn.role, text: `[compact]\n${turn.text}` });
|
|
140
|
-
}
|
|
141
|
-
return;
|
|
142
|
-
}
|
|
143
|
-
const p = obj.payload;
|
|
144
|
-
if (p?.type !== "message")
|
|
145
|
-
return;
|
|
146
|
-
const role = parseDialogueRole(p.role);
|
|
147
|
-
if (!role)
|
|
148
|
-
return;
|
|
149
|
-
const turn = buildTurnFromMessage(role, p.content);
|
|
150
|
-
if (turn)
|
|
151
|
-
turns.push(turn);
|
|
152
|
-
});
|
|
153
|
-
return turns;
|
|
154
|
-
}
|
|
155
|
-
export function codexSearch(s, kw) {
|
|
156
|
-
return searchInDialogue(codexExtractDialogue(s), kw);
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Codex twin of `collectClaudeTurnsAndEvents`. Single pass over the rollout
|
|
160
|
-
* file; emits both the cleaned dialogue turns and the list of
|
|
161
|
-
* `task.py create|start-execution` invocations found inside `function_call` events whose
|
|
162
|
-
* `name === "exec_command"` (or `"shell"`). Compaction resets both `turns` and
|
|
163
|
-
* `events`.
|
|
164
|
-
*/
|
|
165
|
-
export function collectCodexTurnsAndEvents(s) {
|
|
166
|
-
let turns = [];
|
|
167
|
-
let events = [];
|
|
168
|
-
readJsonl(s.filePath, (obj) => {
|
|
169
|
-
if (obj.type === "compacted") {
|
|
170
|
-
const rh = obj.payload?.replacement_history;
|
|
171
|
-
turns = [];
|
|
172
|
-
events = [];
|
|
173
|
-
if (!Array.isArray(rh))
|
|
174
|
-
return;
|
|
175
|
-
for (const item of rh) {
|
|
176
|
-
if (item.type !== "message")
|
|
177
|
-
continue;
|
|
178
|
-
const role = parseDialogueRole(item.role);
|
|
179
|
-
if (!role)
|
|
180
|
-
continue;
|
|
181
|
-
const turn = buildTurnFromMessage(role, item.content);
|
|
182
|
-
if (turn)
|
|
183
|
-
turns.push({ role: turn.role, text: `[compact]\n${turn.text}` });
|
|
184
|
-
}
|
|
185
|
-
return;
|
|
186
|
-
}
|
|
187
|
-
const p = obj.payload;
|
|
188
|
-
if (!p)
|
|
189
|
-
return;
|
|
190
|
-
if (p.type === "function_call") {
|
|
191
|
-
const fnName = p.name;
|
|
192
|
-
if (fnName !== "exec_command" && fnName !== "shell")
|
|
193
|
-
return;
|
|
194
|
-
const cmd = commandFromCodexArguments(p.arguments);
|
|
195
|
-
if (!cmd)
|
|
196
|
-
return;
|
|
197
|
-
const parsedAll = parseTaskPyCommandsAll(cmd);
|
|
198
|
-
for (const parsed of parsedAll) {
|
|
199
|
-
const ev = {
|
|
200
|
-
action: parsed.action,
|
|
201
|
-
timestamp: obj.timestamp ?? "",
|
|
202
|
-
turnIndex: turns.length,
|
|
203
|
-
...(parsed.action === "create"
|
|
204
|
-
? { slug: parsed.slug }
|
|
205
|
-
: { taskDir: parsed.taskDir }),
|
|
206
|
-
};
|
|
207
|
-
events.push(ev);
|
|
208
|
-
}
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
|
-
if (p.type !== "message")
|
|
212
|
-
return;
|
|
213
|
-
const role = parseDialogueRole(p.role);
|
|
214
|
-
if (!role)
|
|
215
|
-
return;
|
|
216
|
-
const turn = buildTurnFromMessage(role, p.content);
|
|
217
|
-
if (turn)
|
|
218
|
-
turns.push(turn);
|
|
219
|
-
});
|
|
220
|
-
return { turns, events };
|
|
221
|
-
}
|
|
222
|
-
//# sourceMappingURL=codex.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/mem/adapters/codex.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenCode session reader — currently a degraded no-op.
|
|
3
|
-
*
|
|
4
|
-
* OpenCode 1.2+ moved to a SQLite store at
|
|
5
|
-
* `~/.local/share/opencode/opencode.db`. The previous SQLite reader required a
|
|
6
|
-
* native dependency (`better-sqlite3`) whose prebuilt-tarball + node-gyp
|
|
7
|
-
* fallback chain broke `npm install` on Windows + restricted networks, so it
|
|
8
|
-
* was reverted. These adapter functions are kept (dispatch / phase slicing
|
|
9
|
-
* rely on them) but degraded to silent no-ops.
|
|
10
|
-
*
|
|
11
|
-
* The "OpenCode reader unavailable" warning is a presentation concern owned by
|
|
12
|
-
* the CLI — core never prints. Re-enabled in a future release once a
|
|
13
|
-
* non-native backend ships.
|
|
14
|
-
*/
|
|
15
|
-
import type { DialogueTurn, MemFilter, MemSessionInfo, SearchHit } from "../types.js";
|
|
16
|
-
export declare function opencodeListSessions(_f: MemFilter): MemSessionInfo[];
|
|
17
|
-
export declare function opencodeExtractDialogue(_s: MemSessionInfo): DialogueTurn[];
|
|
18
|
-
export declare function opencodeSearch(kw: string): SearchHit;
|
|
19
|
-
//# sourceMappingURL=opencode.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/mem/adapters/opencode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EACV,YAAY,EACZ,SAAS,EACT,cAAc,EACd,SAAS,EACV,MAAM,aAAa,CAAC;AAErB,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,SAAS,GAAG,cAAc,EAAE,CAEpE;AAED,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,cAAc,GAAG,YAAY,EAAE,CAE1E;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,CAEpD"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* OpenCode session reader — currently a degraded no-op.
|
|
3
|
-
*
|
|
4
|
-
* OpenCode 1.2+ moved to a SQLite store at
|
|
5
|
-
* `~/.local/share/opencode/opencode.db`. The previous SQLite reader required a
|
|
6
|
-
* native dependency (`better-sqlite3`) whose prebuilt-tarball + node-gyp
|
|
7
|
-
* fallback chain broke `npm install` on Windows + restricted networks, so it
|
|
8
|
-
* was reverted. These adapter functions are kept (dispatch / phase slicing
|
|
9
|
-
* rely on them) but degraded to silent no-ops.
|
|
10
|
-
*
|
|
11
|
-
* The "OpenCode reader unavailable" warning is a presentation concern owned by
|
|
12
|
-
* the CLI — core never prints. Re-enabled in a future release once a
|
|
13
|
-
* non-native backend ships.
|
|
14
|
-
*/
|
|
15
|
-
import { searchInDialogue } from "../search.js";
|
|
16
|
-
export function opencodeListSessions(_f) {
|
|
17
|
-
return [];
|
|
18
|
-
}
|
|
19
|
-
export function opencodeExtractDialogue(_s) {
|
|
20
|
-
return [];
|
|
21
|
-
}
|
|
22
|
-
export function opencodeSearch(kw) {
|
|
23
|
-
return searchInDialogue([], kw);
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=opencode.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/mem/adapters/opencode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAQhD,MAAM,UAAU,oBAAoB,CAAC,EAAa;IAChD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,EAAkB;IACxD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,OAAO,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC"}
|
package/dist/mem/context.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Dialogue-window context extraction: resolve a session, optionally merge
|
|
3
|
-
* sub-agent children, then select a token-budgeted window of turns around the
|
|
4
|
-
* top hits.
|
|
5
|
-
*/
|
|
6
|
-
import type { DialogueTurn, MemContextResult, MemContextTurn, ReadMemContextOptions } from "./types.js";
|
|
7
|
-
interface SelectedContext {
|
|
8
|
-
turns: MemContextTurn[];
|
|
9
|
-
totalHitTurns: number;
|
|
10
|
-
budgetUsed: number;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Pure selection: rank turns against `grep` (user-role first, then hit
|
|
14
|
-
* density), take the top `nTurns`, expand each by `around` turns of context,
|
|
15
|
-
* then emit turns within `maxChars` — head-truncating any single turn that
|
|
16
|
-
* exceeds half the budget. With no `grep`, returns the first `nTurns` turns.
|
|
17
|
-
*/
|
|
18
|
-
export declare function selectContextTurns(turns: readonly DialogueTurn[], grep: string | undefined, nTurns: number, around: number, maxChars: number): SelectedContext;
|
|
19
|
-
/** Drill into a single session: top-N hit turns plus surrounding context,
|
|
20
|
-
* char-budgeted. With no `grep`, returns the session opening. */
|
|
21
|
-
export declare function readMemContext(options: ReadMemContextOptions): MemContextResult;
|
|
22
|
-
export {};
|
|
23
|
-
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/mem/context.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,OAAO,KAAK,EAEV,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACtB,MAAM,YAAY,CAAC;AAEpB,UAAU,eAAe;IACvB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,YAAY,EAAE,EAC9B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,eAAe,CAoEjB;AAED;iEACiE;AACjE,wBAAgB,cAAc,CAC5B,OAAO,EAAE,qBAAqB,GAC7B,gBAAgB,CAiClB"}
|