@flowdesk/core 0.1.0 → 0.1.2

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 (142) hide show
  1. package/dist/authority-promotion.d.ts +70 -0
  2. package/dist/authority-promotion.d.ts.map +1 -0
  3. package/dist/authority-promotion.js +388 -0
  4. package/dist/authority-promotion.js.map +1 -0
  5. package/dist/chat-control-authority.d.ts +83 -0
  6. package/dist/chat-control-authority.d.ts.map +1 -0
  7. package/dist/chat-control-authority.js +238 -0
  8. package/dist/chat-control-authority.js.map +1 -0
  9. package/dist/chat-hook-authority-probe.d.ts +39 -0
  10. package/dist/chat-hook-authority-probe.d.ts.map +1 -0
  11. package/dist/chat-hook-authority-probe.js +153 -0
  12. package/dist/chat-hook-authority-probe.js.map +1 -0
  13. package/dist/chat-routing.d.ts.map +1 -1
  14. package/dist/chat-routing.js +18 -15
  15. package/dist/chat-routing.js.map +1 -1
  16. package/dist/connector-gateway.d.ts +34 -0
  17. package/dist/connector-gateway.d.ts.map +1 -0
  18. package/dist/connector-gateway.js +147 -0
  19. package/dist/connector-gateway.js.map +1 -0
  20. package/dist/connector-profile.d.ts +41 -0
  21. package/dist/connector-profile.d.ts.map +1 -0
  22. package/dist/connector-profile.js +125 -0
  23. package/dist/connector-profile.js.map +1 -0
  24. package/dist/controlled-conformance-doc-write.d.ts +44 -0
  25. package/dist/controlled-conformance-doc-write.d.ts.map +1 -0
  26. package/dist/controlled-conformance-doc-write.js +142 -0
  27. package/dist/controlled-conformance-doc-write.js.map +1 -0
  28. package/dist/controlled-redacted-audit-export-write.d.ts +45 -0
  29. package/dist/controlled-redacted-audit-export-write.d.ts.map +1 -0
  30. package/dist/controlled-redacted-audit-export-write.js +145 -0
  31. package/dist/controlled-redacted-audit-export-write.js.map +1 -0
  32. package/dist/core-completion-safety-contracts.d.ts +35 -0
  33. package/dist/core-completion-safety-contracts.d.ts.map +1 -0
  34. package/dist/core-completion-safety-contracts.js +98 -0
  35. package/dist/core-completion-safety-contracts.js.map +1 -0
  36. package/dist/dispatch-attempt-manifest.d.ts +59 -0
  37. package/dist/dispatch-attempt-manifest.d.ts.map +1 -0
  38. package/dist/dispatch-attempt-manifest.js +294 -0
  39. package/dist/dispatch-attempt-manifest.js.map +1 -0
  40. package/dist/dispatch-idempotency.d.ts +89 -0
  41. package/dist/dispatch-idempotency.d.ts.map +1 -0
  42. package/dist/dispatch-idempotency.js +275 -0
  43. package/dist/dispatch-idempotency.js.map +1 -0
  44. package/dist/external-auth-policy.d.ts +49 -0
  45. package/dist/external-auth-policy.d.ts.map +1 -0
  46. package/dist/external-auth-policy.js +166 -0
  47. package/dist/external-auth-policy.js.map +1 -0
  48. package/dist/fake-remote-connector-adapter.d.ts +37 -0
  49. package/dist/fake-remote-connector-adapter.d.ts.map +1 -0
  50. package/dist/fake-remote-connector-adapter.js +162 -0
  51. package/dist/fake-remote-connector-adapter.js.map +1 -0
  52. package/dist/fallback-decision.d.ts +29 -0
  53. package/dist/fallback-decision.d.ts.map +1 -0
  54. package/dist/fallback-decision.js +93 -0
  55. package/dist/fallback-decision.js.map +1 -0
  56. package/dist/fallback-regate-plan.d.ts +34 -0
  57. package/dist/fallback-regate-plan.d.ts.map +1 -0
  58. package/dist/fallback-regate-plan.js +122 -0
  59. package/dist/fallback-regate-plan.js.map +1 -0
  60. package/dist/fds1-schema-probe-result.d.ts +37 -0
  61. package/dist/fds1-schema-probe-result.d.ts.map +1 -0
  62. package/dist/fds1-schema-probe-result.js +115 -0
  63. package/dist/fds1-schema-probe-result.js.map +1 -0
  64. package/dist/index.d.ts +25 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +25 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/lane-heartbeat.d.ts +49 -0
  69. package/dist/lane-heartbeat.d.ts.map +1 -0
  70. package/dist/lane-heartbeat.js +149 -0
  71. package/dist/lane-heartbeat.js.map +1 -0
  72. package/dist/lane-lifecycle-record.d.ts +32 -0
  73. package/dist/lane-lifecycle-record.d.ts.map +1 -0
  74. package/dist/lane-lifecycle-record.js +134 -0
  75. package/dist/lane-lifecycle-record.js.map +1 -0
  76. package/dist/lane-stall-projection.d.ts +43 -0
  77. package/dist/lane-stall-projection.d.ts.map +1 -0
  78. package/dist/lane-stall-projection.js +272 -0
  79. package/dist/lane-stall-projection.js.map +1 -0
  80. package/dist/model-availability-cache.d.ts +286 -0
  81. package/dist/model-availability-cache.d.ts.map +1 -0
  82. package/dist/model-availability-cache.js +1109 -0
  83. package/dist/model-availability-cache.js.map +1 -0
  84. package/dist/operational-intelligence.d.ts +38 -0
  85. package/dist/operational-intelligence.d.ts.map +1 -0
  86. package/dist/operational-intelligence.js +107 -0
  87. package/dist/operational-intelligence.js.map +1 -0
  88. package/dist/production-approval-source.d.ts +61 -0
  89. package/dist/production-approval-source.d.ts.map +1 -0
  90. package/dist/production-approval-source.js +226 -0
  91. package/dist/production-approval-source.js.map +1 -0
  92. package/dist/production-enablement.d.ts +92 -1
  93. package/dist/production-enablement.d.ts.map +1 -1
  94. package/dist/production-enablement.js +421 -8
  95. package/dist/production-enablement.js.map +1 -1
  96. package/dist/production-verification.d.ts +31 -0
  97. package/dist/production-verification.d.ts.map +1 -0
  98. package/dist/production-verification.js +126 -0
  99. package/dist/production-verification.js.map +1 -0
  100. package/dist/provider-usage-collector.d.ts +7 -0
  101. package/dist/provider-usage-collector.d.ts.map +1 -1
  102. package/dist/provider-usage-collector.js +64 -10
  103. package/dist/provider-usage-collector.js.map +1 -1
  104. package/dist/release1-contracts.d.ts +8 -2
  105. package/dist/release1-contracts.d.ts.map +1 -1
  106. package/dist/release1-contracts.js +2 -1
  107. package/dist/release1-contracts.js.map +1 -1
  108. package/dist/remote-write-connector-gate.d.ts +91 -0
  109. package/dist/remote-write-connector-gate.d.ts.map +1 -0
  110. package/dist/remote-write-connector-gate.js +291 -0
  111. package/dist/remote-write-connector-gate.js.map +1 -0
  112. package/dist/runtime-lane-productization.d.ts +78 -0
  113. package/dist/runtime-lane-productization.d.ts.map +1 -0
  114. package/dist/runtime-lane-productization.js +270 -0
  115. package/dist/runtime-lane-productization.js.map +1 -0
  116. package/dist/sanitized-auth-capture.d.ts +50 -0
  117. package/dist/sanitized-auth-capture.d.ts.map +1 -0
  118. package/dist/sanitized-auth-capture.js +164 -0
  119. package/dist/sanitized-auth-capture.js.map +1 -0
  120. package/dist/schema-artifacts.d.ts.map +1 -1
  121. package/dist/schema-artifacts.js +37 -6
  122. package/dist/schema-artifacts.js.map +1 -1
  123. package/dist/schema-registry.d.ts.map +1 -1
  124. package/dist/schema-registry.js +21 -0
  125. package/dist/schema-registry.js.map +1 -1
  126. package/dist/session-evidence.d.ts +117 -0
  127. package/dist/session-evidence.d.ts.map +1 -1
  128. package/dist/session-evidence.js +569 -1
  129. package/dist/session-evidence.js.map +1 -1
  130. package/dist/state-paths.d.ts +1 -1
  131. package/dist/state-paths.d.ts.map +1 -1
  132. package/dist/state-paths.js +56 -6
  133. package/dist/state-paths.js.map +1 -1
  134. package/dist/status.d.ts +7 -0
  135. package/dist/status.d.ts.map +1 -1
  136. package/dist/status.js +89 -1
  137. package/dist/status.js.map +1 -1
  138. package/dist/validators.d.ts +1 -0
  139. package/dist/validators.d.ts.map +1 -1
  140. package/dist/validators.js +30 -7
  141. package/dist/validators.js.map +1 -1
  142. package/package.json +1 -1
