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.
- package/.env.example +29 -0
- package/BSV_TERANODE_SETUP.md +43 -0
- package/README.md +82 -7
- package/REAL_PAYMENT_SETUP.md +61 -0
- package/RELEASE_NOTES.md +23 -17
- package/SERVICE_CONTRACT.md +106 -0
- package/START_HERE.md +146 -5
- package/TREASURY_DESTINATIONS.example.json +66 -0
- package/TREASURY_DESTINATIONS.production.template.json +108 -0
- package/adapters/examples/langchain-reference-execution-adapter.js +81 -0
- package/adapters/examples/langchain-reference-execution-adapter.manifest.json +79 -0
- package/adapters/examples/langgraph-reference-execution-adapter.js +81 -0
- package/adapters/examples/langgraph-reference-execution-adapter.manifest.json +79 -0
- package/bin/xytara-first-run.js +244 -0
- package/bin/xytara.js +80 -0
- package/index.js +1 -1
- package/integrations/dispatch.js +7 -2
- package/integrations/registry.js +123 -2
- package/lib/a2a_lane_contract.js +104 -0
- package/lib/a2c_lane_contract.js +111 -0
- package/lib/activity_audit_contract.js +322 -0
- package/lib/adapter_depth_contract.js +156 -0
- package/lib/artifact_distribution_lane_contract.js +54 -0
- package/lib/asyncapi_contract.js +150 -0
- package/lib/auth_interop_contract.js +80 -0
- package/lib/bolt_lane_contract.js +55 -0
- package/lib/bolt_payment_front.js +172 -0
- package/lib/capability_execution_truth.js +269 -0
- package/lib/capability_registry.js +39 -2
- package/lib/checkout_event_security.js +142 -0
- package/lib/cloudevents_contract.js +80 -0
- package/lib/command_flow.js +169 -36
- package/lib/commerce_artifacts.js +23 -4
- package/lib/commerce_checkout.js +134 -4
- package/lib/commerce_client.js +52 -0
- package/lib/commerce_economics.js +109 -9
- package/lib/commerce_runtime.js +38 -2
- package/lib/commerce_shell.js +4 -2
- package/lib/erc8004_lane_contract.js +65 -0
- package/lib/event_system_lane_contract.js +75 -0
- package/lib/external_execution_runtime.js +132 -0
- package/lib/feature_control_lane_contract.js +54 -0
- package/lib/framework_lane_contract.js +89 -0
- package/lib/go_live_operator_pack.js +339 -0
- package/lib/http_transport.js +32 -0
- package/lib/identity_interop_contract.js +82 -0
- package/lib/integration_matrix_contract.js +99 -0
- package/lib/l402_lane_contract.js +55 -0
- package/lib/l402_payment_front.js +192 -0
- package/lib/major_rails_lane_contract.js +90 -0
- package/lib/mcp_lane_contract.js +110 -0
- package/lib/network_transport.js +110 -0
- package/lib/openapi_contract.js +296 -0
- package/lib/operator_intelligence.js +215 -1
- package/lib/payment_config.js +80 -3
- package/lib/payment_front_registry.js +53 -0
- package/lib/payment_protocol_contract.js +165 -0
- package/lib/payment_verification.js +23 -3
- package/lib/pricing_optimization_contract.js +556 -0
- package/lib/protocol_lane_contract.js +114 -0
- package/lib/provenance_lane_contract.js +54 -0
- package/lib/provider_lane_contract.js +72 -0
- package/lib/release_history.js +31 -0
- package/lib/request_rate_limit.js +144 -0
- package/lib/runtime_bridge.js +10 -2
- package/lib/runtime_operations_worker.js +282 -0
- package/lib/settlement_bsv_live.js +79 -4
- package/lib/settlement_lane_contract.js +111 -0
- package/lib/shared_signals_lane_contract.js +54 -0
- package/lib/stablecoin_lane_contract.js +76 -0
- package/lib/stripe_mpp_lane_contract.js +96 -0
- package/lib/stripe_mpp_payment_front.js +158 -0
- package/lib/telemetry_lane_contract.js +54 -0
- package/lib/treasury_destinations_contract.js +543 -0
- package/lib/treasury_egress_policy_contract.js +91 -0
- package/lib/treasury_lane_contract.js +84 -0
- package/lib/x402_lane_contract.js +118 -0
- package/package.json +18 -23
- package/server.js +994 -88
- package/OPERATIONS_RUNBOOK.md +0 -65
- package/OPERATOR_START_HERE.md +0 -63
- package/PROGRAM_COMPLETE_RELEASE.md +0 -63
- package/PROGRAM_STATUS.md +0 -57
- package/PUBLISH_PLAN.md +0 -14
- 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
|
-
##
|
|
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
|
-
|
|
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
|
-
##
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
+
};
|