@lossless-claude/lcm 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/.claude-plugin/commands/lcm-compact.md +10 -0
  2. package/.claude-plugin/commands/lcm-curate.md +16 -6
  3. package/.claude-plugin/commands/lcm-diagnose.md +10 -0
  4. package/.claude-plugin/commands/lcm-doctor.md +1 -1
  5. package/.claude-plugin/commands/lcm-dogfood.md +1 -1
  6. package/.claude-plugin/commands/lcm-import.md +10 -0
  7. package/.claude-plugin/commands/lcm-promote.md +10 -0
  8. package/.claude-plugin/commands/lcm-sensitive.md +10 -0
  9. package/.claude-plugin/commands/lcm-stats.md +1 -1
  10. package/.claude-plugin/commands/lcm-status.md +10 -0
  11. package/.claude-plugin/hooks/README.md +1 -1
  12. package/.claude-plugin/marketplace.json +1 -1
  13. package/.claude-plugin/plugin.json +14 -2
  14. package/.claude-plugin/skills/lcm-context/SKILL.md +10 -0
  15. package/.claude-plugin/skills/lcm-dogfood/SKILL.md +1 -1
  16. package/.claude-plugin/skills/lcm-dogfood/references/checks.md +1 -1
  17. package/README.md +2 -2
  18. package/dist/bin/lcm.js +828 -474
  19. package/dist/bin/lcm.js.map +1 -1
  20. package/dist/installer/install.d.ts +6 -5
  21. package/dist/installer/install.js +116 -108
  22. package/dist/installer/install.js.map +1 -1
  23. package/dist/src/batch-compact.d.ts +7 -1
  24. package/dist/src/batch-compact.js +80 -6
  25. package/dist/src/batch-compact.js.map +1 -1
  26. package/dist/src/bootstrap.d.ts +24 -0
  27. package/dist/src/bootstrap.js +76 -0
  28. package/dist/src/bootstrap.js.map +1 -0
  29. package/dist/src/cli/pipeline-runner.d.ts +47 -0
  30. package/dist/src/cli/pipeline-runner.js +106 -0
  31. package/dist/src/cli/pipeline-runner.js.map +1 -0
  32. package/dist/src/cli/pipeline-step.d.ts +20 -0
  33. package/dist/src/cli/pipeline-step.js +6 -0
  34. package/dist/src/cli/pipeline-step.js.map +1 -0
  35. package/dist/src/cli/progress-state.d.ts +61 -0
  36. package/dist/src/cli/progress-state.js +16 -0
  37. package/dist/src/cli/progress-state.js.map +1 -0
  38. package/dist/src/cli/render-frame.d.ts +26 -0
  39. package/dist/src/cli/render-frame.js +153 -0
  40. package/dist/src/cli/render-frame.js.map +1 -0
  41. package/dist/src/cli/render-summary.d.ts +8 -0
  42. package/dist/src/cli/render-summary.js +79 -0
  43. package/dist/src/cli/render-summary.js.map +1 -0
  44. package/dist/src/cli-help.js +15 -9
  45. package/dist/src/cli-help.js.map +1 -1
  46. package/dist/src/codex-transcript.d.ts +50 -0
  47. package/dist/src/codex-transcript.js +207 -0
  48. package/dist/src/codex-transcript.js.map +1 -0
  49. package/dist/src/daemon/auth.d.ts +2 -0
  50. package/dist/src/daemon/auth.js +40 -0
  51. package/dist/src/daemon/auth.js.map +1 -0
  52. package/dist/src/daemon/client.d.ts +5 -1
  53. package/dist/src/daemon/client.js +21 -2
  54. package/dist/src/daemon/client.js.map +1 -1
  55. package/dist/src/daemon/config.d.ts +15 -0
  56. package/dist/src/daemon/config.js +33 -8
  57. package/dist/src/daemon/config.js.map +1 -1
  58. package/dist/src/daemon/content-fence.d.ts +7 -0
  59. package/dist/src/daemon/content-fence.js +14 -0
  60. package/dist/src/daemon/content-fence.js.map +1 -0
  61. package/dist/src/daemon/lifecycle.js +5 -0
  62. package/dist/src/daemon/lifecycle.js.map +1 -1
  63. package/dist/src/daemon/orientation.d.ts +1 -0
  64. package/dist/src/daemon/orientation.js +35 -6
  65. package/dist/src/daemon/orientation.js.map +1 -1
  66. package/dist/src/daemon/project.d.ts +1 -0
  67. package/dist/src/daemon/project.js +95 -3
  68. package/dist/src/daemon/project.js.map +1 -1
  69. package/dist/src/daemon/routes/compact.js +41 -10
  70. package/dist/src/daemon/routes/compact.js.map +1 -1
  71. package/dist/src/daemon/routes/describe.js +12 -1
  72. package/dist/src/daemon/routes/describe.js.map +1 -1
  73. package/dist/src/daemon/routes/expand.js +12 -1
  74. package/dist/src/daemon/routes/expand.js.map +1 -1
  75. package/dist/src/daemon/routes/grep.js +11 -2
  76. package/dist/src/daemon/routes/grep.js.map +1 -1
  77. package/dist/src/daemon/routes/ingest.js +36 -8
  78. package/dist/src/daemon/routes/ingest.js.map +1 -1
  79. package/dist/src/daemon/routes/promote-events.d.ts +3 -0
  80. package/dist/src/daemon/routes/promote-events.js +180 -0
  81. package/dist/src/daemon/routes/promote-events.js.map +1 -0
  82. package/dist/src/daemon/routes/promote.js +18 -3
  83. package/dist/src/daemon/routes/promote.js.map +1 -1
  84. package/dist/src/daemon/routes/prompt-search.js +11 -2
  85. package/dist/src/daemon/routes/prompt-search.js.map +1 -1
  86. package/dist/src/daemon/routes/recent.js +11 -2
  87. package/dist/src/daemon/routes/recent.js.map +1 -1
  88. package/dist/src/daemon/routes/restore.js +117 -69
  89. package/dist/src/daemon/routes/restore.js.map +1 -1
  90. package/dist/src/daemon/routes/search.js +12 -1
  91. package/dist/src/daemon/routes/search.js.map +1 -1
  92. package/dist/src/daemon/routes/session-complete.d.ts +2 -0
  93. package/dist/src/daemon/routes/session-complete.js +36 -0
  94. package/dist/src/daemon/routes/session-complete.js.map +1 -0
  95. package/dist/src/daemon/routes/status.js +77 -64
  96. package/dist/src/daemon/routes/status.js.map +1 -1
  97. package/dist/src/daemon/routes/store.d.ts +2 -1
  98. package/dist/src/daemon/routes/store.js +42 -8
  99. package/dist/src/daemon/routes/store.js.map +1 -1
  100. package/dist/src/daemon/safe-error.d.ts +5 -0
  101. package/dist/src/daemon/safe-error.js +15 -0
  102. package/dist/src/daemon/safe-error.js.map +1 -0
  103. package/dist/src/daemon/server.d.ts +3 -1
  104. package/dist/src/daemon/server.js +37 -17
  105. package/dist/src/daemon/server.js.map +1 -1
  106. package/dist/src/daemon/validate-cwd.d.ts +5 -0
  107. package/dist/src/daemon/validate-cwd.js +38 -0
  108. package/dist/src/daemon/validate-cwd.js.map +1 -0
  109. package/dist/src/daemon/version.d.ts +10 -0
  110. package/dist/src/daemon/version.js +31 -0
  111. package/dist/src/daemon/version.js.map +1 -0
  112. package/dist/src/db/events-path.d.ts +2 -0
  113. package/dist/src/db/events-path.js +11 -0
  114. package/dist/src/db/events-path.js.map +1 -0
  115. package/dist/src/db/events-stats.d.ts +29 -0
  116. package/dist/src/db/events-stats.js +107 -0
  117. package/dist/src/db/events-stats.js.map +1 -0
  118. package/dist/src/db/migration.js +8 -0
  119. package/dist/src/db/migration.js.map +1 -1
  120. package/dist/src/diagnose.js +14 -1
  121. package/dist/src/diagnose.js.map +1 -1
  122. package/dist/src/doctor/doctor.d.ts +1 -1
  123. package/dist/src/doctor/doctor.js +184 -15
  124. package/dist/src/doctor/doctor.js.map +1 -1
  125. package/dist/src/hooks/auto-heal.js +24 -1
  126. package/dist/src/hooks/auto-heal.js.map +1 -1
  127. package/dist/src/hooks/compact.js +7 -0
  128. package/dist/src/hooks/compact.js.map +1 -1
  129. package/dist/src/hooks/dispatch.d.ts +1 -1
  130. package/dist/src/hooks/dispatch.js +19 -1
  131. package/dist/src/hooks/dispatch.js.map +1 -1
  132. package/dist/src/hooks/events-db.d.ts +41 -0
  133. package/dist/src/hooks/events-db.js +190 -0
  134. package/dist/src/hooks/events-db.js.map +1 -0
  135. package/dist/src/hooks/extractors.d.ts +17 -0
  136. package/dist/src/hooks/extractors.js +198 -0
  137. package/dist/src/hooks/extractors.js.map +1 -0
  138. package/dist/src/hooks/hook-errors.d.ts +14 -0
  139. package/dist/src/hooks/hook-errors.js +56 -0
  140. package/dist/src/hooks/hook-errors.js.map +1 -0
  141. package/dist/src/hooks/post-tool.d.ts +4 -0
  142. package/dist/src/hooks/post-tool.js +43 -0
  143. package/dist/src/hooks/post-tool.js.map +1 -0
  144. package/dist/src/hooks/restore.js +31 -1
  145. package/dist/src/hooks/restore.js.map +1 -1
  146. package/dist/src/hooks/session-end.d.ts +3 -0
  147. package/dist/src/hooks/session-end.js +68 -5
  148. package/dist/src/hooks/session-end.js.map +1 -1
  149. package/dist/src/hooks/session-snapshot.d.ts +12 -0
  150. package/dist/src/hooks/session-snapshot.js +100 -0
  151. package/dist/src/hooks/session-snapshot.js.map +1 -0
  152. package/dist/src/hooks/user-prompt.js +44 -5
  153. package/dist/src/hooks/user-prompt.js.map +1 -1
  154. package/dist/src/import-summary.d.ts +4 -0
  155. package/dist/src/import-summary.js +34 -0
  156. package/dist/src/import-summary.js.map +1 -0
  157. package/dist/src/import.d.ts +11 -1
  158. package/dist/src/import.js +218 -88
  159. package/dist/src/import.js.map +1 -1
  160. package/dist/src/installer/settings.d.ts +5 -0
  161. package/dist/src/installer/settings.js +74 -0
  162. package/dist/src/installer/settings.js.map +1 -0
  163. package/dist/src/mcp/server.d.ts +15 -0
  164. package/dist/src/mcp/server.js +83 -6
  165. package/dist/src/mcp/server.js.map +1 -1
  166. package/dist/src/promotion/detector.js +19 -5
  167. package/dist/src/promotion/detector.js.map +1 -1
  168. package/dist/src/scrub.js +26 -0
  169. package/dist/src/scrub.js.map +1 -1
  170. package/dist/src/stats.d.ts +4 -0
  171. package/dist/src/stats.js +23 -0
  172. package/dist/src/stats.js.map +1 -1
  173. package/dist/src/store/conversation-store.js +2 -1
  174. package/dist/src/store/conversation-store.js.map +1 -1
  175. package/dist/src/store/regex-safety.d.ts +1 -0
  176. package/dist/src/store/regex-safety.js +22 -0
  177. package/dist/src/store/regex-safety.js.map +1 -0
  178. package/dist/src/store/summary-store.js +2 -1
  179. package/dist/src/store/summary-store.js.map +1 -1
  180. package/docs/passive-learning.md +138 -0
  181. package/lcm.mjs +20 -1
  182. package/package.json +5 -2
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Summary renderer — prints the final summary after all sessions are processed.
3
+ * Replaces import-summary.ts for commands that use the ninja renderer.
4
+ */
5
+ function fmtTokens(n) {
6
+ if (n >= 1_000_000)
7
+ return `~${(n / 1_000_000).toFixed(1)}M`;
8
+ if (n >= 1_000)
9
+ return `~${(n / 1_000).toFixed(1)}k`;
10
+ return String(n);
11
+ }
12
+ function fmtRatio(before, after) {
13
+ return (before / after).toFixed(1) + '×';
14
+ }
15
+ function renderBar(barWidth) {
16
+ return '[' + '█'.repeat(barWidth) + ']';
17
+ }
18
+ /** Print the compact (non-verbose) summary table to stdout. */
19
+ export function printSummary(state, opts) {
20
+ const elapsed = (Date.now() - state.startedAt) / 1_000;
21
+ const total = state.completed + state.errors.length;
22
+ const width = Math.max(opts.width, 40);
23
+ // Phase bar (only if there are phases)
24
+ if (state.phases.length > 0) {
25
+ const phaseBar = state.phases
26
+ .map(p => `● ${p.name}`)
27
+ .join(' → ');
28
+ const doneLabel = state.aborted ? 'Aborted' : 'Done ✓';
29
+ process.stdout.write(`\n ${phaseBar} ${doneLabel}\n`);
30
+ }
31
+ // Progress bar
32
+ const barWidth = width < 60 ? 20 : 22;
33
+ const pct = total > 0 ? Math.round((state.completed / total) * 100) : 100;
34
+ let tokenFlowStr = '';
35
+ if (state.tokensIn > 0) {
36
+ if (state.tokensOut > 0 && state.tokensOut < state.tokensIn) {
37
+ const ratio = fmtRatio(state.tokensIn, state.tokensOut);
38
+ tokenFlowStr = ` ${fmtTokens(state.tokensIn)} → ${fmtTokens(state.tokensOut)} tokens, ${ratio}`;
39
+ }
40
+ else {
41
+ tokenFlowStr = ` ${fmtTokens(state.tokensIn)} tokens`;
42
+ }
43
+ }
44
+ const msgs = state.messagesIn > 0 ? ` ${state.messagesIn.toLocaleString()} msgs` : '';
45
+ process.stdout.write(`\n ${renderBar(barWidth)} ${pct}%${msgs}${tokenFlowStr}\n`);
46
+ // Metrics table
47
+ const border = '─'.repeat(49);
48
+ process.stdout.write(`\n ${border}\n`);
49
+ const rows = [];
50
+ rows.push(['Sessions', `${total} processed`]);
51
+ if (state.tokensIn > 0 && state.tokensOut > 0 && state.tokensOut < state.tokensIn) {
52
+ rows.push(['Compression', fmtRatio(state.tokensIn, state.tokensOut)]);
53
+ }
54
+ if (state.dag) {
55
+ rows.push(['DAG nodes', `${state.dag.nodes} (+${state.dag.newNodes} new)`]);
56
+ rows.push(['DAG depth', String(state.dag.depth)]);
57
+ if (state.dag.memoriesPromoted > 0) {
58
+ rows.push(['Memories', `${state.dag.memoriesPromoted} promoted`]);
59
+ }
60
+ }
61
+ rows.push(['Total time', `${elapsed.toFixed(1)}s`]);
62
+ if (state.errors.length > 0) {
63
+ rows.push(['Failed', String(state.errors.length)]);
64
+ }
65
+ const labelWidth = Math.max(...rows.map(([l]) => l.length));
66
+ for (const [label, value] of rows) {
67
+ process.stdout.write(` ${label.padEnd(labelWidth)} ${value}\n`);
68
+ }
69
+ process.stdout.write(` ${border}\n`);
70
+ // Error list
71
+ if (state.errors.length > 0) {
72
+ process.stdout.write('\n Failed:\n');
73
+ for (const { sessionId, message } of state.errors) {
74
+ process.stdout.write(` ${sessionId}: ${message}\n`);
75
+ }
76
+ }
77
+ process.stdout.write('\n');
78
+ }
79
+ //# sourceMappingURL=render-summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-summary.js","sourceRoot":"","sources":["../../../src/cli/render-summary.ts"],"names":[],"mappings":"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"}
@@ -61,36 +61,42 @@ const HELP = {
61
61
  },
