xytara 2.4.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/.env.example +29 -0
  2. package/BSV_TERANODE_SETUP.md +43 -0
  3. package/README.md +82 -7
  4. package/REAL_PAYMENT_SETUP.md +61 -0
  5. package/RELEASE_NOTES.md +23 -17
  6. package/SERVICE_CONTRACT.md +106 -0
  7. package/START_HERE.md +146 -5
  8. package/TREASURY_DESTINATIONS.example.json +66 -0
  9. package/TREASURY_DESTINATIONS.production.template.json +108 -0
  10. package/adapters/examples/langchain-reference-execution-adapter.js +81 -0
  11. package/adapters/examples/langchain-reference-execution-adapter.manifest.json +79 -0
  12. package/adapters/examples/langgraph-reference-execution-adapter.js +81 -0
  13. package/adapters/examples/langgraph-reference-execution-adapter.manifest.json +79 -0
  14. package/bin/xytara-first-run.js +244 -0
  15. package/bin/xytara.js +80 -0
  16. package/index.js +1 -1
  17. package/integrations/dispatch.js +7 -2
  18. package/integrations/registry.js +123 -2
  19. package/lib/a2a_lane_contract.js +104 -0
  20. package/lib/a2c_lane_contract.js +111 -0
  21. package/lib/activity_audit_contract.js +322 -0
  22. package/lib/adapter_depth_contract.js +156 -0
  23. package/lib/artifact_distribution_lane_contract.js +54 -0
  24. package/lib/asyncapi_contract.js +150 -0
  25. package/lib/auth_interop_contract.js +80 -0
  26. package/lib/bolt_lane_contract.js +55 -0
  27. package/lib/bolt_payment_front.js +172 -0
  28. package/lib/capability_execution_truth.js +269 -0
  29. package/lib/capability_registry.js +39 -2
  30. package/lib/checkout_event_security.js +142 -0
  31. package/lib/cloudevents_contract.js +80 -0
  32. package/lib/command_flow.js +169 -36
  33. package/lib/commerce_artifacts.js +23 -4
  34. package/lib/commerce_checkout.js +134 -4
  35. package/lib/commerce_client.js +52 -0
  36. package/lib/commerce_economics.js +109 -9
  37. package/lib/commerce_runtime.js +38 -2
  38. package/lib/commerce_shell.js +4 -2
  39. package/lib/erc8004_lane_contract.js +65 -0
  40. package/lib/event_system_lane_contract.js +75 -0
  41. package/lib/external_execution_runtime.js +132 -0
  42. package/lib/feature_control_lane_contract.js +54 -0
  43. package/lib/framework_lane_contract.js +89 -0
  44. package/lib/go_live_operator_pack.js +339 -0
  45. package/lib/http_transport.js +32 -0
  46. package/lib/identity_interop_contract.js +82 -0
  47. package/lib/integration_matrix_contract.js +99 -0
  48. package/lib/l402_lane_contract.js +55 -0
  49. package/lib/l402_payment_front.js +192 -0
  50. package/lib/major_rails_lane_contract.js +90 -0
  51. package/lib/mcp_lane_contract.js +110 -0
  52. package/lib/network_transport.js +110 -0
  53. package/lib/openapi_contract.js +296 -0
  54. package/lib/operator_intelligence.js +215 -1
  55. package/lib/payment_config.js +80 -3
  56. package/lib/payment_front_registry.js +53 -0
  57. package/lib/payment_protocol_contract.js +165 -0
  58. package/lib/payment_verification.js +23 -3
  59. package/lib/pricing_optimization_contract.js +556 -0
  60. package/lib/protocol_lane_contract.js +114 -0
  61. package/lib/provenance_lane_contract.js +54 -0
  62. package/lib/provider_lane_contract.js +72 -0
  63. package/lib/release_history.js +31 -0
  64. package/lib/request_rate_limit.js +144 -0
  65. package/lib/runtime_bridge.js +10 -2
  66. package/lib/runtime_operations_worker.js +282 -0
  67. package/lib/settlement_bsv_live.js +79 -4
  68. package/lib/settlement_lane_contract.js +111 -0
  69. package/lib/shared_signals_lane_contract.js +54 -0
  70. package/lib/stablecoin_lane_contract.js +76 -0
  71. package/lib/stripe_mpp_lane_contract.js +96 -0
  72. package/lib/stripe_mpp_payment_front.js +158 -0
  73. package/lib/telemetry_lane_contract.js +54 -0
  74. package/lib/treasury_destinations_contract.js +543 -0
  75. package/lib/treasury_egress_policy_contract.js +91 -0
  76. package/lib/treasury_lane_contract.js +84 -0
  77. package/lib/x402_lane_contract.js +118 -0
  78. package/package.json +18 -23
  79. package/server.js +994 -88
  80. package/OPERATIONS_RUNBOOK.md +0 -65
  81. package/OPERATOR_START_HERE.md +0 -63
  82. package/PROGRAM_COMPLETE_RELEASE.md +0 -63
  83. package/PROGRAM_STATUS.md +0 -57
  84. package/PUBLISH_PLAN.md +0 -14
  85. package/RELEASE_CHECKLIST.md +0 -16