@@ -0,0 +1,272 @@
1
+ export const FLOWDESK_LANE_HEARTBEAT_DEFAULT_LATE_MS = 2 * 60 * 1000;
2
+ export const FLOWDESK_LANE_HEARTBEAT_DEFAULT_STALL_MS = 5 * 60 * 1000;
3
+ export const FLOWDESK_LANE_HEARTBEAT_MIN_LATE_MS = 10_000;
4
+ const ACTIVE_LIFECYCLE_STATES = new Set([
5
+ "created",
6
+ "running",
7
+ "awaiting_dependency",
8
+ "cooldown",
9
+ ]);
10
+ const TERMINAL_LIFECYCLE_STATES = new Set([
11
+ "complete",
12
+ "incomplete",
13
+ "no_output",
14
+ "missing_verdict",
15
+ "tool_calls_only_no_verdict",
16
+ "aborted",
17
+ "timeout",
18
+ "late_output",
19
+ "orphaned",
20
+ "invocation_failed",
21
+ ]);
22
+ function getStringField(record, key) {
23
+ const value = record[key];
24
+ return typeof value === "string" && value.length > 0 ? value : undefined;
25
+ }
26
+ function isLifecycleEntry(entry) {
27
+ return entry.evidenceClass === "lane_lifecycle";
28
+ }
29
+ function isHeartbeatEntry(entry) {
30
+ return entry.evidenceClass === "lane_heartbeat";
31
+ }
32
+ function lifecycleSnapshotFromEntry(entry, workflowId) {
33
+ const record = entry.record;
34
+ const laneId = getStringField(record, "lane_id");
35
+ const state = getStringField(record, "state");
36
+ const updatedAt = getStringField(record, "updated_at") ?? getStringField(record, "created_at");
37
+ if (laneId === undefined || state === undefined || updatedAt === undefined)
38
+ return undefined;
39
+ const parsed = Date.parse(updatedAt);
40
+ if (!Number.isFinite(parsed))
41
+ return undefined;
42
+ return {
43
+ workflowId,
44
+ laneId,
45
+ attemptId: getStringField(record, "attempt_id"),
46
+ state,
47
+ updatedAt,
48
+ updatedAtMs: parsed,
49
+ evidenceId: entry.evidenceId,
50
+ signalSource: "lane_lifecycle",
51
+ };
52
+ }
53
+ function heartbeatSnapshotFromEntry(entry, workflowId) {
54
+ const record = entry.record;
55
+ const laneId = getStringField(record, "lane_id");
56
+ const state = getStringField(record, "state");
57
+ const observedAt = getStringField(record, "observed_at");
58
+ if (laneId === undefined || state === undefined || observedAt === undefined)
59
+ return undefined;
60
+ const parsed = Date.parse(observedAt);
61
+ if (!Number.isFinite(parsed))
62
+ return undefined;
63
+ const heartbeatSeqValue = record.heartbeat_seq;
64
+ const heartbeatSeq = typeof heartbeatSeqValue === "number" && Number.isFinite(heartbeatSeqValue)
65
+ ? heartbeatSeqValue
66
+ : undefined;
67
+ const expectedNext = getStringField(record, "expected_next_heartbeat_at");
68
+ return {
69
+ workflowId,
70
+ laneId,
71
+ attemptId: getStringField(record, "attempt_id"),
72
+ state,
73
+ updatedAt: observedAt,
74
+ updatedAtMs: parsed,
75
+ evidenceId: entry.evidenceId,
76
+ signalSource: "lane_heartbeat",
77
+ ...(heartbeatSeq === undefined ? {} : { heartbeatSeq }),
78
+ ...(expectedNext === undefined ? {} : { expectedNextHeartbeatAt: expectedNext }),
79
+ };
80
+ }
81
+ function pickLatestLifecyclePerLane(reload, workflowId) {
82
+ const latestByLane = new Map();
83
+ for (const entry of reload.entries) {
84
+ let snapshot;
85
+ if (isLifecycleEntry(entry))
86
+ snapshot = lifecycleSnapshotFromEntry(entry, workflowId);
87
+ else if (isHeartbeatEntry(entry))
88
+ snapshot = heartbeatSnapshotFromEntry(entry, workflowId);
89
+ if (snapshot === undefined)
90
+ continue;
91
+ const previous = latestByLane.get(snapshot.laneId);
92
+ if (previous === undefined || snapshot.updatedAtMs > previous.updatedAtMs)
93
+ latestByLane.set(snapshot.laneId, snapshot);
94
+ }
95
+ return latestByLane;
96
+ }
97
+ function classify(snapshot, observedAtMs, lateMs, stallMs) {
98
+ if (TERMINAL_LIFECYCLE_STATES.has(snapshot.state))
99
+ return {
100
+ classification: "terminal",
101
+ secondsSinceLastSignal: Math.max(0, Math.floor((observedAtMs - snapshot.updatedAtMs) / 1000)),
102
+ };
103
+ if (!ACTIVE_LIFECYCLE_STATES.has(snapshot.state))
104
+ return {
105
+ classification: "unknown",
106
+ secondsSinceLastSignal: Math.max(0, Math.floor((observedAtMs - snapshot.updatedAtMs) / 1000)),
107
+ };
108
+ const elapsedMs = Math.max(0, observedAtMs - snapshot.updatedAtMs);
109
+ if (elapsedMs > stallMs)
110
+ return {
111
+ classification: "stalled",
112
+ secondsSinceLastSignal: Math.floor(elapsedMs / 1000),
113
+ };
114
+ if (elapsedMs > lateMs)
115
+ return {
116
+ classification: "progressing_late",
117
+ secondsSinceLastSignal: Math.floor(elapsedMs / 1000),
118
+ };
119
+ return {
120
+ classification: "progressing_normal",
121
+ secondsSinceLastSignal: Math.floor(elapsedMs / 1000),
122
+ };
123
+ }
124
+ function safeActionsFor(classification) {
125
+ if (classification === "stalled")
126
+ return [
127
+ "/flowdesk-status",
128
+ "/flowdesk-retry",
129
+ "/flowdesk-resume",
130
+ "/flowdesk-abort",
131
+ "/flowdesk-doctor",
132
+ "/flowdesk-export-debug",
133
+ ];
134
+ if (classification === "progressing_late")
135
+ return ["/flowdesk-status", "/flowdesk-doctor", "/flowdesk-export-debug"];
136
+ if (classification === "terminal" || classification === "unknown")
137
+ return ["/flowdesk-status"];
138
+ return ["/flowdesk-status"];
139
+ }
140
+ function failureHintFor(state) {
141
+ if (state === "invocation_failed")
142
+ return "invocation_failed";
143
+ if (state === "timeout")
144
+ return "transport_timeout";
145
+ if (state === "orphaned")
146
+ return "correlation_lost";
147
+ if (state === "aborted")
148
+ return "abnormal_exit";
149
+ return undefined;
150
+ }
151
+ function projectionWorstClassification(entries) {
152
+ if (entries.some((entry) => entry.classification === "stalled"))
153
+ return "stalled";
154
+ if (entries.some((entry) => entry.classification === "progressing_late"))
155
+ return "progressing_late";
156
+ if (entries.some((entry) => entry.classification === "progressing_normal"))
157
+ return "progressing_normal";
158
+ if (entries.some((entry) => entry.classification === "terminal"))
159
+ return "terminal";
160
+ return "unknown";
161
+ }
162
+ export function projectFlowDeskLaneStallV1(input) {
163
+ const observedAtMs = Date.parse(input.observedAt);
164
+ const lateThresholdMs = typeof input.lateThresholdMs === "number" && input.lateThresholdMs > 0
165
+ ? Math.max(input.lateThresholdMs, FLOWDESK_LANE_HEARTBEAT_MIN_LATE_MS)
166
+ : FLOWDESK_LANE_HEARTBEAT_DEFAULT_LATE_MS;
167
+ const stallThresholdMs = typeof input.stallThresholdMs === "number" && input.stallThresholdMs > 0
168
+ ? Math.max(input.stallThresholdMs, lateThresholdMs + 1_000)
169
+ : Math.max(FLOWDESK_LANE_HEARTBEAT_DEFAULT_STALL_MS, lateThresholdMs + 1_000);
170
+ if (!Number.isFinite(observedAtMs))
171
+ return {
172
+ schema_version: "flowdesk.lane_stall_projection.v1",
173
+ observedAt: input.observedAt,
174
+ lateThresholdMs,
175
+ stallThresholdMs,
176
+ totalActiveLanes: 0,
177
+ totalLateLanes: 0,
178
+ totalStalledLanes: 0,
179
+ totalTerminalLanes: 0,
180
+ worstClassification: "unknown",
181
+ entries: [],
182
+ };
183
+ const latestByLane = pickLatestLifecyclePerLane(input.reload, input.workflowId);
184
+ const entries = [];
185
+ let totalActive = 0;
186
+ let totalLate = 0;
187
+ let totalStalled = 0;
188
+ let totalTerminal = 0;
189
+ for (const snapshot of latestByLane.values()) {
190
+ const { classification, secondsSinceLastSignal } = classify(snapshot, observedAtMs, lateThresholdMs, stallThresholdMs);
191
+ if (classification === "progressing_normal")
192
+ totalActive += 1;
193
+ if (classification === "progressing_late") {
194
+ totalActive += 1;
195
+ totalLate += 1;
196
+ }
197
+ if (classification === "stalled") {
198
+ totalActive += 1;
199
+ totalStalled += 1;
200
+ }
201
+ if (classification === "terminal")
202
+ totalTerminal += 1;
203
+ const failureHint = failureHintFor(snapshot.state);
204
+ let expectedNextHeartbeatOverdue;
205
+ let secondsPastExpectedNextHeartbeat;
206
+ if (snapshot.expectedNextHeartbeatAt !== undefined) {
207
+ const expectedMs = Date.parse(snapshot.expectedNextHeartbeatAt);
208
+ if (Number.isFinite(expectedMs)) {
209
+ const deltaMs = observedAtMs - expectedMs;
210
+ expectedNextHeartbeatOverdue = deltaMs > 0;
211
+ if (deltaMs > 0)
212
+ secondsPastExpectedNextHeartbeat = Math.floor(deltaMs / 1000);
213
+ }
214
+ }
215
+ entries.push({
216
+ workflowId: snapshot.workflowId,
217
+ laneId: snapshot.laneId,
218
+ ...(snapshot.attemptId === undefined
219
+ ? {}
220
+ : { attemptId: snapshot.attemptId }),
221
+ classification,
222
+ lifecycleState: snapshot.state,
223
+ lastSignalAt: snapshot.updatedAt,
224
+ lastSignalEvidenceId: snapshot.evidenceId,
225
+ lastSignalSource: snapshot.signalSource,
226
+ ...(snapshot.heartbeatSeq === undefined
227
+ ? {}
228
+ : { lastHeartbeatSeq: snapshot.heartbeatSeq }),
229
+ ...(snapshot.expectedNextHeartbeatAt === undefined
230
+ ? {}
231
+ : { expectedNextHeartbeatAt: snapshot.expectedNextHeartbeatAt }),
232
+ ...(expectedNextHeartbeatOverdue === undefined
233
+ ? {}
234
+ : { expectedNextHeartbeatOverdue }),
235
+ ...(secondsPastExpectedNextHeartbeat === undefined
236
+ ? {}
237
+ : { secondsPastExpectedNextHeartbeat }),
238
+ secondsSinceLastSignal,
239
+ abnormal: classification === "stalled" || classification === "progressing_late",
240
+ ...(failureHint === undefined ? {} : { failureHint }),
241
+ safeNextActions: safeActionsFor(classification),
242
+ });
243
+ }
244
+ entries.sort((a, b) => {
245
+ const order = {
246
+ stalled: 0,
247
+ progressing_late: 1,
248
+ progressing_normal: 2,
249
+ terminal: 3,
250
+ unknown: 4,
251
+ };
252
+ const byOrder = order[a.classification] - order[b.classification];
253
+ if (byOrder !== 0)
254
+ return byOrder;
255
+ const aSeconds = a.secondsSinceLastSignal ?? 0;
256
+ const bSeconds = b.secondsSinceLastSignal ?? 0;
257
+ return bSeconds - aSeconds;
258
+ });
259
+ return {
260
+ schema_version: "flowdesk.lane_stall_projection.v1",
261
+ observedAt: input.observedAt,
262
+ lateThresholdMs,
263
+ stallThresholdMs,
264
+ totalActiveLanes: totalActive,
265
+ totalLateLanes: totalLate,
266
+ totalStalledLanes: totalStalled,
267
+ totalTerminalLanes: totalTerminal,
268
+ worstClassification: projectionWorstClassification(entries),
269
+ entries,
270
+ };
271
+ }
272
+ //# sourceMappingURL=lane-stall-projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lane-stall-projection.js","sourceRoot":"","sources":["../src/lane-stall-projection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,286 @@
1
+ import type { FlowDeskTopTierReviewPerspective } from "./release1-contracts.js";
2
+ import type { FlowDeskRuntimeLaneLaunchRequestV1 } from "./runtime-lane-productization.js";
3
+ import { type ValidationResult } from "./validators.js";
4
+ export interface FlowDeskExactModelAvailabilityEntryV1 {
5
+ entry_id: string;
6
+ provider_family: "claude" | "openai" | "gemini" | "opencode_go" | "z_ai";
7
+ provider_identity_ref: string;
8
+ provider_qualified_model_id: string;
9
+ model_family: string;
10
+ registered: boolean;
11
+ available: boolean;
12
+ highest_tier_eligible: boolean;
13
+ availability_ref: string;
14
+ }
15
+ export interface FlowDeskExactModelAvailabilityCacheV1 {
16
+ schema_version: "flowdesk.exact_model_availability_cache.v1";
17
+ cache_id: string;
18
+ local_date: string;
19
+ active_profile_ref: string;
20
+ opencode_version_ref: string;
21
+ flowdesk_package_version_ref: string;
22
+ registry_hash: string;
23
+ policy_pack_hash: string;
24
+ auth_account_boundary_ref: string;
25
+ entries: FlowDeskExactModelAvailabilityEntryV1[];
26
+ dispatch_authority_enabled: false;
27
+ providerCall: false;
28
+ actualLaneLaunch: false;
29
+ runtimeExecution: false;
30
+ }
31
+ export interface FlowDeskExactModelAvailabilityCacheRefreshPlanV1 extends ValidationResult {
32
+ schema_version: "flowdesk.exact_model_availability_cache_refresh_plan.v1";
33
+ state: "cache_hit" | "refresh_required" | "blocked";
34
+ blocked_labels: string[];
35
+ refresh_reason_labels: string[];
36
+ expected_local_date: string;
37
+ expected_active_profile_ref: string;
38
+ expected_opencode_version_ref: string;
39
+ expected_flowdesk_package_version_ref: string;
40
+ expected_registry_hash: string;
41
+ expected_policy_pack_hash: string;
42
+ expected_auth_account_boundary_ref: string;
43
+ cache_id?: string;
44
+ cache_local_date?: string;
45
+ cache_active_profile_ref?: string;
46
+ cache_opencode_version_ref?: string;
47
+ cache_flowdesk_package_version_ref?: string;
48
+ cache_registry_hash?: string;
49
+ cache_policy_pack_hash?: string;
50
+ cache_auth_account_boundary_ref?: string;
51
+ discovery_required: boolean;
52
+ refresh_required: boolean;
53
+ cache_usable_for_assignment: boolean;
54
+ discovery_attempted: false;
55
+ refresh_attempted: false;
56
+ dispatch_authority_enabled: false;
57
+ providerCall: false;
58
+ actualLaneLaunch: false;
59
+ runtimeExecution: false;
60
+ }
61
+ export interface FlowDeskExactModelAvailabilityCacheAcquisitionPlanV1 extends ValidationResult {
62
+ schema_version: "flowdesk.exact_model_availability_cache_acquisition_plan.v1";
63
+ state: "acquisition_not_needed" | "acquisition_planned" | "blocked";
64
+ blocked_labels: string[];
65
+ acquisition_reason_labels: string[];
66
+ refresh_plan_ok: boolean;
67
+ refresh_plan_state: "cache_hit" | "refresh_required" | "blocked" | "invalid";
68
+ refresh_plan_cache_id?: string;
69
+ acquisition_required: boolean;
70
+ cache_usable_for_assignment: boolean;
71
+ acquisition_attempted: false;
72
+ discovery_attempted: false;
73
+ refresh_attempted: false;
74
+ dispatch_authority_enabled: false;
75
+ providerCall: false;
76
+ actualLaneLaunch: false;
77
+ runtimeExecution: false;
78
+ }
79
+ export interface FlowDeskExactModelAvailabilityCacheProviderAcquisitionResultV1 extends ValidationResult {
80
+ schema_version: "flowdesk.exact_model_availability_cache_provider_acquisition_result.v1";
81
+ result_id: string;
82
+ state: "availability_acquired" | "blocked";
83
+ blocked_labels: string[];
84
+ acquisition_plan_ok: boolean;
85
+ acquisition_plan_state: "acquisition_not_needed" | "acquisition_planned" | "blocked" | "invalid";
86
+ local_date: string;
87
+ active_profile_ref: string;
88
+ opencode_version_ref: string;
89
+ flowdesk_package_version_ref: string;
90
+ registry_hash: string;
91
+ policy_pack_hash: string;
92
+ auth_account_boundary_ref: string;
93
+ provider_family: "claude" | "openai" | "gemini" | "opencode_go" | "z_ai";
94
+ provider_identity_ref: string;
95
+ provider_qualified_model_id: string;
96
+ model_family: string;
97
+ availability_ref: string;
98
+ pre_call_audit_ref: string;
99
+ idempotency_ref: string;
100
+ live_test_run_ref: string;
101
+ redaction_proof_ref: string;
102
+ sanitized_provider_result_ref?: string;
103
+ observed_at: string;
104
+ available: boolean;
105
+ highest_tier_eligible: boolean;
106
+ acquisition_attempted: boolean;
107
+ discovery_attempted: boolean;
108
+ refresh_attempted: false;
109
+ dispatch_authority_enabled: false;
110
+ providerCall: boolean;
111
+ actualLaneLaunch: false;
112
+ runtimeExecution: false;
113
+ }
114
+ export interface FlowDeskExactModelAvailabilityCacheMaterializationContextV1 {
115
+ localDate?: string;
116
+ activeProfileRef?: string;
117
+ opencodeVersionRef?: string;
118
+ flowdeskPackageVersionRef?: string;
119
+ registryHash?: string;
120
+ policyPackHash?: string;
121
+ authAccountBoundaryRef?: string;
122
+ }
123
+ export interface FlowDeskExactModelAvailabilityCacheMaterializationResultV1 extends ValidationResult {
124
+ state: "cache_materialized" | "blocked";
125
+ blocked_labels: string[];
126
+ cache?: FlowDeskExactModelAvailabilityCacheV1;
127
+ dispatch_authority_enabled: false;
128
+ providerCall: false;
129
+ actualLaneLaunch: false;
130
+ runtimeExecution: false;
131
+ }
132
+ export interface FlowDeskReviewerAssignmentPlanV1 extends ValidationResult {
133
+ schema_version: "flowdesk.reviewer_assignment_plan.v1";
134
+ cache_id: string;
135
+ state: "ready" | "blocked";
136
+ lane_bindings: Array<{
137
+ perspective: FlowDeskTopTierReviewPerspective;
138
+ entry_id: string;
139
+ provider_qualified_model_id: string;
140
+ }>;
141
+ blocked_labels: string[];
142
+ dispatch_authority_enabled: false;
143
+ providerCall: false;
144
+ actualLaneLaunch: false;
145
+ runtimeExecution: false;
146
+ }
147
+ export interface FlowDeskReviewerAssignmentRevalidationV1 extends ValidationResult {
148
+ schema_version: "flowdesk.reviewer_assignment_revalidation.v1";
149
+ cache_id?: string;
150
+ state: "revalidated" | "blocked";
151
+ blocked_labels: string[];
152
+ expected_local_date: string;
153
+ expected_active_profile_ref: string;
154
+ expected_opencode_version_ref: string;
155
+ expected_flowdesk_package_version_ref: string;
156
+ expected_registry_hash: string;
157
+ expected_policy_pack_hash: string;
158
+ expected_auth_account_boundary_ref: string;
159
+ cache_local_date?: string;
160
+ cache_active_profile_ref?: string;
161
+ cache_opencode_version_ref?: string;
162
+ cache_flowdesk_package_version_ref?: string;
163
+ cache_registry_hash?: string;
164
+ cache_policy_pack_hash?: string;
165
+ cache_auth_account_boundary_ref?: string;
166
+ eligible_bindings: Array<{
167
+ entry_id: string;
168
+ provider_qualified_model_id: string;
169
+ }>;
170
+ dispatch_authority_enabled: false;
171
+ providerCall: false;
172
+ actualLaneLaunch: false;
173
+ runtimeExecution: false;
174
+ }
175
+ export interface FlowDeskReviewerFanoutPlanV1 extends ValidationResult {
176
+ schema_version: "flowdesk.reviewer_fanout_plan.v1";
177
+ workflow_id: string;
178
+ attempt_id: string;
179
+ cache_id?: string;
180
+ state: "fanout_ready" | "blocked";
181
+ blocked_labels: string[];
182
+ required_perspectives: FlowDeskTopTierReviewPerspective[];
183
+ planned_perspectives: FlowDeskTopTierReviewPerspective[];
184
+ runtime_lane_launch_requests: FlowDeskRuntimeLaneLaunchRequestV1[];
185
+ max_concurrent_lane_count: number;
186
+ runtime_launch_plan_required: true;
187
+ lane_launch_approval_required: true;
188
+ launch_attempted: false;
189
+ approval_inferred: false;
190
+ dispatch_authority_enabled: false;
191
+ providerCall: false;
192
+ actualLaneLaunch: false;
193
+ runtimeExecution: false;
194
+ }
195
+ export declare function validateFlowDeskExactModelAvailabilityCacheV1(value: unknown): ValidationResult;
196
+ export declare function planFlowDeskReviewerAssignmentsV1(input: {
197
+ cache: FlowDeskExactModelAvailabilityCacheV1;
198
+ localDate: string;
199
+ }): FlowDeskReviewerAssignmentPlanV1;
200
+ export declare function planFlowDeskExactModelAvailabilityCacheRefreshV1(input: {
201
+ cache?: FlowDeskExactModelAvailabilityCacheV1;
202
+ localDate: string;
203
+ activeProfileRef: string;
204
+ opencodeVersionRef: string;
205
+ flowdeskPackageVersionRef: string;
206
+ registryHash: string;
207
+ policyPackHash: string;
208
+ authAccountBoundaryRef: string;
209
+ }): FlowDeskExactModelAvailabilityCacheRefreshPlanV1;
210
+ export declare function validateFlowDeskExactModelAvailabilityCacheRefreshPlanV1(value: unknown): ValidationResult;
211
+ export declare function planFlowDeskExactModelAvailabilityCacheAcquisitionV1(input: {
212
+ refreshPlan: FlowDeskExactModelAvailabilityCacheRefreshPlanV1;
213
+ }): FlowDeskExactModelAvailabilityCacheAcquisitionPlanV1;
214
+ export declare function validateFlowDeskExactModelAvailabilityCacheAcquisitionPlanV1(value: unknown): ValidationResult;
215
+ export declare function recordFlowDeskExactModelAvailabilityCacheProviderAcquisitionResultV1(input: {
216
+ acquisitionPlan: FlowDeskExactModelAvailabilityCacheAcquisitionPlanV1;
217
+ resultId: string;
218
+ localDate: string;
219
+ activeProfileRef: string;
220
+ opencodeVersionRef: string;
221
+ flowdeskPackageVersionRef: string;
222
+ registryHash: string;
223
+ policyPackHash: string;
224
+ authAccountBoundaryRef: string;
225
+ providerFamily: FlowDeskExactModelAvailabilityCacheProviderAcquisitionResultV1["provider_family"];
226
+ providerIdentityRef: string;
227
+ providerQualifiedModelId: string;
228
+ modelFamily: string;
229
+ availabilityRef: string;
230
+ preCallAuditRef: string;
231
+ idempotencyRef: string;
232
+ liveTestRunRef: string;
233
+ redactionProofRef: string;
234
+ sanitizedProviderResultRef?: string;
235
+ observedAt: string;
236
+ outcome: "available" | "unavailable" | "blocked";
237
+ highestTierEligible?: boolean;
238
+ blockedLabels?: string[];
239
+ providerCall?: boolean;
240
+ }): FlowDeskExactModelAvailabilityCacheProviderAcquisitionResultV1;
241
+ export declare function validateFlowDeskExactModelAvailabilityCacheProviderAcquisitionResultV1(value: unknown): ValidationResult;
242
+ export declare function materializeFlowDeskExactModelAvailabilityCacheFromProviderAcquisitionResultV1(input: {
243
+ providerAcquisitionResult: unknown;
244
+ cacheId?: string;
245
+ entryId?: string;
246
+ expectedContext?: FlowDeskExactModelAvailabilityCacheMaterializationContextV1;
247
+ }): FlowDeskExactModelAvailabilityCacheMaterializationResultV1;
248
+ export declare function revalidateFlowDeskReviewerAssignmentsV1(input: {
249
+ cache: FlowDeskExactModelAvailabilityCacheV1;
250
+ localDate: string;
251
+ activeProfileRef: string;
252
+ opencodeVersionRef: string;
253
+ flowdeskPackageVersionRef: string;
254
+ registryHash: string;
255
+ policyPackHash: string;
256
+ authAccountBoundaryRef: string;
257
+ }): FlowDeskReviewerAssignmentRevalidationV1;
258
+ export declare function revalidateFlowDeskReviewerAssignmentsFromCacheEvidenceV1(input: {
259
+ cache: FlowDeskExactModelAvailabilityCacheV1;
260
+ cacheRefreshPlan: FlowDeskExactModelAvailabilityCacheRefreshPlanV1;
261
+ localDate: string;
262
+ activeProfileRef: string;
263
+ opencodeVersionRef: string;
264
+ flowdeskPackageVersionRef: string;
265
+ registryHash: string;
266
+ policyPackHash: string;
267
+ authAccountBoundaryRef: string;
268
+ }): FlowDeskReviewerAssignmentRevalidationV1;
269
+ export declare function validateFlowDeskReviewerAssignmentRevalidationV1(value: unknown): ValidationResult;
270
+ export declare function planFlowDeskReviewerFanoutV1(input: {
271
+ revalidation: FlowDeskReviewerAssignmentRevalidationV1;
272
+ workflowId: string;
273
+ attemptId: string;
274
+ parentSessionRef: string;
275
+ agentRef: string;
276
+ requestedAt: string;
277
+ requestedPerspectives?: FlowDeskTopTierReviewPerspective[];
278
+ maxConcurrentLaneCount?: number;
279
+ timeoutMs?: number;
280
+ orphanMaxAgeMs?: number;
281
+ retryBudget?: number;
282
+ preLaunchAuditRef?: string;
283
+ laneLaunchApprovalRef?: string;
284
+ }): FlowDeskReviewerFanoutPlanV1;
285
+ export declare function validateFlowDeskReviewerFanoutPlanV1(value: unknown): ValidationResult;
286
+ //# sourceMappingURL=model-availability-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-availability-cache.d.ts","sourceRoot":"","sources":["../src/model-availability-cache.ts"],"names":[],"mappings":"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"}