@excitedjs/agent-runtime-claude-code 0.6.0-beta.179 → 0.6.0-beta.182
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/activity/budget.d.ts +8 -0
- package/dist/activity/budget.d.ts.map +1 -0
- package/dist/activity/budget.js +9 -0
- package/dist/activity/budget.js.map +1 -0
- package/dist/{transcript → activity}/cursor.d.ts +2 -2
- package/dist/activity/cursor.d.ts.map +1 -0
- package/dist/{transcript → activity}/cursor.js +11 -11
- package/dist/activity/cursor.js.map +1 -0
- package/dist/activity/error.d.ts +16 -0
- package/dist/activity/error.d.ts.map +1 -0
- package/dist/activity/error.js +22 -0
- package/dist/activity/error.js.map +1 -0
- package/dist/activity/native-hash.d.ts.map +1 -0
- package/dist/activity/native-hash.js.map +1 -0
- package/dist/{transcript → activity}/opened-file.d.ts +3 -3
- package/dist/activity/opened-file.d.ts.map +1 -0
- package/dist/{transcript → activity}/opened-file.js +16 -16
- package/dist/activity/opened-file.js.map +1 -0
- package/dist/activity/parallel-tools.d.ts +6 -0
- package/dist/activity/parallel-tools.d.ts.map +1 -0
- package/dist/activity/parallel-tools.js.map +1 -0
- package/dist/activity/path.d.ts +25 -0
- package/dist/activity/path.d.ts.map +1 -0
- package/dist/{transcript → activity}/path.js +32 -32
- package/dist/activity/path.js.map +1 -0
- package/dist/activity/reader.d.ts +16 -0
- package/dist/activity/reader.d.ts.map +1 -0
- package/dist/{transcript → activity}/reader.js +120 -161
- package/dist/activity/reader.js.map +1 -0
- package/dist/activity/rewrites.d.ts.map +1 -0
- package/dist/activity/rewrites.js.map +1 -0
- package/dist/admission-classify.d.ts +7 -0
- package/dist/admission-classify.d.ts.map +1 -0
- package/dist/admission-classify.js +17 -0
- package/dist/admission-classify.js.map +1 -0
- package/dist/diagnostic.d.ts +2 -2
- package/dist/diagnostic.d.ts.map +1 -1
- package/dist/index.d.ts +1 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp-config.d.ts +1 -0
- package/dist/mcp-config.d.ts.map +1 -1
- package/dist/mcp-config.js +5 -0
- package/dist/mcp-config.js.map +1 -1
- package/dist/provider.d.ts +28 -40
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +32 -61
- package/dist/provider.js.map +1 -1
- package/dist/runtime-deps.d.ts +7 -11
- package/dist/runtime-deps.d.ts.map +1 -1
- package/dist/runtime-session.d.ts +0 -9
- package/dist/runtime-session.d.ts.map +1 -1
- package/dist/runtime-session.js +0 -14
- package/dist/runtime-session.js.map +1 -1
- package/dist/runtime-submissions.d.ts +3 -4
- package/dist/runtime-submissions.d.ts.map +1 -1
- package/dist/runtime-submissions.js +0 -3
- package/dist/runtime-submissions.js.map +1 -1
- package/dist/runtime.d.ts +67 -34
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +175 -166
- package/dist/runtime.js.map +1 -1
- package/package.json +3 -3
- package/dist/source-reservation.d.ts +0 -6
- package/dist/source-reservation.d.ts.map +0 -1
- package/dist/source-reservation.js +0 -48
- package/dist/source-reservation.js.map +0 -1
- package/dist/transcript/budget.d.ts +0 -8
- package/dist/transcript/budget.d.ts.map +0 -1
- package/dist/transcript/budget.js +0 -9
- package/dist/transcript/budget.js.map +0 -1
- package/dist/transcript/completion.d.ts +0 -8
- package/dist/transcript/completion.d.ts.map +0 -1
- package/dist/transcript/completion.js +0 -57
- package/dist/transcript/completion.js.map +0 -1
- package/dist/transcript/cursor.d.ts.map +0 -1
- package/dist/transcript/cursor.js.map +0 -1
- package/dist/transcript/error.d.ts +0 -9
- package/dist/transcript/error.d.ts.map +0 -1
- package/dist/transcript/error.js +0 -9
- package/dist/transcript/error.js.map +0 -1
- package/dist/transcript/native-hash.d.ts.map +0 -1
- package/dist/transcript/native-hash.js.map +0 -1
- package/dist/transcript/opened-file.d.ts.map +0 -1
- package/dist/transcript/opened-file.js.map +0 -1
- package/dist/transcript/parallel-tools.d.ts +0 -6
- package/dist/transcript/parallel-tools.d.ts.map +0 -1
- package/dist/transcript/parallel-tools.js.map +0 -1
- package/dist/transcript/path.d.ts +0 -25
- package/dist/transcript/path.d.ts.map +0 -1
- package/dist/transcript/path.js.map +0 -1
- package/dist/transcript/reader.d.ts +0 -7
- package/dist/transcript/reader.d.ts.map +0 -1
- package/dist/transcript/reader.js.map +0 -1
- package/dist/transcript/rewrites.d.ts.map +0 -1
- package/dist/transcript/rewrites.js.map +0 -1
- /package/dist/{transcript → activity}/native-hash.d.ts +0 -0
- /package/dist/{transcript → activity}/native-hash.js +0 -0
- /package/dist/{transcript → activity}/parallel-tools.js +0 -0
- /package/dist/{transcript → activity}/rewrites.d.ts +0 -0
- /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 {
|
|
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 {
|
|
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 {
|
|
2
|
-
import {
|
|
1
|
+
import { isScanDigest, scanDigest, } from '@excitedjs/dreamux-utils';
|
|
2
|
+
import { ClaudeActivityError } from './error.js';
|
|
3
3
|
export function claudeQueryFingerprint(includeTools) {
|
|
4
|
-
return
|
|
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
|
|
29
|
+
throw new ClaudeActivityError('cursor_invalid', 'Claude Code activity cursor is invalid', { cause: error });
|
|
30
30
|
}
|
|
31
31
|
if (!isEnvelope(value)) {
|
|
32
|
-
throw new
|
|
32
|
+
throw new ClaudeActivityError('cursor_invalid', 'Claude Code activity cursor is invalid');
|
|
33
33
|
}
|
|
34
34
|
if (value.fp !== expectedFingerprint) {
|
|
35
|
-
throw new
|
|
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
|
-
|
|
48
|
-
|
|
47
|
+
isScanDigest(record['fp']) &&
|
|
48
|
+
isScanDigest(record['gen']) &&
|
|
49
49
|
Number.isSafeInteger(record['pos']) &&
|
|
50
50
|
record['pos'] >= 0 &&
|
|
51
|
-
|
|
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 ||
|
|
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 {
|
|
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":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { type FileHandle } from 'node:fs/promises';
|
|
2
|
-
export interface
|
|
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
|
|
10
|
-
export declare function validateClaudeSessionEvidence(opened:
|
|
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,
|
|
4
|
-
import {
|
|
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
|
|
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
|
|
20
|
+
throw new ClaudeActivityError('invalid', 'Claude Code activity is not a regular file');
|
|
21
21
|
}
|
|
22
22
|
if (!isPathWithin(canonicalRoot, canonicalPath)) {
|
|
23
|
-
throw new
|
|
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
|
|
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
|
|
47
|
+
if (error instanceof ClaudeActivityError)
|
|
48
48
|
throw error;
|
|
49
|
-
throw new
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
87
|
+
return new ClaudeActivityError('not_found', 'Claude Code activity is unavailable', { cause: error });
|
|
88
88
|
}
|
|
89
89
|
if (code === 'ELOOP') {
|
|
90
|
-
return new
|
|
90
|
+
return new ClaudeActivityError('locator_outside_root', 'Claude Code activity is unavailable for this session', { cause: error });
|
|
91
91
|
}
|
|
92
|
-
return new
|
|
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 {
|
|
7
|
-
import {
|
|
6
|
+
import { createClaudeScanBudget, } from './budget.js';
|
|
7
|
+
import { ClaudeActivityError } from './error.js';
|
|
8
8
|
import { claudeNativePathHash } from './native-hash.js';
|
|
9
|
-
import {
|
|
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
|
|
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
|
|
22
|
+
export async function deriveClaudeHistoryPath(sessionId, cwd, env = process.env) {
|
|
23
23
|
assertSessionId(sessionId);
|
|
24
|
-
const roots =
|
|
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
|
|
29
|
+
export async function locateClaudeHistory(input) {
|
|
30
30
|
assertSessionId(input.sessionId);
|
|
31
|
-
const budget = input.budget ??
|
|
32
|
-
const roots =
|
|
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
|
|
35
|
+
return await validateClaudeHistoryPath(input.locator, input.sessionId, roots);
|
|
36
36
|
}
|
|
37
37
|
catch (error) {
|
|
38
|
-
if (!(error instanceof
|
|
39
|
-
error.
|
|
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
|
|
54
|
+
return await validateClaudeHistoryPath(candidate, input.sessionId, roots);
|
|
55
55
|
}
|
|
56
56
|
catch (error) {
|
|
57
|
-
if (error instanceof
|
|
58
|
-
error.
|
|
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
|
|
64
|
+
throw new ClaudeActivityError('not_found', 'Claude Code activity is unavailable');
|
|
65
65
|
}
|
|
66
|
-
export async function
|
|
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
|
|
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
|
|
73
|
+
const opened = await openClaudeRollout(candidate, canonicalProjects);
|
|
74
74
|
try {
|
|
75
75
|
if (opened.size === 0) {
|
|
76
|
-
throw new
|
|
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
|
|
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
|
|
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
|
|
154
|
+
if (error instanceof ClaudeActivityError)
|
|
155
155
|
throw error;
|
|
156
156
|
if (error.code === 'ENOENT')
|
|
157
157
|
return entries;
|
|
158
|
-
throw new
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
230
|
+
throw new ClaudeActivityError('not_found', 'Claude Code activity root is unavailable', { cause: error });
|
|
231
231
|
}
|
|
232
|
-
throw new
|
|
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
|
|
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
|
|
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":"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"}
|
|
@@ -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"}
|