@contextgit/core 0.1.9 → 0.2.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/dist/claude-md-generator.d.ts.map +1 -1
- package/dist/claude-md-generator.js +10 -4
- package/dist/claude-md-generator.js.map +1 -1
- package/dist/claude-md-generator.test.js +22 -5
- package/dist/claude-md-generator.test.js.map +1 -1
- package/dist/engine.d.ts +4 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +1 -0
- package/dist/engine.js.map +1 -1
- package/dist/snapshot.d.ts.map +1 -1
- package/dist/snapshot.js +149 -40
- package/dist/snapshot.js.map +1 -1
- package/dist/snapshot.test.js +177 -13
- package/dist/snapshot.test.js.map +1 -1
- package/dist/threads.d.ts +55 -1
- package/dist/threads.d.ts.map +1 -1
- package/dist/threads.js +64 -0
- package/dist/threads.js.map +1 -1
- package/dist/threads.test.d.ts +2 -0
- package/dist/threads.test.d.ts.map +1 -0
- package/dist/threads.test.js +142 -0
- package/dist/threads.test.js.map +1 -0
- package/dist/types.d.ts +77 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-md-generator.d.ts","sourceRoot":"","sources":["../src/claude-md-generator.ts"],"names":[],"mappings":"AAKA,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,WAAW,GAAG,sBAAsB,CAAA;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM;IAajC,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-md-generator.d.ts","sourceRoot":"","sources":["../src/claude-md-generator.ts"],"names":[],"mappings":"AAKA,UAAU,eAAe;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,WAAW,GAAG,sBAAsB,CAAA;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,qBAAa,iBAAiB;IAC5B,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM;IAajC,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;CAiC9E"}
|
|
@@ -31,10 +31,16 @@ export class ClaudeMdGenerator {
|
|
|
31
31
|
}
|
|
32
32
|
// CLAUDE.md is manually maintained — write to CLAUDE.contextgit.md instead
|
|
33
33
|
writeFileSync(contextgitMdPath, generated, 'utf-8');
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
34
|
+
// Wire the @-include into CLAUDE.md (idempotent)
|
|
35
|
+
const claudeContent = readFileSync(claudeMdPath, 'utf-8');
|
|
36
|
+
const includeLine = '@CLAUDE.contextgit.md';
|
|
37
|
+
if (!claudeContent.split('\n').some(l => l.trim() === includeLine)) {
|
|
38
|
+
writeFileSync(claudeMdPath, `${includeLine}\n\n${claudeContent}`, 'utf-8');
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
file: 'CLAUDE.contextgit.md',
|
|
42
|
+
warning: `Context written to CLAUDE.contextgit.md and wired into CLAUDE.md via @-include.`,
|
|
43
|
+
};
|
|
38
44
|
}
|
|
39
45
|
}
|
|
40
46
|
//# sourceMappingURL=claude-md-generator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-md-generator.js","sourceRoot":"","sources":["../src/claude-md-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,MAAM,eAAe,GAAG,yDAAyD,CAAA;AAajF,MAAM,OAAO,iBAAiB;IAC5B,QAAQ,CAAC,IAAqB;QAC5B,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;QAChD,OAAO;YACL,wHAAwH;YACxH,sFAAsF;YACtF,sBAAsB,SAAS,CAAC,WAAW,EAAE,MAAM;YACnD,EAAE;YACF,KAAK,WAAW,EAAE;YAClB,EAAE;YACF,OAAO;SACR,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACd,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,WAAmB,EAAE,IAAqB;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;QACnD,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAA;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAErC,uCAAuC;QACvC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,aAAa,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;YAC/C,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;QAC9B,CAAC;QAED,kEAAkE;QAClE,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QACpD,IAAI,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACzC,aAAa,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;YAC/C,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;QAC9B,CAAC;QAED,2EAA2E;QAC3E,aAAa,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"claude-md-generator.js","sourceRoot":"","sources":["../src/claude-md-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,MAAM,eAAe,GAAG,yDAAyD,CAAA;AAajF,MAAM,OAAO,iBAAiB;IAC5B,QAAQ,CAAC,IAAqB;QAC5B,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAAA;QAChD,OAAO;YACL,wHAAwH;YACxH,sFAAsF;YACtF,sBAAsB,SAAS,CAAC,WAAW,EAAE,MAAM;YACnD,EAAE;YACF,KAAK,WAAW,EAAE;YAClB,EAAE;YACF,OAAO;SACR,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACd,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,WAAmB,EAAE,IAAqB;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;QACnD,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAA;QAClE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAErC,uCAAuC;QACvC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9B,aAAa,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;YAC/C,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;QAC9B,CAAC;QAED,kEAAkE;QAClE,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QACpD,IAAI,QAAQ,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACzC,aAAa,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;YAC/C,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAA;QAC9B,CAAC;QAED,2EAA2E;QAC3E,aAAa,CAAC,gBAAgB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QAEnD,iDAAiD;QACjD,MAAM,aAAa,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QACzD,MAAM,WAAW,GAAG,uBAAuB,CAAA;QAC3C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC;YACnE,aAAa,CAAC,YAAY,EAAE,GAAG,WAAW,OAAO,aAAa,EAAE,EAAE,OAAO,CAAC,CAAA;QAC5E,CAAC;QAED,OAAO;YACL,IAAI,EAAE,sBAAsB;YAC5B,OAAO,EAAE,iFAAiF;SAC3F,CAAA;IACH,CAAC;CACF"}
|
|
@@ -66,7 +66,7 @@ describe('ClaudeMdGenerator', () => {
|
|
|
66
66
|
expect(written).toContain('New content.');
|
|
67
67
|
expect(written).not.toContain('Old content.');
|
|
68
68
|
});
|
|
69
|
-
it('
|
|
69
|
+
it('wires @-include as first line of CLAUDE.md and preserves original content', async () => {
|
|
70
70
|
writeFileSync(join(tmpDir, 'CLAUDE.md'), '# My manually written CLAUDE.md\nDo not overwrite.');
|
|
71
71
|
const result = await generator.write(tmpDir, {
|
|
72
72
|
projectName: 'My Project',
|
|
@@ -75,12 +75,29 @@ describe('ClaudeMdGenerator', () => {
|
|
|
75
75
|
});
|
|
76
76
|
expect(result.file).toBe('CLAUDE.contextgit.md');
|
|
77
77
|
expect(result.warning).toBeDefined();
|
|
78
|
-
expect(result.warning).toContain('
|
|
79
|
-
//
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
expect(result.warning).toContain('wired into CLAUDE.md');
|
|
79
|
+
// @-include wired as first line
|
|
80
|
+
const claudeContent = readFileSync(join(tmpDir, 'CLAUDE.md'), 'utf-8');
|
|
81
|
+
expect(claudeContent.split('\n')[0]).toBe('@CLAUDE.contextgit.md');
|
|
82
|
+
// Original content preserved below
|
|
83
|
+
expect(claudeContent).toContain('Do not overwrite.');
|
|
84
|
+
// Sidecar created
|
|
82
85
|
expect(existsSync(join(tmpDir, 'CLAUDE.contextgit.md'))).toBe(true);
|
|
83
86
|
});
|
|
87
|
+
it('wires @-include exactly once when write() is called twice', async () => {
|
|
88
|
+
writeFileSync(join(tmpDir, 'CLAUDE.md'), '# Manual content');
|
|
89
|
+
await generator.write(tmpDir, { projectName: 'P', content: 'c1', timestamp: new Date() });
|
|
90
|
+
await generator.write(tmpDir, { projectName: 'P', content: 'c2', timestamp: new Date() });
|
|
91
|
+
const content = readFileSync(join(tmpDir, 'CLAUDE.md'), 'utf-8');
|
|
92
|
+
const occurrences = content.split('@CLAUDE.contextgit.md').length - 1;
|
|
93
|
+
expect(occurrences).toBe(1);
|
|
94
|
+
});
|
|
95
|
+
it('does not modify CLAUDE.md when @-include is already present', async () => {
|
|
96
|
+
const initial = '@CLAUDE.contextgit.md\n\n# Manual content';
|
|
97
|
+
writeFileSync(join(tmpDir, 'CLAUDE.md'), initial);
|
|
98
|
+
await generator.write(tmpDir, { projectName: 'P', content: 'new content', timestamp: new Date() });
|
|
99
|
+
expect(readFileSync(join(tmpDir, 'CLAUDE.md'), 'utf-8')).toBe(initial);
|
|
100
|
+
});
|
|
84
101
|
it('updates CLAUDE.contextgit.md if it already exists from a previous run', async () => {
|
|
85
102
|
writeFileSync(join(tmpDir, 'CLAUDE.md'), '# Manual CLAUDE.md');
|
|
86
103
|
writeFileSync(join(tmpDir, 'CLAUDE.contextgit.md'), '<!-- Auto-generated by ContextGit. Do not edit manually -->\nOld generated.');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-md-generator.test.js","sourceRoot":"","sources":["../src/claude-md-generator.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"claude-md-generator.test.js","sourceRoot":"","sources":["../src/claude-md-generator.test.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.d.ts
CHANGED
|
@@ -43,7 +43,9 @@ interface EngineCommitStoreInput {
|
|
|
43
43
|
id: string;
|
|
44
44
|
note: string;
|
|
45
45
|
}>;
|
|
46
|
+
closes?: string[];
|
|
46
47
|
};
|
|
48
|
+
completesTasks?: string[];
|
|
47
49
|
}
|
|
48
50
|
interface EngineAgentInput {
|
|
49
51
|
id: string;
|
|
@@ -65,7 +67,9 @@ export interface EngineCommitInput {
|
|
|
65
67
|
id: string;
|
|
66
68
|
note: string;
|
|
67
69
|
}>;
|
|
70
|
+
closes?: string[];
|
|
68
71
|
};
|
|
72
|
+
completesTasks?: string[];
|
|
69
73
|
}
|
|
70
74
|
export interface EngineOptions {
|
|
71
75
|
summarizer?: RollingSummarizer;
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,SAAS,EACT,MAAM,EACN,MAAM,EACN,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,YAAY,EACb,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAIlD,UAAU,iBAAiB;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;IACnG,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;IAC1D,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACvD,YAAY,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5D,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAC7F,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IACjF,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACtD,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrE,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;CAChG;AAED,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,UAAU,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;QACf,KAAK,CAAC,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.js
CHANGED
|
@@ -69,6 +69,7 @@ export class ContextEngine {
|
|
|
69
69
|
ciRunId: input.ciRunId,
|
|
70
70
|
pipelineName: input.pipelineName,
|
|
71
71
|
threads: input.threads,
|
|
72
|
+
completesTasks: input.completesTasks,
|
|
72
73
|
});
|
|
73
74
|
// Generate and index embedding asynchronously — never block the commit.
|
|
74
75
|
if (this.embeddings) {
|
package/dist/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA,qDAAqD;AACrD,6DAA6D;AAC7D,EAAE;AACF,SAAS;AACT,4FAA4F;AAC5F,2CAA2C;AAC3C,4DAA4D;AAC5D,oDAAoD;AAYpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
package/dist/snapshot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAmB,eAAe,EAAE,cAAc,EAAU,MAAM,YAAY,CAAA;AAqG1F,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,MAAM;CA+E/D"}
|
package/dist/snapshot.js
CHANGED
|
@@ -5,65 +5,174 @@ function claimLabel(thread, activeClaims) {
|
|
|
5
5
|
cl.task.toLowerCase().includes(thread.description.toLowerCase().slice(0, 30)));
|
|
6
6
|
return match ? `[CLAIMED by ${match.agentId}]` : '[FREE]';
|
|
7
7
|
}
|
|
8
|
+
function decayCountLine(staleCount, expiredCount) {
|
|
9
|
+
const stale = staleCount ?? 0;
|
|
10
|
+
const expired = expiredCount ?? 0;
|
|
11
|
+
if (stale === 0 && expired === 0)
|
|
12
|
+
return null;
|
|
13
|
+
const parts = [];
|
|
14
|
+
if (stale > 0)
|
|
15
|
+
parts.push(`+${stale} stale`);
|
|
16
|
+
if (expired > 0)
|
|
17
|
+
parts.push(`+${expired} expired-watch`);
|
|
18
|
+
return `(${parts.join(', ')} — call project_memory_threads to view)`;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Live git facts line (02 DELTA gate 1): Branch | HEAD | commit count, read fresh on every load.
|
|
22
|
+
* Returns null unless at least one of headSha / commitCount is set — branchName alone is already
|
|
23
|
+
* shown elsewhere in the snapshot and doesn't justify the section.
|
|
24
|
+
*/
|
|
25
|
+
function gitFactsLine(branchName, headSha, commitCount) {
|
|
26
|
+
if (!headSha && commitCount == null)
|
|
27
|
+
return null;
|
|
28
|
+
const parts = [];
|
|
29
|
+
if (branchName)
|
|
30
|
+
parts.push(`Branch: ${branchName}`);
|
|
31
|
+
if (headSha)
|
|
32
|
+
parts.push(`HEAD: ${headSha.slice(0, 8)}`);
|
|
33
|
+
if (commitCount != null)
|
|
34
|
+
parts.push(`${commitCount} commits`);
|
|
35
|
+
return parts.join(' | ');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Render the active plan tree as nested lines with status markers (04 DELTA).
|
|
39
|
+
* ✓ complete (task with status='done', or container with all children complete)
|
|
40
|
+
* → the single "next" pending task — first pending task in document order
|
|
41
|
+
* ▸ in-progress (task) or partial (container with some children complete)
|
|
42
|
+
* ○ not started / empty container / pending
|
|
43
|
+
*
|
|
44
|
+
* The marker uses the same `isComplete` rule that drives the [n/m done]
|
|
45
|
+
* rollup — display and rollup are derived from one definition. Containers
|
|
46
|
+
* (plan/step) need children to be complete; status='done' alone on an empty
|
|
47
|
+
* container doesn't make it ✓ (matches queries.ts walkAndSetProgress).
|
|
48
|
+
*
|
|
49
|
+
* Returns null when the tree is empty.
|
|
50
|
+
*/
|
|
51
|
+
function renderPlanTree(tree) {
|
|
52
|
+
if (!tree || tree.length === 0)
|
|
53
|
+
return null;
|
|
54
|
+
// Find the single "next" pending task (depth-first document order)
|
|
55
|
+
let nextTaskId = null;
|
|
56
|
+
const findNext = (nodes) => {
|
|
57
|
+
for (const n of nodes) {
|
|
58
|
+
if (n.level === 'task' && n.status === 'pending') {
|
|
59
|
+
nextTaskId = n.id;
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
if (n.children && findNext(n.children))
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
};
|
|
67
|
+
findNext(tree);
|
|
68
|
+
// Mirror of queries.ts walkAndSetProgress — single source of truth for what
|
|
69
|
+
// "complete" means at any depth. Used here so the marker matches the rollup.
|
|
70
|
+
const isComplete = (n) => {
|
|
71
|
+
if (n.level === 'task')
|
|
72
|
+
return n.status === 'done';
|
|
73
|
+
if (!n.children || n.children.length === 0)
|
|
74
|
+
return false;
|
|
75
|
+
return n.children.every(isComplete);
|
|
76
|
+
};
|
|
77
|
+
const lines = [];
|
|
78
|
+
const render = (node, depth) => {
|
|
79
|
+
const indent = ' '.repeat(depth);
|
|
80
|
+
let marker;
|
|
81
|
+
if (node.level === 'task') {
|
|
82
|
+
if (node.status === 'done')
|
|
83
|
+
marker = '✓';
|
|
84
|
+
else if (node.id === nextTaskId)
|
|
85
|
+
marker = '→';
|
|
86
|
+
else if (node.status === 'in_progress')
|
|
87
|
+
marker = '▸';
|
|
88
|
+
else
|
|
89
|
+
marker = '○';
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
if (isComplete(node))
|
|
93
|
+
marker = '✓';
|
|
94
|
+
else if (node.progress && node.progress.done > 0)
|
|
95
|
+
marker = '▸';
|
|
96
|
+
else if (node.status === 'in_progress')
|
|
97
|
+
marker = '▸';
|
|
98
|
+
else
|
|
99
|
+
marker = '○';
|
|
100
|
+
}
|
|
101
|
+
let line = `${indent}[${node.id.slice(0, 6)}] ${marker} ${node.title}`;
|
|
102
|
+
if (node.level !== 'task' && node.progress && node.progress.total > 0) {
|
|
103
|
+
line += ` [${node.progress.done}/${node.progress.total} done]`;
|
|
104
|
+
}
|
|
105
|
+
if (node.id === nextTaskId)
|
|
106
|
+
line += ' ← next';
|
|
107
|
+
lines.push(line);
|
|
108
|
+
for (const c of node.children ?? [])
|
|
109
|
+
render(c, depth + 1);
|
|
110
|
+
};
|
|
111
|
+
for (const top of tree)
|
|
112
|
+
render(top, 0);
|
|
113
|
+
return lines.join('\n');
|
|
114
|
+
}
|
|
8
115
|
export class SnapshotFormatter {
|
|
9
116
|
format(snapshot, fmt) {
|
|
10
|
-
|
|
117
|
+
// Note: snapshot.projectSummary is intentionally NOT rendered. Per
|
|
118
|
+
// 02_ContextGit_DELTA_granularity.md, the load returns only the curated
|
|
119
|
+
// roadmap (live ## Git + threads + recent activity) — the stored prose
|
|
120
|
+
// summary went stale at load time and is dropped, not maintained.
|
|
121
|
+
const { branchName, branchSummary, recentCommits, openThreads, activeClaims } = snapshot;
|
|
11
122
|
if (fmt === 'json') {
|
|
12
123
|
return JSON.stringify(snapshot, null, 2);
|
|
13
124
|
}
|
|
125
|
+
const countLine = decayCountLine(snapshot.staleThreadCount, snapshot.expiredWatchCount);
|
|
126
|
+
const factsLine = gitFactsLine(branchName, snapshot.headSha, snapshot.commitCount);
|
|
14
127
|
if (fmt === 'agents-md') {
|
|
15
128
|
const uniqueThreads = [...new Map(openThreads.map((t) => [t.id, t])).values()];
|
|
16
129
|
const commits = recentCommits
|
|
17
130
|
.map((c) => `- [${c.createdAt.toISOString()}] "${c.message}" by ${c.agentRole} via ${c.tool} (${c.workflowType})`)
|
|
18
131
|
.join('\n');
|
|
19
132
|
const threads = uniqueThreads
|
|
20
|
-
.map((t) => `- ${claimLabel(t, activeClaims)} ${t.description} (opened ${t.createdAt.toLocaleDateString()}, ${t.workflowType ?? 'interactive'})`)
|
|
133
|
+
.map((t) => `- [${t.id.slice(0, 6)}] ${claimLabel(t, activeClaims)} ${t.description} (opened ${t.createdAt.toLocaleDateString()}, ${t.workflowType ?? 'interactive'})`)
|
|
21
134
|
.join('\n');
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
].join('\n');
|
|
135
|
+
const threadsSection = countLine ? `${threads || '(none)'}\n${countLine}` : (threads || '(none)');
|
|
136
|
+
const claimsSection = activeClaims.length
|
|
137
|
+
? activeClaims
|
|
138
|
+
.map((cl) => `- [CLAIMED by ${cl.agentId}] ${cl.task} (claimed ${cl.claimedAt.toISOString()})`)
|
|
139
|
+
.join('\n')
|
|
140
|
+
: '(none)';
|
|
141
|
+
const sections = [];
|
|
142
|
+
if (factsLine)
|
|
143
|
+
sections.push(`## Git`, factsLine, ``);
|
|
144
|
+
const planRendered = renderPlanTree(snapshot.planTree ?? []);
|
|
145
|
+
if (planRendered)
|
|
146
|
+
sections.push(`## Plan`, planRendered, ``);
|
|
147
|
+
sections.push(`## Open Threads`, threadsSection);
|
|
148
|
+
sections.push(``, `## Recent Activity`, commits || '(no commits yet)');
|
|
149
|
+
sections.push(``, `## Active Claims`, claimsSection);
|
|
150
|
+
return sections.join('\n');
|
|
39
151
|
}
|
|
40
152
|
// text (default)
|
|
41
153
|
const commits = recentCommits
|
|
42
154
|
.map((c) => `[${c.createdAt.toISOString()}] "${c.message}" by ${c.agentRole} via ${c.tool} (${c.workflowType})`)
|
|
43
155
|
.join('\n');
|
|
44
156
|
const threads = openThreads
|
|
45
|
-
.map((t) =>
|
|
157
|
+
.map((t) => `[${t.id.slice(0, 6)}] ${claimLabel(t, activeClaims)} ${t.description} (opened ${t.createdAt.toLocaleDateString()}, ${t.workflowType ?? 'interactive'})`)
|
|
46
158
|
.join('\n');
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
.join('\n')
|
|
65
|
-
: '(none)',
|
|
66
|
-
].join('\n');
|
|
159
|
+
const threadsSectionText = countLine ? `${threads || '(none)'}\n${countLine}` : (threads || '(none)');
|
|
160
|
+
const claimsSectionText = activeClaims.length
|
|
161
|
+
? activeClaims
|
|
162
|
+
.map((cl) => `- [CLAIMED by ${cl.agentId}] ${cl.task} (claimed ${cl.claimedAt.toISOString()})`)
|
|
163
|
+
.join('\n')
|
|
164
|
+
: '(none)';
|
|
165
|
+
const textSections = [];
|
|
166
|
+
if (factsLine)
|
|
167
|
+
textSections.push(`=== GIT ===`, factsLine, ``);
|
|
168
|
+
const planRenderedText = renderPlanTree(snapshot.planTree ?? []);
|
|
169
|
+
if (planRenderedText)
|
|
170
|
+
textSections.push(`=== PLAN ===`, planRenderedText, ``);
|
|
171
|
+
textSections.push(`=== CURRENT BRANCH: ${branchName} ===`, branchSummary || '(no branch summary yet)');
|
|
172
|
+
textSections.push(``, `=== RECENT COMMITS ===`, commits || '(none)');
|
|
173
|
+
textSections.push(``, `=== OPEN THREADS ===`, threadsSectionText);
|
|
174
|
+
textSections.push(``, `=== ACTIVE CLAIMS ===`, claimsSectionText);
|
|
175
|
+
return textSections.join('\n');
|
|
67
176
|
}
|
|
68
177
|
}
|
|
69
178
|
//# sourceMappingURL=snapshot.js.map
|
package/dist/snapshot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,2FAA2F;AAI3F,SAAS,UAAU,CAAC,MAAc,EAAE,YAAqB;IACvD,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAC7B,CAAC,EAAE,EAAE,EAAE,CACL,CAAC,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ,KAAK,MAAM,CAAC,EAAE,CAAC;QAC1C,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAChF,CAAA;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,eAAe,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAA;AAC3D,CAAC;AAED,MAAM,OAAO,iBAAiB;IAC5B,MAAM,CAAC,QAAyB,EAAE,GAAmB;QACnD,
|
|
1
|
+
{"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"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"}
|
package/dist/snapshot.test.js
CHANGED
|
@@ -137,22 +137,40 @@ describe('SnapshotFormatter inline claim status', () => {
|
|
|
137
137
|
const out = formatter.format(snapshot, 'agents-md');
|
|
138
138
|
expect(out).not.toContain('## Current Branch');
|
|
139
139
|
});
|
|
140
|
-
|
|
140
|
+
// 02 DELTA gate 1: the legacy stored-prose summary is no longer emitted.
|
|
141
|
+
// projectSummary is reconstructable from the head commit summary and was going
|
|
142
|
+
// stale at load time; per the spec ("Architecture prose is dropped, not
|
|
143
|
+
// maintained"), the load now carries only the live ## Git facts + curated
|
|
144
|
+
// threads + recent activity, never a stored prose block.
|
|
145
|
+
it('agents-md does not emit the legacy ## Project State block', () => {
|
|
146
|
+
const snapshot = makeSnapshot({ projectSummary: 'free-form prose blob' });
|
|
147
|
+
const out = formatter.format(snapshot, 'agents-md');
|
|
148
|
+
expect(out).not.toContain('## Project State');
|
|
149
|
+
expect(out).not.toContain('free-form prose blob');
|
|
150
|
+
expect(out).not.toContain('(no summary yet)');
|
|
151
|
+
});
|
|
152
|
+
it('text format does not emit the legacy === PROJECT STATE === block', () => {
|
|
153
|
+
const snapshot = makeSnapshot({ projectSummary: 'free-form prose blob' });
|
|
154
|
+
const out = formatter.format(snapshot, 'text');
|
|
155
|
+
expect(out).not.toContain('=== PROJECT STATE ===');
|
|
156
|
+
expect(out).not.toContain('free-form prose blob');
|
|
157
|
+
expect(out).not.toContain('(no summary yet)');
|
|
158
|
+
});
|
|
159
|
+
// Defensive: when the head commit's summary itself contains markdown headings,
|
|
160
|
+
// the previous formatter would dump them under ## Project State and produce
|
|
161
|
+
// duplicate sections (notably a second ## Git). Verify exactly one ## Git
|
|
162
|
+
// heading regardless of what projectSummary carries.
|
|
163
|
+
it('agents-md emits exactly one ## Git heading even when projectSummary contains "## Git"', () => {
|
|
141
164
|
const snapshot = makeSnapshot({
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
projectId: 'p',
|
|
146
|
-
branchId: 'b',
|
|
147
|
-
description: 'thread one',
|
|
148
|
-
status: 'open',
|
|
149
|
-
openedInCommit: 'c1',
|
|
150
|
-
createdAt: new Date(),
|
|
151
|
-
},
|
|
152
|
-
],
|
|
165
|
+
projectSummary: '## Git\nBranch: stale-from-storage | HEAD: deadbeef',
|
|
166
|
+
headSha: '1234567890abcdef',
|
|
167
|
+
commitCount: 42,
|
|
153
168
|
});
|
|
154
169
|
const out = formatter.format(snapshot, 'agents-md');
|
|
155
|
-
|
|
170
|
+
const gitHeadingCount = (out.match(/^## Git$/gm) ?? []).length;
|
|
171
|
+
expect(gitHeadingCount).toBe(1);
|
|
172
|
+
expect(out).not.toContain('stale-from-storage');
|
|
173
|
+
expect(out).not.toContain('deadbeef');
|
|
156
174
|
});
|
|
157
175
|
it('agents-md deduplicates open threads by id', () => {
|
|
158
176
|
const thread = {
|
|
@@ -169,5 +187,151 @@ describe('SnapshotFormatter inline claim status', () => {
|
|
|
169
187
|
const count = (out.match(/duplicated thread/g) ?? []).length;
|
|
170
188
|
expect(count).toBe(1);
|
|
171
189
|
});
|
|
190
|
+
it('agents-md appends a decay count line when stale or expired counts are non-zero', () => {
|
|
191
|
+
const snapshot = makeSnapshot({ staleThreadCount: 12, expiredWatchCount: 7 });
|
|
192
|
+
const out = formatter.format(snapshot, 'agents-md');
|
|
193
|
+
expect(out).toContain('+12 stale');
|
|
194
|
+
expect(out).toContain('+7 expired-watch');
|
|
195
|
+
expect(out).toContain('call project_memory_threads to view');
|
|
196
|
+
});
|
|
197
|
+
it('agents-md omits the decay count line when counts are zero or missing', () => {
|
|
198
|
+
const snapshot = makeSnapshot();
|
|
199
|
+
const out = formatter.format(snapshot, 'agents-md');
|
|
200
|
+
expect(out).not.toContain('project_memory_threads');
|
|
201
|
+
expect(out).not.toContain('stale');
|
|
202
|
+
expect(out).not.toContain('expired-watch');
|
|
203
|
+
});
|
|
204
|
+
it('agents-md count line includes only the non-zero count when one side is empty', () => {
|
|
205
|
+
const snapshot = makeSnapshot({ staleThreadCount: 4, expiredWatchCount: 0 });
|
|
206
|
+
const out = formatter.format(snapshot, 'agents-md');
|
|
207
|
+
expect(out).toContain('+4 stale');
|
|
208
|
+
expect(out).not.toContain('expired-watch');
|
|
209
|
+
});
|
|
210
|
+
it('text format also shows the decay count line', () => {
|
|
211
|
+
const snapshot = makeSnapshot({ staleThreadCount: 3, expiredWatchCount: 0 });
|
|
212
|
+
const out = formatter.format(snapshot, 'text');
|
|
213
|
+
expect(out).toContain('+3 stale');
|
|
214
|
+
});
|
|
215
|
+
it('agents-md prefixes each open thread with a 6-char [handle]', () => {
|
|
216
|
+
const snapshot = makeSnapshot({
|
|
217
|
+
openThreads: [
|
|
218
|
+
{
|
|
219
|
+
id: 'abcdef1234567890',
|
|
220
|
+
projectId: 'p', branchId: 'b',
|
|
221
|
+
description: 'thread one',
|
|
222
|
+
status: 'open',
|
|
223
|
+
openedInCommit: 'c1',
|
|
224
|
+
createdAt: new Date(),
|
|
225
|
+
},
|
|
226
|
+
],
|
|
227
|
+
});
|
|
228
|
+
const out = formatter.format(snapshot, 'agents-md');
|
|
229
|
+
expect(out).toContain('[abcdef]');
|
|
230
|
+
// Confirm handle is exactly 6 chars and equals id.slice(0,6)
|
|
231
|
+
const handleMatch = out.match(/\[([a-zA-Z0-9_-]+)\] \[FREE\] thread one/);
|
|
232
|
+
expect(handleMatch?.[1]).toBe('abcdef');
|
|
233
|
+
});
|
|
234
|
+
it('text format prefixes each open thread with a 6-char [handle]', () => {
|
|
235
|
+
const snapshot = makeSnapshot({
|
|
236
|
+
openThreads: [
|
|
237
|
+
{
|
|
238
|
+
id: 'xyz789abcdef0000',
|
|
239
|
+
projectId: 'p', branchId: 'b',
|
|
240
|
+
description: 'thread two',
|
|
241
|
+
status: 'open',
|
|
242
|
+
openedInCommit: 'c1',
|
|
243
|
+
createdAt: new Date(),
|
|
244
|
+
},
|
|
245
|
+
],
|
|
246
|
+
});
|
|
247
|
+
const out = formatter.format(snapshot, 'text');
|
|
248
|
+
expect(out).toContain('[xyz789]');
|
|
249
|
+
});
|
|
250
|
+
it('agents-md renders the Git section with live branch/HEAD/commit count when set', () => {
|
|
251
|
+
const snapshot = makeSnapshot({
|
|
252
|
+
branchName: 'feature/x',
|
|
253
|
+
headSha: '1234567890abcdef',
|
|
254
|
+
commitCount: 42,
|
|
255
|
+
});
|
|
256
|
+
const out = formatter.format(snapshot, 'agents-md');
|
|
257
|
+
expect(out).toContain('## Git');
|
|
258
|
+
expect(out).toContain('Branch: feature/x');
|
|
259
|
+
expect(out).toContain('HEAD: 12345678');
|
|
260
|
+
expect(out).toContain('42 commits');
|
|
261
|
+
});
|
|
262
|
+
it('omits the Git section when headSha and commitCount are not set', () => {
|
|
263
|
+
const snapshot = makeSnapshot(); // branchName defaults to 'main' but no headSha/commitCount
|
|
264
|
+
const out = formatter.format(snapshot, 'agents-md');
|
|
265
|
+
expect(out).not.toContain('## Git');
|
|
266
|
+
});
|
|
267
|
+
it('text format also renders the GIT section', () => {
|
|
268
|
+
const snapshot = makeSnapshot({ headSha: 'abc12345abcdef', commitCount: 7 });
|
|
269
|
+
const out = formatter.format(snapshot, 'text');
|
|
270
|
+
expect(out).toContain('=== GIT ===');
|
|
271
|
+
expect(out).toContain('HEAD: abc12345');
|
|
272
|
+
expect(out).toContain('7 commits');
|
|
273
|
+
});
|
|
274
|
+
// ─── 04 DELTA: ## Plan section ───────────────────────────────────────────
|
|
275
|
+
it('agents-md renders ## Plan between ## Git and ## Open Threads when planTree is present', () => {
|
|
276
|
+
const snapshot = makeSnapshot({
|
|
277
|
+
headSha: 'a1b2c3d4',
|
|
278
|
+
commitCount: 10,
|
|
279
|
+
planTree: [
|
|
280
|
+
{
|
|
281
|
+
id: 'plan-1234567890', projectId: 'p', level: 'plan', title: 'Webapp foundation',
|
|
282
|
+
status: 'pending', position: 0, createdAt: new Date(),
|
|
283
|
+
progress: { done: 1, total: 3 },
|
|
284
|
+
children: [
|
|
285
|
+
{
|
|
286
|
+
id: 'step-1234567890', projectId: 'p', parentId: 'plan-1234567890', level: 'step',
|
|
287
|
+
title: 'Slice 1', status: 'done', position: 0, createdAt: new Date(),
|
|
288
|
+
progress: { done: 1, total: 1 },
|
|
289
|
+
children: [
|
|
290
|
+
{ id: 'task-AA12345678', projectId: 'p', parentId: 'step-1234567890', level: 'task',
|
|
291
|
+
title: 'StatusDot', status: 'done', position: 0, createdAt: new Date() },
|
|
292
|
+
],
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
id: 'step-2234567890', projectId: 'p', parentId: 'plan-1234567890', level: 'step',
|
|
296
|
+
title: 'Slice 2', status: 'pending', position: 1, createdAt: new Date(),
|
|
297
|
+
progress: { done: 0, total: 2 },
|
|
298
|
+
children: [
|
|
299
|
+
{ id: 'task-BB12345678', projectId: 'p', parentId: 'step-2234567890', level: 'task',
|
|
300
|
+
title: 'ProgressBar', status: 'pending', position: 0, createdAt: new Date() },
|
|
301
|
+
{ id: 'task-CC12345678', projectId: 'p', parentId: 'step-2234567890', level: 'task',
|
|
302
|
+
title: 'AISuggestionCard', status: 'pending', position: 1, createdAt: new Date() },
|
|
303
|
+
],
|
|
304
|
+
},
|
|
305
|
+
],
|
|
306
|
+
},
|
|
307
|
+
],
|
|
308
|
+
});
|
|
309
|
+
const out = formatter.format(snapshot, 'agents-md');
|
|
310
|
+
expect(out).toContain('## Plan');
|
|
311
|
+
expect(out).toContain('Webapp foundation');
|
|
312
|
+
expect(out).toContain('[1/3 done]');
|
|
313
|
+
expect(out).toContain('✓ StatusDot');
|
|
314
|
+
expect(out).toContain('→ ProgressBar');
|
|
315
|
+
expect(out).toContain('← next');
|
|
316
|
+
expect(out).toContain('○ AISuggestionCard');
|
|
317
|
+
expect(out.indexOf('## Plan')).toBeLessThan(out.indexOf('## Open Threads'));
|
|
318
|
+
expect(out.indexOf('## Git')).toBeLessThan(out.indexOf('## Plan'));
|
|
319
|
+
});
|
|
320
|
+
it('agents-md omits ## Plan when planTree is empty or undefined', () => {
|
|
321
|
+
expect(formatter.format(makeSnapshot({ planTree: [] }), 'agents-md')).not.toContain('## Plan');
|
|
322
|
+
expect(formatter.format(makeSnapshot(), 'agents-md')).not.toContain('## Plan');
|
|
323
|
+
});
|
|
324
|
+
it('text format also renders === PLAN === when planTree is non-empty', () => {
|
|
325
|
+
const snapshot = makeSnapshot({
|
|
326
|
+
planTree: [{
|
|
327
|
+
id: 'planXYZ-rest', projectId: 'p', level: 'plan', title: 'Test plan',
|
|
328
|
+
status: 'pending', position: 0, createdAt: new Date(),
|
|
329
|
+
progress: { done: 0, total: 0 },
|
|
330
|
+
}],
|
|
331
|
+
});
|
|
332
|
+
const out = formatter.format(snapshot, 'text');
|
|
333
|
+
expect(out).toContain('=== PLAN ===');
|
|
334
|
+
expect(out).toContain('Test plan');
|
|
335
|
+
});
|
|
172
336
|
});
|
|
173
337
|
//# sourceMappingURL=snapshot.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.test.js","sourceRoot":"","sources":["../src/snapshot.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"snapshot.test.js","sourceRoot":"","sources":["../src/snapshot.test.ts"],"names":[],"mappings":"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"}
|
package/dist/threads.d.ts
CHANGED
|
@@ -1,4 +1,58 @@
|
|
|
1
|
-
import type { Thread } from './types.js';
|
|
1
|
+
import type { Thread, ThreadKind, ThreadOpenInput } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Canonical form of a thread subject for dedupe-on-save (02 DELTA, spec §A).
|
|
4
|
+
* Trim, lowercase, collapse internal whitespace. Two subjects are duplicates
|
|
5
|
+
* iff their normalized forms are equal.
|
|
6
|
+
*/
|
|
7
|
+
export declare function normalizeThreadSubject(subject: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Coerce a `ThreadOpenInput` (string sugar OR object) into `{ subject, kind }`.
|
|
10
|
+
* Plain string → `{ subject, kind: 'open' }`. Object missing `kind` → `'open'`.
|
|
11
|
+
* Keeps the public API additive: old `string[]` callers keep working unchanged.
|
|
12
|
+
*/
|
|
13
|
+
export declare function parseThreadOpenInput(input: ThreadOpenInput): {
|
|
14
|
+
subject: string;
|
|
15
|
+
kind: ThreadKind;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Thresholds for thread decay.
|
|
19
|
+
*
|
|
20
|
+
* Open threads use an AND-rule across two axes — recency (wall-clock time since
|
|
21
|
+
* touch) AND distance (commits since touch). A thread is stale only when BOTH
|
|
22
|
+
* signals fire. This is a calibration fix vs. 02 DELTA's original OR-of-distance:
|
|
23
|
+
* on a long-lived feature branch (e.g. JiraExtension, 200+ commits on one
|
|
24
|
+
* unmerged branch), raw commit-distance stales every thread older than 30
|
|
25
|
+
* branch commits regardless of when it was last touched — recency must be able
|
|
26
|
+
* to KEEP a thread alive, not just condemn it.
|
|
27
|
+
*
|
|
28
|
+
* Watch notes keep their OR-of-{branch-commits, time} expiry — they are
|
|
29
|
+
* explicitly TTL-bounded by design and don't suffer the long-branch problem
|
|
30
|
+
* (their thresholds are lower and their lifetime is meant to be short).
|
|
31
|
+
*/
|
|
32
|
+
export declare const DECAY_DEFAULTS: {
|
|
33
|
+
readonly staleOpenAgeMs: number;
|
|
34
|
+
readonly staleOpenProjectCommits: 8;
|
|
35
|
+
readonly staleOpenBranchCommits: 30;
|
|
36
|
+
readonly expiredWatchBranchCommits: 15;
|
|
37
|
+
readonly expiredWatchTimeMs: number;
|
|
38
|
+
};
|
|
39
|
+
export type DecayThresholds = typeof DECAY_DEFAULTS;
|
|
40
|
+
export interface ThreadDecayContext {
|
|
41
|
+
/** Unix ms timestamp of the thread's last touch (touched commit's created_at, fallback to thread.createdAt). */
|
|
42
|
+
touchTs: number;
|
|
43
|
+
/** Count of commits on the project created strictly after touchTs. */
|
|
44
|
+
projectCommitsSince: number;
|
|
45
|
+
/** Count of commits on the thread's branch created strictly after touchTs. */
|
|
46
|
+
branchCommitsSince: number;
|
|
47
|
+
/** "Now" in Unix ms — injectable for deterministic tests. */
|
|
48
|
+
now: number;
|
|
49
|
+
}
|
|
50
|
+
export type ThreadDecayFlag = 'live' | 'stale' | 'expired';
|
|
51
|
+
/**
|
|
52
|
+
* Classify a thread as live, stale (open thread past its decay threshold),
|
|
53
|
+
* or expired (watch note past its TTL). Pure — no DB, no clock side-effect.
|
|
54
|
+
*/
|
|
55
|
+
export declare function classifyThread(thread: Thread, ctx: ThreadDecayContext, thresholds?: DecayThresholds): ThreadDecayFlag;
|
|
2
56
|
export interface ThreadReader {
|
|
3
57
|
listOpenThreads(projectId: string): Promise<Thread[]>;
|
|
4
58
|
listOpenThreadsByBranch(branchId: string): Promise<Thread[]>;
|
package/dist/threads.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../src/threads.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../src/threads.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAErE;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,eAAe,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAGlG;AAID;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc;;;;;;CAMjB,CAAA;AAEV,MAAM,MAAM,eAAe,GAAG,OAAO,cAAc,CAAA;AAEnD,MAAM,WAAW,kBAAkB;IACjC,gHAAgH;IAChH,OAAO,EAAE,MAAM,CAAA;IACf,sEAAsE;IACtE,mBAAmB,EAAE,MAAM,CAAA;IAC3B,8EAA8E;IAC9E,kBAAkB,EAAE,MAAM,CAAA;IAC1B,6DAA6D;IAC7D,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;AAE1D;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,kBAAkB,EACvB,UAAU,GAAE,eAAgC,GAC3C,eAAe,CAkBjB;AAED,MAAM,WAAW,YAAY;IAC3B,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IACrD,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;CAC7D;AAED,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,YAAY;IAEhD,2DAA2D;IAC3D,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIpD,8CAA8C;IAC9C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAGnD"}
|
package/dist/threads.js
CHANGED
|
@@ -6,6 +6,70 @@
|
|
|
6
6
|
//
|
|
7
7
|
// Write-side (opening / closing threads) happens via CommitInput.threads
|
|
8
8
|
// inside store.createCommit(), which is the right transactional boundary.
|
|
9
|
+
/**
|
|
10
|
+
* Canonical form of a thread subject for dedupe-on-save (02 DELTA, spec §A).
|
|
11
|
+
* Trim, lowercase, collapse internal whitespace. Two subjects are duplicates
|
|
12
|
+
* iff their normalized forms are equal.
|
|
13
|
+
*/
|
|
14
|
+
export function normalizeThreadSubject(subject) {
|
|
15
|
+
return subject.trim().toLowerCase().replace(/\s+/g, ' ');
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Coerce a `ThreadOpenInput` (string sugar OR object) into `{ subject, kind }`.
|
|
19
|
+
* Plain string → `{ subject, kind: 'open' }`. Object missing `kind` → `'open'`.
|
|
20
|
+
* Keeps the public API additive: old `string[]` callers keep working unchanged.
|
|
21
|
+
*/
|
|
22
|
+
export function parseThreadOpenInput(input) {
|
|
23
|
+
if (typeof input === 'string')
|
|
24
|
+
return { subject: input, kind: 'open' };
|
|
25
|
+
return { subject: input.subject, kind: input.kind ?? 'open' };
|
|
26
|
+
}
|
|
27
|
+
// ─── Decay derivation (02 DELTA Step 3) ──────────────────────────────────────
|
|
28
|
+
/**
|
|
29
|
+
* Thresholds for thread decay.
|
|
30
|
+
*
|
|
31
|
+
* Open threads use an AND-rule across two axes — recency (wall-clock time since
|
|
32
|
+
* touch) AND distance (commits since touch). A thread is stale only when BOTH
|
|
33
|
+
* signals fire. This is a calibration fix vs. 02 DELTA's original OR-of-distance:
|
|
34
|
+
* on a long-lived feature branch (e.g. JiraExtension, 200+ commits on one
|
|
35
|
+
* unmerged branch), raw commit-distance stales every thread older than 30
|
|
36
|
+
* branch commits regardless of when it was last touched — recency must be able
|
|
37
|
+
* to KEEP a thread alive, not just condemn it.
|
|
38
|
+
*
|
|
39
|
+
* Watch notes keep their OR-of-{branch-commits, time} expiry — they are
|
|
40
|
+
* explicitly TTL-bounded by design and don't suffer the long-branch problem
|
|
41
|
+
* (their thresholds are lower and their lifetime is meant to be short).
|
|
42
|
+
*/
|
|
43
|
+
export const DECAY_DEFAULTS = {
|
|
44
|
+
staleOpenAgeMs: 14 * 24 * 60 * 60 * 1000, // 14 days untouched — recency primary signal
|
|
45
|
+
staleOpenProjectCommits: 8, // 8 project commits since touch (distance signal)
|
|
46
|
+
staleOpenBranchCommits: 30, // 30 branch commits since touch (distance signal)
|
|
47
|
+
expiredWatchBranchCommits: 15, // 15 commits, whichever first
|
|
48
|
+
expiredWatchTimeMs: 3 * 24 * 60 * 60 * 1000, // 3 days, whichever first
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Classify a thread as live, stale (open thread past its decay threshold),
|
|
52
|
+
* or expired (watch note past its TTL). Pure — no DB, no clock side-effect.
|
|
53
|
+
*/
|
|
54
|
+
export function classifyThread(thread, ctx, thresholds = DECAY_DEFAULTS) {
|
|
55
|
+
const msSince = ctx.now - ctx.touchTs;
|
|
56
|
+
if (thread.kind === 'watch') {
|
|
57
|
+
if (ctx.branchCommitsSince >= thresholds.expiredWatchBranchCommits)
|
|
58
|
+
return 'expired';
|
|
59
|
+
if (msSince >= thresholds.expiredWatchTimeMs)
|
|
60
|
+
return 'expired';
|
|
61
|
+
return 'live';
|
|
62
|
+
}
|
|
63
|
+
// 'open' or undefined (legacy) — AND-rule across recency AND distance.
|
|
64
|
+
// Distance alone never stales an open thread; recency must agree. Without this,
|
|
65
|
+
// long-lived feature branches stale every old thread regardless of touch time.
|
|
66
|
+
const ageStale = msSince >= thresholds.staleOpenAgeMs;
|
|
67
|
+
const distanceStale = ctx.branchCommitsSince >= thresholds.staleOpenBranchCommits ||
|
|
68
|
+
ctx.projectCommitsSince >= thresholds.staleOpenProjectCommits;
|
|
69
|
+
if (ageStale && distanceStale)
|
|
70
|
+
return 'stale';
|
|
71
|
+
return 'live';
|
|
72
|
+
}
|
|
9
73
|
export class ThreadManager {
|
|
10
74
|
store;
|
|
11
75
|
constructor(store) {
|
package/dist/threads.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../src/threads.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,EAAE;AACF,0EAA0E;AAC1E,2EAA2E;AAC3E,iDAAiD;AACjD,EAAE;AACF,yEAAyE;AACzE,0EAA0E;
|
|
1
|
+
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../src/threads.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,EAAE;AACF,0EAA0E;AAC1E,2EAA2E;AAC3E,iDAAiD;AACjD,EAAE;AACF,yEAAyE;AACzE,0EAA0E;AAI1E;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAsB;IACzD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IACtE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,MAAM,EAAE,CAAA;AAC/D,CAAC;AAED,gFAAgF;AAEhF;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,cAAc,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAI,6CAA6C;IACzF,uBAAuB,EAAE,CAAC,EAAkB,kDAAkD;IAC9F,sBAAsB,EAAE,EAAE,EAAkB,kDAAkD;IAC9F,yBAAyB,EAAE,EAAE,EAAe,8BAA8B;IAC1E,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAC,0BAA0B;CAC9D,CAAA;AAiBV;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,GAAuB,EACvB,aAA8B,cAAc;IAE5C,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAA;IAErC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,IAAI,GAAG,CAAC,kBAAkB,IAAI,UAAU,CAAC,yBAAyB;YAAE,OAAO,SAAS,CAAA;QACpF,IAAI,OAAO,IAAI,UAAU,CAAC,kBAAkB;YAAE,OAAO,SAAS,CAAA;QAC9D,OAAO,MAAM,CAAA;IACf,CAAC;IAED,uEAAuE;IACvE,gFAAgF;IAChF,+EAA+E;IAC/E,MAAM,QAAQ,GAAG,OAAO,IAAI,UAAU,CAAC,cAAc,CAAA;IACrD,MAAM,aAAa,GACjB,GAAG,CAAC,kBAAkB,IAAI,UAAU,CAAC,sBAAsB;QAC3D,GAAG,CAAC,mBAAmB,IAAI,UAAU,CAAC,uBAAuB,CAAA;IAC/D,IAAI,QAAQ,IAAI,aAAa;QAAE,OAAO,OAAO,CAAA;IAC7C,OAAO,MAAM,CAAA;AACf,CAAC;AAOD,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,KAAmB;QAAnB,UAAK,GAAL,KAAK,CAAc;IAAG,CAAC;IAEpD,2DAA2D;IAC3D,cAAc,CAAC,SAAiB;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;IAC9C,CAAC;IAED,8CAA8C;IAC9C,aAAa,CAAC,QAAgB;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAA;IACrD,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threads.test.d.ts","sourceRoot":"","sources":["../src/threads.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { classifyThread, DECAY_DEFAULTS, normalizeThreadSubject, parseThreadOpenInput } from './threads.js';
|
|
3
|
+
function makeThread(overrides = {}) {
|
|
4
|
+
return {
|
|
5
|
+
id: 't1',
|
|
6
|
+
projectId: 'p1',
|
|
7
|
+
branchId: 'b1',
|
|
8
|
+
description: 'sub',
|
|
9
|
+
status: 'open',
|
|
10
|
+
kind: 'open',
|
|
11
|
+
openedInCommit: 'c1',
|
|
12
|
+
createdAt: new Date(0),
|
|
13
|
+
...overrides,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function makeCtx(overrides = {}) {
|
|
17
|
+
return {
|
|
18
|
+
touchTs: 0,
|
|
19
|
+
projectCommitsSince: 0,
|
|
20
|
+
branchCommitsSince: 0,
|
|
21
|
+
now: 0,
|
|
22
|
+
...overrides,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
describe('normalizeThreadSubject', () => {
|
|
26
|
+
it('trims surrounding whitespace', () => {
|
|
27
|
+
expect(normalizeThreadSubject(' hello ')).toBe('hello');
|
|
28
|
+
});
|
|
29
|
+
it('lowercases', () => {
|
|
30
|
+
expect(normalizeThreadSubject('Foo BAR Baz')).toBe('foo bar baz');
|
|
31
|
+
});
|
|
32
|
+
it('collapses internal whitespace runs', () => {
|
|
33
|
+
expect(normalizeThreadSubject('foo bar\tbaz\n qux')).toBe('foo bar baz qux');
|
|
34
|
+
});
|
|
35
|
+
it('returns equal forms for casing + spacing variants', () => {
|
|
36
|
+
const a = normalizeThreadSubject(' Write Plan B Extension');
|
|
37
|
+
const b = normalizeThreadSubject('write plan b extension');
|
|
38
|
+
const c = normalizeThreadSubject('Write Plan B Extension ');
|
|
39
|
+
expect(a).toBe(b);
|
|
40
|
+
expect(b).toBe(c);
|
|
41
|
+
});
|
|
42
|
+
it('treats distinct subjects as distinct', () => {
|
|
43
|
+
expect(normalizeThreadSubject('foo')).not.toBe(normalizeThreadSubject('bar'));
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
describe('parseThreadOpenInput', () => {
|
|
47
|
+
it('coerces a plain string to {subject, kind: "open"}', () => {
|
|
48
|
+
expect(parseThreadOpenInput('hello')).toEqual({ subject: 'hello', kind: 'open' });
|
|
49
|
+
});
|
|
50
|
+
it('passes through an object with kind set', () => {
|
|
51
|
+
expect(parseThreadOpenInput({ subject: 'note', kind: 'watch' })).toEqual({ subject: 'note', kind: 'watch' });
|
|
52
|
+
});
|
|
53
|
+
it('defaults kind to "open" when an object omits it', () => {
|
|
54
|
+
expect(parseThreadOpenInput({ subject: 'note' })).toEqual({ subject: 'note', kind: 'open' });
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
describe('classifyThread (open kind) — AND-rule: stale requires BOTH age AND distance', () => {
|
|
58
|
+
const oldEnough = DECAY_DEFAULTS.staleOpenAgeMs + 1; // > age threshold = age-stale
|
|
59
|
+
const youngEnough = DECAY_DEFAULTS.staleOpenAgeMs - 1; // < age threshold = age-fresh
|
|
60
|
+
it('is live when both commit counts are below thresholds (regardless of age)', () => {
|
|
61
|
+
const t = makeThread({ kind: 'open' });
|
|
62
|
+
expect(classifyThread(t, makeCtx({
|
|
63
|
+
projectCommitsSince: 7,
|
|
64
|
+
branchCommitsSince: 29,
|
|
65
|
+
touchTs: 0,
|
|
66
|
+
now: oldEnough,
|
|
67
|
+
}))).toBe('live');
|
|
68
|
+
});
|
|
69
|
+
it('is live when distance is past threshold but recency is fresh — the JiraExtension long-branch case', () => {
|
|
70
|
+
// 100 branch commits since touch, but touch was 1 hour ago → recency keeps it alive.
|
|
71
|
+
const t = makeThread({ kind: 'open' });
|
|
72
|
+
expect(classifyThread(t, makeCtx({
|
|
73
|
+
branchCommitsSince: 100,
|
|
74
|
+
projectCommitsSince: 100,
|
|
75
|
+
touchTs: 0,
|
|
76
|
+
now: 60 * 60 * 1000, // 1h since touch
|
|
77
|
+
}))).toBe('live');
|
|
78
|
+
});
|
|
79
|
+
it('is live when age is past threshold but distance is below — inactive project, untouched thread', () => {
|
|
80
|
+
// 30 days untouched, but 0 commits-since-touch on either dimension → distance signal absent.
|
|
81
|
+
const t = makeThread({ kind: 'open' });
|
|
82
|
+
expect(classifyThread(t, makeCtx({
|
|
83
|
+
projectCommitsSince: 0,
|
|
84
|
+
branchCommitsSince: 0,
|
|
85
|
+
touchTs: 0,
|
|
86
|
+
now: oldEnough,
|
|
87
|
+
}))).toBe('live');
|
|
88
|
+
});
|
|
89
|
+
it('is stale when BOTH age AND branch-distance are past thresholds', () => {
|
|
90
|
+
const t = makeThread({ kind: 'open' });
|
|
91
|
+
expect(classifyThread(t, makeCtx({
|
|
92
|
+
branchCommitsSince: DECAY_DEFAULTS.staleOpenBranchCommits,
|
|
93
|
+
touchTs: 0,
|
|
94
|
+
now: oldEnough,
|
|
95
|
+
}))).toBe('stale');
|
|
96
|
+
});
|
|
97
|
+
it('is stale when BOTH age AND project-distance are past thresholds', () => {
|
|
98
|
+
const t = makeThread({ kind: 'open' });
|
|
99
|
+
expect(classifyThread(t, makeCtx({
|
|
100
|
+
projectCommitsSince: DECAY_DEFAULTS.staleOpenProjectCommits,
|
|
101
|
+
touchTs: 0,
|
|
102
|
+
now: oldEnough,
|
|
103
|
+
}))).toBe('stale');
|
|
104
|
+
});
|
|
105
|
+
it('is live when age is just under the threshold even with strong distance signal', () => {
|
|
106
|
+
const t = makeThread({ kind: 'open' });
|
|
107
|
+
expect(classifyThread(t, makeCtx({
|
|
108
|
+
branchCommitsSince: DECAY_DEFAULTS.staleOpenBranchCommits + 50,
|
|
109
|
+
touchTs: 0,
|
|
110
|
+
now: youngEnough,
|
|
111
|
+
}))).toBe('live');
|
|
112
|
+
});
|
|
113
|
+
it('treats legacy threads with undefined kind as open (AND-rule still applies)', () => {
|
|
114
|
+
const t = makeThread({ kind: undefined });
|
|
115
|
+
// distance only → live; both signals needed
|
|
116
|
+
expect(classifyThread(t, makeCtx({ branchCommitsSince: 100, touchTs: 0, now: 0 }))).toBe('live');
|
|
117
|
+
// age + distance → stale
|
|
118
|
+
expect(classifyThread(t, makeCtx({ branchCommitsSince: 100, touchTs: 0, now: oldEnough }))).toBe('stale');
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
describe('classifyThread (watch kind)', () => {
|
|
122
|
+
it('is live when neither commit count nor time exceeds the TTL', () => {
|
|
123
|
+
const t = makeThread({ kind: 'watch' });
|
|
124
|
+
expect(classifyThread(t, makeCtx({ branchCommitsSince: 14, now: 0, touchTs: 0 }))).toBe('live');
|
|
125
|
+
});
|
|
126
|
+
it('expires once branch commits since touch hit the watch threshold', () => {
|
|
127
|
+
const t = makeThread({ kind: 'watch' });
|
|
128
|
+
expect(classifyThread(t, makeCtx({ branchCommitsSince: DECAY_DEFAULTS.expiredWatchBranchCommits }))).toBe('expired');
|
|
129
|
+
});
|
|
130
|
+
it('expires once time since touch exceeds the watch TTL', () => {
|
|
131
|
+
const t = makeThread({ kind: 'watch' });
|
|
132
|
+
const ctx = makeCtx({ touchTs: 0, now: DECAY_DEFAULTS.expiredWatchTimeMs });
|
|
133
|
+
expect(classifyThread(t, ctx)).toBe('expired');
|
|
134
|
+
});
|
|
135
|
+
it('does NOT use the stale-open thresholds for watch', () => {
|
|
136
|
+
const t = makeThread({ kind: 'watch' });
|
|
137
|
+
// 30 branch commits would stale an open thread, but watch threshold is 15 — already expired
|
|
138
|
+
// so test the other direction: 14 branch commits + 0 time = still live for watch.
|
|
139
|
+
expect(classifyThread(t, makeCtx({ branchCommitsSince: 14 }))).toBe('live');
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
//# sourceMappingURL=threads.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threads.test.js","sourceRoot":"","sources":["../src/threads.test.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -43,18 +43,71 @@ export interface Commit {
|
|
|
43
43
|
gitCommitSha?: string;
|
|
44
44
|
createdAt: Date;
|
|
45
45
|
}
|
|
46
|
+
export type ThreadKind = 'open' | 'watch';
|
|
46
47
|
export interface Thread {
|
|
47
48
|
id: string;
|
|
48
49
|
projectId: string;
|
|
49
50
|
branchId: string;
|
|
50
51
|
description: string;
|
|
51
52
|
status: 'open' | 'closed';
|
|
53
|
+
kind?: ThreadKind;
|
|
52
54
|
workflowType?: WorkflowType;
|
|
53
55
|
openedInCommit: string;
|
|
56
|
+
lastTouchedCommit?: string;
|
|
54
57
|
closedInCommit?: string;
|
|
55
58
|
closedNote?: string;
|
|
56
59
|
createdAt: Date;
|
|
57
60
|
updatedAt?: Date;
|
|
61
|
+
stale?: boolean;
|
|
62
|
+
expired?: boolean;
|
|
63
|
+
}
|
|
64
|
+
export type ArchivedReason = 'stale-age' | 'stale-distance' | 'watch-expired' | 'manual' | 'bulk-cleanup';
|
|
65
|
+
export interface ArchivedThread extends Thread {
|
|
66
|
+
archivedAt: Date;
|
|
67
|
+
archivedReason: ArchivedReason;
|
|
68
|
+
}
|
|
69
|
+
export type PlanNodeLevel = 'plan' | 'step' | 'task';
|
|
70
|
+
export type PlanNodeStatus = 'pending' | 'in_progress' | 'done';
|
|
71
|
+
export interface PlanNode {
|
|
72
|
+
id: string;
|
|
73
|
+
projectId: string;
|
|
74
|
+
parentId?: string;
|
|
75
|
+
level: PlanNodeLevel;
|
|
76
|
+
title: string;
|
|
77
|
+
status: PlanNodeStatus;
|
|
78
|
+
position: number;
|
|
79
|
+
gitCommitSha?: string;
|
|
80
|
+
createdAt: Date;
|
|
81
|
+
completedAt?: Date;
|
|
82
|
+
progress?: {
|
|
83
|
+
done: number;
|
|
84
|
+
total: number;
|
|
85
|
+
};
|
|
86
|
+
children?: PlanNode[];
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Nested input for creating a plan tree in one call.
|
|
90
|
+
* Depth determines level: input root = 'plan', children = 'step', grandchildren = 'task'.
|
|
91
|
+
* Deeper than 2 throws.
|
|
92
|
+
*/
|
|
93
|
+
export interface PlanNodeInput {
|
|
94
|
+
title: string;
|
|
95
|
+
status?: PlanNodeStatus;
|
|
96
|
+
children?: PlanNodeInput[];
|
|
97
|
+
}
|
|
98
|
+
/** Update payload for a single existing node, identified by 6-char handle. */
|
|
99
|
+
export interface PlanNodeUpdate {
|
|
100
|
+
handle: string;
|
|
101
|
+
status?: PlanNodeStatus;
|
|
102
|
+
title?: string;
|
|
103
|
+
}
|
|
104
|
+
export interface TraceEntry {
|
|
105
|
+
id: string;
|
|
106
|
+
projectId: string;
|
|
107
|
+
branchId: string;
|
|
108
|
+
note: string;
|
|
109
|
+
gitCommitSha?: string;
|
|
110
|
+
createdAt: Date;
|
|
58
111
|
}
|
|
59
112
|
export interface Agent {
|
|
60
113
|
id: string;
|
|
@@ -111,13 +164,24 @@ export interface CommitInput {
|
|
|
111
164
|
commitType: CommitType;
|
|
112
165
|
gitCommitSha?: string;
|
|
113
166
|
threads?: {
|
|
114
|
-
open?:
|
|
167
|
+
open?: ThreadOpenInput[];
|
|
115
168
|
close?: Array<{
|
|
116
169
|
id: string;
|
|
117
170
|
note: string;
|
|
118
171
|
}>;
|
|
172
|
+
closes?: string[];
|
|
119
173
|
};
|
|
120
|
-
|
|
174
|
+
completesTasks?: string[];
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Accepted shape for `CommitInput.threads.open`. Plain string is sugar for
|
|
178
|
+
* `{ subject, kind: 'open' }` — additive, not breaking. Set `kind: 'watch'`
|
|
179
|
+
* to open a TTL-expiring reminder instead of a committed open thread.
|
|
180
|
+
*/
|
|
181
|
+
export type ThreadOpenInput = string | {
|
|
182
|
+
subject: string;
|
|
183
|
+
kind?: ThreadKind;
|
|
184
|
+
};
|
|
121
185
|
export interface AgentInput {
|
|
122
186
|
id: string;
|
|
123
187
|
projectId: string;
|
|
@@ -134,6 +198,11 @@ export interface ClaimInput {
|
|
|
134
198
|
ttl?: number;
|
|
135
199
|
threadId?: string;
|
|
136
200
|
}
|
|
201
|
+
export interface Roadmap {
|
|
202
|
+
intent: string;
|
|
203
|
+
nextTask: string;
|
|
204
|
+
decisionRationale: string;
|
|
205
|
+
}
|
|
137
206
|
export interface SessionSnapshot {
|
|
138
207
|
projectSummary: string;
|
|
139
208
|
branchName: string;
|
|
@@ -142,6 +211,12 @@ export interface SessionSnapshot {
|
|
|
142
211
|
openThreads: Thread[];
|
|
143
212
|
activeClaims: Claim[];
|
|
144
213
|
isInitiated: boolean;
|
|
214
|
+
roadmap?: Roadmap;
|
|
215
|
+
staleThreadCount?: number;
|
|
216
|
+
expiredWatchCount?: number;
|
|
217
|
+
headSha?: string;
|
|
218
|
+
commitCount?: number;
|
|
219
|
+
planTree?: PlanNode[];
|
|
145
220
|
}
|
|
146
221
|
export interface ContextDelta {
|
|
147
222
|
newCommits: Commit[];
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,SAAS,GACjB,cAAc,GACd,KAAK,GACL,MAAM,GACN,QAAQ,GACR,YAAY,GACZ,IAAI,GACJ,MAAM,CAAA;AAEV,MAAM,MAAM,YAAY,GACpB,aAAa,GACb,YAAY,GACZ,IAAI,GACJ,YAAY,GACZ,QAAQ,CAAA;AAEZ,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,MAAM,GACN,OAAO,GACP,aAAa,CAAA;AAEjB,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,QAAQ,GACR,WAAW,CAAA;AAEf,MAAM,MAAM,WAAW,GACnB,UAAU,GACV,QAAQ,GACR,UAAU,CAAA;AAEd,MAAM,MAAM,cAAc,GACtB,WAAW,GACX,MAAM,GACN,MAAM,CAAA;AAEV,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,KAAK,CAAA;AAMT,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,YAAY,CAAA;IACpB,SAAS,EAAE,IAAI,CAAA;IACf,QAAQ,CAAC,EAAE,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,YAAY,CAAA;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,UAAU,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAA;IACzB,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,CAAC,EAAE,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contextgit/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
"types": "./dist/index.d.ts"
|
|
11
11
|
}
|
|
12
12
|
},
|
|
13
|
-
"files": [
|
|
13
|
+
"files": [
|
|
14
|
+
"dist"
|
|
15
|
+
],
|
|
14
16
|
"scripts": {
|
|
15
17
|
"build": "tsc",
|
|
16
18
|
"test": "vitest run",
|