@excitedjs/agent-runtime-claude-code 0.5.0 → 0.6.0-alpha.gaa769c607d65

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 (102) hide show
  1. package/dist/activity/budget.d.ts +8 -0
  2. package/dist/activity/budget.d.ts.map +1 -0
  3. package/dist/activity/budget.js +9 -0
  4. package/dist/activity/budget.js.map +1 -0
  5. package/dist/{transcript → activity}/cursor.d.ts +2 -2
  6. package/dist/activity/cursor.d.ts.map +1 -0
  7. package/dist/{transcript → activity}/cursor.js +11 -11
  8. package/dist/activity/cursor.js.map +1 -0
  9. package/dist/activity/error.d.ts +16 -0
  10. package/dist/activity/error.d.ts.map +1 -0
  11. package/dist/activity/error.js +22 -0
  12. package/dist/activity/error.js.map +1 -0
  13. package/dist/activity/native-hash.d.ts.map +1 -0
  14. package/dist/activity/native-hash.js.map +1 -0
  15. package/dist/{transcript → activity}/opened-file.d.ts +3 -3
  16. package/dist/activity/opened-file.d.ts.map +1 -0
  17. package/dist/{transcript → activity}/opened-file.js +16 -16
  18. package/dist/activity/opened-file.js.map +1 -0
  19. package/dist/activity/parallel-tools.d.ts +6 -0
  20. package/dist/activity/parallel-tools.d.ts.map +1 -0
  21. package/dist/activity/parallel-tools.js.map +1 -0
  22. package/dist/activity/path.d.ts +25 -0
  23. package/dist/activity/path.d.ts.map +1 -0
  24. package/dist/{transcript → activity}/path.js +32 -32
  25. package/dist/activity/path.js.map +1 -0
  26. package/dist/activity/reader.d.ts +16 -0
  27. package/dist/activity/reader.d.ts.map +1 -0
  28. package/dist/{transcript → activity}/reader.js +120 -161
  29. package/dist/activity/reader.js.map +1 -0
  30. package/dist/activity/rewrites.d.ts.map +1 -0
  31. package/dist/activity/rewrites.js.map +1 -0
  32. package/dist/admission-classify.d.ts +7 -0
  33. package/dist/admission-classify.d.ts.map +1 -0
  34. package/dist/admission-classify.js +17 -0
  35. package/dist/admission-classify.js.map +1 -0
  36. package/dist/diagnostic.d.ts +2 -2
  37. package/dist/diagnostic.d.ts.map +1 -1
  38. package/dist/index.d.ts +1 -2
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +0 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/mcp-config.d.ts +1 -0
  43. package/dist/mcp-config.d.ts.map +1 -1
  44. package/dist/mcp-config.js +5 -0
  45. package/dist/mcp-config.js.map +1 -1
  46. package/dist/provider.d.ts +28 -40
  47. package/dist/provider.d.ts.map +1 -1
  48. package/dist/provider.js +32 -61
  49. package/dist/provider.js.map +1 -1
  50. package/dist/runtime-deps.d.ts +7 -11
  51. package/dist/runtime-deps.d.ts.map +1 -1
  52. package/dist/runtime-session.d.ts +0 -9
  53. package/dist/runtime-session.d.ts.map +1 -1
  54. package/dist/runtime-session.js +0 -14
  55. package/dist/runtime-session.js.map +1 -1
  56. package/dist/runtime-submissions.d.ts +3 -4
  57. package/dist/runtime-submissions.d.ts.map +1 -1
  58. package/dist/runtime-submissions.js +40 -8
  59. package/dist/runtime-submissions.js.map +1 -1
  60. package/dist/runtime.d.ts +67 -34
  61. package/dist/runtime.d.ts.map +1 -1
  62. package/dist/runtime.js +175 -166
  63. package/dist/runtime.js.map +1 -1
  64. package/package.json +3 -3
  65. package/dist/source-reservation.d.ts +0 -6
  66. package/dist/source-reservation.d.ts.map +0 -1
  67. package/dist/source-reservation.js +0 -48
  68. package/dist/source-reservation.js.map +0 -1
  69. package/dist/transcript/budget.d.ts +0 -8
  70. package/dist/transcript/budget.d.ts.map +0 -1
  71. package/dist/transcript/budget.js +0 -9
  72. package/dist/transcript/budget.js.map +0 -1
  73. package/dist/transcript/completion.d.ts +0 -8
  74. package/dist/transcript/completion.d.ts.map +0 -1
  75. package/dist/transcript/completion.js +0 -57
  76. package/dist/transcript/completion.js.map +0 -1
  77. package/dist/transcript/cursor.d.ts.map +0 -1
  78. package/dist/transcript/cursor.js.map +0 -1
  79. package/dist/transcript/error.d.ts +0 -9
  80. package/dist/transcript/error.d.ts.map +0 -1
  81. package/dist/transcript/error.js +0 -9
  82. package/dist/transcript/error.js.map +0 -1
  83. package/dist/transcript/native-hash.d.ts.map +0 -1
  84. package/dist/transcript/native-hash.js.map +0 -1
  85. package/dist/transcript/opened-file.d.ts.map +0 -1
  86. package/dist/transcript/opened-file.js.map +0 -1
  87. package/dist/transcript/parallel-tools.d.ts +0 -6
  88. package/dist/transcript/parallel-tools.d.ts.map +0 -1
  89. package/dist/transcript/parallel-tools.js.map +0 -1
  90. package/dist/transcript/path.d.ts +0 -25
  91. package/dist/transcript/path.d.ts.map +0 -1
  92. package/dist/transcript/path.js.map +0 -1
  93. package/dist/transcript/reader.d.ts +0 -7
  94. package/dist/transcript/reader.d.ts.map +0 -1
  95. package/dist/transcript/reader.js.map +0 -1
  96. package/dist/transcript/rewrites.d.ts.map +0 -1
  97. package/dist/transcript/rewrites.js.map +0 -1
  98. /package/dist/{transcript → activity}/native-hash.d.ts +0 -0
  99. /package/dist/{transcript → activity}/native-hash.js +0 -0
  100. /package/dist/{transcript → activity}/parallel-tools.js +0 -0
  101. /package/dist/{transcript → activity}/rewrites.d.ts +0 -0
  102. /package/dist/{transcript → activity}/rewrites.js +0 -0
