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,315 +1,315 @@
1
- "use strict";
2
-
3
- const { createCommandArtifacts } = require("./commerce_artifacts");
4
- const { createQuote, hydrateQuoteStates, markQuoteExecuted } = require("./commerce_quotes");
5
- const { listRecords } = require("./record_queries");
6
- const { createBsvSettlementRecord } = require("./settlement_bsv_live");
7
- const {
8
- actOnDispute,
9
- actOnRefund,
10
- actOnRemediationTicket,
11
- createDispute,
12
- createRefund,
13
- createRemediationTicket
14
- } = require("./commerce_cases");
15
-
16
- function createRuntimeState() {
17
- return {
18
- quotes: new Map(),
19
- checkoutPurchaseIntents: new Map(),
20
- checkoutSessions: new Map(),
21
- checkoutEvents: new Map(),
22
- externalCreditGrants: new Map(),
23
- accountAuthorityBindings: new Map(),
24
- accountSpendCredentials: new Map(),
25
- accountSpendCredentialsByToken: new Map(),
26
- machineIdentityBindings: new Map(),
27
- operatorParticipants: new Map(),
28
- networkParticipants: new Map(),
29
- runtimeBridgeDispatches: new Map(),
30
- agentAccounts: new Map(),
31
- transactions: new Map(),
32
- receipts: new Map(),
33
- paymentLedger: [],
34
- bsvSettlementRecords: new Map(),
35
- acceptedPaymentNonces: new Set(),
36
- economicsBudgets: new Map(),
37
- economicsAgents: new Map(),
38
- economicsReceipts: new Map(),
39
- economicsAllocations: [],
40
- economicsRailCredits: [],
41
- economicsEntitlements: new Map(),
42
- economicsCreditSpends: [],
43
- economicsUsageMeters: new Map(),
44
- economicsInterpretationHandoffs: [],
45
- economicsJobActions: [],
46
- coordinationHandoffs: [],
47
- zoneAdmissionCases: [],
48
- deliveries: new Map(),
49
- pendingExecutions: new Map(),
50
- disputes: new Map(),
51
- refunds: new Map(),
52
- remediationTickets: new Map()
53
- };
54
- }
55
-
56
- function buildDeliveryEvent(event, delivery, atIso, extra) {
57
- return {
58
- event,
59
- at_iso: atIso,
60
- status: delivery.status,
61
- callback_url: delivery.callback_url || null,
62
- output_ref: delivery.output_ref || null,
63
- proof_ref: delivery.proof_ref || null,
64
- ...(extra || {})
65
- };
66
- }
67
-
68
- function buildCallbackDeliveryState(callbackUrl, deliveredAtIso, options = {}) {
69
- if (!callbackUrl) return null;
70
- const opts = options || {};
71
- const initialStatus = opts.initial_status || (deliveredAtIso ? "queued" : "pending_execution");
72
- return {
73
- status: initialStatus,
74
- attempt_count: 0,
75
- max_attempts: null,
76
- last_attempt_at_iso: null,
77
- next_attempt_at_iso: deliveredAtIso || null,
78
- delivered_at_iso: null,
79
- failed_at_iso: null,
80
- last_error: null,
81
- last_response_status: null,
82
- signature_mode: "hmac_sha256"
83
- };
84
- }
85
-
86
- function completePendingExecution(state, transactionId) {
87
- if (!transactionId || !state.pendingExecutions.has(transactionId) || !state.transactions.has(transactionId)) {
88
- return state.transactions.get(transactionId) || null;
89
- }
90
- const pending = state.pendingExecutions.get(transactionId);
91
- const current = state.transactions.get(transactionId);
92
- if (!pending || !current || Date.now() < pending.readyAtMs) {
93
- return current;
94
- }
95
-
96
- const completedAtIso = new Date(pending.readyAtMs).toISOString();
97
- const next = {
98
- transaction: {
99
- ...current.transaction,
100
- status: "completed",
101
- completed_at_iso: completedAtIso,
102
- timing: {
103
- ...current.transaction.timing,
104
- completed_at_iso: completedAtIso,
105
- duration_ms: pending.durationMs,
106
- observed_latency_class: pending.observedLatencyClass,
107
- assessment: pending.assessment
108
- },
109
- execution: {
110
- ...current.transaction.execution,
111
- status: "completed"
112
- },
113
- remediation: {
114
- ...current.transaction.remediation,
115
- updated_at_iso: completedAtIso
116
- }
117
- },
118
- receipt: {
119
- ...current.receipt,
120
- status: "completed",
121
- created_at_iso: completedAtIso,
122
- timing: {
123
- ...current.receipt.timing,
124
- completed_at_iso: completedAtIso,
125
- duration_ms: pending.durationMs,
126
- observed_latency_class: pending.observedLatencyClass,
127
- assessment: pending.assessment
128
- },
129
- remediation: {
130
- ...current.receipt.remediation,
131
- updated_at_iso: completedAtIso
132
- }
133
- },
134
- command: current.command
135
- };
136
-
137
- state.transactions.set(transactionId, next);
138
- state.receipts.set(next.receipt.receipt_id, next);
139
- if (pending.quoteId && state.quotes.has(pending.quoteId)) {
140
- const quote = state.quotes.get(pending.quoteId);
141
- state.quotes.set(pending.quoteId, {
142
- ...quote,
143
- status: "executed",
144
- payment_recorded_at_iso: completedAtIso,
145
- executed_at_iso: completedAtIso
146
- });
147
- }
148
- if (pending.deliveryId && state.deliveries.has(pending.deliveryId)) {
149
- const delivery = state.deliveries.get(pending.deliveryId);
150
- const nextDelivery = {
151
- ...delivery,
152
- status: "delivered",
153
- delivered_at_iso: completedAtIso,
154
- receipt_id: next.receipt.receipt_id,
155
- proof_ref: next.receipt.proof_ref,
156
- attempt_count: (delivery.attempt_count || 0) + 1,
157
- last_attempt_at_iso: completedAtIso,
158
- history: [
159
- ...(Array.isArray(delivery.history) ? delivery.history : []),
160
- buildDeliveryEvent("delivered", { ...delivery, status: "delivered", proof_ref: next.receipt.proof_ref }, completedAtIso, {
161
- attempt_number: (delivery.attempt_count || 0) + 1
162
- })
163
- ],
164
- callback_delivery: delivery.callback_url
165
- ? {
166
- ...(delivery.callback_delivery || buildCallbackDeliveryState(delivery.callback_url, completedAtIso)),
167
- status: "queued",
168
- next_attempt_at_iso: completedAtIso,
169
- last_error: null,
170
- failed_at_iso: null
171
- }
172
- : null
173
- };
174
- state.deliveries.set(pending.deliveryId, nextDelivery);
175
- }
176
- state.pendingExecutions.delete(transactionId);
177
- return next;
178
- }
179
-
180
- function hydratePendingExecutions(state) {
181
- for (const transactionId of Array.from(state.pendingExecutions.keys())) {
182
- completePendingExecution(state, transactionId);
183
- }
184
- }
185
-
186
- function createCommandResult(state, payload, quote, options) {
187
- const opts = options || {};
188
- const deferredCompletion = payload && payload.defer_completion === true;
189
- const { transaction, receipt, command } = createCommandArtifacts(payload, quote, {
190
- deferredCompletion,
191
- paymentVerification: opts.paymentVerification || null,
192
- externalExecution: opts.externalExecution || null
193
- });
194
- const result = { transaction, receipt, command };
195
- state.transactions.set(transaction.transaction_id, result);
196
- state.receipts.set(receipt.receipt_id, result);
197
- let paymentRecord = null;
198
- if (!opts.skipPaymentLedger) {
199
- paymentRecord = {
200
- payment_id: `pay_${quote.quote_id}`,
201
- quote_id: quote.quote_id,
202
- transaction_id: transaction.transaction_id,
203
- receipt_id: receipt.receipt_id,
204
- account_id: quote.account_id,
205
- amount_minor: quote.amount_minor,
206
- currency: quote.currency,
207
- settlement_adapter: quote.settlement_adapter,
208
- settlement_integration_id: quote.settlement_integration_id || null,
209
- recorded_at_iso: receipt.created_at_iso,
210
- payment: transaction.payment,
211
- settlement: transaction.settlement,
212
- treasury: transaction.treasury,
213
- default_path: transaction.default_path,
214
- payment_verification: opts.paymentVerification
215
- ? {
216
- verification_mode: opts.paymentVerification.verification_mode || null,
217
- wallet_id: opts.paymentVerification.wallet_id || null,
218
- age_seconds: Number.isFinite(Number(opts.paymentVerification.age_seconds))
219
- ? Number(opts.paymentVerification.age_seconds)
220
- : null
221
- }
222
- : null
223
- };
224
- state.paymentLedger = [
225
- paymentRecord,
226
- ...(Array.isArray(state.paymentLedger) ? state.paymentLedger : [])
227
- ].slice(0, 100);
228
- const liveSettlement = createBsvSettlementRecord(state, transaction, receipt, paymentRecord);
229
- if (liveSettlement) {
230
- paymentRecord.live_settlement = {
231
- settlement_id: liveSettlement.settlement_id,
232
- status: liveSettlement.status,
233
- finality_status: liveSettlement.finality_status,
234
- txid: liveSettlement.txid,
235
- rail: liveSettlement.rail
236
- };
237
- transaction.settlement.live = paymentRecord.live_settlement;
238
- receipt.settlement.live = paymentRecord.live_settlement;
239
- }
240
- }
241
- if (opts.creditSpend) {
242
- transaction.credit_spend = opts.creditSpend;
243
- receipt.credit_spend = opts.creditSpend;
244
- }
245
- const deliveryRecord = {
246
- delivery_id: `delivery_${transaction.transaction_id}`,
247
- transaction_id: transaction.transaction_id,
248
- receipt_id: receipt.receipt_id,
249
- quote_id: quote.quote_id,
250
- account_id: quote.account_id,
251
- callback_url: transaction.callback_url,
252
- output_ref: transaction.output_ref,
253
- proof_ref: receipt.proof_ref,
254
- payment_id: paymentRecord ? paymentRecord.payment_id : null,
255
- delivery_target_kind: transaction.callback_url ? "callback" : "direct",
256
- status: deferredCompletion ? "pending_delivery" : "delivered",
257
- created_at_iso: transaction.created_at_iso,
258
- delivered_at_iso: deferredCompletion ? null : receipt.created_at_iso,
259
- attempt_count: deferredCompletion ? 0 : 1,
260
- last_attempt_at_iso: deferredCompletion ? null : receipt.created_at_iso,
261
- callback_delivery: buildCallbackDeliveryState(
262
- transaction.callback_url,
263
- deferredCompletion ? null : receipt.created_at_iso,
264
- {
265
- initial_status: deferredCompletion ? "pending_execution" : "queued"
266
- }
267
- ),
268
- history: [
269
- buildDeliveryEvent("created", {
270
- callback_url: transaction.callback_url,
271
- output_ref: transaction.output_ref,
272
- proof_ref: receipt.proof_ref,
273
- status: deferredCompletion ? "pending_delivery" : "delivered"
274
- }, transaction.created_at_iso),
275
- ...(!deferredCompletion ? [
276
- buildDeliveryEvent("delivered", {
277
- callback_url: transaction.callback_url,
278
- output_ref: transaction.output_ref,
279
- proof_ref: receipt.proof_ref,
280
- status: "delivered"
281
- }, receipt.created_at_iso, { attempt_number: 1 })
282
- ] : [])
283
- ]
284
- };
285
- state.deliveries.set(deliveryRecord.delivery_id, deliveryRecord);
286
- markQuoteExecuted(state, quote, result, paymentRecord, { deferredCompletion });
287
- if (deferredCompletion) {
288
- state.pendingExecutions.set(transaction.transaction_id, {
289
- readyAtMs: Date.now() + 300,
290
- quoteId: quote.quote_id,
291
- deliveryId: deliveryRecord.delivery_id,
292
- durationMs: 250,
293
- observedLatencyClass: "instant",
294
- assessment: "within_posture"
295
- });
296
- }
297
- return result;
298
- }
299
-
300
- module.exports = {
301
- buildCallbackDeliveryState,
302
- completePendingExecution,
303
- createCommandResult,
304
- createDispute,
305
- createQuote,
306
- createRefund,
307
- createRemediationTicket,
308
- createRuntimeState,
309
- hydrateQuoteStates,
310
- hydratePendingExecutions,
311
- actOnDispute,
312
- actOnRefund,
313
- actOnRemediationTicket,
314
- listRecords
315
- };
1
+ "use strict";
2
+
3
+ const { createCommandArtifacts } = require("./commerce_artifacts");
4
+ const { createQuote, hydrateQuoteStates, markQuoteExecuted } = require("./commerce_quotes");
5
+ const { listRecords } = require("./record_queries");
6
+ const { createBsvSettlementRecord } = require("./settlement_bsv_live");
7
+ const {
8
+ actOnDispute,
9
+ actOnRefund,
10
+ actOnRemediationTicket,
11
+ createDispute,
12
+ createRefund,
13
+ createRemediationTicket
14
+ } = require("./commerce_cases");
15
+
16
+ function createRuntimeState() {
17
+ return {
18
+ quotes: new Map(),
19
+ checkoutPurchaseIntents: new Map(),
20
+ checkoutSessions: new Map(),
21
+ checkoutEvents: new Map(),
22
+ externalCreditGrants: new Map(),
23
+ accountAuthorityBindings: new Map(),
24
+ accountSpendCredentials: new Map(),
25
+ accountSpendCredentialsByToken: new Map(),
26
+ machineIdentityBindings: new Map(),
27
+ operatorParticipants: new Map(),
28
+ networkParticipants: new Map(),
29
+ runtimeBridgeDispatches: new Map(),
30
+ agentAccounts: new Map(),
31
+ transactions: new Map(),
32
+ receipts: new Map(),
33
+ paymentLedger: [],
34
+ bsvSettlementRecords: new Map(),
35
+ acceptedPaymentNonces: new Set(),
36
+ economicsBudgets: new Map(),
37
+ economicsAgents: new Map(),
38
+ economicsReceipts: new Map(),
39
+ economicsAllocations: [],
40
+ economicsRailCredits: [],
41
+ economicsEntitlements: new Map(),
42
+ economicsCreditSpends: [],
43
+ economicsUsageMeters: new Map(),
44
+ economicsInterpretationHandoffs: [],
45
+ economicsJobActions: [],
46
+ coordinationHandoffs: [],
47
+ zoneAdmissionCases: [],
48
+ deliveries: new Map(),
49
+ pendingExecutions: new Map(),
50
+ disputes: new Map(),
51
+ refunds: new Map(),
52
+ remediationTickets: new Map()
53
+ };
54
+ }
55
+
56
+ function buildDeliveryEvent(event, delivery, atIso, extra) {
57
+ return {
58
+ event,
59
+ at_iso: atIso,
60
+ status: delivery.status,
61
+ callback_url: delivery.callback_url || null,
62
+ output_ref: delivery.output_ref || null,
63
+ proof_ref: delivery.proof_ref || null,
64
+ ...(extra || {})
65
+ };
66
+ }
67
+
68
+ function buildCallbackDeliveryState(callbackUrl, deliveredAtIso, options = {}) {
69
+ if (!callbackUrl) return null;
70
+ const opts = options || {};
71
+ const initialStatus = opts.initial_status || (deliveredAtIso ? "queued" : "pending_execution");
72
+ return {
73
+ status: initialStatus,
74
+ attempt_count: 0,
75
+ max_attempts: null,
76
+ last_attempt_at_iso: null,
77
+ next_attempt_at_iso: deliveredAtIso || null,
78
+ delivered_at_iso: null,
79
+ failed_at_iso: null,
80
+ last_error: null,
81
+ last_response_status: null,
82
+ signature_mode: "hmac_sha256"
83
+ };
84
+ }
85
+
86
+ function completePendingExecution(state, transactionId) {
87
+ if (!transactionId || !state.pendingExecutions.has(transactionId) || !state.transactions.has(transactionId)) {
88
+ return state.transactions.get(transactionId) || null;
89
+ }
90
+ const pending = state.pendingExecutions.get(transactionId);
91
+ const current = state.transactions.get(transactionId);
92
+ if (!pending || !current || Date.now() < pending.readyAtMs) {
93
+ return current;
94
+ }
95
+
96
+ const completedAtIso = new Date(pending.readyAtMs).toISOString();
97
+ const next = {
98
+ transaction: {
99
+ ...current.transaction,
100
+ status: "completed",
101
+ completed_at_iso: completedAtIso,
102
+ timing: {
103
+ ...current.transaction.timing,
104
+ completed_at_iso: completedAtIso,
105
+ duration_ms: pending.durationMs,
106
+ observed_latency_class: pending.observedLatencyClass,
107
+ assessment: pending.assessment
108
+ },
109
+ execution: {
110
+ ...current.transaction.execution,
111
+ status: "completed"
112
+ },
113
+ remediation: {
114
+ ...current.transaction.remediation,
115
+ updated_at_iso: completedAtIso
116
+ }
117
+ },
118
+ receipt: {
119
+ ...current.receipt,
120
+ status: "completed",
121
+ created_at_iso: completedAtIso,
122
+ timing: {
123
+ ...current.receipt.timing,
124
+ completed_at_iso: completedAtIso,
125
+ duration_ms: pending.durationMs,
126
+ observed_latency_class: pending.observedLatencyClass,
127
+ assessment: pending.assessment
128
+ },
129
+ remediation: {
130
+ ...current.receipt.remediation,
131
+ updated_at_iso: completedAtIso
132
+ }
133
+ },
134
+ command: current.command
135
+ };
136
+
137
+ state.transactions.set(transactionId, next);
138
+ state.receipts.set(next.receipt.receipt_id, next);
139
+ if (pending.quoteId && state.quotes.has(pending.quoteId)) {
140
+ const quote = state.quotes.get(pending.quoteId);
141
+ state.quotes.set(pending.quoteId, {
142
+ ...quote,
143
+ status: "executed",
144
+ payment_recorded_at_iso: completedAtIso,
145
+ executed_at_iso: completedAtIso
146
+ });
147
+ }
148
+ if (pending.deliveryId && state.deliveries.has(pending.deliveryId)) {
149
+ const delivery = state.deliveries.get(pending.deliveryId);
150
+ const nextDelivery = {
151
+ ...delivery,
152
+ status: "delivered",
153
+ delivered_at_iso: completedAtIso,
154
+ receipt_id: next.receipt.receipt_id,
155
+ proof_ref: next.receipt.proof_ref,
156
+ attempt_count: (delivery.attempt_count || 0) + 1,
157
+ last_attempt_at_iso: completedAtIso,
158
+ history: [
159
+ ...(Array.isArray(delivery.history) ? delivery.history : []),
160
+ buildDeliveryEvent("delivered", { ...delivery, status: "delivered", proof_ref: next.receipt.proof_ref }, completedAtIso, {
161
+ attempt_number: (delivery.attempt_count || 0) + 1
162
+ })
163
+ ],
164
+ callback_delivery: delivery.callback_url
165
+ ? {
166
+ ...(delivery.callback_delivery || buildCallbackDeliveryState(delivery.callback_url, completedAtIso)),
167
+ status: "queued",
168
+ next_attempt_at_iso: completedAtIso,
169
+ last_error: null,
170
+ failed_at_iso: null
171
+ }
172
+ : null
173
+ };
174
+ state.deliveries.set(pending.deliveryId, nextDelivery);
175
+ }
176
+ state.pendingExecutions.delete(transactionId);
177
+ return next;
178
+ }
179
+
180
+ function hydratePendingExecutions(state) {
181
+ for (const transactionId of Array.from(state.pendingExecutions.keys())) {
182
+ completePendingExecution(state, transactionId);
183
+ }
184
+ }
185
+
186
+ function createCommandResult(state, payload, quote, options) {
187
+ const opts = options || {};
188
+ const deferredCompletion = payload && payload.defer_completion === true;
189
+ const { transaction, receipt, command } = createCommandArtifacts(payload, quote, {
190
+ deferredCompletion,
191
+ paymentVerification: opts.paymentVerification || null,
192
+ externalExecution: opts.externalExecution || null
193
+ });
194
+ const result = { transaction, receipt, command };
195
+ state.transactions.set(transaction.transaction_id, result);
196
+ state.receipts.set(receipt.receipt_id, result);
197
+ let paymentRecord = null;
198
+ if (!opts.skipPaymentLedger) {
199
+ paymentRecord = {
200
+ payment_id: `pay_${quote.quote_id}`,
201
+ quote_id: quote.quote_id,
202
+ transaction_id: transaction.transaction_id,
203
+ receipt_id: receipt.receipt_id,
204
+ account_id: quote.account_id,
205
+ amount_minor: quote.amount_minor,
206
+ currency: quote.currency,
207
+ settlement_adapter: quote.settlement_adapter,
208
+ settlement_integration_id: quote.settlement_integration_id || null,
209
+ recorded_at_iso: receipt.created_at_iso,
210
+ payment: transaction.payment,
211
+ settlement: transaction.settlement,
212
+ treasury: transaction.treasury,
213
+ default_path: transaction.default_path,
214
+ payment_verification: opts.paymentVerification
215
+ ? {
216
+ verification_mode: opts.paymentVerification.verification_mode || null,
217
+ wallet_id: opts.paymentVerification.wallet_id || null,
218
+ age_seconds: Number.isFinite(Number(opts.paymentVerification.age_seconds))
219
+ ? Number(opts.paymentVerification.age_seconds)
220
+ : null
221
+ }
222
+ : null
223
+ };
224
+ state.paymentLedger = [
225
+ paymentRecord,
226
+ ...(Array.isArray(state.paymentLedger) ? state.paymentLedger : [])
227
+ ].slice(0, 100);
228
+ const liveSettlement = createBsvSettlementRecord(state, transaction, receipt, paymentRecord);
229
+ if (liveSettlement) {
230
+ paymentRecord.live_settlement = {
231
+ settlement_id: liveSettlement.settlement_id,
232
+ status: liveSettlement.status,
233
+ finality_status: liveSettlement.finality_status,
234
+ txid: liveSettlement.txid,
235
+ rail: liveSettlement.rail
236
+ };
237
+ transaction.settlement.live = paymentRecord.live_settlement;
238
+ receipt.settlement.live = paymentRecord.live_settlement;
239
+ }
240
+ }
241
+ if (opts.creditSpend) {
242
+ transaction.credit_spend = opts.creditSpend;
243
+ receipt.credit_spend = opts.creditSpend;
244
+ }
245
+ const deliveryRecord = {
246
+ delivery_id: `delivery_${transaction.transaction_id}`,
247
+ transaction_id: transaction.transaction_id,
248
+ receipt_id: receipt.receipt_id,
249
+ quote_id: quote.quote_id,
250
+ account_id: quote.account_id,
251
+ callback_url: transaction.callback_url,
252
+ output_ref: transaction.output_ref,
253
+ proof_ref: receipt.proof_ref,
254
+ payment_id: paymentRecord ? paymentRecord.payment_id : null,
255
+ delivery_target_kind: transaction.callback_url ? "callback" : "direct",
256
+ status: deferredCompletion ? "pending_delivery" : "delivered",
257
+ created_at_iso: transaction.created_at_iso,
258
+ delivered_at_iso: deferredCompletion ? null : receipt.created_at_iso,
259
+ attempt_count: deferredCompletion ? 0 : 1,
260
+ last_attempt_at_iso: deferredCompletion ? null : receipt.created_at_iso,
261
+ callback_delivery: buildCallbackDeliveryState(
262
+ transaction.callback_url,
263
+ deferredCompletion ? null : receipt.created_at_iso,
264
+ {
265
+ initial_status: deferredCompletion ? "pending_execution" : "queued"
266
+ }
267
+ ),
268
+ history: [
269
+ buildDeliveryEvent("created", {
270
+ callback_url: transaction.callback_url,
271
+ output_ref: transaction.output_ref,
272
+ proof_ref: receipt.proof_ref,
273
+ status: deferredCompletion ? "pending_delivery" : "delivered"
274
+ }, transaction.created_at_iso),
275
+ ...(!deferredCompletion ? [
276
+ buildDeliveryEvent("delivered", {
277
+ callback_url: transaction.callback_url,
278
+ output_ref: transaction.output_ref,
279
+ proof_ref: receipt.proof_ref,
280
+ status: "delivered"
281
+ }, receipt.created_at_iso, { attempt_number: 1 })
282
+ ] : [])
283
+ ]
284
+ };
285
+ state.deliveries.set(deliveryRecord.delivery_id, deliveryRecord);
286
+ markQuoteExecuted(state, quote, result, paymentRecord, { deferredCompletion });
287
+ if (deferredCompletion) {
288
+ state.pendingExecutions.set(transaction.transaction_id, {
289
+ readyAtMs: Date.now() + 300,
290
+ quoteId: quote.quote_id,
291
+ deliveryId: deliveryRecord.delivery_id,
292
+ durationMs: 250,
293
+ observedLatencyClass: "instant",
294
+ assessment: "within_posture"
295
+ });
296
+ }
297
+ return result;
298
+ }
299
+
300
+ module.exports = {
301
+ buildCallbackDeliveryState,
302
+ completePendingExecution,
303
+ createCommandResult,
304
+ createDispute,
305
+ createQuote,
306
+ createRefund,
307
+ createRemediationTicket,
308
+ createRuntimeState,
309
+ hydrateQuoteStates,
310
+ hydratePendingExecutions,
311
+ actOnDispute,
312
+ actOnRefund,
313
+ actOnRemediationTicket,
314
+ listRecords
315
+ };