@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,389 @@
1
+ import { FLOWDESK_RELEASE_1_COMMAND_MANIFEST, getFlowDeskCommandManifestEntry } from "./command-manifest.js";
2
+ import { getRelease1SchemaArtifact } from "./schema-artifacts.js";
3
+ import { getRelease1MinimumToolRegistry, RELEASE_1_OPTIONAL_DIAGNOSTIC_TOOL_NAMES } from "./schema-registry.js";
4
+ import { invalid, valid, validateNoForbiddenRawPayloads, validateSchemaArtifactValue } from "./validators.js";
5
+ export const FLOWDESK_FDS1_FIXTURE_CATEGORIES = [
6
+ "valid.minimal",
7
+ "valid.full",
8
+ "invalid.unknown-property",
9
+ "invalid.enum",
10
+ "invalid.length",
11
+ "redaction.secret-shaped",
12
+ "redaction.prompt-shaped"
13
+ ];
14
+ export const FLOWDESK_FDS1_UNSUPPORTED_CONTROL_STUB_IDS = [
15
+ "unsupported.union",
16
+ "unsupported.nullable",
17
+ "unsupported.mixed-zod-raw",
18
+ "unsupported.raw-json-schema"
19
+ ];
20
+ const inertBoundary = {
21
+ productionRegistrationEligible: false,
22
+ schemaConversionReady: false,
23
+ dispatchApprovalEligible: false,
24
+ fallbackAuthority: false,
25
+ hardCancelOrNoReplyAuthority: false,
26
+ actualLaneLaunch: false,
27
+ providerCall: false,
28
+ runtimeExecution: false
29
+ };
30
+ function combine(results) {
31
+ const errors = results.flatMap((result) => result.errors);
32
+ return errors.length === 0 ? valid() : invalid(...errors);
33
+ }
34
+ function isRecord(value) {
35
+ return typeof value === "object" && value !== null && !Array.isArray(value);
36
+ }
37
+ function rejectUnknownProperties(value, allowed) {
38
+ const unknown = Object.keys(value).filter((key) => !allowed.includes(key));
39
+ return unknown.length === 0 ? valid() : invalid(`unknown properties: ${unknown.join(",")}`);
40
+ }
41
+ function authorityBoundaryChecks(value) {
42
+ return combine([
43
+ value.productionRegistrationEligible === false ? valid() : invalid("productionRegistrationEligible must be false"),
44
+ value.schemaConversionReady === false ? valid() : invalid("schemaConversionReady must be false"),
45
+ value.dispatchApprovalEligible === false ? valid() : invalid("dispatchApprovalEligible must be false"),
46
+ value.fallbackAuthority === false ? valid() : invalid("fallbackAuthority must be false"),
47
+ value.hardCancelOrNoReplyAuthority === false ? valid() : invalid("hardCancelOrNoReplyAuthority must be false"),
48
+ value.actualLaneLaunch === false ? valid() : invalid("actualLaneLaunch must be false"),
49
+ value.providerCall === false ? valid() : invalid("providerCall must be false"),
50
+ value.runtimeExecution === false ? valid() : invalid("runtimeExecution must be false")
51
+ ]);
52
+ }
53
+ function minimumRegistryEntry(toolName, schemaKind) {
54
+ const entry = getRelease1MinimumToolRegistry().find((candidate) => candidate.toolName === toolName && candidate.kind === schemaKind);
55
+ if (entry === undefined)
56
+ throw new Error(`missing Release 1 minimum fixture registry entry for ${toolName} ${schemaKind}`);
57
+ return entry;
58
+ }
59
+ function sampleValue(fieldName, property, schemaId) {
60
+ if (fieldName === "schema_version")
61
+ return schemaId;
62
+ if (fieldName === "request_id")
63
+ return "req-fds1-fixture";
64
+ if (fieldName === "input_mode")
65
+ return "test_fixture";
66
+ if (fieldName === "ok")
67
+ return false;
68
+ if (fieldName === "status")
69
+ return "blocked";
70
+ if (fieldName === "safe_next_actions")
71
+ return ["/flowdesk-status"];
72
+ if (fieldName === "user_message")
73
+ return "FDS-1 fixture only; production conversion remains blocked.";
74
+ if (fieldName === "run_mode")
75
+ return "fake-runtime";
76
+ if (fieldName === "resume_mode")
77
+ return "status_only";
78
+ if (fieldName === "provider_family")
79
+ return "unknown";
80
+ if (fieldName === "refresh")
81
+ return false;
82
+ if (fieldName === "artifact_disposition")
83
+ return "blocked";
84
+ if (fieldName === "cancellation_state")
85
+ return "cancel_failed";
86
+ if (fieldName === "dispatchability")
87
+ return "blocked";
88
+ if (fieldName === "freshness")
89
+ return "unknown";
90
+ if (fieldName === "uncertainty_flags")
91
+ return ["unknown"];
92
+ if (fieldName === "include_sections" || fieldName === "included_sections")
93
+ return ["redaction_summary"];
94
+ if (fieldName === "required_approvals" || fieldName === "required_guard_checks" || fieldName === "required_fresh_checks")
95
+ return ["guard-check-fixture"];
96
+ if (fieldName === "error") {
97
+ return {
98
+ schema_version: "flowdesk.redacted_error.v1",
99
+ category: "schema",
100
+ safe_remediation: "Use inert fixture metadata only."
101
+ };
102
+ }
103
+ if (property.type === "array")
104
+ return [`${fieldName}-fixture-ref`];
105
+ if (property.type === "object")
106
+ return { fixture_status: "blocked" };
107
+ if (property.type === "boolean")
108
+ return false;
109
+ if (property.type === "number")
110
+ return 0;
111
+ return `${fieldName}-fixture`;
112
+ }
113
+ function sampleForFields(artifact, schemaId, fieldNames) {
114
+ return Object.fromEntries(fieldNames.map((fieldName) => [fieldName, sampleValue(fieldName, artifact.properties[fieldName], schemaId)]));
115
+ }
116
+ function validMinimalSample(artifact, schemaId) {
117
+ return sampleForFields(artifact, schemaId, artifact.required);
118
+ }
119
+ function validFullSample(artifact, schemaId) {
120
+ return sampleForFields(artifact, schemaId, Object.keys(artifact.properties));
121
+ }
122
+ function firstStringField(artifact) {
123
+ return Object.entries(artifact.properties).find(([fieldName, property]) => fieldName !== "schema_version" && property.type === "string")?.[0] ?? "schema_version";
124
+ }
125
+ function firstBoundedStringField(artifact) {
126
+ return Object.entries(artifact.properties).find(([fieldName, property]) => fieldName !== "schema_version" && property.type === "string" && property.maxLength !== undefined)?.[0] ?? "schema_version";
127
+ }
128
+ function invalidEnumSample(artifact, schemaId) {
129
+ const sample = validMinimalSample(artifact, schemaId);
130
+ if ("input_mode" in sample)
131
+ sample.input_mode = "unsupported_input_mode";
132
+ else if ("status" in sample)
133
+ sample.status = "unsupported_status";
134
+ else
135
+ sample[firstStringField(artifact)] = "unsupported_enum_value";
136
+ return sample;
137
+ }
138
+ function invalidLengthSample(artifact, schemaId) {
139
+ const sample = validMinimalSample(artifact, schemaId);
140
+ const fieldName = firstBoundedStringField(artifact);
141
+ const maxLength = artifact.properties[fieldName]?.maxLength ?? 128;
142
+ sample[fieldName] = "x".repeat(maxLength + 1);
143
+ return sample;
144
+ }
145
+ function redactionSample(artifact, schemaId, marker) {
146
+ const sample = validMinimalSample(artifact, schemaId);
147
+ sample[firstStringField(artifact)] = marker;
148
+ return sample;
149
+ }
150
+ function categoryMetadata(category, expectedValidity, description, sample) {
151
+ return {
152
+ category,
153
+ fixtureMode: "inert_metadata_or_schema_safe_sample",
154
+ expectedValidity,
155
+ description,
156
+ sample,
157
+ ...inertBoundary
158
+ };
159
+ }
160
+ function categoryFixtures(artifact, schemaId) {
161
+ const minimal = validMinimalSample(artifact, schemaId);
162
+ const full = validFullSample(artifact, schemaId);
163
+ return {
164
+ "valid.minimal": categoryMetadata("valid.minimal", "schema-valid", "Required-field-only inert FDS-1 fixture sample.", minimal),
165
+ "valid.full": categoryMetadata("valid.full", "schema-valid", "All declared fields populated with schema-safe inert sample values.", full),
166
+ "invalid.unknown-property": categoryMetadata("invalid.unknown-property", "schema-invalid", "Closed-schema negative fixture with an extra property.", { ...minimal, unsupported_fixture_property: "blocked" }),
167
+ "invalid.enum": categoryMetadata("invalid.enum", "schema-invalid", "Enum-like negative fixture metadata; not production conversion evidence.", invalidEnumSample(artifact, schemaId)),
168
+ "invalid.length": categoryMetadata("invalid.length", "schema-invalid", "Length-bound negative fixture metadata; not production conversion evidence.", invalidLengthSample(artifact, schemaId)),
169
+ "redaction.secret-shaped": categoryMetadata("redaction.secret-shaped", "redaction-blocked", "Synthetic credential-shaped probe that must remain redaction-blocked.", redactionSample(artifact, schemaId, "api_key=sk-flowdesk-fixture-redacted")),
170
+ "redaction.prompt-shaped": categoryMetadata("redaction.prompt-shaped", "redaction-blocked", "Synthetic prompt-shaped probe that must remain redaction-blocked.", redactionSample(artifact, schemaId, "system prompt fixture marker redacted"))
171
+ };
172
+ }
173
+ function fixtureEntry(commandEntry, schemaKind) {
174
+ const registryEntry = minimumRegistryEntry(commandEntry.toolName, schemaKind);
175
+ const artifact = getRelease1SchemaArtifact(registryEntry.schemaId);
176
+ if (artifact === undefined)
177
+ throw new Error(`missing schema artifact for ${registryEntry.schemaId}`);
178
+ return {
179
+ fixtureId: `flowdesk-fds1-fixture:${registryEntry.fixturePrefix}:${schemaKind}:v1`,
180
+ fixturePrefix: registryEntry.fixturePrefix,
181
+ commandName: commandEntry.commandName,
182
+ toolName: commandEntry.toolName,
183
+ schemaId: registryEntry.schemaId,
184
+ schemaKind,
185
+ interfaceName: registryEntry.interfaceName,
186
+ diagnosticOnly: false,
187
+ schemaCompatibilityStatus: "compatible_runtime_closed_validation",
188
+ schemaCompatibilityReadiness: "compatible_with_runtime_closed_validation",
189
+ categories: categoryFixtures(artifact, registryEntry.schemaId),
190
+ ...inertBoundary
191
+ };
192
+ }
193
+ export const FLOWDESK_FDS1_FIXTURE_CATALOG = FLOWDESK_RELEASE_1_COMMAND_MANIFEST.flatMap((commandEntry) => [fixtureEntry(commandEntry, "tool_request"), fixtureEntry(commandEntry, "tool_response")]);
194
+ export const FLOWDESK_FDS1_UNSUPPORTED_CONTROL_STUBS = [
195
+ {
196
+ stubId: "unsupported.union",
197
+ controlKind: "union",
198
+ blocked: true,
199
+ diagnosticOnly: false,
200
+ schemaCompatibilityReadiness: "blocked_until_fds1_conversion_spike_passes",
201
+ reason: "FDS-1 has no proven conversion mapping for union controls.",
202
+ sampleArgs: { control: "one-of", fixture_status: "blocked" },
203
+ ...inertBoundary
204
+ },
205
+ {
206
+ stubId: "unsupported.nullable",
207
+ controlKind: "nullable",
208
+ blocked: true,
209
+ diagnosticOnly: false,
210
+ schemaCompatibilityReadiness: "blocked_until_fds1_conversion_spike_passes",
211
+ reason: "FDS-1 has no proven conversion mapping for nullable controls.",
212
+ sampleArgs: { control: "nullable", fixture_status: "blocked" },
213
+ ...inertBoundary
214
+ },
215
+ {
216
+ stubId: "unsupported.mixed-zod-raw",
217
+ controlKind: "mixed-zod-raw",
218
+ blocked: true,
219
+ diagnosticOnly: false,
220
+ schemaCompatibilityReadiness: "blocked_until_fds1_conversion_spike_passes",
221
+ reason: "FDS-1 rejects mixed Zod and raw argument metadata until conversion evidence exists.",
222
+ sampleArgs: { control: "mixed-zod-raw", fixture_status: "blocked" },
223
+ ...inertBoundary
224
+ },
225
+ {
226
+ stubId: "unsupported.raw-json-schema",
227
+ controlKind: "raw-json-schema",
228
+ blocked: true,
229
+ diagnosticOnly: false,
230
+ schemaCompatibilityReadiness: "blocked_until_fds1_conversion_spike_passes",
231
+ reason: "FDS-1 rejects raw JSON Schema argument metadata until conversion evidence exists.",
232
+ sampleArgs: { control: "raw-json-schema", fixture_status: "blocked" },
233
+ ...inertBoundary
234
+ }
235
+ ];
236
+ export const FLOWDESK_FDS1_PRE_SPIKE_PRODUCTION_FIXTURE_REGISTRY = [];
237
+ export function getFlowDeskFds1FixtureCatalog() {
238
+ return FLOWDESK_FDS1_FIXTURE_CATALOG;
239
+ }
240
+ export function getFlowDeskFds1FixtureCatalogEntry(schemaId) {
241
+ return FLOWDESK_FDS1_FIXTURE_CATALOG.find((entry) => entry.schemaId === schemaId);
242
+ }
243
+ export function getFlowDeskFds1UnsupportedControlStubs() {
244
+ return FLOWDESK_FDS1_UNSUPPORTED_CONTROL_STUBS;
245
+ }
246
+ export function getFlowDeskFds1PreSpikeProductionFixtureRegistry() {
247
+ return FLOWDESK_FDS1_PRE_SPIKE_PRODUCTION_FIXTURE_REGISTRY;
248
+ }
249
+ function validateFixtureCategory(schemaId, category, value) {
250
+ if (!isRecord(value))
251
+ return invalid(`${category} fixture metadata must be an object`);
252
+ const sample = value.sample;
253
+ const sampleIsRecord = isRecord(sample);
254
+ const validSampleResult = sampleIsRecord ? validateSchemaArtifactValue(schemaId, sample) : invalid(`${category} sample must be an object`);
255
+ const redactionResult = sampleIsRecord ? validateNoForbiddenRawPayloads(sample, category) : invalid(`${category} sample must be an object`);
256
+ const expectedValidity = category.startsWith("valid.") ? "schema-valid" : category.startsWith("invalid.") ? "schema-invalid" : "redaction-blocked";
257
+ return combine([
258
+ rejectUnknownProperties(value, [
259
+ "category",
260
+ "fixtureMode",
261
+ "expectedValidity",
262
+ "description",
263
+ "sample",
264
+ "productionRegistrationEligible",
265
+ "schemaConversionReady",
266
+ "dispatchApprovalEligible",
267
+ "fallbackAuthority",
268
+ "hardCancelOrNoReplyAuthority",
269
+ "actualLaneLaunch",
270
+ "providerCall",
271
+ "runtimeExecution"
272
+ ]),
273
+ value.category === category ? valid() : invalid(`${category} metadata category mismatch`),
274
+ value.fixtureMode === "inert_metadata_or_schema_safe_sample" ? valid() : invalid(`${category} fixture mode must remain inert`),
275
+ value.expectedValidity === expectedValidity ? valid() : invalid(`${category} expected validity is wrong`),
276
+ typeof value.description === "string" && value.description.length > 0 ? valid() : invalid(`${category} description is required`),
277
+ authorityBoundaryChecks(value),
278
+ category.startsWith("valid.") ? validSampleResult : valid(),
279
+ category.startsWith("invalid.") && validSampleResult.ok === false ? valid() : category.startsWith("invalid.") ? invalid(`${category} sample must fail schema validation`) : valid(),
280
+ category.startsWith("valid.") && redactionResult.ok === false ? invalid(`${category} valid sample contains redaction-blocked markers`) : valid(),
281
+ category.startsWith("invalid.") && redactionResult.ok === false ? invalid(`${category} invalid sample must not rely on redaction markers`) : valid(),
282
+ category.startsWith("redaction.") && redactionResult.ok === false ? valid() : category.startsWith("redaction.") ? invalid(`${category} redaction probe must be blocked`) : valid()
283
+ ]);
284
+ }
285
+ export function validateFlowDeskFds1FixtureCatalogEntry(entry) {
286
+ if (!isRecord(entry))
287
+ return invalid("FDS-1 fixture catalog entry must be an object");
288
+ const schemaId = typeof entry.schemaId === "string" ? entry.schemaId : "";
289
+ const registryEntry = getRelease1MinimumToolRegistry().find((candidate) => candidate.schemaId === schemaId);
290
+ const commandEntry = typeof entry.commandName === "string" ? getFlowDeskCommandManifestEntry(entry.commandName) : undefined;
291
+ const categories = entry.categories;
292
+ const categoryResults = isRecord(categories)
293
+ ? FLOWDESK_FDS1_FIXTURE_CATEGORIES.map((category) => validateFixtureCategory(schemaId, category, categories[category]))
294
+ : [invalid("categories must be an object")];
295
+ const categoryKeys = isRecord(categories) ? Object.keys(categories) : [];
296
+ const exactCategories = JSON.stringify(categoryKeys) === JSON.stringify(FLOWDESK_FDS1_FIXTURE_CATEGORIES);
297
+ return combine([
298
+ rejectUnknownProperties(entry, [
299
+ "fixtureId",
300
+ "fixturePrefix",
301
+ "commandName",
302
+ "toolName",
303
+ "schemaId",
304
+ "schemaKind",
305
+ "interfaceName",
306
+ "diagnosticOnly",
307
+ "schemaCompatibilityStatus",
308
+ "schemaCompatibilityReadiness",
309
+ "categories",
310
+ "productionRegistrationEligible",
311
+ "schemaConversionReady",
312
+ "dispatchApprovalEligible",
313
+ "fallbackAuthority",
314
+ "hardCancelOrNoReplyAuthority",
315
+ "actualLaneLaunch",
316
+ "providerCall",
317
+ "runtimeExecution"
318
+ ]),
319
+ registryEntry !== undefined ? valid() : invalid("schemaId is not a Release 1 minimum registry entry"),
320
+ registryEntry?.toolName === entry.toolName ? valid() : invalid("toolName does not align with registry"),
321
+ registryEntry?.kind === entry.schemaKind ? valid() : invalid("schemaKind does not align with registry"),
322
+ registryEntry?.fixturePrefix === entry.fixturePrefix ? valid() : invalid("fixturePrefix does not align with registry"),
323
+ registryEntry?.interfaceName === entry.interfaceName ? valid() : invalid("interfaceName does not align with registry"),
324
+ registryEntry?.registrationStatus === "registered_minimum" ? valid() : invalid("registry entry must be a minimum registration stub"),
325
+ registryEntry?.toolContract?.schemaCompatibilityReadiness === "compatible_with_runtime_closed_validation" ? valid() : invalid("registry schema compatibility readiness must reflect runtime-closed compatibility"),
326
+ commandEntry !== undefined ? valid() : invalid("commandName is not in the minimum command manifest"),
327
+ commandEntry?.toolName === entry.toolName ? valid() : invalid("command/tool mapping does not align with manifest"),
328
+ entry.schemaKind === "tool_request" && commandEntry?.requestSchemaId === entry.schemaId ? valid() : entry.schemaKind === "tool_response" && commandEntry?.responseSchemaId === entry.schemaId ? valid() : invalid("schemaId does not align with command manifest"),
329
+ entry.fixtureId === `flowdesk-fds1-fixture:${entry.fixturePrefix}:${entry.schemaKind}:v1` ? valid() : invalid("fixtureId does not align with fixture prefix and schema kind"),
330
+ entry.diagnosticOnly === false ? valid() : invalid("minimum fixture entries must not be diagnostic-only"),
331
+ RELEASE_1_OPTIONAL_DIAGNOSTIC_TOOL_NAMES.includes(entry.toolName) ? invalid("optional diagnostic tools must not appear in the minimum fixture catalog") : valid(),
332
+ entry.schemaCompatibilityStatus === "compatible_runtime_closed_validation" ? valid() : invalid("schemaCompatibilityStatus must reflect runtime-closed compatibility"),
333
+ entry.schemaCompatibilityReadiness === "compatible_with_runtime_closed_validation" ? valid() : invalid("schemaCompatibilityReadiness must reflect runtime-closed compatibility"),
334
+ exactCategories ? valid() : invalid("fixture categories must exactly match the FDS-1 required categories"),
335
+ authorityBoundaryChecks(entry),
336
+ ...categoryResults
337
+ ]);
338
+ }
339
+ export function validateFlowDeskFds1FixtureCatalogComplete(catalog = FLOWDESK_FDS1_FIXTURE_CATALOG) {
340
+ const expectedSchemaIds = getRelease1MinimumToolRegistry().map((entry) => entry.schemaId);
341
+ const actualSchemaIds = catalog.map((entry) => (isRecord(entry) ? entry.schemaId : undefined));
342
+ const entryResults = catalog.map((entry) => validateFlowDeskFds1FixtureCatalogEntry(entry));
343
+ return combine([
344
+ catalog.length === expectedSchemaIds.length ? valid() : invalid("fixture catalog must contain exactly the minimum request/response schemas"),
345
+ JSON.stringify(actualSchemaIds) === JSON.stringify(expectedSchemaIds) ? valid() : invalid("fixture catalog schema order or membership is not exact"),
346
+ FLOWDESK_FDS1_PRE_SPIKE_PRODUCTION_FIXTURE_REGISTRY.length === 0 ? valid() : invalid("pre-spike production fixture registry must remain empty"),
347
+ ...entryResults
348
+ ]);
349
+ }
350
+ export function validateFlowDeskFds1UnsupportedControlStub(stub) {
351
+ if (!isRecord(stub))
352
+ return invalid("unsupported control stub must be an object");
353
+ return combine([
354
+ rejectUnknownProperties(stub, [
355
+ "stubId",
356
+ "controlKind",
357
+ "blocked",
358
+ "diagnosticOnly",
359
+ "schemaCompatibilityReadiness",
360
+ "reason",
361
+ "sampleArgs",
362
+ "productionRegistrationEligible",
363
+ "schemaConversionReady",
364
+ "dispatchApprovalEligible",
365
+ "fallbackAuthority",
366
+ "hardCancelOrNoReplyAuthority",
367
+ "actualLaneLaunch",
368
+ "providerCall",
369
+ "runtimeExecution"
370
+ ]),
371
+ typeof stub.stubId === "string" && FLOWDESK_FDS1_UNSUPPORTED_CONTROL_STUB_IDS.includes(stub.stubId) ? valid() : invalid("stubId is not a required unsupported control"),
372
+ typeof stub.controlKind === "string" && stub.stubId === `unsupported.${stub.controlKind}` ? valid() : invalid("controlKind does not align with stubId"),
373
+ stub.blocked === true ? valid() : invalid("unsupported control must remain blocked"),
374
+ stub.diagnosticOnly === false ? valid() : invalid("unsupported control stubs are not production diagnostics"),
375
+ stub.schemaCompatibilityReadiness === "blocked_until_fds1_conversion_spike_passes" ? valid() : invalid("schema compatibility readiness must remain blocked"),
376
+ typeof stub.reason === "string" && stub.reason.length > 0 ? valid() : invalid("unsupported control reason is required"),
377
+ isRecord(stub.sampleArgs) ? validateNoForbiddenRawPayloads(stub.sampleArgs, String(stub.stubId)) : invalid("sampleArgs must be an object"),
378
+ authorityBoundaryChecks(stub)
379
+ ]);
380
+ }
381
+ export function validateFlowDeskFds1UnsupportedControlStubsComplete(stubs = FLOWDESK_FDS1_UNSUPPORTED_CONTROL_STUBS) {
382
+ const stubIds = stubs.map((stub) => (isRecord(stub) ? stub.stubId : undefined));
383
+ return combine([
384
+ stubs.length === FLOWDESK_FDS1_UNSUPPORTED_CONTROL_STUB_IDS.length ? valid() : invalid("unsupported control stubs must contain exactly the required blocked controls"),
385
+ JSON.stringify(stubIds) === JSON.stringify(FLOWDESK_FDS1_UNSUPPORTED_CONTROL_STUB_IDS) ? valid() : invalid("unsupported control stub order or membership is not exact"),
386
+ ...stubs.map((stub) => validateFlowDeskFds1UnsupportedControlStub(stub))
387
+ ]);
388
+ }
389
+ //# sourceMappingURL=tool-contract-fixtures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-contract-fixtures.js","sourceRoot":"","sources":["../src/tool-contract-fixtures.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { FlowDeskTopTierReviewerLaneProbeResultV1 } from "./release1-contracts.js";
2
+ export interface FlowDeskTopTierReviewerLaneProbeEvaluatorContextV1 {
3
+ observedAt?: string;
4
+ forceFailure?: {
5
+ label: string;
6
+ missingEvidence: "auth" | "usage" | "quota" | "provider_health" | "runtime_echo" | "telemetry";
7
+ };
8
+ }
9
+ export declare function evaluateFlowDeskTopTierReviewerLaneProbeV1(request: unknown, context?: FlowDeskTopTierReviewerLaneProbeEvaluatorContextV1): FlowDeskTopTierReviewerLaneProbeResultV1;
10
+ //# sourceMappingURL=top-tier-reviewer-lane-probe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"top-tier-reviewer-lane-probe.d.ts","sourceRoot":"","sources":["../src/top-tier-reviewer-lane-probe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,wCAAwC,EACzC,MAAM,yBAAyB,CAAC;AAGjC,MAAM,WAAW,kDAAkD;IACjE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,iBAAiB,GAAG,cAAc,GAAG,WAAW,CAAC;KAChG,CAAC;CACH;AA4BD,wBAAgB,0CAA0C,CACxD,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,kDAAuD,GAC/D,wCAAwC,CAyD1C"}
@@ -0,0 +1,76 @@
1
+ import { validateTopTierReviewerLaneProbeRequestV1 } from "./validators.js";
2
+ const DEFAULT_OBSERVED_AT = "2026-05-19T00:00:00.000Z";
3
+ function probeResult(request, outcome, options) {
4
+ const safeNextActions = outcome === "probe_pass"
5
+ ? ["/flowdesk-status"]
6
+ : ["/flowdesk-doctor", "/flowdesk-status"];
7
+ const result = {
8
+ schema_version: "flowdesk.top_tier_reviewer_lane_probe.result.v1",
9
+ probe_id: request.probe_id,
10
+ channel: request.channel,
11
+ outcome,
12
+ observed_at: options.observedAt,
13
+ evidence_refs: [...options.evidenceRefs],
14
+ safe_next_actions: [...safeNextActions],
15
+ dispatch_authority_enabled: false,
16
+ provider_call_made: false,
17
+ lane_launch_made: false
18
+ };
19
+ if (options.failureLabel !== undefined)
20
+ result.failure_label = options.failureLabel;
21
+ return result;
22
+ }
23
+ export function evaluateFlowDeskTopTierReviewerLaneProbeV1(request, context = {}) {
24
+ const validation = validateTopTierReviewerLaneProbeRequestV1(request);
25
+ const observedAt = context.observedAt ?? DEFAULT_OBSERVED_AT;
26
+ if (!validation.ok) {
27
+ return probeResult({
28
+ schema_version: "flowdesk.top_tier_reviewer_lane_probe.request.v1",
29
+ probe_id: "probe-invalid",
30
+ binding_ref: "binding-invalid",
31
+ lane_plan_ref: "lane-plan-invalid",
32
+ channel: "subtask_true_command_lane",
33
+ agent_id: "reviewer",
34
+ provider_qualified_model_id: "claude/claude-opus-4-5",
35
+ perspective: "policy_security",
36
+ auth_evidence_ref: "auth-invalid",
37
+ usage_evidence_ref: "usage-invalid",
38
+ quota_evidence_ref: "quota-invalid",
39
+ provider_health_ref: "health-invalid",
40
+ runtime_echo_ref: "echo-invalid",
41
+ telemetry_ref: "telemetry-invalid",
42
+ policy_pack_eligibility_ref: "policy-invalid",
43
+ redaction_version: "redaction-v1",
44
+ fake_runtime: true,
45
+ dispatch_authority_enabled: false
46
+ }, "probe_invalid", {
47
+ observedAt,
48
+ failureLabel: validation.errors.slice(0, 3).join("; ").slice(0, 200) || "invalid probe request",
49
+ evidenceRefs: []
50
+ });
51
+ }
52
+ const typedRequest = request;
53
+ const evidenceMap = {
54
+ auth: typedRequest.auth_evidence_ref,
55
+ usage: typedRequest.usage_evidence_ref,
56
+ quota: typedRequest.quota_evidence_ref,
57
+ provider_health: typedRequest.provider_health_ref,
58
+ runtime_echo: typedRequest.runtime_echo_ref,
59
+ telemetry: typedRequest.telemetry_ref
60
+ };
61
+ if (context.forceFailure !== undefined) {
62
+ const filtered = Object.entries(evidenceMap)
63
+ .filter(([key]) => key !== context.forceFailure.missingEvidence)
64
+ .map(([, ref]) => ref);
65
+ return probeResult(typedRequest, "probe_fail_closed", {
66
+ observedAt,
67
+ failureLabel: context.forceFailure.label,
68
+ evidenceRefs: filtered
69
+ });
70
+ }
71
+ return probeResult(typedRequest, "probe_pass", {
72
+ observedAt,
73
+ evidenceRefs: Object.values(evidenceMap)
74
+ });
75
+ }
76
+ //# sourceMappingURL=top-tier-reviewer-lane-probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"top-tier-reviewer-lane-probe.js","sourceRoot":"","sources":["../src/top-tier-reviewer-lane-probe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { FlowDeskProviderHealthSnapshotV1, FlowDeskUsageSnapshotV1, ProviderFailureClass, ProviderFamily, UsageUncertaintyFlagV1 } from "./release1-contracts.js";
2
+ import { type ValidationResult } from "./validators.js";
3
+ export declare const PROVIDER_HEALTH_SOURCE_LABELS: readonly ["opencode_config", "plugin_event", "doctor_probe", "usage_collector", "provider_smoke_test", "manual_report", "unknown"];
4
+ export type ProviderHealthSourceLabelV1 = (typeof PROVIDER_HEALTH_SOURCE_LABELS)[number];
5
+ export declare const USAGE_SOURCE_LABELS: readonly ["provider_api_truth", "local_observed_history", "response_usage_accounting", "diagnostic_probe", "inferred_estimate"];
6
+ export type UsageSourceLabelV1 = (typeof USAGE_SOURCE_LABELS)[number];
7
+ export interface UnknownUsageSnapshotOptions {
8
+ snapshotId: string;
9
+ providerFamily: ProviderFamily;
10
+ modelFamily?: string;
11
+ observedAt?: string;
12
+ sourceRef: string;
13
+ uncertaintyFlags?: readonly UsageUncertaintyFlagV1[];
14
+ }
15
+ export interface ProviderHealthDiagnosticOptions {
16
+ snapshotId: string;
17
+ providerFamily: ProviderFamily;
18
+ modelFamily?: string;
19
+ observedAt: string;
20
+ sourceRef: string;
21
+ availabilityState?: FlowDeskProviderHealthSnapshotV1["availability_state"];
22
+ failureClass?: ProviderFailureClass;
23
+ telemetryRef?: string;
24
+ safeRemediation?: string;
25
+ }
26
+ export type AuthReadinessRequiredProviderFamilyV1 = Exclude<ProviderFamily, "unknown" | "all">;
27
+ export interface AuthMissingProviderHealthOptions {
28
+ snapshotId: string;
29
+ providerFamily: AuthReadinessRequiredProviderFamilyV1;
30
+ modelFamily?: string;
31
+ observedAt: string;
32
+ sourceRef: string;
33
+ }
34
+ export declare function providerFamilyRequiresAuthReadinessV1(providerFamily: ProviderFamily): providerFamily is AuthReadinessRequiredProviderFamilyV1;
35
+ export declare function createUnknownUsageSnapshotV1(options: UnknownUsageSnapshotOptions): FlowDeskUsageSnapshotV1;
36
+ export declare function createOpenCodeGoUnknownUsageSnapshotV1(snapshotId: string, sourceRef: string, modelFamily?: string): FlowDeskUsageSnapshotV1;
37
+ export declare function createZAiUnknownUsageSnapshotV1(snapshotId: string, sourceRef: string, modelFamily?: string): FlowDeskUsageSnapshotV1;
38
+ export declare function createProviderHealthDiagnosticSnapshotV1(options: ProviderHealthDiagnosticOptions): FlowDeskProviderHealthSnapshotV1;
39
+ export declare function createAuthMissingProviderHealthSnapshotV1(options: AuthMissingProviderHealthOptions): FlowDeskProviderHealthSnapshotV1;
40
+ export declare function createOpenCodeGoUnknownProviderHealthSnapshotV1(snapshotId: string, sourceRef: string, observedAt: string, modelFamily?: string): FlowDeskProviderHealthSnapshotV1;
41
+ export declare function createZAiUnknownProviderHealthSnapshotV1(snapshotId: string, sourceRef: string, observedAt: string, modelFamily?: string): FlowDeskProviderHealthSnapshotV1;
42
+ export declare function validateUsageAndProviderHealthSeparatedV1(usage: unknown, providerHealth: unknown): ValidationResult;
43
+ export declare function rejectMergedUsageProviderAuthorityV1(value: unknown): ValidationResult;
44
+ //# sourceMappingURL=usage-health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usage-health.d.ts","sourceRoot":"","sources":["../src/usage-health.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gCAAgC,EAChC,uBAAuB,EACvB,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAW,KAAK,gBAAgB,EAAoE,MAAM,iBAAiB,CAAC;AAEnI,eAAO,MAAM,6BAA6B,oIAAqI,CAAC;AAChL,MAAM,MAAM,2BAA2B,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzF,eAAO,MAAM,mBAAmB,iIAAkI,CAAC;AACnK,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,MAAM,WAAW,2BAA2B;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,+BAA+B;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,gCAAgC,CAAC,oBAAoB,CAAC,CAAC;IAC3E,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,qCAAqC,GAAG,OAAO,CAAC,cAAc,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC;AAE/F,MAAM,WAAW,gCAAgC;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,qCAAqC,CAAC;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,qCAAqC,CAAC,cAAc,EAAE,cAAc,GAAG,cAAc,IAAI,qCAAqC,CAE7I;AAWD,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,2BAA2B,GAAG,uBAAuB,CAc1G;AAED,wBAAgB,sCAAsC,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,SAAY,GAAG,uBAAuB,CAE9I;AAED,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,SAAY,GAAG,uBAAuB,CAEvI;AAED,wBAAgB,wCAAwC,CAAC,OAAO,EAAE,+BAA+B,GAAG,gCAAgC,CAoBnI;AAED,wBAAgB,yCAAyC,CAAC,OAAO,EAAE,gCAAgC,GAAG,gCAAgC,CAYrI;AAED,wBAAgB,+CAA+C,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,SAAY,GAAG,gCAAgC,CAEpL;AAED,wBAAgB,wCAAwC,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,SAAY,GAAG,gCAAgC,CAE7K;AAED,wBAAgB,yCAAyC,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,GAAG,gBAAgB,CAQnH;AAED,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CASrF"}