@contextgit/core 0.1.10 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,16 @@
1
+ # @contextgit/core
2
+
3
+ Core types, snapshot formatter, context engine, embedding service, and decay/classification logic for [ContextGit](https://www.npmjs.com/package/contextgit).
4
+
5
+ This is an internal workspace package. If you want to use ContextGit, install the main package:
6
+
7
+ ```bash
8
+ npm install -g contextgit
9
+ contextgit init
10
+ ```
11
+
12
+ See the main package — [`contextgit`](https://www.npmjs.com/package/contextgit) — or the project on GitHub: [MendeTr/contextgit](https://github.com/MendeTr/contextgit).
13
+
14
+ ## License
15
+
16
+ MIT
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;
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
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) {
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAS,eAAe,EAAE,cAAc,EAAU,MAAM,YAAY,CAAA;AAWhF,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,QAAQ,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,MAAM;CAiF/D"}
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
- const { projectSummary, branchName, branchSummary, recentCommits, openThreads, activeClaims } = snapshot;
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
- return [
23
- `## Project State`,
24
- projectSummary || '(no summary yet)',
25
- ``,
26
- `## Open Threads`,
27
- threads || '(none)',
28
- ``,
29
- `## Recent Activity`,
30
- commits || '(no commits yet)',
31
- ``,
32
- `## Active Claims`,
33
- activeClaims.length
34
- ? activeClaims
35
- .map((cl) => `- [CLAIMED by ${cl.agentId}] ${cl.task} (claimed ${cl.claimedAt.toISOString()})`)
36
- .join('\n')
37
- : '(none)',
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) => `${claimLabel(t, activeClaims)} ${t.description} (opened ${t.createdAt.toLocaleDateString()}, ${t.workflowType ?? 'interactive'})`)
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
- return [
48
- `=== PROJECT STATE ===`,
49
- projectSummary || '(no summary yet)',
50
- ``,
51
- `=== CURRENT BRANCH: ${branchName} ===`,
52
- branchSummary || '(no branch summary yet)',
53
- ``,
54
- `=== LAST 3 COMMITS ===`,
55
- commits || '(none)',
56
- ``,
57
- `=== OPEN THREADS ===`,
58
- threads || '(none)',
59
- ``,
60
- `=== ACTIVE CLAIMS ===`,
61
- activeClaims.length
62
- ? activeClaims
63
- .map((cl) => `- [CLAIMED by ${cl.agentId}] ${cl.task} (claimed ${cl.claimedAt.toISOString()})`)
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
@@ -1 +1 @@
1
- {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../src/snapshot.ts"],"names":[],"mappings":"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"}
@@ -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
- it('agents-md contains ## Project State before ## Open Threads', () => {
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
- openThreads: [
143
- {
144
- id: 't1',
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
- expect(out.indexOf('## Project State')).toBeLessThan(out.indexOf('## Open Threads'));
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[]>;
@@ -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;AAExC,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"}
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) {
@@ -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;AAS1E,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"}
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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=threads.test.d.ts.map
@@ -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?: string[];
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[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
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.1.10",
3
+ "version": "0.2.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",