crewly 1.20.358 → 1.20.359

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/backend/backend/src/constants.d.ts +59 -0
  2. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  3. package/dist/backend/backend/src/constants.js +59 -0
  4. package/dist/backend/backend/src/constants.js.map +1 -1
  5. package/dist/backend/backend/src/index.d.ts +21 -0
  6. package/dist/backend/backend/src/index.d.ts.map +1 -1
  7. package/dist/backend/backend/src/index.js +162 -11
  8. package/dist/backend/backend/src/index.js.map +1 -1
  9. package/dist/backend/backend/src/services/memory/agent-memory-refresh.service.d.ts.map +1 -1
  10. package/dist/backend/backend/src/services/memory/agent-memory-refresh.service.js +5 -0
  11. package/dist/backend/backend/src/services/memory/agent-memory-refresh.service.js.map +1 -1
  12. package/dist/backend/backend/src/services/memory/startup-briefing.service.d.ts +10 -0
  13. package/dist/backend/backend/src/services/memory/startup-briefing.service.d.ts.map +1 -1
  14. package/dist/backend/backend/src/services/memory/startup-briefing.service.js +65 -22
  15. package/dist/backend/backend/src/services/memory/startup-briefing.service.js.map +1 -1
  16. package/dist/backend/backend/src/services/session/session-binding.d.ts +25 -2
  17. package/dist/backend/backend/src/services/session/session-binding.d.ts.map +1 -1
  18. package/dist/backend/backend/src/services/session/session-binding.js +32 -4
  19. package/dist/backend/backend/src/services/session/session-binding.js.map +1 -1
  20. package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts +3 -1
  21. package/dist/backend/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -1
  22. package/dist/backend/backend/src/services/wiki/wiki-ingest.service.js.map +1 -1
  23. package/dist/backend/backend/src/services/wiki/wiki-log-compile.service.d.ts +27 -2
  24. package/dist/backend/backend/src/services/wiki/wiki-log-compile.service.d.ts.map +1 -1
  25. package/dist/backend/backend/src/services/wiki/wiki-log-compile.service.js +105 -8
  26. package/dist/backend/backend/src/services/wiki/wiki-log-compile.service.js.map +1 -1
  27. package/dist/backend/backend/src/services/wiki/work-record-transcript.d.ts +64 -0
  28. package/dist/backend/backend/src/services/wiki/work-record-transcript.d.ts.map +1 -0
  29. package/dist/backend/backend/src/services/wiki/work-record-transcript.js +194 -0
  30. package/dist/backend/backend/src/services/wiki/work-record-transcript.js.map +1 -0
  31. package/dist/backend/backend/src/services/wiki/work-record.d.ts +239 -0
  32. package/dist/backend/backend/src/services/wiki/work-record.d.ts.map +1 -0
  33. package/dist/backend/backend/src/services/wiki/work-record.js +631 -0
  34. package/dist/backend/backend/src/services/wiki/work-record.js.map +1 -0
  35. package/dist/backend/backend/src/services/wiki/work-record.service.d.ts +209 -0
  36. package/dist/backend/backend/src/services/wiki/work-record.service.d.ts.map +1 -0
  37. package/dist/backend/backend/src/services/wiki/work-record.service.js +514 -0
  38. package/dist/backend/backend/src/services/wiki/work-record.service.js.map +1 -0
  39. package/dist/backend/build-info.json +2 -2
  40. package/dist/cli/backend/src/constants.d.ts +59 -0
  41. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  42. package/dist/cli/backend/src/constants.js +59 -0
  43. package/dist/cli/backend/src/constants.js.map +1 -1
  44. package/dist/cli/backend/src/services/memory/startup-briefing.service.d.ts +10 -0
  45. package/dist/cli/backend/src/services/memory/startup-briefing.service.d.ts.map +1 -1
  46. package/dist/cli/backend/src/services/memory/startup-briefing.service.js +65 -22
  47. package/dist/cli/backend/src/services/memory/startup-briefing.service.js.map +1 -1
  48. package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts +3 -1
  49. package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -1
  50. package/dist/cli/backend/src/services/wiki/wiki-ingest.service.js.map +1 -1
  51. package/dist/cli/backend/src/services/wiki/work-record-transcript.d.ts +64 -0
  52. package/dist/cli/backend/src/services/wiki/work-record-transcript.d.ts.map +1 -0
  53. package/dist/cli/backend/src/services/wiki/work-record-transcript.js +194 -0
  54. package/dist/cli/backend/src/services/wiki/work-record-transcript.js.map +1 -0
  55. package/dist/cli/backend/src/services/wiki/work-record.d.ts +239 -0
  56. package/dist/cli/backend/src/services/wiki/work-record.d.ts.map +1 -0
  57. package/dist/cli/backend/src/services/wiki/work-record.js +631 -0
  58. package/dist/cli/backend/src/services/wiki/work-record.js.map +1 -0
  59. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"wiki-log-compile.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/wiki/wiki-log-compile.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAOH,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAkB7D,yDAAyD;AACzD,MAAM,WAAW,qBAAqB;IACpC,kDAAkD;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qBAAqB;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,sCAAsC;AACtC,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,sFAAsF;IACtF,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;IACzD,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAS/C;AAED;;;GAGG;AACH,qBAAa,qBAAqB;IAIpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAsC;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAEZ,MAAM,GAAE,iBAAmD;IAIxF,MAAM,CAAC,WAAW,IAAI,qBAAqB;IAK3C,uBAAuB;IACvB,MAAM,CAAC,gBAAgB,IAAI,IAAI;IAI/B;;;;;;;;;;;;OAYG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA6DjG;;;;;;OAMG;IACG,UAAU,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAc9G;;;;;;OAMG;IACH,OAAO,CAAC,KAAK;IAeb;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAYtB;;;;;;;;OAQG;IACH,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,SAAS;YAIH,SAAS;YAQT,UAAU;CAGzB"}