@@ -0,0 +1,8 @@
1
+ import { type ScanBudget } from '@excitedjs/dreamux-utils';
2
+ export type ClaudeScanBudget = ScanBudget;
3
+ export declare function createClaudeScanBudget(input?: {
4
+ maxEntries?: number;
5
+ maxElapsedMs?: number;
6
+ now?: () => number;
7
+ }): ClaudeScanBudget;
8
+ //# sourceMappingURL=budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../../src/activity/budget.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAC;AAIlC,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAE1C,wBAAgB,sBAAsB,CAAC,KAAK,GAAE;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACf,GAAG,gBAAgB,CASxB"}
@@ -0,0 +1,9 @@
1
+ import { createScanBudget, } from '@excitedjs/dreamux-utils';
2
+ import { ClaudeActivityError } from './error.js';
3
+ export function createClaudeScanBudget(input = {}) {
4
+ return createScanBudget({
5
+ ...input,
6
+ limitError: () => new ClaudeActivityError('scan_unsupported', 'Claude Code activity discovery exceeded its bounded scan limit'),
7
+ });
8
+ }
9
+ //# sourceMappingURL=budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget.js","sourceRoot":"","sources":["../../src/activity/budget.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,GAEjB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAIjD,MAAM,UAAU,sBAAsB,CAAC,QAInC,EAAE;IACJ,OAAO,gBAAgB,CAAC;QACtB,GAAG,KAAK;QACR,UAAU,EAAE,GAAG,EAAE,CACf,IAAI,mBAAmB,CACrB,kBAAkB,EAClB,gEAAgE,CACjE;KACJ,CAAC,CAAC;AACL,CAAC"}
@@ -1,4 +1,4 @@
1
- import { transcriptDigest } from '@excitedjs/dreamux-utils';
1
+ import { scanDigest } from '@excitedjs/dreamux-utils';
2
2
  interface ClaudeCursorEnvelope {
3
3
  v: 1;
4
4
  p: 'claude';
@@ -21,5 +21,5 @@ export declare function encodeClaudeCursor(input: {
21
21
  rewriteDigest: string | null;
22
22
  }): string;
23
23
  export declare function decodeClaudeCursor(cursor: string, expectedFingerprint: string): ClaudeCursorEnvelope;
24
- export { transcriptDigest as digest };
24
+ export { scanDigest as digest };
25
25
  //# sourceMappingURL=cursor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../src/activity/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EACX,MAAM,0BAA0B,CAAC;AAIlC,UAAU,oBAAoB;IAC5B,CAAC,EAAE,CAAC,CAAC;IACL,CAAC,EAAE,QAAQ,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CACnB;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,OAAO,GAAG,MAAM,CAEpE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,GAAG,MAAM,CAaT;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,mBAAmB,EAAE,MAAM,GAC1B,oBAAoB,CA0BtB;AA2BD,OAAO,EAAE,UAAU,IAAI,MAAM,EAAE,CAAC"}
@@ -1,7 +1,7 @@
1
- import { isTranscriptDigest, transcriptDigest, } from '@excitedjs/dreamux-utils';
2
- import { ClaudeTranscriptError } from './error.js';
1
+ import { isScanDigest, scanDigest, } from '@excitedjs/dreamux-utils';
2
+ import { ClaudeActivityError } from './error.js';
3
3
  export function claudeQueryFingerprint(includeTools) {
4
- return transcriptDigest(JSON.stringify({ include_tools: includeTools }));
4
+ return scanDigest(JSON.stringify({ include_tools: includeTools }));
5
5
  }
6
6
  export function encodeClaudeCursor(input) {
7
7
  const envelope = {
@@ -26,13 +26,13 @@ export function decodeClaudeCursor(cursor, expectedFingerprint) {
26
26
  value = JSON.parse(decoded.toString('utf8'));
27
27
  }
28
28
  catch (error) {
29
- throw new ClaudeTranscriptError('cursor_invalid', 'Claude Code transcript cursor is invalid', { cause: error });
29
+ throw new ClaudeActivityError('cursor_invalid', 'Claude Code activity cursor is invalid', { cause: error });
30
30
  }
31
31
  if (!isEnvelope(value)) {
32
- throw new ClaudeTranscriptError('cursor_invalid', 'Claude Code transcript cursor is invalid');
32
+ throw new ClaudeActivityError('cursor_invalid', 'Claude Code activity cursor is invalid');
33
33
  }
34
34
  if (value.fp !== expectedFingerprint) {
35
- throw new ClaudeTranscriptError('cursor_query_mismatch', 'Claude Code transcript cursor belongs to a different query');
35
+ throw new ClaudeActivityError('cursor_query_mismatch', 'Claude Code activity cursor belongs to a different query');
36
36
  }
37
37
  return value;
38
38
  }
@@ -44,19 +44,19 @@ function isEnvelope(value) {
44
44
  return (Object.keys(record).length === 9 &&
45
45
  record['v'] === 1 &&
46
46
  record['p'] === 'claude' &&
47
- isTranscriptDigest(record['fp']) &&
48
- isTranscriptDigest(record['gen']) &&
47
+ isScanDigest(record['fp']) &&
48
+ isScanDigest(record['gen']) &&
49
49
  Number.isSafeInteger(record['pos']) &&
50
50
  record['pos'] >= 0 &&
51
- isTranscriptDigest(record['bd']) &&
51
+ isScanDigest(record['bd']) &&
52
52
  Number.isSafeInteger(record['rw']) &&
53
53
  record['rw'] >= 0 &&
54
54
  (record['rp'] === null ||
55
55
  (Number.isSafeInteger(record['rp']) &&
56
56
  record['rp'] >= 0)) &&
57
- (record['rd'] === null || isTranscriptDigest(record['rd'])) &&
57
+ (record['rd'] === null || isScanDigest(record['rd'])) &&
58
58
  ((record['rp'] === null && record['rd'] === null) ||
59
59
  (record['rp'] !== null && record['rd'] !== null)));
60
60
  }
61
- export { transcriptDigest as digest };
61
+ export { scanDigest as digest };
62
62
  //# sourceMappingURL=cursor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/activity/cursor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { AgentActivityError } from '@excitedjs/dreamux-types';
2
+ /**
3
+ * Why a Claude Code activity read failed, at native granularity. This is
4
+ * internal control-flow vocabulary: only the public
5
+ * {@link AgentActivityError.reason} it projects crosses the provider seam.
6
+ */
7
+ export type ClaudeActivityDetail = 'not_found' | 'session_mismatch' | 'locator_outside_root' | 'unreadable' | 'invalid' | 'scan_unsupported' | 'cursor_invalid' | 'cursor_query_mismatch' | 'cursor_stale';
8
+ export declare class ClaudeActivityError extends Error implements AgentActivityError {
9
+ readonly detail: ClaudeActivityDetail;
10
+ readonly name = "AgentActivityError";
11
+ readonly reason: AgentActivityError['reason'];
12
+ constructor(detail: ClaudeActivityDetail, message: string, options?: {
13
+ cause?: unknown;
14
+ });
15
+ }
16
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/activity/error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAC5B,WAAW,GACX,kBAAkB,GAClB,sBAAsB,GACtB,YAAY,GACZ,SAAS,GACT,kBAAkB,GAClB,gBAAgB,GAChB,uBAAuB,GACvB,cAAc,CAAC;AAiBnB,qBAAa,mBAAoB,SAAQ,KAAM,YAAW,kBAAkB;IAMxE,QAAQ,CAAC,MAAM,EAAE,oBAAoB;IALvC,QAAQ,CAAC,IAAI,wBAAwB;IAErC,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBAGnC,MAAM,EAAE,oBAAoB,EACrC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;CAKpC"}
@@ -0,0 +1,22 @@
1
+ const PUBLIC_REASON = {
2
+ not_found: 'session_unavailable',
3
+ session_mismatch: 'session_unavailable',
4
+ locator_outside_root: 'session_unavailable',
5
+ unreadable: 'session_unavailable',
6
+ invalid: 'activity_corrupt',
7
+ scan_unsupported: 'provider_failure',
8
+ cursor_invalid: 'cursor_invalid',
9
+ cursor_query_mismatch: 'cursor_invalid',
10
+ cursor_stale: 'cursor_invalid',
11
+ };
12
+ export class ClaudeActivityError extends Error {
13
+ detail;
14
+ name = 'AgentActivityError';
15
+ reason;
16
+ constructor(detail, message, options = {}) {
17
+ super(message, options);
18
+ this.detail = detail;
19
+ this.reason = PUBLIC_REASON[detail];
20
+ }
21
+ }
22
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/activity/error.ts"],"names":[],"mappings":"AAkBA,MAAM,aAAa,GAGf;IACF,SAAS,EAAE,qBAAqB;IAChC,gBAAgB,EAAE,qBAAqB;IACvC,oBAAoB,EAAE,qBAAqB;IAC3C,UAAU,EAAE,qBAAqB;IACjC,OAAO,EAAE,kBAAkB;IAC3B,gBAAgB,EAAE,kBAAkB;IACpC,cAAc,EAAE,gBAAgB;IAChC,qBAAqB,EAAE,gBAAgB;IACvC,YAAY,EAAE,gBAAgB;CAC/B,CAAC;AAEF,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAMjC;IALF,IAAI,GAAG,oBAAoB,CAAC;IAE5B,MAAM,CAA+B;IAE9C,YACW,MAA4B,EACrC,OAAe,EACf,UAA+B,EAAE;QAEjC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAJf,WAAM,GAAN,MAAM,CAAsB;QAKrC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;CACF"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-hash.d.ts","sourceRoot":"","sources":["../../src/activity/native-hash.ts"],"names":[],"mappings":"AAQA,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-hash.js","sourceRoot":"","sources":["../../src/activity/native-hash.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;AACjC,MAAM,MAAM,GAAG;IACb,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;IACnB,mBAAmB;CACX,CAAC;AAEX,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,MAAM,CAAC,KAAiB,EAAE,IAAY;IAC7C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,IAAI,IAAY,CAAC;IACjB,IAAI,KAAa,CAAC;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;QACjB,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAChB,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC;YACvB,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAC5D,KAAK;gBACH,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC;oBAC5B,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC;aAAM,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,IAAI;gBACF,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,GAAG,CAAC;oBAC1B,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;oBACnC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,CAAC;YAC7B,KAAK,GAAG,EAAE,CAAC;QACb,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,EAAE,CAAC;YACV,KAAK,GAAG,EAAE,CAAC;QACb,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACpC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;YAC5B,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;gBAClD,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CACf,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,GAAG,CAAC,CAAE,EACtD,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAE,CACtD,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;QACD,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,GAAG,KAAK,CAAC,CAAC,CAAE,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QAC7C,OAAO,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;YAC5B,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CACZ,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAClC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAE,CACvC,CAAC;YACF,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QACnC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;IACpB,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CACtB,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,EAChB,KAAK,GAAG,KAAK,CACd,CAAC;IACF,OAAO,GAAG,CACR,OAAO,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,EACxC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CACzB,CAAC;AACJ,CAAC;AAED,SAAS,IAAI,CACX,KAAiB,EACjB,MAAc,EACd,MAAc;IAEd,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC/C,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,GAAG,CAAC,IAAY,EAAE,KAAa;IACtC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;AACpC,CAAC;AAED,SAAS,QAAQ,CACf,IAAY,EACZ,KAAa;IAEb,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC;KAC7B,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,KAAa;IAC3B,OAAO,KAAK,GAAG,OAAO,CAAC;AACzB,CAAC"}
@@ -1,13 +1,13 @@
1
1
  import { type FileHandle } from 'node:fs/promises';
2
- export interface ClaudeOpenedTranscript {
2
+ export interface ClaudeOpenedRollout {
3
3
  handle: FileHandle;
4
4
  path: string;
5
5
  size: number;
6
6
  dev: number | bigint;
7
7
  ino: number | bigint;
8
8
  }
9
- export declare function openClaudeTranscript(candidate: string, canonicalRoot: string): Promise<ClaudeOpenedTranscript>;
10
- export declare function validateClaudeSessionEvidence(opened: ClaudeOpenedTranscript, expectedSessionId: string, options?: {
9
+ export declare function openClaudeRollout(candidate: string, canonicalRoot: string): Promise<ClaudeOpenedRollout>;
10
+ export declare function validateClaudeSessionEvidence(opened: ClaudeOpenedRollout, expectedSessionId: string, options?: {
11
11
  maxReadChunkBytes?: number;
12
12
  }): Promise<void>;
13
13
  //# sourceMappingURL=opened-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opened-file.d.ts","sourceRoot":"","sources":["../../src/activity/opened-file.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AASnE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACtB;AAID,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,mBAAmB,CAAC,CA4D9B;AAED,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,mBAAmB,EAC3B,iBAAiB,EAAE,MAAM,EACzB,OAAO,GAAE;IAAE,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3C,OAAO,CAAC,IAAI,CAAC,CA2Cf"}
@@ -1,9 +1,9 @@
1
1
  import { constants } from 'node:fs';
2
2
  import { open, realpath } from 'node:fs/promises';
3
- import { isPathWithin, readTranscriptBytesAt, } from '@excitedjs/dreamux-utils';
4
- import { ClaudeTranscriptError } from './error.js';
3
+ import { isPathWithin, readBytesAt, } from '@excitedjs/dreamux-utils';
4
+ import { ClaudeActivityError } from './error.js';
5
5
  const MAX_METADATA_BYTES = 1_048_576;
6
- export async function openClaudeTranscript(candidate, canonicalRoot) {
6
+ export async function openClaudeRollout(candidate, canonicalRoot) {
7
7
  let handle;
8
8
  try {
9
9
  handle = await open(candidate, constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0));
@@ -17,10 +17,10 @@ export async function openClaudeTranscript(candidate, canonicalRoot) {
17
17
  realpath(candidate),
18
18
  ]);
19
19
  if (!opened.isFile()) {
20
- throw new ClaudeTranscriptError('invalid', 'Claude Code transcript is not a regular file');
20
+ throw new ClaudeActivityError('invalid', 'Claude Code activity is not a regular file');
21
21
  }
22
22
  if (!isPathWithin(canonicalRoot, canonicalPath)) {
23
- throw new ClaudeTranscriptError('locator_outside_root', 'Claude Code transcript locator is outside the native transcript root');
23
+ throw new ClaudeActivityError('locator_outside_root', 'Claude Code activity is unavailable for this session');
24
24
  }
25
25
  const current = await open(canonicalPath, constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0)).catch((error) => {
26
26
  throw classifyOpenError(error);
@@ -28,7 +28,7 @@ export async function openClaudeTranscript(candidate, canonicalRoot) {
28
28
  try {
29
29
  const currentStat = await current.stat();
30
30
  if (opened.dev !== currentStat.dev || opened.ino !== currentStat.ino) {
31
- throw new ClaudeTranscriptError('unreadable', 'Claude Code transcript changed while opening');
31
+ throw new ClaudeActivityError('unreadable', 'Claude Code activity changed while opening');
32
32
  }
33
33
  }
34
34
  finally {
@@ -44,14 +44,14 @@ export async function openClaudeTranscript(candidate, canonicalRoot) {
44
44
  }
45
45
  catch (error) {
46
46
  await handle.close().catch(() => undefined);
47
- if (error instanceof ClaudeTranscriptError)
47
+ if (error instanceof ClaudeActivityError)
48
48
  throw error;
49
- throw new ClaudeTranscriptError('unreadable', 'Claude Code transcript is unreadable', { cause: error });
49
+ throw new ClaudeActivityError('unreadable', 'Claude Code activity is unreadable', { cause: error });
50
50
  }
51
51
  }
52
52
  export async function validateClaudeSessionEvidence(opened, expectedSessionId, options = {}) {
53
53
  const length = Math.min(opened.size, MAX_METADATA_BYTES + 1);
54
- const data = await readTranscriptBytesAt(opened.handle, 0, length, {
54
+ const data = await readBytesAt(opened.handle, 0, length, {
55
55
  ...(options.maxReadChunkBytes !== undefined
56
56
  ? { maxChunkBytes: options.maxReadChunkBytes }
57
57
  : {}),
@@ -61,35 +61,35 @@ export async function validateClaudeSessionEvidence(opened, expectedSessionId, o
61
61
  const newline = data.indexOf(0x0a, cursor);
62
62
  if (newline < 0) {
63
63
  if (opened.size > MAX_METADATA_BYTES) {
64
- throw new ClaudeTranscriptError('invalid', 'Claude Code transcript metadata record is oversized');
64
+ throw new ClaudeActivityError('invalid', 'Claude Code activity metadata record is oversized');
65
65
  }
66
66
  break;
67
67
  }
68
68
  const raw = data.subarray(cursor, newline).toString('utf8');
69
69
  const value = parseRecord(raw);
70
70
  if (value === null && raw.trim() !== '') {
71
- throw new ClaudeTranscriptError('invalid', 'Claude Code transcript contains invalid native metadata');
71
+ throw new ClaudeActivityError('invalid', 'Claude Code activity contains invalid native metadata');
72
72
  }
73
73
  const sessionId = stringValue(value?.['sessionId']);
74
74
  if (sessionId !== null) {
75
75
  if (sessionId !== expectedSessionId) {
76
- throw new ClaudeTranscriptError('session_mismatch', 'Claude Code transcript does not belong to the selected session');
76
+ throw new ClaudeActivityError('session_mismatch', 'Claude Code activity does not belong to the selected session');
77
77
  }
78
78
  return;
79
79
  }
80
80
  cursor = newline + 1;
81
81
  }
82
- throw new ClaudeTranscriptError('invalid', 'Claude Code transcript has no authoritative session metadata');
82
+ throw new ClaudeActivityError('invalid', 'Claude Code activity has no authoritative session metadata');
83
83
  }
84
84
  function classifyOpenError(error) {
85
85
  const code = error.code;
86
86
  if (code === 'ENOENT') {
87
- return new ClaudeTranscriptError('not_found', 'Claude Code transcript is unavailable', { cause: error });
87
+ return new ClaudeActivityError('not_found', 'Claude Code activity is unavailable', { cause: error });
88
88
  }
89
89
  if (code === 'ELOOP') {
90
- return new ClaudeTranscriptError('locator_outside_root', 'Claude Code transcript locator is outside the native transcript root', { cause: error });
90
+ return new ClaudeActivityError('locator_outside_root', 'Claude Code activity is unavailable for this session', { cause: error });
91
91
  }
92
- return new ClaudeTranscriptError('unreadable', 'Claude Code transcript is unreadable', { cause: error });
92
+ return new ClaudeActivityError('unreadable', 'Claude Code activity is unreadable', { cause: error });
93
93
  }
94
94
  function parseRecord(value) {
95
95
  try {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opened-file.js","sourceRoot":"","sources":["../../src/activity/opened-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface ClaudeHistoryEntry {
2
+ start: number;
3
+ value: Record<string, unknown>;
4
+ }
5
+ export declare function recoverParallelToolBranches<TEntry extends ClaudeHistoryEntry>(entries: readonly TEntry[], chain: readonly TEntry[]): TEntry[];
6
+ //# sourceMappingURL=parallel-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel-tools.d.ts","sourceRoot":"","sources":["../../src/activity/parallel-tools.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,wBAAgB,2BAA2B,CAAC,MAAM,SAAS,kBAAkB,EAC3E,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,MAAM,EAAE,CAuEV"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parallel-tools.js","sourceRoot":"","sources":["../../src/activity/parallel-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { DreamuxEnvironment } from '@excitedjs/dreamux-types';
2
+ import { type ClaudeScanBudget } from './budget.js';
3
+ export interface ClaudeHistoryRoots {
4
+ configHome: string;
5
+ projects: string;
6
+ }
7
+ export interface ClaudeValidatedHistory {
8
+ path: string;
9
+ root: string;
10
+ size: number;
11
+ dev: number | bigint;
12
+ ino: number | bigint;
13
+ }
14
+ export declare function claudeHistoryRoots(env?: DreamuxEnvironment, runtimeCwd?: string): ClaudeHistoryRoots;
15
+ export declare function deriveClaudeHistoryPath(sessionId: string, cwd: string, env?: DreamuxEnvironment): Promise<string>;
16
+ export declare function locateClaudeHistory(input: {
17
+ sessionId: string;
18
+ cwd: string;
19
+ locator?: string | null;
20
+ env?: DreamuxEnvironment;
21
+ budget?: ClaudeScanBudget;
22
+ worktreePaths?: readonly string[];
23
+ }): Promise<ClaudeValidatedHistory>;
24
+ export declare function validateClaudeHistoryPath(candidate: string, sessionId: string, roots: ClaudeHistoryRoots): Promise<ClaudeValidatedHistory>;
25
+ //# sourceMappingURL=path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/activity/path.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGnE,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AAYrB,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACtB;AAED,wBAAgB,kBAAkB,CAChC,GAAG,GAAE,kBAAgC,EACrC,UAAU,SAAgB,GACzB,kBAAkB,CAUpB;AAED,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,kBAAgC,GACpC,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,GAAG,CAAC,EAAE,kBAAkB,CAAC;IACzB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAiDlC;AAED,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,sBAAsB,CAAC,CA+BjC"}
@@ -3,14 +3,14 @@ import { opendir, realpath } from 'node:fs/promises';
3
3
  import { dirname, isAbsolute, join, relative, resolve, } from 'node:path';
4
4
  import { promisify } from 'node:util';
5
5
  import { isPathWithin } from '@excitedjs/dreamux-utils';
6
- import { createClaudeTranscriptBudget, } from './budget.js';
7
- import { ClaudeTranscriptError } from './error.js';
6
+ import { createClaudeScanBudget, } from './budget.js';
7
+ import { ClaudeActivityError } from './error.js';
8
8
  import { claudeNativePathHash } from './native-hash.js';
9
- import { openClaudeTranscript, validateClaudeSessionEvidence, } from './opened-file.js';
9
+ import { openClaudeRollout, validateClaudeSessionEvidence, } from './opened-file.js';
10
10
  const MAX_SANITIZED_LENGTH = 200;
11
11
  const SESSION_FILENAME = /^[0-9a-f]{8}-[0-9a-f-]{27}\.jsonl$/i;
12
12
  const execFileAsync = promisify(execFile);
13
- export function claudeTranscriptRoots(env = process.env, runtimeCwd = process.cwd()) {
13
+ export function claudeHistoryRoots(env = process.env, runtimeCwd = process.cwd()) {
14
14
  const configured = env['CLAUDE_CONFIG_DIR'];
15
15
  const configHome = (configured === undefined || configured === ''
16
16
  ? join(requireHome(env), '.claude')
@@ -19,24 +19,24 @@ export function claudeTranscriptRoots(env = process.env, runtimeCwd = process.cw
19
19
  : resolve(runtimeCwd, configured)).normalize('NFC');
20
20
  return { configHome, projects: join(configHome, 'projects') };
21
21
  }
22
- export async function deriveClaudeTranscriptPath(sessionId, cwd, env = process.env) {
22
+ export async function deriveClaudeHistoryPath(sessionId, cwd, env = process.env) {
23
23
  assertSessionId(sessionId);
24
- const roots = claudeTranscriptRoots(env, cwd);
24
+ const roots = claudeHistoryRoots(env, cwd);
25
25
  const canonicalCwd = await canonicalRuntimeCwd(cwd);
26
26
  const path = join(roots.projects, sanitizePath(canonicalCwd.normalize('NFC')), `${sessionId}.jsonl`);
27
27
  return canonicalProspectivePath(path, roots.projects);
28
28
  }
29
- export async function locateClaudeTranscript(input) {
29
+ export async function locateClaudeHistory(input) {
30
30
  assertSessionId(input.sessionId);
31
- const budget = input.budget ?? createClaudeTranscriptBudget();
32
- const roots = claudeTranscriptRoots(input.env, input.cwd);
31
+ const budget = input.budget ?? createClaudeScanBudget();
32
+ const roots = claudeHistoryRoots(input.env, input.cwd);
33
33
  if (input.locator !== null && input.locator !== undefined) {
34
34
  try {
35
- return await validateClaudeTranscriptPath(input.locator, input.sessionId, roots);
35
+ return await validateClaudeHistoryPath(input.locator, input.sessionId, roots);
36
36
  }
37
37
  catch (error) {
38
- if (!(error instanceof ClaudeTranscriptError) ||
39
- error.reason !== 'not_found') {
38
+ if (!(error instanceof ClaudeActivityError) ||
39
+ error.detail !== 'not_found') {
40
40
  throw error;
41
41
  }
42
42
  }
@@ -51,29 +51,29 @@ export async function locateClaudeTranscript(input) {
51
51
  });
52
52
  for (const candidate of candidates) {
53
53
  try {
54
- return await validateClaudeTranscriptPath(candidate, input.sessionId, roots);
54
+ return await validateClaudeHistoryPath(candidate, input.sessionId, roots);
55
55
  }
56
56
  catch (error) {
57
- if (error instanceof ClaudeTranscriptError &&
58
- error.reason === 'not_found') {
57
+ if (error instanceof ClaudeActivityError &&
58
+ error.detail === 'not_found') {
59
59
  continue;
60
60
  }
61
61
  throw error;
62
62
  }
63
63
  }
64
- throw new ClaudeTranscriptError('not_found', 'Claude Code transcript is unavailable');
64
+ throw new ClaudeActivityError('not_found', 'Claude Code activity is unavailable');
65
65
  }
66
- export async function validateClaudeTranscriptPath(candidate, sessionId, roots) {
66
+ export async function validateClaudeHistoryPath(candidate, sessionId, roots) {
67
67
  if (!isAbsolute(candidate) ||
68
68
  !SESSION_FILENAME.test(candidate.split(/[\\/]/).at(-1) ?? '') ||
69
69
  !candidate.endsWith(`${sessionId}.jsonl`)) {
70
- throw new ClaudeTranscriptError('invalid', 'Claude Code transcript locator is not a native session path');
70
+ throw new ClaudeActivityError('invalid', 'Claude Code activity locator is not a native session path');
71
71
  }
72
72
  const canonicalProjects = await canonicalExistingRoot(roots.projects);
73
- const opened = await openClaudeTranscript(candidate, canonicalProjects);
73
+ const opened = await openClaudeRollout(candidate, canonicalProjects);
74
74
  try {
75
75
  if (opened.size === 0) {
76
- throw new ClaudeTranscriptError('not_found', 'Claude Code transcript is unavailable');
76
+ throw new ClaudeActivityError('not_found', 'Claude Code activity is unavailable');
77
77
  }
78
78
  await validateClaudeSessionEvidence(opened, sessionId);
79
79
  return {
@@ -105,7 +105,7 @@ async function discoveryCandidates(input) {
105
105
  };
106
106
  const pushProjectCandidates = async (cwd) => {
107
107
  const canonical = await canonicalRuntimeCwd(cwd);
108
- const exact = await deriveClaudeTranscriptPath(input.sessionId, canonical, input.env);
108
+ const exact = await deriveClaudeHistoryPath(input.sessionId, canonical, input.env);
109
109
  pushUnique(result, seen, exact);
110
110
  const sanitized = sanitizePath(canonical.normalize('NFC'));
111
111
  if (sanitized.length <= MAX_SANITIZED_LENGTH)
@@ -140,7 +140,7 @@ async function readProjectDirectories(roots, budget) {
140
140
  catch (error) {
141
141
  if (error.code === 'ENOENT')
142
142
  return [];
143
- throw new ClaudeTranscriptError('unreadable', 'Claude Code transcript root is unreadable', { cause: error });
143
+ throw new ClaudeActivityError('unreadable', 'Claude Code activity root is unreadable', { cause: error });
144
144
  }
145
145
  const entries = [];
146
146
  try {
@@ -151,11 +151,11 @@ async function readProjectDirectories(roots, budget) {
151
151
  }
152
152
  }
153
153
  catch (error) {
154
- if (error instanceof ClaudeTranscriptError)
154
+ if (error instanceof ClaudeActivityError)
155
155
  throw error;
156
156
  if (error.code === 'ENOENT')
157
157
  return entries;
158
- throw new ClaudeTranscriptError('unreadable', 'Claude Code transcript root is unreadable', { cause: error });
158
+ throw new ClaudeActivityError('unreadable', 'Claude Code activity root is unreadable', { cause: error });
159
159
  }
160
160
  return entries;
161
161
  }
@@ -185,7 +185,7 @@ async function canonicalProspectivePath(candidate, root) {
185
185
  canonicalizeProspectivePath(root),
186
186
  ]);
187
187
  if (!isPathWithin(canonicalRoot, canonicalCandidate)) {
188
- throw new ClaudeTranscriptError('locator_outside_root', 'Claude Code transcript locator is outside the native transcript root');
188
+ throw new ClaudeActivityError('locator_outside_root', 'Claude Code activity is unavailable for this session');
189
189
  }
190
190
  return canonicalCandidate;
191
191
  }
@@ -197,7 +197,7 @@ async function canonicalRuntimeCwd(cwd) {
197
197
  if (error.code === 'ENOENT') {
198
198
  return resolve(cwd);
199
199
  }
200
- throw new ClaudeTranscriptError('unreadable', 'Claude Code runtime cwd is unreadable', { cause: error });
200
+ throw new ClaudeActivityError('unreadable', 'Claude Code runtime cwd is unreadable', { cause: error });
201
201
  }
202
202
  }
203
203
  async function canonicalizeProspectivePath(path) {
@@ -211,12 +211,12 @@ async function canonicalizeProspectivePath(path) {
211
211
  catch (error) {
212
212
  const code = error.code;
213
213
  if (code !== 'ENOENT') {
214
- throw new ClaudeTranscriptError('unreadable', 'Claude Code transcript path is unreadable', { cause: error });
214
+ throw new ClaudeActivityError('unreadable', 'Claude Code activity path is unreadable', { cause: error });
215
215
  }
216
216
  }
217
217
  const parent = dirname(ancestor);
218
218
  if (parent === ancestor) {
219
- throw new ClaudeTranscriptError('not_found', 'Claude Code transcript root is unavailable');
219
+ throw new ClaudeActivityError('not_found', 'Claude Code activity root is unavailable');
220
220
  }
221
221
  ancestor = parent;
222
222
  }
@@ -227,9 +227,9 @@ async function canonicalExistingRoot(root) {
227
227
  }
228
228
  catch (error) {
229
229
  if (error.code === 'ENOENT') {
230
- throw new ClaudeTranscriptError('not_found', 'Claude Code transcript root is unavailable', { cause: error });
230
+ throw new ClaudeActivityError('not_found', 'Claude Code activity root is unavailable', { cause: error });
231
231
  }
232
- throw new ClaudeTranscriptError('unreadable', 'Claude Code transcript root is unreadable', { cause: error });
232
+ throw new ClaudeActivityError('unreadable', 'Claude Code activity root is unreadable', { cause: error });
233
233
  }
234
234
  }
235
235
  function pushUnique(result, seen, value) {
@@ -240,13 +240,13 @@ function pushUnique(result, seen, value) {
240
240
  }
241
241
  function assertSessionId(sessionId) {
242
242
  if (!/^[0-9a-f]{8}-[0-9a-f-]{27}$/i.test(sessionId)) {
243
- throw new ClaudeTranscriptError('invalid', 'Claude Code session id is invalid');
243
+ throw new ClaudeActivityError('invalid', 'Claude Code session id is invalid');
244
244
  }
245
245
  }
246
246
  function requireHome(env) {
247
247
  const home = env['HOME'];
248
248
  if (home === undefined || home === '') {
249
- throw new ClaudeTranscriptError('not_found', 'Claude Code config home is unavailable');
249
+ throw new ClaudeActivityError('not_found', 'Claude Code config home is unavailable');
250
250
  }
251
251
  return home;
252
252
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.js","sourceRoot":"","sources":["../../src/activity/path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EACL,OAAO,EACP,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,OAAO,GACR,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,OAAO,EACL,sBAAsB,GAEvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAE1B,MAAM,oBAAoB,GAAG,GAAG,CAAC;AACjC,MAAM,gBAAgB,GAAG,qCAAqC,CAAC;AAC/D,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAe1C,MAAM,UAAU,kBAAkB,CAChC,MAA0B,OAAO,CAAC,GAAG,EACrC,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE;IAE1B,MAAM,UAAU,GAAG,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,CACjB,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,EAAE;QAC3C,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;QACnC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC;YACtB,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CACtC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACnB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,SAAiB,EACjB,GAAW,EACX,MAA0B,OAAO,CAAC,GAAG;IAErC,eAAe,CAAC,SAAS,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,IAAI,CACf,KAAK,CAAC,QAAQ,EACd,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAC3C,GAAG,SAAS,QAAQ,CACrB,CAAC;IACF,OAAO,wBAAwB,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAOzC;IACC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,sBAAsB,EAAE,CAAC;IACxD,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACvD,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1D,IAAI,CAAC;YACH,OAAO,MAAM,yBAAyB,CACpC,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,SAAS,EACf,KAAK,CACN,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IACE,CAAC,CAAC,KAAK,YAAY,mBAAmB,CAAC;gBACvC,KAAK,CAAC,MAAM,KAAK,WAAW,EAC5B,CAAC;gBACD,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC;QAC3C,KAAK;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,MAAM;QACN,aAAa,EAAE,KAAK,CAAC,aAAa;KACnC,CAAC,CAAC;IACH,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,OAAO,MAAM,yBAAyB,CACpC,SAAS,EACT,KAAK,CAAC,SAAS,EACf,KAAK,CACN,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IACE,KAAK,YAAY,mBAAmB;gBACpC,KAAK,CAAC,MAAM,KAAK,WAAW,EAC5B,CAAC;gBACD,SAAS;YACX,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,MAAM,IAAI,mBAAmB,CAC3B,WAAW,EACX,qCAAqC,CACtC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,SAAiB,EACjB,SAAiB,EACjB,KAAyB;IAEzB,IACE,CAAC,UAAU,CAAC,SAAS,CAAC;QACtB,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7D,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,SAAS,QAAQ,CAAC,EACzC,CAAC;QACD,MAAM,IAAI,mBAAmB,CAC3B,SAAS,EACT,2DAA2D,CAC5D,CAAC;IACJ,CAAC;IACD,MAAM,iBAAiB,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACrE,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,mBAAmB,CAC3B,WAAW,EACX,qCAAqC,CACtC,CAAC;QACJ,CAAC;QACD,MAAM,6BAA6B,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACvD,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,iBAAiB;YACvB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;IACrD,IAAI,SAAS,CAAC,MAAM,IAAI,oBAAoB;QAAE,OAAO,SAAS,CAAC;IAC/D,OAAO,CACL,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,GAAG;QAC9C,oBAAoB,CAAC,IAAI,CAAC,CAC3B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,KAOlC;IACC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAI,kBAAkB,GAA6B,IAAI,CAAC;IACxD,MAAM,YAAY,GAAG,GAAsB,EAAE;QAC3C,kBAAkB,KAAK,sBAAsB,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACzE,OAAO,kBAAkB,CAAC;IAC5B,CAAC,CAAC;IACF,MAAM,qBAAqB,GAAG,KAAK,EAAE,GAAW,EAAiB,EAAE;QACjE,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,MAAM,uBAAuB,CACzC,KAAK,CAAC,SAAS,EACf,SAAS,EACT,KAAK,CAAC,GAAG,CACV,CAAC;QACF,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,IAAI,SAAS,CAAC,MAAM,IAAI,oBAAoB;YAAE,OAAO;QACrD,MAAM,MAAM,GACV,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,GAAG,GAAG,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7B,UAAU,CACR,MAAM,EACN,IAAI,EACJ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC,SAAS,QAAQ,CAAC,CAC9D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,MAAM,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,SAAS,GACb,KAAK,CAAC,aAAa,IAAI,CAAC,MAAM,qBAAqB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,MAAM,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,YAAY,EAAE,CAAC;IACtC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,UAAU,CACR,MAAM,EACN,IAAI,EACJ,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,SAAS,QAAQ,CAAC,CAChE,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,KAAyB,EACzB,MAAwB;IAExB,IAAI,SAAS,CAAC;IACd,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QAClE,MAAM,IAAI,mBAAmB,CAC3B,YAAY,EACZ,yCAAyC,EACzC,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YACpC,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,KAAK,CAAC,WAAW,EAAE;gBAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,mBAAmB;YAAE,MAAM,KAAK,CAAC;QACtD,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAC;QACvE,MAAM,IAAI,mBAAmB,CAC3B,YAAY,EACZ,yCAAyC,EACzC,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,GAAW;IAC9C,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CACpC,KAAK,EACL;YACE,IAAI;YACJ,0BAA0B;YAC1B,IAAI;YACJ,iBAAiB;YACjB,UAAU;YACV,MAAM;YACN,aAAa;SACd,EACD,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAC3C,CAAC;QACF,OAAO,MAAM;aACV,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;aAC9C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,SAAiB,EACjB,IAAY;IAEZ,MAAM,CAAC,kBAAkB,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5D,2BAA2B,CAAC,SAAS,CAAC;QACtC,2BAA2B,CAAC,IAAI,CAAC;KAClC,CAAC,CAAC;IACH,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,kBAAkB,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,mBAAmB,CAC3B,sBAAsB,EACtB,sDAAsD,CACvD,CAAC;IACJ,CAAC;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,GAAW;IAC5C,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QACD,MAAM,IAAI,mBAAmB,CAC3B,YAAY,EACZ,uCAAuC,EACvC,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,2BAA2B,CAAC,IAAY;IACrD,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,QAAQ,GAAG,YAAY,CAAC;IAC5B,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnD,OAAO,OAAO,CACZ,iBAAiB,EACjB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CACjC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;YACnD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtB,MAAM,IAAI,mBAAmB,CAC3B,YAAY,EACZ,yCAAyC,EACzC,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,MAAM,IAAI,mBAAmB,CAC3B,WAAW,EACX,0CAA0C,CAC3C,CAAC;QACJ,CAAC;QACD,QAAQ,GAAG,MAAM,CAAC;IACpB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,IAAY;IAC/C,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,MAAM,IAAI,mBAAmB,CAC3B,WAAW,EACX,0CAA0C,EAC1C,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,mBAAmB,CAC3B,YAAY,EACZ,yCAAyC,EACzC,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CACjB,MAAgB,EAChB,IAAiB,EACjB,KAAa;IAEb,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO;IAC5B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAChB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,eAAe,CAAC,SAAiB;IACxC,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,mBAAmB,CAC3B,SAAS,EACT,mCAAmC,CACpC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,GAAuB;IAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,mBAAmB,CAC3B,WAAW,EACX,wCAAwC,CACzC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { AgentActivityPage, AgentActivityQuery, AgentActivityReadContext, AgentRuntimeSessionRef } from '@excitedjs/dreamux-types';
2
+ import type { DispatcherClaudeCodeConfig } from '../config.js';
3
+ /**
4
+ * Read the recent tail of one Claude Code session's activity.
5
+ *
6
+ * The read works against an actively growing session and against the same
7
+ * session after its live runtime has closed: it discovers the native history
8
+ * from the session id and cwd alone, and never depends on a persisted native
9
+ * path. Projection is flat, so records appear without waiting for a turn to
10
+ * complete.
11
+ */
12
+ export declare function readClaudeRecentActivity(query: AgentActivityQuery<AgentRuntimeSessionRef>, context: AgentActivityReadContext<DispatcherClaudeCodeConfig>, testHooks?: {
13
+ afterLocate?: () => void | Promise<void>;
14
+ maxReadChunkBytes?: number;
15
+ }): Promise<AgentActivityPage>;
16
+ //# sourceMappingURL=reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../src/activity/reader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EAExB,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAqD/D;;;;;;;;GAQG;AACH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,kBAAkB,CAAC,sBAAsB,CAAC,EACjD,OAAO,EAAE,wBAAwB,CAAC,0BAA0B,CAAC,EAC7D,SAAS,GAAE;IACT,WAAW,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACvB,GACL,OAAO,CAAC,iBAAiB,CAAC,CA6F5B"}