@claudexor/workspace 4.3.1 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"anchor-store.d.ts","sourceRoot":"","sources":["../src/anchor-store.ts"],"names":[],"mappings":"AAsBA;8EAC8E;AAC9E,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAGjB;AAOD,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM5F;AAoCD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAIjE;AAED;4EAC4E;AAC5E,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAE7E,MAAM,MAAM,oBAAoB,GAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExF;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACjD,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC;CAC/C,GAAG,oBAAoB,CAuBvB;AAED;kDACkD;AAClD,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxB"}
1
+ {"version":3,"file":"anchor-store.d.ts","sourceRoot":"","sources":["../src/anchor-store.ts"],"names":[],"mappings":"AAaA;8EAC8E;AAC9E,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAGjB;AAOD,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM5F;AAiBD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAIjE;AAED;4EAC4E;AAC5E,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAE7E,MAAM,MAAM,oBAAoB,GAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAExF;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;IACjD,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC;CAC/C,GAAG,oBAAoB,CAuBvB;AAED;kDACkD;AAClD,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,GAAG,IAAI,EACzB,WAAW,EAAE,MAAM,GAAG,IAAI,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxB"}
@@ -1,6 +1,6 @@
1
- import { closeSync, existsSync, fsyncSync, openSync, readFileSync, renameSync, unlinkSync, writeSync, } from "node:fs";
1
+ import { existsSync, readFileSync } from "node:fs";
2
2
  import { dirname, join } from "node:path";
3
- import { ensureDir, fsyncDirectory, projectRuntimeDir, sha256 } from "@claudexor/util";
3
+ import { fsyncDirectory, projectRuntimeDir, sha256, writePatchObject } from "@claudexor/util";
4
4
  import { WorkspaceError } from "@claudexor/core";
5
5
  import { diffTrees } from "./git.js";
6
6
  const ANCHOR_ID = /^sha256:[0-9a-f]{64}$/;