62
62
  compact: {
63
63
  summary: "Compact conversation context into DAG summary nodes.",
64
- usage: "lcm compact [--all] [--dry-run] [--replay]",
64
+ usage: "lcm compact [--all] [--dry-run] [--replay] [--no-promote]",
65
65
  options: [
66
66
  ["--all", "Compact all tracked projects (default: current project only)"],
67
67
  ["--dry-run", "Show what would be compacted without writing anything"],
68
68
  ["--replay", "Compact sequentially, threading each summary through the prior context"],
69
+ ["--no-promote", "Skip the automatic promote step that runs after compaction"],
69
70
  ],
70
71
  examples: [
71
72
  ["lcm compact", "Compact current project"],
72
73
  ["lcm compact --all", "Compact all tracked projects"],
73
74
  ["lcm compact --dry-run", "Preview compaction for current project"],
74
75
  ["lcm compact --all --replay", "Rebuild all projects with threaded context (slow)"],
76
+ ["lcm compact --no-promote", "Compact without auto-promoting new insights"],
75
77
  ],
76
- notes: "When invoked via the PreCompact hook (piped stdin), runs automatically during Claude Code context compaction.",
78
+ notes: "When invoked via the PreCompact hook (piped stdin), runs automatically during Claude Code context compaction. After a successful compact, promote runs automatically to surface new insights to long-term memory.",
77
79
  },
