@claudexor/schema 5.0.1 → 5.1.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.
- package/dist/account-routing-evidence.d.ts +256 -0
- package/dist/account-routing-evidence.d.ts.map +1 -1
- package/dist/account-routing-evidence.js +27 -2
- package/dist/account-routing-evidence.js.map +1 -1
- package/dist/agent-capabilities.d.ts +3 -0
- package/dist/agent-capabilities.d.ts.map +1 -1
- package/dist/agent-capabilities.js +6 -2
- package/dist/agent-capabilities.js.map +1 -1
- package/dist/attachment.d.ts +103 -6
- package/dist/attachment.d.ts.map +1 -1
- package/dist/attachment.js +32 -6
- package/dist/attachment.js.map +1 -1
- package/dist/browser-evidence.d.ts +85 -0
- package/dist/browser-evidence.d.ts.map +1 -0
- package/dist/browser-evidence.js +72 -0
- package/dist/browser-evidence.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/control-gc.d.ts +30 -0
- package/dist/control-gc.d.ts.map +1 -1
- package/dist/control-gc.js +28 -1
- package/dist/control-gc.js.map +1 -1
- package/dist/control-operation-responses.d.ts +438 -36
- package/dist/control-operation-responses.d.ts.map +1 -1
- package/dist/control-operation-responses.js +11 -2
- package/dist/control-operation-responses.js.map +1 -1
- package/dist/control-process-scope.d.ts +34 -0
- package/dist/control-process-scope.d.ts.map +1 -1
- package/dist/control-process-scope.js +13 -0
- package/dist/control-process-scope.js.map +1 -1
- package/dist/control-run-detail.d.ts +785 -89
- package/dist/control-run-detail.d.ts.map +1 -1
- package/dist/control-run-event-part.d.ts +3 -3
- package/dist/control-run-failure.d.ts +29 -6
- package/dist/control-run-failure.d.ts.map +1 -1
- package/dist/control-run-failure.js +28 -3
- package/dist/control-run-failure.js.map +1 -1
- package/dist/control-trust.d.ts +8 -0
- package/dist/control-trust.d.ts.map +1 -1
- package/dist/control-trust.js +4 -0
- package/dist/control-trust.js.map +1 -1
- package/dist/control-web-evidence.d.ts +125 -0
- package/dist/control-web-evidence.d.ts.map +1 -0
- package/dist/control-web-evidence.js +109 -0
- package/dist/control-web-evidence.js.map +1 -0
- package/dist/control.d.ts +292 -98
- package/dist/control.d.ts.map +1 -1
- package/dist/control.js +43 -49
- package/dist/control.js.map +1 -1
- package/dist/credential-profile.d.ts +4 -3
- package/dist/credential-profile.d.ts.map +1 -1
- package/dist/credential-profile.js +4 -3
- package/dist/credential-profile.js.map +1 -1
- package/dist/decision.d.ts +9 -9
- package/dist/decision.d.ts.map +1 -1
- package/dist/decision.js +2 -0
- package/dist/decision.js.map +1 -1
- package/dist/deferred-message.d.ts +646 -0
- package/dist/deferred-message.d.ts.map +1 -1
- package/dist/deferred-message.js +16 -2
- package/dist/deferred-message.js.map +1 -1
- package/dist/events.d.ts +10 -10
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +6 -0
- package/dist/events.js.map +1 -1
- package/dist/harness-confinement.js +1 -1
- package/dist/harness-confinement.js.map +1 -1
- package/dist/harness-input.d.ts +12 -0
- package/dist/harness-input.d.ts.map +1 -1
- package/dist/harness-input.js +11 -1
- package/dist/harness-input.js.map +1 -1
- package/dist/harness-interaction.d.ts +20 -0
- package/dist/harness-interaction.d.ts.map +1 -1
- package/dist/harness-interaction.js +36 -0
- package/dist/harness-interaction.js.map +1 -1
- package/dist/harness.d.ts +95 -19
- package/dist/harness.d.ts.map +1 -1
- package/dist/harness.js +16 -15
- package/dist/harness.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-run-result.d.ts +363 -50
- package/dist/mcp-run-result.d.ts.map +1 -1
- package/dist/mcp-run-wait.d.ts +133 -7
- package/dist/mcp-run-wait.d.ts.map +1 -1
- package/dist/operation.d.ts +1 -1
- package/dist/operation.d.ts.map +1 -1
- package/dist/operation.js +1 -1
- package/dist/operation.js.map +1 -1
- package/dist/process-scope.d.ts +154 -0
- package/dist/process-scope.d.ts.map +1 -1
- package/dist/process-scope.js +16 -1
- package/dist/process-scope.js.map +1 -1
- package/dist/quota.d.ts +14 -0
- package/dist/quota.d.ts.map +1 -1
- package/dist/quota.js +14 -0
- package/dist/quota.js.map +1 -1
- package/dist/rate-limit.d.ts +3 -0
- package/dist/rate-limit.d.ts.map +1 -1
- package/dist/rate-limit.js +4 -0
- package/dist/rate-limit.js.map +1 -1
- package/dist/raw.d.ts.map +1 -1
- package/dist/raw.js +11 -5
- package/dist/raw.js.map +1 -1
- package/dist/route-controls.d.ts +49 -0
- package/dist/route-controls.d.ts.map +1 -0
- package/dist/route-controls.js +53 -0
- package/dist/route-controls.js.map +1 -0
- package/dist/route-health.d.ts +23 -23
- package/dist/route-health.js +1 -1
- package/dist/route-health.js.map +1 -1
- package/dist/run-continuation.d.ts +6 -6
- package/dist/run-continuity.d.ts +7 -7
- package/dist/run-continuity.d.ts.map +1 -1
- package/dist/run-continuity.js +2 -1
- package/dist/run-continuity.js.map +1 -1
- package/dist/run-facts.d.ts +5 -5
- package/dist/run-facts.js +1 -1
- package/dist/run-facts.js.map +1 -1
- package/dist/status-projection.d.ts +3 -2
- package/dist/status-projection.d.ts.map +1 -1
- package/dist/status-projection.js +5 -2
- package/dist/status-projection.js.map +1 -1
- package/dist/task-group.d.ts +3 -0
- package/dist/task-group.d.ts.map +1 -1
- package/dist/task-group.js +11 -1
- package/dist/task-group.js.map +1 -1
- package/dist/task.d.ts +2 -2
- package/dist/task.d.ts.map +1 -1
- package/dist/task.js +4 -4
- package/dist/task.js.map +1 -1
- package/dist/telemetry.d.ts +602 -117
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +17 -88
- package/dist/telemetry.js.map +1 -1
- package/dist/thread-export.d.ts +847 -0
- package/dist/thread-export.d.ts.map +1 -0
- package/dist/thread-export.js +238 -0
- package/dist/thread-export.js.map +1 -0
- package/dist/thread-history.d.ts +248 -132
- package/dist/thread-history.d.ts.map +1 -1
- package/dist/thread.d.ts +72 -6
- package/dist/thread.d.ts.map +1 -1
- package/dist/thread.js +19 -3
- package/dist/thread.js.map +1 -1
- package/dist/tool-ref.d.ts +172 -21
- package/dist/tool-ref.d.ts.map +1 -1
- package/dist/tool-ref.js +114 -29
- package/dist/tool-ref.js.map +1 -1
- package/dist/web-evidence.d.ts +91 -0
- package/dist/web-evidence.d.ts.map +1 -0
- package/dist/web-evidence.js +77 -0
- package/dist/web-evidence.js.map +1 -0
- package/dist/workspace-preparation.d.ts +54 -0
- package/dist/workspace-preparation.d.ts.map +1 -0
- package/dist/workspace-preparation.js +59 -0
- package/dist/workspace-preparation.js.map +1 -0
- package/dist/workspace.js +1 -1
- package/dist/workspace.js.map +1 -1
- package/generated/AgentCapabilityCatalog.schema.json +20 -2
- package/generated/ControlAccountRoutingEvidenceResponse.schema.json +61 -1
- package/generated/ControlCredentialProfilesQueryResponse.schema.json +2 -2
- package/generated/ControlCredentialProfilesResourcesResponse.schema.json +2 -2
- package/generated/ControlCredentialProfilesSnapshotResponse.schema.json +2 -2
- package/generated/ControlGcLastResponse.schema.json +22 -0
- package/generated/ControlGcReceipt.schema.json +13 -1
- package/generated/ControlHarnessListResponse.schema.json +2 -2
- package/generated/ControlQueuedRunInfo.schema.json +1 -1
- package/generated/ControlResource.schema.json +5 -0
- package/generated/ControlResourceRelease.schema.json +44 -0
- package/generated/ControlResourceReleaseRequest.schema.json +27 -0
- package/generated/ControlRetainedEnvelope.schema.json +2 -1
- package/generated/ControlRouteHealth.schema.json +13 -1
- package/generated/ControlRunControlResponse.schema.json +41 -3
- package/generated/ControlRunDecisionRequest.schema.json +8 -2
- package/generated/ControlRunDecisionResponse.schema.json +4 -3
- package/generated/ControlRunDetail.schema.json +337 -10
- package/generated/ControlRunEventPart.schema.json +1 -0
- package/generated/ControlRunListResponse.schema.json +296 -7
- package/generated/ControlRunRetryResponse.schema.json +1 -1
- package/generated/ControlRunStartInfo.schema.json +1 -1
- package/generated/ControlRunStartResponse.schema.json +2 -2
- package/generated/ControlRunSummary.schema.json +296 -7
- package/generated/ControlThreadDetail.schema.json +1 -0
- package/generated/ControlThreadTurnResponse.schema.json +9 -0
- package/generated/ControlTrustListResponse.schema.json +8 -0
- package/generated/ControlTrustState.schema.json +8 -0
- package/generated/ControlUploadImport.schema.json +12 -2
- package/generated/ControlUploadImportRequest.schema.json +5 -0
- package/generated/DecisionRecord.schema.json +1 -0
- package/generated/DeferredMessageDetail.schema.json +43 -7
- package/generated/DeferredMessageProjection.schema.json +41 -3
- package/generated/DeferredMessageReadResult.schema.json +42 -4
- package/generated/DeferredMessageReceipt.schema.json +41 -3
- package/generated/EnvelopeCustody.schema.json +3 -2
- package/generated/GlobalConfig.schema.json +1 -1
- package/generated/HarnessEvent.schema.json +140 -4
- package/generated/HarnessManifest.schema.json +2 -2
- package/generated/HarnessStatusDto.schema.json +2 -2
- package/generated/McpAccountsToolResult.schema.json +62 -2
- package/generated/McpRunHandleResult.schema.json +90 -6
- package/generated/McpRunToolResult.schema.json +89 -6
- package/generated/McpRunWaitResult.schema.json +42 -3
- package/generated/McpThreadTurnResult.schema.json +9 -0
- package/generated/RawContextPacket.schema.json +6 -4
- package/generated/RawGitPatchEnvelope.schema.json +1 -1
- package/generated/RoutePoolDegradedPayload.schema.json +2 -1
- package/generated/RunContinuityReceipt.schema.json +2 -1
- package/generated/RunEvent.schema.json +1 -0
- package/generated/RunFacts.schema.json +1 -0
- package/generated/RunFailure.schema.json +46 -2
- package/generated/RunResumable.schema.json +2 -1
- package/generated/RunTelemetry.schema.json +288 -7
- package/generated/TaskContract.schema.json +3 -3
- package/generated/TaskGroupReceipt.schema.json +1 -1
- package/generated/Thread.schema.json +41 -0
- package/generated/ThreadExportManifest.schema.json +461 -0
- package/generated/ThreadExportReceipt.schema.json +94 -0
- package/generated/ThreadHistoryPage.schema.json +47 -2
- package/generated/ThreadRetireAbandonRequest.schema.json +21 -0
- package/generated/ThreadRetireRequest.schema.json +41 -0
- package/generated/ThreadRetirement.schema.json +175 -0
- package/generated/ThreadTurn.schema.json +1 -1
- package/generated/WorkspaceEnvelope.schema.json +1 -1
- package/generated/WorkspacePreparedPayload.schema.json +67 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread-export.d.ts","sourceRoot":"","sources":["../src/thread-export.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exact thread export and conditional retirement. One schema-defined producer
|
|
3
|
+
* (the engine) and the in-repo `claudexor thread export|retire` consumer; a
|
|
4
|
+
* host that keeps the bundle speaks the same contract. Catalog presence of
|
|
5
|
+
* `POST /v2/threads/:id/retire` is the feature marker (INV-138).
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod/v3";
|
|
8
|
+
import { sha256 } from "@claudexor/util";
|
|
9
|
+
import { Id, IsoTimestamp } from "./primitives.js";
|
|
10
|
+
import { ControlHandshakeResponse } from "./operation.js";
|
|
11
|
+
import { ThreadRetirementAcceptance, ThreadState, WorkspaceMode } from "./thread.js";
|
|
12
|
+
export const THREAD_EXPORT_SCHEMA_VERSION = 1;
|
|
13
|
+
const storeId = ControlHandshakeResponse.shape.storeId.unwrap();
|
|
14
|
+
const digest = z.string().regex(/^sha256:[0-9a-f]{64}$/);
|
|
15
|
+
const count = z.number().int().nonnegative();
|
|
16
|
+
/** Every reason a closure is held back. Any gap makes the export partial and
|
|
17
|
+
* forbids retirement; an unknown state never becomes an empty success. */
|
|
18
|
+
export const ThreadExportGapCode = z.enum([
|
|
19
|
+
"closure_not_quiescent",
|
|
20
|
+
"closure_awaiting_decision",
|
|
21
|
+
"closure_partition_unavailable",
|
|
22
|
+
"command_record_not_retained",
|
|
23
|
+
"run_directory_missing",
|
|
24
|
+
"run_files_expired",
|
|
25
|
+
"run_tree_unreadable",
|
|
26
|
+
"run_observations_unreadable",
|
|
27
|
+
"attachment_unavailable",
|
|
28
|
+
"native_session_unattributed",
|
|
29
|
+
"native_session_unsupported",
|
|
30
|
+
"native_format_unqualified",
|
|
31
|
+
"native_session_missing",
|
|
32
|
+
"native_session_unreadable",
|
|
33
|
+
"native_projection_failed",
|
|
34
|
+
"lane_unreadable",
|
|
35
|
+
"lane_credentials_undeclared",
|
|
36
|
+
"isolated_worktree_present",
|
|
37
|
+
]);
|
|
38
|
+
export const ThreadExportGap = z
|
|
39
|
+
.object({
|
|
40
|
+
code: ThreadExportGapCode,
|
|
41
|
+
subject: z.string().min(1).describe("The exact run, session, path or lane this gap names."),
|
|
42
|
+
message: z.string().min(1),
|
|
43
|
+
})
|
|
44
|
+
.strict();
|
|
45
|
+
export const ThreadExportItemPlane = z
|
|
46
|
+
.enum(["sql", "run", "native", "lane", "resource", "projection"])
|
|
47
|
+
.describe("sql: engine records; run: the run tree; native: vendor session material; lane: the thread's lane directory (what retirement deletes); resource: attachment bytes; projection: decoded text of a compressed original, kept beside it.");
|
|
48
|
+
export const ThreadExportItemKind = z
|
|
49
|
+
.enum(["file", "symlink", "special", "credential_store"])
|
|
50
|
+
.describe("file: exact bytes to transfer. symlink: recorded, never followed. special: a FIFO or socket, recorded. credential_store: an exact engine or vendor credential path, never opened or exported.");
|
|
51
|
+
export const ThreadExportItem = z
|
|
52
|
+
.object({
|
|
53
|
+
itemId: z.string().regex(/^i[0-9a-f]{32}$/),
|
|
54
|
+
plane: ThreadExportItemPlane,
|
|
55
|
+
path: z
|
|
56
|
+
.string()
|
|
57
|
+
.min(1)
|
|
58
|
+
.describe("Relative POSIX path: the item's complete name and, with its plane, its identity; distinct copies stay distinct. A volume may be unable to name it, so a consumer may keep the bytes elsewhere and record that place."),
|
|
59
|
+
kind: ThreadExportItemKind,
|
|
60
|
+
sizeBytes: count.nullable(),
|
|
61
|
+
mtimeMs: z.number().nullable(),
|
|
62
|
+
sha256: digest
|
|
63
|
+
.nullable()
|
|
64
|
+
.describe("Known before transfer for engine records, attachments, projections and symlink text; otherwise the transfer's ETag."),
|
|
65
|
+
projectionOf: z.string().nullable().describe("The itemId this projection decodes."),
|
|
66
|
+
linkTarget: z.string().nullable().describe("A symlink's own text; its target is never read."),
|
|
67
|
+
})
|
|
68
|
+
.strict();
|
|
69
|
+
export const ThreadExportSessionSource = z.enum([
|
|
70
|
+
"attempt_event",
|
|
71
|
+
"run_event",
|
|
72
|
+
"reviewer_stream",
|
|
73
|
+
"session_capsule",
|
|
74
|
+
"run_resumable",
|
|
75
|
+
"thread_session",
|
|
76
|
+
]);
|
|
77
|
+
export const ThreadExportSession = z
|
|
78
|
+
.object({
|
|
79
|
+
harness: z.string().min(1),
|
|
80
|
+
nativeSessionId: z.string().min(1),
|
|
81
|
+
status: z.enum(["exported", "missing", "unsupported", "unqualified", "unreadable"]),
|
|
82
|
+
provenance: z.array(z
|
|
83
|
+
.object({
|
|
84
|
+
source: ThreadExportSessionSource,
|
|
85
|
+
runId: z.string().nullable(),
|
|
86
|
+
attemptId: z.string().nullable(),
|
|
87
|
+
profileId: z.string().nullable().describe("Null when the record names no profile."),
|
|
88
|
+
cwd: z.string().nullable(),
|
|
89
|
+
})
|
|
90
|
+
.strict()),
|
|
91
|
+
copies: z
|
|
92
|
+
.array(z.object({ storeKey: z.string().min(1), profileId: z.string().nullable() }).strict())
|
|
93
|
+
.describe("Every store holding material of this exact session."),
|
|
94
|
+
})
|
|
95
|
+
.strict();
|
|
96
|
+
export const ThreadExportManifest = z
|
|
97
|
+
.object({
|
|
98
|
+
schemaVersion: z.literal(THREAD_EXPORT_SCHEMA_VERSION),
|
|
99
|
+
storeId,
|
|
100
|
+
threadId: Id,
|
|
101
|
+
exportId: digest.describe("Identity of this closure, inventory and gap list."),
|
|
102
|
+
closureDigest: digest.describe("Identity of the closure's engine records alone."),
|
|
103
|
+
threadState: ThreadState,
|
|
104
|
+
headRevision: count,
|
|
105
|
+
workspaceMode: WorkspaceMode,
|
|
106
|
+
coverage: z.enum(["complete", "partial"]).describe("complete exactly when gaps is empty."),
|
|
107
|
+
retirable: z.boolean().describe("Retirement can be requested for this manifest."),
|
|
108
|
+
gaps: z.array(ThreadExportGap),
|
|
109
|
+
disclosures: z
|
|
110
|
+
.array(z
|
|
111
|
+
.object({
|
|
112
|
+
harness: z.string().min(1),
|
|
113
|
+
source: z.string().min(1),
|
|
114
|
+
reason: z.string().min(1),
|
|
115
|
+
})
|
|
116
|
+
.strict())
|
|
117
|
+
.describe("Known vendor state outside this export because no record binds it to these sessions. Named so it is never mistaken for covered; it does not block retirement."),
|
|
118
|
+
closure: z
|
|
119
|
+
.object({
|
|
120
|
+
turns: z.array(z
|
|
121
|
+
.object({
|
|
122
|
+
turnId: Id,
|
|
123
|
+
ordinal: count,
|
|
124
|
+
runId: z.string().nullable(),
|
|
125
|
+
promptSha256: z.string(),
|
|
126
|
+
})
|
|
127
|
+
.strict()),
|
|
128
|
+
runs: z.array(z
|
|
129
|
+
.object({
|
|
130
|
+
jobId: z.string(),
|
|
131
|
+
runId: z.string().nullable(),
|
|
132
|
+
state: z.string(),
|
|
133
|
+
kind: z.string(),
|
|
134
|
+
threadId: z.string().nullable(),
|
|
135
|
+
turnId: z.string().nullable(),
|
|
136
|
+
continueFrom: z.string().nullable(),
|
|
137
|
+
delegatedFrom: z.string().nullable(),
|
|
138
|
+
})
|
|
139
|
+
.strict()),
|
|
140
|
+
})
|
|
141
|
+
.strict(),
|
|
142
|
+
sessions: z.array(ThreadExportSession),
|
|
143
|
+
items: z.array(ThreadExportItem),
|
|
144
|
+
})
|
|
145
|
+
.strict()
|
|
146
|
+
.superRefine((value, ctx) => {
|
|
147
|
+
if ((value.coverage === "complete") !== (value.gaps.length === 0))
|
|
148
|
+
ctx.addIssue({ code: z.ZodIssueCode.custom, message: "coverage disagrees with gaps" });
|
|
149
|
+
if (value.retirable && value.coverage !== "complete")
|
|
150
|
+
ctx.addIssue({ code: z.ZodIssueCode.custom, message: "a partial export cannot retire" });
|
|
151
|
+
});
|
|
152
|
+
/** Written last by the consumer: what it received and verified, item by item. */
|
|
153
|
+
export const ThreadExportReceipt = z
|
|
154
|
+
.object({
|
|
155
|
+
schemaVersion: z.literal(THREAD_EXPORT_SCHEMA_VERSION),
|
|
156
|
+
storeId,
|
|
157
|
+
threadId: Id,
|
|
158
|
+
exportId: digest,
|
|
159
|
+
closureDigest: digest,
|
|
160
|
+
contentDigest: digest,
|
|
161
|
+
laneDigest: digest,
|
|
162
|
+
coverage: z.enum(["complete", "partial"]),
|
|
163
|
+
retirable: z.boolean(),
|
|
164
|
+
transferred: z.array(z
|
|
165
|
+
.object({
|
|
166
|
+
itemId: z.string(),
|
|
167
|
+
path: z.string().describe("The item's complete manifest path."),
|
|
168
|
+
placedAt: z
|
|
169
|
+
.string()
|
|
170
|
+
.min(1)
|
|
171
|
+
.optional()
|
|
172
|
+
.describe("Where in this bundle the bytes are, when its volume cannot name `path`. Absent: at `path`."),
|
|
173
|
+
sizeBytes: count,
|
|
174
|
+
sha256: digest,
|
|
175
|
+
})
|
|
176
|
+
.strict()),
|
|
177
|
+
})
|
|
178
|
+
.strict();
|
|
179
|
+
export const ThreadRetireRequest = z
|
|
180
|
+
.object({
|
|
181
|
+
operationId: Id.describe("The caller's durable release intent. Exactly one outcome is ever bound to it."),
|
|
182
|
+
exportId: digest,
|
|
183
|
+
closureDigest: digest,
|
|
184
|
+
contentDigest: digest.describe("threadExportDigest over every byte the caller received."),
|
|
185
|
+
laneDigest: digest.describe("threadExportDigest over the lane plane of the same transfer."),
|
|
186
|
+
})
|
|
187
|
+
.strict();
|
|
188
|
+
export const ThreadRetireAbandonRequest = z
|
|
189
|
+
.object({ operationId: Id })
|
|
190
|
+
.strict()
|
|
191
|
+
.describe("Settle an unanswered operation: it can never be accepted after this returns.");
|
|
192
|
+
export const ThreadRetirementOperation = z
|
|
193
|
+
.object({
|
|
194
|
+
operationId: Id,
|
|
195
|
+
outcome: z.enum(["accepted", "refused", "abandoned"]),
|
|
196
|
+
code: z.string().nullable().describe("The refusal's code; null when accepted or abandoned."),
|
|
197
|
+
message: z.string().nullable(),
|
|
198
|
+
settledAt: IsoTimestamp,
|
|
199
|
+
})
|
|
200
|
+
.strict()
|
|
201
|
+
.describe("The one outcome bound to this operation; an absent record settles nothing.");
|
|
202
|
+
export const ThreadRetirement = z
|
|
203
|
+
.object({
|
|
204
|
+
schemaVersion: z.literal(THREAD_EXPORT_SCHEMA_VERSION),
|
|
205
|
+
storeId,
|
|
206
|
+
threadId: Id,
|
|
207
|
+
threadState: ThreadState,
|
|
208
|
+
status: z
|
|
209
|
+
.enum(["not_accepted", "accepted_pending_removal", "removed"])
|
|
210
|
+
.describe("accepted_pending_removal: durably purged; the named originals can no longer be promised back while cleanup is open. removed: every directory the purge owner deletes is gone."),
|
|
211
|
+
acceptance: ThreadRetirementAcceptance.nullable(),
|
|
212
|
+
cleanup: z
|
|
213
|
+
.object({ reason: z.string().nullable() })
|
|
214
|
+
.strict()
|
|
215
|
+
.nullable()
|
|
216
|
+
.describe("Present while removal is open; reason names the last failed attempt."),
|
|
217
|
+
operation: ThreadRetirementOperation.nullable().describe("The addressed operation's settled outcome. Null means no outcome is bound yet: an in-flight request may still settle it, so null never releases a caller's intent."),
|
|
218
|
+
})
|
|
219
|
+
.strict();
|
|
220
|
+
/** Stable across reads of the same inventory, so a resumed transfer keeps its work. */
|
|
221
|
+
export function threadExportItemId(plane, path) {
|
|
222
|
+
return `i${sha256(`${plane}\0${path}`).slice("sha256:".length, "sha256:".length + 32)}`;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* The one digest formula: `<itemId> <sha256 hex> <size>\n` per file or symlink,
|
|
226
|
+
* ordered by itemId bytes, hashed as UTF-8. A consumer computes it from what it
|
|
227
|
+
* received; the engine from what is on disk at acceptance. They agree only when
|
|
228
|
+
* those bytes are the same.
|
|
229
|
+
*/
|
|
230
|
+
export function threadExportDigest(entries) {
|
|
231
|
+
const lines = entries.map(({ itemId, sha256: hash, sizeBytes }) => `${itemId} ${hash.slice("sha256:".length)} ${sizeBytes}\n`);
|
|
232
|
+
return sha256(lines.sort((a, b) => (a < b ? -1 : a > b ? 1 : 0)).join(""));
|
|
233
|
+
}
|
|
234
|
+
/** A symlink's digest identity: its own text, since its target is never read. */
|
|
235
|
+
export function threadExportLinkIdentity(target) {
|
|
236
|
+
return { sha256: sha256(target), sizeBytes: Buffer.byteLength(target) };
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=thread-export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread-export.js","sourceRoot":"","sources":["../src/thread-export.ts"],"names":[],"mappings":"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"}
|