@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.
Files changed (57) hide show
  1. package/package.json +1 -6
  2. package/dist/mem/adapters/claude.d.ts +0 -22
  3. package/dist/mem/adapters/claude.d.ts.map +0 -1
  4. package/dist/mem/adapters/claude.js +0 -225
  5. package/dist/mem/adapters/claude.js.map +0 -1
  6. package/dist/mem/adapters/codex.d.ts +0 -35
  7. package/dist/mem/adapters/codex.d.ts.map +0 -1
  8. package/dist/mem/adapters/codex.js +0 -222
  9. package/dist/mem/adapters/codex.js.map +0 -1
  10. package/dist/mem/adapters/opencode.d.ts +0 -19
  11. package/dist/mem/adapters/opencode.d.ts.map +0 -1
  12. package/dist/mem/adapters/opencode.js +0 -25
  13. package/dist/mem/adapters/opencode.js.map +0 -1
  14. package/dist/mem/context.d.ts +0 -23
  15. package/dist/mem/context.d.ts.map +0 -1
  16. package/dist/mem/context.js +0 -118
  17. package/dist/mem/context.js.map +0 -1
  18. package/dist/mem/dialogue.d.ts +0 -17
  19. package/dist/mem/dialogue.d.ts.map +0 -1
  20. package/dist/mem/dialogue.js +0 -51
  21. package/dist/mem/dialogue.js.map +0 -1
  22. package/dist/mem/filter.d.ts +0 -31
  23. package/dist/mem/filter.d.ts.map +0 -1
  24. package/dist/mem/filter.js +0 -66
  25. package/dist/mem/filter.js.map +0 -1
  26. package/dist/mem/index.d.ts +0 -18
  27. package/dist/mem/index.d.ts.map +0 -1
  28. package/dist/mem/index.js +0 -17
  29. package/dist/mem/index.js.map +0 -1
  30. package/dist/mem/internal/jsonl.d.ts +0 -35
  31. package/dist/mem/internal/jsonl.d.ts.map +0 -1
  32. package/dist/mem/internal/jsonl.js +0 -125
  33. package/dist/mem/internal/jsonl.js.map +0 -1
  34. package/dist/mem/internal/paths.d.ts +0 -18
  35. package/dist/mem/internal/paths.d.ts.map +0 -1
  36. package/dist/mem/internal/paths.js +0 -46
  37. package/dist/mem/internal/paths.js.map +0 -1
  38. package/dist/mem/phase.d.ts +0 -47
  39. package/dist/mem/phase.d.ts.map +0 -1
  40. package/dist/mem/phase.js +0 -223
  41. package/dist/mem/phase.js.map +0 -1
  42. package/dist/mem/projects.d.ts +0 -13
  43. package/dist/mem/projects.d.ts.map +0 -1
  44. package/dist/mem/projects.js +0 -37
  45. package/dist/mem/projects.js.map +0 -1
  46. package/dist/mem/search.d.ts +0 -32
  47. package/dist/mem/search.d.ts.map +0 -1
  48. package/dist/mem/search.js +0 -125
  49. package/dist/mem/search.js.map +0 -1
  50. package/dist/mem/sessions.d.ts +0 -37
  51. package/dist/mem/sessions.d.ts.map +0 -1
  52. package/dist/mem/sessions.js +0 -270
  53. package/dist/mem/sessions.js.map +0 -1
  54. package/dist/mem/types.d.ts +0 -177
  55. package/dist/mem/types.d.ts.map +0 -1
  56. package/dist/mem/types.js +0 -10
  57. 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.0",
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":"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"}
@@ -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"}
@@ -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"}