@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,163 @@
1
+ const minimum = "registered_minimum";
2
+ const optional = "optional_diagnostic_unregistered";
3
+ const later = "later_release_unregistered";
4
+ const artifactOnly = "schema_artifact_only";
5
+ const runtimeClosedToolCompatibility = {
6
+ redactedErrorShapeId: "flowdesk.redacted_error.v1",
7
+ schemaCompatibilityStatus: "compatible_runtime_closed_validation",
8
+ schemaCompatibilityReadiness: "compatible_with_runtime_closed_validation"
9
+ };
10
+ const toolContracts = {
11
+ flowdesk_chat_intake: { privilegeClass: "internal_diagnostic", statePreconditions: ["redacted intake only", "chat steering conformance when used"], stateOutputs: ["redacted intake ref", "route decision"] },
12
+ flowdesk_doctor: { privilegeClass: "safe_read_only", statePreconditions: ["schema-valid request", "redacted refs only"], stateOutputs: ["doctor section results", "provider health summary", "compatibility ref"] },
13
+ flowdesk_plan: { privilegeClass: "privileged_non_dispatch", statePreconditions: ["state write permission when persisted", "audit write permission", "no dispatch"], stateOutputs: ["plan revision id", "guard precheck", "required approvals"] },
14
+ flowdesk_run: { privilegeClass: "privileged_release1_dry_run_or_fake_runtime", statePreconditions: ["Guard approval for dry-run or fake-runtime", "pre-run audit", "Release 1 run mode only"], stateOutputs: ["run result ref", "verification summary ref", "artifact disposition"] },
15
+ flowdesk_status: { privilegeClass: "safe_read_only", statePreconditions: ["workflow state readable", "redacted refs only"], stateOutputs: ["workflow state", "lane summaries", "blocker", "checkpoint id"] },
16
+ flowdesk_resume: { privilegeClass: "privileged_non_dispatch", statePreconditions: ["durable checkpoint", "fresh checks", "no event-only checkpoint"], stateOutputs: ["resume decision", "required fresh checks", "next checkpoint id"] },
17
+ flowdesk_retry: { privilegeClass: "privileged_non_dispatch", statePreconditions: ["existing attempt", "new attempt id", "Guard-compatible binding"], stateOutputs: ["new attempt id", "required guard checks", "retry state"] },
18
+ flowdesk_abort: { privilegeClass: "privileged_non_dispatch", statePreconditions: ["workflow id", "audit write when state changes", "best-effort cancellation only"], stateOutputs: ["requested/observed/failed cancellation state", "remaining safe actions"] },
19
+ flowdesk_usage: { privilegeClass: "safe_read_only", statePreconditions: ["provider family", "usage write permission when refresh persists"], stateOutputs: ["usage snapshot ref", "provider health snapshot ref", "freshness", "dispatchability"] },
20
+ flowdesk_explain_route: { privilegeClass: "safe_read_only", statePreconditions: ["existing workflow", "redacted route ref"], stateOutputs: ["route summary", "guard rationale ref"] },
21
+ flowdesk_audit: { privilegeClass: "safe_read_only", statePreconditions: ["existing workflow", "redacted audit query"], stateOutputs: ["audit refs", "summary labels", "redaction version"] },
22
+ flowdesk_export_debug: { privilegeClass: "privileged_non_dispatch", statePreconditions: ["debug export write permission", "redaction passes", "retention policy"], stateOutputs: ["export manifest ref", "included redacted sections", "delete after"] }
23
+ };
24
+ function toolContract(toolName) {
25
+ return { ...runtimeClosedToolCompatibility, ...toolContracts[toolName] };
26
+ }
27
+ function toolEntry(toolName, schemaId, fixturePrefix, interfaceName, kind, status, release1MinimumTool) {
28
+ return {
29
+ schemaId,
30
+ fixturePrefix,
31
+ interfaceName,
32
+ kind,
33
+ productionRegistrationEligible: release1MinimumTool,
34
+ release1MinimumTool,
35
+ registrationStatus: status,
36
+ toolName,
37
+ toolContract: toolContract(toolName)
38
+ };
39
+ }
40
+ function artifactEntry(schemaId, fixturePrefix, interfaceName, kind) {
41
+ return {
42
+ schemaId,
43
+ fixturePrefix,
44
+ interfaceName,
45
+ kind,
46
+ productionRegistrationEligible: false,
47
+ release1MinimumTool: false,
48
+ registrationStatus: artifactOnly
49
+ };
50
+ }
51
+ export const RELEASE_1_PRODUCTION_MINIMUM_TOOL_NAMES = [
52
+ "flowdesk_doctor",
53
+ "flowdesk_plan",
54
+ "flowdesk_run",
55
+ "flowdesk_status",
56
+ "flowdesk_resume",
57
+ "flowdesk_retry",
58
+ "flowdesk_abort",
59
+ "flowdesk_usage",
60
+ "flowdesk_export_debug"
61
+ ];
62
+ export const RELEASE_1_OPTIONAL_DIAGNOSTIC_TOOL_NAMES = ["flowdesk_chat_intake", "flowdesk_explain_route", "flowdesk_audit"];
63
+ export const RELEASE_1_LATER_RELEASE_TOOL_NAMES = ["flowdesk_reference_search"];
64
+ export const RELEASE_1_SCHEMA_REGISTRY = [
65
+ artifactEntry("flowdesk.tool.request.v1", "tool-request-envelope", "FlowDeskToolRequestEnvelopeV1", "envelope"),
66
+ artifactEntry("flowdesk.tool.response.v1", "tool-response-envelope", "FlowDeskToolResponseEnvelopeV1", "envelope"),
67
+ artifactEntry("flowdesk.redacted_error.v1", "redacted-error", "FlowDeskRedactedErrorV1", "envelope"),
68
+ toolEntry("flowdesk_chat_intake", "flowdesk.chat_intake.request.v1", "chat-intake", "FlowDeskChatIntakeRequestV1", "tool_request", optional, false),
69
+ toolEntry("flowdesk_chat_intake", "flowdesk.chat_intake.response.v1", "chat-intake", "FlowDeskChatIntakeResponseV1", "tool_response", optional, false),
70
+ artifactEntry("flowdesk.hook_harness.request.v1", "hook-harness-request", "FlowDeskHookHarnessRequestV1", "supporting"),
71
+ artifactEntry("flowdesk.hook_harness.response.v1", "hook-harness-response", "FlowDeskHookHarnessResponseV1", "supporting"),
72
+ toolEntry("flowdesk_doctor", "flowdesk.doctor.request.v1", "doctor", "FlowDeskDoctorRequestV1", "tool_request", minimum, true),
73
+ toolEntry("flowdesk_doctor", "flowdesk.doctor.response.v1", "doctor", "FlowDeskDoctorResponseV1", "tool_response", minimum, true),
74
+ toolEntry("flowdesk_plan", "flowdesk.plan.request.v1", "plan", "FlowDeskPlanRequestV1", "tool_request", minimum, true),
75
+ toolEntry("flowdesk_plan", "flowdesk.plan.response.v1", "plan", "FlowDeskPlanResponseV1", "tool_response", minimum, true),
76
+ toolEntry("flowdesk_run", "flowdesk.run.request.v1", "run", "FlowDeskRunRequestV1", "tool_request", minimum, true),
77
+ toolEntry("flowdesk_run", "flowdesk.run.response.v1", "run", "FlowDeskRunResponseV1", "tool_response", minimum, true),
78
+ toolEntry("flowdesk_status", "flowdesk.status.request.v1", "status", "FlowDeskStatusRequestV1", "tool_request", minimum, true),
79
+ toolEntry("flowdesk_status", "flowdesk.status.response.v1", "status", "FlowDeskStatusResponseV1", "tool_response", minimum, true),
80
+ toolEntry("flowdesk_resume", "flowdesk.resume.request.v1", "resume", "FlowDeskResumeRequestV1", "tool_request", minimum, true),
81
+ toolEntry("flowdesk_resume", "flowdesk.resume.response.v1", "resume", "FlowDeskResumeResponseV1", "tool_response", minimum, true),
82
+ toolEntry("flowdesk_retry", "flowdesk.retry.request.v1", "retry", "FlowDeskRetryRequestV1", "tool_request", minimum, true),
83
+ toolEntry("flowdesk_retry", "flowdesk.retry.response.v1", "retry", "FlowDeskRetryResponseV1", "tool_response", minimum, true),
84
+ toolEntry("flowdesk_abort", "flowdesk.abort.request.v1", "abort", "FlowDeskAbortRequestV1", "tool_request", minimum, true),
85
+ toolEntry("flowdesk_abort", "flowdesk.abort.response.v1", "abort", "FlowDeskAbortResponseV1", "tool_response", minimum, true),
86
+ toolEntry("flowdesk_usage", "flowdesk.usage.request.v1", "usage", "FlowDeskUsageRequestV1", "tool_request", minimum, true),
87
+ toolEntry("flowdesk_usage", "flowdesk.usage.response.v1", "usage", "FlowDeskUsageResponseV1", "tool_response", minimum, true),
88
+ toolEntry("flowdesk_explain_route", "flowdesk.explain_route.request.v1", "explain-route", "FlowDeskExplainRouteRequestV1", "tool_request", optional, false),
89
+ toolEntry("flowdesk_explain_route", "flowdesk.explain_route.response.v1", "explain-route", "FlowDeskExplainRouteResponseV1", "tool_response", optional, false),
90
+ toolEntry("flowdesk_audit", "flowdesk.audit.request.v1", "audit", "FlowDeskAuditRequestV1", "tool_request", optional, false),
91
+ toolEntry("flowdesk_audit", "flowdesk.audit.response.v1", "audit", "FlowDeskAuditResponseV1", "tool_response", optional, false),
92
+ toolEntry("flowdesk_export_debug", "flowdesk.export_debug.request.v1", "export-debug", "FlowDeskExportDebugRequestV1", "tool_request", minimum, true),
93
+ toolEntry("flowdesk_export_debug", "flowdesk.export_debug.response.v1", "export-debug", "FlowDeskExportDebugResponseV1", "tool_response", minimum, true),
94
+ artifactEntry("flowdesk.doctor_section_result.v1", "doctor-section-result", "DoctorSectionResultV1", "supporting"),
95
+ artifactEntry("flowdesk.doctor_report.v1", "doctor-report", "FlowDeskDoctorReportV1", "supporting"),
96
+ artifactEntry("flowdesk.status_summary.v1", "status-summary", "FlowDeskStatusSummaryArtifactV1", "supporting"),
97
+ artifactEntry("flowdesk.plan_summary.v1", "plan-summary", "FlowDeskPlanSummaryArtifactV1", "supporting"),
98
+ artifactEntry("flowdesk.lane_summary.v1", "lane-summary", "FlowDeskLaneSummaryArtifactV1", "supporting"),
99
+ artifactEntry("flowdesk.verification_summary.v1", "verification-summary", "FlowDeskVerificationSummaryArtifactV1", "supporting"),
100
+ artifactEntry("flowdesk.usage_snapshot.v1", "usage-snapshot", "FlowDeskUsageSnapshotV1", "supporting"),
101
+ artifactEntry("flowdesk.provider_health_snapshot.v1", "provider-health-snapshot", "FlowDeskProviderHealthSnapshotV1", "supporting"),
102
+ artifactEntry("flowdesk.debug_section_summary.v1", "debug-section-summary", "DebugSectionSummaryV1", "supporting"),
103
+ artifactEntry("flowdesk.audit_ref_summary.v1", "audit-ref-summary", "FlowDeskAuditRefSummaryV1", "audit"),
104
+ artifactEntry("flowdesk.audit_event.v1", "audit-event", "FlowDeskAuditEventV1", "audit"),
105
+ artifactEntry("flowdesk.conformance_runtime_metadata.v1", "conformance-runtime-metadata", "FlowDeskConformanceRuntimeMetadataV1", "runtime"),
106
+ artifactEntry("flowdesk.conformance_evidence_record.v1", "conformance-evidence-record", "FlowDeskConformanceEvidenceRecordV1", "runtime"),
107
+ artifactEntry("flowdesk.workflow_active.v1", "workflow-active", "FlowDeskWorkflowActiveV1", "persisted_state"),
108
+ artifactEntry("flowdesk.workflow_record.v1", "workflow-record", "FlowDeskWorkflowRecordV1", "persisted_state"),
109
+ artifactEntry("flowdesk.attempt_record.v1", "attempt-record", "FlowDeskAttemptRecordV1", "persisted_state"),
110
+ artifactEntry("flowdesk.checkpoint_record.v1", "checkpoint-record", "FlowDeskCheckpointRecordV1", "persisted_state"),
111
+ artifactEntry("flowdesk.active_attempt_lock.v1", "active-attempt-lock", "FlowDeskActiveAttemptLockV1", "persisted_state"),
112
+ artifactEntry("flowdesk.lane_record.v1", "lane-record", "FlowDeskLaneRecordV1", "persisted_state"),
113
+ artifactEntry("flowdesk.audit_record.v1", "audit-record", "FlowDeskAuditRecordV1", "persisted_state"),
114
+ artifactEntry("flowdesk.debug_export_manifest.v1", "debug-export-manifest", "FlowDeskDebugExportManifestV1", "persisted_state"),
115
+ artifactEntry("flowdesk.project_config.v1", "project-config", "FlowDeskProjectConfigV1", "config_policy"),
116
+ artifactEntry("flowdesk.policy_pack.v1", "policy-pack", "FlowDeskPolicyPackV1", "config_policy"),
117
+ artifactEntry("flowdesk.effective_policy.v1", "effective-policy", "FlowDeskEffectivePolicyV1", "config_policy"),
118
+ artifactEntry("flowdesk.non_dispatch_permission.v1", "non-dispatch-permission", "FlowDeskNonDispatchPermissionV1", "config_policy"),
119
+ artifactEntry("flowdesk.bootstrap_install_plan.v1", "bootstrap-install-plan", "FlowDeskBootstrapInstallPlanV1", "bootstrap"),
120
+ artifactEntry("flowdesk.bootstrap_backup_manifest.v1", "bootstrap-backup-manifest", "FlowDeskBootstrapBackupManifestV1", "bootstrap"),
121
+ artifactEntry("flowdesk.profile_mutation_summary.v1", "profile-mutation-summary", "FlowDeskProfileMutationSummaryV1", "bootstrap"),
122
+ artifactEntry("flowdesk.omo_cleanup_summary.v1", "omo-cleanup-summary", "FlowDeskOmoCleanupSummaryV1", "bootstrap"),
123
+ artifactEntry("flowdesk.command_generation_summary.v1", "command-generation-summary", "FlowDeskCommandGenerationSummaryV1", "bootstrap"),
124
+ artifactEntry("flowdesk.config_scaffold_summary.v1", "config-scaffold-summary", "FlowDeskConfigScaffoldSummaryV1", "bootstrap"),
125
+ artifactEntry("flowdesk.bootstrap_rollback_plan.v1", "bootstrap-rollback-plan", "FlowDeskBootstrapRollbackPlanV1", "bootstrap"),
126
+ artifactEntry("flowdesk.bootstrap_rollback_result.v1", "bootstrap-rollback-result", "FlowDeskBootstrapRollbackResultV1", "bootstrap"),
127
+ artifactEntry("flowdesk.bootstrap_report.v1", "bootstrap-report", "FlowDeskBootstrapReportV1", "bootstrap"),
128
+ artifactEntry("flowdesk.doctor_handoff.v1", "doctor-handoff", "FlowDeskDoctorHandoffV1", "bootstrap"),
129
+ artifactEntry("flowdesk.guard_request.v1", "guard-request", "GuardRequestV1", "guard"),
130
+ artifactEntry("flowdesk.guard_response.v1", "guard-response", "GuardResponseV1", "guard"),
131
+ artifactEntry("flowdesk.guard_approved_dispatch.v1", "guard-approved-dispatch", "GuardApprovedDispatchV1", "guard"),
132
+ artifactEntry("flowdesk.runtime_capability_metadata.v1", "runtime-capability-metadata", "FlowDeskRuntimeCapabilityMetadataV1", "runtime"),
133
+ artifactEntry("flowdesk.workflow_plan.v1", "workflow-plan", "FlowDeskWorkflowPlanV1", "workflow"),
134
+ artifactEntry("flowdesk.top_tier_reviewer_binding.v1", "top-tier-reviewer-binding", "FlowDeskTopTierReviewerBindingV1", "later_release"),
135
+ artifactEntry("flowdesk.top_tier_reviewer_lane_plan.v1", "top-tier-reviewer-lane-plan", "FlowDeskTopTierReviewerLanePlanV1", "later_release"),
136
+ artifactEntry("flowdesk.top_tier_review_binding_inventory.v1", "top-tier-review-binding-inventory", "FlowDeskTopTierReviewBindingInventoryV1", "later_release"),
137
+ artifactEntry("flowdesk.top_tier_review_verdict.v1", "top-tier-review-verdict", "FlowDeskTopTierReviewVerdictV1", "later_release"),
138
+ artifactEntry("flowdesk.top_tier_reviewer_lane_probe.request.v1", "top-tier-reviewer-lane-probe-request", "FlowDeskTopTierReviewerLaneProbeRequestV1", "later_release"),
139
+ artifactEntry("flowdesk.top_tier_reviewer_lane_probe.result.v1", "top-tier-reviewer-lane-probe-result", "FlowDeskTopTierReviewerLaneProbeResultV1", "later_release"),
140
+ {
141
+ schemaId: "flowdesk.reference_search.request.v1",
142
+ fixturePrefix: "reference-search",
143
+ interfaceName: "FlowDeskReferenceSearchRequestV1",
144
+ kind: "later_release",
145
+ productionRegistrationEligible: false,
146
+ release1MinimumTool: false,
147
+ registrationStatus: later,
148
+ toolName: "flowdesk_reference_search"
149
+ }
150
+ ];
151
+ export function getRelease1MinimumToolRegistry() {
152
+ return RELEASE_1_SCHEMA_REGISTRY.filter((entry) => entry.release1MinimumTool && entry.kind.startsWith("tool_"));
153
+ }
154
+ export function getRelease1ProductionToolRegistry() {
155
+ return RELEASE_1_SCHEMA_REGISTRY.filter((entry) => entry.productionRegistrationEligible && entry.kind.startsWith("tool_"));
156
+ }
157
+ export function getRelease1RegisteredToolNames() {
158
+ return [...new Set(getRelease1MinimumToolRegistry().map((entry) => entry.toolName).filter((toolName) => typeof toolName === "string"))];
159
+ }
160
+ export function getRelease1SchemaMetadata(schemaId) {
161
+ return RELEASE_1_SCHEMA_REGISTRY.find((entry) => entry.schemaId === schemaId);
162
+ }
163
+ //# sourceMappingURL=schema-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-registry.js","sourceRoot":"","sources":["../src/schema-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ import { type FlowDeskSessionEvidenceClass } from "./state-paths.js";
2
+ import { type ValidationResult } from "./validators.js";
3
+ export interface FlowDeskSessionEvidenceWriteIntentV1 {
4
+ operation: "write_json";
5
+ authority: "redacted_session_support";
6
+ workflowId: string;
7
+ evidenceId: string;
8
+ evidenceClass: FlowDeskSessionEvidenceClass;
9
+ schemaId: string;
10
+ path: string;
11
+ tempPath: string;
12
+ record: Record<string, unknown>;
13
+ fsSafety: "validated_relative_flowdesk_path_only";
14
+ atomicity: {
15
+ strategy: "temp_then_rename_intent";
16
+ };
17
+ realOpenCodeDispatch: false;
18
+ actualLaneLaunch: false;
19
+ providerCall: false;
20
+ runtimeExecution: false;
21
+ }
22
+ export interface FlowDeskSessionEvidencePrepareResult extends ValidationResult {
23
+ writeIntent?: FlowDeskSessionEvidenceWriteIntentV1;
24
+ }
25
+ export interface FlowDeskSessionEvidenceReloadEntryV1 {
26
+ evidenceClass: FlowDeskSessionEvidenceClass;
27
+ evidenceId: string;
28
+ record: Record<string, unknown>;
29
+ path: string;
30
+ }
31
+ export interface FlowDeskSessionEvidenceReloadResultV1 extends ValidationResult {
32
+ entries: FlowDeskSessionEvidenceReloadEntryV1[];
33
+ blocked: Array<{
34
+ evidenceClass: FlowDeskSessionEvidenceClass;
35
+ evidenceId: string;
36
+ reason: string;
37
+ path: string;
38
+ }>;
39
+ realOpenCodeDispatch: false;
40
+ actualLaneLaunch: false;
41
+ providerCall: false;
42
+ runtimeExecution: false;
43
+ }
44
+ export interface FlowDeskSessionEvidenceApplyResultV1 extends ValidationResult {
45
+ rootDir?: string;
46
+ writtenPaths: string[];
47
+ realOpenCodeDispatch: false;
48
+ actualLaneLaunch: false;
49
+ providerCall: false;
50
+ runtimeExecution: false;
51
+ }
52
+ export declare function classifyFlowDeskSessionEvidenceRecord(record: unknown): {
53
+ ok: true;
54
+ evidenceClass: FlowDeskSessionEvidenceClass;
55
+ } | {
56
+ ok: false;
57
+ errors: string[];
58
+ };
59
+ export interface FlowDeskSessionEvidencePrepareInputV1 {
60
+ workflowId: string;
61
+ evidenceId: string;
62
+ record: unknown;
63
+ }
64
+ export declare function prepareFlowDeskSessionEvidenceWriteIntentV1(input: FlowDeskSessionEvidencePrepareInputV1): FlowDeskSessionEvidencePrepareResult;
65
+ export declare function applyFlowDeskSessionEvidenceWriteIntentsV1(rootDir: string, intents: readonly FlowDeskSessionEvidenceWriteIntentV1[]): FlowDeskSessionEvidenceApplyResultV1;
66
+ export interface FlowDeskSessionEvidenceReadOptionsV1 {
67
+ workflowId: string;
68
+ rootDir: string;
69
+ }
70
+ export declare function reloadFlowDeskSessionEvidenceV1(options: FlowDeskSessionEvidenceReadOptionsV1): FlowDeskSessionEvidenceReloadResultV1;
71
+ //# sourceMappingURL=session-evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-evidence.d.ts","sourceRoot":"","sources":["../src/session-evidence.ts"],"names":[],"mappings":"AAUA,OAAO,EAEN,KAAK,4BAA4B,EAGjC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEN,KAAK,gBAAgB,EAKrB,MAAM,iBAAiB,CAAC;AAkBzB,MAAM,WAAW,oCAAoC;IACpD,SAAS,EAAE,YAAY,CAAC;IACxB,SAAS,EAAE,0BAA0B,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,4BAA4B,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,EAAE,uCAAuC,CAAC;IAClD,SAAS,EAAE;QAAE,QAAQ,EAAE,yBAAyB,CAAA;KAAE,CAAC;IACnD,oBAAoB,EAAE,KAAK,CAAC;IAC5B,gBAAgB,EAAE,KAAK,CAAC;IACxB,YAAY,EAAE,KAAK,CAAC;IACpB,gBAAgB,EAAE,KAAK,CAAC;CACxB;AAED,MAAM,WAAW,oCAAqC,SAAQ,gBAAgB;IAC7E,WAAW,CAAC,EAAE,oCAAoC,CAAC;CACnD;AAED,MAAM,WAAW,oCAAoC;IACpD,aAAa,EAAE,4BAA4B,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,qCAChB,SAAQ,gBAAgB;IACxB,OAAO,EAAE,oCAAoC,EAAE,CAAC;IAChD,OAAO,EAAE,KAAK,CAAC;QACd,aAAa,EAAE,4BAA4B,CAAC;QAC5C,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACb,CAAC,CAAC;IACH,oBAAoB,EAAE,KAAK,CAAC;IAC5B,gBAAgB,EAAE,KAAK,CAAC;IACxB,YAAY,EAAE,KAAK,CAAC;IACpB,gBAAgB,EAAE,KAAK,CAAC;CACxB;AAED,MAAM,WAAW,oCAAqC,SAAQ,gBAAgB;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,oBAAoB,EAAE,KAAK,CAAC;IAC5B,gBAAgB,EAAE,KAAK,CAAC;IACxB,YAAY,EAAE,KAAK,CAAC;IACpB,gBAAgB,EAAE,KAAK,CAAC;CACxB;AA8CD,wBAAgB,qCAAqC,CACpD,MAAM,EAAE,OAAO,GAEb;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,aAAa,EAAE,4BAA4B,CAAA;CAAE,GACzD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAejC;AAED,MAAM,WAAW,qCAAqC;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,2CAA2C,CAC1D,KAAK,EAAE,qCAAqC,GAC1C,oCAAoC,CAyCtC;AA8DD,wBAAgB,0CAA0C,CACzD,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,SAAS,oCAAoC,EAAE,GACtD,oCAAoC,CAmDtC;AAED,MAAM,WAAW,oCAAoC;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,+BAA+B,CAC9C,OAAO,EAAE,oCAAoC,GAC3C,qCAAqC,CA4JvC"}
@@ -0,0 +1,336 @@
1
+ import { existsSync, lstatSync, mkdirSync, readdirSync, readFileSync, renameSync, writeFileSync, } from "node:fs";
2
+ import { dirname, resolve, sep } from "node:path";
3
+ import { FLOWDESK_SESSION_EVIDENCE_CLASSES, sessionEvidenceDirectoryPath, sessionEvidenceRecordPath, } from "./state-paths.js";
4
+ import { invalid, valid, validateNoForbiddenRawPayloads, validateOpaqueId, validateOpaqueRef, } from "./validators.js";
5
+ const EVIDENCE_SCHEMA_BY_CLASS = {
6
+ usage_authority: "flowdesk.managed_dispatch_beta.usage_authority_evidence.v1",
7
+ runtime_echo: "flowdesk.managed_dispatch_beta.runtime_echo_evidence.v1",
8
+ telemetry_correlation: "flowdesk.managed_dispatch_beta.telemetry_correlation.v1",
9
+ };
10
+ const CLASS_BY_SCHEMA = Object.fromEntries(Object.entries(EVIDENCE_SCHEMA_BY_CLASS).map(([cls, schema]) => [schema, cls]));
11
+ const disabledEvidenceAuthority = {
12
+ realOpenCodeDispatch: false,
13
+ actualLaneLaunch: false,
14
+ providerCall: false,
15
+ runtimeExecution: false,
16
+ };
17
+ function isRecordObject(value) {
18
+ return typeof value === "object" && value !== null && !Array.isArray(value);
19
+ }
20
+ function validateSchemaVersionForClass(record, evidenceClass) {
21
+ const expected = EVIDENCE_SCHEMA_BY_CLASS[evidenceClass];
22
+ return record.schema_version === expected
23
+ ? valid()
24
+ : invalid(`evidence schema_version must be ${expected}`);
25
+ }
26
+ function validateEvidenceShape(record, evidenceClass) {
27
+ const schemaCheck = validateSchemaVersionForClass(record, evidenceClass);
28
+ if (!schemaCheck.ok)
29
+ return schemaCheck;
30
+ const requiredCommon = ["schema_version"];
31
+ for (const key of requiredCommon)
32
+ if (!(key in record))
33
+ return invalid(`evidence is missing required field: ${key}`);
34
+ return validateNoForbiddenRawPayloads(record, "session_evidence_record");
35
+ }
36
+ function ensureWorkflowAlignment(record, workflowId) {
37
+ if (!("workflow_id" in record))
38
+ return valid();
39
+ return record.workflow_id === workflowId
40
+ ? valid()
41
+ : invalid(`evidence workflow_id mismatch: expected ${workflowId}`);
42
+ }
43
+ export function classifyFlowDeskSessionEvidenceRecord(record) {
44
+ if (!isRecordObject(record))
45
+ return { ok: false, errors: ["evidence must be an object"] };
46
+ const schema = record.schema_version;
47
+ if (typeof schema !== "string")
48
+ return { ok: false, errors: ["evidence schema_version must be a string"] };
49
+ const evidenceClass = CLASS_BY_SCHEMA[schema];
50
+ if (evidenceClass === undefined)
51
+ return {
52
+ ok: false,
53
+ errors: [
54
+ `evidence schema_version is not a managed session evidence class: ${schema}`,
55
+ ],
56
+ };
57
+ return { ok: true, evidenceClass };
58
+ }
59
+ export function prepareFlowDeskSessionEvidenceWriteIntentV1(input) {
60
+ const workflowResult = validateOpaqueId(input.workflowId, "workflow_id");
61
+ if (!workflowResult.ok)
62
+ return workflowResult;
63
+ const evidenceIdResult = validateOpaqueId(input.evidenceId, "evidence_id");
64
+ if (!evidenceIdResult.ok)
65
+ return evidenceIdResult;
66
+ const classification = classifyFlowDeskSessionEvidenceRecord(input.record);
67
+ if (!classification.ok)
68
+ return invalid(...classification.errors);
69
+ if (!isRecordObject(input.record))
70
+ return invalid("evidence must be an object");
71
+ const shapeResult = validateEvidenceShape(input.record, classification.evidenceClass);
72
+ if (!shapeResult.ok)
73
+ return shapeResult;
74
+ const workflowAlignment = ensureWorkflowAlignment(input.record, input.workflowId);
75
+ if (!workflowAlignment.ok)
76
+ return workflowAlignment;
77
+ const path = sessionEvidenceRecordPath(input.workflowId, classification.evidenceClass, input.evidenceId);
78
+ const schemaId = EVIDENCE_SCHEMA_BY_CLASS[classification.evidenceClass];
79
+ const tempPath = `${path}.tmp-${schemaId.replace(/[^A-Za-z0-9_.-]/g, "-")}`;
80
+ const writeIntent = {
81
+ operation: "write_json",
82
+ authority: "redacted_session_support",
83
+ workflowId: input.workflowId,
84
+ evidenceId: input.evidenceId,
85
+ evidenceClass: classification.evidenceClass,
86
+ schemaId,
87
+ path,
88
+ tempPath,
89
+ record: JSON.parse(JSON.stringify(input.record)),
90
+ fsSafety: "validated_relative_flowdesk_path_only",
91
+ atomicity: { strategy: "temp_then_rename_intent" },
92
+ ...disabledEvidenceAuthority,
93
+ };
94
+ return { ok: true, errors: [], writeIntent };
95
+ }
96
+ function safeJoin(rootDir, relativePath) {
97
+ const root = resolve(rootDir);
98
+ const target = resolve(root, relativePath);
99
+ const rootPrefix = root.endsWith(sep) ? root : `${root}${sep}`;
100
+ if (target !== root && !target.startsWith(rootPrefix))
101
+ throw new Error("evidence target escapes root directory");
102
+ return target;
103
+ }
104
+ function validateSessionEvidenceWriteIntent(intent) {
105
+ const errors = [];
106
+ if (intent.operation !== "write_json")
107
+ errors.push("session evidence intent operation must be write_json");
108
+ if (intent.authority !== "redacted_session_support")
109
+ errors.push("session evidence intent authority is invalid");
110
+ errors.push(...validateOpaqueId(intent.workflowId, "workflow_id").errors);
111
+ errors.push(...validateOpaqueId(intent.evidenceId, "evidence_id").errors);
112
+ if (!FLOWDESK_SESSION_EVIDENCE_CLASSES.includes(intent.evidenceClass))
113
+ errors.push("session evidence class is invalid");
114
+ const expectedSchema = EVIDENCE_SCHEMA_BY_CLASS[intent.evidenceClass];
115
+ if (intent.schemaId !== expectedSchema)
116
+ errors.push("session evidence schemaId does not match evidenceClass");
117
+ const expectedPath = sessionEvidenceRecordPath(intent.workflowId, intent.evidenceClass, intent.evidenceId);
118
+ if (intent.path !== expectedPath)
119
+ errors.push("session evidence path does not match workflow/class/id");
120
+ const expectedTempPrefix = `${expectedPath}.tmp-`;
121
+ if (!intent.tempPath.startsWith(expectedTempPrefix))
122
+ errors.push("session evidence tempPath does not match target path");
123
+ if (!intent.tempPath.includes(expectedSchema.replace(/[^A-Za-z0-9_.-]/g, "-")))
124
+ errors.push("session evidence tempPath does not bind schemaId");
125
+ if (intent.fsSafety !== "validated_relative_flowdesk_path_only")
126
+ errors.push("session evidence fsSafety is invalid");
127
+ if (intent.atomicity?.strategy !== "temp_then_rename_intent")
128
+ errors.push("session evidence atomicity is invalid");
129
+ if (intent.realOpenCodeDispatch !== false ||
130
+ intent.actualLaneLaunch !== false ||
131
+ intent.providerCall !== false ||
132
+ intent.runtimeExecution !== false)
133
+ errors.push("session evidence intent cannot enable runtime authority");
134
+ const shape = validateEvidenceShape(intent.record, intent.evidenceClass);
135
+ errors.push(...shape.errors);
136
+ const alignment = ensureWorkflowAlignment(intent.record, intent.workflowId);
137
+ errors.push(...alignment.errors);
138
+ return errors.length === 0 ? valid() : invalid(...errors);
139
+ }
140
+ export function applyFlowDeskSessionEvidenceWriteIntentsV1(rootDir, intents) {
141
+ if (typeof rootDir !== "string" || rootDir.trim().length === 0)
142
+ return {
143
+ ...invalid("rootDir is required"),
144
+ writtenPaths: [],
145
+ ...disabledEvidenceAuthority,
146
+ };
147
+ const writtenPaths = [];
148
+ const root = resolve(rootDir);
149
+ try {
150
+ for (const intent of intents) {
151
+ const intentResult = validateSessionEvidenceWriteIntent(intent);
152
+ if (!intentResult.ok)
153
+ return {
154
+ ...invalid(...intentResult.errors),
155
+ rootDir: root,
156
+ writtenPaths,
157
+ ...disabledEvidenceAuthority,
158
+ };
159
+ const target = safeJoin(root, intent.path);
160
+ const temp = safeJoin(root, intent.tempPath);
161
+ if (dirname(target) !== dirname(temp))
162
+ return {
163
+ ...invalid("session evidence tempPath must stay beside target path"),
164
+ rootDir: root,
165
+ writtenPaths,
166
+ ...disabledEvidenceAuthority,
167
+ };
168
+ mkdirSync(dirname(target), { recursive: true });
169
+ writeFileSync(temp, JSON.stringify(intent.record), "utf8");
170
+ renameSync(temp, target);
171
+ writtenPaths.push(intent.path);
172
+ }
173
+ return {
174
+ ...valid(),
175
+ rootDir: root,
176
+ writtenPaths,
177
+ ...disabledEvidenceAuthority,
178
+ };
179
+ }
180
+ catch (error) {
181
+ return {
182
+ ...invalid(error instanceof Error
183
+ ? error.message
184
+ : "session evidence write failed"),
185
+ rootDir: root,
186
+ writtenPaths,
187
+ ...disabledEvidenceAuthority,
188
+ };
189
+ }
190
+ }
191
+ export function reloadFlowDeskSessionEvidenceV1(options) {
192
+ const workflowResult = validateOpaqueId(options.workflowId, "workflow_id");
193
+ if (!workflowResult.ok) {
194
+ return {
195
+ ok: false,
196
+ errors: workflowResult.errors,
197
+ entries: [],
198
+ blocked: [],
199
+ ...disabledEvidenceAuthority,
200
+ };
201
+ }
202
+ if (typeof options.rootDir !== "string" || options.rootDir.length === 0) {
203
+ return {
204
+ ok: false,
205
+ errors: ["rootDir is required"],
206
+ entries: [],
207
+ blocked: [],
208
+ ...disabledEvidenceAuthority,
209
+ };
210
+ }
211
+ const entries = [];
212
+ const blocked = [];
213
+ const errors = [];
214
+ for (const evidenceClass of FLOWDESK_SESSION_EVIDENCE_CLASSES) {
215
+ const relativeDir = sessionEvidenceDirectoryPath(options.workflowId, evidenceClass);
216
+ let absoluteDir;
217
+ try {
218
+ absoluteDir = safeJoin(options.rootDir, relativeDir);
219
+ }
220
+ catch (error) {
221
+ errors.push(error instanceof Error
222
+ ? error.message
223
+ : `evidence ${evidenceClass} root escape`);
224
+ continue;
225
+ }
226
+ if (!existsSync(absoluteDir))
227
+ continue;
228
+ const stat = lstatSync(absoluteDir);
229
+ if (stat.isSymbolicLink()) {
230
+ errors.push(`evidence ${evidenceClass} root must not be a symlink`);
231
+ continue;
232
+ }
233
+ if (!stat.isDirectory()) {
234
+ errors.push(`evidence ${evidenceClass} target is not a directory`);
235
+ continue;
236
+ }
237
+ const fileNames = readdirSync(absoluteDir).filter((name) => name.endsWith(".json"));
238
+ for (const fileName of fileNames) {
239
+ const evidenceId = fileName.slice(0, -5);
240
+ const refValidation = validateOpaqueRef(evidenceId, `${evidenceClass}.evidence_id`);
241
+ if (!refValidation.ok) {
242
+ blocked.push({
243
+ evidenceClass,
244
+ evidenceId,
245
+ reason: refValidation.errors.join("; "),
246
+ path: `${relativeDir}/${fileName}`,
247
+ });
248
+ continue;
249
+ }
250
+ const expectedRelative = sessionEvidenceRecordPath(options.workflowId, evidenceClass, evidenceId);
251
+ let filePath;
252
+ try {
253
+ filePath = safeJoin(options.rootDir, expectedRelative);
254
+ }
255
+ catch (error) {
256
+ blocked.push({
257
+ evidenceClass,
258
+ evidenceId,
259
+ reason: error instanceof Error ? error.message : "evidence path escape",
260
+ path: expectedRelative,
261
+ });
262
+ continue;
263
+ }
264
+ let raw;
265
+ try {
266
+ raw = readFileSync(filePath, "utf8");
267
+ }
268
+ catch (error) {
269
+ blocked.push({
270
+ evidenceClass,
271
+ evidenceId,
272
+ reason: error instanceof Error ? error.message : "evidence read failed",
273
+ path: expectedRelative,
274
+ });
275
+ continue;
276
+ }
277
+ let parsed;
278
+ try {
279
+ parsed = JSON.parse(raw);
280
+ }
281
+ catch (error) {
282
+ blocked.push({
283
+ evidenceClass,
284
+ evidenceId,
285
+ reason: error instanceof Error ? error.message : "evidence parse failed",
286
+ path: expectedRelative,
287
+ });
288
+ continue;
289
+ }
290
+ if (!isRecordObject(parsed)) {
291
+ blocked.push({
292
+ evidenceClass,
293
+ evidenceId,
294
+ reason: "evidence must be an object",
295
+ path: expectedRelative,
296
+ });
297
+ continue;
298
+ }
299
+ const shape = validateEvidenceShape(parsed, evidenceClass);
300
+ if (!shape.ok) {
301
+ blocked.push({
302
+ evidenceClass,
303
+ evidenceId,
304
+ reason: shape.errors.join("; "),
305
+ path: expectedRelative,
306
+ });
307
+ continue;
308
+ }
309
+ const alignment = ensureWorkflowAlignment(parsed, options.workflowId);
310
+ if (!alignment.ok) {
311
+ blocked.push({
312
+ evidenceClass,
313
+ evidenceId,
314
+ reason: alignment.errors.join("; "),
315
+ path: expectedRelative,
316
+ });
317
+ continue;
318
+ }
319
+ entries.push({
320
+ evidenceClass,
321
+ evidenceId,
322
+ record: parsed,
323
+ path: expectedRelative,
324
+ });
325
+ }
326
+ }
327
+ const reloadResult = {
328
+ ok: errors.length === 0,
329
+ errors,
330
+ entries,
331
+ blocked,
332
+ ...disabledEvidenceAuthority,
333
+ };
334
+ return reloadResult;
335
+ }
336
+ //# sourceMappingURL=session-evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-evidence.js","sourceRoot":"","sources":["../src/session-evidence.ts"],"names":[],"mappings":"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"}