braindump 0.5.0 → 1.0.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.
- package/README.md +73 -22
- package/dist/adapters/claude-code/adapter.d.ts.map +1 -1
- package/dist/adapters/claude-code/adapter.js +30 -3
- package/dist/adapters/claude-code/adapter.js.map +1 -1
- package/dist/adapters/codex/adapter.d.ts +1 -0
- package/dist/adapters/codex/adapter.d.ts.map +1 -1
- package/dist/adapters/codex/adapter.js +27 -0
- package/dist/adapters/codex/adapter.js.map +1 -1
- package/dist/adapters/copilot/adapter.d.ts +29 -0
- package/dist/adapters/copilot/adapter.d.ts.map +1 -0
- package/dist/adapters/copilot/adapter.js +501 -0
- package/dist/adapters/copilot/adapter.js.map +1 -0
- package/dist/adapters/cursor/adapter.d.ts.map +1 -1
- package/dist/adapters/cursor/adapter.js +17 -7
- package/dist/adapters/cursor/adapter.js.map +1 -1
- package/dist/adapters/droid/adapter.d.ts +27 -0
- package/dist/adapters/droid/adapter.d.ts.map +1 -0
- package/dist/adapters/droid/adapter.js +507 -0
- package/dist/adapters/droid/adapter.js.map +1 -0
- package/dist/adapters/gemini/adapter.d.ts +29 -0
- package/dist/adapters/gemini/adapter.d.ts.map +1 -0
- package/dist/adapters/gemini/adapter.js +456 -0
- package/dist/adapters/gemini/adapter.js.map +1 -0
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +8 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/opencode/adapter.d.ts +32 -0
- package/dist/adapters/opencode/adapter.d.ts.map +1 -0
- package/dist/adapters/opencode/adapter.js +643 -0
- package/dist/adapters/opencode/adapter.js.map +1 -0
- package/dist/cli/index.js +213 -42
- package/dist/cli/index.js.map +1 -1
- package/dist/core/compression.d.ts.map +1 -1
- package/dist/core/compression.js +12 -0
- package/dist/core/compression.js.map +1 -1
- package/dist/core/launcher.d.ts +20 -0
- package/dist/core/launcher.d.ts.map +1 -0
- package/dist/core/launcher.js +87 -0
- package/dist/core/launcher.js.map +1 -0
- package/dist/core/prompt-builder.d.ts.map +1 -1
- package/dist/core/prompt-builder.js +15 -0
- package/dist/core/prompt-builder.js.map +1 -1
- package/dist/core/registry.d.ts.map +1 -1
- package/dist/core/registry.js +48 -0
- package/dist/core/registry.js.map +1 -1
- package/dist/core/session-cache.d.ts +17 -0
- package/dist/core/session-cache.d.ts.map +1 -0
- package/dist/core/session-cache.js +59 -0
- package/dist/core/session-cache.js.map +1 -0
- package/dist/core/tool-summarizer.d.ts +40 -0
- package/dist/core/tool-summarizer.d.ts.map +1 -0
- package/dist/core/tool-summarizer.js +73 -0
- package/dist/core/tool-summarizer.js.map +1 -0
- package/dist/core/validation.d.ts +21 -2
- package/dist/core/validation.d.ts.map +1 -1
- package/dist/core/validation.js +6 -1
- package/dist/core/validation.js.map +1 -1
- package/dist/types/index.d.ts +7 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +7 -1
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { execSync, spawn } from "node:child_process";
|
|
2
|
+
import { writeFileSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
/**
|
|
5
|
+
* Launch commands for each target tool.
|
|
6
|
+
*/
|
|
7
|
+
const LAUNCH_COMMANDS = {
|
|
8
|
+
"claude-code": { cmd: "claude", promptMode: "positional" },
|
|
9
|
+
codex: { cmd: "codex", promptMode: "positional" },
|
|
10
|
+
cursor: { cmd: "cursor", promptMode: "none" },
|
|
11
|
+
copilot: { cmd: "copilot", promptMode: "flag", flag: "-i" },
|
|
12
|
+
gemini: { cmd: "gemini", promptMode: "positional" },
|
|
13
|
+
opencode: { cmd: "opencode", promptMode: "flag", flag: "--prompt" },
|
|
14
|
+
droid: { cmd: "droid", promptMode: "subcommand" },
|
|
15
|
+
};
|
|
16
|
+
const REFERENCE_THRESHOLD = 50_000; // 50KB — auto-switch to reference mode
|
|
17
|
+
/**
|
|
18
|
+
* Check if a tool is installed on this system.
|
|
19
|
+
*/
|
|
20
|
+
export function isToolInstalled(tool) {
|
|
21
|
+
try {
|
|
22
|
+
execSync(`which ${tool} 2>/dev/null || where ${tool} 2>nul`, {
|
|
23
|
+
stdio: "ignore",
|
|
24
|
+
});
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get a list of installed agent tools (excluding a given source).
|
|
33
|
+
*/
|
|
34
|
+
export function getInstalledTools(exclude) {
|
|
35
|
+
const results = [];
|
|
36
|
+
for (const [id, config] of Object.entries(LAUNCH_COMMANDS)) {
|
|
37
|
+
if (id === exclude)
|
|
38
|
+
continue;
|
|
39
|
+
if (isToolInstalled(config.cmd)) {
|
|
40
|
+
results.push({ id: id, cmd: config.cmd });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return results;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Launch a target tool with the handoff prompt.
|
|
47
|
+
*/
|
|
48
|
+
export function launchTool(agentId, prompt, options = {}) {
|
|
49
|
+
const config = LAUNCH_COMMANDS[agentId];
|
|
50
|
+
if (!config) {
|
|
51
|
+
throw new Error(`Unknown target agent: ${agentId}`);
|
|
52
|
+
}
|
|
53
|
+
const useReference = options.reference || prompt.length > REFERENCE_THRESHOLD;
|
|
54
|
+
let effectivePrompt;
|
|
55
|
+
if (useReference) {
|
|
56
|
+
const refPath = join(options.projectPath || process.cwd(), ".braindump-handoff.md");
|
|
57
|
+
writeFileSync(refPath, prompt);
|
|
58
|
+
effectivePrompt = `Read the file at ${refPath} and follow the instructions inside. It contains a session handoff from a previous AI coding agent — continue the work described there.`;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
effectivePrompt = prompt;
|
|
62
|
+
}
|
|
63
|
+
const args = [];
|
|
64
|
+
switch (config.promptMode) {
|
|
65
|
+
case "positional":
|
|
66
|
+
args.push(effectivePrompt);
|
|
67
|
+
break;
|
|
68
|
+
case "flag":
|
|
69
|
+
args.push(config.flag, effectivePrompt);
|
|
70
|
+
break;
|
|
71
|
+
case "subcommand":
|
|
72
|
+
args.push("exec", effectivePrompt);
|
|
73
|
+
break;
|
|
74
|
+
case "none":
|
|
75
|
+
// cursor just opens the project
|
|
76
|
+
if (options.projectPath) {
|
|
77
|
+
args.push(options.projectPath);
|
|
78
|
+
}
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
spawn(config.cmd, args, {
|
|
82
|
+
stdio: "inherit",
|
|
83
|
+
cwd: options.projectPath || process.cwd(),
|
|
84
|
+
detached: false,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=launcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launcher.js","sourceRoot":"","sources":["../../src/core/launcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../src/core/prompt-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAiBrF;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,iBAAiB,EAC7B,WAAW,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,MAAM,GAC3C,MAAM,
|
|
1
|
+
{"version":3,"file":"prompt-builder.d.ts","sourceRoot":"","sources":["../../src/core/prompt-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAiBrF;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,eAAe,EACxB,UAAU,EAAE,iBAAiB,EAC7B,WAAW,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,MAAM,GAC3C,MAAM,CA8FR"}
|
|
@@ -74,6 +74,21 @@ export function buildResumePrompt(session, compressed, targetAgent) {
|
|
|
74
74
|
``,
|
|
75
75
|
compressed.content,
|
|
76
76
|
``,
|
|
77
|
+
...(session.toolActivity && session.toolActivity.length > 0
|
|
78
|
+
? [
|
|
79
|
+
`---`,
|
|
80
|
+
``,
|
|
81
|
+
`## Tool Activity`,
|
|
82
|
+
``,
|
|
83
|
+
...session.toolActivity.map((t) => {
|
|
84
|
+
const samplesStr = t.samples.length > 0
|
|
85
|
+
? t.samples.map((s) => `\`${s}\``).join(" . ")
|
|
86
|
+
: "";
|
|
87
|
+
return `- **${t.name}** (x${t.count})${samplesStr ? ": " + samplesStr : ""}`;
|
|
88
|
+
}),
|
|
89
|
+
``,
|
|
90
|
+
]
|
|
91
|
+
: []),
|
|
77
92
|
`---`,
|
|
78
93
|
``,
|
|
79
94
|
`## Resume Now`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../src/core/prompt-builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prompt-builder.js","sourceRoot":"","sources":["../../src/core/prompt-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE5D;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,CAqFrD,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,MAAM,GACrC,MAAM,CAKR"}
|
package/dist/core/registry.js
CHANGED
|
@@ -38,6 +38,54 @@ export const AGENT_REGISTRY = {
|
|
|
38
38
|
usableTokens: 120_000,
|
|
39
39
|
memoryFiles: ["AGENTS.md", "~/.codex/AGENTS.md"],
|
|
40
40
|
},
|
|
41
|
+
copilot: {
|
|
42
|
+
id: "copilot",
|
|
43
|
+
name: "GitHub Copilot CLI",
|
|
44
|
+
storagePaths: {
|
|
45
|
+
linux: "~/.copilot/session-state/",
|
|
46
|
+
darwin: "~/.copilot/session-state/",
|
|
47
|
+
win32: "~/.copilot/session-state/",
|
|
48
|
+
},
|
|
49
|
+
contextWindow: 128_000,
|
|
50
|
+
usableTokens: 76_000,
|
|
51
|
+
memoryFiles: [],
|
|
52
|
+
},
|
|
53
|
+
gemini: {
|
|
54
|
+
id: "gemini",
|
|
55
|
+
name: "Gemini CLI",
|
|
56
|
+
storagePaths: {
|
|
57
|
+
linux: "~/.gemini/tmp/",
|
|
58
|
+
darwin: "~/.gemini/tmp/",
|
|
59
|
+
win32: "~/.gemini/tmp/",
|
|
60
|
+
},
|
|
61
|
+
contextWindow: 1_000_000,
|
|
62
|
+
usableTokens: 500_000,
|
|
63
|
+
memoryFiles: [],
|
|
64
|
+
},
|
|
65
|
+
opencode: {
|
|
66
|
+
id: "opencode",
|
|
67
|
+
name: "OpenCode",
|
|
68
|
+
storagePaths: {
|
|
69
|
+
linux: "~/.local/share/opencode/",
|
|
70
|
+
darwin: "~/.local/share/opencode/",
|
|
71
|
+
win32: "~/.local/share/opencode/",
|
|
72
|
+
},
|
|
73
|
+
contextWindow: 200_000,
|
|
74
|
+
usableTokens: 120_000,
|
|
75
|
+
memoryFiles: [],
|
|
76
|
+
},
|
|
77
|
+
droid: {
|
|
78
|
+
id: "droid",
|
|
79
|
+
name: "Factory Droid",
|
|
80
|
+
storagePaths: {
|
|
81
|
+
linux: "~/.factory/sessions/",
|
|
82
|
+
darwin: "~/.factory/sessions/",
|
|
83
|
+
win32: "~/.factory/sessions/",
|
|
84
|
+
},
|
|
85
|
+
contextWindow: 200_000,
|
|
86
|
+
usableTokens: 120_000,
|
|
87
|
+
memoryFiles: [],
|
|
88
|
+
},
|
|
41
89
|
};
|
|
42
90
|
/**
|
|
43
91
|
* Get the usable token budget for a given target.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAA+B;IACxD,aAAa,EAAE;QACb,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,aAAa;QACnB,YAAY,EAAE;YACZ,KAAK,EAAE,qBAAqB;YAC5B,MAAM,EAAE,qBAAqB;YAC7B,KAAK,EAAE,qBAAqB;SAC7B;QACD,aAAa,EAAE,OAAO;QACtB,YAAY,EAAE,OAAO;QACrB,WAAW,EAAE,CAAC,WAAW,EAAE,mBAAmB,CAAC;KAChD;IACD,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE;YACZ,KAAK,EAAE,yCAAyC;YAChD,MAAM,EAAE,6DAA6D;YACrE,KAAK,EAAE,yCAAyC;SACjD;QACD,aAAa,EAAE,MAAM;QACrB,YAAY,EAAE,MAAM;QACpB,WAAW,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC;KAChD;IACD,KAAK,EAAE;QACL,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,WAAW;QACjB,YAAY,EAAE;YACZ,KAAK,EAAE,oBAAoB;YAC3B,MAAM,EAAE,oBAAoB;YAC5B,KAAK,EAAE,oBAAoB;SAC5B;QACD,aAAa,EAAE,OAAO;QACtB,YAAY,EAAE,OAAO;QACrB,WAAW,EAAE,CAAC,WAAW,EAAE,oBAAoB,CAAC;KACjD;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAsC;IAEtC,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,CAAC,yBAAyB;IAC1C,CAAC;IACD,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC;AAC7C,CAAC"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAA+B;IACxD,aAAa,EAAE;QACb,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,aAAa;QACnB,YAAY,EAAE;YACZ,KAAK,EAAE,qBAAqB;YAC5B,MAAM,EAAE,qBAAqB;YAC7B,KAAK,EAAE,qBAAqB;SAC7B;QACD,aAAa,EAAE,OAAO;QACtB,YAAY,EAAE,OAAO;QACrB,WAAW,EAAE,CAAC,WAAW,EAAE,mBAAmB,CAAC;KAChD;IACD,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE;YACZ,KAAK,EAAE,yCAAyC;YAChD,MAAM,EAAE,6DAA6D;YACrE,KAAK,EAAE,yCAAyC;SACjD;QACD,aAAa,EAAE,MAAM;QACrB,YAAY,EAAE,MAAM;QACpB,WAAW,EAAE,CAAC,cAAc,EAAE,gBAAgB,CAAC;KAChD;IACD,KAAK,EAAE;QACL,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,WAAW;QACjB,YAAY,EAAE;YACZ,KAAK,EAAE,oBAAoB;YAC3B,MAAM,EAAE,oBAAoB;YAC5B,KAAK,EAAE,oBAAoB;SAC5B;QACD,aAAa,EAAE,OAAO;QACtB,YAAY,EAAE,OAAO;QACrB,WAAW,EAAE,CAAC,WAAW,EAAE,oBAAoB,CAAC;KACjD;IACD,OAAO,EAAE;QACP,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,oBAAoB;QAC1B,YAAY,EAAE;YACZ,KAAK,EAAE,2BAA2B;YAClC,MAAM,EAAE,2BAA2B;YACnC,KAAK,EAAE,2BAA2B;SACnC;QACD,aAAa,EAAE,OAAO;QACtB,YAAY,EAAE,MAAM;QACpB,WAAW,EAAE,EAAE;KAChB;IACD,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,YAAY;QAClB,YAAY,EAAE;YACZ,KAAK,EAAE,gBAAgB;YACvB,MAAM,EAAE,gBAAgB;YACxB,KAAK,EAAE,gBAAgB;SACxB;QACD,aAAa,EAAE,SAAS;QACxB,YAAY,EAAE,OAAO;QACrB,WAAW,EAAE,EAAE;KAChB;IACD,QAAQ,EAAE;QACR,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,YAAY,EAAE;YACZ,KAAK,EAAE,0BAA0B;YACjC,MAAM,EAAE,0BAA0B;YAClC,KAAK,EAAE,0BAA0B;SAClC;QACD,aAAa,EAAE,OAAO;QACtB,YAAY,EAAE,OAAO;QACrB,WAAW,EAAE,EAAE;KAChB;IACD,KAAK,EAAE;QACL,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,eAAe;QACrB,YAAY,EAAE;YACZ,KAAK,EAAE,sBAAsB;YAC7B,MAAM,EAAE,sBAAsB;YAC9B,KAAK,EAAE,sBAAsB;SAC9B;QACD,aAAa,EAAE,OAAO;QACtB,YAAY,EAAE,OAAO;QACrB,WAAW,EAAE,EAAE;KAChB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAsC;IAEtC,IAAI,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,CAAC,yBAAyB;IAC1C,CAAC;IACD,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AgentId, SessionInfo } from "../types/index.js";
|
|
2
|
+
export interface CachedSessionEntry extends SessionInfo {
|
|
3
|
+
agentId: AgentId;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Get the cached session index. Returns null if stale or missing.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getCachedIndex(): CachedSessionEntry[] | null;
|
|
9
|
+
/**
|
|
10
|
+
* Write the session index cache.
|
|
11
|
+
*/
|
|
12
|
+
export declare function writeCachedIndex(entries: CachedSessionEntry[]): void;
|
|
13
|
+
/**
|
|
14
|
+
* Invalidate (delete) the cache.
|
|
15
|
+
*/
|
|
16
|
+
export declare function invalidateCache(): void;
|
|
17
|
+
//# sourceMappingURL=session-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-cache.d.ts","sourceRoot":"","sources":["../../src/core/session-cache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAM9D,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,kBAAkB,EAAE,GAAG,IAAI,CA0B5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAIpE;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAQtC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, statSync, unlinkSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
const CACHE_DIR = join(homedir(), ".braindump");
|
|
5
|
+
const CACHE_FILE = join(CACHE_DIR, "sessions.jsonl");
|
|
6
|
+
const TTL_MS = 5 * 60 * 1000; // 5 minutes
|
|
7
|
+
/**
|
|
8
|
+
* Get the cached session index. Returns null if stale or missing.
|
|
9
|
+
*/
|
|
10
|
+
export function getCachedIndex() {
|
|
11
|
+
if (!existsSync(CACHE_FILE)) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
try {
|
|
15
|
+
const stat = statSync(CACHE_FILE);
|
|
16
|
+
if (Date.now() - stat.mtimeMs > TTL_MS) {
|
|
17
|
+
return null; // stale
|
|
18
|
+
}
|
|
19
|
+
const content = readFileSync(CACHE_FILE, "utf-8");
|
|
20
|
+
const entries = [];
|
|
21
|
+
for (const line of content.split("\n")) {
|
|
22
|
+
const trimmed = line.trim();
|
|
23
|
+
if (!trimmed)
|
|
24
|
+
continue;
|
|
25
|
+
try {
|
|
26
|
+
entries.push(JSON.parse(trimmed));
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
// skip malformed lines
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return entries;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Write the session index cache.
|
|
40
|
+
*/
|
|
41
|
+
export function writeCachedIndex(entries) {
|
|
42
|
+
mkdirSync(CACHE_DIR, { recursive: true });
|
|
43
|
+
const content = entries.map((e) => JSON.stringify(e)).join("\n") + "\n";
|
|
44
|
+
writeFileSync(CACHE_FILE, content);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Invalidate (delete) the cache.
|
|
48
|
+
*/
|
|
49
|
+
export function invalidateCache() {
|
|
50
|
+
try {
|
|
51
|
+
if (existsSync(CACHE_FILE)) {
|
|
52
|
+
unlinkSync(CACHE_FILE);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// ignore
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=session-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-cache.js","sourceRoot":"","sources":["../../src/core/session-cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AAChD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;AACrD,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,YAAY;AAM1C;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC,CAAC,QAAQ;QACvB,CAAC;QAED,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,OAAO,GAAyB,EAAE,CAAC;QACzC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAuB,CAAC,CAAC;YAC1D,CAAC;YAAC,MAAM,CAAC;gBACP,uBAAuB;YACzB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAA6B;IAC5D,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACxE,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,UAAU,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ToolActivitySummary } from "../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Collects tool invocations during session parsing and produces
|
|
4
|
+
* aggregated ToolActivitySummary entries.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* const collector = new SummaryCollector();
|
|
8
|
+
* collector.record("Bash", "npm test -> exit 0");
|
|
9
|
+
* collector.record("Edit", "edit src/auth.ts (+5 -2)");
|
|
10
|
+
* session.toolActivity = collector.getSummaries();
|
|
11
|
+
*/
|
|
12
|
+
export declare class SummaryCollector {
|
|
13
|
+
private counts;
|
|
14
|
+
private samples;
|
|
15
|
+
private static readonly MAX_SAMPLES;
|
|
16
|
+
/**
|
|
17
|
+
* Record a tool invocation.
|
|
18
|
+
* @param category Normalized tool category (e.g. "Bash", "Edit", "Read")
|
|
19
|
+
* @param oneLiner Short description of what was done
|
|
20
|
+
*/
|
|
21
|
+
record(category: string, oneLiner: string): void;
|
|
22
|
+
/**
|
|
23
|
+
* Return aggregated summaries sorted by count descending.
|
|
24
|
+
*/
|
|
25
|
+
getSummaries(): ToolActivitySummary[];
|
|
26
|
+
}
|
|
27
|
+
/** Format a shell command summary. */
|
|
28
|
+
export declare function shellSummary(command: string, exitCode?: number): string;
|
|
29
|
+
/** Format a file edit summary. */
|
|
30
|
+
export declare function fileSummary(filePath: string, action: "edit" | "create" | "read" | "delete", stats?: {
|
|
31
|
+
added?: number;
|
|
32
|
+
removed?: number;
|
|
33
|
+
}): string;
|
|
34
|
+
/** Format a grep/search summary. */
|
|
35
|
+
export declare function grepSummary(pattern: string, path?: string): string;
|
|
36
|
+
/** Format a glob/find summary. */
|
|
37
|
+
export declare function globSummary(pattern: string): string;
|
|
38
|
+
/** Format an MCP tool summary. */
|
|
39
|
+
export declare function mcpSummary(toolName: string, args?: string): string;
|
|
40
|
+
//# sourceMappingURL=tool-summarizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-summarizer.d.ts","sourceRoot":"","sources":["../../src/core/tool-summarizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D;;;;;;;;;GASG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAK;IAExC;;;;OAIG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAShD;;OAEG;IACH,YAAY,IAAI,mBAAmB,EAAE;CAYtC;AAID,sCAAsC;AACtC,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAGvE;AAED,kCAAkC;AAClC,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,EAC7C,KAAK,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,MAAM,CAOR;AAED,oCAAoC;AACpC,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAGlE;AAED,kCAAkC;AAClC,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,kCAAkC;AAClC,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAGlE"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Collects tool invocations during session parsing and produces
|
|
3
|
+
* aggregated ToolActivitySummary entries.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* const collector = new SummaryCollector();
|
|
7
|
+
* collector.record("Bash", "npm test -> exit 0");
|
|
8
|
+
* collector.record("Edit", "edit src/auth.ts (+5 -2)");
|
|
9
|
+
* session.toolActivity = collector.getSummaries();
|
|
10
|
+
*/
|
|
11
|
+
export class SummaryCollector {
|
|
12
|
+
counts = new Map();
|
|
13
|
+
samples = new Map();
|
|
14
|
+
static MAX_SAMPLES = 3;
|
|
15
|
+
/**
|
|
16
|
+
* Record a tool invocation.
|
|
17
|
+
* @param category Normalized tool category (e.g. "Bash", "Edit", "Read")
|
|
18
|
+
* @param oneLiner Short description of what was done
|
|
19
|
+
*/
|
|
20
|
+
record(category, oneLiner) {
|
|
21
|
+
this.counts.set(category, (this.counts.get(category) ?? 0) + 1);
|
|
22
|
+
const existing = this.samples.get(category) ?? [];
|
|
23
|
+
if (existing.length < SummaryCollector.MAX_SAMPLES) {
|
|
24
|
+
existing.push(oneLiner);
|
|
25
|
+
this.samples.set(category, existing);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Return aggregated summaries sorted by count descending.
|
|
30
|
+
*/
|
|
31
|
+
getSummaries() {
|
|
32
|
+
const results = [];
|
|
33
|
+
for (const [name, count] of this.counts) {
|
|
34
|
+
results.push({
|
|
35
|
+
name,
|
|
36
|
+
count,
|
|
37
|
+
samples: this.samples.get(name) ?? [],
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
results.sort((a, b) => b.count - a.count);
|
|
41
|
+
return results;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// --- Helper formatters for common tool patterns ---
|
|
45
|
+
/** Format a shell command summary. */
|
|
46
|
+
export function shellSummary(command, exitCode) {
|
|
47
|
+
const cmd = command.length > 60 ? command.slice(0, 57) + "..." : command;
|
|
48
|
+
return exitCode != null ? `$ ${cmd} -> exit ${exitCode}` : `$ ${cmd}`;
|
|
49
|
+
}
|
|
50
|
+
/** Format a file edit summary. */
|
|
51
|
+
export function fileSummary(filePath, action, stats) {
|
|
52
|
+
const name = filePath.split("/").pop() ?? filePath;
|
|
53
|
+
const shortPath = filePath.length > 40 ? "..." + filePath.slice(-37) : filePath;
|
|
54
|
+
if (stats?.added != null || stats?.removed != null) {
|
|
55
|
+
return `${action} ${shortPath} (+${stats.added ?? 0} -${stats.removed ?? 0})`;
|
|
56
|
+
}
|
|
57
|
+
return `${action} ${shortPath}`;
|
|
58
|
+
}
|
|
59
|
+
/** Format a grep/search summary. */
|
|
60
|
+
export function grepSummary(pattern, path) {
|
|
61
|
+
const p = pattern.length > 30 ? pattern.slice(0, 27) + "..." : pattern;
|
|
62
|
+
return path ? `grep "${p}" ${path}` : `grep "${p}"`;
|
|
63
|
+
}
|
|
64
|
+
/** Format a glob/find summary. */
|
|
65
|
+
export function globSummary(pattern) {
|
|
66
|
+
return `glob ${pattern}`;
|
|
67
|
+
}
|
|
68
|
+
/** Format an MCP tool summary. */
|
|
69
|
+
export function mcpSummary(toolName, args) {
|
|
70
|
+
const short = toolName.replace(/^mcp__/, "").replace(/___/g, ":");
|
|
71
|
+
return args ? `${short}(${args})` : short;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=tool-summarizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-summarizer.js","sourceRoot":"","sources":["../../src/core/tool-summarizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,10 @@ export declare const CapturedSessionSchema: z.ZodObject<{
|
|
|
43
43
|
"claude-code": "claude-code";
|
|
44
44
|
cursor: "cursor";
|
|
45
45
|
codex: "codex";
|
|
46
|
+
copilot: "copilot";
|
|
47
|
+
gemini: "gemini";
|
|
48
|
+
opencode: "opencode";
|
|
49
|
+
droid: "droid";
|
|
46
50
|
}>;
|
|
47
51
|
capturedAt: z.ZodString;
|
|
48
52
|
sessionId: z.ZodString;
|
|
@@ -92,13 +96,18 @@ export declare const CapturedSessionSchema: z.ZodObject<{
|
|
|
92
96
|
inProgress: z.ZodOptional<z.ZodString>;
|
|
93
97
|
blockers: z.ZodArray<z.ZodString>;
|
|
94
98
|
}, z.core.$strip>;
|
|
99
|
+
toolActivity: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
100
|
+
name: z.ZodString;
|
|
101
|
+
count: z.ZodNumber;
|
|
102
|
+
samples: z.ZodArray<z.ZodString>;
|
|
103
|
+
}, z.core.$strip>>>;
|
|
95
104
|
}, z.core.$strip>;
|
|
96
105
|
/**
|
|
97
106
|
* Validate a CapturedSession object. Throws ZodError if invalid.
|
|
98
107
|
*/
|
|
99
108
|
export declare function validateSession(data: unknown): {
|
|
100
109
|
version: "1.0";
|
|
101
|
-
source: "claude-code" | "cursor" | "codex";
|
|
110
|
+
source: "claude-code" | "cursor" | "codex" | "copilot" | "gemini" | "opencode" | "droid";
|
|
102
111
|
capturedAt: string;
|
|
103
112
|
sessionId: string;
|
|
104
113
|
project: {
|
|
@@ -138,13 +147,18 @@ export declare function validateSession(data: unknown): {
|
|
|
138
147
|
inProgress?: string | undefined;
|
|
139
148
|
};
|
|
140
149
|
sessionStartedAt?: string | undefined;
|
|
150
|
+
toolActivity?: {
|
|
151
|
+
name: string;
|
|
152
|
+
count: number;
|
|
153
|
+
samples: string[];
|
|
154
|
+
}[] | undefined;
|
|
141
155
|
};
|
|
142
156
|
/**
|
|
143
157
|
* Safe validation - returns { success, data, error } without throwing.
|
|
144
158
|
*/
|
|
145
159
|
export declare function safeValidateSession(data: unknown): z.ZodSafeParseResult<{
|
|
146
160
|
version: "1.0";
|
|
147
|
-
source: "claude-code" | "cursor" | "codex";
|
|
161
|
+
source: "claude-code" | "cursor" | "codex" | "copilot" | "gemini" | "opencode" | "droid";
|
|
148
162
|
capturedAt: string;
|
|
149
163
|
sessionId: string;
|
|
150
164
|
project: {
|
|
@@ -184,5 +198,10 @@ export declare function safeValidateSession(data: unknown): z.ZodSafeParseResult
|
|
|
184
198
|
inProgress?: string | undefined;
|
|
185
199
|
};
|
|
186
200
|
sessionStartedAt?: string | undefined;
|
|
201
|
+
toolActivity?: {
|
|
202
|
+
name: string;
|
|
203
|
+
count: number;
|
|
204
|
+
samples: string[];
|
|
205
|
+
}[] | undefined;
|
|
187
206
|
}>;
|
|
188
207
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,yBAAyB;;;;;;;;;;;iBAMpC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;iBAK3B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;iBAM1B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;iBAQ/B,CAAC;AAEH,eAAO,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,yBAAyB;;;;;;;;;;;iBAMpC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;iBAK3B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;iBAM1B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;iBAQ/B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsBhC,CAAC;AAEH;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAE5C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAEhD"}
|
package/dist/core/validation.js
CHANGED
|
@@ -30,7 +30,7 @@ export const ProjectContextSchema = z.object({
|
|
|
30
30
|
});
|
|
31
31
|
export const CapturedSessionSchema = z.object({
|
|
32
32
|
version: z.literal("1.0"),
|
|
33
|
-
source: z.enum(["claude-code", "cursor", "codex"]),
|
|
33
|
+
source: z.enum(["claude-code", "cursor", "codex", "copilot", "gemini", "opencode", "droid"]),
|
|
34
34
|
capturedAt: z.string(),
|
|
35
35
|
sessionId: z.string(),
|
|
36
36
|
sessionStartedAt: z.string().optional(),
|
|
@@ -45,6 +45,11 @@ export const CapturedSessionSchema = z.object({
|
|
|
45
45
|
decisions: z.array(z.string()),
|
|
46
46
|
blockers: z.array(z.string()),
|
|
47
47
|
task: TaskStateSchema,
|
|
48
|
+
toolActivity: z.array(z.object({
|
|
49
|
+
name: z.string(),
|
|
50
|
+
count: z.number(),
|
|
51
|
+
samples: z.array(z.string()),
|
|
52
|
+
})).optional(),
|
|
48
53
|
});
|
|
49
54
|
/**
|
|
50
55
|
* Validate a CapturedSession object. Throws ZodError if invalid.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IACtD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9B,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC9B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACzB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/core/validation.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -10,6 +10,12 @@ export interface CapturedSession {
|
|
|
10
10
|
decisions: string[];
|
|
11
11
|
blockers: string[];
|
|
12
12
|
task: TaskState;
|
|
13
|
+
toolActivity?: ToolActivitySummary[];
|
|
14
|
+
}
|
|
15
|
+
export interface ToolActivitySummary {
|
|
16
|
+
name: string;
|
|
17
|
+
count: number;
|
|
18
|
+
samples: string[];
|
|
13
19
|
}
|
|
14
20
|
export interface ProjectContext {
|
|
15
21
|
path: string;
|
|
@@ -46,7 +52,7 @@ export interface TaskState {
|
|
|
46
52
|
inProgress?: string;
|
|
47
53
|
blockers: string[];
|
|
48
54
|
}
|
|
49
|
-
export type AgentId = "claude-code" | "cursor" | "codex";
|
|
55
|
+
export type AgentId = "claude-code" | "cursor" | "codex" | "copilot" | "gemini" | "opencode" | "droid";
|
|
50
56
|
export interface SessionInfo {
|
|
51
57
|
id: string;
|
|
52
58
|
startedAt?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,OAAO,EAAE,cAAc,CAAC;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "braindump",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "A CLI tool that captures your AI coding agent session and generates a portable resume prompt so you can seamlessly continue in a different agent.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/cli/index.js",
|
|
@@ -23,6 +23,10 @@
|
|
|
23
23
|
"claude",
|
|
24
24
|
"cursor",
|
|
25
25
|
"codex",
|
|
26
|
+
"copilot",
|
|
27
|
+
"gemini",
|
|
28
|
+
"opencode",
|
|
29
|
+
"droid",
|
|
26
30
|
"cli",
|
|
27
31
|
"context",
|
|
28
32
|
"session",
|
|
@@ -51,6 +55,7 @@
|
|
|
51
55
|
"node": ">=18"
|
|
52
56
|
},
|
|
53
57
|
"dependencies": {
|
|
58
|
+
"@clack/prompts": "^1.0.1",
|
|
54
59
|
"better-sqlite3": "^11.0.0",
|
|
55
60
|
"boxen": "^8.0.1",
|
|
56
61
|
"chalk": "^5.3.0",
|
|
@@ -58,6 +63,7 @@
|
|
|
58
63
|
"commander": "^12.0.0",
|
|
59
64
|
"glob": "^11.0.0",
|
|
60
65
|
"ora": "^8.0.0",
|
|
66
|
+
"yaml": "^2.8.2",
|
|
61
67
|
"zod": "^4.3.6"
|
|
62
68
|
},
|
|
63
69
|
"devDependencies": {
|