@flowdesk/core 0.1.0 → 0.1.3

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 (144) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +44 -0
  3. package/dist/authority-promotion.d.ts +70 -0
  4. package/dist/authority-promotion.d.ts.map +1 -0
  5. package/dist/authority-promotion.js +388 -0
  6. package/dist/authority-promotion.js.map +1 -0
  7. package/dist/chat-control-authority.d.ts +83 -0
  8. package/dist/chat-control-authority.d.ts.map +1 -0
  9. package/dist/chat-control-authority.js +238 -0
  10. package/dist/chat-control-authority.js.map +1 -0
  11. package/dist/chat-hook-authority-probe.d.ts +39 -0
  12. package/dist/chat-hook-authority-probe.d.ts.map +1 -0
  13. package/dist/chat-hook-authority-probe.js +153 -0
  14. package/dist/chat-hook-authority-probe.js.map +1 -0
  15. package/dist/chat-routing.d.ts.map +1 -1
  16. package/dist/chat-routing.js +18 -15
  17. package/dist/chat-routing.js.map +1 -1
  18. package/dist/connector-gateway.d.ts +34 -0
  19. package/dist/connector-gateway.d.ts.map +1 -0
  20. package/dist/connector-gateway.js +147 -0
  21. package/dist/connector-gateway.js.map +1 -0
  22. package/dist/connector-profile.d.ts +41 -0
  23. package/dist/connector-profile.d.ts.map +1 -0
  24. package/dist/connector-profile.js +125 -0
  25. package/dist/connector-profile.js.map +1 -0
  26. package/dist/controlled-conformance-doc-write.d.ts +44 -0
  27. package/dist/controlled-conformance-doc-write.d.ts.map +1 -0
  28. package/dist/controlled-conformance-doc-write.js +142 -0
  29. package/dist/controlled-conformance-doc-write.js.map +1 -0
  30. package/dist/controlled-redacted-audit-export-write.d.ts +45 -0
  31. package/dist/controlled-redacted-audit-export-write.d.ts.map +1 -0
  32. package/dist/controlled-redacted-audit-export-write.js +145 -0
  33. package/dist/controlled-redacted-audit-export-write.js.map +1 -0
  34. package/dist/core-completion-safety-contracts.d.ts +35 -0
  35. package/dist/core-completion-safety-contracts.d.ts.map +1 -0
  36. package/dist/core-completion-safety-contracts.js +98 -0
  37. package/dist/core-completion-safety-contracts.js.map +1 -0
  38. package/dist/dispatch-attempt-manifest.d.ts +59 -0
  39. package/dist/dispatch-attempt-manifest.d.ts.map +1 -0
  40. package/dist/dispatch-attempt-manifest.js +294 -0
  41. package/dist/dispatch-attempt-manifest.js.map +1 -0
  42. package/dist/dispatch-idempotency.d.ts +89 -0
  43. package/dist/dispatch-idempotency.d.ts.map +1 -0
  44. package/dist/dispatch-idempotency.js +275 -0
  45. package/dist/dispatch-idempotency.js.map +1 -0
  46. package/dist/external-auth-policy.d.ts +49 -0
  47. package/dist/external-auth-policy.d.ts.map +1 -0
  48. package/dist/external-auth-policy.js +166 -0
  49. package/dist/external-auth-policy.js.map +1 -0
  50. package/dist/fake-remote-connector-adapter.d.ts +37 -0
  51. package/dist/fake-remote-connector-adapter.d.ts.map +1 -0
  52. package/dist/fake-remote-connector-adapter.js +162 -0
  53. package/dist/fake-remote-connector-adapter.js.map +1 -0
  54. package/dist/fallback-decision.d.ts +29 -0
  55. package/dist/fallback-decision.d.ts.map +1 -0
  56. package/dist/fallback-decision.js +93 -0
  57. package/dist/fallback-decision.js.map +1 -0
  58. package/dist/fallback-regate-plan.d.ts +34 -0
  59. package/dist/fallback-regate-plan.d.ts.map +1 -0
  60. package/dist/fallback-regate-plan.js +122 -0
  61. package/dist/fallback-regate-plan.js.map +1 -0
  62. package/dist/fds1-schema-probe-result.d.ts +37 -0
  63. package/dist/fds1-schema-probe-result.d.ts.map +1 -0
  64. package/dist/fds1-schema-probe-result.js +115 -0
  65. package/dist/fds1-schema-probe-result.js.map +1 -0
  66. package/dist/index.d.ts +25 -0
  67. package/dist/index.d.ts.map +1 -1
  68. package/dist/index.js +25 -0
  69. package/dist/index.js.map +1 -1
  70. package/dist/lane-heartbeat.d.ts +49 -0
  71. package/dist/lane-heartbeat.d.ts.map +1 -0
  72. package/dist/lane-heartbeat.js +149 -0
  73. package/dist/lane-heartbeat.js.map +1 -0
  74. package/dist/lane-lifecycle-record.d.ts +32 -0
  75. package/dist/lane-lifecycle-record.d.ts.map +1 -0
  76. package/dist/lane-lifecycle-record.js +134 -0
  77. package/dist/lane-lifecycle-record.js.map +1 -0
  78. package/dist/lane-stall-projection.d.ts +43 -0
  79. package/dist/lane-stall-projection.d.ts.map +1 -0
  80. package/dist/lane-stall-projection.js +272 -0
  81. package/dist/lane-stall-projection.js.map +1 -0
  82. package/dist/model-availability-cache.d.ts +286 -0
  83. package/dist/model-availability-cache.d.ts.map +1 -0
  84. package/dist/model-availability-cache.js +1109 -0
  85. package/dist/model-availability-cache.js.map +1 -0
  86. package/dist/operational-intelligence.d.ts +38 -0
  87. package/dist/operational-intelligence.d.ts.map +1 -0
  88. package/dist/operational-intelligence.js +107 -0
  89. package/dist/operational-intelligence.js.map +1 -0
  90. package/dist/production-approval-source.d.ts +61 -0
  91. package/dist/production-approval-source.d.ts.map +1 -0
  92. package/dist/production-approval-source.js +226 -0
  93. package/dist/production-approval-source.js.map +1 -0
  94. package/dist/production-enablement.d.ts +92 -1
  95. package/dist/production-enablement.d.ts.map +1 -1
  96. package/dist/production-enablement.js +421 -8
  97. package/dist/production-enablement.js.map +1 -1
  98. package/dist/production-verification.d.ts +31 -0
  99. package/dist/production-verification.d.ts.map +1 -0
  100. package/dist/production-verification.js +126 -0
  101. package/dist/production-verification.js.map +1 -0
  102. package/dist/provider-usage-collector.d.ts +7 -0
  103. package/dist/provider-usage-collector.d.ts.map +1 -1
  104. package/dist/provider-usage-collector.js +64 -10
  105. package/dist/provider-usage-collector.js.map +1 -1
  106. package/dist/release1-contracts.d.ts +8 -2
  107. package/dist/release1-contracts.d.ts.map +1 -1
  108. package/dist/release1-contracts.js +2 -1
  109. package/dist/release1-contracts.js.map +1 -1
  110. package/dist/remote-write-connector-gate.d.ts +91 -0
  111. package/dist/remote-write-connector-gate.d.ts.map +1 -0
  112. package/dist/remote-write-connector-gate.js +291 -0
  113. package/dist/remote-write-connector-gate.js.map +1 -0
  114. package/dist/runtime-lane-productization.d.ts +78 -0
  115. package/dist/runtime-lane-productization.d.ts.map +1 -0
  116. package/dist/runtime-lane-productization.js +270 -0
  117. package/dist/runtime-lane-productization.js.map +1 -0
  118. package/dist/sanitized-auth-capture.d.ts +50 -0
  119. package/dist/sanitized-auth-capture.d.ts.map +1 -0
  120. package/dist/sanitized-auth-capture.js +164 -0
  121. package/dist/sanitized-auth-capture.js.map +1 -0
  122. package/dist/schema-artifacts.d.ts.map +1 -1
  123. package/dist/schema-artifacts.js +37 -6
  124. package/dist/schema-artifacts.js.map +1 -1
  125. package/dist/schema-registry.d.ts.map +1 -1
  126. package/dist/schema-registry.js +21 -0
  127. package/dist/schema-registry.js.map +1 -1
  128. package/dist/session-evidence.d.ts +117 -0
  129. package/dist/session-evidence.d.ts.map +1 -1
  130. package/dist/session-evidence.js +581 -1
  131. package/dist/session-evidence.js.map +1 -1
  132. package/dist/state-paths.d.ts +1 -1
  133. package/dist/state-paths.d.ts.map +1 -1
  134. package/dist/state-paths.js +56 -6
  135. package/dist/state-paths.js.map +1 -1
  136. package/dist/status.d.ts +7 -0
  137. package/dist/status.d.ts.map +1 -1
  138. package/dist/status.js +89 -1
  139. package/dist/status.js.map +1 -1
  140. package/dist/validators.d.ts +1 -0
  141. package/dist/validators.d.ts.map +1 -1
  142. package/dist/validators.js +30 -7
  143. package/dist/validators.js.map +1 -1
  144. package/package.json +11 -2
