xytara 3.1.0 → 3.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/.env.example +67 -58
  2. package/ADAPTER_START_HERE.md +56 -56
  3. package/CARRIED_HANDOFF_DEMO.md +60 -60
  4. package/EXAMPLE_PATHS.md +53 -53
  5. package/FINAL_CONTRACT.md +498 -498
  6. package/LICENSE +201 -201
  7. package/NOTICE +3 -3
  8. package/PARTNER_READY_PATH.md +71 -71
  9. package/PUBLIC_DEMO_SCRIPT.md +78 -78
  10. package/README.md +6 -1
  11. package/REAL_PAYMENT_SETUP.md +32 -3
  12. package/RELEASE_NOTES.md +14 -14
  13. package/SERVICE_CONTRACT.md +419 -419
  14. package/START_HERE.md +1 -1
  15. package/SUPABASE_RUNTIME_STATE_SETUP.md +61 -61
  16. package/TERMINOLOGY.md +50 -50
  17. package/WHY_XYTARA_XOONYA.md +63 -63
  18. package/XT1_EXECUTION_TRUTH_STANDARD.md +78 -78
  19. package/XYTARA_ADAPTER_PROTOCOL_TRUTH_MODEL.md +75 -75
  20. package/XYTARA_AUTONOMOUS_ENTRY_MODEL.md +124 -124
  21. package/XYTARA_DEFAULT_PATH_MODEL.md +84 -84
  22. package/XYTARA_EXECUTION_TRUTH_MODEL.md +171 -171
  23. package/XYTARA_PAYMENT_RAIL_TRUTH_MODEL.md +68 -68
  24. package/adapters/AUTHORING_GUIDE.md +243 -243
  25. package/adapters/ONBOARDING_POSTURE.md +61 -61
  26. package/adapters/THIRD_PARTY_SUBMISSION_PROCESS.md +84 -84
  27. package/adapters/adapter-manifest.schema.json +283 -283
  28. package/adapters/examples/example-execution-adapter.js +61 -61
  29. package/adapters/examples/example-execution-adapter.manifest.json +81 -81
  30. package/adapters/examples/example-settlement-adapter.js +55 -55
  31. package/adapters/examples/example-settlement-adapter.manifest.json +78 -78
  32. package/adapters/examples/example-third-party-acp-registration.submission-bundle.json +124 -124
  33. package/adapters/examples/example-third-party-erc8004-registration.submission-bundle.json +121 -121
  34. package/adapters/examples/example-third-party-identity-registration.certification-pack.json +22 -22
  35. package/adapters/examples/example-third-party-identity-registration.record.json +26 -26
  36. package/adapters/examples/example-third-party-identity-registration.submission-bundle.json +126 -126
  37. package/adapters/examples/example-third-party-langchain-registration.submission-bundle.json +124 -124
  38. package/adapters/examples/example-third-party-mpp-registration.submission-bundle.json +120 -120
  39. package/adapters/examples/example-third-party-registration.certification-pack.json +22 -22
  40. package/adapters/examples/example-third-party-registration.record.json +28 -28
  41. package/adapters/examples/example-third-party-registration.submission-bundle.json +126 -126
  42. package/adapters/examples/example-third-party-settlement-registration.certification-pack.json +22 -22
  43. package/adapters/examples/example-third-party-settlement-registration.record.json +26 -26
  44. package/adapters/examples/example-third-party-settlement-registration.submission-bundle.json +127 -127
  45. package/adapters/examples/langchain-reference-execution-adapter.js +81 -81
  46. package/adapters/examples/langchain-reference-execution-adapter.manifest.json +79 -79
  47. package/adapters/examples/langgraph-reference-execution-adapter.js +81 -81
  48. package/adapters/examples/langgraph-reference-execution-adapter.manifest.json +79 -79
  49. package/adapters/examples/minimal-third-party-execution-adapter.js +61 -61
  50. package/adapters/examples/minimal-third-party-execution-adapter.manifest.json +79 -79
  51. package/adapters/examples/minimal-third-party-execution-registration.record.json +26 -26
  52. package/adapters/examples/minimal-third-party-execution.certification-pack.json +22 -22
  53. package/adapters/examples/minimal-third-party-execution.submission-bundle.json +126 -126
  54. package/adapters/integration-certification-pack.schema.json +82 -82
  55. package/adapters/integration-registration-record.schema.json +114 -114
  56. package/adapters/integration-submission-bundle-set.schema.json +39 -39
  57. package/adapters/integration-submission-bundle.schema.json +34 -34
  58. package/adapters/interfaces.js +56 -56
  59. package/bin/xytara-first-run.js +244 -244
  60. package/bin/xytara-release.js +1429 -1429
  61. package/bin/xytara-run.js +186 -186
  62. package/bin/xytara.js +80 -80
  63. package/client.js +3 -3
  64. package/examples/_demo_env.js +40 -0
  65. package/examples/adapter_review_walkthrough.js +54 -53
  66. package/examples/export_carried_handoff.js +81 -80
  67. package/examples/funded_runtime_walkthrough.js +71 -70
  68. package/examples/generated.carried-handoff.json +30 -0
  69. package/examples/partner_launch_walkthrough.js +44 -43
  70. package/examples/quickstart.js +3256 -3255
  71. package/fixtures/catalog.js +1134 -1134
  72. package/index.js +395 -395
  73. package/integrations/dispatch.js +276 -276
  74. package/integrations/registry-snapshot.schema.json +36 -36
  75. package/integrations/registry.js +2261 -2261
  76. package/integrations/views.js +28 -28
  77. package/lib/a2a_lane_contract.js +104 -104
  78. package/lib/a2c_lane_contract.js +111 -111
  79. package/lib/account_auth.js +518 -518
  80. package/lib/acp_lane_contract.js +54 -54
  81. package/lib/activity_audit_contract.js +322 -322
  82. package/lib/adapter_certification_contract.js +130 -130
  83. package/lib/adapter_depth_contract.js +156 -156
  84. package/lib/adapter_pack.js +118 -118
  85. package/lib/adapter_partner_pack.js +89 -89
  86. package/lib/adapter_promotion_pack.js +89 -89
  87. package/lib/adapter_protocol_truth_contract.js +229 -229
  88. package/lib/announcement_pack.js +61 -61
  89. package/lib/artifact_distribution_lane_contract.js +54 -54
  90. package/lib/asyncapi_contract.js +150 -150
  91. package/lib/auth_interop_contract.js +80 -80
  92. package/lib/authority_binding_lifecycle_contract.js +182 -182
  93. package/lib/autonomous_entry_contract.js +409 -409
  94. package/lib/bolt_lane_contract.js +55 -55
  95. package/lib/bolt_payment_front.js +172 -172
  96. package/lib/business_cockpit.js +378 -378
  97. package/lib/capability_execution_truth.js +272 -272
  98. package/lib/capability_registry.js +633 -633
  99. package/lib/catalog_contract.js +966 -966
  100. package/lib/catalog_family_model.js +193 -193
  101. package/lib/catalog_views.js +55 -55
  102. package/lib/checkout_event_security.js +142 -142
  103. package/lib/cloudevents_contract.js +80 -80
  104. package/lib/command_flow.js +411 -406
  105. package/lib/commerce_artifacts.js +503 -503
  106. package/lib/commerce_authority.js +449 -449
  107. package/lib/commerce_cases.js +317 -317
  108. package/lib/commerce_checkout.js +509 -509
  109. package/lib/commerce_client.js +7687 -7676
  110. package/lib/commerce_coordination.js +346 -346
  111. package/lib/commerce_economics.js +4017 -4016
  112. package/lib/commerce_identity.js +578 -578
  113. package/lib/commerce_quotes.js +237 -237
  114. package/lib/commerce_reports.js +14461 -14461
  115. package/lib/commerce_runtime.js +315 -315
  116. package/lib/commerce_shell.js +257 -257
  117. package/lib/crypto_agility_matrix.js +125 -125
  118. package/lib/default_path_contract.js +412 -412
  119. package/lib/delivery_summary_contract.js +95 -95
  120. package/lib/ecosystem_entry.js +64 -64
  121. package/lib/erc8004_lane_contract.js +65 -65
  122. package/lib/event_system_lane_contract.js +75 -75
  123. package/lib/execution_truth_contract.js +234 -234
  124. package/lib/external_credit_bridge.js +142 -142
  125. package/lib/external_execution_runtime.js +132 -132
  126. package/lib/feature_control_lane_contract.js +54 -54
  127. package/lib/first_run_conversion_contract.js +290 -290
  128. package/lib/framework_lane_contract.js +89 -89
  129. package/lib/framework_provider_promotion.js +235 -235
  130. package/lib/full_catalog_contract.js +525 -525
  131. package/lib/go_live_operator_pack.js +391 -391
  132. package/lib/http_transport.js +73 -73
  133. package/lib/identity_auth.js +175 -175
  134. package/lib/identity_interop_contract.js +82 -82
  135. package/lib/integration_matrix_contract.js +102 -102
  136. package/lib/l402_lane_contract.js +55 -55
  137. package/lib/l402_payment_front.js +192 -192
  138. package/lib/launch_narrative.js +53 -53
  139. package/lib/lifecycle_continuity_contract.js +115 -115
  140. package/lib/machine_identity_registry_contract.js +199 -199
  141. package/lib/major_rails_lane_contract.js +150 -150
  142. package/lib/market_lane_contract.js +467 -467
  143. package/lib/market_lane_depth_contract.js +182 -182
  144. package/lib/market_lane_promotion_contract.js +210 -210
  145. package/lib/market_lane_trace_contract.js +278 -278
  146. package/lib/mcp_lane_contract.js +137 -137
  147. package/lib/network_transport.js +110 -110
  148. package/lib/offline_verifiability_recovery_contract.js +155 -155
  149. package/lib/openapi_contract.js +296 -296
  150. package/lib/operational_receipt_contract.js +165 -165
  151. package/lib/operator_intelligence.js +407 -407
  152. package/lib/outreach_copy_pack.js +51 -51
  153. package/lib/outreach_message_pack.js +71 -71
  154. package/lib/outreach_proof.js +71 -71
  155. package/lib/outreach_target_pack.js +60 -60
  156. package/lib/partner_intelligence.js +105 -105
  157. package/lib/payment_config.js +239 -191
  158. package/lib/payment_front_registry.js +53 -53
  159. package/lib/payment_protocol_contract.js +165 -165
  160. package/lib/payment_rail_truth_contract.js +324 -324
  161. package/lib/payment_verification.js +312 -264
  162. package/lib/phase_10_closeout_pack.js +45 -45
  163. package/lib/phase_10_completion_pack.js +76 -76
  164. package/lib/phase_10_decision_record_pack.js +54 -54
  165. package/lib/phase_10_decision_resolution_pack.js +53 -53
  166. package/lib/phase_10_demand_signal_adapters_runtime_pack.js +74 -74
  167. package/lib/phase_10_ecosystem_backlog_triage_runtime_pack.js +74 -74
  168. package/lib/phase_10_freeze_baseline_pack.js +67 -67
  169. package/lib/phase_10_freeze_review_pack.js +64 -64
  170. package/lib/phase_10_gate_pack.js +57 -57
  171. package/lib/phase_10_long_tail_continuity_pack.js +80 -80
  172. package/lib/phase_10_long_tail_ecosystem_pack.js +66 -66
  173. package/lib/phase_10_niche_extension_registry_runtime_pack.js +74 -74
  174. package/lib/phase_1_claude_mcp_pack.js +60 -60
  175. package/lib/phase_1_claude_mcp_runtime_pack.js +52 -52
  176. package/lib/phase_1_ecosystem_pack.js +67 -67
  177. package/lib/phase_1_openai_codex_pack.js +60 -60
  178. package/lib/phase_1_openai_codex_runtime_pack.js +52 -52
  179. package/lib/phase_2_base_runtime_pack.js +71 -71
  180. package/lib/phase_2_base_usdc_runtime_pack.js +72 -72
  181. package/lib/phase_2_closeout_pack.js +65 -65
  182. package/lib/phase_2_completion_pack.js +113 -113
  183. package/lib/phase_2_decision_record_pack.js +66 -66
  184. package/lib/phase_2_decision_resolution_pack.js +69 -69
  185. package/lib/phase_2_eth_runtime_pack.js +70 -70
  186. package/lib/phase_2_evm_base_runtime_pack.js +73 -73
  187. package/lib/phase_2_evm_runtime_pack.js +71 -71
  188. package/lib/phase_2_flip_preview_pack.js +60 -60
  189. package/lib/phase_2_freeze_review_pack.js +99 -99
  190. package/lib/phase_2_gate_pack.js +77 -77
  191. package/lib/phase_2_payment_rails_pack.js +71 -71
  192. package/lib/phase_2_usdc_runtime_pack.js +71 -71
  193. package/lib/phase_3_brc_runtime_pack.js +81 -81
  194. package/lib/phase_3_bsv_teranode_runtime_pack.js +83 -83
  195. package/lib/phase_3_closeout_pack.js +62 -62
  196. package/lib/phase_3_completion_pack.js +94 -94
  197. package/lib/phase_3_decision_record_pack.js +64 -64
  198. package/lib/phase_3_decision_resolution_pack.js +69 -69
  199. package/lib/phase_3_freeze_baseline_pack.js +67 -67
  200. package/lib/phase_3_freeze_review_pack.js +80 -80
  201. package/lib/phase_3_gate_pack.js +76 -76
  202. package/lib/phase_3_metanet_runtime_pack.js +81 -81
  203. package/lib/phase_3_native_bsv_pack.js +91 -91
  204. package/lib/phase_3_native_continuity_pack.js +82 -82
  205. package/lib/phase_4_attestation_runtime_pack.js +75 -75
  206. package/lib/phase_4_closeout_pack.js +45 -45
  207. package/lib/phase_4_completion_pack.js +94 -94
  208. package/lib/phase_4_decision_record_pack.js +54 -54
  209. package/lib/phase_4_decision_resolution_pack.js +45 -45
  210. package/lib/phase_4_erc8004_runtime_pack.js +76 -76
  211. package/lib/phase_4_freeze_baseline_pack.js +67 -67
  212. package/lib/phase_4_freeze_review_pack.js +68 -68
  213. package/lib/phase_4_gate_pack.js +58 -58
  214. package/lib/phase_4_identity_registry_runtime_pack.js +75 -75
  215. package/lib/phase_4_identity_trust_pack.js +73 -73
  216. package/lib/phase_4_trust_continuity_pack.js +86 -86
  217. package/lib/phase_5_antelope_runtime_pack.js +76 -76
  218. package/lib/phase_5_closeout_pack.js +44 -44
  219. package/lib/phase_5_completion_pack.js +82 -82
  220. package/lib/phase_5_constellation_dag_runtime_pack.js +76 -76
  221. package/lib/phase_5_decision_record_pack.js +54 -54
  222. package/lib/phase_5_decision_resolution_pack.js +45 -45
  223. package/lib/phase_5_digibyte_dgb_runtime_pack.js +76 -76
  224. package/lib/phase_5_freeze_baseline_pack.js +67 -67
  225. package/lib/phase_5_freeze_review_pack.js +68 -68
  226. package/lib/phase_5_gate_pack.js +58 -58
  227. package/lib/phase_5_hedera_hbar_runtime_pack.js +76 -76
  228. package/lib/phase_5_kaspa_kas_runtime_pack.js +76 -76
  229. package/lib/phase_5_major_rails_continuity_pack.js +86 -86
  230. package/lib/phase_5_major_rails_pack.js +110 -110
  231. package/lib/phase_5_metal_runtime_pack.js +76 -76
  232. package/lib/phase_5_polkadot_dot_runtime_pack.js +76 -76
  233. package/lib/phase_5_proton_xpr_runtime_pack.js +76 -76
  234. package/lib/phase_5_solana_runtime_pack.js +76 -76
  235. package/lib/phase_6_autogen_runtime_pack.js +72 -72
  236. package/lib/phase_6_closeout_pack.js +46 -46
  237. package/lib/phase_6_completion_pack.js +77 -77
  238. package/lib/phase_6_decision_record_pack.js +54 -54
  239. package/lib/phase_6_decision_resolution_pack.js +53 -53
  240. package/lib/phase_6_framework_continuity_pack.js +81 -81
  241. package/lib/phase_6_framework_runtime_pack.js +68 -68
  242. package/lib/phase_6_freeze_baseline_pack.js +68 -68
  243. package/lib/phase_6_freeze_review_pack.js +65 -65
  244. package/lib/phase_6_gate_pack.js +59 -59
  245. package/lib/phase_6_langchain_runtime_pack.js +72 -72
  246. package/lib/phase_6_langgraph_runtime_pack.js +72 -72
  247. package/lib/phase_6_semantic_kernel_runtime_pack.js +72 -72
  248. package/lib/phase_7_closeout_pack.js +45 -45
  249. package/lib/phase_7_completion_pack.js +85 -85
  250. package/lib/phase_7_decision_record_pack.js +53 -53
  251. package/lib/phase_7_decision_resolution_pack.js +53 -53
  252. package/lib/phase_7_event_system_continuity_pack.js +89 -89
  253. package/lib/phase_7_event_system_pack.js +76 -76
  254. package/lib/phase_7_freeze_baseline_pack.js +74 -74
  255. package/lib/phase_7_freeze_review_pack.js +65 -65
  256. package/lib/phase_7_gate_pack.js +58 -58
  257. package/lib/phase_7_kafka_runtime_pack.js +74 -74
  258. package/lib/phase_7_mqtt_runtime_pack.js +74 -74
  259. package/lib/phase_7_nats_runtime_pack.js +74 -74
  260. package/lib/phase_7_webhook_event_bus_runtime_pack.js +74 -74
  261. package/lib/phase_8_closeout_pack.js +46 -46
  262. package/lib/phase_8_completion_pack.js +82 -82
  263. package/lib/phase_8_decision_record_pack.js +54 -54
  264. package/lib/phase_8_decision_resolution_pack.js +53 -53
  265. package/lib/phase_8_external_receipt_import_runtime_pack.js +74 -74
  266. package/lib/phase_8_external_result_import_runtime_pack.js +74 -74
  267. package/lib/phase_8_freeze_baseline_pack.js +71 -71
  268. package/lib/phase_8_freeze_review_pack.js +64 -64
  269. package/lib/phase_8_gate_pack.js +58 -58
  270. package/lib/phase_8_proof_bridge_continuity_pack.js +86 -86
  271. package/lib/phase_8_proof_bridges_pack.js +72 -72
  272. package/lib/phase_8_proof_bundle_normalization_runtime_pack.js +74 -74
  273. package/lib/phase_9_closeout_pack.js +46 -46
  274. package/lib/phase_9_completion_pack.js +82 -82
  275. package/lib/phase_9_custody_refs_runtime_pack.js +74 -74
  276. package/lib/phase_9_decision_record_pack.js +54 -54
  277. package/lib/phase_9_decision_resolution_pack.js +53 -53
  278. package/lib/phase_9_freeze_baseline_pack.js +71 -71
  279. package/lib/phase_9_freeze_review_pack.js +64 -64
  280. package/lib/phase_9_gate_pack.js +58 -58
  281. package/lib/phase_9_operator_accounting_bridges_runtime_pack.js +74 -74
  282. package/lib/phase_9_treasury_connectivity_pack.js +72 -72
  283. package/lib/phase_9_treasury_continuity_pack.js +86 -86
  284. package/lib/phase_9_treasury_destinations_runtime_pack.js +74 -74
  285. package/lib/phase_program_pack.js +120 -120
  286. package/lib/pricing_optimization_contract.js +775 -775
  287. package/lib/protocol_lane_contract.js +117 -117
  288. package/lib/provenance_lane_contract.js +54 -54
  289. package/lib/provider_lane_contract.js +240 -240
  290. package/lib/provider_runtime_journey_contract.js +183 -183
  291. package/lib/public_surface_policy_contract.js +111 -111
  292. package/lib/publish_plan.js +51 -51
  293. package/lib/record_queries.js +48 -48
  294. package/lib/release_candidate.js +50 -50
  295. package/lib/release_center.js +1093 -1093
  296. package/lib/release_history.js +205 -205
  297. package/lib/release_manifest.js +113 -113
  298. package/lib/release_pack.js +453 -453
  299. package/lib/request_rate_limit.js +144 -144
  300. package/lib/resource_views.js +31 -31
  301. package/lib/revenue_launch_path_contract.js +326 -326
  302. package/lib/route_matchers.js +34 -34
  303. package/lib/route_params.js +19 -19
  304. package/lib/runtime_bridge.js +124 -124
  305. package/lib/runtime_operations_worker.js +282 -282
  306. package/lib/runtime_state_store.js +354 -354
  307. package/lib/settlement_lane_contract.js +111 -111
  308. package/lib/shared_signals_lane_contract.js +54 -54
  309. package/lib/signed_audit_provenance_contract.js +83 -83
  310. package/lib/soft_launch_pack.js +78 -78
  311. package/lib/stablecoin_lane_contract.js +76 -76
  312. package/lib/stripe_mpp_lane_contract.js +96 -96
  313. package/lib/stripe_mpp_payment_front.js +158 -158
  314. package/lib/telemetry_lane_contract.js +54 -54
  315. package/lib/treasury_destinations_contract.js +764 -764
  316. package/lib/treasury_egress_policy_contract.js +91 -91
  317. package/lib/treasury_lane_contract.js +84 -84
  318. package/lib/trust_portability_boundary_contract.js +72 -72
  319. package/lib/x402_facilitator.js +155 -0
  320. package/lib/x402_lane_contract.js +118 -118
  321. package/package.json +106 -105
  322. package/scripts/registry_cli.js +275 -275
  323. package/scripts/verify_adapters.js +554 -554
  324. package/scripts/verify_all.js +4962 -4962
  325. package/scripts/verify_control_plane_contracts.js +34 -34
  326. package/scripts/verify_control_plane_routes.js +70 -70
  327. package/scripts/verify_delivery_summary.js +112 -112
  328. package/scripts/verify_examples.js +19 -19
  329. package/scripts/verify_first_run_conversions.js +81 -81
  330. package/scripts/verify_framework_provider_promotion.js +152 -152
  331. package/scripts/verify_full_catalog.js +174 -174
  332. package/scripts/verify_integrations.js +620 -620
  333. package/scripts/verify_lifecycle_continuity.js +96 -96
  334. package/scripts/verify_market_lane_depth.js +94 -94
  335. package/scripts/verify_market_lane_promotion.js +103 -103
  336. package/scripts/verify_market_lane_traces.js +98 -98
  337. package/scripts/verify_market_lanes.js +102 -102
  338. package/scripts/verify_operator_observability_boundary.js +83 -83
  339. package/scripts/verify_pricing_experiment_plan.js +124 -124
  340. package/scripts/verify_provider_runtime_breadth.js +109 -109
  341. package/scripts/verify_provider_runtime_journeys.js +111 -111
  342. package/scripts/verify_revenue_launch_paths.js +105 -105
  343. package/scripts/verify_runtime_durability.js +52 -52
  344. package/scripts/verify_service.js +15410 -15250
  345. package/scripts/verify_tooling.js +1412 -1412
  346. package/scripts/verify_treasury_public_boundary.js +97 -97
  347. package/scripts/verify_x402_facilitator.js +174 -0
  348. package/server.js +11117 -11006
  349. package/.env.production.checklist +0 -77
  350. package/.env.production.template +0 -54
  351. package/.github/workflows/publish-mcp-executor.yml +0 -43
  352. package/ADAPTER_PARTNER_PATH.md +0 -47
  353. package/ADAPTER_PROMOTION_START_HERE.md +0 -44
  354. package/BOLT_BINDINGS.production.worksheet.json +0 -31
  355. package/EXECUTION_TARGETS.production.worksheet.json +0 -73
  356. package/GO_LIVE_OPERATOR_PACK.md +0 -412
  357. package/L402_BINDINGS.production.worksheet.json +0 -30
  358. package/OPERATIONS_RUNBOOK.md +0 -115
  359. package/OPERATOR_START_HERE.md +0 -63
  360. package/OUTREACH_MESSAGES.md +0 -19
  361. package/OUTREACH_START_HERE.md +0 -36
  362. package/PRODUCTION_MANUAL_CLOSEOUT_SEQUENCE.md +0 -172
  363. package/PROGRAM_COMPLETE_RELEASE.md +0 -63
  364. package/PROGRAM_STATUS.md +0 -57
  365. package/PUBLISH_PLAN.md +0 -26
  366. package/RELEASE_CHECKLIST.md +0 -16
  367. package/SOFT_LAUNCH_KIT.md +0 -47
  368. package/services/mcp-execution-target/DISCOVERY_REGISTRY_PLAYBOOK.md +0 -141
  369. package/services/mcp-execution-target/README.md +0 -319
  370. package/services/mcp-execution-target/package.json +0 -14
  371. package/services/mcp-execution-target/server.js +0 -1031
  372. package/services/mcp-execution-target/server.json +0 -16
  373. package/services/mcp-execution-target/verify.js +0 -308