package/START_HERE.md CHANGED
@@ -18,6 +18,45 @@ Its job is to let a caller:
18
18
 
19
19
  ## 2. Run The Fastest Real Example
20
20
 
21
+ For an outside builder, the shortest public spine is:
22
+
23
+ ```text
24
+ quote -> pay/credits -> execute -> prove
25
+ ```
26
+
27
+ Open:
28
+
29
+ ```text
30
+ https://www.naxytra.com/v1/first-run-path
31
+ https://www.naxytra.com/v1/first-run-kit
32
+ ```
33
+
34
+ The first safe runtime command is quote-only:
35
+
36
+ ```bash
37
+ xytara first-run --run-quote --account ACCOUNT_REF --pretty
38
+ ```
39
+
40
+ The underlying command is:
41
+
42
+ ```bash
43
+ xytara-run --url https://xytara.onrender.com --account ACCOUNT_REF --task adapter.mcp.invoke --command mcp.invoke:summarize --body-json "{\"tool_name\":\"summarize\",\"arguments\":{\"text\":\"Summarize the Naxytra first-run path in one sentence.\"}}" --quote-only --pretty
44
+ ```
45
+
46
+ Then execute with direct signed payment or a credits-first funded account:
47
+
48
+ ```bash
49
+ xytara first-run --execute-with-credits --account ACCOUNT_REF --pretty
50
+ ```
51
+
52
+ Then hand the result into `xoonya` for proof review and verification:
53
+
54
+ ```bash
55
+ xoonya first-run --verify-native --pretty
56
+ ```
57
+
58
+ ## 3. Run The Fastest Local Package Example
59
+
21
60
  Run:
22
61
 