78
80
  import: {
79
- summary: "Import Claude Code session transcripts into lossless memory.",
80
- usage: "lcm import [--all] [--verbose] [--dry-run] [--replay]",
81
+ summary: "Import session transcripts (Claude Code or Codex CLI) into lossless memory.",
82
+ usage: "lcm import [--provider claude|codex|all] [--all] [--verbose] [--dry-run] [--replay]",
81
83
  options: [
84
+ ["--provider <name>", "Source: claude (default), codex, or all"],
85
+ ["--codex", "Shorthand for --provider codex"],
82
86
  ["--all", "Import all projects (default: current project only)"],
83
87
  ["--verbose", "Show per-session import detail"],
84
88
  ["--dry-run", "Preview without importing"],
85
89
  ["--replay", "Replay compaction for each imported session"],
86
90
  ],
87
91
  examples: [
88
- ["lcm import", "Import current project sessions"],
89
- ["lcm import --all", "Import all tracked projects"],
92
+ ["lcm import", "Import current Claude Code project sessions"],
93
+ ["lcm import --codex", "Import Codex CLI sessions from ~/.codex/"],
94
+ ["lcm import --provider all", "Import both Claude Code and Codex sessions"],
95
+ ["lcm import --all", "Import all tracked Claude Code projects"],
90
96
  ["lcm import --all --replay", "Import and compact with threaded context"],
91
97
  ["lcm import --dry-run", "Preview what would be imported"],
92
98
  ],
93
- notes: "Reads transcripts from ~/.claude/projects/. Already-imported sessions are skipped.",
99
+ notes: "Claude sessions are read from ~/.claude/projects/. Codex sessions from ~/.codex/. Already-imported sessions are skipped.",
94
100
  },