1
+ {"version":3,"file":"wiki-log-compile.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/wiki/wiki-log-compile.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAOH,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAyB7D,yDAAyD;AACzD,MAAM,WAAW,qBAAqB;IACpC,kDAAkD;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qBAAqB;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,sCAAsC;AACtC,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,sFAAsF;IACtF,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,QAAQ,GAAG,iBAAiB,GAAG,gBAAgB,CAAC;IACzD,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAS/C;AAED;;;GAGG;AACH,qBAAa,qBAAqB;IAIpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAsC;IAC7D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAEZ,MAAM,GAAE,iBAAmD;IAIxF,MAAM,CAAC,WAAW,IAAI,qBAAqB;IAK3C,uBAAuB;IACvB,MAAM,CAAC,gBAAgB,IAAI,IAAI;IAI/B;;;;;;;;;;;;OAYG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAiEjG;;;;;;OAMG;IACG,UAAU,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAc9G;;;;;;OAMG;IACH,OAAO,CAAC,KAAK;IAeb;;;;;OAKG;IACH,OAAO,CAAC,cAAc;IAYtB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAWpB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,UAAU;IAiBlB;;;;;;;OAOG;IACH,OAAO,CAAC,oBAAoB;IA+C5B,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,SAAS;YAIH,SAAS;YAQT,UAAU;CAGzB"}
@@ -13,6 +13,9 @@
13
13
  * not compile them again. No LLM; an agent can still rewrite a digest into
14
14
  * a proper topic page.
15
15
  *