23
62
  ```bash
@@ -37,7 +76,7 @@ If you want the shortest neutral external-adoption bundle, continue with:
37
76
  - [EXAMPLE_PATHS.md](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xytara/EXAMPLE_PATHS.md)
38
77
  - `node examples/partner_launch_walkthrough.js`
39
78
 
40
- ## 3. Verify The Whole Package
79
+ ## 4. Verify The Whole Package
41
80
 
42
81
  Run:
43
82
 
@@ -47,12 +86,83 @@ npm run verify:all
47
86
 
48
87
  This is the production-confidence check for the published package surface.
49
88
 
50
- ## 4. Read The Durable Contract
89
+ If you are evaluating a real deployment that will use grants, credits, entitlements, or usage meters, also run:
90
+
91
+ ```bash
92
+ npm run verify:production-readiness
93
+ ```
94
+
95
+ That gate is stricter than local verification and expects:
96
+
97
+ - runtime persistence through `XYTARA_STATE_FILE` on persistent disk or `XYTARA_SUPABASE_*`
98
+ - signed payment verification with a real wallet registry
99
+ - real operator bearer tokens
100
+ - treasury destinations configured through `XYTARA_TREASURY_DESTINATIONS_PATH`
101
+ - callback signing configured through `XYTARA_CALLBACK_SIGNING_SECRET`
102
+ - hosted checkout event verification configured through `XYTARA_CHECKOUT_WEBHOOK_SECRET`
103
+ - `L402` ingress verification configured through `XYTARA_L402_SHARED_SECRET` when `XYTARA_L402_ENABLED=true`
104
+ - `BOLT` ingress verification configured through `XYTARA_BOLT_SHARED_SECRET` when `XYTARA_BOLT_ENABLED=true`
105
+ - `MPP` ingress verification configured through `XYTARA_MPP_SHARED_SECRET` when `XYTARA_MPP_ENABLED=true`
106
+ - write-path rate limiting configured and enabled
107
+ - execution targets configured through `XYTARA_EXECUTION_TARGETS_JSON` whenever you require provider-backed execution for live sold capabilities
108
+ - non-mock native settlement runtime mode
109
+
110
+ ## 5. Read The Durable Contract
51
111
 
52
112
  For long-term product understanding, read:
53
113
 
54
114
  - [FINAL_CONTRACT.md](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xytara/FINAL_CONTRACT.md)
55
115
  - [SERVICE_CONTRACT.md](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xytara/SERVICE_CONTRACT.md)
116
+ - `GET /openapi.json`
117
+ - `GET /asyncapi.json`
118
+ - `GET /cloudevents.json`
119
+ - `GET /v1/auth-profiles`
120
+ - `GET /v1/identity-interop`
121
+ - `GET /v1/providers`
122
+ - `GET /v1/frameworks`
123
+ - `GET /v1/protocols`
124
+ - `GET /v1/integration-matrix`
125
+ - `GET /v1/telemetry`
126
+ - `GET /v1/provenance`
127
+ - `GET /v1/artifact-distribution`
128
+ - `GET /v1/shared-signals`
129
+ - `GET /v1/feature-control`
130
+ - `GET /v1/mcp`
131
+ - `GET /v1/a2a`
132
+ - `GET /v1/a2c`
133
+ - `GET /v1/x402`
134
+ - `GET /v1/l402`
135
+ - `GET /v1/l402/security`
136
+ - `GET /v1/bolt`
137
+ - `GET /v1/bolt/security`
138
+ - `GET /v1/stripe-mpp`
139
+ - `GET /v1/stripe-mpp/security`
140
+ - `GET /v1/network-transport`
141
+ - `GET /v1/payment-protocols`
142
+ - `GET /v1/payment-protocols/strategy`
143
+ - `GET /v1/payment-fronts`
144
+ - `GET /v1/checkout/events/security`
145
+ - `GET /v1/settlement`
146
+ - `GET /v1/stripe-mpp`
147
+ - `GET /v1/stablecoins`
148
+ - `GET /v1/major-rails`
149
+ - `GET /v1/treasury`
150
+ - `GET /v1/pricing-optimization`
151
+ - `GET /v1/pricing-optimization/quote-cohorts`
152
+ - `GET /v1/pricing-optimization/recommendations`
153
+ - `GET /v1/activity-ledger`
154
+ - `GET /v1/treasury-destinations`
155
+ - `GET /v1/treasury-destinations/operator-pack`
156
+ - `POST /v1/treasury-destinations/validate-preview`
157
+ - `GET /v1/treasury-egress-policy`
158
+ - `GET /v1/erc8004`
159
+ - `GET /v1/event-systems`
160
+ - `GET /v1/integrations`
161
+ - `GET /v1/capability-registry/execution-truth`
162
+ - `GET /v1/capability-registry/execution-truth/summary`
163
+ - `GET /v1/capability-registry/commercialization-summary`
164
+ - `GET /v1/go-live`
165
+ - `GET /v1/go-live/summary`
56
166
  - [PROGRAM_STATUS.md](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xytara/PROGRAM_STATUS.md)
57
167
  - [OPERATOR_START_HERE.md](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xytara/OPERATOR_START_HERE.md)
58
168
  - [OPERATIONS_RUNBOOK.md](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xytara/OPERATIONS_RUNBOOK.md)
@@ -62,9 +172,11 @@ For long-term product understanding, read:
62
172
  - [PARTNER_READY_PATH.md](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xytara/PARTNER_READY_PATH.md)
63
173
  - [BSV_TERANODE_SETUP.md](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xytara/BSV_TERANODE_SETUP.md)
64
174
  - [REAL_PAYMENT_SETUP.md](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xytara/REAL_PAYMENT_SETUP.md)
175
+ - [TREASURY_DESTINATIONS.example.json](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xytara/TREASURY_DESTINATIONS.example.json)
176
+ - [TREASURY_DESTINATIONS.production.template.json](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xytara/TREASURY_DESTINATIONS.production.template.json)
65
177
  - [TERMINOLOGY.md](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xytara/TERMINOLOGY.md)
66
178
 
67
- ## 5. If You Are Building Adapters
179
+ ## 6. If You Are Building Adapters
68
180
 
69
181
  Continue with:
70
182
 
@@ -73,7 +185,7 @@ Continue with:
73
185
  - [adapters/ONBOARDING_POSTURE.md](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xytara/adapters/ONBOARDING_POSTURE.md)
74
186
  - [adapters/THIRD_PARTY_SUBMISSION_PROCESS.md](C:/Users/Yoga/Desktop/workspace/vscode_workspace_public/naxytra/xytara/adapters/THIRD_PARTY_SUBMISSION_PROCESS.md)
75
187
 
76
- ## 6. Production Reading Rule
188
+ ## 7. Production Reading Rule
77
189
 
78
190
  If you only remember one thing, remember this:
79
191
 
@@ -83,7 +195,36 @@ It is:
83
195
 
84
196
  discover -> preview/quote -> execute -> inspect -> hand off to `xoonya`
85
197
 
86
- ## 7. If You Are Operating The Closed Program
198
+ If you want the shortest CLI-first read of the package after install, use:
199
+
200
+ - `xytara start-here`
201
+ - `xytara release --summary`
202
+ - `xytara run --help`
203
+
204
+ If you are operationalizing monetization and multi-rail treasury custody, use:
205
+
206
+ - `GET /v1/go-live`
207
+ - `GET /v1/go-live/summary`
208
+ - `GET /v1/pricing-optimization/quote-abandonment-summary`
209
+ - `GET /v1/pricing-optimization/quote-cohorts`
210
+ - `GET /v1/pricing-optimization/recommendations`
211
+ - `GET /v1/treasury-destinations`
212
+ - `GET /v1/treasury-destinations/operator-pack`
213
+ - `POST /v1/treasury-destinations/validate-preview`
214
+ - `GET /v1/treasury-egress-policy`
215
+ - `GET /v1/activity-ledger`
216
+ - `GET /v1/capability-registry/execution-truth`
217
+ - `GET /v1/capability-registry/execution-truth/summary`
218
+ - `GET /v1/capability-registry/commercialization-summary`
219
+
220
+ Public/private rule:
221
+
222
+ - `GET /v1/treasury-destinations` is safe for public-readiness visibility
223
+ - `GET /v1/treasury-destinations/operator-pack` is where real custody landing refs belong
224
+ - public website and public catalog surfaces should never expose treasury landing refs or custody-provider refs
225
+ - when `XYTARA_ACCOUNT_AUTH_BEARER_TOKEN` is configured, operator-only routes like `activity-ledger`, `treasury-destinations/operator-pack`, `treasury-destinations/validate-preview`, and `treasury-egress-policy` require that bearer token
226
+
227
+ ## 8. If You Are Operating The Closed Program
87
228
 
88
229
  Use:
89
230
 
@@ -0,0 +1,66 @@
1
+ {
2
+ "bsv_teranode": {
3
+ "destination_id": "treasury_bsv_main",
4
+ "destination_kind": "bsv_teranode_address",
5
+ "external_ref": "1ReplaceWithRealBsvAddressOrPaymail",
6
+ "custody_ref": "vault.bsv.primary",
7
+ "reporting_ref": "ledger.bsv.primary",
8
+ "wallet_ref": "wallet.bsv.primary",
9
+ "provider_ref": "arc.bsv.primary",
10
+ "network": "mainnet",
11
+ "storage_class": "cold_primary"
12
+ },
13
+ "evm": {
14
+ "destination_id": "treasury_evm_main",
15
+ "destination_kind": "evm_address",
16
+ "external_ref": "0xReplaceWithRealEvmTreasuryAddress",
17
+ "chain_id": "1",
18
+ "custody_ref": "vault.evm.primary",
19
+ "reporting_ref": "ledger.evm.primary",
20
+ "wallet_ref": "wallet.evm.primary",
21
+ "provider_ref": "rpc.evm.primary",
22
+ "storage_class": "warm_operational"
23
+ },
24
+ "base": {
25
+ "destination_id": "treasury_base_main",
26
+ "destination_kind": "evm_address",
27
+ "external_ref": "0xReplaceWithRealBaseTreasuryAddress",
28
+ "chain_id": "8453",
29
+ "custody_ref": "vault.base.primary",
30
+ "reporting_ref": "ledger.base.primary",
31
+ "wallet_ref": "wallet.base.primary",
32
+ "provider_ref": "rpc.base.primary",
33
+ "storage_class": "warm_operational"
34
+ },
35
+ "usdc": {
36
+ "destination_id": "treasury_usdc_primary",
37
+ "destination_kind": "stablecoin_address",
38
+ "external_ref": "0xReplaceWithRealUsdcReceivingAddress",
39
+ "asset_symbol": "USDC",
40
+ "chain_id": "8453",
41
+ "custody_ref": "vault.usdc.primary",
42
+ "reporting_ref": "ledger.usdc.primary",
43
+ "wallet_ref": "wallet.usdc.primary",
44
+ "storage_class": "warm_operational"
45
+ },
46
+ "dai": {
47
+ "destination_id": "treasury_dai_primary",
48
+ "destination_kind": "stablecoin_address",
49
+ "external_ref": "0xReplaceWithRealDaiReceivingAddress",
50
+ "asset_symbol": "DAI",
51
+ "chain_id": "1",
52
+ "custody_ref": "vault.dai.primary",
53
+ "reporting_ref": "ledger.dai.primary",
54
+ "wallet_ref": "wallet.dai.primary",
55
+ "storage_class": "warm_operational"
56
+ },
57
+ "monero": {
58
+ "destination_id": "treasury_monero_private",
59
+ "destination_kind": "monero_address",
60
+ "external_ref": "8ReplaceWithRealMoneroAddress",
61
+ "policy_scope": "internal_optional_privacy_reserve",
62
+ "custody_ref": "vault.monero.policy_gated",
63
+ "reporting_ref": "ledger.monero.internal",
64
+ "storage_class": "isolated_policy_gated"
65
+ }
66
+ }
@@ -0,0 +1,108 @@
1
+ {
2
+ "_notes": [
3
+ "Copy this file to TREASURY_DESTINATIONS.production.json and replace every placeholder before use.",
4
+ "Only claim a rail as live treasury landing if its entry has a real destination you control.",
5
+ "external_ref is the real receiving destination: address, paymail, or equivalent custody landing reference.",
6
+ "monero should remain internal-only and policy-gated."
7
+ ],
8
+ "bsv_teranode": {
9
+ "destination_id": "treasury_bsv_main",
10
+ "destination_kind": "bsv_teranode_address",
11
+ "external_ref": "REPLACE_WITH_REAL_BSV_ADDRESS_OR_PAYMAIL",
12
+ "custody_ref": "vault.bsv.primary",
13
+ "reporting_ref": "ledger.bsv.primary",
14
+ "wallet_ref": "wallet.bsv.primary",
15
+ "provider_ref": "arc.bsv.primary",
16
+ "network": "mainnet",
17
+ "storage_class": "cold_primary"
18
+ },
19
+ "evm": {
20
+ "destination_id": "treasury_evm_main",
21
+ "destination_kind": "evm_address",
22
+ "external_ref": "REPLACE_WITH_REAL_EVM_MAINNET_ADDRESS",
23
+ "chain_id": "1",
24
+ "custody_ref": "vault.evm.primary",
25
+ "reporting_ref": "ledger.evm.primary",
26
+ "wallet_ref": "wallet.evm.primary",
27
+ "provider_ref": "rpc.evm.primary",
28
+ "storage_class": "warm_operational"
29
+ },
30
+ "base": {
31
+ "destination_id": "treasury_base_main",
32
+ "destination_kind": "evm_address",
33
+ "external_ref": "REPLACE_WITH_REAL_BASE_ADDRESS",
34
+ "chain_id": "8453",
35
+ "custody_ref": "vault.base.primary",
36
+ "reporting_ref": "ledger.base.primary",
37
+ "wallet_ref": "wallet.base.primary",
38
+ "provider_ref": "rpc.base.primary",
39
+ "storage_class": "warm_operational"
40
+ },
41
+ "solana_payment": {
42
+ "destination_id": "treasury_solana_main",
43
+ "destination_kind": "solana_address",
44
+ "external_ref": "REPLACE_WITH_REAL_SOLANA_ADDRESS",
45
+ "network": "mainnet-beta",
46
+ "asset_symbol": "SOL_OR_SPL",
47
+ "custody_ref": "vault.solana.primary",
48
+ "reporting_ref": "ledger.solana.primary",
49
+ "wallet_ref": "wallet.solana.primary",
50
+ "provider_ref": "rpc.solana.primary",
51
+ "storage_class": "warm_operational"
52
+ },
53
+ "xpr_payment": {
54
+ "destination_id": "treasury_xpr_main",
55
+ "destination_kind": "proton_xpr_account",
56
+ "external_ref": "REPLACE_WITH_REAL_XPR_ACCOUNT",
57
+ "network": "mainnet",
58
+ "asset_symbol": "XPR",
59
+ "custody_ref": "vault.xpr.primary",
60
+ "reporting_ref": "ledger.xpr.primary",
61
+ "wallet_ref": "wallet.xpr.primary",
62
+ "provider_ref": "rpc.xpr.primary",
63
+ "storage_class": "warm_operational"
64
+ },
65
+ "antelope_payment": {
66
+ "destination_id": "treasury_antelope_main",
67
+ "destination_kind": "antelope_account",
68
+ "external_ref": "REPLACE_WITH_REAL_ANTELOPE_ACCOUNT",
69
+ "network": "mainnet",
70
+ "asset_symbol": "EOSIO_OR_ANTILOPE",
71
+ "custody_ref": "vault.antelope.primary",
72
+ "reporting_ref": "ledger.antelope.primary",
73
+ "wallet_ref": "wallet.antelope.primary",
74
+ "provider_ref": "rpc.antelope.primary",
75
+ "storage_class": "warm_operational"
76
+ },
77
+ "usdc": {
78
+ "destination_id": "treasury_usdc_primary",
79
+ "destination_kind": "stablecoin_address",
80
+ "external_ref": "REPLACE_WITH_REAL_USDC_RECEIVING_ADDRESS",
81
+ "asset_symbol": "USDC",
82
+ "chain_id": "8453",
83
+ "custody_ref": "vault.usdc.primary",
84
+ "reporting_ref": "ledger.usdc.primary",
85
+ "wallet_ref": "wallet.usdc.primary",
86
+ "storage_class": "warm_operational"
87
+ },
88
+ "dai": {
89
+ "destination_id": "treasury_dai_primary",
90
+ "destination_kind": "stablecoin_address",
91
+ "external_ref": "REPLACE_WITH_REAL_DAI_RECEIVING_ADDRESS",
92
+ "asset_symbol": "DAI",
93
+ "chain_id": "1",
94
+ "custody_ref": "vault.dai.primary",
95
+ "reporting_ref": "ledger.dai.primary",
96
+ "wallet_ref": "wallet.dai.primary",
97
+ "storage_class": "warm_operational"
98
+ },
99
+ "monero": {
100
+ "destination_id": "treasury_monero_private",
101
+ "destination_kind": "monero_address",
102
+ "external_ref": "REPLACE_WITH_REAL_MONERO_ADDRESS",
103
+ "policy_scope": "internal_optional_privacy_reserve",
104
+ "custody_ref": "vault.monero.policy_gated",
105
+ "reporting_ref": "ledger.monero.internal",
106
+ "storage_class": "isolated_policy_gated"
107
+ }
108
+ }
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ const fs = require("fs");
4
+ const path = require("path");
5
+
6
+ const manifest = JSON.parse(
7
+ fs.readFileSync(path.resolve(__dirname, "langchain-reference-execution-adapter.manifest.json"), "utf8")
8
+ );
9
+
10
+ function normalizeChainRequest(request) {
11
+ const body = request && request.body && typeof request.body === "object" ? request.body : {};
12
+ const chainRef = String(body.chain_ref || body.chain_id || request.task_ref || "langchain.reference.chain").trim();
13
+ const toolTraceRef = String(body.tool_trace_ref || body.trace_id || "trace.reference").trim();
14
+ const contextRef = String(body.context_ref || body.session_id || "context.reference").trim();
15
+ return {
16
+ chain_ref: chainRef,
17
+ tool_trace_ref: toolTraceRef,
18
+ context_ref: contextRef,
19
+ input: body.input && typeof body.input === "object" ? body.input : {}
20
+ };
21
+ }
22
+
23
+ async function getHealth() {
24
+ return {
25
+ status: "ok",
26
+ readiness: "ready",
27
+ adapter_id: manifest.adapter_id,
28
+ provider_claim: "reference_local_contract_adapter"
29
+ };
30
+ }
31
+
32
+ function describeCapabilities() {
33
+ return {
34
+ adapter_id: manifest.adapter_id,
35
+ adapter_class: manifest.adapter_class,
36
+ capabilities: manifest.capabilities.slice(),
37
+ execution_modes: Array.isArray(manifest.execution_modes) ? manifest.execution_modes.slice() : [],
38
+ claim_boundary: "normalizes_langchain_style_payloads_without_claiming_external_provider_execution"
39
+ };
40
+ }
41
+
42
+ async function preview(request) {
43
+ const normalized = normalizeChainRequest(request || {});
44
+ return {
45
+ adapter_id: manifest.adapter_id,
46
+ accepted: true,
47
+ preview: {
48
+ mode: "preview",
49
+ ...normalized
50
+ }
51
+ };
52
+ }
53
+
54
+ async function execute(request) {
55
+ const normalized = normalizeChainRequest(request || {});
56
+ return {
57
+ adapter_id: manifest.adapter_id,
58
+ status: "completed",
59
+ result: {
60
+ mode: "execute",
61
+ framework: "langchain",
62
+ ...normalized
63
+ },
64
+ proof_facts: {
65
+ emits_proof_compatible_facts: true,
66
+ proof_mode: manifest.proof_contract.proof_mode,
67
+ framework: "langchain",
68
+ chain_ref: normalized.chain_ref,
69
+ tool_trace_ref: normalized.tool_trace_ref,
70
+ context_ref: normalized.context_ref
71
+ }
72
+ };
73
+ }
74
+
75
+ module.exports = {
76
+ manifest,
77
+ getHealth,
78
+ describeCapabilities,
79
+ preview,
80
+ execute
81
+ };
@@ -0,0 +1,79 @@
1
+ {
2
+ "adapter_id": "reference.framework.langchain",
3
+ "adapter_class": "execution_adapter",
4
+ "adapter_version": "0.1.0",
5
+ "interface_version": "commerce-adapter-interface/v1",
6
+ "display_name": "LangChain Reference Execution Adapter",
7
+ "description": "Reference execution adapter for LangChain-style chain, tool, and trace payloads without claiming a live external LangChain provider.",
8
+ "capabilities": [
9
+ "framework.langchain.preview",
10
+ "framework.langchain.execute"
11
+ ],
12
+ "compatibility": {
13
+ "node": ">=18",
14
+ "commerce_contract": "xytara/v1",
15
+ "proof_contract": "xoonya/v1"
16
+ },
17
+ "health_contract": {
18
+ "check_kind": "self_reported",
19
+ "supports_readiness": true
20
+ },
21
+ "idempotency_contract": {
22
+ "strategy": "caller_supplied_key",
23
+ "scope": "framework_execution"
24
+ },
25
+ "failure_contract": {
26
+ "categories": [
27
+ "invalid_chain_payload",
28
+ "timeout",
29
+ "upstream_unavailable"
30
+ ],
31
+ "retryable_categories": [
32
+ "timeout",
33
+ "upstream_unavailable"
34
+ ]
35
+ },
36
+ "proof_contract": {
37
+ "emits_proof_compatible_facts": true,
38
+ "proof_mode": "framework_execution_facts"
39
+ },
40
+ "latency_class": "interactive",
41
+ "pricing_basis": "per_chain_execution",
42
+ "execution_modes": [
43
+ "sync"
44
+ ],
45
+ "required_secrets": [],
46
+ "required_permissions": [],
47
+ "supported_profiles": [
48
+ "reference",
49
+ "framework"
50
+ ],
51
+ "supported_regions": [
52
+ "local"
53
+ ],
54
+ "supported_settlement_modes": [
55
+ "credits_first",
56
+ "bsv_teranode",
57
+ "x402"
58
+ ],
59
+ "registration_contract": {
60
+ "integration_id": "reference.framework.langchain",
61
+ "integration_maturity": "reference_example",
62
+ "bundled": true,
63
+ "default_selection_enabled": false,
64
+ "selection_priority": 430,
65
+ "requires_explicit_selection": true
66
+ },
67
+ "certification_contract": {
68
+ "certification_state": "reference_example",
69
+ "certification_scope": [
70
+ "contract_shape",
71
+ "framework_payload_normalization",
72
+ "proof_fact_emission"
73
+ ],
74
+ "verified_with": [
75
+ "npm run verify:adapters"
76
+ ],
77
+ "last_verified_contract_version": "commerce-adapter-interface/v1"
78
+ }
79
+ }
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ const fs = require("fs");
4
+ const path = require("path");
5
+
6
+ const manifest = JSON.parse(
7
+ fs.readFileSync(path.resolve(__dirname, "langgraph-reference-execution-adapter.manifest.json"), "utf8")
8
+ );
9
+
10
+ function normalizeGraphRequest(request) {
11
+ const body = request && request.body && typeof request.body === "object" ? request.body : {};
12
+ const graphRef = String(body.graph_ref || body.graph_id || request.task_ref || "langgraph.reference.graph").trim();
13
+ const nodeRef = String(body.node_ref || body.node_id || "entry").trim();
14
+ const checkpointRef = String(body.checkpoint_ref || body.thread_id || "checkpoint.reference").trim();
15
+ return {
16
+ graph_ref: graphRef,
17
+ node_ref: nodeRef,
18
+ checkpoint_ref: checkpointRef,
19
+ input: body.input && typeof body.input === "object" ? body.input : {}
20
+ };
21
+ }
22
+
23
+ async function getHealth() {
24
+ return {
25
+ status: "ok",
26
+ readiness: "ready",
27
+ adapter_id: manifest.adapter_id,
28
+ provider_claim: "reference_local_contract_adapter"
29
+ };
30
+ }
31
+
32
+ function describeCapabilities() {
33
+ return {
34
+ adapter_id: manifest.adapter_id,
35
+ adapter_class: manifest.adapter_class,
36
+ capabilities: manifest.capabilities.slice(),
37
+ execution_modes: Array.isArray(manifest.execution_modes) ? manifest.execution_modes.slice() : [],
38
+ claim_boundary: "normalizes_langgraph_style_payloads_without_claiming_external_provider_execution"
39
+ };
40
+ }
41
+
42
+ async function preview(request) {
43
+ const normalized = normalizeGraphRequest(request || {});
44
+ return {
45
+ adapter_id: manifest.adapter_id,
46
+ accepted: true,
47
+ preview: {
48
+ mode: "preview",
49
+ ...normalized
50
+ }
51
+ };
52
+ }
53
+
54
+ async function execute(request) {
55
+ const normalized = normalizeGraphRequest(request || {});
56
+ return {
57
+ adapter_id: manifest.adapter_id,
58
+ status: "completed",
59
+ result: {
60
+ mode: "execute",
61
+ framework: "langgraph",
62
+ ...normalized
63
+ },
64
+ proof_facts: {
65
+ emits_proof_compatible_facts: true,
66
+ proof_mode: manifest.proof_contract.proof_mode,
67
+ framework: "langgraph",
68
+ graph_ref: normalized.graph_ref,
69
+ node_ref: normalized.node_ref,
70
+ checkpoint_ref: normalized.checkpoint_ref
71
+ }
72
+ };
73
+ }
74
+
75
+ module.exports = {
76
+ manifest,
77
+ getHealth,
78
+ describeCapabilities,
79
+ preview,
80
+ execute
81
+ };