95
101
  promote: {
96
102
  summary: "Scan summaries and promote durable insights to long-term memory.",
@@ -228,8 +234,8 @@ const GROUPS = [
228
234
  {
229
235
  label: "Memory",
230
236
  commands: [
231
- { name: "compact [--all] [--dry-run] [--replay]", summary: "Compact conversations into DAG summaries" },
232
- { name: "import [--all] [--verbose] [--dry-run] [--replay]", summary: "Import Claude Code session transcripts" },
237
+ { name: "compact [--all] [--dry-run] [--replay] [--no-promote]", summary: "Compact conversations into DAG summaries (auto-promotes after)" },
238
+ { name: "import [--provider claude|codex|all] [--all] [--verbose] [--dry-run] [--replay]", summary: "Import session transcripts (Claude Code or Codex CLI)" },
233
239
  { name: "promote [--all] [--verbose] [--dry-run]", summary: "Promote insights to long-term memory" },
234
240
  { name: "stats [-v]", summary: "Memory inventory and compression ratios" },
235
241
  { name: "diagnose [--all] [--days N] [--verbose] [--json]", summary: "Scan sessions for hook failures and issues" },
@@ -1 +1 @@
1
- {"version":3,"file":"cli-help.js","sourceRoot":"","sources":["../../src/cli-help.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-help.js","sourceRoot":"","sources":["../../src/cli-help.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Parser for Codex CLI session transcript files.
3
+ *
4
+ * Codex stores sessions in ~/.codex/sessions/<session-id>/<session-id>.jsonl
5
+ * and archives them in ~/.codex/archived_sessions/<name>.jsonl.
6
+ *
7
+ * Each JSONL line is an event object with a top-level `type` and `payload`:
8
+ *
9
+ * { type: "session_meta", payload: { id, cwd, ... } }
10
+ * { type: "response_item", payload: { type: "message", role: "user"|"assistant"|..., content: [...] } }
11
+ * { type: "event_msg", payload: { ... } }
12
+ * ...
13
+ *
14
+ * Content blocks for user messages use `type: "input_text"` and for assistant
15
+ * messages use `type: "output_text"` (both carry a `text` string field).
16
+ */
17
+ import type { ParsedMessage } from "./transcript.js";
18
+ /**
19
+ * Parse a Codex JSONL transcript file into the standard ParsedMessage format.
20
+ * Returns an empty array on any read or parse error.
21
+ */
22
+ export declare function parseCodexTranscript(transcriptPath: string): ParsedMessage[];
23
+ /**
24
+ * Extract the working directory from a Codex session JSONL file.
25
+ * Returns undefined if the session_meta line cannot be found/parsed.
26
+ */
27
+ export declare function extractCodexSessionCwd(transcriptPath: string): string | undefined;
28
+ export interface CodexSessionFile {
29
+ path: string;
30
+ sessionId: string;
31
+ mtime: number;
32
+ }
33
+ /**
34
+ * Discover Codex transcript files under a root directory.
35
+ *
36
+ * Supported layouts:
37
+ * - Flat: <root>/<name>.jsonl (archived_sessions/)
38
+ * - Nested: <root>/<id>/<id>.jsonl (sessions/ layout)
39
+ */
40
+ export declare function findCodexSessionFiles(rootDir: string): CodexSessionFile[];
41
+ /**
42
+ * Collect all Codex transcript files from a Codex home directory.
43
+ *
44
+ * Searches:
45
+ * - <codexDir>/archived_sessions/*.jsonl (flat layout)
46
+ * - <codexDir>/sessions/<id>/<id>.jsonl (nested layout)
47
+ *
48
+ * Defaults to ~/.codex when codexDir is omitted.
49
+ */
50
+ export declare function findAllCodexTranscripts(codexDir?: string): CodexSessionFile[];
@@ -0,0 +1,207 @@
1
+ /**
2
+ * Parser for Codex CLI session transcript files.
3
+ *
4
+ * Codex stores sessions in ~/.codex/sessions/<session-id>/<session-id>.jsonl
5
+ * and archives them in ~/.codex/archived_sessions/<name>.jsonl.
6
+ *
7
+ * Each JSONL line is an event object with a top-level `type` and `payload`:
8
+ *
9
+ * { type: "session_meta", payload: { id, cwd, ... } }
10
+ * { type: "response_item", payload: { type: "message", role: "user"|"assistant"|..., content: [...] } }
11
+ * { type: "event_msg", payload: { ... } }
12
+ * ...
13
+ *
14
+ * Content blocks for user messages use `type: "input_text"` and for assistant
15
+ * messages use `type: "output_text"` (both carry a `text` string field).
16
+ */
17
+ import { readdirSync, readFileSync, existsSync, lstatSync } from "node:fs";
18
+ import { join, basename } from "node:path";
19
+ import { homedir } from "node:os";
20
+ import { estimateTokens } from "./transcript.js";
21
+ // ---------------------------------------------------------------------------
22
+ // Text extraction
23
+ // ---------------------------------------------------------------------------
24
+ function extractCodexText(content) {
25
+ if (typeof content === "string")
26
+ return content.trim();
27
+ if (!Array.isArray(content))
28
+ return "";
29
+ return content
30
+ .map((b) => {
31
+ // Codex uses input_text (user) and output_text (assistant)
32
+ if ((b.type === "input_text" || b.type === "output_text") && typeof b.text === "string") {
33
+ return b.text;
34
+ }
35
+ // Plain text fallback
36
+ if (b.type === "text" && typeof b.text === "string") {
37
+ return b.text;
38
+ }
39
+ return "";
40
+ })
41
+ .filter(Boolean)
42
+ .join("\n")
43
+ .trim();
44
+ }
45
+ // ---------------------------------------------------------------------------
46
+ // Exported parser
47
+ // ---------------------------------------------------------------------------
48
+ /**
49
+ * Parse a Codex JSONL transcript file into the standard ParsedMessage format.
50
+ * Returns an empty array on any read or parse error.
51
+ */
52
+ export function parseCodexTranscript(transcriptPath) {
53
+ let raw;
54
+ try {
55
+ raw = readFileSync(transcriptPath, "utf-8");
56
+ }
57
+ catch {
58
+ return [];
59
+ }
60
+ const messages = [];
61
+ for (const line of raw.split("\n")) {
62
+ const trimmed = line.trim();
63
+ if (!trimmed)
64
+ continue;
65
+ let obj;
66
+ try {
67
+ obj = JSON.parse(trimmed);
68
+ }
69
+ catch {
70
+ continue;
71
+ }
72
+ // Only response_item lines carry user/assistant messages
73
+ if (obj.type !== "response_item")
74
+ continue;
75
+ const payload = obj.payload;
76
+ if (!payload || payload.type !== "message")
77
+ continue;
78
+ const role = payload.role;
79
+ if (!role || !["user", "assistant"].includes(role))
80
+ continue;
81
+ const content = extractCodexText(payload.content);
82
+ if (!content.trim())
83
+ continue;
84
+ messages.push({ role, content, tokenCount: estimateTokens(content) });
85
+ }
86
+ return messages;
87
+ }
88
+ /**
89
+ * Extract the working directory from a Codex session JSONL file.
90
+ * Returns undefined if the session_meta line cannot be found/parsed.
91
+ */
92
+ export function extractCodexSessionCwd(transcriptPath) {
93
+ let raw;
94
+ try {
95
+ raw = readFileSync(transcriptPath, "utf-8");
96
+ }
97
+ catch {
98
+ return undefined;
99
+ }
100
+ for (const line of raw.split("\n")) {
101
+ const trimmed = line.trim();
102
+ if (!trimmed)
103
+ continue;
104
+ try {
105
+ const obj = JSON.parse(trimmed);
106
+ if (obj.type === "session_meta") {
107
+ const meta = obj.payload;
108
+ if (typeof meta?.cwd === "string" && meta.cwd)
109
+ return meta.cwd;
110
+ }
111
+ }
112
+ catch {
113
+ continue;
114
+ }
115
+ }
116
+ return undefined;
117
+ }
118
+ /**
119
+ * Discover Codex transcript files under a root directory.
120
+ *
121
+ * Supported layouts:
122
+ * - Flat: <root>/<name>.jsonl (archived_sessions/)
123
+ * - Nested: <root>/<id>/<id>.jsonl (sessions/ layout)
124
+ */
125
+ export function findCodexSessionFiles(rootDir) {
126
+ const files = [];
127
+ if (!existsSync(rootDir))
128
+ return files;
129
+ for (const entry of readdirSync(rootDir, { withFileTypes: true })) {
130
+ // Flat layout: rootDir/<name>.jsonl
131
+ if (entry.isFile() && !entry.isSymbolicLink() && entry.name.endsWith(".jsonl")) {
132
+ try {
133
+ const full = join(rootDir, entry.name);
134
+ const st = lstatSync(full);
135
+ if (st.isSymbolicLink())
136
+ continue; // skip symlinks
137
+ files.push({
138
+ path: full,
139
+ sessionId: basename(entry.name, ".jsonl"),
140
+ mtime: st.mtimeMs,
141
+ });
142
+ }
143
+ catch {
144
+ // skip unreadable entries
145
+ }
146
+ continue;
147
+ }
148
+ // Nested layout: rootDir/<id>/<id>.jsonl
149
+ if (entry.isDirectory() && !entry.isSymbolicLink()) {
150
+ const nested = join(rootDir, entry.name, `${entry.name}.jsonl`);
151
+ if (existsSync(nested)) {
152
+ try {
153
+ const st = lstatSync(nested);
154
+ if (st.isSymbolicLink()) {
155
+ // skip symlinks
156
+ }
157
+ else if (st.isFile()) {
158
+ files.push({
159
+ path: nested,
160
+ sessionId: entry.name,
161
+ mtime: st.mtimeMs,
162
+ });
163
+ }
164
+ }
165
+ catch {
166
+ // skip
167
+ }
168
+ }
169
+ }
170
+ }
171
+ return files.sort((a, b) => {
172
+ const d = a.mtime - b.mtime;
173
+ if (d !== 0)
174
+ return d;
175
+ return a.sessionId.localeCompare(b.sessionId);
176
+ });
177
+ }
178
+ /**
179
+ * Collect all Codex transcript files from a Codex home directory.
180
+ *
181
+ * Searches:
182
+ * - <codexDir>/archived_sessions/*.jsonl (flat layout)
183
+ * - <codexDir>/sessions/<id>/<id>.jsonl (nested layout)
184
+ *
185
+ * Defaults to ~/.codex when codexDir is omitted.
186
+ */
187
+ export function findAllCodexTranscripts(codexDir) {
188
+ const root = codexDir ?? join(homedir(), ".codex");
189
+ const results = [];
190
+ // Archived sessions (flat)
191
+ results.push(...findCodexSessionFiles(join(root, "archived_sessions")));
192
+ // Active sessions (nested)
193
+ results.push(...findCodexSessionFiles(join(root, "sessions")));
194
+ // De-duplicate by sessionId (flat archive wins over sessions/)
195
+ const seen = new Map();
196
+ for (const f of results) {
197
+ if (!seen.has(f.sessionId))
198
+ seen.set(f.sessionId, f);
199
+ }
200
+ return [...seen.values()].sort((a, b) => {
201
+ const d = a.mtime - b.mtime;
202
+ if (d !== 0)
203
+ return d;
204
+ return a.sessionId.localeCompare(b.sessionId);
205
+ });
206
+ }
207
+ //# sourceMappingURL=codex-transcript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-transcript.js","sourceRoot":"","sources":["../../src/codex-transcript.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function ensureAuthToken(tokenPath: string): void;
2
+ export declare function readAuthToken(tokenPath: string): string | null;
@@ -0,0 +1,40 @@
1
+ import { randomBytes } from "node:crypto";
2
+ import { existsSync, openSync, writeSync, closeSync, readFileSync, chmodSync, mkdirSync, renameSync } from "node:fs";
3
+ import { dirname, join } from "node:path";
4
+ export function ensureAuthToken(tokenPath) {
5
+ if (existsSync(tokenPath)) {
6
+ try {
7
+ chmodSync(tokenPath, 0o600);
8
+ }
9
+ catch { }
10
+ return;
11
+ }
12
+ mkdirSync(dirname(tokenPath), { recursive: true });
13
+ const token = randomBytes(32).toString("hex");
14
+ // Write to a temp file in the same directory as tokenPath, then atomically rename.
15
+ // Using dirname(tokenPath) ensures both paths are on the same filesystem,
16
+ // preventing EXDEV errors from cross-device renameSync when tmpdir() differs.
17
+ const tmpPath = join(dirname(tokenPath), `.lcm-token-${randomBytes(8).toString("hex")}.tmp`);
18
+ const fd = openSync(tmpPath, "wx", 0o600);
19
+ try {
20
+ writeSync(fd, token);
21
+ }
22
+ finally {
23
+ closeSync(fd);
24
+ }
25
+ renameSync(tmpPath, tokenPath);
26
+ try {
27
+ chmodSync(tokenPath, 0o600);
28
+ }
29
+ catch { }
30
+ }
31
+ export function readAuthToken(tokenPath) {
32
+ try {
33
+ const token = readFileSync(tokenPath, "utf-8").trim();
34
+ return token || null;
35
+ }
36
+ catch {
37
+ return null;
38
+ }
39
+ }
40
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/daemon/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC;YAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAC7C,OAAO;IACT,CAAC;IACD,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,mFAAmF;IACnF,0EAA0E;IAC1E,8EAA8E;IAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,cAAc,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7F,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,SAAS,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IACvB,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;IACD,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC/B,IAAI,CAAC;QAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACtD,OAAO,KAAK,IAAI,IAAI,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1,6 +1,10 @@
1
1
  export declare class DaemonClient {
2
2
  private baseUrl;
3
- constructor(baseUrl: string);
3
+ private tokenPath?;
4
+ private token;
5
+ private tokenLoaded;
6
+ constructor(baseUrl: string, tokenPath?: string | undefined);
7
+ private getToken;
4
8
  health(): Promise<{
5
9
  status: string;
6
10
  uptime: number;
@@ -1,7 +1,21 @@
1
+ import { readAuthToken } from "./auth.js";
2
+ import { join } from "node:path";
3
+ import { homedir } from "node:os";
1
4
  export class DaemonClient {
2
5
  baseUrl;
3
- constructor(baseUrl) {
6
+ tokenPath;
7
+ token = null;
8
+ tokenLoaded = false;
9
+ constructor(baseUrl, tokenPath) {
4
10
  this.baseUrl = baseUrl;
11
+ this.tokenPath = tokenPath;
12
+ }
13
+ getToken() {
14
+ if (!this.tokenLoaded) {
15
+ this.token = readAuthToken(this.tokenPath ?? join(homedir(), ".lossless-claude", "daemon.token"));
16
+ this.tokenLoaded = true;
17
+ }
18
+ return this.token;
5
19
  }
6
20
  async health() {
7
21
  try {
@@ -13,9 +27,14 @@ export class DaemonClient {
13
27
  }
14
28
  }
15
29
  async post(path, body) {
30
+ const token = this.getToken();
31
+ const headers = { "Content-Type": "application/json" };
32
+ if (token) {
33
+ headers["Authorization"] = `Bearer ${token}`;
34
+ }
16
35
  const res = await fetch(`${this.baseUrl}${path}`, {
17
36
  method: "POST",
18
- headers: { "Content-Type": "application/json" },
37
+ headers,
19
38
  body: JSON.stringify(body),
20
39
  });
21
40
  if (!res.ok) {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/daemon/client.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAY;IACH;IAApB,YAAoB,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAAG,CAAC;IAEvC,KAAK,CAAC,MAAM;QACV,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,SAAS,CAAC,CAAC;YAClD,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAE,MAAM,GAAG,CAAC,IAAI,EAAyC,CAAC,CAAC,CAAC,IAAI,CAAC;QAClF,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI,CAAc,IAAY,EAAE,IAAa;QACjD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAuB,CAAC;YAC5F,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,MAAM,GAAG,CAAC,IAAI,EAAO,CAAC;IAC/B,CAAC;CACF"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/daemon/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,OAAO,YAAY;IAIH;IAAyB;IAHrC,KAAK,GAAkB,IAAI,CAAC;IAC5B,WAAW,GAAG,KAAK,CAAC;IAE5B,YAAoB,OAAe,EAAU,SAAkB;QAA3C,YAAO,GAAP,OAAO,CAAQ;QAAU,cAAS,GAAT,SAAS,CAAS;IAAG,CAAC;IAE3D,QAAQ;QACd,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,aAAa,CACxB,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,kBAAkB,EAAE,cAAc,CAAC,CACtE,CAAC;YACF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,SAAS,CAAC,CAAC;YAClD,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAE,MAAM,GAAG,CAAC,IAAI,EAAyC,CAAC,CAAC,CAAC,IAAI,CAAC;QAClF,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI,CAAc,IAAY,EAAE,IAAa;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QAC/E,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;QAC/C,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;YAChD,MAAM,EAAE,MAAM;YACd,OAAO;YACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAuB,CAAC;YAC5F,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,MAAM,GAAG,CAAC,IAAI,EAAO,CAAC;IAC/B,CAAC;CACF"}
@@ -23,6 +23,16 @@ export type DaemonConfig = {
23
23
  architecturePatterns: string[];
24
24
  dedupBm25Threshold: number;
25
25
  dedupCandidateLimit: number;
26
+ eventConfidence?: {
27
+ decision?: number;
28
+ plan?: number;
29
+ errorFix?: number;
30
+ batch?: number;
31
+ pattern?: number;
32
+ };
33
+ reinforcementBoost?: number;
34
+ maxConfidence?: number;
35
+ insightsMaxAgeDays?: number;
26
36
  };
27
37
  };
28
38
  restoration: {
@@ -43,5 +53,10 @@ export type DaemonConfig = {
43
53
  mock: boolean;
44
54
  };
45
55
  security: SecurityConfig;
56
+ hooks: {
57
+ snapshotIntervalSec: number;
58
+ disableAutoCompact: boolean;
59
+ };
46
60
  };
61
+ export declare function deepMerge(target: Record<string, unknown>, source: Record<string, unknown>): Record<string, unknown>;
47
62
  export declare function loadDaemonConfig(configPath: string, overrides?: any, env?: Record<string, string | undefined>): DaemonConfig;