@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
package/dist/status.js ADDED
@@ -0,0 +1,304 @@
1
+ import { mapProviderFailureClassToDiagnosticOutcomeV1 } from "./provider-failures.js";
2
+ import { invalid, valid, validateAttemptRecordV1, validateCheckpointRecordV1, validateLaneRecordV1, validateOpaqueId, validateOpaqueRef, validateProviderHealthSnapshotV1, validateProviderHealthSummaryV1, validateStatusLaneSummaryV1, validateStatusRequestV1, validateStatusResponseV1, validateStatusSummaryArtifactV1, validateWorkflowActiveV1, validateWorkflowRecordV1 } from "./validators.js";
3
+ const statusAndDebugActions = ["/flowdesk-status", "/flowdesk-export-debug"];
4
+ const redactedStatusRemediation = "Refresh durable workflow state and inspect redacted debug output before taking recovery actions.";
5
+ const recoveryBlockingLaneFailures = new Set(["correlation_lost", "telemetry_unavailable"]);
6
+ function isRecord(value) {
7
+ return typeof value === "object" && value !== null && !Array.isArray(value);
8
+ }
9
+ function uniqueActions(actions) {
10
+ return [...new Set(actions)].slice(0, 8);
11
+ }
12
+ function providerUnknownSummary() {
13
+ const diagnostic = mapProviderFailureClassToDiagnosticOutcomeV1("telemetry_ambiguous");
14
+ return {
15
+ provider_family: "unknown",
16
+ availability_state: diagnostic.availability_state,
17
+ failure_class: diagnostic.failure_class,
18
+ dispatchability: diagnostic.dispatchability,
19
+ safe_remediation: diagnostic.safe_remediation
20
+ };
21
+ }
22
+ function providerHealthDispatchabilityForDisplay(snapshot) {
23
+ if (snapshot.availability_state === "healthy" && snapshot.failure_class === "none" && snapshot.freshness === "fresh")
24
+ return "diagnostic_only";
25
+ if (snapshot.availability_state === "degraded")
26
+ return "diagnostic_only";
27
+ return "non_dispatchable";
28
+ }
29
+ export function providerHealthSnapshotToSummaryV1(snapshot) {
30
+ return {
31
+ provider_family: snapshot.provider_family,
32
+ ...(snapshot.model_family === undefined ? {} : { model_family: snapshot.model_family }),
33
+ availability_state: snapshot.availability_state,
34
+ failure_class: snapshot.failure_class,
35
+ dispatchability: providerHealthDispatchabilityForDisplay(snapshot),
36
+ safe_remediation: snapshot.safe_remediation,
37
+ snapshot_ref: snapshot.snapshot_id
38
+ };
39
+ }
40
+ export function laneRecordToStatusLaneSummaryV1(record, options = {}) {
41
+ const planRevisionId = record.plan_revision_id ?? options.planRevisionId ?? "plan-unknown";
42
+ return {
43
+ lane_id: record.lane_id,
44
+ workflow_id: record.workflow_id,
45
+ plan_revision_id: planRevisionId,
46
+ ...(record.attempt_id === undefined ? {} : { attempt_id: record.attempt_id }),
47
+ task_ref: record.task_ref,
48
+ lane_class: record.lane_class,
49
+ state: record.state,
50
+ ...(record.failure_class === undefined ? {} : { failure_class: record.failure_class }),
51
+ ...(record.invocation_ref_kind === undefined ? {} : { invocation_ref_kind: record.invocation_ref_kind }),
52
+ ...(record.retry_count === undefined ? {} : { retry_count: record.retry_count }),
53
+ ...(record.verdict_status === undefined ? {} : { verdict_status: record.verdict_status }),
54
+ safe_next_action: record.safe_next_action,
55
+ refs: [...record.refs],
56
+ created_at: record.created_at,
57
+ ...(record.started_at === undefined ? {} : { started_at: record.started_at }),
58
+ updated_at: record.updated_at,
59
+ ...(record.completed_at === undefined ? {} : { completed_at: record.completed_at }),
60
+ event_refs: [...record.event_refs],
61
+ audit_refs: [...record.audit_refs],
62
+ ...(options.logRef === undefined ? {} : { log_ref: options.logRef }),
63
+ ...(record.observability_ref === undefined
64
+ ? {}
65
+ : { observability_ref: record.observability_ref }),
66
+ ...(record.debug_ref === undefined ? {} : { debug_ref: record.debug_ref })
67
+ };
68
+ }
69
+ function statusForWorkflowState(workflow, checkpoint, recoveryAllowsResumeRetry) {
70
+ if (checkpoint !== undefined && (checkpoint.resume_mode === "abort_only" || (checkpoint.resume_mode !== "status_only" && recoveryAllowsResumeRetry)))
71
+ return "recovery_available";
72
+ if (workflow.state === "blocked" || workflow.state === "verification_failed" || workflow.state === "retry_pending")
73
+ return "blocked";
74
+ return "ready";
75
+ }
76
+ function providerHealthAllowsResumeRetry(summary) {
77
+ return summary.provider_family !== "unknown" && summary.availability_state !== "unknown" && summary.availability_state !== "unavailable" && summary.failure_class === "none" && summary.dispatchability !== "non_dispatchable";
78
+ }
79
+ function laneCorrelationAllowsResumeRetry(workflow, laneSummaries) {
80
+ if (laneSummaries.some((summary) => summary.state === "correlation_lost"))
81
+ return false;
82
+ if (laneSummaries.some((summary) => summary.failure_class !== undefined && recoveryBlockingLaneFailures.has(summary.failure_class)))
83
+ return false;
84
+ const hasLaneRefs = workflow.lane_refs.length > 0 || workflow.latest_lane_summary_refs.length > 0;
85
+ if (!hasLaneRefs)
86
+ return true;
87
+ const authoritativeRefs = new Set([...workflow.lane_refs, ...workflow.latest_lane_summary_refs]);
88
+ return laneSummaries.length > 0 && laneSummaries.every((summary) => summary.refs.some((ref) => authoritativeRefs.has(ref)));
89
+ }
90
+ function checkpointActions(checkpoint, recoveryAllowsResumeRetry) {
91
+ if (checkpoint === undefined)
92
+ return [...statusAndDebugActions];
93
+ if (checkpoint.resume_mode === "resume")
94
+ return recoveryAllowsResumeRetry ? uniqueActions([...statusAndDebugActions, "/flowdesk-resume"]) : [...statusAndDebugActions];
95
+ if (checkpoint.resume_mode === "retry")
96
+ return recoveryAllowsResumeRetry ? uniqueActions([...statusAndDebugActions, "/flowdesk-retry"]) : [...statusAndDebugActions];
97
+ if (checkpoint.resume_mode === "abort_only")
98
+ return uniqueActions([...statusAndDebugActions, "/flowdesk-abort"]);
99
+ return [...statusAndDebugActions];
100
+ }
101
+ function failClosedActions(includeAbort) {
102
+ return includeAbort ? ["/flowdesk-status", "/flowdesk-export-debug", "/flowdesk-abort"] : [...statusAndDebugActions];
103
+ }
104
+ function redactedError(category, safeRemediation) {
105
+ return { category, safe_remediation: safeRemediation };
106
+ }
107
+ function failClosedResponse(input, category, message, includeAbort = false) {
108
+ const requestWorkflowId = input?.request?.workflow_id;
109
+ const activeWorkflowId = input?.active?.active_workflow_id;
110
+ const workflowIdCandidate = input?.workflow?.workflow_id ?? activeWorkflowId ?? requestWorkflowId;
111
+ const workflowId = validateOpaqueId(workflowIdCandidate, "workflow_id").ok ? workflowIdCandidate : undefined;
112
+ const debugRef = validateOpaqueRef(input?.debugRef, "debug_ref").ok ? input?.debugRef : undefined;
113
+ const blocker = {
114
+ category,
115
+ summary: "FlowDesk status failed closed because authoritative workflow state is missing, stale, corrupt, or ambiguous.",
116
+ safe_remediation: redactedStatusRemediation,
117
+ refs: []
118
+ };
119
+ return {
120
+ schema_version: "flowdesk.status.response.v1",
121
+ ok: false,
122
+ status: "blocked",
123
+ ...(workflowId === undefined ? {} : { workflow_id: workflowId }),
124
+ safe_next_actions: failClosedActions(includeAbort),
125
+ user_message: message,
126
+ ...(debugRef === undefined ? {} : { debug_ref: debugRef }),
127
+ workflow_state: "blocked",
128
+ lane_summaries: [],
129
+ provider_health_summary: providerUnknownSummary(),
130
+ blocker,
131
+ error: redactedError(category, redactedStatusRemediation)
132
+ };
133
+ }
134
+ function detailAllowsDebugRefs(detailLevel) {
135
+ return detailLevel === "diagnostic" || detailLevel === "debug_refs" || detailLevel === "lane_refs";
136
+ }
137
+ function appendResultErrors(errors, label, result) {
138
+ if (!result.ok)
139
+ errors.push(...result.errors.map((error) => `${label}: ${error}`));
140
+ }
141
+ function validateStatusInput(input) {
142
+ const errors = [];
143
+ if (!isRecord(input))
144
+ return ["status input is malformed"];
145
+ const now = input.now ?? Date.now();
146
+ appendResultErrors(errors, "request", validateStatusRequestV1(input.request));
147
+ if (input.active === undefined)
148
+ errors.push("authoritative workflow active record is required");
149
+ else
150
+ appendResultErrors(errors, "active", validateWorkflowActiveV1(input.active));
151
+ if (input.workflow === undefined)
152
+ errors.push("authoritative workflow record is required");
153
+ else
154
+ appendResultErrors(errors, "workflow", validateWorkflowRecordV1(input.workflow));
155
+ if (input.currentAttempt !== undefined)
156
+ appendResultErrors(errors, "attempt", validateAttemptRecordV1(input.currentAttempt));
157
+ if (input.checkpoint !== undefined)
158
+ appendResultErrors(errors, "checkpoint", validateCheckpointRecordV1(input.checkpoint));
159
+ if (input.statusSummaryArtifact !== undefined)
160
+ appendResultErrors(errors, "status_summary", validateStatusSummaryArtifactV1(input.statusSummaryArtifact));
161
+ if (input.providerHealthSnapshot !== undefined)
162
+ appendResultErrors(errors, "provider_health_snapshot", validateProviderHealthSnapshotV1(input.providerHealthSnapshot));
163
+ if (input.providerHealthSummary !== undefined)
164
+ appendResultErrors(errors, "provider_health_summary", validateProviderHealthSummaryV1(input.providerHealthSummary));
165
+ if (input.auditRef !== undefined)
166
+ appendResultErrors(errors, "audit_ref", validateOpaqueRef(input.auditRef, "audit_ref"));
167
+ if (input.debugRef !== undefined)
168
+ appendResultErrors(errors, "debug_ref", validateOpaqueRef(input.debugRef, "debug_ref"));
169
+ for (const [index, laneRef] of (input.laneRefs ?? []).entries())
170
+ appendResultErrors(errors, `lane_refs[${index}]`, validateOpaqueRef(laneRef, `lane_refs[${index}]`));
171
+ for (const [index, record] of (input.laneRecords ?? []).entries())
172
+ appendResultErrors(errors, `lane_records[${index}]`, validateLaneRecordV1(record));
173
+ for (const [index, summary] of (input.laneSummaries ?? []).entries())
174
+ appendResultErrors(errors, `lane_summaries[${index}]`, validateStatusLaneSummaryV1(summary));
175
+ const activeWorkflowId = input.active?.active_workflow_id;
176
+ const activeAttemptId = input.active?.active_attempt_id;
177
+ const workflow = input.workflow;
178
+ const requestWorkflowId = input.request?.workflow_id;
179
+ if (requestWorkflowId !== undefined && activeWorkflowId !== undefined && requestWorkflowId !== activeWorkflowId)
180
+ errors.push("request workflow id does not match active workflow");
181
+ if (workflow !== undefined && requestWorkflowId !== undefined && requestWorkflowId !== workflow.workflow_id)
182
+ errors.push("request workflow id does not match workflow record");
183
+ if (workflow !== undefined && activeWorkflowId !== undefined && activeWorkflowId !== workflow.workflow_id)
184
+ errors.push("active workflow id does not match workflow record");
185
+ if (workflow !== undefined && input.active !== undefined && input.active.state !== workflow.state)
186
+ errors.push("active workflow state does not match workflow record state");
187
+ if (input.active !== undefined && input.active.state !== "idle" && activeWorkflowId === undefined)
188
+ errors.push("non-idle active state requires active workflow id");
189
+ const expectedAttemptId = activeAttemptId ?? workflow?.current_attempt_id ?? input.checkpoint?.attempt_id;
190
+ if (expectedAttemptId !== undefined && input.currentAttempt === undefined)
191
+ errors.push("authoritative current attempt record is required");
192
+ if (input.currentAttempt !== undefined) {
193
+ if (workflow !== undefined && input.currentAttempt.workflow_id !== workflow.workflow_id)
194
+ errors.push("attempt workflow id does not match workflow record");
195
+ if (activeAttemptId !== undefined && input.currentAttempt.attempt_id !== activeAttemptId)
196
+ errors.push("attempt id does not match active record");
197
+ if (workflow?.current_attempt_id !== undefined && input.currentAttempt.attempt_id !== workflow.current_attempt_id)
198
+ errors.push("attempt id does not match workflow current attempt");
199
+ }
200
+ if (workflow?.latest_checkpoint_id !== undefined && input.checkpoint === undefined)
201
+ errors.push("latest checkpoint record is required");
202
+ if (input.checkpoint !== undefined) {
203
+ if (workflow !== undefined && input.checkpoint.workflow_id !== workflow.workflow_id)
204
+ errors.push("checkpoint workflow id does not match workflow record");
205
+ if (workflow?.latest_checkpoint_id !== undefined && input.checkpoint.checkpoint_id !== workflow.latest_checkpoint_id)
206
+ errors.push("checkpoint id does not match workflow latest checkpoint");
207
+ if (input.checkpoint.attempt_id !== undefined && input.currentAttempt !== undefined && input.checkpoint.attempt_id !== input.currentAttempt.attempt_id)
208
+ errors.push("checkpoint attempt id does not match current attempt");
209
+ const expiresAt = Date.parse(input.checkpoint.expires_at);
210
+ if (!Number.isFinite(expiresAt) || expiresAt <= now)
211
+ errors.push("checkpoint is stale or has invalid expiry");
212
+ }
213
+ if (input.statusSummaryArtifact !== undefined && workflow !== undefined) {
214
+ if (input.statusSummaryArtifact.workflow_id !== workflow.workflow_id)
215
+ errors.push("status summary workflow id does not match workflow record");
216
+ if (input.statusSummaryArtifact.state !== workflow.state)
217
+ errors.push("status summary state does not match workflow record");
218
+ if (input.statusSummaryArtifact.checkpoint_id !== undefined && input.checkpoint !== undefined && input.statusSummaryArtifact.checkpoint_id !== input.checkpoint.checkpoint_id)
219
+ errors.push("status summary checkpoint id does not match checkpoint record");
220
+ }
221
+ for (const record of input.laneRecords ?? []) {
222
+ if (workflow !== undefined && record.workflow_id !== workflow.workflow_id)
223
+ errors.push("lane record workflow id does not match workflow record");
224
+ if (input.currentAttempt?.attempt_id !== undefined && record.attempt_id !== undefined && record.attempt_id !== input.currentAttempt.attempt_id)
225
+ errors.push("lane record attempt id does not match current attempt");
226
+ if (workflow !== undefined && workflow.latest_lane_summary_refs.length > 0 && !record.refs.some((ref) => workflow.latest_lane_summary_refs.includes(ref)))
227
+ errors.push("lane record refs do not match workflow latest lane summaries");
228
+ }
229
+ for (const summary of input.laneSummaries ?? []) {
230
+ if (workflow !== undefined && summary.workflow_id !== workflow.workflow_id)
231
+ errors.push("lane summary workflow id does not match workflow record");
232
+ if (input.currentAttempt?.attempt_id !== undefined && summary.attempt_id !== undefined && summary.attempt_id !== input.currentAttempt.attempt_id)
233
+ errors.push("lane summary attempt id does not match current attempt");
234
+ if (workflow !== undefined && workflow.latest_lane_summary_refs.length > 0 && !summary.refs.some((ref) => workflow.latest_lane_summary_refs.includes(ref)))
235
+ errors.push("lane summary refs do not match workflow latest lane summaries");
236
+ }
237
+ return errors;
238
+ }
239
+ export function buildFlowDeskStatusResponseV1(input) {
240
+ const inputErrors = validateStatusInput(input);
241
+ if (inputErrors.length > 0) {
242
+ const includeAbort = input?.active?.active_workflow_id !== undefined || input?.workflow?.workflow_id !== undefined;
243
+ return failClosedResponse(input, "state", "FlowDesk could not produce an authoritative status because durable workflow state is missing or ambiguous.", includeAbort);
244
+ }
245
+ const workflow = input.workflow;
246
+ const detailLevel = input.request.detail_level ?? "summary";
247
+ const providerHealthSummary = input.providerHealthSummary ?? (input.providerHealthSnapshot === undefined ? providerUnknownSummary() : providerHealthSnapshotToSummaryV1(input.providerHealthSnapshot));
248
+ const laneSummaries = [
249
+ ...(input.laneSummaries ?? []),
250
+ ...(input.laneRecords ?? []).map((record) => laneRecordToStatusLaneSummaryV1(record, { planRevisionId: workflow.latest_plan_revision_id }))
251
+ ];
252
+ const checkpoint = input.checkpoint;
253
+ const recoveryAllowsResumeRetry = providerHealthAllowsResumeRetry(providerHealthSummary) && laneCorrelationAllowsResumeRetry(workflow, laneSummaries);
254
+ const currentStepId = workflow.current_step_id ?? input.currentAttempt?.step_id ?? checkpoint?.current_step_id;
255
+ const auditRef = input.auditRef ?? (detailAllowsDebugRefs(detailLevel) ? workflow.audit_refs[0] : undefined);
256
+ const laneRefs = detailLevel === "lane_refs" ? [...(input.laneRefs ?? workflow.lane_refs)] : undefined;
257
+ const response = {
258
+ schema_version: "flowdesk.status.response.v1",
259
+ ok: true,
260
+ status: statusForWorkflowState(workflow, checkpoint, recoveryAllowsResumeRetry),
261
+ workflow_id: workflow.workflow_id,
262
+ safe_next_actions: checkpointActions(checkpoint, recoveryAllowsResumeRetry),
263
+ user_message: `FlowDesk status is ${workflow.state}.`,
264
+ ...(auditRef === undefined ? {} : { audit_ref: auditRef }),
265
+ ...(detailAllowsDebugRefs(detailLevel) && input.debugRef !== undefined ? { debug_ref: input.debugRef } : {}),
266
+ ...(laneRefs === undefined ? {} : { lane_refs: laneRefs }),
267
+ workflow_state: workflow.state,
268
+ ...(currentStepId === undefined ? {} : { current_step_id: currentStepId }),
269
+ lane_summaries: laneSummaries,
270
+ provider_health_summary: providerHealthSummary,
271
+ ...(workflow.blocker_summary === undefined ? {} : { blocker: workflow.blocker_summary }),
272
+ ...(checkpoint === undefined ? {} : { checkpoint_id: checkpoint.checkpoint_id })
273
+ };
274
+ const responseResult = validateStatusResponseV1(response);
275
+ if (!responseResult.ok)
276
+ return failClosedResponse(input, "schema", "FlowDesk status display failed schema validation and was blocked before recovery actions were suggested.", true);
277
+ return response;
278
+ }
279
+ export function evaluateFlowDeskStatusCommandV1(input) {
280
+ const response = buildFlowDeskStatusResponseV1(input);
281
+ const responseResult = validateStatusResponseV1(response);
282
+ const laneSummaries = response.lane_summaries;
283
+ const providerHealthSummary = response.provider_health_summary;
284
+ if (!responseResult.ok)
285
+ return { ...invalid(...responseResult.errors), response, laneSummaries, providerHealthSummary };
286
+ return { ...valid(), response, laneSummaries, providerHealthSummary };
287
+ }
288
+ export function buildFlowDeskStatusSummaryArtifactV1(response, options = {}) {
289
+ return {
290
+ schema_version: "flowdesk.status_summary.v1",
291
+ workflow_id: response.workflow_id ?? "",
292
+ state: response.workflow_state,
293
+ ...(response.current_step_id === undefined ? {} : { current_step_id: response.current_step_id }),
294
+ ...(response.blocker === undefined ? {} : { blocker_summary: response.blocker }),
295
+ lane_summary_refs: response.lane_summaries.flatMap((summary) => summary.refs).slice(0, 20),
296
+ ...(options.usageSummaryRef === undefined ? {} : { usage_summary_ref: options.usageSummaryRef }),
297
+ ...(options.providerHealthSummaryRef === undefined ? {} : { provider_health_summary_ref: options.providerHealthSummaryRef }),
298
+ ...(response.checkpoint_id === undefined ? {} : { checkpoint_id: response.checkpoint_id }),
299
+ safe_next_actions: response.safe_next_actions,
300
+ audit_refs: response.audit_ref === undefined ? [] : [response.audit_ref],
301
+ ...(response.debug_ref === undefined ? {} : { debug_ref: response.debug_ref })
302
+ };
303
+ }
304
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ import { type FlowDeskRelease1MinimumPortableCommandName, type FlowDeskRelease1MinimumToolName } from "./command-manifest.js";
2
+ import type { ValidationResult } from "./validators.js";
3
+ export declare const FLOWDESK_FDS1_FIXTURE_CATEGORIES: readonly ["valid.minimal", "valid.full", "invalid.unknown-property", "invalid.enum", "invalid.length", "redaction.secret-shaped", "redaction.prompt-shaped"];
4
+ export type FlowDeskFds1FixtureCategory = (typeof FLOWDESK_FDS1_FIXTURE_CATEGORIES)[number];
5
+ export declare const FLOWDESK_FDS1_UNSUPPORTED_CONTROL_STUB_IDS: readonly ["unsupported.union", "unsupported.nullable", "unsupported.mixed-zod-raw", "unsupported.raw-json-schema"];
6
+ export type FlowDeskFds1UnsupportedControlStubId = (typeof FLOWDESK_FDS1_UNSUPPORTED_CONTROL_STUB_IDS)[number];
7
+ export type FlowDeskFds1FixtureExpectedValidity = "schema-valid" | "schema-invalid" | "redaction-blocked";
8
+ export interface FlowDeskFds1InertAuthorityBoundaryV1 {
9
+ productionRegistrationEligible: false;
10
+ schemaConversionReady: false;
11
+ dispatchApprovalEligible: false;
12
+ fallbackAuthority: false;
13
+ hardCancelOrNoReplyAuthority: false;
14
+ actualLaneLaunch: false;
15
+ providerCall: false;
16
+ runtimeExecution: false;
17
+ }
18
+ export interface FlowDeskFds1FixtureCategoryMetadataV1 extends FlowDeskFds1InertAuthorityBoundaryV1 {
19
+ category: FlowDeskFds1FixtureCategory;
20
+ fixtureMode: "inert_metadata_or_schema_safe_sample";
21
+ expectedValidity: FlowDeskFds1FixtureExpectedValidity;
22
+ description: string;
23
+ sample: Readonly<Record<string, unknown>>;
24
+ }
25
+ export interface FlowDeskFds1FixtureCatalogEntryV1 extends FlowDeskFds1InertAuthorityBoundaryV1 {
26
+ fixtureId: string;
27
+ fixturePrefix: string;
28
+ commandName: FlowDeskRelease1MinimumPortableCommandName;
29
+ toolName: FlowDeskRelease1MinimumToolName;
30
+ schemaId: string;
31
+ schemaKind: "tool_request" | "tool_response";
32
+ interfaceName: string;
33
+ diagnosticOnly: false;
34
+ schemaCompatibilityStatus: "compatible_runtime_closed_validation";
35
+ schemaCompatibilityReadiness: "compatible_with_runtime_closed_validation";
36
+ categories: Readonly<Record<FlowDeskFds1FixtureCategory, FlowDeskFds1FixtureCategoryMetadataV1>>;
37
+ }
38
+ export interface FlowDeskFds1UnsupportedControlStubV1 extends FlowDeskFds1InertAuthorityBoundaryV1 {
39
+ stubId: FlowDeskFds1UnsupportedControlStubId;
40
+ controlKind: "union" | "nullable" | "mixed-zod-raw" | "raw-json-schema";
41
+ blocked: true;
42
+ diagnosticOnly: false;
43
+ schemaCompatibilityReadiness: "blocked_until_fds1_conversion_spike_passes";
44
+ reason: string;
45
+ sampleArgs: Readonly<Record<string, unknown>>;
46
+ }
47
+ export declare const FLOWDESK_FDS1_FIXTURE_CATALOG: readonly FlowDeskFds1FixtureCatalogEntryV1[];
48
+ export declare const FLOWDESK_FDS1_UNSUPPORTED_CONTROL_STUBS: readonly [{
49
+ readonly productionRegistrationEligible: false;
50
+ readonly schemaConversionReady: false;
51
+ readonly dispatchApprovalEligible: false;
52
+ readonly fallbackAuthority: false;
53
+ readonly hardCancelOrNoReplyAuthority: false;
54
+ readonly actualLaneLaunch: false;
55
+ readonly providerCall: false;
56
+ readonly runtimeExecution: false;
57
+ readonly stubId: "unsupported.union";
58
+ readonly controlKind: "union";
59
+ readonly blocked: true;
60
+ readonly diagnosticOnly: false;
61
+ readonly schemaCompatibilityReadiness: "blocked_until_fds1_conversion_spike_passes";
62
+ readonly reason: "FDS-1 has no proven conversion mapping for union controls.";
63
+ readonly sampleArgs: {
64
+ readonly control: "one-of";
65
+ readonly fixture_status: "blocked";
66
+ };
67
+ }, {
68
+ readonly productionRegistrationEligible: false;
69
+ readonly schemaConversionReady: false;
70
+ readonly dispatchApprovalEligible: false;
71
+ readonly fallbackAuthority: false;
72
+ readonly hardCancelOrNoReplyAuthority: false;
73
+ readonly actualLaneLaunch: false;
74
+ readonly providerCall: false;
75
+ readonly runtimeExecution: false;
76
+ readonly stubId: "unsupported.nullable";
77
+ readonly controlKind: "nullable";
78
+ readonly blocked: true;
79
+ readonly diagnosticOnly: false;
80
+ readonly schemaCompatibilityReadiness: "blocked_until_fds1_conversion_spike_passes";
81
+ readonly reason: "FDS-1 has no proven conversion mapping for nullable controls.";
82
+ readonly sampleArgs: {
83
+ readonly control: "nullable";
84
+ readonly fixture_status: "blocked";
85
+ };
86
+ }, {
87
+ readonly productionRegistrationEligible: false;
88
+ readonly schemaConversionReady: false;
89
+ readonly dispatchApprovalEligible: false;
90
+ readonly fallbackAuthority: false;
91
+ readonly hardCancelOrNoReplyAuthority: false;
92
+ readonly actualLaneLaunch: false;
93
+ readonly providerCall: false;
94
+ readonly runtimeExecution: false;
95
+ readonly stubId: "unsupported.mixed-zod-raw";
96
+ readonly controlKind: "mixed-zod-raw";
97
+ readonly blocked: true;
98
+ readonly diagnosticOnly: false;
99
+ readonly schemaCompatibilityReadiness: "blocked_until_fds1_conversion_spike_passes";
100
+ readonly reason: "FDS-1 rejects mixed Zod and raw argument metadata until conversion evidence exists.";
101
+ readonly sampleArgs: {
102
+ readonly control: "mixed-zod-raw";
103
+ readonly fixture_status: "blocked";
104
+ };
105
+ }, {
106
+ readonly productionRegistrationEligible: false;
107
+ readonly schemaConversionReady: false;
108
+ readonly dispatchApprovalEligible: false;
109
+ readonly fallbackAuthority: false;
110
+ readonly hardCancelOrNoReplyAuthority: false;
111
+ readonly actualLaneLaunch: false;
112
+ readonly providerCall: false;
113
+ readonly runtimeExecution: false;
114
+ readonly stubId: "unsupported.raw-json-schema";
115
+ readonly controlKind: "raw-json-schema";
116
+ readonly blocked: true;
117
+ readonly diagnosticOnly: false;
118
+ readonly schemaCompatibilityReadiness: "blocked_until_fds1_conversion_spike_passes";
119
+ readonly reason: "FDS-1 rejects raw JSON Schema argument metadata until conversion evidence exists.";
120
+ readonly sampleArgs: {
121
+ readonly control: "raw-json-schema";
122
+ readonly fixture_status: "blocked";
123
+ };
124
+ }];
125
+ export declare const FLOWDESK_FDS1_PRE_SPIKE_PRODUCTION_FIXTURE_REGISTRY: readonly [];
126
+ export declare function getFlowDeskFds1FixtureCatalog(): readonly FlowDeskFds1FixtureCatalogEntryV1[];
127
+ export declare function getFlowDeskFds1FixtureCatalogEntry(schemaId: string): FlowDeskFds1FixtureCatalogEntryV1 | undefined;
128
+ export declare function getFlowDeskFds1UnsupportedControlStubs(): readonly FlowDeskFds1UnsupportedControlStubV1[];
129
+ export declare function getFlowDeskFds1PreSpikeProductionFixtureRegistry(): readonly FlowDeskFds1FixtureCatalogEntryV1[];
130
+ export declare function validateFlowDeskFds1FixtureCatalogEntry(entry: unknown): ValidationResult;
131
+ export declare function validateFlowDeskFds1FixtureCatalogComplete(catalog?: readonly unknown[]): ValidationResult;
132
+ export declare function validateFlowDeskFds1UnsupportedControlStub(stub: unknown): ValidationResult;
133
+ export declare function validateFlowDeskFds1UnsupportedControlStubsComplete(stubs?: readonly unknown[]): ValidationResult;
134
+ //# sourceMappingURL=tool-contract-fixtures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-contract-fixtures.d.ts","sourceRoot":"","sources":["../src/tool-contract-fixtures.ts"],"names":[],"mappings":"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"}