@goondocks/myco 0.2.7 → 0.2.9
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/.claude-plugin/plugin.json +1 -1
- package/CONTRIBUTING.md +1 -1
- package/commands/init.md +10 -26
- package/dist/chunk-4JML636J.js +52 -0
- package/dist/chunk-4JML636J.js.map +1 -0
- package/dist/chunk-AOMX45LH.js +8974 -0
- package/dist/chunk-AOMX45LH.js.map +1 -0
- package/dist/chunk-I7PMGO6S.js +58 -0
- package/dist/chunk-I7PMGO6S.js.map +1 -0
- package/dist/chunk-N33KUCFP.js +33 -0
- package/dist/chunk-N33KUCFP.js.map +1 -0
- package/dist/chunk-NYNEJ5QY.js +71 -0
- package/dist/chunk-NYNEJ5QY.js.map +1 -0
- package/dist/chunk-PA3VMINE.js +111 -0
- package/dist/chunk-PA3VMINE.js.map +1 -0
- package/dist/chunk-PZUWP5VK.js +44 -0
- package/dist/chunk-PZUWP5VK.js.map +1 -0
- package/dist/chunk-SVUINMDD.js +104 -0
- package/dist/chunk-SVUINMDD.js.map +1 -0
- package/dist/chunk-TH6GIBXG.js +91 -0
- package/dist/chunk-TH6GIBXG.js.map +1 -0
- package/dist/chunk-TWDS6MSU.js +354 -0
- package/dist/chunk-TWDS6MSU.js.map +1 -0
- package/dist/chunk-UIIZRTJU.js +21172 -0
- package/dist/chunk-UIIZRTJU.js.map +1 -0
- package/dist/chunk-YMYJ7FNH.js +19 -0
- package/dist/chunk-YMYJ7FNH.js.map +1 -0
- package/dist/chunk-ZJQ5G637.js +21 -0
- package/dist/chunk-ZJQ5G637.js.map +1 -0
- package/dist/chunk-ZTZVX5E6.js +421 -0
- package/dist/chunk-ZTZVX5E6.js.map +1 -0
- package/dist/cli-K5FSKLQC.js +625 -0
- package/dist/cli-K5FSKLQC.js.map +1 -0
- package/dist/client-4JMOYNKK.js +11 -0
- package/dist/client-4JMOYNKK.js.map +1 -0
- package/dist/main-5W4ADOBG.js +3224 -0
- package/dist/main-5W4ADOBG.js.map +1 -0
- package/dist/server-PIEPVUUH.js +14725 -0
- package/dist/server-PIEPVUUH.js.map +1 -0
- package/dist/session-start-2NNQHT5S.js +189 -0
- package/dist/session-start-2NNQHT5S.js.map +1 -0
- package/dist/src/cli.js +9 -582
- package/dist/src/cli.js.map +1 -1
- package/dist/src/daemon/main.js +9 -737
- package/dist/src/daemon/main.js.map +1 -1
- package/dist/src/hooks/post-tool-use.js +47 -35
- package/dist/src/hooks/post-tool-use.js.map +1 -1
- package/dist/src/hooks/session-end.js +29 -18
- package/dist/src/hooks/session-end.js.map +1 -1
- package/dist/src/hooks/session-start.js +9 -48
- package/dist/src/hooks/session-start.js.map +1 -1
- package/dist/src/hooks/stop.js +39 -30
- package/dist/src/hooks/stop.js.map +1 -1
- package/dist/src/hooks/user-prompt-submit.js +48 -40
- package/dist/src/hooks/user-prompt-submit.js.map +1 -1
- package/dist/src/mcp/server.js +9 -304
- package/dist/src/mcp/server.js.map +1 -1
- package/package.json +3 -2
- package/dist/src/agents/adapter.d.ts +0 -76
- package/dist/src/agents/adapter.d.ts.map +0 -1
- package/dist/src/agents/adapter.js +0 -124
- package/dist/src/agents/adapter.js.map +0 -1
- package/dist/src/agents/claude-code.d.ts +0 -3
- package/dist/src/agents/claude-code.d.ts.map +0 -1
- package/dist/src/agents/claude-code.js +0 -22
- package/dist/src/agents/claude-code.js.map +0 -1
- package/dist/src/agents/cursor.d.ts +0 -3
- package/dist/src/agents/cursor.d.ts.map +0 -1
- package/dist/src/agents/cursor.js +0 -154
- package/dist/src/agents/cursor.js.map +0 -1
- package/dist/src/agents/index.d.ts +0 -6
- package/dist/src/agents/index.d.ts.map +0 -1
- package/dist/src/agents/index.js +0 -5
- package/dist/src/agents/index.js.map +0 -1
- package/dist/src/agents/registry.d.ts +0 -34
- package/dist/src/agents/registry.d.ts.map +0 -1
- package/dist/src/agents/registry.js +0 -95
- package/dist/src/agents/registry.js.map +0 -1
- package/dist/src/artifacts/candidates.d.ts +0 -20
- package/dist/src/artifacts/candidates.d.ts.map +0 -1
- package/dist/src/artifacts/candidates.js +0 -84
- package/dist/src/artifacts/candidates.js.map +0 -1
- package/dist/src/artifacts/slugify.d.ts +0 -2
- package/dist/src/artifacts/slugify.d.ts.map +0 -1
- package/dist/src/artifacts/slugify.js +0 -22
- package/dist/src/artifacts/slugify.js.map +0 -1
- package/dist/src/capture/buffer.d.ts +0 -20
- package/dist/src/capture/buffer.d.ts.map +0 -1
- package/dist/src/capture/buffer.js +0 -55
- package/dist/src/capture/buffer.js.map +0 -1
- package/dist/src/capture/transcript-miner.d.ts +0 -31
- package/dist/src/capture/transcript-miner.d.ts.map +0 -1
- package/dist/src/capture/transcript-miner.js +0 -61
- package/dist/src/capture/transcript-miner.js.map +0 -1
- package/dist/src/cli.d.ts +0 -3
- package/dist/src/cli.d.ts.map +0 -1
- package/dist/src/config/loader.d.ts +0 -4
- package/dist/src/config/loader.d.ts.map +0 -1
- package/dist/src/config/loader.js +0 -32
- package/dist/src/config/loader.js.map +0 -1
- package/dist/src/config/schema.d.ts +0 -83
- package/dist/src/config/schema.d.ts.map +0 -1
- package/dist/src/config/schema.js +0 -55
- package/dist/src/config/schema.js.map +0 -1
- package/dist/src/constants.d.ts +0 -73
- package/dist/src/constants.d.ts.map +0 -1
- package/dist/src/constants.js +0 -86
- package/dist/src/constants.js.map +0 -1
- package/dist/src/context/injector.d.ts +0 -18
- package/dist/src/context/injector.d.ts.map +0 -1
- package/dist/src/context/injector.js +0 -71
- package/dist/src/context/injector.js.map +0 -1
- package/dist/src/context/relevance.d.ts +0 -13
- package/dist/src/context/relevance.d.ts.map +0 -1
- package/dist/src/context/relevance.js +0 -44
- package/dist/src/context/relevance.js.map +0 -1
- package/dist/src/daemon/batch.d.ts +0 -22
- package/dist/src/daemon/batch.d.ts.map +0 -1
- package/dist/src/daemon/batch.js +0 -38
- package/dist/src/daemon/batch.js.map +0 -1
- package/dist/src/daemon/lifecycle.d.ts +0 -27
- package/dist/src/daemon/lifecycle.d.ts.map +0 -1
- package/dist/src/daemon/lifecycle.js +0 -50
- package/dist/src/daemon/lifecycle.js.map +0 -1
- package/dist/src/daemon/lineage.d.ts +0 -42
- package/dist/src/daemon/lineage.d.ts.map +0 -1
- package/dist/src/daemon/lineage.js +0 -116
- package/dist/src/daemon/lineage.js.map +0 -1
- package/dist/src/daemon/logger.d.ts +0 -33
- package/dist/src/daemon/logger.d.ts.map +0 -1
- package/dist/src/daemon/logger.js +0 -88
- package/dist/src/daemon/logger.js.map +0 -1
- package/dist/src/daemon/main.d.ts +0 -2
- package/dist/src/daemon/main.d.ts.map +0 -1
- package/dist/src/daemon/processor.d.ts +0 -44
- package/dist/src/daemon/processor.d.ts.map +0 -1
- package/dist/src/daemon/processor.js +0 -142
- package/dist/src/daemon/processor.js.map +0 -1
- package/dist/src/daemon/server.d.ts +0 -24
- package/dist/src/daemon/server.d.ts.map +0 -1
- package/dist/src/daemon/server.js +0 -117
- package/dist/src/daemon/server.js.map +0 -1
- package/dist/src/daemon/watcher.d.ts +0 -29
- package/dist/src/daemon/watcher.d.ts.map +0 -1
- package/dist/src/daemon/watcher.js +0 -67
- package/dist/src/daemon/watcher.js.map +0 -1
- package/dist/src/hooks/client.d.ts +0 -20
- package/dist/src/hooks/client.d.ts.map +0 -1
- package/dist/src/hooks/client.js +0 -111
- package/dist/src/hooks/client.js.map +0 -1
- package/dist/src/hooks/post-tool-use.d.ts +0 -2
- package/dist/src/hooks/post-tool-use.d.ts.map +0 -1
- package/dist/src/hooks/read-stdin.d.ts +0 -2
- package/dist/src/hooks/read-stdin.d.ts.map +0 -1
- package/dist/src/hooks/read-stdin.js +0 -10
- package/dist/src/hooks/read-stdin.js.map +0 -1
- package/dist/src/hooks/session-end.d.ts +0 -2
- package/dist/src/hooks/session-end.d.ts.map +0 -1
- package/dist/src/hooks/session-start.d.ts +0 -2
- package/dist/src/hooks/session-start.d.ts.map +0 -1
- package/dist/src/hooks/stop.d.ts +0 -2
- package/dist/src/hooks/stop.d.ts.map +0 -1
- package/dist/src/hooks/user-prompt-submit.d.ts +0 -2
- package/dist/src/hooks/user-prompt-submit.d.ts.map +0 -1
- package/dist/src/index/fts.d.ts +0 -16
- package/dist/src/index/fts.d.ts.map +0 -1
- package/dist/src/index/fts.js +0 -53
- package/dist/src/index/fts.js.map +0 -1
- package/dist/src/index/rebuild.d.ts +0 -4
- package/dist/src/index/rebuild.d.ts.map +0 -1
- package/dist/src/index/rebuild.js +0 -40
- package/dist/src/index/rebuild.js.map +0 -1
- package/dist/src/index/sqlite.d.ts +0 -33
- package/dist/src/index/sqlite.d.ts.map +0 -1
- package/dist/src/index/sqlite.js +0 -99
- package/dist/src/index/sqlite.js.map +0 -1
- package/dist/src/index/vectors.d.ts +0 -24
- package/dist/src/index/vectors.d.ts.map +0 -1
- package/dist/src/index/vectors.js +0 -97
- package/dist/src/index/vectors.js.map +0 -1
- package/dist/src/intelligence/anthropic.d.ts +0 -17
- package/dist/src/intelligence/anthropic.d.ts.map +0 -1
- package/dist/src/intelligence/anthropic.js +0 -36
- package/dist/src/intelligence/anthropic.js.map +0 -1
- package/dist/src/intelligence/embeddings.d.ts +0 -3
- package/dist/src/intelligence/embeddings.d.ts.map +0 -1
- package/dist/src/intelligence/embeddings.js +0 -15
- package/dist/src/intelligence/embeddings.js.map +0 -1
- package/dist/src/intelligence/llm.d.ts +0 -33
- package/dist/src/intelligence/llm.d.ts.map +0 -1
- package/dist/src/intelligence/llm.js +0 -26
- package/dist/src/intelligence/llm.js.map +0 -1
- package/dist/src/intelligence/lm-studio.d.ts +0 -20
- package/dist/src/intelligence/lm-studio.d.ts.map +0 -1
- package/dist/src/intelligence/lm-studio.js +0 -59
- package/dist/src/intelligence/lm-studio.js.map +0 -1
- package/dist/src/intelligence/ollama.d.ts +0 -22
- package/dist/src/intelligence/ollama.d.ts.map +0 -1
- package/dist/src/intelligence/ollama.js +0 -64
- package/dist/src/intelligence/ollama.js.map +0 -1
- package/dist/src/intelligence/response.d.ts +0 -29
- package/dist/src/intelligence/response.d.ts.map +0 -1
- package/dist/src/intelligence/response.js +0 -71
- package/dist/src/intelligence/response.js.map +0 -1
- package/dist/src/logs/format.d.ts +0 -6
- package/dist/src/logs/format.d.ts.map +0 -1
- package/dist/src/logs/format.js +0 -46
- package/dist/src/logs/format.js.map +0 -1
- package/dist/src/logs/reader.d.ts +0 -28
- package/dist/src/logs/reader.d.ts.map +0 -1
- package/dist/src/logs/reader.js +0 -106
- package/dist/src/logs/reader.js.map +0 -1
- package/dist/src/mcp/server.d.ts +0 -16
- package/dist/src/mcp/server.d.ts.map +0 -1
- package/dist/src/mcp/tools/consolidate.d.ts +0 -15
- package/dist/src/mcp/tools/consolidate.d.ts.map +0 -1
- package/dist/src/mcp/tools/consolidate.js +0 -49
- package/dist/src/mcp/tools/consolidate.js.map +0 -1
- package/dist/src/mcp/tools/graph.d.ts +0 -30
- package/dist/src/mcp/tools/graph.d.ts.map +0 -1
- package/dist/src/mcp/tools/graph.js +0 -106
- package/dist/src/mcp/tools/graph.js.map +0 -1
- package/dist/src/mcp/tools/logs.d.ts +0 -3
- package/dist/src/mcp/tools/logs.d.ts.map +0 -1
- package/dist/src/mcp/tools/logs.js +0 -7
- package/dist/src/mcp/tools/logs.js.map +0 -1
- package/dist/src/mcp/tools/plans.d.ts +0 -23
- package/dist/src/mcp/tools/plans.d.ts.map +0 -1
- package/dist/src/mcp/tools/plans.js +0 -63
- package/dist/src/mcp/tools/plans.js.map +0 -1
- package/dist/src/mcp/tools/recall.d.ts +0 -30
- package/dist/src/mcp/tools/recall.d.ts.map +0 -1
- package/dist/src/mcp/tools/recall.js +0 -34
- package/dist/src/mcp/tools/recall.js.map +0 -1
- package/dist/src/mcp/tools/remember.d.ts +0 -15
- package/dist/src/mcp/tools/remember.d.ts.map +0 -1
- package/dist/src/mcp/tools/remember.js +0 -18
- package/dist/src/mcp/tools/remember.js.map +0 -1
- package/dist/src/mcp/tools/search.d.ts +0 -19
- package/dist/src/mcp/tools/search.d.ts.map +0 -1
- package/dist/src/mcp/tools/search.js +0 -59
- package/dist/src/mcp/tools/search.js.map +0 -1
- package/dist/src/mcp/tools/sessions.d.ts +0 -21
- package/dist/src/mcp/tools/sessions.d.ts.map +0 -1
- package/dist/src/mcp/tools/sessions.js +0 -36
- package/dist/src/mcp/tools/sessions.js.map +0 -1
- package/dist/src/mcp/tools/supersede.d.ts +0 -14
- package/dist/src/mcp/tools/supersede.d.ts.map +0 -1
- package/dist/src/mcp/tools/supersede.js +0 -30
- package/dist/src/mcp/tools/supersede.js.map +0 -1
- package/dist/src/mcp/tools/team.d.ts +0 -16
- package/dist/src/mcp/tools/team.d.ts.map +0 -1
- package/dist/src/mcp/tools/team.js +0 -32
- package/dist/src/mcp/tools/team.js.map +0 -1
- package/dist/src/obsidian/formatter.d.ts +0 -80
- package/dist/src/obsidian/formatter.d.ts.map +0 -1
- package/dist/src/obsidian/formatter.js +0 -227
- package/dist/src/obsidian/formatter.js.map +0 -1
- package/dist/src/prompts/index.d.ts +0 -13
- package/dist/src/prompts/index.d.ts.map +0 -1
- package/dist/src/prompts/index.js +0 -75
- package/dist/src/prompts/index.js.map +0 -1
- package/dist/src/vault/frontmatter.d.ts +0 -6
- package/dist/src/vault/frontmatter.d.ts.map +0 -1
- package/dist/src/vault/frontmatter.js +0 -10
- package/dist/src/vault/frontmatter.js.map +0 -1
- package/dist/src/vault/observations.d.ts +0 -10
- package/dist/src/vault/observations.d.ts.map +0 -1
- package/dist/src/vault/observations.js +0 -33
- package/dist/src/vault/observations.js.map +0 -1
- package/dist/src/vault/reader.d.ts +0 -10
- package/dist/src/vault/reader.d.ts.map +0 -1
- package/dist/src/vault/reader.js +0 -48
- package/dist/src/vault/reader.js.map +0 -1
- package/dist/src/vault/resolve.d.ts +0 -18
- package/dist/src/vault/resolve.d.ts.map +0 -1
- package/dist/src/vault/resolve.js +0 -51
- package/dist/src/vault/resolve.js.map +0 -1
- package/dist/src/vault/session-id.d.ts +0 -16
- package/dist/src/vault/session-id.d.ts.map +0 -1
- package/dist/src/vault/session-id.js +0 -29
- package/dist/src/vault/session-id.js.map +0 -1
- package/dist/src/vault/types.d.ts +0 -88
- package/dist/src/vault/types.d.ts.map +0 -1
- package/dist/src/vault/types.js +0 -94
- package/dist/src/vault/types.js.map +0 -1
- package/dist/src/vault/writer.d.ts +0 -66
- package/dist/src/vault/writer.d.ts.map +0 -1
- package/dist/src/vault/writer.js +0 -217
- package/dist/src/vault/writer.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../src/daemon/batch.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,KAAK,mBAAmB,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1E,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,aAAa,CAAsB;gBAE/B,aAAa,EAAE,mBAAmB;IAI9C,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAoBjC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE;IAMzC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAIxC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;CAGrC"}
|
package/dist/src/daemon/batch.js
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
export class BatchManager {
|
|
2
|
-
batches = new Map();
|
|
3
|
-
onBatchClosed;
|
|
4
|
-
constructor(onBatchClosed) {
|
|
5
|
-
this.onBatchClosed = onBatchClosed;
|
|
6
|
-
}
|
|
7
|
-
addEvent(event) {
|
|
8
|
-
const sid = event.session_id;
|
|
9
|
-
if (event.type === 'user_prompt') {
|
|
10
|
-
const current = this.batches.get(sid);
|
|
11
|
-
if (current && current.length > 0) {
|
|
12
|
-
// Fire-and-forget, but log errors
|
|
13
|
-
Promise.resolve(this.onBatchClosed(current)).catch((err) => {
|
|
14
|
-
console.error(`[mycod] batch callback error: ${err.message}`);
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
this.batches.set(sid, [event]);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
const current = this.batches.get(sid);
|
|
21
|
-
if (current) {
|
|
22
|
-
current.push(event);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
finalize(sessionId) {
|
|
27
|
-
const current = this.batches.get(sessionId);
|
|
28
|
-
this.batches.delete(sessionId);
|
|
29
|
-
return current ?? [];
|
|
30
|
-
}
|
|
31
|
-
hasOpenBatch(sessionId) {
|
|
32
|
-
return this.batches.has(sessionId) && this.batches.get(sessionId).length > 0;
|
|
33
|
-
}
|
|
34
|
-
batchSize(sessionId) {
|
|
35
|
-
return this.batches.get(sessionId)?.length ?? 0;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=batch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/daemon/batch.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,YAAY;IACf,OAAO,GAA8B,IAAI,GAAG,EAAE,CAAC;IAC/C,aAAa,CAAsB;IAE3C,YAAY,aAAkC;QAC5C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED,QAAQ,CAAC,KAAiB;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;QAE7B,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,kCAAkC;gBAClC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACzD,OAAO,CAAC,KAAK,CAAC,iCAAkC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC3E,CAAC,CAAC,CAAC;YACL,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,SAAiB;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/B,OAAO,OAAO,IAAI,EAAE,CAAC;IACvB,CAAC;IAED,YAAY,CAAC,SAAiB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAChF,CAAC;IAED,SAAS,CAAC,SAAiB;QACzB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;IAClD,CAAC;CACF"}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export interface SessionMetadata {
|
|
2
|
-
started_at: string;
|
|
3
|
-
branch?: string;
|
|
4
|
-
}
|
|
5
|
-
export interface RegisteredSession extends SessionMetadata {
|
|
6
|
-
id: string;
|
|
7
|
-
}
|
|
8
|
-
interface RegistryOptions {
|
|
9
|
-
gracePeriod: number;
|
|
10
|
-
onEmpty: () => void;
|
|
11
|
-
}
|
|
12
|
-
export declare class SessionRegistry {
|
|
13
|
-
private _sessions;
|
|
14
|
-
private graceTimer;
|
|
15
|
-
private gracePeriod;
|
|
16
|
-
private onEmpty;
|
|
17
|
-
constructor(options: RegistryOptions);
|
|
18
|
-
get sessions(): string[];
|
|
19
|
-
register(sessionId: string, metadata?: SessionMetadata): void;
|
|
20
|
-
getSession(sessionId: string): RegisteredSession | undefined;
|
|
21
|
-
unregister(sessionId: string): void;
|
|
22
|
-
destroy(): void;
|
|
23
|
-
private startGrace;
|
|
24
|
-
private cancelGrace;
|
|
25
|
-
}
|
|
26
|
-
export {};
|
|
27
|
-
//# sourceMappingURL=lifecycle.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/daemon/lifecycle.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,SAAS,CAA2C;IAC5D,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAa;gBAEhB,OAAO,EAAE,eAAe;IAKpC,IAAI,QAAQ,IAAI,MAAM,EAAE,CAEvB;IAED,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI;IAO7D,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAM5D,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAOnC,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,WAAW;CAMpB"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
export class SessionRegistry {
|
|
2
|
-
_sessions = new Map();
|
|
3
|
-
graceTimer = null;
|
|
4
|
-
gracePeriod;
|
|
5
|
-
onEmpty;
|
|
6
|
-
constructor(options) {
|
|
7
|
-
this.gracePeriod = options.gracePeriod;
|
|
8
|
-
this.onEmpty = options.onEmpty;
|
|
9
|
-
}
|
|
10
|
-
get sessions() {
|
|
11
|
-
return [...this._sessions.keys()];
|
|
12
|
-
}
|
|
13
|
-
register(sessionId, metadata) {
|
|
14
|
-
if (!this._sessions.has(sessionId)) {
|
|
15
|
-
this._sessions.set(sessionId, metadata ?? { started_at: new Date().toISOString() });
|
|
16
|
-
}
|
|
17
|
-
this.cancelGrace();
|
|
18
|
-
}
|
|
19
|
-
getSession(sessionId) {
|
|
20
|
-
const meta = this._sessions.get(sessionId);
|
|
21
|
-
if (!meta)
|
|
22
|
-
return undefined;
|
|
23
|
-
return { id: sessionId, ...meta };
|
|
24
|
-
}
|
|
25
|
-
unregister(sessionId) {
|
|
26
|
-
this._sessions.delete(sessionId);
|
|
27
|
-
if (this._sessions.size === 0) {
|
|
28
|
-
this.startGrace();
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
destroy() {
|
|
32
|
-
this.cancelGrace();
|
|
33
|
-
this._sessions.clear();
|
|
34
|
-
}
|
|
35
|
-
startGrace() {
|
|
36
|
-
this.cancelGrace();
|
|
37
|
-
this.graceTimer = setTimeout(() => {
|
|
38
|
-
if (this._sessions.size === 0) {
|
|
39
|
-
this.onEmpty();
|
|
40
|
-
}
|
|
41
|
-
}, this.gracePeriod * 1000);
|
|
42
|
-
}
|
|
43
|
-
cancelGrace() {
|
|
44
|
-
if (this.graceTimer) {
|
|
45
|
-
clearTimeout(this.graceTimer);
|
|
46
|
-
this.graceTimer = null;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
//# sourceMappingURL=lifecycle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/daemon/lifecycle.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,eAAe;IAClB,SAAS,GAAiC,IAAI,GAAG,EAAE,CAAC;IACpD,UAAU,GAAyC,IAAI,CAAC;IACxD,WAAW,CAAS;IACpB,OAAO,CAAa;IAE5B,YAAY,OAAwB;QAClC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,QAAQ,CAAC,SAAiB,EAAE,QAA0B;QACpD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,IAAI,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5B,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,CAAC;QACH,CAAC,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC9B,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import type { RegisteredSession } from './lifecycle.js';
|
|
2
|
-
export declare const LINEAGE_IMMEDIATE_GAP_SECONDS = 5;
|
|
3
|
-
export declare const LINEAGE_FALLBACK_MAX_HOURS = 24;
|
|
4
|
-
export declare const LINEAGE_SIMILARITY_THRESHOLD = 0.7;
|
|
5
|
-
export declare const LINEAGE_SIMILARITY_HIGH_CONFIDENCE = 0.9;
|
|
6
|
-
export declare const LINEAGE_SIMILARITY_CANDIDATES = 3;
|
|
7
|
-
export declare const LINEAGE_SIMILARITY_MAX_TOKENS = 8;
|
|
8
|
-
interface RecentSession {
|
|
9
|
-
id: string;
|
|
10
|
-
ended?: string;
|
|
11
|
-
branch?: string;
|
|
12
|
-
}
|
|
13
|
-
interface SessionContext {
|
|
14
|
-
started_at: string;
|
|
15
|
-
branch?: string;
|
|
16
|
-
}
|
|
17
|
-
export interface LineageLink {
|
|
18
|
-
parent: string;
|
|
19
|
-
child: string;
|
|
20
|
-
signal: 'clear' | 'clear_active' | 'inferred' | 'plan_reference' | 'semantic_similarity';
|
|
21
|
-
confidence: 'high' | 'medium' | 'low';
|
|
22
|
-
timestamp?: string;
|
|
23
|
-
}
|
|
24
|
-
export declare class LineageGraph {
|
|
25
|
-
private state;
|
|
26
|
-
private filePath;
|
|
27
|
-
constructor(vaultDir: string);
|
|
28
|
-
addLink(link: LineageLink): void;
|
|
29
|
-
/** Register an artifact (plan, spec, doc) as produced by a session. */
|
|
30
|
-
registerArtifactForSession(sessionId: string, artifactId: string): void;
|
|
31
|
-
/** @deprecated Use registerArtifactForSession instead */
|
|
32
|
-
registerPlanForSession(sessionId: string, planId: string): void;
|
|
33
|
-
detectLineage(childSessionId: string, firstPrompt: string): LineageLink | null;
|
|
34
|
-
detectHeuristicParent(childSessionId: string, context: SessionContext, recentSessions: RecentSession[], activeSessions: RegisteredSession[], firstPrompt?: string): LineageLink | null;
|
|
35
|
-
getLinks(): LineageLink[];
|
|
36
|
-
getChildren(sessionId: string): string[];
|
|
37
|
-
getParent(sessionId: string): string | undefined;
|
|
38
|
-
private load;
|
|
39
|
-
private persist;
|
|
40
|
-
}
|
|
41
|
-
export {};
|
|
42
|
-
//# sourceMappingURL=lineage.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lineage.d.ts","sourceRoot":"","sources":["../../../src/daemon/lineage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAC7C,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAChD,eAAO,MAAM,kCAAkC,MAAM,CAAC;AACtD,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAC/C,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAK/C,UAAU,aAAa;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,cAAc;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,GAAG,cAAc,GAAG,UAAU,GAAG,gBAAgB,GAAG,qBAAqB,CAAC;IACzF,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAUD,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAM5B,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAMhC,uEAAuE;IACvE,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAQvE,yDAAyD;IACzD,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/D,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAc9E,qBAAqB,CACnB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,cAAc,EACvB,cAAc,EAAE,aAAa,EAAE,EAC/B,cAAc,EAAE,iBAAiB,EAAE,EACnC,WAAW,CAAC,EAAE,MAAM,GACnB,WAAW,GAAG,IAAI;IA8CrB,QAAQ,IAAI,WAAW,EAAE;IACzB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IACxC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAEhD,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,OAAO;CAKhB"}
|
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
import fs from 'node:fs';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
export const LINEAGE_IMMEDIATE_GAP_SECONDS = 5;
|
|
4
|
-
export const LINEAGE_FALLBACK_MAX_HOURS = 24;
|
|
5
|
-
export const LINEAGE_SIMILARITY_THRESHOLD = 0.7;
|
|
6
|
-
export const LINEAGE_SIMILARITY_HIGH_CONFIDENCE = 0.9;
|
|
7
|
-
export const LINEAGE_SIMILARITY_CANDIDATES = 3;
|
|
8
|
-
export const LINEAGE_SIMILARITY_MAX_TOKENS = 8; // expects a single float score
|
|
9
|
-
const MS_PER_SECOND = 1000;
|
|
10
|
-
const MS_PER_HOUR = 3_600_000;
|
|
11
|
-
export class LineageGraph {
|
|
12
|
-
state;
|
|
13
|
-
filePath;
|
|
14
|
-
constructor(vaultDir) {
|
|
15
|
-
this.filePath = path.join(vaultDir, 'lineage.json');
|
|
16
|
-
fs.mkdirSync(path.dirname(this.filePath), { recursive: true });
|
|
17
|
-
this.state = this.load();
|
|
18
|
-
}
|
|
19
|
-
addLink(link) {
|
|
20
|
-
if (this.state.links.some((l) => l.parent === link.parent && l.child === link.child))
|
|
21
|
-
return;
|
|
22
|
-
this.state.links.push({ ...link, timestamp: link.timestamp ?? new Date().toISOString() });
|
|
23
|
-
this.persist();
|
|
24
|
-
}
|
|
25
|
-
/** Register an artifact (plan, spec, doc) as produced by a session. */
|
|
26
|
-
registerArtifactForSession(sessionId, artifactId) {
|
|
27
|
-
if (!this.state.sessionArtifacts[sessionId])
|
|
28
|
-
this.state.sessionArtifacts[sessionId] = [];
|
|
29
|
-
if (!this.state.sessionArtifacts[sessionId].includes(artifactId)) {
|
|
30
|
-
this.state.sessionArtifacts[sessionId].push(artifactId);
|
|
31
|
-
this.persist();
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
/** @deprecated Use registerArtifactForSession instead */
|
|
35
|
-
registerPlanForSession(sessionId, planId) {
|
|
36
|
-
this.registerArtifactForSession(sessionId, planId);
|
|
37
|
-
}
|
|
38
|
-
detectLineage(childSessionId, firstPrompt) {
|
|
39
|
-
for (const [sessionId, artifactIds] of Object.entries(this.state.sessionArtifacts)) {
|
|
40
|
-
if (sessionId === childSessionId)
|
|
41
|
-
continue;
|
|
42
|
-
for (const artifactId of artifactIds) {
|
|
43
|
-
if (firstPrompt.includes(artifactId)) {
|
|
44
|
-
const link = { parent: sessionId, child: childSessionId, signal: 'plan_reference', confidence: 'high' };
|
|
45
|
-
this.addLink(link);
|
|
46
|
-
return link;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
detectHeuristicParent(childSessionId, context, recentSessions, activeSessions, firstPrompt) {
|
|
53
|
-
const startedAt = new Date(context.started_at).getTime();
|
|
54
|
-
// Tier 1: session ended within LINEAGE_IMMEDIATE_GAP_SECONDS
|
|
55
|
-
for (const session of recentSessions) {
|
|
56
|
-
if (!session.ended)
|
|
57
|
-
continue;
|
|
58
|
-
const endedAt = new Date(session.ended).getTime();
|
|
59
|
-
const gapSeconds = (startedAt - endedAt) / MS_PER_SECOND;
|
|
60
|
-
if (gapSeconds >= 0 && gapSeconds <= LINEAGE_IMMEDIATE_GAP_SECONDS) {
|
|
61
|
-
const link = { parent: session.id, child: childSessionId, signal: 'clear', confidence: 'high' };
|
|
62
|
-
this.addLink(link);
|
|
63
|
-
return link;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
// Tier 2: active session (race condition)
|
|
67
|
-
for (const session of activeSessions) {
|
|
68
|
-
if (session.id === childSessionId)
|
|
69
|
-
continue;
|
|
70
|
-
const link = { parent: session.id, child: childSessionId, signal: 'clear_active', confidence: 'high' };
|
|
71
|
-
this.addLink(link);
|
|
72
|
-
return link;
|
|
73
|
-
}
|
|
74
|
-
// Tier 3: recently completed session on same branch within LINEAGE_FALLBACK_MAX_HOURS
|
|
75
|
-
if (context.branch) {
|
|
76
|
-
for (const session of recentSessions) {
|
|
77
|
-
if (!session.ended || !session.branch)
|
|
78
|
-
continue;
|
|
79
|
-
if (session.branch !== context.branch)
|
|
80
|
-
continue;
|
|
81
|
-
const endedAt = new Date(session.ended).getTime();
|
|
82
|
-
const hoursAgo = (startedAt - endedAt) / MS_PER_HOUR;
|
|
83
|
-
if (hoursAgo >= 0 && hoursAgo <= LINEAGE_FALLBACK_MAX_HOURS) {
|
|
84
|
-
const link = { parent: session.id, child: childSessionId, signal: 'inferred', confidence: 'medium' };
|
|
85
|
-
this.addLink(link);
|
|
86
|
-
return link;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
// Plan-reference detection (existing method)
|
|
91
|
-
if (firstPrompt) {
|
|
92
|
-
return this.detectLineage(childSessionId, firstPrompt);
|
|
93
|
-
}
|
|
94
|
-
return null;
|
|
95
|
-
}
|
|
96
|
-
getLinks() { return [...this.state.links]; }
|
|
97
|
-
getChildren(sessionId) { return this.state.links.filter((l) => l.parent === sessionId).map((l) => l.child); }
|
|
98
|
-
getParent(sessionId) { return this.state.links.find((l) => l.child === sessionId)?.parent; }
|
|
99
|
-
load() {
|
|
100
|
-
try {
|
|
101
|
-
const raw = JSON.parse(fs.readFileSync(this.filePath, 'utf-8'));
|
|
102
|
-
// Migrate from old sessionPlans to sessionArtifacts
|
|
103
|
-
const sessionArtifacts = (raw.sessionArtifacts ?? raw.sessionPlans ?? {});
|
|
104
|
-
return { links: (raw.links ?? []), sessionArtifacts };
|
|
105
|
-
}
|
|
106
|
-
catch {
|
|
107
|
-
return { links: [], sessionArtifacts: {} };
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
persist() {
|
|
111
|
-
const tmp = this.filePath + '.tmp';
|
|
112
|
-
fs.writeFileSync(tmp, JSON.stringify(this.state, null, 2));
|
|
113
|
-
fs.renameSync(tmp, this.filePath);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
//# sourceMappingURL=lineage.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lineage.js","sourceRoot":"","sources":["../../../src/daemon/lineage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
export interface LogEntry {
|
|
2
|
-
timestamp: string;
|
|
3
|
-
level: string;
|
|
4
|
-
component: string;
|
|
5
|
-
message: string;
|
|
6
|
-
[key: string]: unknown;
|
|
7
|
-
}
|
|
8
|
-
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
9
|
-
export declare const LEVEL_ORDER: Record<LogLevel, number>;
|
|
10
|
-
interface LoggerOptions {
|
|
11
|
-
level?: LogLevel;
|
|
12
|
-
maxSize?: number;
|
|
13
|
-
maxFiles?: number;
|
|
14
|
-
}
|
|
15
|
-
export declare class DaemonLogger {
|
|
16
|
-
private logPath;
|
|
17
|
-
private fd;
|
|
18
|
-
private currentSize;
|
|
19
|
-
private level;
|
|
20
|
-
private maxSize;
|
|
21
|
-
private maxFiles;
|
|
22
|
-
private logDir;
|
|
23
|
-
constructor(logDir: string, options?: LoggerOptions);
|
|
24
|
-
debug(component: string, message: string, data?: Record<string, unknown>): void;
|
|
25
|
-
info(component: string, message: string, data?: Record<string, unknown>): void;
|
|
26
|
-
warn(component: string, message: string, data?: Record<string, unknown>): void;
|
|
27
|
-
error(component: string, message: string, data?: Record<string, unknown>): void;
|
|
28
|
-
close(): void;
|
|
29
|
-
private write;
|
|
30
|
-
private rotate;
|
|
31
|
-
}
|
|
32
|
-
export {};
|
|
33
|
-
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/daemon/logger.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAEhD,CAAC;AAEF,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,EAAE,CAAuB;IACjC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB;IAgBvD,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/E,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9E,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI9E,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/E,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,KAAK;IAwBb,OAAO,CAAC,MAAM;CAsBf"}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
import fs from 'node:fs';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
export const LEVEL_ORDER = {
|
|
4
|
-
debug: 0, info: 1, warn: 2, error: 3,
|
|
5
|
-
};
|
|
6
|
-
export class DaemonLogger {
|
|
7
|
-
logPath;
|
|
8
|
-
fd = null;
|
|
9
|
-
currentSize = 0;
|
|
10
|
-
level;
|
|
11
|
-
maxSize;
|
|
12
|
-
maxFiles;
|
|
13
|
-
logDir;
|
|
14
|
-
constructor(logDir, options = {}) {
|
|
15
|
-
this.logDir = logDir;
|
|
16
|
-
this.logPath = path.join(logDir, 'daemon.log');
|
|
17
|
-
this.level = options.level ?? 'info';
|
|
18
|
-
this.maxSize = options.maxSize ?? 5_242_880;
|
|
19
|
-
this.maxFiles = options.maxFiles ?? 3;
|
|
20
|
-
fs.mkdirSync(logDir, { recursive: true });
|
|
21
|
-
this.fd = fs.openSync(this.logPath, 'a');
|
|
22
|
-
try {
|
|
23
|
-
this.currentSize = fs.fstatSync(this.fd).size;
|
|
24
|
-
}
|
|
25
|
-
catch {
|
|
26
|
-
this.currentSize = 0;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
debug(component, message, data) {
|
|
30
|
-
this.write('debug', component, message, data);
|
|
31
|
-
}
|
|
32
|
-
info(component, message, data) {
|
|
33
|
-
this.write('info', component, message, data);
|
|
34
|
-
}
|
|
35
|
-
warn(component, message, data) {
|
|
36
|
-
this.write('warn', component, message, data);
|
|
37
|
-
}
|
|
38
|
-
error(component, message, data) {
|
|
39
|
-
this.write('error', component, message, data);
|
|
40
|
-
}
|
|
41
|
-
close() {
|
|
42
|
-
if (this.fd !== null) {
|
|
43
|
-
fs.closeSync(this.fd);
|
|
44
|
-
this.fd = null;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
write(level, component, message, data) {
|
|
48
|
-
if (LEVEL_ORDER[level] < LEVEL_ORDER[this.level])
|
|
49
|
-
return;
|
|
50
|
-
const entry = {
|
|
51
|
-
timestamp: new Date().toISOString(),
|
|
52
|
-
level,
|
|
53
|
-
component,
|
|
54
|
-
message,
|
|
55
|
-
...data,
|
|
56
|
-
};
|
|
57
|
-
const line = JSON.stringify(entry) + '\n';
|
|
58
|
-
const bytes = Buffer.byteLength(line);
|
|
59
|
-
if (this.currentSize + bytes > this.maxSize) {
|
|
60
|
-
this.rotate();
|
|
61
|
-
}
|
|
62
|
-
if (this.fd !== null) {
|
|
63
|
-
fs.writeSync(this.fd, line);
|
|
64
|
-
this.currentSize += bytes;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
rotate() {
|
|
68
|
-
this.close();
|
|
69
|
-
for (let i = this.maxFiles - 1; i >= 1; i--) {
|
|
70
|
-
const from = path.join(this.logDir, `daemon.${i}.log`);
|
|
71
|
-
const to = path.join(this.logDir, `daemon.${i + 1}.log`);
|
|
72
|
-
if (fs.existsSync(from)) {
|
|
73
|
-
if (i + 1 > this.maxFiles) {
|
|
74
|
-
fs.unlinkSync(from);
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
fs.renameSync(from, to);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
if (fs.existsSync(this.logPath)) {
|
|
82
|
-
fs.renameSync(this.logPath, path.join(this.logDir, 'daemon.1.log'));
|
|
83
|
-
}
|
|
84
|
-
this.fd = fs.openSync(this.logPath, 'a');
|
|
85
|
-
this.currentSize = 0;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
//# sourceMappingURL=logger.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/daemon/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/daemon/main.ts"],"names":[],"mappings":"AA4GA,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAoC3D"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import type { LlmProvider } from '../intelligence/llm.js';
|
|
2
|
-
import type { ObservationType, ArtifactType } from '../vault/types.js';
|
|
3
|
-
export interface Observation {
|
|
4
|
-
type: ObservationType;
|
|
5
|
-
title: string;
|
|
6
|
-
content: string;
|
|
7
|
-
tags: string[];
|
|
8
|
-
root_cause?: string;
|
|
9
|
-
fix?: string;
|
|
10
|
-
rationale?: string;
|
|
11
|
-
alternatives_rejected?: string;
|
|
12
|
-
gained?: string;
|
|
13
|
-
sacrificed?: string;
|
|
14
|
-
}
|
|
15
|
-
export interface ProcessorResult {
|
|
16
|
-
summary: string;
|
|
17
|
-
observations: Observation[];
|
|
18
|
-
degraded: boolean;
|
|
19
|
-
}
|
|
20
|
-
export interface ClassifiedArtifact {
|
|
21
|
-
source_path: string;
|
|
22
|
-
artifact_type: ArtifactType;
|
|
23
|
-
title: string;
|
|
24
|
-
tags: string[];
|
|
25
|
-
}
|
|
26
|
-
export declare class BufferProcessor {
|
|
27
|
-
private backend;
|
|
28
|
-
private contextWindow;
|
|
29
|
-
constructor(backend: LlmProvider, contextWindow?: number);
|
|
30
|
-
private truncateForContext;
|
|
31
|
-
process(events: Array<Record<string, unknown>>, sessionId: string): Promise<ProcessorResult>;
|
|
32
|
-
private buildPromptForExtraction;
|
|
33
|
-
summarizeSession(conversationMarkdown: string, sessionId: string, user?: string): Promise<{
|
|
34
|
-
summary: string;
|
|
35
|
-
title: string;
|
|
36
|
-
}>;
|
|
37
|
-
classifyArtifacts(candidates: Array<{
|
|
38
|
-
path: string;
|
|
39
|
-
content: string;
|
|
40
|
-
}>, sessionId: string): Promise<ClassifiedArtifact[]>;
|
|
41
|
-
private buildPromptForClassification;
|
|
42
|
-
private summarizeEvents;
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=processor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"processor.d.ts","sourceRoot":"","sources":["../../../src/daemon/processor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAG1D,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAIvE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,YAAY,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAWD,qBAAa,eAAe;IACd,OAAO,CAAC,OAAO;IAAe,OAAO,CAAC,aAAa;gBAA3C,OAAO,EAAE,WAAW,EAAU,aAAa,GAAE,MAAa;IAE9E,OAAO,CAAC,kBAAkB;IAQpB,OAAO,CACX,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACtC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC;IAyB3B,OAAO,CAAC,wBAAwB;IAQ1B,gBAAgB,CACpB,oBAAoB,EAAE,MAAM,EAC5B,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAwBxC,iBAAiB,CACrB,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,EACpD,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAUhC,OAAO,CAAC,4BAA4B;IAOpC,OAAO,CAAC,eAAe;CA2DxB"}
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { ARTIFACT_TYPES } from '../vault/types.js';
|
|
3
|
-
import { CHARS_PER_TOKEN, EXTRACTION_MAX_TOKENS, SUMMARY_MAX_TOKENS, TITLE_MAX_TOKENS, CLASSIFICATION_MAX_TOKENS, PROMPT_PREVIEW_CHARS, AI_RESPONSE_PREVIEW_CHARS, COMMAND_PREVIEW_CHARS } from '../constants.js';
|
|
4
|
-
import { buildExtractionPrompt, buildSummaryPrompt, buildTitlePrompt, buildClassificationPrompt } from '../prompts/index.js';
|
|
5
|
-
import { extractJson, stripReasoningTokens } from '../intelligence/response.js';
|
|
6
|
-
const ClassificationResponseSchema = z.object({
|
|
7
|
-
artifacts: z.array(z.object({
|
|
8
|
-
source_path: z.string(),
|
|
9
|
-
artifact_type: z.enum(ARTIFACT_TYPES),
|
|
10
|
-
title: z.string(),
|
|
11
|
-
tags: z.array(z.string()).default([]),
|
|
12
|
-
})).default([]),
|
|
13
|
-
});
|
|
14
|
-
export class BufferProcessor {
|
|
15
|
-
backend;
|
|
16
|
-
contextWindow;
|
|
17
|
-
constructor(backend, contextWindow = 8192) {
|
|
18
|
-
this.backend = backend;
|
|
19
|
-
this.contextWindow = contextWindow;
|
|
20
|
-
}
|
|
21
|
-
truncateForContext(data, maxTokens) {
|
|
22
|
-
const available = this.contextWindow - maxTokens;
|
|
23
|
-
const dataTokens = Math.ceil(data.length / CHARS_PER_TOKEN);
|
|
24
|
-
if (dataTokens <= available)
|
|
25
|
-
return data;
|
|
26
|
-
const charBudget = available * CHARS_PER_TOKEN;
|
|
27
|
-
return data.slice(0, charBudget);
|
|
28
|
-
}
|
|
29
|
-
async process(events, sessionId) {
|
|
30
|
-
const rawPrompt = this.buildPromptForExtraction(events, sessionId);
|
|
31
|
-
const prompt = this.truncateForContext(rawPrompt, EXTRACTION_MAX_TOKENS);
|
|
32
|
-
try {
|
|
33
|
-
const response = await this.backend.summarize(prompt, { maxTokens: EXTRACTION_MAX_TOKENS });
|
|
34
|
-
const parsed = extractJson(response.text);
|
|
35
|
-
return {
|
|
36
|
-
summary: parsed.summary,
|
|
37
|
-
observations: parsed.observations ?? [],
|
|
38
|
-
degraded: false,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
catch (error) {
|
|
42
|
-
return {
|
|
43
|
-
summary: `LLM processing failed for session ${sessionId}. ${events.length} events captured. Error: ${error.message}`,
|
|
44
|
-
observations: [],
|
|
45
|
-
degraded: true,
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
buildPromptForExtraction(events, sessionId) {
|
|
50
|
-
const toolSummary = this.summarizeEvents(events);
|
|
51
|
-
return buildExtractionPrompt(sessionId, events.length, toolSummary);
|
|
52
|
-
}
|
|
53
|
-
async summarizeSession(conversationMarkdown, sessionId, user) {
|
|
54
|
-
const truncatedContent = this.truncateForContext(conversationMarkdown, SUMMARY_MAX_TOKENS);
|
|
55
|
-
const summaryPrompt = buildSummaryPrompt(sessionId, user ?? 'unknown', truncatedContent);
|
|
56
|
-
let summaryText;
|
|
57
|
-
try {
|
|
58
|
-
const response = await this.backend.summarize(summaryPrompt, { maxTokens: SUMMARY_MAX_TOKENS });
|
|
59
|
-
summaryText = stripReasoningTokens(response.text);
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
summaryText = `Session ${sessionId} — summarization failed: ${error.message}`;
|
|
63
|
-
}
|
|
64
|
-
const titlePrompt = buildTitlePrompt(summaryText, sessionId);
|
|
65
|
-
let title;
|
|
66
|
-
try {
|
|
67
|
-
const response = await this.backend.summarize(titlePrompt, { maxTokens: TITLE_MAX_TOKENS });
|
|
68
|
-
title = stripReasoningTokens(response.text).trim();
|
|
69
|
-
}
|
|
70
|
-
catch {
|
|
71
|
-
title = `Session ${sessionId}`;
|
|
72
|
-
}
|
|
73
|
-
return { summary: summaryText, title };
|
|
74
|
-
}
|
|
75
|
-
async classifyArtifacts(candidates, sessionId) {
|
|
76
|
-
if (candidates.length === 0)
|
|
77
|
-
return [];
|
|
78
|
-
const prompt = this.buildPromptForClassification(candidates, sessionId);
|
|
79
|
-
const response = await this.backend.summarize(prompt, { maxTokens: CLASSIFICATION_MAX_TOKENS });
|
|
80
|
-
const raw = extractJson(response.text);
|
|
81
|
-
const parsed = ClassificationResponseSchema.parse(raw);
|
|
82
|
-
return parsed.artifacts;
|
|
83
|
-
}
|
|
84
|
-
buildPromptForClassification(candidates, sessionId) {
|
|
85
|
-
return buildClassificationPrompt(sessionId, candidates);
|
|
86
|
-
}
|
|
87
|
-
summarizeEvents(events) {
|
|
88
|
-
const toolCounts = new Map();
|
|
89
|
-
const filesAccessed = new Set();
|
|
90
|
-
const prompts = [];
|
|
91
|
-
const aiResponses = [];
|
|
92
|
-
for (const event of events) {
|
|
93
|
-
if (event.type === 'user_prompt') {
|
|
94
|
-
const prompt = String(event.prompt ?? '');
|
|
95
|
-
if (prompt)
|
|
96
|
-
prompts.push(prompt.slice(0, PROMPT_PREVIEW_CHARS));
|
|
97
|
-
continue;
|
|
98
|
-
}
|
|
99
|
-
if (event.type === 'ai_response') {
|
|
100
|
-
const content = String(event.content ?? '');
|
|
101
|
-
if (content)
|
|
102
|
-
aiResponses.push(content.slice(0, AI_RESPONSE_PREVIEW_CHARS));
|
|
103
|
-
continue;
|
|
104
|
-
}
|
|
105
|
-
// Hooks send tool_name/tool_input; also support legacy tool/input
|
|
106
|
-
const tool = String(event.tool_name ?? event.tool ?? 'unknown');
|
|
107
|
-
toolCounts.set(tool, (toolCounts.get(tool) ?? 0) + 1);
|
|
108
|
-
const input = (event.tool_input ?? event.input);
|
|
109
|
-
if (input?.path)
|
|
110
|
-
filesAccessed.add(String(input.path));
|
|
111
|
-
if (input?.file_path)
|
|
112
|
-
filesAccessed.add(String(input.file_path));
|
|
113
|
-
if (input?.command)
|
|
114
|
-
filesAccessed.add(`[cmd] ${String(input.command).slice(0, COMMAND_PREVIEW_CHARS)}`);
|
|
115
|
-
}
|
|
116
|
-
const lines = [];
|
|
117
|
-
if (prompts.length > 0) {
|
|
118
|
-
lines.push('### User Prompts');
|
|
119
|
-
for (const p of prompts) {
|
|
120
|
-
lines.push(`- "${p}"`);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
lines.push('\n### Tool Usage');
|
|
124
|
-
for (const [tool, count] of toolCounts) {
|
|
125
|
-
lines.push(`- ${tool}: ${count} calls`);
|
|
126
|
-
}
|
|
127
|
-
if (filesAccessed.size > 0) {
|
|
128
|
-
lines.push('\n### Files Accessed');
|
|
129
|
-
for (const file of filesAccessed) {
|
|
130
|
-
lines.push(`- ${file}`);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
if (aiResponses.length > 0) {
|
|
134
|
-
lines.push('\n### AI Responses');
|
|
135
|
-
for (const r of aiResponses) {
|
|
136
|
-
lines.push(`- "${r}"`);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return lines.join('\n');
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
//# sourceMappingURL=processor.js.map
|