16
+ * Work records (#1349, `work_record` entries) get their own sections ahead
17
+ * of the learning groups: "Work done", "Errors and fixes", "Collaboration".
18
+ *
16
19
  * @module services/wiki/wiki-log-compile.service
17
20
  */
18
21
  import * as path from 'path';
@@ -22,6 +25,7 @@ import { WIKI_LOG_CONSTANTS } from '../../constants.js';
22
25
  import { atomicWriteJson, safeReadJson } from '../../utils/file-io.utils.js';
23
26
  import { WikiIngestService } from './wiki-ingest.service.js';
24
27
  import { logBodyKey, logEntryCategory, logEntryTopic, parseLogEntries, recentContentEntries, } from './wiki-log-entries.js';
28
+ import { isWorkRecordEntry, parseWorkRecordBody } from './work-record.js';
25
29
  /**
26
30
  * ISO-8601 week label (`YYYY-Www`) of a date.
27
31
  *
@@ -96,14 +100,18 @@ export class WikiLogCompileService {
96
100
  return { ...base, reason: 'too_few_entries' };
97
101
  const week = isoWeekLabel(now);
98
102
  const pagePath = `${WIKI_LOG_CONSTANTS.COMPILE_DIR}/${week}.md`;
99
- const groups = this.group(candidates);
100
- const body = this.renderBody(groups, candidates, now);
103
+ const { records, others } = this.splitRecords(candidates);
104
+ const groups = this.group(others);
105
+ const body = this.renderBody(groups, candidates, now, records);
101
106
  const result = { ...base, compiled: true, entriesCompiled: candidates.length, pagePath, groups: groups.length };
102
107
  if (dryRun) {
103
- this.logger.info('WikiLogCompile dry run — would write digest', { vaultPath, pagePath, entries: candidates.length, groups: groups.length });
108
+ this.logger.info('WikiLogCompile dry run — would write digest', { vaultPath, pagePath, entries: candidates.length, groups: groups.length, records: records.length });
104
109
  return result;
105
110
  }
106
- const counts = this.categoryCounts(candidates);
111
+ const counts = this.categoryCounts(others);
112
+ const summaryLead = records.length > 0
113
+ ? `${records.length} work record${records.length === 1 ? '' : 's'}${others.length > 0 ? ` and ${others.length} learnings (${counts})` : ''} from the vault log`
114
+ : `${candidates.length} learnings from the vault log (${counts})`;
107
115
  const outcome = await this.ingest.ingest({
108
116
  vaultPath,
109
117
  sourceType: 'record_learning',
@@ -112,7 +120,7 @@ export class WikiLogCompileService {
112
120
  callerSession: 'system:wiki-log-compile',
113
121
  targetRelativePath: pagePath,
114
122
  title: `Digest ${week}`,
115
- summary: `${candidates.length} learnings from the vault log (${counts}) compiled ${new Date(now).toISOString().slice(0, 10)} — read before working on these topics; promote what still matters to its own page.`,
123
+ summary: `${summaryLead} compiled ${new Date(now).toISOString().slice(0, 10)} — read before working on these topics; promote what still matters to its own page.`,
116
124
  keepBecause: 'reusable_method',
117
125
  tags: ['digest', week],
118
126
  });
@@ -187,18 +195,43 @@ export class WikiLogCompileService {
187
195
  .join(', ');
188
196
  }
189
197
  /**
190
- * Markdown body of one compile run: a dated heading, then one `###` per
198
+ * Separate work records (#1349) from learnings. A record whose body does
199
+ * not parse is kept as a learning so nothing is dropped.
200
+ *
201
+ * @param entries - Candidate entries
202
+ * @returns Records with parsed fields, and the rest
203
+ */
204
+ splitRecords(entries) {
205
+ const records = [];
206
+ const others = [];
207
+ for (const e of entries) {
208
+ const parsed = isWorkRecordEntry(e) ? parseWorkRecordBody(e.body) : null;
209
+ if (parsed)
210
+ records.push({ entry: e, parsed });
211
+ else
212
+ others.push(e);
213
+ }
214
+ return { records, others };
215
+ }
216
+ /**
217
+ * Markdown body of one compile run: a dated heading; when the run holds
218
+ * work records, `### Work done`, `### Errors and fixes` and
219
+ * `### Collaboration` (the digest renders task titles, never ticket ids —
220
+ * those stay on each record's `meta:` line); then one `###` per learning
191
221
  * group with one bullet per entry (author, date, body clipped).
192
222
  *
193
- * @param groups - Grouped entries
223
+ * @param groups - Grouped learning entries
194
224
  * @param all - All entries in the run (for the date range)
195
225
  * @param now - Epoch ms of the run
226
+ * @param records - Work records in the run
196
227
  * @returns Markdown
197
228
  */
198
- renderBody(groups, all, now) {
229
+ renderBody(groups, all, now, records = []) {
199
230
  const first = all[0]?.timestamp.slice(0, 10) ?? '';
200
231
  const last = all[all.length - 1]?.timestamp.slice(0, 10) ?? '';
201
232
  const lines = [`## Compiled ${new Date(now).toISOString().slice(0, 10)} — ${all.length} entries from ${first} to ${last}`, ''];
233
+ if (records.length > 0)
234
+ lines.push(...this.renderRecordSections(records));
202
235
  for (const g of groups) {
203
236
  lines.push(`### ${g.label} (${g.members.length})`, '');
204
237
  for (const e of g.members) {
@@ -210,6 +243,70 @@ export class WikiLogCompileService {
210
243
  }
211
244
  return lines.join('\n').trim();
212
245
  }
246
+ /**
247
+ * The three record sections. "Work done" lists every record (asked by →
248
+ * done by → outputs → outcome); "Errors and fixes" the records that met
249
+ * errors; "Collaboration" counts, per pair, delegations, asks and reviews.
250
+ *
251
+ * @param records - Records of the run, oldest first
252
+ * @returns Markdown lines (each section followed by a blank line)
253
+ */
254
+ renderRecordSections(records) {
255
+ const lines = [`### Work done (${records.length})`, ''];
256
+ for (const { entry, parsed } of records) {
257
+ const parts = [`asked by ${parsed.askedBy || 'unknown'}`, `done by ${parsed.doneBy || 'unknown'}`];
258
+ if (parsed.did)
259
+ parts.push(this.clipText(parsed.did, WIKI_LOG_CONSTANTS.COMPILE_ENTRY_MAX_CHARS / 2));
260
+ if (parsed.outputs.length)
261
+ parts.push(`outputs: ${parsed.outputs.slice(0, 3).join('; ')}`);
262
+ lines.push(`- ${entry.timestamp.slice(0, 10)} · **${parsed.title}** — ${parts.join(' → ')} → ${parsed.outcome || 'unknown'}`);
263
+ }
264
+ lines.push('');
265
+ const withErrors = records.filter((r) => r.parsed.errors.length > 0);
266
+ if (withErrors.length > 0) {
267
+ lines.push(`### Errors and fixes (${withErrors.length})`, '');
268
+ for (const { entry, parsed } of withErrors) {
269
+ lines.push(`- ${entry.timestamp.slice(0, 10)} · ${parsed.title} (${parsed.doneBy || 'unknown'}): ${this.clipText(parsed.errors.join('; '), WIKI_LOG_CONSTANTS.COMPILE_ENTRY_MAX_CHARS)}`);
270
+ }
271
+ lines.push('');
272
+ }
273
+ const pairs = new Map();
274
+ const count = (from, to, how) => {
275
+ if (!from || !to || from === to)
276
+ return;
277
+ const key = `${from} → ${to}`;
278
+ const byHow = pairs.get(key) ?? new Map();
279
+ byHow.set(how, (byHow.get(how) ?? 0) + 1);
280
+ pairs.set(key, byHow);
281
+ };
282
+ for (const { parsed } of records) {
283
+ const asker = parsed.askedBy.replace(/\s*\((?:team lead|orchestrator)\)/, '').replace(/\s+for the owner.*$/, '').replace(/\s*\([^)]*\)$/, '').trim();
284
+ if (asker && !asker.startsWith('schedule') && asker !== 'Crewly (system)')
285
+ count(asker, parsed.doneBy, 'delegation');
286
+ for (const h of parsed.helpers) {
287
+ if (h.how === 'delegated')
288
+ count(parsed.doneBy, h.name, 'delegation');
289
+ else if (h.how === 'asked')
290
+ count(parsed.doneBy, h.name, h.rest.includes('answered') ? 'ask answered' : 'ask unanswered');
291
+ else
292
+ count(h.name, parsed.doneBy, 'review');
293
+ }
294
+ }
295
+ if (pairs.size > 0) {
296
+ lines.push(`### Collaboration (${pairs.size} pair${pairs.size === 1 ? '' : 's'})`, '');
297
+ const rows = [...pairs.entries()]
298
+ .map(([pair, byHow]) => ({ pair, total: [...byHow.values()].reduce((a, b) => a + b, 0), detail: [...byHow.entries()].sort((a, b) => b[1] - a[1]).map(([how, n]) => `${n} ${how}${n === 1 || how.endsWith('answered') ? '' : 's'}`).join(', ') }))
299
+ .sort((a, b) => b.total - a.total || a.pair.localeCompare(b.pair));
300
+ for (const r of rows)
301
+ lines.push(`- ${r.pair}: ${r.detail}`);
302
+ lines.push('');
303
+ }
304
+ return lines;
305
+ }
306
+ clipText(text, max) {
307
+ const flat = text.replace(/\s+/g, ' ').trim();
308
+ return flat.length > max ? `${flat.slice(0, max - 1)}…` : flat;
309
+ }
213
310
  statePath(vaultPath) {
214
311
  return path.join(vaultPath, WIKI_LOG_CONSTANTS.COMPILE_STATE_FILE);
215
312
  }
@@ -1 +1 @@
1
- {"version":3,"file":"wiki-log-compile.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/wiki/wiki-log-compile.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wiki-log-compile.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/wiki/wiki-log-compile.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Transcript facts for a work record (#1349).
3
+ *
4
+ * Reads a bounded tail of the doer's Claude Code transcript and keeps only
5
+ * what happened inside the task window: failed tool calls (with whether the
6
+ * same call later succeeded), files written, PR / commit references and
7
+ * messages posted. Only the main chain counts (`isSidechain` entries belong
8
+ * to subagents). Tool results are read for their error flag and the first
9
+ * line of an exit code, never copied.
10
+ *
11
+ * Codex rollouts are not read (their shape differs; the trace covers them).
12
+ *
13
+ * @module services/wiki/work-record-transcript
14
+ */
15
+ import type { WorkRecordError } from './work-record.js';
16
+ /** What the transcript slice says about a task. */
17
+ export interface TranscriptWindowFacts {
18
+ errors: WorkRecordError[];
19
+ filesWritten: string[];
20
+ urls: string[];
21
+ commits: string[];
22
+ /** Messages the agent posted through a reply / post skill. */
23
+ posts: number;
24
+ /** Tool calls seen inside the window. */
25
+ toolCalls: number;
26
+ }
27
+ /** Task window. */
28
+ export interface TranscriptWindow {
29
+ fromMs: number;
30
+ toMs: number;
31
+ }
32
+ /**
33
+ * Read the end of a file as whole lines (the first partial line is dropped).
34
+ *
35
+ * @param file - Path
36
+ * @param maxBytes - Bytes from the end
37
+ * @returns Text, '' when the file cannot be read
38
+ */
39
+ export declare function readTranscriptTail(file: string, maxBytes?: number): Promise<string>;
40
+ /**
41
+ * Facts from whole Claude transcript lines inside a window.
42
+ *
43
+ * @param text - JSONL text (whole lines)
44
+ * @param window - Task window (epoch ms); entries outside it are ignored
45
+ * @param roots - Project roots to make file paths relative to
46
+ * @returns Facts (empty when nothing fell in the window)
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const facts = parseClaudeTranscriptWindow(await readTranscriptTail(file), { fromMs, toMs }, [projectPath]);
51
+ * facts.errors; // [{ what: 'Bash `npm test` exit 1', resolved: 'fixed' }]
52
+ * ```
53
+ */
54
+ export declare function parseClaudeTranscriptWindow(text: string, window: TranscriptWindow, roots?: readonly string[]): TranscriptWindowFacts;
55
+ /**
56
+ * Whether a transcript is worth reading for an item that ended at `endedMs`:
57
+ * the tail only holds recent turns.
58
+ *
59
+ * @param endedMs - When the item ended (epoch ms)
60
+ * @param now - Clock
61
+ * @returns True when the window may still be in the tail
62
+ */
63
+ export declare function transcriptWorthReading(endedMs: number, now?: number): boolean;
64
+ //# sourceMappingURL=work-record-transcript.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-record-transcript.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/wiki/work-record-transcript.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAIxD,mDAAmD;AACnD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,mBAAmB;AACnB,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAeD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAgC,GAAG,OAAO,CAAC,MAAM,CAAC,CAelH;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,GAAE,SAAS,MAAM,EAAO,GAAG,qBAAqB,CAmExI;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,OAAO,CAEzF"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Transcript facts for a work record (#1349).
3
+ *
4
+ * Reads a bounded tail of the doer's Claude Code transcript and keeps only
5
+ * what happened inside the task window: failed tool calls (with whether the
6
+ * same call later succeeded), files written, PR / commit references and
7
+ * messages posted. Only the main chain counts (`isSidechain` entries belong
8
+ * to subagents). Tool results are read for their error flag and the first
9
+ * line of an exit code, never copied.
10
+ *
11
+ * Codex rollouts are not read (their shape differs; the trace covers them).
12
+ *
13
+ * @module services/wiki/work-record-transcript
14
+ */
15
+ import * as fs from 'fs/promises';
16
+ import { WORK_RECORD_CONSTANTS } from '../../constants.js';
17
+ import { redactSensitive } from './wiki-redaction.js';
18
+ const C = WORK_RECORD_CONSTANTS;
19
+ const PR_URL_RE = /https:\/\/github\.com\/[\w.-]+\/[\w.-]+\/(?:pull|issues)\/\d+/g;
20
+ const COMMIT_LINE_RE = /^\[[^\]\s]+ (?:\(root-commit\) )?([0-9a-f]{7,12})\]/m;
21
+ const EXIT_CODE_RE = /^Exit code (\d+)/m;
22
+ const POST_SKILL_RE = /\b(?:reply-chat|reply-channel|reply|slack-post|send-chat-response|send-message|slack-file|whatsapp-send|gmail-send)\b/;
23
+ const FILE_TOOLS = new Set(['Write', 'Edit', 'MultiEdit', 'NotebookEdit']);
24
+ /**
25
+ * Read the end of a file as whole lines (the first partial line is dropped).
26
+ *
27
+ * @param file - Path
28
+ * @param maxBytes - Bytes from the end
29
+ * @returns Text, '' when the file cannot be read
30
+ */
31
+ export async function readTranscriptTail(file, maxBytes = C.TRANSCRIPT_TAIL_BYTES) {
32
+ let handle = null;
33
+ try {
34
+ handle = await fs.open(file, 'r');
35
+ const { size } = await handle.stat();
36
+ const start = Math.max(0, size - maxBytes);
37
+ const buf = Buffer.alloc(size - start);
38
+ await handle.read(buf, 0, buf.length, start);
39
+ const text = buf.toString('utf-8');
40
+ return start > 0 ? text.slice(text.indexOf('\n') + 1) : text;
41
+ }
42
+ catch {
43
+ return '';
44
+ }
45
+ finally {
46
+ await handle?.close();
47
+ }
48
+ }
49
+ /**
50
+ * Facts from whole Claude transcript lines inside a window.
51
+ *
52
+ * @param text - JSONL text (whole lines)
53
+ * @param window - Task window (epoch ms); entries outside it are ignored
54
+ * @param roots - Project roots to make file paths relative to
55
+ * @returns Facts (empty when nothing fell in the window)
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * const facts = parseClaudeTranscriptWindow(await readTranscriptTail(file), { fromMs, toMs }, [projectPath]);
60
+ * facts.errors; // [{ what: 'Bash `npm test` exit 1', resolved: 'fixed' }]
61
+ * ```
62
+ */
63
+ export function parseClaudeTranscriptWindow(text, window, roots = []) {
64
+ const facts = { errors: [], filesWritten: [], urls: [], commits: [], posts: 0, toolCalls: 0 };
65
+ const uses = new Map();
66
+ const failed = [];
67
+ const succeededKeys = new Map();
68
+ const files = new Set();
69
+ const urls = new Set();
70
+ const commits = new Set();
71
+ const from = window.fromMs - C.TRANSCRIPT_WINDOW_SLACK_MS;
72
+ const to = window.toMs + C.TRANSCRIPT_WINDOW_SLACK_MS;
73
+ for (const line of text.split('\n')) {
74
+ if (line.length < 20 || !(line.includes('"tool_use"') || line.includes('"tool_result"') || line.includes('"type":"text"')))
75
+ continue;
76
+ let entry;
77
+ try {
78
+ entry = JSON.parse(line);
79
+ }
80
+ catch {
81
+ continue;
82
+ }
83
+ if (entry.isSidechain === true || entry.isMeta === true || entry.isApiErrorMessage === true)
84
+ continue;
85
+ const at = Date.parse(typeof entry.timestamp === 'string' ? entry.timestamp : '');
86
+ if (!Number.isFinite(at) || at < from || at > to)
87
+ continue;
88
+ const content = entry.message?.content;
89
+ if (!Array.isArray(content))
90
+ continue;
91
+ for (const block of content) {
92
+ if (block?.type === 'tool_use' && typeof block.id === 'string' && typeof block.name === 'string') {
93
+ const use = describeToolUse(block.name, block.input, roots, at);
94
+ uses.set(block.id, use);
95
+ facts.toolCalls++;
96
+ if (FILE_TOOLS.has(block.name)) {
97
+ const p = filePathOf(block.input);
98
+ if (p)
99
+ files.add(relative(p, roots));
100
+ }
101
+ if (block.name === 'Bash' && POST_SKILL_RE.test(commandOf(block.input)))
102
+ facts.posts++;
103
+ }
104
+ else if (block?.type === 'tool_result' && typeof block.tool_use_id === 'string') {
105
+ const use = uses.get(block.tool_use_id);
106
+ const resultText = resultTextOf(block.content);
107
+ const exit = resultText.match(EXIT_CODE_RE);
108
+ const nonZeroExit = exit ? Number(exit[1]) !== 0 : false;
109
+ if (block.is_error === true || nonZeroExit) {
110
+ if (use)
111
+ failed.push({ use: exit && nonZeroExit ? { ...use, summary: `${use.summary} exit ${exit[1]}` } : use, at });
112
+ }
113
+ else if (use) {
114
+ succeededKeys.set(use.key, at);
115
+ }
116
+ for (const u of resultText.match(PR_URL_RE) ?? [])
117
+ urls.add(u);
118
+ const commit = resultText.match(COMMIT_LINE_RE);
119
+ if (commit && use?.name === 'Bash' && /\bgit\s+commit\b/.test(use.summary))
120
+ commits.add(commit[1]);
121
+ }
122
+ else if (block?.type === 'text' && typeof block.text === 'string' && entry.type === 'assistant') {
123
+ for (const u of block.text.match(PR_URL_RE) ?? [])
124
+ urls.add(u);
125
+ }
126
+ }
127
+ }
128
+ const seen = new Set();
129
+ for (const f of failed) {
130
+ const what = redactSensitive(f.use.summary);
131
+ if (seen.has(what))
132
+ continue;
133
+ seen.add(what);
134
+ const later = succeededKeys.get(f.use.key);
135
+ facts.errors.push({ what, resolved: later !== undefined && later > f.at ? 'fixed' : 'unresolved' });
136
+ if (facts.errors.length >= C.MAX_ERRORS)
137
+ break;
138
+ }
139
+ facts.filesWritten = [...files].slice(0, C.MAX_OUTPUTS);
140
+ facts.urls = [...urls].slice(0, C.MAX_OUTPUTS);
141
+ facts.commits = [...commits].slice(0, C.MAX_OUTPUTS);
142
+ return facts;
143
+ }
144
+ /**
145
+ * Whether a transcript is worth reading for an item that ended at `endedMs`:
146
+ * the tail only holds recent turns.
147
+ *
148
+ * @param endedMs - When the item ended (epoch ms)
149
+ * @param now - Clock
150
+ * @returns True when the window may still be in the tail
151
+ */
152
+ export function transcriptWorthReading(endedMs, now = Date.now()) {
153
+ return Number.isFinite(endedMs) && now - endedMs <= C.TRANSCRIPT_MAX_AGE_MS;
154
+ }
155
+ // ---------------------------------------------------------------------------
156
+ function describeToolUse(name, input, roots, at) {
157
+ if (name === 'Bash') {
158
+ const command = commandOf(input).replace(/\s+/g, ' ').trim();
159
+ const shown = command.length > 80 ? `${command.slice(0, 79)}…` : command;
160
+ return { name, summary: `Bash \`${shown}\``, key: `Bash:${command.slice(0, 200)}`, at };
161
+ }
162
+ const p = filePathOf(input);
163
+ if (p)
164
+ return { name, summary: `${name} ${relative(p, roots)}`, key: `${name}:${p}`, at };
165
+ return { name, summary: `${name} call`, key: `${name}:`, at };
166
+ }
167
+ function commandOf(input) {
168
+ const c = input?.command;
169
+ return typeof c === 'string' ? c : '';
170
+ }
171
+ function filePathOf(input) {
172
+ const p = input;
173
+ const v = p?.file_path ?? p?.notebook_path ?? p?.path;
174
+ return typeof v === 'string' && v.length > 0 ? v : null;
175
+ }
176
+ function relative(file, roots) {
177
+ for (const root of roots) {
178
+ if (root && file.startsWith(`${root}/`))
179
+ return file.slice(root.length + 1);
180
+ }
181
+ return file;
182
+ }
183
+ function resultTextOf(content) {
184
+ if (typeof content === 'string')
185
+ return content.slice(0, 4_000);
186
+ if (Array.isArray(content)) {
187
+ return content
188
+ .map((c) => (typeof c?.text === 'string' ? (c.text) : ''))
189
+ .join('\n')
190
+ .slice(0, 4_000);
191
+ }
192
+ return '';
193
+ }
194
+ //# sourceMappingURL=work-record-transcript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-record-transcript.js","sourceRoot":"","sources":["../../../../../../backend/src/services/wiki/work-record-transcript.ts"],"names":[],"mappings":"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"}