@@ -31,7 +31,6 @@ function persistRevertAnchor(repo, patch) {
31
31
  const id = sha256(patch);
32
32
  const target = objectPath(repo, id);
33
33
  const targetDir = dirname(target);
34
- ensureDir(targetDir);
35
34
  if (existsSync(target)) {
36
35
  if (sha256(readFileSync(target, "utf8")) !== id) {
37
36
  throw new WorkspaceError(`revert anchor ${id} failed its content digest`);
@@ -39,28 +38,7 @@ function persistRevertAnchor(repo, patch) {
39
38
  fsyncDirectory(targetDir);
40
39
  return id;
41
40
  }
42
- const temp = `${target}.tmp-${process.pid}-${crypto.randomUUID()}`;
43
- const fd = openSync(temp, "wx", 0o600);
44
- try {
45
- writeSync(fd, patch, undefined, "utf8");
46
- fsyncSync(fd);
47
- }
48
- finally {
49
- closeSync(fd);
50
- }
51
- try {
52
- renameSync(temp, target);
53
- fsyncDirectory(targetDir);
54
- }
55
- catch (error) {
56
- try {
57
- unlinkSync(temp);
58
- }
59
- catch {
60
- // The original rename error is authoritative.
61
- }
62
- throw error;
63
- }
41
+ writePatchObject(projectRuntimeDir(repo), target, patch);
64
42
  return id;
65
43
  }
66
44
  export function readRevertAnchor(repo, id) {
@@ -1 +1 @@
1
- {"version":3,"file":"anchor-store.js","sourceRoot":"","sources":["../src/anchor-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anchor-store.js","sourceRoot":"","sources":["../src/anchor-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,182 @@
1
+ import { SessionCapsule } from "@claudexor/schema";
2
+ export declare function runFilesExpired(runDir: string): boolean;
3
+ export declare function readSessionCapsule(attemptDir: string): SessionCapsule | null;
4
+ export declare function readContinuationEvidence(runDir: string): {
5
+ resumable: {
6
+ cause: "cancelled" | "context_exhausted" | "host_restart" | "input_required" | "other" | "permission_denied" | "pinned_limit" | "pool_exhausted" | "transport" | "vendor_limit" | "wall_clock";
7
+ resetsAt: string | null;
8
+ limitWindow: string | null;
9
+ limitEvidence: "unspecified" | "window" | null;
10
+ carriers: ("native" | "native_moved" | "packet")[];
11
+ limitCode: string | null;
12
+ session: {
13
+ harness: string;
14
+ nativeSessionId: string;
15
+ holderProfileId: string | null;
16
+ } | null;
17
+ workspace: {
18
+ kind: "in_place" | "none" | "retained_envelope";
19
+ root: string | null;
20
+ };
21
+ } | undefined;
22
+ held: {
23
+ attemptId: string;
24
+ capsule: {
25
+ harness: string;
26
+ nativeSessionId: string;
27
+ holderProfileId: string | null;
28
+ file: string | null;
29
+ mtimeMs: number | null;
30
+ sidecars: string[];
31
+ cwd: string;
32
+ requestedModel: string | null;
33
+ };
34
+ } | null;
35
+ attemptId: string;
36
+ attempt: {
37
+ request_refusal?: {
38
+ scope: "turn_text";
39
+ unit: "unicode_scalars";
40
+ source: string;
41
+ kind: "input_too_large";
42
+ limit: number | null;
43
+ actual: number | null;
44
+ native_code: string;
45
+ } | {
46
+ kind: "vendor_cli_too_old";
47
+ native_code: "claude_code_version_too_old";
48
+ source: "claude_stdout";
49
+ binary_path: string | null;
50
+ installed_version: string | null;
51
+ } | undefined;
52
+ effort_resolution?: {
53
+ requested: string | null;
54
+ submitted: string | null;
55
+ resolution: "downward" | "exact" | "floor" | "omitted" | "rejected" | "unverifiable";
56
+ source: "account_catalog" | "adapter" | "live_probe" | "versioned_snapshot";
57
+ parameter: string | null;
58
+ observed: string | null;
59
+ observedSource: string | null;
60
+ reason?: string | undefined;
61
+ } | undefined;
62
+ processing?: {
63
+ requested: "economy" | "fast" | "standard" | null;
64
+ submitted: "economy" | "fast" | "standard" | null;
65
+ submittedNative: string | null;
66
+ observed: "economy" | "fast" | "mixed" | "standard" | "unknown";
67
+ observedNative: string[];
68
+ reason: string | null;
69
+ source: string;
70
+ } | undefined;
71
+ processing_cost_basis?: {
72
+ nativeMode: string | null;
73
+ kind: "cash" | "included" | "paid_credits" | "unknown" | "valuation";
74
+ source: string;
75
+ debit?: "unobserved" | undefined;
76
+ } | undefined;
77
+ usage_cost?: {
78
+ cashUsd: number;
79
+ valuationUsd: number;
80
+ unknownUsd: number;
81
+ cashKnowledge: "estimated" | "exact" | "unknown";
82
+ valuationKnowledge: "estimated" | "exact" | "unknown";
83
+ } | undefined;
84
+ attempt_id: string;
85
+ harness_id: string;
86
+ observed_model: string | null;
87
+ auth_mode: "api_key" | "local_session" | "unknown" | null;
88
+ auth_source: "api_key_env" | "api_key_flag" | "native_session" | "none" | "oauth_token_env" | "provider_auth_file" | null;
89
+ profile_id: string | null;
90
+ requested_model: string | null;
91
+ request_requirements: {
92
+ capability: "browser" | "delegation" | "path_deny";
93
+ harness_id: string;
94
+ eligible: boolean;
95
+ requested: boolean;
96
+ effective: boolean;
97
+ reason: "access_profile_incompatible" | "effective" | "manifest_unsupported" | "not_requested" | "postdiff_only" | "runtime_unavailable" | "web_policy_off";
98
+ evidence_refs: string[];
99
+ }[];
100
+ web: {
101
+ required: boolean;
102
+ policy: "auto" | "cached" | "live" | "off";
103
+ effective_mode: "auto" | "cached" | "live" | "off";
104
+ attempted: boolean;
105
+ satisfied: boolean;
106
+ status: "attempted" | "failed" | "none" | "satisfied" | "unverified";
107
+ verification: "dispatched" | "none" | "verified";
108
+ tool: string | null;
109
+ target: string | null;
110
+ error_summary: string | null;
111
+ };
112
+ tool_errors: {
113
+ tool: string;
114
+ kind: "command" | "file" | "mcp" | "other" | "search" | "web";
115
+ target: string | null;
116
+ summary: string;
117
+ recovered: boolean;
118
+ tool_use_id: string | null;
119
+ }[];
120
+ tool_errors_total: number;
121
+ unrecovered_tool_errors: number;
122
+ statusless_tool_results: number;
123
+ dropped_events: number;
124
+ transient_failures: {
125
+ kind: "network" | "service_unavailable" | "stream_disconnect" | "timeout" | "unknown";
126
+ category: "auth_failed" | "capability_refused" | "config_error" | "process_crash" | "rate_limited" | "timeout" | "unknown_harness_error";
127
+ retryable: boolean;
128
+ retry_delay_ms: number | null;
129
+ http_status: number | null;
130
+ signal: string | null;
131
+ adapter_code: string | null;
132
+ }[];
133
+ outcome: {
134
+ deliverable_present: boolean;
135
+ gates_passed: boolean | null;
136
+ harness_errored: boolean;
137
+ web_required_unsatisfied: boolean;
138
+ delegation_belt_unavailable: boolean;
139
+ tool_warnings_count: number;
140
+ status: "blocked" | "failed" | "success" | "success_with_warnings";
141
+ work_state?: {
142
+ state: "completed" | "incomplete" | "needs_input" | "unverified";
143
+ source: "absent" | "constrained" | "validated";
144
+ required_inputs?: {
145
+ kind: "context" | "credential" | "decision" | "external_dependency" | "file" | "permission";
146
+ locator: string | null;
147
+ description: string;
148
+ }[] | undefined;
149
+ unverified_reason?: "footer_missing" | "footer_not_json" | "footer_not_object" | "legacy_output_invalid" | "report_contradictory" | "report_malformed" | "report_missing" | undefined;
150
+ } | undefined;
151
+ };
152
+ delegation_belt?: {
153
+ requested: boolean;
154
+ server_name: string | null;
155
+ ready: boolean;
156
+ failed: boolean;
157
+ tool_evidence: boolean;
158
+ } | undefined;
159
+ browser?: {
160
+ requested: boolean;
161
+ server_name: string | null;
162
+ attempted: boolean;
163
+ satisfied: boolean;
164
+ failed: boolean;
165
+ unused: boolean;
166
+ } | undefined;
167
+ usage: {
168
+ input_tokens: number | null;
169
+ output_tokens: number | null;
170
+ cached_input_tokens: number | null;
171
+ input_token_usage?: {
172
+ total_tokens: number | null;
173
+ cache_read_tokens: number | null;
174
+ cache_write_tokens: number | null;
175
+ } | undefined;
176
+ };
177
+ } | undefined;
178
+ patch: string;
179
+ output: string;
180
+ hasEvidence: boolean;
181
+ };
182
+ //# sourceMappingURL=continuation-evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continuation-evidence.d.ts","sourceRoot":"","sources":["../src/continuation-evidence.ts"],"names":[],"mappings":"AAIA,OAAO,EAA8B,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAI/E,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAQvD;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAO5E;AAYD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2CtD"}
@@ -0,0 +1,70 @@
1
+ /** Shared evidence facts for admission and the successor's carrier planner. */
2
+ import { existsSync, lstatSync, readdirSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { parse as yamlParse } from "yaml";
5
+ import { RunResumable, RunTelemetry, SessionCapsule } from "@claudexor/schema";
6
+ import { readRunEvents, retainedOutput } from "@claudexor/event-log";
7
+ import { readTextSafe } from "@claudexor/util";
8
+ export function runFilesExpired(runDir) {
9
+ try {
10
+ lstatSync(join(runDir, "tombstone.yaml"));
11
+ return true;
12
+ }
13
+ catch (error) {
14
+ if (error.code === "ENOENT")
15
+ return false;
16
+ throw error;
17
+ }
18
+ }
19
+ export function readSessionCapsule(attemptDir) {
20
+ try {
21
+ const text = readTextSafe(join(attemptDir, "session-capsule.json"));
22
+ return text === null ? null : SessionCapsule.parse(JSON.parse(text));
23
+ }
24
+ catch {
25
+ return null;
26
+ }
27
+ }
28
+ function yaml(path) {
29
+ const text = readTextSafe(path);
30
+ if (text === null)
31
+ return null;
32
+ try {
33
+ return yamlParse(text);
34
+ }
35
+ catch {
36
+ return null;
37
+ }
38
+ }
39
+ export function readContinuationEvidence(runDir) {
40
+ const finalDir = join(runDir, "final");
41
+ const resumable = RunResumable.safeParse(yaml(join(finalDir, "resumable.yaml"))).data;
42
+ const telemetry = RunTelemetry.safeParse(yaml(join(finalDir, "telemetry.yaml"))).data;
43
+ const attemptsDir = join(runDir, "attempts");
44
+ const sessions = existsSync(attemptsDir)
45
+ ? readdirSync(attemptsDir)
46
+ .sort()
47
+ .flatMap((attemptId) => {
48
+ const capsule = readSessionCapsule(join(attemptsDir, attemptId));
49
+ return capsule ? [{ attemptId, capsule }] : [];
50
+ })
51
+ : [];
52
+ const held = sessions.find((entry) => entry.capsule.nativeSessionId === resumable?.session?.nativeSessionId) ??
53
+ sessions.reduce((newest, entry) => newest && (newest.capsule.mtimeMs ?? 0) > (entry.capsule.mtimeMs ?? 0) ? newest : entry, null);
54
+ const attemptId = held?.attemptId ?? telemetry?.final_attempt_id ?? "a01";
55
+ const attempt = telemetry?.attempts.find((entry) => entry.attempt_id === attemptId);
56
+ const patch = readTextSafe(join(attemptsDir, attemptId, "patch.diff")) ??
57
+ readTextSafe(join(finalDir, "patch.diff")) ??
58
+ "";
59
+ const events = readRunEvents(join(runDir, "events.jsonl"));
60
+ const output = readTextSafe(join(finalDir, "answer.md"))?.trim() ||
61
+ readTextSafe(join(finalDir, "retained-output.md"))?.trim() ||
62
+ retainedOutput(events.events, events.malformed) ||
63
+ "";
64
+ const hasEvidence = !!patch.trim() ||
65
+ !!output ||
66
+ events.events.some((event) => event.type === "harness.event" &&
67
+ ["tool_call", "file_change"].includes(String(event.payload["type"])));
68
+ return { resumable, held, attemptId, attempt, patch, output, hasEvidence };
69
+ }
70
+ //# sourceMappingURL=continuation-evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continuation-evidence.js","sourceRoot":"","sources":["../src/continuation-evidence.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import { ContinuationSources } from "@claudexor/schema";
2
2
  export declare function writeContinuationSources(runDir: string, sources: ContinuationSources): void;
3
- export declare function readContinuationSources(runDir: string): ContinuationSources;
3
+ export declare function readContinuationSources(runDir: string, options?: {
4
+ strict?: boolean;
5
+ }): ContinuationSources;
4
6
  export declare function retainedEnvelopeInChain(sources: ContinuationSources): {
5
7
  version: 1;
6
8
  state: "live" | "retained";
@@ -1 +1 @@
1
- {"version":3,"file":"continuation-sources.d.ts","sourceRoot":"","sources":["../src/continuation-sources.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAKxD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAI3F;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAM3E;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;SAMnE"}
1
+ {"version":3,"file":"continuation-sources.d.ts","sourceRoot":"","sources":["../src/continuation-sources.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAKxD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAkB3F;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,mBAAmB,CAYrB;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;SAMnE"}
@@ -1,19 +1,43 @@
1
1
  /** Durable predecessor addresses; custody remains authoritative in each envelope. */
2
- import { mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { closeSync, fsyncSync, mkdirSync, openSync, readFileSync, renameSync, rmSync, writeFileSync, } from "node:fs";
3
+ import { randomUUID } from "node:crypto";
4
+ import { fsyncDirectory } from "@claudexor/util";
3
5
  import { dirname, join } from "node:path";
4
6
  import { ContinuationSources } from "@claudexor/schema";
5
7
  import { retainedEnvelopeOfRun } from "./retained-envelopes.js";
6
8
  const SOURCES_FILE = "context/continuation.json";
7
9
  export function writeContinuationSources(runDir, sources) {
8
10
  const path = join(runDir, SOURCES_FILE);
11
+ const text = JSON.stringify(ContinuationSources.parse(sources)) + "\n";
9
12
  mkdirSync(dirname(path), { recursive: true });
10
- writeFileSync(path, JSON.stringify(ContinuationSources.parse(sources)) + "\n");
13
+ const temp = `${path}.tmp-${randomUUID()}`;
14
+ try {
15
+ const fd = openSync(temp, "wx", 0o600);
16
+ try {
17
+ writeFileSync(fd, text);
18
+ fsyncSync(fd);
19
+ }
20
+ finally {
21
+ closeSync(fd);
22
+ }
23
+ renameSync(temp, path);
24
+ fsyncDirectory(dirname(path));
25
+ }
26
+ finally {
27
+ rmSync(temp, { force: true });
28
+ }
11
29
  }
12
- export function readContinuationSources(runDir) {
30
+ export function readContinuationSources(runDir, options = {}) {
13
31
  try {
14
32
  return ContinuationSources.parse(JSON.parse(readFileSync(join(runDir, SOURCES_FILE), "utf8")));
15
33
  }
16
- catch {
34
+ catch (error) {
35
+ // Absence is normal for a non-continuation. Retirement must distinguish
36
+ // that from unreadable evidence instead of proving false non-ownership.
37
+ if (options.strict && error.code !== "ENOENT")
38
+ throw new Error(`continuation references ${join(runDir, SOURCES_FILE)}: ${String(error)}`, {
39
+ cause: error,
40
+ });
17
41
  return [];
18
42
  }
19
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"continuation-sources.js","sourceRoot":"","sources":["../src/continuation-sources.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,YAAY,GAAG,2BAA2B,CAAC;AAEjD,MAAM,UAAU,wBAAwB,CAAC,MAAc,EAAE,OAA4B;IACnF,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACxC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAc;IACpD,IAAI,CAAC;QACH,OAAO,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACjG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAA4B;IAClE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAChE,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"continuation-sources.js","sourceRoot":"","sources":["../src/continuation-sources.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,MAAM,EACN,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,YAAY,GAAG,2BAA2B,CAAC;AAEjD,MAAM,UAAU,wBAAwB,CAAC,MAAc,EAAE,OAA4B;IACnF,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IACvE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,GAAG,IAAI,QAAQ,UAAU,EAAE,EAAE,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC;YACH,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACxB,SAAS,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC;gBAAS,CAAC;YACT,SAAS,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC;QACD,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvB,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,MAAc,EACd,OAAO,GAAyB,EAAE;IAElC,IAAI,CAAC;QACH,OAAO,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACjG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,wEAAwE;QACxE,wEAAwE;QACxE,IAAI,OAAO,CAAC,MAAM,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YACtE,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE;gBACzF,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;QACL,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAA4B;IAClE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAChE,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
package/dist/index.d.ts CHANGED
@@ -15,4 +15,5 @@ export * from "./directory-workspace.js";
15
15
  export * from "./files-io.js";
16
16
  export * from "./files-apply.js";
17
17
  export * from "./continuation-sources.js";
18
+ export { readContinuationEvidence, readSessionCapsule, runFilesExpired, } from "./continuation-evidence.js";
18
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAE1C,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,eAAe,GAChB,MAAM,4BAA4B,CAAC"}
package/dist/index.js CHANGED
@@ -15,4 +15,5 @@ export * from "./directory-workspace.js";
15
15
  export * from "./files-io.js";
16
16
  export * from "./files-apply.js";
17
17
  export * from "./continuation-sources.js";
18
+ export { readContinuationEvidence, readSessionCapsule, runFilesExpired, } from "./continuation-evidence.js";
18
19
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,2BAA2B,CAAC;AAE1C,OAAO,EACL,wBAAwB,EACxB,kBAAkB,EAClB,eAAe,GAChB,MAAM,4BAA4B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@claudexor/workspace",
3
- "version": "4.3.1",
3
+ "version": "4.4.0",
4
4
  "license": "MIT",
5
5
  "description": "WorkspaceEnvelope manager: git worktree + scoped HOME/harness-config isolation + dirty policy.",
6
6
  "type": "module",
@@ -16,9 +16,11 @@
16
16
  "dist"
17
17
  ],
18
18
  "dependencies": {
19
- "@claudexor/core": "4.3.1",
20
- "@claudexor/schema": "4.3.1",
21
- "@claudexor/util": "4.3.1"
19
+ "yaml": "^2.9.1",
20
+ "@claudexor/core": "4.4.0",
21
+ "@claudexor/event-log": "4.4.0",
22
+ "@claudexor/schema": "4.4.0",
23
+ "@claudexor/util": "4.4.0"
22
24
  },
23
25
  "repository": {
24
26
  "type": "git",