@@ -1,89 +1,89 @@
1
- "use strict";
2
-
3
- const {
4
- buildPhase6FrameworkRuntimePack,
5
- summarizePhase6FrameworkRuntimePack
6
- } = require("./phase_6_framework_runtime_pack");
7
- const {
8
- summarizePhase6LanggraphRuntimePack
9
- } = require("./phase_6_langgraph_runtime_pack");
10
- const {
11
- summarizePhase6LangchainRuntimePack
12
- } = require("./phase_6_langchain_runtime_pack");
13
- const {
14
- summarizePhase6AutogenRuntimePack
15
- } = require("./phase_6_autogen_runtime_pack");
16
- const {
17
- summarizePhase6SemanticKernelRuntimePack
18
- } = require("./phase_6_semantic_kernel_runtime_pack");
19
-
20
- function buildFrameworkLanePack() {
21
- return {
22
- product: "xytara",
23
- category: "machine-commerce-framework-lane-pack",
24
- pack_version: "xytara-framework-lane-pack-v1",
25
- lane_state: "first_party_framework_family_present",
26
- posture: "framework_orchestration_and_execution_family",
27
- framework_family: {
28
- pack: buildPhase6FrameworkRuntimePack(),
29
- summary: summarizePhase6FrameworkRuntimePack()
30
- },
31
- featured_frameworks: {
32
- langgraph: summarizePhase6LanggraphRuntimePack(),
33
- langchain: summarizePhase6LangchainRuntimePack(),
34
- autogen: summarizePhase6AutogenRuntimePack(),
35
- semantic_kernel: summarizePhase6SemanticKernelRuntimePack()
36
- },
37
- registry_backed_frameworks: {
38
- crewai: {
39
- framework_id: "crewai",
40
- posture: "registry-backed multi-agent workflow interoperability lane",
41
- integration_ref: "builtin.execution.crewai"
42
- },
43
- llamaindex: {
44
- framework_id: "llamaindex",
45
- posture: "registry-backed retrieval and agent interoperability lane",
46
- integration_ref: "builtin.execution.llamaindex"
47
- }
48
- },
49
- supported_surfaces: {
50
- phase_6_summary_ref: "/v1/phases/phase-6/summary",
51
- langgraph_summary_ref: "/v1/phases/phase-6/langgraph/summary",
52
- langchain_summary_ref: "/v1/phases/phase-6/langchain/summary",
53
- autogen_summary_ref: "/v1/phases/phase-6/autogen/summary",
54
- semantic_kernel_summary_ref: "/v1/phases/phase-6/semantic-kernel/summary",
55
- integrations_ref: "/v1/integrations",
56
- integration_matrix_ref: "/v1/integration-matrix"
57
- },
58
- first_run_flows: [
59
- {
60
- flow_ref: "framework_family_selection",
61
- recommended_reason: "best first path for understanding how orchestration frameworks map into the canonical runtime instead of sitting as disconnected side examples",
62
- sequence: [
63
- "inspect_framework_lane_summary",
64
- "inspect_phase_6_framework_summary",
65
- "inspect_named_framework_profiles",
66
- "choose_framework_shape_that_best_matches_runtime_carry_needs"
67
- ]
68
- }
69
- ]
70
- };
71
- }
72
-
73
- function summarizeFrameworkLanePack() {
74
- const pack = buildFrameworkLanePack();
75
- return {
76
- product: "xytara",
77
- category: "machine-commerce-framework-lane-pack-summary",
78
- summary_version: "xytara-framework-lane-pack-summary-v1",
79
- lane_state: pack.lane_state,
80
- featured_framework_count: Object.keys(pack.featured_frameworks).length + Object.keys(pack.registry_backed_frameworks).length,
81
- first_run_flow_count: pack.first_run_flows.length,
82
- linked_surfaces: pack.supported_surfaces
83
- };
84
- }
85
-
86
- module.exports = {
87
- buildFrameworkLanePack,
88
- summarizeFrameworkLanePack
89
- };
1
+ "use strict";
2
+
3
+ const {
4
+ buildPhase6FrameworkRuntimePack,
5
+ summarizePhase6FrameworkRuntimePack
6
+ } = require("./phase_6_framework_runtime_pack");
7
+ const {
8
+ summarizePhase6LanggraphRuntimePack
9
+ } = require("./phase_6_langgraph_runtime_pack");
10
+ const {
11
+ summarizePhase6LangchainRuntimePack
12
+ } = require("./phase_6_langchain_runtime_pack");
13
+ const {
14
+ summarizePhase6AutogenRuntimePack
15
+ } = require("./phase_6_autogen_runtime_pack");
16
+ const {
17
+ summarizePhase6SemanticKernelRuntimePack
18
+ } = require("./phase_6_semantic_kernel_runtime_pack");
19
+
20
+ function buildFrameworkLanePack() {
21
+ return {
22
+ product: "xytara",
23
+ category: "machine-commerce-framework-lane-pack",
24
+ pack_version: "xytara-framework-lane-pack-v1",
25
+ lane_state: "first_party_framework_family_present",
26
+ posture: "framework_orchestration_and_execution_family",
27
+ framework_family: {
28
+ pack: buildPhase6FrameworkRuntimePack(),
29
+ summary: summarizePhase6FrameworkRuntimePack()
30
+ },
31
+ featured_frameworks: {
32
+ langgraph: summarizePhase6LanggraphRuntimePack(),
33
+ langchain: summarizePhase6LangchainRuntimePack(),
34
+ autogen: summarizePhase6AutogenRuntimePack(),
35
+ semantic_kernel: summarizePhase6SemanticKernelRuntimePack()
36
+ },
37
+ registry_backed_frameworks: {
38
+ crewai: {
39
+ framework_id: "crewai",
40
+ posture: "registry-backed multi-agent workflow interoperability lane",
41
+ integration_ref: "builtin.execution.crewai"
42
+ },
43
+ llamaindex: {
44
+ framework_id: "llamaindex",
45
+ posture: "registry-backed retrieval and agent interoperability lane",
46
+ integration_ref: "builtin.execution.llamaindex"
47
+ }
48
+ },
49
+ supported_surfaces: {
50
+ phase_6_summary_ref: "/v1/phases/phase-6/summary",
51
+ langgraph_summary_ref: "/v1/phases/phase-6/langgraph/summary",
52
+ langchain_summary_ref: "/v1/phases/phase-6/langchain/summary",
53
+ autogen_summary_ref: "/v1/phases/phase-6/autogen/summary",
54
+ semantic_kernel_summary_ref: "/v1/phases/phase-6/semantic-kernel/summary",
55
+ integrations_ref: "/v1/integrations",
56
+ integration_matrix_ref: "/v1/integration-matrix"
57
+ },
58
+ first_run_flows: [
59
+ {
60
+ flow_ref: "framework_family_selection",
61
+ recommended_reason: "best first path for understanding how orchestration frameworks map into the canonical runtime instead of sitting as disconnected side examples",
62
+ sequence: [
63
+ "inspect_framework_lane_summary",
64
+ "inspect_phase_6_framework_summary",
65
+ "inspect_named_framework_profiles",
66
+ "choose_framework_shape_that_best_matches_runtime_carry_needs"
67
+ ]
68
+ }
69
+ ]
70
+ };
71
+ }
72
+
73
+ function summarizeFrameworkLanePack() {
74
+ const pack = buildFrameworkLanePack();
75
+ return {
76
+ product: "xytara",
77
+ category: "machine-commerce-framework-lane-pack-summary",
78
+ summary_version: "xytara-framework-lane-pack-summary-v1",
79
+ lane_state: pack.lane_state,
80
+ featured_framework_count: Object.keys(pack.featured_frameworks).length + Object.keys(pack.registry_backed_frameworks).length,
81
+ first_run_flow_count: pack.first_run_flows.length,
82
+ linked_surfaces: pack.supported_surfaces
83
+ };
84
+ }
85
+
86
+ module.exports = {
87
+ buildFrameworkLanePack,
88
+ summarizeFrameworkLanePack
89
+ };
@@ -1,235 +1,235 @@
1
- "use strict";
2
-
3
- const packageJson = require("../package.json");
4
-
5
- const FRAMEWORK_PROVIDER_CANDIDATES = Object.freeze([
6
- Object.freeze({
7
- framework_id: "langgraph",
8
- adapter_id: "reference.framework.langgraph",
9
- task_ref: "framework.langgraph.execute",
10
- endpoint_env: "XYTARA_LANGGRAPH_PROVIDER_URL",
11
- auth_env: "XYTARA_LANGGRAPH_PROVIDER_TOKEN",
12
- health_path_env: "XYTARA_LANGGRAPH_PROVIDER_HEALTH_PATH"
13
- }),
14
- Object.freeze({
15
- framework_id: "langchain",
16
- adapter_id: "reference.framework.langchain",
17
- task_ref: "framework.langchain.execute",
18
- endpoint_env: "XYTARA_LANGCHAIN_PROVIDER_URL",
19
- auth_env: "XYTARA_LANGCHAIN_PROVIDER_TOKEN",
20
- health_path_env: "XYTARA_LANGCHAIN_PROVIDER_HEALTH_PATH"
21
- })
22
- ]);
23
-
24
- const FRAMEWORK_PROVIDER_PROMOTION_REQUIREMENTS = Object.freeze([
25
- "endpoint_configured",
26
- "auth_configured",
27
- "health_check_passes",
28
- "latency_observed",
29
- "failure_behavior_bounded",
30
- "proof_fact_shape_preserved",
31
- "operator_evidence_recorded"
32
- ]);
33
-
34
- const FRAMEWORK_PROVIDER_PROMOTION_REJECTION_CODES = Object.freeze([
35
- "framework_not_registered",
36
- "candidate_not_live_check_ready",
37
- "adapter_id_mismatch",
38
- "task_ref_mismatch",
39
- "operator_evidence_missing",
40
- "auth_boundary_evidence_missing",
41
- "health_check_missing",
42
- "health_check_failed",
43
- "latency_measurement_missing",
44
- "latency_budget_exceeded",
45
- "failure_behavior_evidence_missing",
46
- "proof_fact_shape_evidence_missing",
47
- "secret_material_forbidden"
48
- ]);
49
-
50
- function normalizeString(value) {
51
- return typeof value === "string" ? value.trim() : "";
52
- }
53
-
54
- function containsSecretMaterial(value) {
55
- if (!value || typeof value !== "object") return false;
56
- const secretishKey = /(secret|token|credential|password|private[_-]?key|authorization)/i;
57
- const secretishValue = /(bearer\s+[a-z0-9._-]{8,}|sk_live_|npm_[a-z0-9]|ghp_[a-z0-9]|xox[baprs]-)/i;
58
- const stack = [value];
59
- while (stack.length > 0) {
60
- const current = stack.pop();
61
- if (!current || typeof current !== "object") continue;
62
- for (const [key, entry] of Object.entries(current)) {
63
- if (secretishKey.test(String(key))) return true;
64
- if (typeof entry === "string" && secretishValue.test(entry)) return true;
65
- if (entry && typeof entry === "object") stack.push(entry);
66
- }
67
- }
68
- return false;
69
- }
70
-
71
- function boolFromEnv(value) {
72
- const normalized = normalizeString(value).toLowerCase();
73
- return ["1", "true", "yes", "on"].includes(normalized);
74
- }
75
-
76
- function summarizeCandidate(candidate, env = process.env) {
77
- const endpoint = normalizeString(env[candidate.endpoint_env]);
78
- const authToken = normalizeString(env[candidate.auth_env]);
79
- const healthPath = normalizeString(env[candidate.health_path_env]) || "/health";
80
- const endpointConfigured = Boolean(endpoint);
81
- const authConfigured = Boolean(authToken);
82
- const liveCheckReady = endpointConfigured && authConfigured;
83
- return {
84
- framework_id: candidate.framework_id,
85
- adapter_id: candidate.adapter_id,
86
- task_ref: candidate.task_ref,
87
- state: liveCheckReady ? "live_check_ready" : "reference_contract_only",
88
- endpoint_configured: endpointConfigured,
89
- auth_configured: authConfigured,
90
- health_path: healthPath,
91
- endpoint_env: candidate.endpoint_env,
92
- auth_env: candidate.auth_env,
93
- health_path_env: candidate.health_path_env,
94
- promotion_evidence_template: {
95
- framework_id: candidate.framework_id,
96
- adapter_id: candidate.adapter_id,
97
- task_ref: candidate.task_ref,
98
- operator_evidence_ref: "ops.framework_provider.<framework_id>.<date>",
99
- auth_boundary_ref: "ops.framework_provider.auth_boundary.<framework_id>.<date>",
100
- health_check: {
101
- status_code: 200,
102
- health_ok: true
103
- },
104
- latency_ms: 250,
105
- latency_budget_ms: 2000,
106
- failure_behavior_ref: "ops.framework_provider.failure_behavior.<framework_id>.<date>",
107
- proof_fact_shape_ref: "ops.framework_provider.proof_facts.<framework_id>.<date>"
108
- },
109
- required_live_evidence: [
110
- "real_external_endpoint",
111
- "auth_or_access_boundary",
112
- "health_check_response",
113
- "bounded_latency_measurement",
114
- "failure_behavior_observed",
115
- "proof_fact_shape_preserved"
116
- ],
117
- claim_boundary: liveCheckReady
118
- ? "may_run_live_promotion_check_but_must_not_claim_provider_live_until_check_evidence_is_recorded"
119
- : "reference_adapter_only_no_live_external_provider_claim"
120
- };
121
- }
122
-
123
- function buildFrameworkProviderPromotionPack(options = {}) {
124
- const env = options.env || process.env;
125
- const candidates = FRAMEWORK_PROVIDER_CANDIDATES.map((candidate) => summarizeCandidate(candidate, env));
126
- const liveReadyCandidates = candidates.filter((candidate) => candidate.state === "live_check_ready");
127
- const requireLive = boolFromEnv(env.XYTARA_FRAMEWORK_PROMOTION_REQUIRE_LIVE);
128
- return {
129
- ok: true,
130
- product: packageJson.name,
131
- category: "machine-commerce-framework-provider-promotion-pack",
132
- pack_version: "xytara-framework-provider-promotion-pack-v1",
133
- posture: "reference_framework_adapters_promote_only_with_external_endpoint_evidence",
134
- promotion_state: liveReadyCandidates.length > 0 ? "live_check_ready" : "no_live_provider_evidence_configured",
135
- require_live: requireLive,
136
- framework_candidate_count: candidates.length,
137
- live_check_ready_count: liveReadyCandidates.length,
138
- promoted_provider_count: 0,
139
- candidates,
140
- promotion_requirements: FRAMEWORK_PROVIDER_PROMOTION_REQUIREMENTS.slice(),
141
- deterministic_rejection_codes: FRAMEWORK_PROVIDER_PROMOTION_REJECTION_CODES.slice(),
142
- strict_boundaries: [
143
- "reference_framework_adapters_do_not_equal_live_provider_integrations",
144
- "do_not_claim_langgraph_or_langchain_live_provider_without_endpoint_auth_health_and_latency_evidence",
145
- "failed_or_missing_live_checks_keep_frameworks_in_reference_contract_state",
146
- "live_provider_promotion_does_not_change_adapter_claims_for_unchecked_frameworks"
147
- ],
148
- linked_surfaces: {
149
- framework_lane_ref: "/v1/frameworks",
150
- framework_provider_promotion_ref: "/v1/framework-provider-promotion",
151
- framework_provider_promotion_summary_ref: "/v1/framework-provider-promotion/summary",
152
- adapter_depth_ref: "/v1/adapter-depth/summary",
153
- integrations_ref: "/v1/integrations"
154
- }
155
- };
156
- }
157
-
158
- function validateFrameworkProviderPromotionEvidence(pack, evidence) {
159
- const promotionPack = pack || {};
160
- const evidencePacket = evidence || {};
161
- const candidates = Array.isArray(promotionPack.candidates) ? promotionPack.candidates : [];
162
- const frameworkId = normalizeString(evidencePacket.framework_id);
163
- const candidate = candidates.find((entry) => entry && entry.framework_id === frameworkId) || null;
164
- const healthCheck = evidencePacket.health_check || null;
165
- const latencyValue = evidencePacket.latency_ms;
166
- const latencyMs = Number(latencyValue);
167
- const latencyBudgetMs = Number(evidencePacket.latency_budget_ms || 2000);
168
- const rejectionCodes = [];
169
-
170
- if (!candidate) {
171
- rejectionCodes.push("framework_not_registered");
172
- } else {
173
- if (candidate.state !== "live_check_ready" || !candidate.endpoint_configured || !candidate.auth_configured) {
174
- rejectionCodes.push("candidate_not_live_check_ready");
175
- }
176
- if (normalizeString(evidencePacket.adapter_id) && normalizeString(evidencePacket.adapter_id) !== candidate.adapter_id) {
177
- rejectionCodes.push("adapter_id_mismatch");
178
- }
179
- if (normalizeString(evidencePacket.task_ref) && normalizeString(evidencePacket.task_ref) !== candidate.task_ref) {
180
- rejectionCodes.push("task_ref_mismatch");
181
- }
182
- }
183
- if (!normalizeString(evidencePacket.operator_evidence_ref)) rejectionCodes.push("operator_evidence_missing");
184
- if (!normalizeString(evidencePacket.auth_boundary_ref)) rejectionCodes.push("auth_boundary_evidence_missing");
185
- if (!healthCheck || typeof healthCheck !== "object") {
186
- rejectionCodes.push("health_check_missing");
187
- } else if (healthCheck.health_ok !== true || Number(healthCheck.status_code || 0) < 200 || Number(healthCheck.status_code || 0) >= 300) {
188
- rejectionCodes.push("health_check_failed");
189
- }
190
- if (latencyValue === null || latencyValue === undefined || latencyValue === "" || !Number.isFinite(latencyMs) || latencyMs < 0) {
191
- rejectionCodes.push("latency_measurement_missing");
192
- } else if (Number.isFinite(latencyBudgetMs) && latencyBudgetMs > 0 && latencyMs > latencyBudgetMs) {
193
- rejectionCodes.push("latency_budget_exceeded");
194
- }
195
- if (!normalizeString(evidencePacket.failure_behavior_ref)) rejectionCodes.push("failure_behavior_evidence_missing");
196
- if (!normalizeString(evidencePacket.proof_fact_shape_ref)) rejectionCodes.push("proof_fact_shape_evidence_missing");
197
- if (containsSecretMaterial(evidencePacket)) rejectionCodes.push("secret_material_forbidden");
198
-
199
- return {
200
- validation_version: "xytara-framework-provider-promotion-evidence-validation-v1",
201
- promotion_allowed: rejectionCodes.length === 0,
202
- framework_id: frameworkId || null,
203
- rejection_codes: Array.from(new Set(rejectionCodes)),
204
- required_requirements: FRAMEWORK_PROVIDER_PROMOTION_REQUIREMENTS.slice(),
205
- boundary: "framework_provider_promotion_requires_endpoint_auth_health_latency_failure_and_proof_fact_evidence_without_secret_material"
206
- };
207
- }
208
-
209
- function summarizeFrameworkProviderPromotionPack(options = {}) {
210
- const pack = buildFrameworkProviderPromotionPack(options);
211
- return {
212
- ok: true,
213
- product: pack.product,
214
- category: "machine-commerce-framework-provider-promotion-summary",
215
- summary_version: "xytara-framework-provider-promotion-summary-v1",
216
- posture: pack.posture,
217
- promotion_state: pack.promotion_state,
218
- require_live: pack.require_live,
219
- framework_candidate_count: pack.framework_candidate_count,
220
- live_check_ready_count: pack.live_check_ready_count,
221
- promoted_provider_count: pack.promoted_provider_count,
222
- promotion_requirement_count: pack.promotion_requirements.length,
223
- deterministic_rejection_code_count: pack.deterministic_rejection_codes.length,
224
- boundary_count: pack.strict_boundaries.length,
225
- linked_surfaces: pack.linked_surfaces
226
- };
227
- }
228
-
229
- module.exports = {
230
- FRAMEWORK_PROVIDER_CANDIDATES,
231
- FRAMEWORK_PROVIDER_PROMOTION_REJECTION_CODES,
232
- buildFrameworkProviderPromotionPack,
233
- summarizeFrameworkProviderPromotionPack,
234
- validateFrameworkProviderPromotionEvidence
235
- };
1
+ "use strict";
2
+
3
+ const packageJson = require("../package.json");
4
+
5
+ const FRAMEWORK_PROVIDER_CANDIDATES = Object.freeze([
6
+ Object.freeze({
7
+ framework_id: "langgraph",
8
+ adapter_id: "reference.framework.langgraph",
9
+ task_ref: "framework.langgraph.execute",
10
+ endpoint_env: "XYTARA_LANGGRAPH_PROVIDER_URL",
11
+ auth_env: "XYTARA_LANGGRAPH_PROVIDER_TOKEN",
12
+ health_path_env: "XYTARA_LANGGRAPH_PROVIDER_HEALTH_PATH"
13
+ }),
14
+ Object.freeze({
15
+ framework_id: "langchain",
16
+ adapter_id: "reference.framework.langchain",
17
+ task_ref: "framework.langchain.execute",
18
+ endpoint_env: "XYTARA_LANGCHAIN_PROVIDER_URL",
19
+ auth_env: "XYTARA_LANGCHAIN_PROVIDER_TOKEN",
20
+ health_path_env: "XYTARA_LANGCHAIN_PROVIDER_HEALTH_PATH"
21
+ })
22
+ ]);
23
+
24
+ const FRAMEWORK_PROVIDER_PROMOTION_REQUIREMENTS = Object.freeze([
25
+ "endpoint_configured",
26
+ "auth_configured",
27
+ "health_check_passes",
28
+ "latency_observed",
29
+ "failure_behavior_bounded",
30
+ "proof_fact_shape_preserved",
31
+ "operator_evidence_recorded"
32
+ ]);
33
+
34
+ const FRAMEWORK_PROVIDER_PROMOTION_REJECTION_CODES = Object.freeze([
35
+ "framework_not_registered",
36
+ "candidate_not_live_check_ready",
37
+ "adapter_id_mismatch",
38
+ "task_ref_mismatch",
39
+ "operator_evidence_missing",
40
+ "auth_boundary_evidence_missing",
41
+ "health_check_missing",
42
+ "health_check_failed",
43
+ "latency_measurement_missing",
44
+ "latency_budget_exceeded",
45
+ "failure_behavior_evidence_missing",
46
+ "proof_fact_shape_evidence_missing",
47
+ "secret_material_forbidden"
48
+ ]);
49
+
50
+ function normalizeString(value) {
51
+ return typeof value === "string" ? value.trim() : "";
52
+ }
53
+
54
+ function containsSecretMaterial(value) {
55
+ if (!value || typeof value !== "object") return false;
56
+ const secretishKey = /(secret|token|credential|password|private[_-]?key|authorization)/i;
57
+ const secretishValue = /(bearer\s+[a-z0-9._-]{8,}|sk_live_|npm_[a-z0-9]|ghp_[a-z0-9]|xox[baprs]-)/i;
58
+ const stack = [value];
59
+ while (stack.length > 0) {
60
+ const current = stack.pop();
61
+ if (!current || typeof current !== "object") continue;
62
+ for (const [key, entry] of Object.entries(current)) {
63
+ if (secretishKey.test(String(key))) return true;
64
+ if (typeof entry === "string" && secretishValue.test(entry)) return true;
65
+ if (entry && typeof entry === "object") stack.push(entry);
66
+ }
67
+ }
68
+ return false;
69
+ }
70
+
71
+ function boolFromEnv(value) {
72
+ const normalized = normalizeString(value).toLowerCase();
73
+ return ["1", "true", "yes", "on"].includes(normalized);
74
+ }
75
+
76
+ function summarizeCandidate(candidate, env = process.env) {
77
+ const endpoint = normalizeString(env[candidate.endpoint_env]);
78
+ const authToken = normalizeString(env[candidate.auth_env]);
79
+ const healthPath = normalizeString(env[candidate.health_path_env]) || "/health";
80
+ const endpointConfigured = Boolean(endpoint);
81
+ const authConfigured = Boolean(authToken);
82
+ const liveCheckReady = endpointConfigured && authConfigured;
83
+ return {
84
+ framework_id: candidate.framework_id,
85
+ adapter_id: candidate.adapter_id,
86
+ task_ref: candidate.task_ref,
87
+ state: liveCheckReady ? "live_check_ready" : "reference_contract_only",
88
+ endpoint_configured: endpointConfigured,
89
+ auth_configured: authConfigured,
90
+ health_path: healthPath,
91
+ endpoint_env: candidate.endpoint_env,
92
+ auth_env: candidate.auth_env,
93
+ health_path_env: candidate.health_path_env,
94
+ promotion_evidence_template: {
95
+ framework_id: candidate.framework_id,
96
+ adapter_id: candidate.adapter_id,
97
+ task_ref: candidate.task_ref,
98
+ operator_evidence_ref: "ops.framework_provider.<framework_id>.<date>",
99
+ auth_boundary_ref: "ops.framework_provider.auth_boundary.<framework_id>.<date>",
100
+ health_check: {
101
+ status_code: 200,
102
+ health_ok: true
103
+ },
104
+ latency_ms: 250,
105
+ latency_budget_ms: 2000,
106
+ failure_behavior_ref: "ops.framework_provider.failure_behavior.<framework_id>.<date>",
107
+ proof_fact_shape_ref: "ops.framework_provider.proof_facts.<framework_id>.<date>"
108
+ },
109
+ required_live_evidence: [
110
+ "real_external_endpoint",
111
+ "auth_or_access_boundary",
112
+ "health_check_response",
113
+ "bounded_latency_measurement",
114
+ "failure_behavior_observed",
115
+ "proof_fact_shape_preserved"
116
+ ],
117
+ claim_boundary: liveCheckReady
118
+ ? "may_run_live_promotion_check_but_must_not_claim_provider_live_until_check_evidence_is_recorded"
119
+ : "reference_adapter_only_no_live_external_provider_claim"
120
+ };
121
+ }
122
+
123
+ function buildFrameworkProviderPromotionPack(options = {}) {
124
+ const env = options.env || process.env;
125
+ const candidates = FRAMEWORK_PROVIDER_CANDIDATES.map((candidate) => summarizeCandidate(candidate, env));
126
+ const liveReadyCandidates = candidates.filter((candidate) => candidate.state === "live_check_ready");
127
+ const requireLive = boolFromEnv(env.XYTARA_FRAMEWORK_PROMOTION_REQUIRE_LIVE);
128
+ return {
129
+ ok: true,
130
+ product: packageJson.name,
131
+ category: "machine-commerce-framework-provider-promotion-pack",
132
+ pack_version: "xytara-framework-provider-promotion-pack-v1",
133
+ posture: "reference_framework_adapters_promote_only_with_external_endpoint_evidence",
134
+ promotion_state: liveReadyCandidates.length > 0 ? "live_check_ready" : "no_live_provider_evidence_configured",
135
+ require_live: requireLive,
136
+ framework_candidate_count: candidates.length,
137
+ live_check_ready_count: liveReadyCandidates.length,
138
+ promoted_provider_count: 0,
139
+ candidates,
140
+ promotion_requirements: FRAMEWORK_PROVIDER_PROMOTION_REQUIREMENTS.slice(),
141
+ deterministic_rejection_codes: FRAMEWORK_PROVIDER_PROMOTION_REJECTION_CODES.slice(),
142
+ strict_boundaries: [
143
+ "reference_framework_adapters_do_not_equal_live_provider_integrations",
144
+ "do_not_claim_langgraph_or_langchain_live_provider_without_endpoint_auth_health_and_latency_evidence",
145
+ "failed_or_missing_live_checks_keep_frameworks_in_reference_contract_state",
146
+ "live_provider_promotion_does_not_change_adapter_claims_for_unchecked_frameworks"
147
+ ],
148
+ linked_surfaces: {
149
+ framework_lane_ref: "/v1/frameworks",
150
+ framework_provider_promotion_ref: "/v1/framework-provider-promotion",
151
+ framework_provider_promotion_summary_ref: "/v1/framework-provider-promotion/summary",
152
+ adapter_depth_ref: "/v1/adapter-depth/summary",
153
+ integrations_ref: "/v1/integrations"
154
+ }
155
+ };
156
+ }
157
+
158
+ function validateFrameworkProviderPromotionEvidence(pack, evidence) {
159
+ const promotionPack = pack || {};
160
+ const evidencePacket = evidence || {};
161
+ const candidates = Array.isArray(promotionPack.candidates) ? promotionPack.candidates : [];
162
+ const frameworkId = normalizeString(evidencePacket.framework_id);
163
+ const candidate = candidates.find((entry) => entry && entry.framework_id === frameworkId) || null;
164
+ const healthCheck = evidencePacket.health_check || null;
165
+ const latencyValue = evidencePacket.latency_ms;
166
+ const latencyMs = Number(latencyValue);
167
+ const latencyBudgetMs = Number(evidencePacket.latency_budget_ms || 2000);
168
+ const rejectionCodes = [];
169
+
170
+ if (!candidate) {
171
+ rejectionCodes.push("framework_not_registered");
172
+ } else {
173
+ if (candidate.state !== "live_check_ready" || !candidate.endpoint_configured || !candidate.auth_configured) {
174
+ rejectionCodes.push("candidate_not_live_check_ready");
175
+ }
176
+ if (normalizeString(evidencePacket.adapter_id) && normalizeString(evidencePacket.adapter_id) !== candidate.adapter_id) {
177
+ rejectionCodes.push("adapter_id_mismatch");
178
+ }
179
+ if (normalizeString(evidencePacket.task_ref) && normalizeString(evidencePacket.task_ref) !== candidate.task_ref) {
180
+ rejectionCodes.push("task_ref_mismatch");
181
+ }
182
+ }
183
+ if (!normalizeString(evidencePacket.operator_evidence_ref)) rejectionCodes.push("operator_evidence_missing");
184
+ if (!normalizeString(evidencePacket.auth_boundary_ref)) rejectionCodes.push("auth_boundary_evidence_missing");
185
+ if (!healthCheck || typeof healthCheck !== "object") {
186
+ rejectionCodes.push("health_check_missing");
187
+ } else if (healthCheck.health_ok !== true || Number(healthCheck.status_code || 0) < 200 || Number(healthCheck.status_code || 0) >= 300) {
188
+ rejectionCodes.push("health_check_failed");
189
+ }
190
+ if (latencyValue === null || latencyValue === undefined || latencyValue === "" || !Number.isFinite(latencyMs) || latencyMs < 0) {
191
+ rejectionCodes.push("latency_measurement_missing");
192
+ } else if (Number.isFinite(latencyBudgetMs) && latencyBudgetMs > 0 && latencyMs > latencyBudgetMs) {
193
+ rejectionCodes.push("latency_budget_exceeded");
194
+ }
195
+ if (!normalizeString(evidencePacket.failure_behavior_ref)) rejectionCodes.push("failure_behavior_evidence_missing");
196
+ if (!normalizeString(evidencePacket.proof_fact_shape_ref)) rejectionCodes.push("proof_fact_shape_evidence_missing");
197
+ if (containsSecretMaterial(evidencePacket)) rejectionCodes.push("secret_material_forbidden");
198
+
199
+ return {
200
+ validation_version: "xytara-framework-provider-promotion-evidence-validation-v1",
201
+ promotion_allowed: rejectionCodes.length === 0,
202
+ framework_id: frameworkId || null,
203
+ rejection_codes: Array.from(new Set(rejectionCodes)),
204
+ required_requirements: FRAMEWORK_PROVIDER_PROMOTION_REQUIREMENTS.slice(),
205
+ boundary: "framework_provider_promotion_requires_endpoint_auth_health_latency_failure_and_proof_fact_evidence_without_secret_material"
206
+ };
207
+ }
208
+
209
+ function summarizeFrameworkProviderPromotionPack(options = {}) {
210
+ const pack = buildFrameworkProviderPromotionPack(options);
211
+ return {
212
+ ok: true,
213
+ product: pack.product,
214
+ category: "machine-commerce-framework-provider-promotion-summary",
215
+ summary_version: "xytara-framework-provider-promotion-summary-v1",
216
+ posture: pack.posture,
217
+ promotion_state: pack.promotion_state,
218
+ require_live: pack.require_live,
219
+ framework_candidate_count: pack.framework_candidate_count,
220
+ live_check_ready_count: pack.live_check_ready_count,
221
+ promoted_provider_count: pack.promoted_provider_count,
222
+ promotion_requirement_count: pack.promotion_requirements.length,
223
+ deterministic_rejection_code_count: pack.deterministic_rejection_codes.length,
224
+ boundary_count: pack.strict_boundaries.length,
225
+ linked_surfaces: pack.linked_surfaces
226
+ };
227
+ }
228
+
229
+ module.exports = {
230
+ FRAMEWORK_PROVIDER_CANDIDATES,
231
+ FRAMEWORK_PROVIDER_PROMOTION_REJECTION_CODES,
232
+ buildFrameworkProviderPromotionPack,
233
+ summarizeFrameworkProviderPromotionPack,
234
+ validateFrameworkProviderPromotionEvidence
235
+ };