@@ -0,0 +1,145 @@
1
+ import { invalid, valid, validateNoForbiddenRawPayloads, validateOpaqueId, validateOpaqueRef, } from "./validators.js";
2
+ function isRecord(value) {
3
+ return typeof value === "object" && value !== null && !Array.isArray(value);
4
+ }
5
+ function validateTimestamp(value, label) {
6
+ return typeof value === "string" && Number.isFinite(Date.parse(value))
7
+ ? valid()
8
+ : invalid(`${label} must be a parseable timestamp`);
9
+ }
10
+ function validateHashRef(value, label) {
11
+ const ref = validateOpaqueRef(value, label);
12
+ if (!ref.ok)
13
+ return ref;
14
+ return typeof value === "string" && /^(hash-|sha256-)/.test(value)
15
+ ? valid()
16
+ : invalid(`${label} must be a hash-bound opaque ref`);
17
+ }
18
+ function rejectUnknownProperties(value, allowed, label) {
19
+ const unknown = Object.keys(value).filter((key) => !allowed.includes(key));
20
+ return unknown.length === 0
21
+ ? valid()
22
+ : invalid(`${label} unknown properties: ${unknown.join(",")}`);
23
+ }
24
+ function validateArtifactPath(path, workflowId, targetRef) {
25
+ if (typeof path !== "string")
26
+ return invalid("artifact_path must be a string");
27
+ if (typeof workflowId !== "string")
28
+ return invalid("workflow_id must be a string");
29
+ if (typeof targetRef !== "string")
30
+ return invalid("target_ref must be a string");
31
+ if (path !== `.flowdesk/sessions/${workflowId}/redacted-audit/${targetRef}.json`)
32
+ return invalid("artifact_path must be the controlled redacted audit export path for workflow_id and target_ref");
33
+ if (path.startsWith("/") ||
34
+ /^[A-Za-z]:[\\/]/.test(path) ||
35
+ path.startsWith("~") ||
36
+ path.includes("\\") ||
37
+ path.includes("//") ||
38
+ path.includes("/../") ||
39
+ path.endsWith("/..") ||
40
+ path.includes("/./"))
41
+ return invalid("artifact_path must be a relative .flowdesk path without traversal");
42
+ return validateNoForbiddenRawPayloads(path, "artifact_path");
43
+ }
44
+ export function validateFlowDeskControlledRedactedAuditExportWriteRecordV1(value) {
45
+ if (!isRecord(value))
46
+ return invalid("controlled redacted audit export write record must be an object");
47
+ const record = value;
48
+ const errors = [];
49
+ const allowed = [
50
+ "schema_version",
51
+ "ledger_entry_id",
52
+ "request_id",
53
+ "workflow_id",
54
+ "attempt_id",
55
+ "target_kind",
56
+ "target_ref",
57
+ "approval_id",
58
+ "actor_ref",
59
+ "profile_ref",
60
+ "evidence_bundle_hash",
61
+ "guard_decision_ref",
62
+ "issuance_audit_ref",
63
+ "consumption_audit_ref",
64
+ "redaction_policy_ref",
65
+ "content_hash_ref",
66
+ "pre_write_audit_ref",
67
+ "dry_run_ref",
68
+ "artifact_ref",
69
+ "artifact_path",
70
+ "artifact_sha256_ref",
71
+ "materialized_at",
72
+ "local_only",
73
+ "redacted",
74
+ "writeAttempted",
75
+ "remoteWriteAttempted",
76
+ "githubWriteAttempted",
77
+ "connectorWriteAttempted",
78
+ "storageWriteAttempted",
79
+ "databaseWriteAttempted",
80
+ "urlWriteAttempted",
81
+ "rawPathWriteAttempted",
82
+ "dispatch_authority_enabled",
83
+ "realOpenCodeDispatch",
84
+ "providerCall",
85
+ "actualLaneLaunch",
86
+ "runtimeExecution",
87
+ "fallbackAuthority",
88
+ "toolAuthority",
89
+ "hardCancelOrNoReplyAuthority",
90
+ ];
91
+ errors.push(...rejectUnknownProperties(record, allowed, "controlled redacted audit export write record").errors);
92
+ if (record.schema_version !== "flowdesk.controlled_redacted_audit_export_write.v1")
93
+ errors.push("controlled redacted audit export write record schema_version is invalid");
94
+ for (const [valueToCheck, label] of [
95
+ [record.ledger_entry_id, "ledger_entry_id"],
96
+ [record.request_id, "request_id"],
97
+ [record.workflow_id, "workflow_id"],
98
+ [record.attempt_id, "attempt_id"],
99
+ ])
100
+ errors.push(...validateOpaqueId(valueToCheck, label).errors);
101
+ if (record.target_kind !== "redacted_audit_export")
102
+ errors.push("target_kind must be redacted_audit_export");
103
+ for (const [valueToCheck, label] of [
104
+ [record.target_ref, "target_ref"],
105
+ [record.approval_id, "approval_id"],
106
+ [record.actor_ref, "actor_ref"],
107
+ [record.profile_ref, "profile_ref"],
108
+ [record.guard_decision_ref, "guard_decision_ref"],
109
+ [record.issuance_audit_ref, "issuance_audit_ref"],
110
+ [record.consumption_audit_ref, "consumption_audit_ref"],
111
+ [record.redaction_policy_ref, "redaction_policy_ref"],
112
+ [record.pre_write_audit_ref, "pre_write_audit_ref"],
113
+ [record.dry_run_ref, "dry_run_ref"],
114
+ [record.artifact_ref, "artifact_ref"],
115
+ ])
116
+ errors.push(...validateOpaqueRef(valueToCheck, label).errors);
117
+ errors.push(...validateHashRef(record.evidence_bundle_hash, "evidence_bundle_hash").errors);
118
+ errors.push(...validateHashRef(record.content_hash_ref, "content_hash_ref").errors);
119
+ errors.push(...validateHashRef(record.artifact_sha256_ref, "artifact_sha256_ref").errors);
120
+ errors.push(...validateArtifactPath(record.artifact_path, record.workflow_id, record.target_ref).errors);
121
+ errors.push(...validateTimestamp(record.materialized_at, "materialized_at").errors);
122
+ if (record.content_hash_ref !== record.artifact_sha256_ref)
123
+ errors.push("content_hash_ref must match artifact_sha256_ref");
124
+ if (record.local_only !== true || record.redacted !== true || record.writeAttempted !== true)
125
+ errors.push("controlled redacted audit export write must be local-only, redacted, and attempted");
126
+ if (record.remoteWriteAttempted !== false ||
127
+ record.githubWriteAttempted !== false ||
128
+ record.connectorWriteAttempted !== false ||
129
+ record.storageWriteAttempted !== false ||
130
+ record.databaseWriteAttempted !== false ||
131
+ record.urlWriteAttempted !== false ||
132
+ record.rawPathWriteAttempted !== false ||
133
+ record.dispatch_authority_enabled !== false ||
134
+ record.realOpenCodeDispatch !== false ||
135
+ record.providerCall !== false ||
136
+ record.actualLaneLaunch !== false ||
137
+ record.runtimeExecution !== false ||
138
+ record.fallbackAuthority !== false ||
139
+ record.toolAuthority !== false ||
140
+ record.hardCancelOrNoReplyAuthority !== false)
141
+ errors.push("controlled redacted audit export write cannot enable external, dispatch, fallback, tool, or hard-chat authority");
142
+ errors.push(...validateNoForbiddenRawPayloads(record, "controlled_redacted_audit_export_write_record").errors);
143
+ return errors.length === 0 ? valid() : invalid(...errors);
144
+ }
145
+ //# sourceMappingURL=controlled-redacted-audit-export-write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controlled-redacted-audit-export-write.js","sourceRoot":"","sources":["../src/controlled-redacted-audit-export-write.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { type ValidationResult } from "./validators.js";
2
+ export declare const FLOWDESK_ADVISORY_FORBIDDEN_CONSUMERS: readonly ["guard", "approval", "dispatch", "verification", "external_write", "reviewer_verdict_acceptance"];
3
+ export type FlowDeskAdvisoryForbiddenConsumerV1 = (typeof FLOWDESK_ADVISORY_FORBIDDEN_CONSUMERS)[number];
4
+ export interface FlowDeskAdvisoryOutputFirewallV1 {
5
+ schema_version: "flowdesk.advisory_output_firewall.v1";
6
+ advisory_ref: string;
7
+ workflow_id: string;
8
+ source_schema_version: string;
9
+ allowed_consumer_refs: string[];
10
+ forbidden_consumers: FlowDeskAdvisoryForbiddenConsumerV1[];
11
+ advisory_only: true;
12
+ guard_authority_enabled: false;
13
+ approval_authority_enabled: false;
14
+ dispatch_authority_enabled: false;
15
+ verification_authority_enabled: false;
16
+ external_write_authority_enabled: false;
17
+ }
18
+ export interface FlowDeskFederatedRegistryStateV1 {
19
+ schema_version: "flowdesk.federated_registry_state.v1";
20
+ registry_state_id: string;
21
+ workflow_id: string;
22
+ state: "disabled" | "documentation_only";
23
+ policy_ref: string;
24
+ remote_upload_enabled: false;
25
+ remote_download_enabled: false;
26
+ planning_influence_enabled: false;
27
+ ranking_influence_enabled: false;
28
+ guard_influence_enabled: false;
29
+ approval_influence_enabled: false;
30
+ dispatch_influence_enabled: false;
31
+ external_write_authority_enabled: false;
32
+ }
33
+ export declare function validateFlowDeskAdvisoryOutputFirewallV1(value: unknown): ValidationResult;
34
+ export declare function validateFlowDeskFederatedRegistryStateV1(value: unknown): ValidationResult;
35
+ //# sourceMappingURL=core-completion-safety-contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-completion-safety-contracts.d.ts","sourceRoot":"","sources":["../src/core-completion-safety-contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,gBAAgB,EAKrB,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,qCAAqC,6GAOxC,CAAC;AACX,MAAM,MAAM,mCAAmC,GAC9C,CAAC,OAAO,qCAAqC,CAAC,CAAC,MAAM,CAAC,CAAC;AAExD,MAAM,WAAW,gCAAgC;IAChD,cAAc,EAAE,sCAAsC,CAAC;IACvD,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,mBAAmB,EAAE,mCAAmC,EAAE,CAAC;IAC3D,aAAa,EAAE,IAAI,CAAC;IACpB,uBAAuB,EAAE,KAAK,CAAC;IAC/B,0BAA0B,EAAE,KAAK,CAAC;IAClC,0BAA0B,EAAE,KAAK,CAAC;IAClC,8BAA8B,EAAE,KAAK,CAAC;IACtC,gCAAgC,EAAE,KAAK,CAAC;CACxC;AAED,MAAM,WAAW,gCAAgC;IAChD,cAAc,EAAE,sCAAsC,CAAC;IACvD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,UAAU,GAAG,oBAAoB,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,KAAK,CAAC;IAC7B,uBAAuB,EAAE,KAAK,CAAC;IAC/B,0BAA0B,EAAE,KAAK,CAAC;IAClC,yBAAyB,EAAE,KAAK,CAAC;IACjC,uBAAuB,EAAE,KAAK,CAAC;IAC/B,0BAA0B,EAAE,KAAK,CAAC;IAClC,0BAA0B,EAAE,KAAK,CAAC;IAClC,gCAAgC,EAAE,KAAK,CAAC;CACxC;AAkBD,wBAAgB,wCAAwC,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAiCzF;AAED,wBAAgB,wCAAwC,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CA2BzF"}
@@ -0,0 +1,98 @@
1
+ import { invalid, valid, validateNoForbiddenRawPayloads, validateOpaqueId, validateOpaqueRef, } from "./validators.js";
2
+ export const FLOWDESK_ADVISORY_FORBIDDEN_CONSUMERS = [
3
+ "guard",
4
+ "approval",
5
+ "dispatch",
6
+ "verification",
7
+ "external_write",
8
+ "reviewer_verdict_acceptance",
9
+ ];
10
+ function isRecord(value) {
11
+ return typeof value === "object" && value !== null && !Array.isArray(value);
12
+ }
13
+ function rejectUnknownProperties(record, allowed, label) {
14
+ const unknown = Object.keys(record).filter((key) => !allowed.includes(key));
15
+ return unknown.length === 0 ? valid() : invalid(`${label} unknown properties: ${unknown.join(",")}`);
16
+ }
17
+ function refs(value, label) {
18
+ if (!Array.isArray(value))
19
+ return invalid(`${label} must be an array`);
20
+ const errors = [];
21
+ for (const [index, ref] of value.entries())
22
+ errors.push(...validateOpaqueRef(ref, `${label}[${index}]`).errors);
23
+ return errors.length === 0 ? valid() : invalid(...errors);
24
+ }
25
+ export function validateFlowDeskAdvisoryOutputFirewallV1(value) {
26
+ if (!isRecord(value))
27
+ return invalid("advisory output firewall must be an object");
28
+ const record = value;
29
+ const errors = [];
30
+ errors.push(...rejectUnknownProperties(record, [
31
+ "schema_version",
32
+ "advisory_ref",
33
+ "workflow_id",
34
+ "source_schema_version",
35
+ "allowed_consumer_refs",
36
+ "forbidden_consumers",
37
+ "advisory_only",
38
+ "guard_authority_enabled",
39
+ "approval_authority_enabled",
40
+ "dispatch_authority_enabled",
41
+ "verification_authority_enabled",
42
+ "external_write_authority_enabled",
43
+ ], "advisory output firewall").errors);
44
+ errors.push(...validateOpaqueRef(record.advisory_ref, "advisory_ref").errors);
45
+ errors.push(...validateOpaqueId(record.workflow_id, "workflow_id").errors);
46
+ if (typeof record.source_schema_version !== "string" || !/^flowdesk\.[a-z0-9_.-]+\.v1$/.test(record.source_schema_version))
47
+ errors.push("source_schema_version is invalid");
48
+ errors.push(...refs(record.allowed_consumer_refs, "allowed_consumer_refs").errors);
49
+ if (!Array.isArray(record.forbidden_consumers))
50
+ errors.push("forbidden_consumers must be an array");
51
+ else {
52
+ for (const consumer of FLOWDESK_ADVISORY_FORBIDDEN_CONSUMERS)
53
+ if (!record.forbidden_consumers.includes(consumer))
54
+ errors.push(`forbidden_consumers must include ${consumer}`);
55
+ for (const [index, consumer] of record.forbidden_consumers.entries())
56
+ if (!FLOWDESK_ADVISORY_FORBIDDEN_CONSUMERS.includes(consumer))
57
+ errors.push(`forbidden_consumers[${index}] is invalid`);
58
+ }
59
+ if (record.schema_version !== "flowdesk.advisory_output_firewall.v1")
60
+ errors.push("advisory output firewall schema_version is invalid");
61
+ if (record.advisory_only !== true || record.guard_authority_enabled !== false || record.approval_authority_enabled !== false || record.dispatch_authority_enabled !== false || record.verification_authority_enabled !== false || record.external_write_authority_enabled !== false)
62
+ errors.push("advisory output firewall cannot enable authority");
63
+ errors.push(...validateNoForbiddenRawPayloads(record, "advisory_output_firewall").errors);
64
+ return errors.length === 0 ? valid() : invalid(...errors);
65
+ }
66
+ export function validateFlowDeskFederatedRegistryStateV1(value) {
67
+ if (!isRecord(value))
68
+ return invalid("federated registry state must be an object");
69
+ const record = value;
70
+ const errors = [];
71
+ errors.push(...rejectUnknownProperties(record, [
72
+ "schema_version",
73
+ "registry_state_id",
74
+ "workflow_id",
75
+ "state",
76
+ "policy_ref",
77
+ "remote_upload_enabled",
78
+ "remote_download_enabled",
79
+ "planning_influence_enabled",
80
+ "ranking_influence_enabled",
81
+ "guard_influence_enabled",
82
+ "approval_influence_enabled",
83
+ "dispatch_influence_enabled",
84
+ "external_write_authority_enabled",
85
+ ], "federated registry state").errors);
86
+ errors.push(...validateOpaqueId(record.registry_state_id, "registry_state_id").errors);
87
+ errors.push(...validateOpaqueId(record.workflow_id, "workflow_id").errors);
88
+ errors.push(...validateOpaqueRef(record.policy_ref, "policy_ref").errors);
89
+ if (record.schema_version !== "flowdesk.federated_registry_state.v1")
90
+ errors.push("federated registry state schema_version is invalid");
91
+ if (record.state !== "disabled" && record.state !== "documentation_only")
92
+ errors.push("federated registry state is invalid");
93
+ if (record.remote_upload_enabled !== false || record.remote_download_enabled !== false || record.planning_influence_enabled !== false || record.ranking_influence_enabled !== false || record.guard_influence_enabled !== false || record.approval_influence_enabled !== false || record.dispatch_influence_enabled !== false || record.external_write_authority_enabled !== false)
94
+ errors.push("federated registry state cannot enable sharing or influence");
95
+ errors.push(...validateNoForbiddenRawPayloads(record, "federated_registry_state").errors);
96
+ return errors.length === 0 ? valid() : invalid(...errors);
97
+ }
98
+ //# sourceMappingURL=core-completion-safety-contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-completion-safety-contracts.js","sourceRoot":"","sources":["../src/core-completion-safety-contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import { type FlowDeskProductionApprovalSourceV1 } from "./production-approval-source.js";
2
+ import type { FlowDeskSessionEvidenceReloadResultV1 } from "./session-evidence.js";
3
+ import { type ValidationResult } from "./validators.js";
4
+ export declare const FLOWDESK_DISPATCH_ATTEMPT_STATES: readonly ["planned", "audit_committed", "approval_consumed", "sdk_call_permitted", "dispatch_failed", "quarantined"];
5
+ export type FlowDeskDispatchAttemptStateV1 = (typeof FLOWDESK_DISPATCH_ATTEMPT_STATES)[number];
6
+ export interface FlowDeskDispatchAttemptManifestV1 {
7
+ schema_version: "flowdesk.dispatch_attempt_manifest.v1";
8
+ workflow_id: string;
9
+ attempt_id: string;
10
+ state: FlowDeskDispatchAttemptStateV1;
11
+ actor_ref: string;
12
+ profile_ref: string;
13
+ provider_qualified_model_id: string;
14
+ provider_binding_hash: string;
15
+ evidence_bundle_hash: string;
16
+ evidence_refs: string[];
17
+ approval_ref: string;
18
+ consumed_approval_ref?: string;
19
+ guard_decision_ref: string;
20
+ pre_dispatch_audit_ref: string;
21
+ pre_dispatch_audit_committed: boolean;
22
+ idempotency_key: string;
23
+ created_at: string;
24
+ updated_at: string;
25
+ dispatch_authority_enabled: false;
26
+ realOpenCodeDispatch: false;
27
+ actualLaneLaunch: false;
28
+ providerCall: false;
29
+ runtimeExecution: false;
30
+ }
31
+ export interface FlowDeskDispatchAttemptPrecallEvaluationV1 extends ValidationResult {
32
+ schema_version: "flowdesk.dispatch_attempt_precall_evaluation.v1";
33
+ workflow_id?: string;
34
+ attempt_id?: string;
35
+ state: "sdk_call_permitted" | "blocked_before_sdk_call";
36
+ sdk_call_permitted: boolean;
37
+ blocked_labels: string[];
38
+ dispatch_authority_enabled: false;
39
+ realOpenCodeDispatch: false;
40
+ actualLaneLaunch: false;
41
+ providerCall: false;
42
+ runtimeExecution: false;
43
+ }
44
+ export interface FlowDeskDispatchAttemptDurablePrecallEvaluationV1 extends FlowDeskDispatchAttemptPrecallEvaluationV1 {
45
+ durable_provenance_required: true;
46
+ reloaded_approval_source_ref?: string;
47
+ reloaded_pre_dispatch_audit_ref?: string;
48
+ reloaded_idempotency_snapshot_ref?: string;
49
+ }
50
+ export declare function validateFlowDeskDispatchAttemptManifestV1(value: unknown, expectedWorkflowId?: string): ValidationResult;
51
+ export declare function evaluateFlowDeskDispatchAttemptPrecallV1(input: {
52
+ manifest: FlowDeskDispatchAttemptManifestV1;
53
+ consumedApproval?: FlowDeskProductionApprovalSourceV1;
54
+ }): FlowDeskDispatchAttemptPrecallEvaluationV1;
55
+ export declare function evaluateFlowDeskDispatchAttemptDurablePrecallV1(input: {
56
+ manifest: FlowDeskDispatchAttemptManifestV1;
57
+ reloadedEvidence: FlowDeskSessionEvidenceReloadResultV1;
58
+ }): FlowDeskDispatchAttemptDurablePrecallEvaluationV1;
59
+ //# sourceMappingURL=dispatch-attempt-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch-attempt-manifest.d.ts","sourceRoot":"","sources":["../src/dispatch-attempt-manifest.ts"],"names":[],"mappings":"AAMA,OAAO,EAEN,KAAK,kCAAkC,EACvC,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAEN,KAAK,gBAAgB,EAMrB,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,gCAAgC,sHAOnC,CAAC;AACX,MAAM,MAAM,8BAA8B,GACzC,CAAC,OAAO,gCAAgC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,MAAM,WAAW,iCAAiC;IACjD,cAAc,EAAE,uCAAuC,CAAC;IACxD,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,8BAA8B,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,2BAA2B,EAAE,MAAM,CAAC;IACpC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,4BAA4B,EAAE,OAAO,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,0BAA0B,EAAE,KAAK,CAAC;IAClC,oBAAoB,EAAE,KAAK,CAAC;IAC5B,gBAAgB,EAAE,KAAK,CAAC;IACxB,YAAY,EAAE,KAAK,CAAC;IACpB,gBAAgB,EAAE,KAAK,CAAC;CACxB;AAED,MAAM,WAAW,0CAChB,SAAQ,gBAAgB;IACxB,cAAc,EAAE,iDAAiD,CAAC;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,oBAAoB,GAAG,yBAAyB,CAAC;IACxD,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,0BAA0B,EAAE,KAAK,CAAC;IAClC,oBAAoB,EAAE,KAAK,CAAC;IAC5B,gBAAgB,EAAE,KAAK,CAAC;IACxB,YAAY,EAAE,KAAK,CAAC;IACpB,gBAAgB,EAAE,KAAK,CAAC;CACxB;AAED,MAAM,WAAW,iDAChB,SAAQ,0CAA0C;IAClD,2BAA2B,EAAE,IAAI,CAAC;IAClC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,+BAA+B,CAAC,EAAE,MAAM,CAAC;IACzC,iCAAiC,CAAC,EAAE,MAAM,CAAC;CAC3C;AA2CD,wBAAgB,yCAAyC,CACxD,KAAK,EAAE,OAAO,EACd,kBAAkB,CAAC,EAAE,MAAM,GACzB,gBAAgB,CA4GlB;AAED,wBAAgB,wCAAwC,CAAC,KAAK,EAAE;IAC/D,QAAQ,EAAE,iCAAiC,CAAC;IAC5C,gBAAgB,CAAC,EAAE,kCAAkC,CAAC;CACtD,GAAG,0CAA0C,CAuE7C;AAUD,wBAAgB,+CAA+C,CAAC,KAAK,EAAE;IACtE,QAAQ,EAAE,iCAAiC,CAAC;IAC5C,gBAAgB,EAAE,qCAAqC,CAAC;CACxD,GAAG,iDAAiD,CAsHpD"}