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.
- package/.env.example +67 -58
- package/ADAPTER_START_HERE.md +56 -56
- package/CARRIED_HANDOFF_DEMO.md +60 -60
- package/EXAMPLE_PATHS.md +53 -53
- package/FINAL_CONTRACT.md +498 -498
- package/LICENSE +201 -201
- package/NOTICE +3 -3
- package/PARTNER_READY_PATH.md +71 -71
- package/PUBLIC_DEMO_SCRIPT.md +78 -78
- package/README.md +6 -1
- package/REAL_PAYMENT_SETUP.md +32 -3
- package/RELEASE_NOTES.md +14 -14
- package/SERVICE_CONTRACT.md +419 -419
- package/START_HERE.md +1 -1
- package/SUPABASE_RUNTIME_STATE_SETUP.md +61 -61
- package/TERMINOLOGY.md +50 -50
- package/WHY_XYTARA_XOONYA.md +63 -63
- package/XT1_EXECUTION_TRUTH_STANDARD.md +78 -78
- package/XYTARA_ADAPTER_PROTOCOL_TRUTH_MODEL.md +75 -75
- package/XYTARA_AUTONOMOUS_ENTRY_MODEL.md +124 -124
- package/XYTARA_DEFAULT_PATH_MODEL.md +84 -84
- package/XYTARA_EXECUTION_TRUTH_MODEL.md +171 -171
- package/XYTARA_PAYMENT_RAIL_TRUTH_MODEL.md +68 -68
- package/adapters/AUTHORING_GUIDE.md +243 -243
- package/adapters/ONBOARDING_POSTURE.md +61 -61
- package/adapters/THIRD_PARTY_SUBMISSION_PROCESS.md +84 -84
- package/adapters/adapter-manifest.schema.json +283 -283
- package/adapters/examples/example-execution-adapter.js +61 -61
- package/adapters/examples/example-execution-adapter.manifest.json +81 -81
- package/adapters/examples/example-settlement-adapter.js +55 -55
- package/adapters/examples/example-settlement-adapter.manifest.json +78 -78
- package/adapters/examples/example-third-party-acp-registration.submission-bundle.json +124 -124
- package/adapters/examples/example-third-party-erc8004-registration.submission-bundle.json +121 -121
- package/adapters/examples/example-third-party-identity-registration.certification-pack.json +22 -22
- package/adapters/examples/example-third-party-identity-registration.record.json +26 -26
- package/adapters/examples/example-third-party-identity-registration.submission-bundle.json +126 -126
- package/adapters/examples/example-third-party-langchain-registration.submission-bundle.json +124 -124
- package/adapters/examples/example-third-party-mpp-registration.submission-bundle.json +120 -120
- package/adapters/examples/example-third-party-registration.certification-pack.json +22 -22
- package/adapters/examples/example-third-party-registration.record.json +28 -28
- package/adapters/examples/example-third-party-registration.submission-bundle.json +126 -126
- package/adapters/examples/example-third-party-settlement-registration.certification-pack.json +22 -22
- package/adapters/examples/example-third-party-settlement-registration.record.json +26 -26
- package/adapters/examples/example-third-party-settlement-registration.submission-bundle.json +127 -127
- package/adapters/examples/langchain-reference-execution-adapter.js +81 -81
- package/adapters/examples/langchain-reference-execution-adapter.manifest.json +79 -79
- package/adapters/examples/langgraph-reference-execution-adapter.js +81 -81
- package/adapters/examples/langgraph-reference-execution-adapter.manifest.json +79 -79
- package/adapters/examples/minimal-third-party-execution-adapter.js +61 -61
- package/adapters/examples/minimal-third-party-execution-adapter.manifest.json +79 -79
- package/adapters/examples/minimal-third-party-execution-registration.record.json +26 -26
- package/adapters/examples/minimal-third-party-execution.certification-pack.json +22 -22
- package/adapters/examples/minimal-third-party-execution.submission-bundle.json +126 -126
- package/adapters/integration-certification-pack.schema.json +82 -82
- package/adapters/integration-registration-record.schema.json +114 -114
- package/adapters/integration-submission-bundle-set.schema.json +39 -39
- package/adapters/integration-submission-bundle.schema.json +34 -34
- package/adapters/interfaces.js +56 -56
- package/bin/xytara-first-run.js +244 -244
- package/bin/xytara-release.js +1429 -1429
- package/bin/xytara-run.js +186 -186
- package/bin/xytara.js +80 -80
- package/client.js +3 -3
- package/examples/_demo_env.js +40 -0
- package/examples/adapter_review_walkthrough.js +54 -53
- package/examples/export_carried_handoff.js +81 -80
- package/examples/funded_runtime_walkthrough.js +71 -70
- package/examples/generated.carried-handoff.json +30 -0
- package/examples/partner_launch_walkthrough.js +44 -43
- package/examples/quickstart.js +3256 -3255
- package/fixtures/catalog.js +1134 -1134
- package/index.js +395 -395
- package/integrations/dispatch.js +276 -276
- package/integrations/registry-snapshot.schema.json +36 -36
- package/integrations/registry.js +2261 -2261
- package/integrations/views.js +28 -28
- package/lib/a2a_lane_contract.js +104 -104
- package/lib/a2c_lane_contract.js +111 -111
- package/lib/account_auth.js +518 -518
- package/lib/acp_lane_contract.js +54 -54
- package/lib/activity_audit_contract.js +322 -322
- package/lib/adapter_certification_contract.js +130 -130
- package/lib/adapter_depth_contract.js +156 -156
- package/lib/adapter_pack.js +118 -118
- package/lib/adapter_partner_pack.js +89 -89
- package/lib/adapter_promotion_pack.js +89 -89
- package/lib/adapter_protocol_truth_contract.js +229 -229
- package/lib/announcement_pack.js +61 -61
- package/lib/artifact_distribution_lane_contract.js +54 -54
- package/lib/asyncapi_contract.js +150 -150
- package/lib/auth_interop_contract.js +80 -80
- package/lib/authority_binding_lifecycle_contract.js +182 -182
- package/lib/autonomous_entry_contract.js +409 -409
- package/lib/bolt_lane_contract.js +55 -55
- package/lib/bolt_payment_front.js +172 -172
- package/lib/business_cockpit.js +378 -378
- package/lib/capability_execution_truth.js +272 -272
- package/lib/capability_registry.js +633 -633
- package/lib/catalog_contract.js +966 -966
- package/lib/catalog_family_model.js +193 -193
- package/lib/catalog_views.js +55 -55
- package/lib/checkout_event_security.js +142 -142
- package/lib/cloudevents_contract.js +80 -80
- package/lib/command_flow.js +411 -406
- package/lib/commerce_artifacts.js +503 -503
- package/lib/commerce_authority.js +449 -449
- package/lib/commerce_cases.js +317 -317
- package/lib/commerce_checkout.js +509 -509
- package/lib/commerce_client.js +7687 -7676
- package/lib/commerce_coordination.js +346 -346
- package/lib/commerce_economics.js +4017 -4016
- package/lib/commerce_identity.js +578 -578
- package/lib/commerce_quotes.js +237 -237
- package/lib/commerce_reports.js +14461 -14461
- package/lib/commerce_runtime.js +315 -315
- package/lib/commerce_shell.js +257 -257
- package/lib/crypto_agility_matrix.js +125 -125
- package/lib/default_path_contract.js +412 -412
- package/lib/delivery_summary_contract.js +95 -95
- package/lib/ecosystem_entry.js +64 -64
- package/lib/erc8004_lane_contract.js +65 -65
- package/lib/event_system_lane_contract.js +75 -75
- package/lib/execution_truth_contract.js +234 -234
- package/lib/external_credit_bridge.js +142 -142
- package/lib/external_execution_runtime.js +132 -132
- package/lib/feature_control_lane_contract.js +54 -54
- package/lib/first_run_conversion_contract.js +290 -290
- package/lib/framework_lane_contract.js +89 -89
- package/lib/framework_provider_promotion.js +235 -235
- package/lib/full_catalog_contract.js +525 -525
- package/lib/go_live_operator_pack.js +391 -391
- package/lib/http_transport.js +73 -73
- package/lib/identity_auth.js +175 -175
- package/lib/identity_interop_contract.js +82 -82
- package/lib/integration_matrix_contract.js +102 -102
- package/lib/l402_lane_contract.js +55 -55
- package/lib/l402_payment_front.js +192 -192
- package/lib/launch_narrative.js +53 -53
- package/lib/lifecycle_continuity_contract.js +115 -115
- package/lib/machine_identity_registry_contract.js +199 -199
- package/lib/major_rails_lane_contract.js +150 -150
- package/lib/market_lane_contract.js +467 -467
- package/lib/market_lane_depth_contract.js +182 -182
- package/lib/market_lane_promotion_contract.js +210 -210
- package/lib/market_lane_trace_contract.js +278 -278
- package/lib/mcp_lane_contract.js +137 -137
- package/lib/network_transport.js +110 -110
- package/lib/offline_verifiability_recovery_contract.js +155 -155
- package/lib/openapi_contract.js +296 -296
- package/lib/operational_receipt_contract.js +165 -165
- package/lib/operator_intelligence.js +407 -407
- package/lib/outreach_copy_pack.js +51 -51
- package/lib/outreach_message_pack.js +71 -71
- package/lib/outreach_proof.js +71 -71
- package/lib/outreach_target_pack.js +60 -60
- package/lib/partner_intelligence.js +105 -105
- package/lib/payment_config.js +239 -191
- package/lib/payment_front_registry.js +53 -53
- package/lib/payment_protocol_contract.js +165 -165
- package/lib/payment_rail_truth_contract.js +324 -324
- package/lib/payment_verification.js +312 -264
- package/lib/phase_10_closeout_pack.js +45 -45
- package/lib/phase_10_completion_pack.js +76 -76
- package/lib/phase_10_decision_record_pack.js +54 -54
- package/lib/phase_10_decision_resolution_pack.js +53 -53
- package/lib/phase_10_demand_signal_adapters_runtime_pack.js +74 -74
- package/lib/phase_10_ecosystem_backlog_triage_runtime_pack.js +74 -74
- package/lib/phase_10_freeze_baseline_pack.js +67 -67
- package/lib/phase_10_freeze_review_pack.js +64 -64
- package/lib/phase_10_gate_pack.js +57 -57
- package/lib/phase_10_long_tail_continuity_pack.js +80 -80
- package/lib/phase_10_long_tail_ecosystem_pack.js +66 -66
- package/lib/phase_10_niche_extension_registry_runtime_pack.js +74 -74
- package/lib/phase_1_claude_mcp_pack.js +60 -60
- package/lib/phase_1_claude_mcp_runtime_pack.js +52 -52
- package/lib/phase_1_ecosystem_pack.js +67 -67
- package/lib/phase_1_openai_codex_pack.js +60 -60
- package/lib/phase_1_openai_codex_runtime_pack.js +52 -52
- package/lib/phase_2_base_runtime_pack.js +71 -71
- package/lib/phase_2_base_usdc_runtime_pack.js +72 -72
- package/lib/phase_2_closeout_pack.js +65 -65
- package/lib/phase_2_completion_pack.js +113 -113
- package/lib/phase_2_decision_record_pack.js +66 -66
- package/lib/phase_2_decision_resolution_pack.js +69 -69
- package/lib/phase_2_eth_runtime_pack.js +70 -70
- package/lib/phase_2_evm_base_runtime_pack.js +73 -73
- package/lib/phase_2_evm_runtime_pack.js +71 -71
- package/lib/phase_2_flip_preview_pack.js +60 -60
- package/lib/phase_2_freeze_review_pack.js +99 -99
- package/lib/phase_2_gate_pack.js +77 -77
- package/lib/phase_2_payment_rails_pack.js +71 -71
- package/lib/phase_2_usdc_runtime_pack.js +71 -71
- package/lib/phase_3_brc_runtime_pack.js +81 -81
- package/lib/phase_3_bsv_teranode_runtime_pack.js +83 -83
- package/lib/phase_3_closeout_pack.js +62 -62
- package/lib/phase_3_completion_pack.js +94 -94
- package/lib/phase_3_decision_record_pack.js +64 -64
- package/lib/phase_3_decision_resolution_pack.js +69 -69
- package/lib/phase_3_freeze_baseline_pack.js +67 -67
- package/lib/phase_3_freeze_review_pack.js +80 -80
- package/lib/phase_3_gate_pack.js +76 -76
- package/lib/phase_3_metanet_runtime_pack.js +81 -81
- package/lib/phase_3_native_bsv_pack.js +91 -91
- package/lib/phase_3_native_continuity_pack.js +82 -82
- package/lib/phase_4_attestation_runtime_pack.js +75 -75
- package/lib/phase_4_closeout_pack.js +45 -45
- package/lib/phase_4_completion_pack.js +94 -94
- package/lib/phase_4_decision_record_pack.js +54 -54
- package/lib/phase_4_decision_resolution_pack.js +45 -45
- package/lib/phase_4_erc8004_runtime_pack.js +76 -76
- package/lib/phase_4_freeze_baseline_pack.js +67 -67
- package/lib/phase_4_freeze_review_pack.js +68 -68
- package/lib/phase_4_gate_pack.js +58 -58
- package/lib/phase_4_identity_registry_runtime_pack.js +75 -75
- package/lib/phase_4_identity_trust_pack.js +73 -73
- package/lib/phase_4_trust_continuity_pack.js +86 -86
- package/lib/phase_5_antelope_runtime_pack.js +76 -76
- package/lib/phase_5_closeout_pack.js +44 -44
- package/lib/phase_5_completion_pack.js +82 -82
- package/lib/phase_5_constellation_dag_runtime_pack.js +76 -76
- package/lib/phase_5_decision_record_pack.js +54 -54
- package/lib/phase_5_decision_resolution_pack.js +45 -45
- package/lib/phase_5_digibyte_dgb_runtime_pack.js +76 -76
- package/lib/phase_5_freeze_baseline_pack.js +67 -67
- package/lib/phase_5_freeze_review_pack.js +68 -68
- package/lib/phase_5_gate_pack.js +58 -58
- package/lib/phase_5_hedera_hbar_runtime_pack.js +76 -76
- package/lib/phase_5_kaspa_kas_runtime_pack.js +76 -76
- package/lib/phase_5_major_rails_continuity_pack.js +86 -86
- package/lib/phase_5_major_rails_pack.js +110 -110
- package/lib/phase_5_metal_runtime_pack.js +76 -76
- package/lib/phase_5_polkadot_dot_runtime_pack.js +76 -76
- package/lib/phase_5_proton_xpr_runtime_pack.js +76 -76
- package/lib/phase_5_solana_runtime_pack.js +76 -76
- package/lib/phase_6_autogen_runtime_pack.js +72 -72
- package/lib/phase_6_closeout_pack.js +46 -46
- package/lib/phase_6_completion_pack.js +77 -77
- package/lib/phase_6_decision_record_pack.js +54 -54
- package/lib/phase_6_decision_resolution_pack.js +53 -53
- package/lib/phase_6_framework_continuity_pack.js +81 -81
- package/lib/phase_6_framework_runtime_pack.js +68 -68
- package/lib/phase_6_freeze_baseline_pack.js +68 -68
- package/lib/phase_6_freeze_review_pack.js +65 -65
- package/lib/phase_6_gate_pack.js +59 -59
- package/lib/phase_6_langchain_runtime_pack.js +72 -72
- package/lib/phase_6_langgraph_runtime_pack.js +72 -72
- package/lib/phase_6_semantic_kernel_runtime_pack.js +72 -72
- package/lib/phase_7_closeout_pack.js +45 -45
- package/lib/phase_7_completion_pack.js +85 -85
- package/lib/phase_7_decision_record_pack.js +53 -53
- package/lib/phase_7_decision_resolution_pack.js +53 -53
- package/lib/phase_7_event_system_continuity_pack.js +89 -89
- package/lib/phase_7_event_system_pack.js +76 -76
- package/lib/phase_7_freeze_baseline_pack.js +74 -74
- package/lib/phase_7_freeze_review_pack.js +65 -65
- package/lib/phase_7_gate_pack.js +58 -58
- package/lib/phase_7_kafka_runtime_pack.js +74 -74
- package/lib/phase_7_mqtt_runtime_pack.js +74 -74
- package/lib/phase_7_nats_runtime_pack.js +74 -74
- package/lib/phase_7_webhook_event_bus_runtime_pack.js +74 -74
- package/lib/phase_8_closeout_pack.js +46 -46
- package/lib/phase_8_completion_pack.js +82 -82
- package/lib/phase_8_decision_record_pack.js +54 -54
- package/lib/phase_8_decision_resolution_pack.js +53 -53
- package/lib/phase_8_external_receipt_import_runtime_pack.js +74 -74
- package/lib/phase_8_external_result_import_runtime_pack.js +74 -74
- package/lib/phase_8_freeze_baseline_pack.js +71 -71
- package/lib/phase_8_freeze_review_pack.js +64 -64
- package/lib/phase_8_gate_pack.js +58 -58
- package/lib/phase_8_proof_bridge_continuity_pack.js +86 -86
- package/lib/phase_8_proof_bridges_pack.js +72 -72
- package/lib/phase_8_proof_bundle_normalization_runtime_pack.js +74 -74
- package/lib/phase_9_closeout_pack.js +46 -46
- package/lib/phase_9_completion_pack.js +82 -82
- package/lib/phase_9_custody_refs_runtime_pack.js +74 -74
- package/lib/phase_9_decision_record_pack.js +54 -54
- package/lib/phase_9_decision_resolution_pack.js +53 -53
- package/lib/phase_9_freeze_baseline_pack.js +71 -71
- package/lib/phase_9_freeze_review_pack.js +64 -64
- package/lib/phase_9_gate_pack.js +58 -58
- package/lib/phase_9_operator_accounting_bridges_runtime_pack.js +74 -74
- package/lib/phase_9_treasury_connectivity_pack.js +72 -72
- package/lib/phase_9_treasury_continuity_pack.js +86 -86
- package/lib/phase_9_treasury_destinations_runtime_pack.js +74 -74
- package/lib/phase_program_pack.js +120 -120
- package/lib/pricing_optimization_contract.js +775 -775
- package/lib/protocol_lane_contract.js +117 -117
- package/lib/provenance_lane_contract.js +54 -54
- package/lib/provider_lane_contract.js +240 -240
- package/lib/provider_runtime_journey_contract.js +183 -183
- package/lib/public_surface_policy_contract.js +111 -111
- package/lib/publish_plan.js +51 -51
- package/lib/record_queries.js +48 -48
- package/lib/release_candidate.js +50 -50
- package/lib/release_center.js +1093 -1093
- package/lib/release_history.js +205 -205
- package/lib/release_manifest.js +113 -113
- package/lib/release_pack.js +453 -453
- package/lib/request_rate_limit.js +144 -144
- package/lib/resource_views.js +31 -31
- package/lib/revenue_launch_path_contract.js +326 -326
- package/lib/route_matchers.js +34 -34
- package/lib/route_params.js +19 -19
- package/lib/runtime_bridge.js +124 -124
- package/lib/runtime_operations_worker.js +282 -282
- package/lib/runtime_state_store.js +354 -354
- package/lib/settlement_lane_contract.js +111 -111
- package/lib/shared_signals_lane_contract.js +54 -54
- package/lib/signed_audit_provenance_contract.js +83 -83
- package/lib/soft_launch_pack.js +78 -78
- package/lib/stablecoin_lane_contract.js +76 -76
- package/lib/stripe_mpp_lane_contract.js +96 -96
- package/lib/stripe_mpp_payment_front.js +158 -158
- package/lib/telemetry_lane_contract.js +54 -54
- package/lib/treasury_destinations_contract.js +764 -764
- package/lib/treasury_egress_policy_contract.js +91 -91
- package/lib/treasury_lane_contract.js +84 -84
- package/lib/trust_portability_boundary_contract.js +72 -72
- package/lib/x402_facilitator.js +155 -0
- package/lib/x402_lane_contract.js +118 -118
- package/package.json +106 -105
- package/scripts/registry_cli.js +275 -275
- package/scripts/verify_adapters.js +554 -554
- package/scripts/verify_all.js +4962 -4962
- package/scripts/verify_control_plane_contracts.js +34 -34
- package/scripts/verify_control_plane_routes.js +70 -70
- package/scripts/verify_delivery_summary.js +112 -112
- package/scripts/verify_examples.js +19 -19
- package/scripts/verify_first_run_conversions.js +81 -81
- package/scripts/verify_framework_provider_promotion.js +152 -152
- package/scripts/verify_full_catalog.js +174 -174
- package/scripts/verify_integrations.js +620 -620
- package/scripts/verify_lifecycle_continuity.js +96 -96
- package/scripts/verify_market_lane_depth.js +94 -94
- package/scripts/verify_market_lane_promotion.js +103 -103
- package/scripts/verify_market_lane_traces.js +98 -98
- package/scripts/verify_market_lanes.js +102 -102
- package/scripts/verify_operator_observability_boundary.js +83 -83
- package/scripts/verify_pricing_experiment_plan.js +124 -124
- package/scripts/verify_provider_runtime_breadth.js +109 -109
- package/scripts/verify_provider_runtime_journeys.js +111 -111
- package/scripts/verify_revenue_launch_paths.js +105 -105
- package/scripts/verify_runtime_durability.js +52 -52
- package/scripts/verify_service.js +15410 -15250
- package/scripts/verify_tooling.js +1412 -1412
- package/scripts/verify_treasury_public_boundary.js +97 -97
- package/scripts/verify_x402_facilitator.js +174 -0
- package/server.js +11117 -11006
- package/.env.production.checklist +0 -77
- package/.env.production.template +0 -54
- package/.github/workflows/publish-mcp-executor.yml +0 -43
- package/ADAPTER_PARTNER_PATH.md +0 -47
- package/ADAPTER_PROMOTION_START_HERE.md +0 -44
- package/BOLT_BINDINGS.production.worksheet.json +0 -31
- package/EXECUTION_TARGETS.production.worksheet.json +0 -73
- package/GO_LIVE_OPERATOR_PACK.md +0 -412
- package/L402_BINDINGS.production.worksheet.json +0 -30
- package/OPERATIONS_RUNBOOK.md +0 -115
- package/OPERATOR_START_HERE.md +0 -63
- package/OUTREACH_MESSAGES.md +0 -19
- package/OUTREACH_START_HERE.md +0 -36
- package/PRODUCTION_MANUAL_CLOSEOUT_SEQUENCE.md +0 -172
- package/PROGRAM_COMPLETE_RELEASE.md +0 -63
- package/PROGRAM_STATUS.md +0 -57
- package/PUBLISH_PLAN.md +0 -26
- package/RELEASE_CHECKLIST.md +0 -16
- package/SOFT_LAUNCH_KIT.md +0 -47
- package/services/mcp-execution-target/DISCOVERY_REGISTRY_PLAYBOOK.md +0 -141
- package/services/mcp-execution-target/README.md +0 -319
- package/services/mcp-execution-target/package.json +0 -14
- package/services/mcp-execution-target/server.js +0 -1031
- package/services/mcp-execution-target/server.json +0 -16
- package/services/mcp-execution-target/verify.js +0 -308
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const assert = require("assert");
|
|
4
|
-
const {
|
|
5
|
-
summarizeAdapterCertificationContractPack,
|
|
6
|
-
summarizeTrustPortabilityBoundaryContractPack,
|
|
7
|
-
summarizeSignedAuditProvenanceContractPack
|
|
8
|
-
} = require("../index.js");
|
|
9
|
-
|
|
10
|
-
function main() {
|
|
11
|
-
const adapterCertification = summarizeAdapterCertificationContractPack();
|
|
12
|
-
const trustPortabilityBoundary = summarizeTrustPortabilityBoundaryContractPack();
|
|
13
|
-
const signedAuditProvenance = summarizeSignedAuditProvenanceContractPack();
|
|
14
|
-
|
|
15
|
-
assert.strictEqual(adapterCertification.ok, true, "adapter certification summary failed");
|
|
16
|
-
assert.strictEqual(adapterCertification.certification_state_count >= 5, true, "adapter certification state count mismatch");
|
|
17
|
-
assert.strictEqual(adapterCertification.certification_front_count >= 8, true, "adapter certification front count mismatch");
|
|
18
|
-
assert.strictEqual(adapterCertification.required_test_category_count >= 8, true, "adapter certification test category count mismatch");
|
|
19
|
-
|
|
20
|
-
assert.strictEqual(trustPortabilityBoundary.ok, true, "trust portability boundary summary failed");
|
|
21
|
-
assert.strictEqual(trustPortabilityBoundary.portable_axis_count >= 4, true, "trust portability axis count mismatch");
|
|
22
|
-
assert.strictEqual(trustPortabilityBoundary.non_claim_count >= 5, true, "trust portability non-claim count mismatch");
|
|
23
|
-
assert.strictEqual(trustPortabilityBoundary.evidence_requirement_count >= 5, true, "trust portability evidence requirement count mismatch");
|
|
24
|
-
|
|
25
|
-
assert.strictEqual(signedAuditProvenance.ok, true, "signed audit provenance summary failed");
|
|
26
|
-
assert.strictEqual(signedAuditProvenance.evidence_surface_count >= 6, true, "signed audit provenance surface count mismatch");
|
|
27
|
-
assert.strictEqual(signedAuditProvenance.required_field_count >= 7, true, "signed audit provenance required field count mismatch");
|
|
28
|
-
assert.strictEqual(signedAuditProvenance.export_rule_count >= 4, true, "signed audit provenance export rule count mismatch");
|
|
29
|
-
|
|
30
|
-
console.log("xytara verify:control-plane-contracts passed");
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
main();
|
|
34
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const assert = require("assert");
|
|
4
|
+
const {
|
|
5
|
+
summarizeAdapterCertificationContractPack,
|
|
6
|
+
summarizeTrustPortabilityBoundaryContractPack,
|
|
7
|
+
summarizeSignedAuditProvenanceContractPack
|
|
8
|
+
} = require("../index.js");
|
|
9
|
+
|
|
10
|
+
function main() {
|
|
11
|
+
const adapterCertification = summarizeAdapterCertificationContractPack();
|
|
12
|
+
const trustPortabilityBoundary = summarizeTrustPortabilityBoundaryContractPack();
|
|
13
|
+
const signedAuditProvenance = summarizeSignedAuditProvenanceContractPack();
|
|
14
|
+
|
|
15
|
+
assert.strictEqual(adapterCertification.ok, true, "adapter certification summary failed");
|
|
16
|
+
assert.strictEqual(adapterCertification.certification_state_count >= 5, true, "adapter certification state count mismatch");
|
|
17
|
+
assert.strictEqual(adapterCertification.certification_front_count >= 8, true, "adapter certification front count mismatch");
|
|
18
|
+
assert.strictEqual(adapterCertification.required_test_category_count >= 8, true, "adapter certification test category count mismatch");
|
|
19
|
+
|
|
20
|
+
assert.strictEqual(trustPortabilityBoundary.ok, true, "trust portability boundary summary failed");
|
|
21
|
+
assert.strictEqual(trustPortabilityBoundary.portable_axis_count >= 4, true, "trust portability axis count mismatch");
|
|
22
|
+
assert.strictEqual(trustPortabilityBoundary.non_claim_count >= 5, true, "trust portability non-claim count mismatch");
|
|
23
|
+
assert.strictEqual(trustPortabilityBoundary.evidence_requirement_count >= 5, true, "trust portability evidence requirement count mismatch");
|
|
24
|
+
|
|
25
|
+
assert.strictEqual(signedAuditProvenance.ok, true, "signed audit provenance summary failed");
|
|
26
|
+
assert.strictEqual(signedAuditProvenance.evidence_surface_count >= 6, true, "signed audit provenance surface count mismatch");
|
|
27
|
+
assert.strictEqual(signedAuditProvenance.required_field_count >= 7, true, "signed audit provenance required field count mismatch");
|
|
28
|
+
assert.strictEqual(signedAuditProvenance.export_rule_count >= 4, true, "signed audit provenance export rule count mismatch");
|
|
29
|
+
|
|
30
|
+
console.log("xytara verify:control-plane-contracts passed");
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
main();
|
|
34
|
+
|
|
@@ -1,70 +1,70 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const assert = require("assert");
|
|
4
|
-
const { createServer } = require("../server.js");
|
|
5
|
-
|
|
6
|
-
async function getJson(baseUrl, route) {
|
|
7
|
-
const response = await fetch(`${baseUrl}${route}`);
|
|
8
|
-
return {
|
|
9
|
-
status: response.status,
|
|
10
|
-
json: await response.json()
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
async function main() {
|
|
15
|
-
const server = createServer();
|
|
16
|
-
await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
|
|
17
|
-
const address = server.address();
|
|
18
|
-
const baseUrl = `http://127.0.0.1:${address.port}`;
|
|
19
|
-
|
|
20
|
-
try {
|
|
21
|
-
const adapterCertification = await getJson(baseUrl, "/v1/adapter-certification");
|
|
22
|
-
assert.strictEqual(adapterCertification.status, 200, "adapter certification route failed");
|
|
23
|
-
assert.strictEqual(adapterCertification.json.category, "naxytra-adapter-certification-contract", "adapter certification category mismatch");
|
|
24
|
-
assert.strictEqual(adapterCertification.json.certification_fronts.length >= 8, true, "adapter certification front count mismatch");
|
|
25
|
-
|
|
26
|
-
const adapterCertificationSummary = await getJson(baseUrl, "/v1/adapter-certification/summary");
|
|
27
|
-
assert.strictEqual(adapterCertificationSummary.status, 200, "adapter certification summary route failed");
|
|
28
|
-
assert.strictEqual(adapterCertificationSummary.json.certification_state_count >= 5, true, "adapter certification summary count mismatch");
|
|
29
|
-
|
|
30
|
-
const adapterCertificationDetail = await getJson(baseUrl, "/v1/adapter-certification/protocol_front");
|
|
31
|
-
assert.strictEqual(adapterCertificationDetail.status, 200, "adapter certification detail route failed");
|
|
32
|
-
assert.strictEqual(adapterCertificationDetail.json.front.front_id, "protocol_front", "adapter certification detail mismatch");
|
|
33
|
-
|
|
34
|
-
const trustBoundary = await getJson(baseUrl, "/v1/trust-portability-boundary");
|
|
35
|
-
assert.strictEqual(trustBoundary.status, 200, "trust portability boundary route failed");
|
|
36
|
-
assert.strictEqual(trustBoundary.json.category, "naxytra-trust-portability-boundary-contract", "trust portability boundary category mismatch");
|
|
37
|
-
assert.strictEqual(trustBoundary.json.portable_axes.length >= 4, true, "trust portability boundary axis count mismatch");
|
|
38
|
-
|
|
39
|
-
const trustBoundarySummary = await getJson(baseUrl, "/v1/trust-portability-boundary/summary");
|
|
40
|
-
assert.strictEqual(trustBoundarySummary.status, 200, "trust portability boundary summary route failed");
|
|
41
|
-
assert.strictEqual(trustBoundarySummary.json.portable_axis_count >= 4, true, "trust portability boundary summary count mismatch");
|
|
42
|
-
|
|
43
|
-
const trustBoundaryDetail = await getJson(baseUrl, "/v1/trust-portability-boundary/agent_identity_portability");
|
|
44
|
-
assert.strictEqual(trustBoundaryDetail.status, 200, "trust portability boundary detail route failed");
|
|
45
|
-
assert.strictEqual(trustBoundaryDetail.json.axis.axis_id, "agent_identity_portability", "trust portability boundary detail mismatch");
|
|
46
|
-
|
|
47
|
-
const signedAudit = await getJson(baseUrl, "/v1/signed-audit-provenance");
|
|
48
|
-
assert.strictEqual(signedAudit.status, 200, "signed audit provenance route failed");
|
|
49
|
-
assert.strictEqual(signedAudit.json.category, "naxytra-signed-audit-provenance-contract", "signed audit provenance category mismatch");
|
|
50
|
-
assert.strictEqual(signedAudit.json.evidence_surfaces.length >= 6, true, "signed audit provenance evidence surface count mismatch");
|
|
51
|
-
|
|
52
|
-
const signedAuditSummary = await getJson(baseUrl, "/v1/signed-audit-provenance/summary");
|
|
53
|
-
assert.strictEqual(signedAuditSummary.status, 200, "signed audit provenance summary route failed");
|
|
54
|
-
assert.strictEqual(signedAuditSummary.json.evidence_surface_count >= 6, true, "signed audit provenance summary count mismatch");
|
|
55
|
-
|
|
56
|
-
const signedAuditDetail = await getJson(baseUrl, "/v1/signed-audit-provenance/release_provenance");
|
|
57
|
-
assert.strictEqual(signedAuditDetail.status, 200, "signed audit provenance detail route failed");
|
|
58
|
-
assert.strictEqual(signedAuditDetail.json.surface.surface_id, "release_provenance", "signed audit provenance detail mismatch");
|
|
59
|
-
} finally {
|
|
60
|
-
await new Promise((resolve) => server.close(resolve));
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
console.log("xytara verify:control-plane-routes passed");
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
main().catch((error) => {
|
|
67
|
-
console.error(error);
|
|
68
|
-
process.exit(1);
|
|
69
|
-
});
|
|
70
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const assert = require("assert");
|
|
4
|
+
const { createServer } = require("../server.js");
|
|
5
|
+
|
|
6
|
+
async function getJson(baseUrl, route) {
|
|
7
|
+
const response = await fetch(`${baseUrl}${route}`);
|
|
8
|
+
return {
|
|
9
|
+
status: response.status,
|
|
10
|
+
json: await response.json()
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
async function main() {
|
|
15
|
+
const server = createServer();
|
|
16
|
+
await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
|
|
17
|
+
const address = server.address();
|
|
18
|
+
const baseUrl = `http://127.0.0.1:${address.port}`;
|
|
19
|
+
|
|
20
|
+
try {
|
|
21
|
+
const adapterCertification = await getJson(baseUrl, "/v1/adapter-certification");
|
|
22
|
+
assert.strictEqual(adapterCertification.status, 200, "adapter certification route failed");
|
|
23
|
+
assert.strictEqual(adapterCertification.json.category, "naxytra-adapter-certification-contract", "adapter certification category mismatch");
|
|
24
|
+
assert.strictEqual(adapterCertification.json.certification_fronts.length >= 8, true, "adapter certification front count mismatch");
|
|
25
|
+
|
|
26
|
+
const adapterCertificationSummary = await getJson(baseUrl, "/v1/adapter-certification/summary");
|
|
27
|
+
assert.strictEqual(adapterCertificationSummary.status, 200, "adapter certification summary route failed");
|
|
28
|
+
assert.strictEqual(adapterCertificationSummary.json.certification_state_count >= 5, true, "adapter certification summary count mismatch");
|
|
29
|
+
|
|
30
|
+
const adapterCertificationDetail = await getJson(baseUrl, "/v1/adapter-certification/protocol_front");
|
|
31
|
+
assert.strictEqual(adapterCertificationDetail.status, 200, "adapter certification detail route failed");
|
|
32
|
+
assert.strictEqual(adapterCertificationDetail.json.front.front_id, "protocol_front", "adapter certification detail mismatch");
|
|
33
|
+
|
|
34
|
+
const trustBoundary = await getJson(baseUrl, "/v1/trust-portability-boundary");
|
|
35
|
+
assert.strictEqual(trustBoundary.status, 200, "trust portability boundary route failed");
|
|
36
|
+
assert.strictEqual(trustBoundary.json.category, "naxytra-trust-portability-boundary-contract", "trust portability boundary category mismatch");
|
|
37
|
+
assert.strictEqual(trustBoundary.json.portable_axes.length >= 4, true, "trust portability boundary axis count mismatch");
|
|
38
|
+
|
|
39
|
+
const trustBoundarySummary = await getJson(baseUrl, "/v1/trust-portability-boundary/summary");
|
|
40
|
+
assert.strictEqual(trustBoundarySummary.status, 200, "trust portability boundary summary route failed");
|
|
41
|
+
assert.strictEqual(trustBoundarySummary.json.portable_axis_count >= 4, true, "trust portability boundary summary count mismatch");
|
|
42
|
+
|
|
43
|
+
const trustBoundaryDetail = await getJson(baseUrl, "/v1/trust-portability-boundary/agent_identity_portability");
|
|
44
|
+
assert.strictEqual(trustBoundaryDetail.status, 200, "trust portability boundary detail route failed");
|
|
45
|
+
assert.strictEqual(trustBoundaryDetail.json.axis.axis_id, "agent_identity_portability", "trust portability boundary detail mismatch");
|
|
46
|
+
|
|
47
|
+
const signedAudit = await getJson(baseUrl, "/v1/signed-audit-provenance");
|
|
48
|
+
assert.strictEqual(signedAudit.status, 200, "signed audit provenance route failed");
|
|
49
|
+
assert.strictEqual(signedAudit.json.category, "naxytra-signed-audit-provenance-contract", "signed audit provenance category mismatch");
|
|
50
|
+
assert.strictEqual(signedAudit.json.evidence_surfaces.length >= 6, true, "signed audit provenance evidence surface count mismatch");
|
|
51
|
+
|
|
52
|
+
const signedAuditSummary = await getJson(baseUrl, "/v1/signed-audit-provenance/summary");
|
|
53
|
+
assert.strictEqual(signedAuditSummary.status, 200, "signed audit provenance summary route failed");
|
|
54
|
+
assert.strictEqual(signedAuditSummary.json.evidence_surface_count >= 6, true, "signed audit provenance summary count mismatch");
|
|
55
|
+
|
|
56
|
+
const signedAuditDetail = await getJson(baseUrl, "/v1/signed-audit-provenance/release_provenance");
|
|
57
|
+
assert.strictEqual(signedAuditDetail.status, 200, "signed audit provenance detail route failed");
|
|
58
|
+
assert.strictEqual(signedAuditDetail.json.surface.surface_id, "release_provenance", "signed audit provenance detail mismatch");
|
|
59
|
+
} finally {
|
|
60
|
+
await new Promise((resolve) => server.close(resolve));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
console.log("xytara verify:control-plane-routes passed");
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
main().catch((error) => {
|
|
67
|
+
console.error(error);
|
|
68
|
+
process.exit(1);
|
|
69
|
+
});
|
|
70
|
+
|
|
@@ -1,112 +1,112 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const assert = require("assert");
|
|
4
|
-
const { createServer } = require("../server");
|
|
5
|
-
const {
|
|
6
|
-
buildDeliverySummaryPack,
|
|
7
|
-
summarizeDeliveryState
|
|
8
|
-
} = require("../lib/delivery_summary_contract");
|
|
9
|
-
|
|
10
|
-
async function getJson(baseUrl, routePath) {
|
|
11
|
-
const response = await fetch(`${baseUrl}${routePath}`);
|
|
12
|
-
return {
|
|
13
|
-
status: response.status,
|
|
14
|
-
json: await response.json()
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
async function main() {
|
|
19
|
-
const summary = summarizeDeliveryState({
|
|
20
|
-
deliveries: new Map([
|
|
21
|
-
[
|
|
22
|
-
"delivery_1",
|
|
23
|
-
{
|
|
24
|
-
delivery_id: "delivery_1",
|
|
25
|
-
status: "delivered",
|
|
26
|
-
callback_url: "https://agent.example/callbacks/demo",
|
|
27
|
-
callback_delivery: {
|
|
28
|
-
status: "delivered",
|
|
29
|
-
signature_mode: "hmac_sha256"
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
],
|
|
33
|
-
[
|
|
34
|
-
"delivery_2",
|
|
35
|
-
{
|
|
36
|
-
delivery_id: "delivery_2",
|
|
37
|
-
status: "pending_delivery",
|
|
38
|
-
callback_url: null,
|
|
39
|
-
callback_delivery: null
|
|
40
|
-
}
|
|
41
|
-
],
|
|
42
|
-
[
|
|
43
|
-
"delivery_3",
|
|
44
|
-
{
|
|
45
|
-
delivery_id: "delivery_3",
|
|
46
|
-
status: "delivered",
|
|
47
|
-
callback_url: "https://agent.example/callbacks/retry",
|
|
48
|
-
callback_delivery: {
|
|
49
|
-
status: "retrying",
|
|
50
|
-
signature_mode: "hmac_sha256"
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
]
|
|
54
|
-
])
|
|
55
|
-
});
|
|
56
|
-
const pack = buildDeliverySummaryPack({
|
|
57
|
-
deliveries: new Map([
|
|
58
|
-
[
|
|
59
|
-
"delivery_1",
|
|
60
|
-
{
|
|
61
|
-
delivery_id: "delivery_1",
|
|
62
|
-
status: "delivered",
|
|
63
|
-
callback_url: "https://agent.example/callbacks/demo",
|
|
64
|
-
callback_delivery: {
|
|
65
|
-
status: "delivered",
|
|
66
|
-
signature_mode: "hmac_sha256"
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
]
|
|
70
|
-
])
|
|
71
|
-
});
|
|
72
|
-
|
|
73
|
-
assert.strictEqual(pack.ok, true, "delivery summary pack should be ok");
|
|
74
|
-
assert.strictEqual(summary.delivery_count, 3, "delivery count mismatch");
|
|
75
|
-
assert.strictEqual(summary.callback_delivery_count, 2, "callback delivery count mismatch");
|
|
76
|
-
assert.strictEqual(summary.delivered_delivery_count, 2, "delivered count mismatch");
|
|
77
|
-
assert.strictEqual(summary.retrying_callback_delivery_count, 1, "retrying callback count mismatch");
|
|
78
|
-
assert.strictEqual(summary.signed_callback_delivery_count, 2, "signed callback count mismatch");
|
|
79
|
-
|
|
80
|
-
const server = createServer();
|
|
81
|
-
await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
|
|
82
|
-
const address = server.address();
|
|
83
|
-
const baseUrl = `http://127.0.0.1:${address.port}`;
|
|
84
|
-
|
|
85
|
-
try {
|
|
86
|
-
const response = await getJson(baseUrl, "/v1/deliveries/summary");
|
|
87
|
-
assert.strictEqual(response.status, 200, "delivery summary route failed");
|
|
88
|
-
assert.strictEqual(response.json.ok, true, "delivery summary ok missing");
|
|
89
|
-
assert.strictEqual(response.json.delivery_count >= 0, true, "delivery summary count missing");
|
|
90
|
-
assert.strictEqual(typeof response.json.callback_delivery_enabled, "boolean", "delivery summary callback posture missing");
|
|
91
|
-
} finally {
|
|
92
|
-
await new Promise((resolve) => server.close(resolve));
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
console.log(JSON.stringify({
|
|
96
|
-
ok: true,
|
|
97
|
-
product: "xytara",
|
|
98
|
-
category: "machine-commerce-delivery-summary-verification",
|
|
99
|
-
verification_version: "xytara-delivery-summary-verification-v1",
|
|
100
|
-
delivery_count: summary.delivery_count,
|
|
101
|
-
callback_delivery_count: summary.callback_delivery_count,
|
|
102
|
-
delivered_delivery_count: summary.delivered_delivery_count,
|
|
103
|
-
retrying_callback_delivery_count: summary.retrying_callback_delivery_count,
|
|
104
|
-
signed_callback_delivery_count: summary.signed_callback_delivery_count,
|
|
105
|
-
boundary: "callback_delivery_posture_should_be_publicly_inspectable_and_counted"
|
|
106
|
-
}, null, 2));
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
main().catch((error) => {
|
|
110
|
-
console.error(error);
|
|
111
|
-
process.exit(1);
|
|
112
|
-
});
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const assert = require("assert");
|
|
4
|
+
const { createServer } = require("../server");
|
|
5
|
+
const {
|
|
6
|
+
buildDeliverySummaryPack,
|
|
7
|
+
summarizeDeliveryState
|
|
8
|
+
} = require("../lib/delivery_summary_contract");
|
|
9
|
+
|
|
10
|
+
async function getJson(baseUrl, routePath) {
|
|
11
|
+
const response = await fetch(`${baseUrl}${routePath}`);
|
|
12
|
+
return {
|
|
13
|
+
status: response.status,
|
|
14
|
+
json: await response.json()
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async function main() {
|
|
19
|
+
const summary = summarizeDeliveryState({
|
|
20
|
+
deliveries: new Map([
|
|
21
|
+
[
|
|
22
|
+
"delivery_1",
|
|
23
|
+
{
|
|
24
|
+
delivery_id: "delivery_1",
|
|
25
|
+
status: "delivered",
|
|
26
|
+
callback_url: "https://agent.example/callbacks/demo",
|
|
27
|
+
callback_delivery: {
|
|
28
|
+
status: "delivered",
|
|
29
|
+
signature_mode: "hmac_sha256"
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
[
|
|
34
|
+
"delivery_2",
|
|
35
|
+
{
|
|
36
|
+
delivery_id: "delivery_2",
|
|
37
|
+
status: "pending_delivery",
|
|
38
|
+
callback_url: null,
|
|
39
|
+
callback_delivery: null
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
[
|
|
43
|
+
"delivery_3",
|
|
44
|
+
{
|
|
45
|
+
delivery_id: "delivery_3",
|
|
46
|
+
status: "delivered",
|
|
47
|
+
callback_url: "https://agent.example/callbacks/retry",
|
|
48
|
+
callback_delivery: {
|
|
49
|
+
status: "retrying",
|
|
50
|
+
signature_mode: "hmac_sha256"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
])
|
|
55
|
+
});
|
|
56
|
+
const pack = buildDeliverySummaryPack({
|
|
57
|
+
deliveries: new Map([
|
|
58
|
+
[
|
|
59
|
+
"delivery_1",
|
|
60
|
+
{
|
|
61
|
+
delivery_id: "delivery_1",
|
|
62
|
+
status: "delivered",
|
|
63
|
+
callback_url: "https://agent.example/callbacks/demo",
|
|
64
|
+
callback_delivery: {
|
|
65
|
+
status: "delivered",
|
|
66
|
+
signature_mode: "hmac_sha256"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
])
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
assert.strictEqual(pack.ok, true, "delivery summary pack should be ok");
|
|
74
|
+
assert.strictEqual(summary.delivery_count, 3, "delivery count mismatch");
|
|
75
|
+
assert.strictEqual(summary.callback_delivery_count, 2, "callback delivery count mismatch");
|
|
76
|
+
assert.strictEqual(summary.delivered_delivery_count, 2, "delivered count mismatch");
|
|
77
|
+
assert.strictEqual(summary.retrying_callback_delivery_count, 1, "retrying callback count mismatch");
|
|
78
|
+
assert.strictEqual(summary.signed_callback_delivery_count, 2, "signed callback count mismatch");
|
|
79
|
+
|
|
80
|
+
const server = createServer();
|
|
81
|
+
await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
|
|
82
|
+
const address = server.address();
|
|
83
|
+
const baseUrl = `http://127.0.0.1:${address.port}`;
|
|
84
|
+
|
|
85
|
+
try {
|
|
86
|
+
const response = await getJson(baseUrl, "/v1/deliveries/summary");
|
|
87
|
+
assert.strictEqual(response.status, 200, "delivery summary route failed");
|
|
88
|
+
assert.strictEqual(response.json.ok, true, "delivery summary ok missing");
|
|
89
|
+
assert.strictEqual(response.json.delivery_count >= 0, true, "delivery summary count missing");
|
|
90
|
+
assert.strictEqual(typeof response.json.callback_delivery_enabled, "boolean", "delivery summary callback posture missing");
|
|
91
|
+
} finally {
|
|
92
|
+
await new Promise((resolve) => server.close(resolve));
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
console.log(JSON.stringify({
|
|
96
|
+
ok: true,
|
|
97
|
+
product: "xytara",
|
|
98
|
+
category: "machine-commerce-delivery-summary-verification",
|
|
99
|
+
verification_version: "xytara-delivery-summary-verification-v1",
|
|
100
|
+
delivery_count: summary.delivery_count,
|
|
101
|
+
callback_delivery_count: summary.callback_delivery_count,
|
|
102
|
+
delivered_delivery_count: summary.delivered_delivery_count,
|
|
103
|
+
retrying_callback_delivery_count: summary.retrying_callback_delivery_count,
|
|
104
|
+
signed_callback_delivery_count: summary.signed_callback_delivery_count,
|
|
105
|
+
boundary: "callback_delivery_posture_should_be_publicly_inspectable_and_counted"
|
|
106
|
+
}, null, 2));
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
main().catch((error) => {
|
|
110
|
+
console.error(error);
|
|
111
|
+
process.exit(1);
|
|
112
|
+
});
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const { spawnSync } = require("child_process");
|
|
4
|
-
const path = require("path");
|
|
5
|
-
|
|
6
|
-
function runExample(scriptPath) {
|
|
7
|
-
const result = spawnSync(process.execPath, [scriptPath], {
|
|
8
|
-
stdio: "inherit"
|
|
9
|
-
});
|
|
10
|
-
if (result.status !== 0) {
|
|
11
|
-
process.exit(result.status || 1);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
runExample(path.join(__dirname, "..", "examples", "quickstart.js"));
|
|
16
|
-
runExample(path.join(__dirname, "..", "examples", "export_carried_handoff.js"));
|
|
17
|
-
runExample(path.join(__dirname, "..", "examples", "partner_launch_walkthrough.js"));
|
|
18
|
-
runExample(path.join(__dirname, "..", "examples", "funded_runtime_walkthrough.js"));
|
|
19
|
-
runExample(path.join(__dirname, "..", "examples", "adapter_review_walkthrough.js"));
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const { spawnSync } = require("child_process");
|
|
4
|
+
const path = require("path");
|
|
5
|
+
|
|
6
|
+
function runExample(scriptPath) {
|
|
7
|
+
const result = spawnSync(process.execPath, [scriptPath], {
|
|
8
|
+
stdio: "inherit"
|
|
9
|
+
});
|
|
10
|
+
if (result.status !== 0) {
|
|
11
|
+
process.exit(result.status || 1);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
runExample(path.join(__dirname, "..", "examples", "quickstart.js"));
|
|
16
|
+
runExample(path.join(__dirname, "..", "examples", "export_carried_handoff.js"));
|
|
17
|
+
runExample(path.join(__dirname, "..", "examples", "partner_launch_walkthrough.js"));
|
|
18
|
+
runExample(path.join(__dirname, "..", "examples", "funded_runtime_walkthrough.js"));
|
|
19
|
+
runExample(path.join(__dirname, "..", "examples", "adapter_review_walkthrough.js"));
|
|
@@ -1,81 +1,81 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
const assert = require("assert");
|
|
4
|
-
const { createServer } = require("../server");
|
|
5
|
-
const {
|
|
6
|
-
buildFirstRunConversionPack,
|
|
7
|
-
summarizeFirstRunConversionPack,
|
|
8
|
-
getFirstRunConversionDetail
|
|
9
|
-
} = require("../lib/first_run_conversion_contract");
|
|
10
|
-
|
|
11
|
-
async function getJson(baseUrl, routePath) {
|
|
12
|
-
const response = await fetch(`${baseUrl}${routePath}`);
|
|
13
|
-
return {
|
|
14
|
-
status: response.status,
|
|
15
|
-
json: await response.json()
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
async function main() {
|
|
20
|
-
const pack = buildFirstRunConversionPack();
|
|
21
|
-
const summary = summarizeFirstRunConversionPack();
|
|
22
|
-
|
|
23
|
-
assert.strictEqual(pack.ok, true, "first-run conversion pack ok missing");
|
|
24
|
-
assert.strictEqual(summary.conversion_count >= 3, true, "first-run conversion count missing");
|
|
25
|
-
assert.strictEqual(summary.public_first_contact_ready_count >= 2, true, "public first-contact conversion count missing");
|
|
26
|
-
assert.strictEqual(summary.revenue_ready_conversion_count >= 2, true, "revenue-ready conversion count missing");
|
|
27
|
-
assert.strictEqual(summary.proof_ready_conversion_count >= 3, true, "proof-ready conversion count missing");
|
|
28
|
-
assert.strictEqual(summary.operator_inspection_ready_count >= 3, true, "operator inspection conversion count missing");
|
|
29
|
-
assert.strictEqual(Boolean(getFirstRunConversionDetail("direct_x402_paid_proof")), true, "direct x402 conversion missing");
|
|
30
|
-
assert.strictEqual(Boolean(getFirstRunConversionDetail("credits_first_paid_proof")), true, "credits-first conversion missing");
|
|
31
|
-
assert.strictEqual(Boolean(getFirstRunConversionDetail("result_package_proof_pickup")), true, "result-package proof pickup conversion missing");
|
|
32
|
-
|
|
33
|
-
const server = createServer();
|
|
34
|
-
await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
|
|
35
|
-
const address = server.address();
|
|
36
|
-
const baseUrl = `http://127.0.0.1:${address.port}`;
|
|
37
|
-
|
|
38
|
-
try {
|
|
39
|
-
const packResponse = await getJson(baseUrl, "/v1/first-run/conversions");
|
|
40
|
-
assert.strictEqual(packResponse.status, 200, "first-run conversions route failed");
|
|
41
|
-
assert.strictEqual(packResponse.json.conversion_count >= 3, true, "first-run conversions route count missing");
|
|
42
|
-
|
|
43
|
-
const summaryResponse = await getJson(baseUrl, "/v1/first-run/conversions/summary");
|
|
44
|
-
assert.strictEqual(summaryResponse.status, 200, "first-run conversions summary route failed");
|
|
45
|
-
assert.strictEqual(summaryResponse.json.revenue_ready_conversion_count >= 2, true, "first-run conversions summary revenue count missing");
|
|
46
|
-
|
|
47
|
-
const directPayResponse = await getJson(baseUrl, "/v1/first-run/conversions/direct_x402_paid_proof");
|
|
48
|
-
assert.strictEqual(directPayResponse.status, 200, "direct x402 first-run conversion detail route failed");
|
|
49
|
-
assert.strictEqual(directPayResponse.json.conversion.revenue_ready, true, "direct x402 first-run conversion revenue missing");
|
|
50
|
-
|
|
51
|
-
const creditsResponse = await getJson(baseUrl, "/v1/first-run/conversions/credits_first_paid_proof");
|
|
52
|
-
assert.strictEqual(creditsResponse.status, 200, "credits-first first-run conversion detail route failed");
|
|
53
|
-
assert.strictEqual(creditsResponse.json.conversion.operator_inspection_ready, true, "credits-first conversion inspection missing");
|
|
54
|
-
|
|
55
|
-
const proofPickupResponse = await getJson(baseUrl, "/v1/first-run/conversions/result_package_proof_pickup");
|
|
56
|
-
assert.strictEqual(proofPickupResponse.status, 200, "proof pickup first-run conversion detail route failed");
|
|
57
|
-
assert.strictEqual(proofPickupResponse.json.conversion.proof_ready, true, "proof pickup conversion proof readiness missing");
|
|
58
|
-
|
|
59
|
-
console.log(JSON.stringify({
|
|
60
|
-
ok: true,
|
|
61
|
-
product: "xytara",
|
|
62
|
-
category: "machine-commerce-first-run-conversion-verification",
|
|
63
|
-
verification_version: "xytara-first-run-conversion-verification-v1",
|
|
64
|
-
conversion_count: summary.conversion_count,
|
|
65
|
-
public_first_contact_ready_count: summary.public_first_contact_ready_count,
|
|
66
|
-
revenue_ready_conversion_count: summary.revenue_ready_conversion_count,
|
|
67
|
-
proof_ready_conversion_count: summary.proof_ready_conversion_count,
|
|
68
|
-
operator_inspection_ready_count: summary.operator_inspection_ready_count,
|
|
69
|
-
boundary: "launch_grade_first_run_claims_require_public_quote_fund_execute_proof_and_inspection_paths"
|
|
70
|
-
}, null, 2));
|
|
71
|
-
} finally {
|
|
72
|
-
await new Promise((resolve, reject) => {
|
|
73
|
-
server.close((error) => (error ? reject(error) : resolve()));
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
main().catch((error) => {
|
|
79
|
-
console.error(error);
|
|
80
|
-
process.exitCode = 1;
|
|
81
|
-
});
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const assert = require("assert");
|
|
4
|
+
const { createServer } = require("../server");
|
|
5
|
+
const {
|
|
6
|
+
buildFirstRunConversionPack,
|
|
7
|
+
summarizeFirstRunConversionPack,
|
|
8
|
+
getFirstRunConversionDetail
|
|
9
|
+
} = require("../lib/first_run_conversion_contract");
|
|
10
|
+
|
|
11
|
+
async function getJson(baseUrl, routePath) {
|
|
12
|
+
const response = await fetch(`${baseUrl}${routePath}`);
|
|
13
|
+
return {
|
|
14
|
+
status: response.status,
|
|
15
|
+
json: await response.json()
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
async function main() {
|
|
20
|
+
const pack = buildFirstRunConversionPack();
|
|
21
|
+
const summary = summarizeFirstRunConversionPack();
|
|
22
|
+
|
|
23
|
+
assert.strictEqual(pack.ok, true, "first-run conversion pack ok missing");
|
|
24
|
+
assert.strictEqual(summary.conversion_count >= 3, true, "first-run conversion count missing");
|
|
25
|
+
assert.strictEqual(summary.public_first_contact_ready_count >= 2, true, "public first-contact conversion count missing");
|
|
26
|
+
assert.strictEqual(summary.revenue_ready_conversion_count >= 2, true, "revenue-ready conversion count missing");
|
|
27
|
+
assert.strictEqual(summary.proof_ready_conversion_count >= 3, true, "proof-ready conversion count missing");
|
|
28
|
+
assert.strictEqual(summary.operator_inspection_ready_count >= 3, true, "operator inspection conversion count missing");
|
|
29
|
+
assert.strictEqual(Boolean(getFirstRunConversionDetail("direct_x402_paid_proof")), true, "direct x402 conversion missing");
|
|
30
|
+
assert.strictEqual(Boolean(getFirstRunConversionDetail("credits_first_paid_proof")), true, "credits-first conversion missing");
|
|
31
|
+
assert.strictEqual(Boolean(getFirstRunConversionDetail("result_package_proof_pickup")), true, "result-package proof pickup conversion missing");
|
|
32
|
+
|
|
33
|
+
const server = createServer();
|
|
34
|
+
await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
|
|
35
|
+
const address = server.address();
|
|
36
|
+
const baseUrl = `http://127.0.0.1:${address.port}`;
|
|
37
|
+
|
|
38
|
+
try {
|
|
39
|
+
const packResponse = await getJson(baseUrl, "/v1/first-run/conversions");
|
|
40
|
+
assert.strictEqual(packResponse.status, 200, "first-run conversions route failed");
|
|
41
|
+
assert.strictEqual(packResponse.json.conversion_count >= 3, true, "first-run conversions route count missing");
|
|
42
|
+
|
|
43
|
+
const summaryResponse = await getJson(baseUrl, "/v1/first-run/conversions/summary");
|
|
44
|
+
assert.strictEqual(summaryResponse.status, 200, "first-run conversions summary route failed");
|
|
45
|
+
assert.strictEqual(summaryResponse.json.revenue_ready_conversion_count >= 2, true, "first-run conversions summary revenue count missing");
|
|
46
|
+
|
|
47
|
+
const directPayResponse = await getJson(baseUrl, "/v1/first-run/conversions/direct_x402_paid_proof");
|
|
48
|
+
assert.strictEqual(directPayResponse.status, 200, "direct x402 first-run conversion detail route failed");
|
|
49
|
+
assert.strictEqual(directPayResponse.json.conversion.revenue_ready, true, "direct x402 first-run conversion revenue missing");
|
|
50
|
+
|
|
51
|
+
const creditsResponse = await getJson(baseUrl, "/v1/first-run/conversions/credits_first_paid_proof");
|
|
52
|
+
assert.strictEqual(creditsResponse.status, 200, "credits-first first-run conversion detail route failed");
|
|
53
|
+
assert.strictEqual(creditsResponse.json.conversion.operator_inspection_ready, true, "credits-first conversion inspection missing");
|
|
54
|
+
|
|
55
|
+
const proofPickupResponse = await getJson(baseUrl, "/v1/first-run/conversions/result_package_proof_pickup");
|
|
56
|
+
assert.strictEqual(proofPickupResponse.status, 200, "proof pickup first-run conversion detail route failed");
|
|
57
|
+
assert.strictEqual(proofPickupResponse.json.conversion.proof_ready, true, "proof pickup conversion proof readiness missing");
|
|
58
|
+
|
|
59
|
+
console.log(JSON.stringify({
|
|
60
|
+
ok: true,
|
|
61
|
+
product: "xytara",
|
|
62
|
+
category: "machine-commerce-first-run-conversion-verification",
|
|
63
|
+
verification_version: "xytara-first-run-conversion-verification-v1",
|
|
64
|
+
conversion_count: summary.conversion_count,
|
|
65
|
+
public_first_contact_ready_count: summary.public_first_contact_ready_count,
|
|
66
|
+
revenue_ready_conversion_count: summary.revenue_ready_conversion_count,
|
|
67
|
+
proof_ready_conversion_count: summary.proof_ready_conversion_count,
|
|
68
|
+
operator_inspection_ready_count: summary.operator_inspection_ready_count,
|
|
69
|
+
boundary: "launch_grade_first_run_claims_require_public_quote_fund_execute_proof_and_inspection_paths"
|
|
70
|
+
}, null, 2));
|
|
71
|
+
} finally {
|
|
72
|
+
await new Promise((resolve, reject) => {
|
|
73
|
+
server.close((error) => (error ? reject(error) : resolve()));
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
main().catch((error) => {
|
|
79
|
+
console.error(error);
|
|
80
|
+
process.exitCode = 1;
|
|
81
|
+
});
|