@flowdesk/core 0.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.
Files changed (121) hide show
  1. package/dist/agent-profiles.d.ts +38 -0
  2. package/dist/agent-profiles.d.ts.map +1 -0
  3. package/dist/agent-profiles.js +138 -0
  4. package/dist/agent-profiles.js.map +1 -0
  5. package/dist/audit.d.ts +11 -0
  6. package/dist/audit.d.ts.map +1 -0
  7. package/dist/audit.js +65 -0
  8. package/dist/audit.js.map +1 -0
  9. package/dist/bootstrap-foundation.d.ts +83 -0
  10. package/dist/bootstrap-foundation.d.ts.map +1 -0
  11. package/dist/bootstrap-foundation.js +773 -0
  12. package/dist/bootstrap-foundation.js.map +1 -0
  13. package/dist/chat-routing.d.ts +15 -0
  14. package/dist/chat-routing.d.ts.map +1 -0
  15. package/dist/chat-routing.js +172 -0
  16. package/dist/chat-routing.js.map +1 -0
  17. package/dist/command-manifest.d.ts +39 -0
  18. package/dist/command-manifest.d.ts.map +1 -0
  19. package/dist/command-manifest.js +240 -0
  20. package/dist/command-manifest.js.map +1 -0
  21. package/dist/config-policy.d.ts +31 -0
  22. package/dist/config-policy.d.ts.map +1 -0
  23. package/dist/config-policy.js +341 -0
  24. package/dist/config-policy.js.map +1 -0
  25. package/dist/fake-runtime.d.ts +68 -0
  26. package/dist/fake-runtime.d.ts.map +1 -0
  27. package/dist/fake-runtime.js +285 -0
  28. package/dist/fake-runtime.js.map +1 -0
  29. package/dist/guard-boundary.d.ts +53 -0
  30. package/dist/guard-boundary.d.ts.map +1 -0
  31. package/dist/guard-boundary.js +220 -0
  32. package/dist/guard-boundary.js.map +1 -0
  33. package/dist/guarded-dry-run.d.ts +46 -0
  34. package/dist/guarded-dry-run.d.ts.map +1 -0
  35. package/dist/guarded-dry-run.js +111 -0
  36. package/dist/guarded-dry-run.js.map +1 -0
  37. package/dist/hook-harness.d.ts +8 -0
  38. package/dist/hook-harness.d.ts.map +1 -0
  39. package/dist/hook-harness.js +130 -0
  40. package/dist/hook-harness.js.map +1 -0
  41. package/dist/index.d.ts +41 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +51 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/lane-observability.d.ts +22 -0
  46. package/dist/lane-observability.d.ts.map +1 -0
  47. package/dist/lane-observability.js +138 -0
  48. package/dist/lane-observability.js.map +1 -0
  49. package/dist/plan.d.ts +37 -0
  50. package/dist/plan.d.ts.map +1 -0
  51. package/dist/plan.js +137 -0
  52. package/dist/plan.js.map +1 -0
  53. package/dist/production-enablement.d.ts +57 -0
  54. package/dist/production-enablement.d.ts.map +1 -0
  55. package/dist/production-enablement.js +259 -0
  56. package/dist/production-enablement.js.map +1 -0
  57. package/dist/provider-failures.d.ts +19 -0
  58. package/dist/provider-failures.d.ts.map +1 -0
  59. package/dist/provider-failures.js +116 -0
  60. package/dist/provider-failures.js.map +1 -0
  61. package/dist/provider-usage-collector.d.ts +60 -0
  62. package/dist/provider-usage-collector.d.ts.map +1 -0
  63. package/dist/provider-usage-collector.js +502 -0
  64. package/dist/provider-usage-collector.js.map +1 -0
  65. package/dist/redaction.d.ts +5 -0
  66. package/dist/redaction.d.ts.map +1 -0
  67. package/dist/redaction.js +11 -0
  68. package/dist/redaction.js.map +1 -0
  69. package/dist/release1-contracts.d.ts +1203 -0
  70. package/dist/release1-contracts.d.ts.map +1 -0
  71. package/dist/release1-contracts.js +256 -0
  72. package/dist/release1-contracts.js.map +1 -0
  73. package/dist/retry.d.ts +21 -0
  74. package/dist/retry.d.ts.map +1 -0
  75. package/dist/retry.js +107 -0
  76. package/dist/retry.js.map +1 -0
  77. package/dist/reviewer-lane-conformance.d.ts +35 -0
  78. package/dist/reviewer-lane-conformance.d.ts.map +1 -0
  79. package/dist/reviewer-lane-conformance.js +124 -0
  80. package/dist/reviewer-lane-conformance.js.map +1 -0
  81. package/dist/schema-artifacts.d.ts +19 -0
  82. package/dist/schema-artifacts.d.ts.map +1 -0
  83. package/dist/schema-artifacts.js +182 -0
  84. package/dist/schema-artifacts.js.map +1 -0
  85. package/dist/schema-registry.d.ts +32 -0
  86. package/dist/schema-registry.d.ts.map +1 -0
  87. package/dist/schema-registry.js +163 -0
  88. package/dist/schema-registry.js.map +1 -0
  89. package/dist/session-evidence.d.ts +71 -0
  90. package/dist/session-evidence.d.ts.map +1 -0
  91. package/dist/session-evidence.js +336 -0
  92. package/dist/session-evidence.js.map +1 -0
  93. package/dist/state-paths.d.ts +20 -0
  94. package/dist/state-paths.d.ts.map +1 -0
  95. package/dist/state-paths.js +72 -0
  96. package/dist/state-paths.js.map +1 -0
  97. package/dist/state-store.d.ts +75 -0
  98. package/dist/state-store.d.ts.map +1 -0
  99. package/dist/state-store.js +567 -0
  100. package/dist/state-store.js.map +1 -0
  101. package/dist/status.d.ts +37 -0
  102. package/dist/status.d.ts.map +1 -0
  103. package/dist/status.js +304 -0
  104. package/dist/status.js.map +1 -0
  105. package/dist/tool-contract-fixtures.d.ts +134 -0
  106. package/dist/tool-contract-fixtures.d.ts.map +1 -0
  107. package/dist/tool-contract-fixtures.js +389 -0
  108. package/dist/tool-contract-fixtures.js.map +1 -0
  109. package/dist/top-tier-reviewer-lane-probe.d.ts +10 -0
  110. package/dist/top-tier-reviewer-lane-probe.d.ts.map +1 -0
  111. package/dist/top-tier-reviewer-lane-probe.js +76 -0
  112. package/dist/top-tier-reviewer-lane-probe.js.map +1 -0
  113. package/dist/usage-health.d.ts +44 -0
  114. package/dist/usage-health.d.ts.map +1 -0
  115. package/dist/usage-health.js +105 -0
  116. package/dist/usage-health.js.map +1 -0
  117. package/dist/validators.d.ts +142 -0
  118. package/dist/validators.d.ts.map +1 -0
  119. package/dist/validators.js +1690 -0
  120. package/dist/validators.js.map +1 -0
  121. package/package.json +37 -0
@@ -0,0 +1,567 @@
1
+ import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync, } from "node:fs";
2
+ import { dirname, resolve, sep } from "node:path";
3
+ import { activeAttemptLockPath, attemptRecordPath, checkpointRecordPath, FLOWDESK_WORKFLOW_ACTIVE_PATH, redactedDebugManifestPath, sessionAuditPath, sessionLanesPath, validateFlowDeskRelativeStatePath, workflowRecordPath, } from "./state-paths.js";
4
+ import { invalid, valid, validateActiveAttemptLockV1, validateAttemptRecordV1, validateAuditRecordV1, validateCheckpointRecordV1, validateDebugExportManifestV1, validateLaneRecordV1, validateSessionRecordCannotReplaceWorkflowState, validateWorkflowActiveV1, validateWorkflowRecordV1, } from "./validators.js";
5
+ const workflowSchemas = new Set([
6
+ "flowdesk.workflow_active.v1",
7
+ "flowdesk.workflow_record.v1",
8
+ "flowdesk.attempt_record.v1",
9
+ "flowdesk.checkpoint_record.v1",
10
+ "flowdesk.active_attempt_lock.v1",
11
+ ]);
12
+ const sessionSchemas = new Set([
13
+ "flowdesk.lane_record.v1",
14
+ "flowdesk.audit_record.v1",
15
+ "flowdesk.debug_export_manifest.v1",
16
+ ]);
17
+ const disabledDurableStateAuthority = {
18
+ realOpenCodeDispatch: false,
19
+ actualLaneLaunch: false,
20
+ providerCall: false,
21
+ runtimeExecution: false,
22
+ };
23
+ function cloneRecord(record) {
24
+ return JSON.parse(JSON.stringify(record));
25
+ }
26
+ function intentFor(args) {
27
+ const pathResult = validateFlowDeskRelativeStatePath(args.path);
28
+ if (!pathResult.ok)
29
+ return { ok: false, errors: pathResult.errors };
30
+ const tempPath = `${args.path}.tmp-${args.schemaId.replace(/[^A-Za-z0-9_.-]/g, "-")}`;
31
+ const tempPathResult = validateFlowDeskRelativeStatePath(tempPath, "temp path");
32
+ if (!tempPathResult.ok)
33
+ return { ok: false, errors: tempPathResult.errors };
34
+ return {
35
+ ok: true,
36
+ errors: [],
37
+ record: cloneRecord(args.record),
38
+ writeIntent: {
39
+ operation: args.operation,
40
+ path: args.path,
41
+ schemaId: args.schemaId,
42
+ authority: args.authority,
43
+ record: cloneRecord(args.record),
44
+ serialization: args.operation === "append_jsonl" ? "jsonl" : "json",
45
+ fsSafety: "validated_relative_flowdesk_path_only",
46
+ atomicity: {
47
+ strategy: "temp_then_rename_intent",
48
+ tempPath,
49
+ },
50
+ },
51
+ };
52
+ }
53
+ function failedFromThrown(error) {
54
+ return invalid(error instanceof Error ? error.message : "state path preparation failed");
55
+ }
56
+ function validateWriteIntentRecord(intent, options = {}) {
57
+ if (intent.schemaId !==
58
+ intent.record.schema_version)
59
+ return invalid("intent schemaId must match record schema_version");
60
+ if (workflowSchemas.has(intent.schemaId) &&
61
+ intent.authority !== "authoritative_workflow_state")
62
+ return invalid("workflow state schema requires authoritative workflow authority");
63
+ if (sessionSchemas.has(intent.schemaId) &&
64
+ intent.authority !== "redacted_session_support")
65
+ return invalid("session schema requires redacted session support authority");
66
+ switch (intent.schemaId) {
67
+ case "flowdesk.workflow_active.v1": {
68
+ const recordResult = validateWorkflowActiveV1(intent.record);
69
+ if (!recordResult.ok)
70
+ return recordResult;
71
+ if (intent.operation !== "write_json" ||
72
+ intent.serialization !== "json" ||
73
+ intent.path !== FLOWDESK_WORKFLOW_ACTIVE_PATH)
74
+ return invalid("workflow-active intent target is invalid");
75
+ return valid();
76
+ }
77
+ case "flowdesk.workflow_record.v1": {
78
+ const record = intent.record;
79
+ const recordResult = validateWorkflowRecordV1(record);
80
+ if (!recordResult.ok)
81
+ return recordResult;
82
+ if (intent.operation !== "write_json" ||
83
+ intent.serialization !== "json" ||
84
+ intent.path !== workflowRecordPath(record.workflow_id))
85
+ return invalid("workflow-record intent target is invalid");
86
+ return valid();
87
+ }
88
+ case "flowdesk.attempt_record.v1": {
89
+ const record = intent.record;
90
+ const recordResult = validateAttemptRecordV1(record);
91
+ if (!recordResult.ok)
92
+ return recordResult;
93
+ if (intent.operation !== "write_json" ||
94
+ intent.serialization !== "json" ||
95
+ intent.path !== attemptRecordPath(record.workflow_id, record.attempt_id))
96
+ return invalid("attempt-record intent target is invalid");
97
+ return valid();
98
+ }
99
+ case "flowdesk.checkpoint_record.v1": {
100
+ const record = intent.record;
101
+ const recordResult = validateCheckpointRecordV1(record);
102
+ if (!recordResult.ok)
103
+ return recordResult;
104
+ if (intent.operation !== "write_json" ||
105
+ intent.serialization !== "json" ||
106
+ intent.path !==
107
+ checkpointRecordPath(record.workflow_id, record.checkpoint_id))
108
+ return invalid("checkpoint-record intent target is invalid");
109
+ return valid();
110
+ }
111
+ case "flowdesk.active_attempt_lock.v1": {
112
+ const record = intent.record;
113
+ const recordResult = validateActiveAttemptLockV1(record, options.now);
114
+ if (!recordResult.ok)
115
+ return recordResult;
116
+ if (intent.operation !== "write_json" ||
117
+ intent.serialization !== "json" ||
118
+ intent.path !== activeAttemptLockPath(record.workflow_id))
119
+ return invalid("active-attempt-lock intent target is invalid");
120
+ return valid();
121
+ }
122
+ case "flowdesk.lane_record.v1": {
123
+ const recordResult = validateLaneRecordV1(intent.record);
124
+ if (!recordResult.ok)
125
+ return recordResult;
126
+ if (intent.operation !== "append_jsonl" ||
127
+ intent.serialization !== "jsonl" ||
128
+ !intent.path.startsWith(".flowdesk/sessions/") ||
129
+ !intent.path.endsWith("/lanes.jsonl"))
130
+ return invalid("lane-record intent target is invalid");
131
+ return validateSessionRecordCannotReplaceWorkflowState(intent.record);
132
+ }
133
+ case "flowdesk.audit_record.v1": {
134
+ const recordResult = validateAuditRecordV1(intent.record);
135
+ if (!recordResult.ok)
136
+ return recordResult;
137
+ if (intent.operation !== "append_jsonl" ||
138
+ intent.serialization !== "jsonl" ||
139
+ !intent.path.startsWith(".flowdesk/sessions/") ||
140
+ !intent.path.endsWith("/audit.jsonl"))
141
+ return invalid("audit-record intent target is invalid");
142
+ return validateSessionRecordCannotReplaceWorkflowState(intent.record);
143
+ }
144
+ case "flowdesk.debug_export_manifest.v1": {
145
+ const recordResult = validateDebugExportManifestV1(intent.record);
146
+ if (!recordResult.ok)
147
+ return recordResult;
148
+ if (intent.operation !== "write_json" ||
149
+ intent.serialization !== "json" ||
150
+ !intent.path.startsWith(".flowdesk/sessions/") ||
151
+ !intent.path.endsWith("/redacted-debug/manifest.json"))
152
+ return invalid("debug-export-manifest intent target is invalid");
153
+ return validateSessionRecordCannotReplaceWorkflowState(intent.record);
154
+ }
155
+ default:
156
+ return invalid("intent schemaId is not a supported persisted state schema");
157
+ }
158
+ }
159
+ export function validateFlowDeskStateWriteIntent(intent, options = {}) {
160
+ if (typeof intent !== "object" || intent === null || Array.isArray(intent))
161
+ return invalid("intent must be an object");
162
+ const candidate = intent;
163
+ const errors = [];
164
+ if (candidate.operation !== "write_json" &&
165
+ candidate.operation !== "append_jsonl")
166
+ errors.push("intent operation is invalid");
167
+ if (candidate.authority !== "authoritative_workflow_state" &&
168
+ candidate.authority !== "redacted_session_support")
169
+ errors.push("intent authority is invalid");
170
+ if (typeof candidate.schemaId !== "string")
171
+ errors.push("intent schemaId is invalid");
172
+ const pathResult = validateFlowDeskRelativeStatePath(candidate.path, "intent path");
173
+ if (!pathResult.ok)
174
+ errors.push(...pathResult.errors);
175
+ if (candidate.fsSafety !== "validated_relative_flowdesk_path_only")
176
+ errors.push("intent must be relative-path safe");
177
+ if (candidate.atomicity?.strategy !== "temp_then_rename_intent")
178
+ errors.push("intent must describe temp-then-rename atomicity");
179
+ const tempPathResult = validateFlowDeskRelativeStatePath(candidate.atomicity?.tempPath, "intent temp path");
180
+ if (!tempPathResult.ok)
181
+ errors.push(...tempPathResult.errors);
182
+ if (typeof candidate.path === "string" &&
183
+ typeof candidate.atomicity?.tempPath === "string" &&
184
+ !candidate.atomicity.tempPath.startsWith(`${candidate.path}.tmp-`))
185
+ errors.push("intent temp path must be derived from target path");
186
+ if (candidate.record === undefined)
187
+ errors.push("intent record is required");
188
+ if (errors.length > 0)
189
+ return invalid(...errors);
190
+ return validateWriteIntentRecord(candidate, options);
191
+ }
192
+ export function prepareWorkflowActiveWriteIntent(record, expected) {
193
+ const result = validateWorkflowActiveV1(record, expected);
194
+ if (!result.ok)
195
+ return result;
196
+ return intentFor({
197
+ operation: "write_json",
198
+ path: FLOWDESK_WORKFLOW_ACTIVE_PATH,
199
+ schemaId: record.schema_version,
200
+ authority: "authoritative_workflow_state",
201
+ record,
202
+ });
203
+ }
204
+ export function prepareWorkflowRecordWriteIntent(record) {
205
+ const result = validateWorkflowRecordV1(record);
206
+ if (!result.ok)
207
+ return result;
208
+ try {
209
+ return intentFor({
210
+ operation: "write_json",
211
+ path: workflowRecordPath(record.workflow_id),
212
+ schemaId: record.schema_version,
213
+ authority: "authoritative_workflow_state",
214
+ record,
215
+ });
216
+ }
217
+ catch (error) {
218
+ return failedFromThrown(error);
219
+ }
220
+ }
221
+ export function prepareAttemptRecordWriteIntent(record) {
222
+ const result = validateAttemptRecordV1(record);
223
+ if (!result.ok)
224
+ return result;
225
+ try {
226
+ return intentFor({
227
+ operation: "write_json",
228
+ path: attemptRecordPath(record.workflow_id, record.attempt_id),
229
+ schemaId: record.schema_version,
230
+ authority: "authoritative_workflow_state",
231
+ record,
232
+ });
233
+ }
234
+ catch (error) {
235
+ return failedFromThrown(error);
236
+ }
237
+ }
238
+ export function prepareCheckpointRecordWriteIntent(record, options) {
239
+ const result = validateCheckpointRecordV1(record);
240
+ if (!result.ok)
241
+ return result;
242
+ if (options?.source !== "durable_workflow_state")
243
+ return invalid("authoritative checkpoint writes require durable workflow state source");
244
+ try {
245
+ return intentFor({
246
+ operation: "write_json",
247
+ path: checkpointRecordPath(record.workflow_id, record.checkpoint_id),
248
+ schemaId: record.schema_version,
249
+ authority: "authoritative_workflow_state",
250
+ record,
251
+ });
252
+ }
253
+ catch (error) {
254
+ return failedFromThrown(error);
255
+ }
256
+ }
257
+ export function prepareActiveAttemptLockWriteIntent(record, now = Date.now()) {
258
+ const result = validateActiveAttemptLockV1(record, now);
259
+ if (!result.ok)
260
+ return result;
261
+ try {
262
+ return intentFor({
263
+ operation: "write_json",
264
+ path: activeAttemptLockPath(record.workflow_id),
265
+ schemaId: record.schema_version,
266
+ authority: "authoritative_workflow_state",
267
+ record,
268
+ });
269
+ }
270
+ catch (error) {
271
+ return failedFromThrown(error);
272
+ }
273
+ }
274
+ export function prepareLaneRecordWriteIntent(sessionId, record) {
275
+ const result = validateLaneRecordV1(record);
276
+ if (!result.ok)
277
+ return result;
278
+ const authorityResult = validateSessionRecordCannotReplaceWorkflowState(record);
279
+ if (!authorityResult.ok)
280
+ return authorityResult;
281
+ try {
282
+ return intentFor({
283
+ operation: "append_jsonl",
284
+ path: sessionLanesPath(sessionId),
285
+ schemaId: record.schema_version,
286
+ authority: "redacted_session_support",
287
+ record,
288
+ });
289
+ }
290
+ catch (error) {
291
+ return failedFromThrown(error);
292
+ }
293
+ }
294
+ export function prepareAuditRecordWriteIntent(sessionId, record) {
295
+ const result = validateAuditRecordV1(record);
296
+ if (!result.ok)
297
+ return result;
298
+ const authorityResult = validateSessionRecordCannotReplaceWorkflowState(record);
299
+ if (!authorityResult.ok)
300
+ return authorityResult;
301
+ try {
302
+ return intentFor({
303
+ operation: "append_jsonl",
304
+ path: sessionAuditPath(sessionId),
305
+ schemaId: record.schema_version,
306
+ authority: "redacted_session_support",
307
+ record,
308
+ });
309
+ }
310
+ catch (error) {
311
+ return failedFromThrown(error);
312
+ }
313
+ }
314
+ export function prepareDebugExportManifestWriteIntent(sessionId, record) {
315
+ const result = validateDebugExportManifestV1(record);
316
+ if (!result.ok)
317
+ return result;
318
+ const authorityResult = validateSessionRecordCannotReplaceWorkflowState(record);
319
+ if (!authorityResult.ok)
320
+ return authorityResult;
321
+ try {
322
+ return intentFor({
323
+ operation: "write_json",
324
+ path: redactedDebugManifestPath(sessionId),
325
+ schemaId: record.schema_version,
326
+ authority: "redacted_session_support",
327
+ record,
328
+ });
329
+ }
330
+ catch (error) {
331
+ return failedFromThrown(error);
332
+ }
333
+ }
334
+ export function createFlowDeskStateWritePlan(intents, options = {}) {
335
+ const errors = [];
336
+ for (const intent of intents) {
337
+ const intentResult = validateFlowDeskStateWriteIntent(intent, options);
338
+ if (!intentResult.ok)
339
+ errors.push(...intentResult.errors);
340
+ }
341
+ if (errors.length > 0)
342
+ return invalid(...errors);
343
+ return { ...valid(), plan: { intents: cloneRecord([...intents]) } };
344
+ }
345
+ export function applyWriteIntentsToInMemoryState(intents, initial, options = {}) {
346
+ const plan = createFlowDeskStateWritePlan(intents, options);
347
+ if (!plan.ok || plan.plan === undefined)
348
+ throw new Error(plan.errors.join("; "));
349
+ const state = new Map(initial ?? []);
350
+ for (const intent of plan.plan.intents) {
351
+ const serialized = JSON.stringify(intent.record);
352
+ if (intent.operation === "append_jsonl") {
353
+ const current = state.get(intent.path);
354
+ state.set(intent.path, current === undefined || current.length === 0
355
+ ? `${serialized}\n`
356
+ : `${current}${serialized}\n`);
357
+ }
358
+ else {
359
+ state.set(intent.path, serialized);
360
+ }
361
+ }
362
+ return state;
363
+ }
364
+ function resolveFlowDeskTarget(rootDir, relativePath) {
365
+ const root = resolve(rootDir);
366
+ const target = resolve(root, relativePath);
367
+ const temp = resolve(root, `${relativePath}.tmp-${Date.now().toString(36)}`);
368
+ const rootPrefix = root.endsWith(sep) ? root : `${root}${sep}`;
369
+ if (target !== root && !target.startsWith(rootPrefix))
370
+ throw new Error("durable state target escapes rootDir");
371
+ if (temp !== root && !temp.startsWith(rootPrefix))
372
+ throw new Error("durable state temp target escapes rootDir");
373
+ return { root, target, temp };
374
+ }
375
+ function resolveFlowDeskReadTarget(rootDir, relativePath) {
376
+ const pathResult = validateFlowDeskRelativeStatePath(relativePath);
377
+ if (!pathResult.ok)
378
+ throw new Error(pathResult.errors.join("; "));
379
+ const root = resolve(rootDir);
380
+ const target = resolve(root, relativePath);
381
+ const rootPrefix = root.endsWith(sep) ? root : `${root}${sep}`;
382
+ if (target !== root && !target.startsWith(rootPrefix))
383
+ throw new Error("durable state target escapes rootDir");
384
+ return { root, target };
385
+ }
386
+ function readOptionalJson(rootDir, relativePath) {
387
+ try {
388
+ const resolved = resolveFlowDeskReadTarget(rootDir, relativePath);
389
+ if (!existsSync(resolved.target))
390
+ return { ok: true, root: resolved.root };
391
+ return {
392
+ ok: true,
393
+ record: JSON.parse(readFileSync(resolved.target, "utf8")),
394
+ root: resolved.root,
395
+ };
396
+ }
397
+ catch (error) {
398
+ return {
399
+ ok: false,
400
+ errors: [
401
+ error instanceof Error ? error.message : "durable state read failed",
402
+ ],
403
+ };
404
+ }
405
+ }
406
+ function readOptionalJsonl(rootDir, relativePath) {
407
+ try {
408
+ const resolved = resolveFlowDeskReadTarget(rootDir, relativePath);
409
+ if (!existsSync(resolved.target))
410
+ return { ok: true, records: [], root: resolved.root };
411
+ const records = readFileSync(resolved.target, "utf8")
412
+ .split("\n")
413
+ .map((line) => line.trim())
414
+ .filter((line) => line.length > 0)
415
+ .map((line) => JSON.parse(line));
416
+ return { ok: true, records, root: resolved.root };
417
+ }
418
+ catch (error) {
419
+ return {
420
+ ok: false,
421
+ errors: [
422
+ error instanceof Error ? error.message : "durable state read failed",
423
+ ],
424
+ };
425
+ }
426
+ }
427
+ export function loadFlowDeskDurableWorkflowState(rootDir, options = {}) {
428
+ if (typeof rootDir !== "string" || rootDir.trim().length === 0)
429
+ return {
430
+ ...invalid("rootDir is required"),
431
+ ...disabledDurableStateAuthority,
432
+ };
433
+ const activeRead = readOptionalJson(rootDir, FLOWDESK_WORKFLOW_ACTIVE_PATH);
434
+ if (!activeRead.ok)
435
+ return {
436
+ ...invalid(...activeRead.errors),
437
+ ...disabledDurableStateAuthority,
438
+ };
439
+ const root = activeRead.root;
440
+ let active;
441
+ if (activeRead.record !== undefined) {
442
+ const activeResult = validateWorkflowActiveV1(activeRead.record);
443
+ if (!activeResult.ok)
444
+ return {
445
+ ...invalid(...activeResult.errors),
446
+ rootDir: root,
447
+ ...disabledDurableStateAuthority,
448
+ };
449
+ active = activeRead.record;
450
+ }
451
+ const workflowId = options.workflowId ?? active?.active_workflow_id;
452
+ if (workflowId === undefined)
453
+ return {
454
+ ...valid(),
455
+ rootDir: root,
456
+ snapshot: { laneRecords: [] },
457
+ ...disabledDurableStateAuthority,
458
+ };
459
+ const workflowRead = readOptionalJson(rootDir, workflowRecordPath(workflowId));
460
+ if (!workflowRead.ok)
461
+ return {
462
+ ...invalid(...workflowRead.errors),
463
+ rootDir: root,
464
+ ...disabledDurableStateAuthority,
465
+ };
466
+ let workflow;
467
+ if (workflowRead.record !== undefined) {
468
+ const workflowResult = validateWorkflowRecordV1(workflowRead.record);
469
+ if (!workflowResult.ok)
470
+ return {
471
+ ...invalid(...workflowResult.errors),
472
+ rootDir: root,
473
+ ...disabledDurableStateAuthority,
474
+ };
475
+ workflow = workflowRead.record;
476
+ }
477
+ let currentAttempt;
478
+ if (workflow?.current_attempt_id !== undefined) {
479
+ const attemptRead = readOptionalJson(rootDir, attemptRecordPath(workflow.workflow_id, workflow.current_attempt_id));
480
+ if (!attemptRead.ok)
481
+ return {
482
+ ...invalid(...attemptRead.errors),
483
+ rootDir: root,
484
+ ...disabledDurableStateAuthority,
485
+ };
486
+ if (attemptRead.record !== undefined) {
487
+ const attemptResult = validateAttemptRecordV1(attemptRead.record);
488
+ if (!attemptResult.ok)
489
+ return {
490
+ ...invalid(...attemptResult.errors),
491
+ rootDir: root,
492
+ ...disabledDurableStateAuthority,
493
+ };
494
+ currentAttempt = attemptRead.record;
495
+ }
496
+ }
497
+ const laneRead = readOptionalJsonl(rootDir, sessionLanesPath(options.sessionId ?? "session-local"));
498
+ if (!laneRead.ok)
499
+ return {
500
+ ...invalid(...laneRead.errors),
501
+ rootDir: root,
502
+ ...disabledDurableStateAuthority,
503
+ };
504
+ const laneRecords = [];
505
+ for (const record of laneRead.records) {
506
+ const laneResult = validateLaneRecordV1(record);
507
+ if (!laneResult.ok)
508
+ return {
509
+ ...invalid(...laneResult.errors),
510
+ rootDir: root,
511
+ ...disabledDurableStateAuthority,
512
+ };
513
+ const lane = record;
514
+ if (lane.workflow_id === workflowId)
515
+ laneRecords.push(lane);
516
+ }
517
+ return {
518
+ ...valid(),
519
+ rootDir: root,
520
+ snapshot: {
521
+ ...(active?.active_workflow_id === workflowId ? { active } : {}),
522
+ ...(workflow === undefined ? {} : { workflow }),
523
+ ...(currentAttempt === undefined ? {} : { currentAttempt }),
524
+ laneRecords,
525
+ },
526
+ ...disabledDurableStateAuthority,
527
+ };
528
+ }
529
+ export function applyWriteIntentsToDurableState(rootDir, intents, options = {}) {
530
+ if (typeof rootDir !== "string" || rootDir.trim().length === 0)
531
+ return {
532
+ ...invalid("rootDir is required"),
533
+ ...disabledDurableStateAuthority,
534
+ };
535
+ const plan = createFlowDeskStateWritePlan(intents, options);
536
+ if (!plan.ok || plan.plan === undefined)
537
+ return { ...invalid(...plan.errors), ...disabledDurableStateAuthority };
538
+ const writtenPaths = [];
539
+ try {
540
+ const root = resolve(rootDir);
541
+ for (const intent of plan.plan.intents) {
542
+ const resolved = resolveFlowDeskTarget(root, intent.path);
543
+ mkdirSync(dirname(resolved.target), { recursive: true });
544
+ const serialized = JSON.stringify(intent.record);
545
+ const content = intent.operation === "append_jsonl" && existsSync(resolved.target)
546
+ ? `${readFileSync(resolved.target, "utf8")}${serialized}\n`
547
+ : `${serialized}${intent.operation === "append_jsonl" ? "\n" : ""}`;
548
+ writeFileSync(resolved.temp, content, "utf8");
549
+ renameSync(resolved.temp, resolved.target);
550
+ writtenPaths.push(intent.path);
551
+ }
552
+ return {
553
+ ...valid(),
554
+ rootDir: root,
555
+ writtenPaths,
556
+ ...disabledDurableStateAuthority,
557
+ };
558
+ }
559
+ catch (error) {
560
+ return {
561
+ ...invalid(error instanceof Error ? error.message : "durable state write failed"),
562
+ writtenPaths,
563
+ ...disabledDurableStateAuthority,
564
+ };
565
+ }
566
+ }
567
+ //# sourceMappingURL=state-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state-store.js","sourceRoot":"","sources":["../src/state-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { FlowDeskAttemptRecordV1, FlowDeskCheckpointRecordV1, FlowDeskLaneRecordV1, FlowDeskProviderHealthSnapshotV1, FlowDeskStatusLaneSummaryV1, FlowDeskStatusRequestV1, FlowDeskStatusResponseV1, FlowDeskStatusSummaryArtifactV1, FlowDeskWorkflowActiveV1, FlowDeskWorkflowRecordV1, OpaqueId, OpaqueRef, ProviderHealthSummaryV1 } from "./release1-contracts.js";
2
+ import { type ValidationResult } from "./validators.js";
3
+ export interface LaneRecordStatusConversionOptionsV1 {
4
+ planRevisionId?: OpaqueId;
5
+ logRef?: OpaqueRef;
6
+ }
7
+ export interface FlowDeskStatusCommandInputV1 {
8
+ request: FlowDeskStatusRequestV1;
9
+ active?: FlowDeskWorkflowActiveV1;
10
+ workflow?: FlowDeskWorkflowRecordV1;
11
+ currentAttempt?: FlowDeskAttemptRecordV1;
12
+ checkpoint?: FlowDeskCheckpointRecordV1;
13
+ laneRecords?: readonly FlowDeskLaneRecordV1[];
14
+ laneSummaries?: readonly FlowDeskStatusLaneSummaryV1[];
15
+ providerHealthSnapshot?: FlowDeskProviderHealthSnapshotV1;
16
+ providerHealthSummary?: ProviderHealthSummaryV1;
17
+ statusSummaryArtifact?: FlowDeskStatusSummaryArtifactV1;
18
+ auditRef?: OpaqueRef;
19
+ debugRef?: OpaqueRef;
20
+ laneRefs?: readonly OpaqueRef[];
21
+ now?: number;
22
+ }
23
+ export interface FlowDeskStatusCommandEvaluationV1 extends ValidationResult {
24
+ response: FlowDeskStatusResponseV1;
25
+ laneSummaries: FlowDeskStatusLaneSummaryV1[];
26
+ providerHealthSummary: ProviderHealthSummaryV1;
27
+ }
28
+ export declare function providerHealthSnapshotToSummaryV1(snapshot: FlowDeskProviderHealthSnapshotV1): ProviderHealthSummaryV1;
29
+ export declare function laneRecordToStatusLaneSummaryV1(record: FlowDeskLaneRecordV1, options?: LaneRecordStatusConversionOptionsV1): FlowDeskStatusLaneSummaryV1;
30
+ export declare function buildFlowDeskStatusResponseV1(input: FlowDeskStatusCommandInputV1): FlowDeskStatusResponseV1;
31
+ export declare function evaluateFlowDeskStatusCommandV1(input: FlowDeskStatusCommandInputV1): FlowDeskStatusCommandEvaluationV1;
32
+ export declare function buildFlowDeskStatusSummaryArtifactV1(response: FlowDeskStatusResponseV1, options?: {
33
+ statusSummaryRef?: OpaqueRef;
34
+ usageSummaryRef?: OpaqueRef;
35
+ providerHealthSummaryRef?: OpaqueRef;
36
+ }): FlowDeskStatusSummaryArtifactV1;
37
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,uBAAuB,EACvB,0BAA0B,EAC1B,oBAAoB,EACpB,gCAAgC,EAChC,2BAA2B,EAC3B,uBAAuB,EACvB,wBAAwB,EACxB,+BAA+B,EAC/B,wBAAwB,EACxB,wBAAwB,EACxB,QAAQ,EACR,SAAS,EACT,uBAAuB,EAIxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,gBAAgB,EAetB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,mCAAmC;IAClD,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,uBAAuB,CAAC;IACjC,MAAM,CAAC,EAAE,wBAAwB,CAAC;IAClC,QAAQ,CAAC,EAAE,wBAAwB,CAAC;IACpC,cAAc,CAAC,EAAE,uBAAuB,CAAC;IACzC,UAAU,CAAC,EAAE,0BAA0B,CAAC;IACxC,WAAW,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC9C,aAAa,CAAC,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACvD,sBAAsB,CAAC,EAAE,gCAAgC,CAAC;IAC1D,qBAAqB,CAAC,EAAE,uBAAuB,CAAC;IAChD,qBAAqB,CAAC,EAAE,+BAA+B,CAAC;IACxD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iCAAkC,SAAQ,gBAAgB;IACzE,QAAQ,EAAE,wBAAwB,CAAC;IACnC,aAAa,EAAE,2BAA2B,EAAE,CAAC;IAC7C,qBAAqB,EAAE,uBAAuB,CAAC;CAChD;AA+BD,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,gCAAgC,GAAG,uBAAuB,CAUrH;AAED,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,oBAAoB,EAAE,OAAO,GAAE,mCAAwC,GAAG,2BAA2B,CA4B5J;AA2ID,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,4BAA4B,GAAG,wBAAwB,CAuC3G;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,4BAA4B,GAAG,iCAAiC,CAOtH;AAED,wBAAgB,oCAAoC,CAAC,QAAQ,EAAE,wBAAwB,EAAE,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAAC,eAAe,CAAC,EAAE,SAAS,CAAC;IAAC,wBAAwB,CAAC,EAAE,SAAS,CAAA;CAAO,GAAG,+BAA+B,CAe3O"}