xytara 2.1.0 → 2.2.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 (159) hide show
  1. package/.env.example +5 -1
  2. package/ADAPTER_START_HERE.md +56 -0
  3. package/CARRIED_HANDOFF_DEMO.md +60 -0
  4. package/EXAMPLE_PATHS.md +53 -0
  5. package/OPERATIONS_RUNBOOK.md +65 -0
  6. package/OPERATOR_START_HERE.md +63 -0
  7. package/PARTNER_READY_PATH.md +71 -0
  8. package/PROGRAM_COMPLETE_RELEASE.md +63 -0
  9. package/PROGRAM_STATUS.md +57 -0
  10. package/PUBLIC_DEMO_SCRIPT.md +78 -0
  11. package/PUBLISH_PLAN.md +7 -5
  12. package/README.md +66 -0
  13. package/RELEASE_CHECKLIST.md +8 -2
  14. package/RELEASE_NOTES.md +12 -3
  15. package/START_HERE.md +32 -0
  16. package/SUPABASE_RUNTIME_STATE_SETUP.md +61 -0
  17. package/WHY_XYTARA_XOONYA.md +63 -0
  18. package/adapters/examples/minimal-third-party-execution-adapter.js +61 -0
  19. package/adapters/examples/minimal-third-party-execution-adapter.manifest.json +79 -0
  20. package/adapters/examples/minimal-third-party-execution-registration.record.json +26 -0
  21. package/adapters/examples/minimal-third-party-execution.certification-pack.json +22 -0
  22. package/adapters/examples/minimal-third-party-execution.submission-bundle.json +126 -0
  23. package/bin/xytara-release.js +1251 -1
  24. package/examples/adapter_review_walkthrough.js +53 -0
  25. package/examples/export_carried_handoff.js +80 -0
  26. package/examples/funded_runtime_walkthrough.js +70 -0
  27. package/examples/partner_launch_walkthrough.js +43 -0
  28. package/examples/quickstart.js +3255 -0
  29. package/index.js +7 -1
  30. package/lib/adapter_pack.js +118 -0
  31. package/lib/adapter_partner_pack.js +89 -0
  32. package/lib/adapter_promotion_pack.js +89 -0
  33. package/lib/outreach_copy_pack.js +51 -0
  34. package/lib/outreach_message_pack.js +71 -0
  35. package/lib/outreach_target_pack.js +60 -0
  36. package/lib/phase_10_closeout_pack.js +45 -0
  37. package/lib/phase_10_completion_pack.js +76 -0
  38. package/lib/phase_10_decision_record_pack.js +54 -0
  39. package/lib/phase_10_decision_resolution_pack.js +53 -0
  40. package/lib/phase_10_demand_signal_adapters_runtime_pack.js +74 -0
  41. package/lib/phase_10_ecosystem_backlog_triage_runtime_pack.js +74 -0
  42. package/lib/phase_10_freeze_baseline_pack.js +67 -0
  43. package/lib/phase_10_freeze_review_pack.js +64 -0
  44. package/lib/phase_10_gate_pack.js +57 -0
  45. package/lib/phase_10_long_tail_continuity_pack.js +80 -0
  46. package/lib/phase_10_long_tail_ecosystem_pack.js +66 -0
  47. package/lib/phase_10_niche_extension_registry_runtime_pack.js +74 -0
  48. package/lib/phase_1_claude_mcp_pack.js +60 -0
  49. package/lib/phase_1_claude_mcp_runtime_pack.js +52 -0
  50. package/lib/phase_1_ecosystem_pack.js +67 -0
  51. package/lib/phase_1_openai_codex_pack.js +60 -0
  52. package/lib/phase_1_openai_codex_runtime_pack.js +52 -0
  53. package/lib/phase_2_base_runtime_pack.js +71 -0
  54. package/lib/phase_2_base_usdc_runtime_pack.js +72 -0
  55. package/lib/phase_2_closeout_pack.js +65 -0
  56. package/lib/phase_2_completion_pack.js +113 -0
  57. package/lib/phase_2_decision_record_pack.js +66 -0
  58. package/lib/phase_2_decision_resolution_pack.js +69 -0
  59. package/lib/phase_2_eth_runtime_pack.js +70 -0
  60. package/lib/phase_2_evm_base_runtime_pack.js +73 -0
  61. package/lib/phase_2_evm_runtime_pack.js +71 -0
  62. package/lib/phase_2_flip_preview_pack.js +60 -0
  63. package/lib/phase_2_freeze_review_pack.js +99 -0
  64. package/lib/phase_2_gate_pack.js +77 -0
  65. package/lib/phase_2_payment_rails_pack.js +71 -0
  66. package/lib/phase_2_usdc_runtime_pack.js +71 -0
  67. package/lib/phase_3_brc_runtime_pack.js +81 -0
  68. package/lib/phase_3_bsv_teranode_runtime_pack.js +83 -0
  69. package/lib/phase_3_closeout_pack.js +62 -0
  70. package/lib/phase_3_completion_pack.js +94 -0
  71. package/lib/phase_3_decision_record_pack.js +64 -0
  72. package/lib/phase_3_decision_resolution_pack.js +69 -0
  73. package/lib/phase_3_freeze_baseline_pack.js +67 -0
  74. package/lib/phase_3_freeze_review_pack.js +80 -0
  75. package/lib/phase_3_gate_pack.js +76 -0
  76. package/lib/phase_3_metanet_runtime_pack.js +81 -0
  77. package/lib/phase_3_native_bsv_pack.js +91 -0
  78. package/lib/phase_3_native_continuity_pack.js +82 -0
  79. package/lib/phase_4_attestation_runtime_pack.js +75 -0
  80. package/lib/phase_4_closeout_pack.js +45 -0
  81. package/lib/phase_4_completion_pack.js +94 -0
  82. package/lib/phase_4_decision_record_pack.js +54 -0
  83. package/lib/phase_4_decision_resolution_pack.js +45 -0
  84. package/lib/phase_4_erc8004_runtime_pack.js +76 -0
  85. package/lib/phase_4_freeze_baseline_pack.js +67 -0
  86. package/lib/phase_4_freeze_review_pack.js +68 -0
  87. package/lib/phase_4_gate_pack.js +58 -0
  88. package/lib/phase_4_identity_registry_runtime_pack.js +75 -0
  89. package/lib/phase_4_identity_trust_pack.js +73 -0
  90. package/lib/phase_4_trust_continuity_pack.js +86 -0
  91. package/lib/phase_5_antelope_runtime_pack.js +76 -0
  92. package/lib/phase_5_closeout_pack.js +44 -0
  93. package/lib/phase_5_completion_pack.js +82 -0
  94. package/lib/phase_5_decision_record_pack.js +54 -0
  95. package/lib/phase_5_decision_resolution_pack.js +45 -0
  96. package/lib/phase_5_freeze_baseline_pack.js +67 -0
  97. package/lib/phase_5_freeze_review_pack.js +68 -0
  98. package/lib/phase_5_gate_pack.js +58 -0
  99. package/lib/phase_5_major_rails_continuity_pack.js +86 -0
  100. package/lib/phase_5_major_rails_pack.js +74 -0
  101. package/lib/phase_5_proton_xpr_runtime_pack.js +76 -0
  102. package/lib/phase_5_solana_runtime_pack.js +76 -0
  103. package/lib/phase_6_autogen_runtime_pack.js +72 -0
  104. package/lib/phase_6_closeout_pack.js +46 -0
  105. package/lib/phase_6_completion_pack.js +77 -0
  106. package/lib/phase_6_decision_record_pack.js +54 -0
  107. package/lib/phase_6_decision_resolution_pack.js +53 -0
  108. package/lib/phase_6_framework_continuity_pack.js +81 -0
  109. package/lib/phase_6_framework_runtime_pack.js +68 -0
  110. package/lib/phase_6_freeze_baseline_pack.js +68 -0
  111. package/lib/phase_6_freeze_review_pack.js +65 -0
  112. package/lib/phase_6_gate_pack.js +59 -0
  113. package/lib/phase_6_langchain_runtime_pack.js +72 -0
  114. package/lib/phase_6_langgraph_runtime_pack.js +72 -0
  115. package/lib/phase_6_semantic_kernel_runtime_pack.js +72 -0
  116. package/lib/phase_7_closeout_pack.js +45 -0
  117. package/lib/phase_7_completion_pack.js +85 -0
  118. package/lib/phase_7_decision_record_pack.js +53 -0
  119. package/lib/phase_7_decision_resolution_pack.js +53 -0
  120. package/lib/phase_7_event_system_continuity_pack.js +89 -0
  121. package/lib/phase_7_event_system_pack.js +76 -0
  122. package/lib/phase_7_freeze_baseline_pack.js +74 -0
  123. package/lib/phase_7_freeze_review_pack.js +65 -0
  124. package/lib/phase_7_gate_pack.js +58 -0
  125. package/lib/phase_7_kafka_runtime_pack.js +74 -0
  126. package/lib/phase_7_mqtt_runtime_pack.js +74 -0
  127. package/lib/phase_7_nats_runtime_pack.js +74 -0
  128. package/lib/phase_7_webhook_event_bus_runtime_pack.js +74 -0
  129. package/lib/phase_8_closeout_pack.js +46 -0
  130. package/lib/phase_8_completion_pack.js +82 -0
  131. package/lib/phase_8_decision_record_pack.js +54 -0
  132. package/lib/phase_8_decision_resolution_pack.js +53 -0
  133. package/lib/phase_8_external_receipt_import_runtime_pack.js +74 -0
  134. package/lib/phase_8_external_result_import_runtime_pack.js +74 -0
  135. package/lib/phase_8_freeze_baseline_pack.js +71 -0
  136. package/lib/phase_8_freeze_review_pack.js +64 -0
  137. package/lib/phase_8_gate_pack.js +58 -0
  138. package/lib/phase_8_proof_bridge_continuity_pack.js +86 -0
  139. package/lib/phase_8_proof_bridges_pack.js +72 -0
  140. package/lib/phase_8_proof_bundle_normalization_runtime_pack.js +74 -0
  141. package/lib/phase_9_closeout_pack.js +46 -0
  142. package/lib/phase_9_completion_pack.js +82 -0
  143. package/lib/phase_9_custody_refs_runtime_pack.js +74 -0
  144. package/lib/phase_9_decision_record_pack.js +54 -0
  145. package/lib/phase_9_decision_resolution_pack.js +53 -0
  146. package/lib/phase_9_freeze_baseline_pack.js +71 -0
  147. package/lib/phase_9_freeze_review_pack.js +64 -0
  148. package/lib/phase_9_gate_pack.js +58 -0
  149. package/lib/phase_9_operator_accounting_bridges_runtime_pack.js +74 -0
  150. package/lib/phase_9_treasury_connectivity_pack.js +72 -0
  151. package/lib/phase_9_treasury_continuity_pack.js +86 -0
  152. package/lib/phase_9_treasury_destinations_runtime_pack.js +74 -0
  153. package/lib/phase_program_pack.js +120 -0
  154. package/lib/release_center.js +970 -0
  155. package/lib/release_history.js +1 -1
  156. package/lib/runtime_state_store.js +212 -27
  157. package/lib/soft_launch_pack.js +78 -0
  158. package/package.json +13 -1
  159. package/server.js +2055 -252
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+
3
+ const assert = require("assert");
4
+ const { createServer } = require("../server");
5
+
6
+ async function fetchJson(url) {
7
+ const response = await fetch(url);
8
+ assert.strictEqual(response.ok, true, `request failed: ${url}`);
9
+ return response.json();
10
+ }
11
+
12
+ async function postJson(url, body) {
13
+ const response = await fetch(url, {
14
+ method: "POST",
15
+ headers: {
16
+ "content-type": "application/json"
17
+ },
18
+ body: JSON.stringify(body)
19
+ });
20
+ assert.strictEqual(response.ok, true, `request failed: ${url}`);
21
+ return response.json();
22
+ }
23
+
24
+ async function main() {
25
+ const server = createServer();
26
+ await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
27
+ const { port } = server.address();
28
+ const baseUrl = `http://127.0.0.1:${port}`;
29
+
30
+ try {
31
+ const partnerSummary = await fetchJson(`${baseUrl}/v1/adapter-partners/summary`);
32
+ assert.strictEqual(typeof partnerSummary.category, "string", "adapter partner summary missing");
33
+
34
+ const readiness = await fetchJson(`${baseUrl}/v1/integrations/promotion-readiness`);
35
+ assert.strictEqual(readiness.ok, true, "promotion readiness summary missing");
36
+
37
+ const actionPreview = await postJson(`${baseUrl}/v1/integrations/promotion-actions/preview`, {
38
+ integration_id: "partner.protocol.acme_mcp",
39
+ action: "complete_certification"
40
+ });
41
+ assert.strictEqual(actionPreview.ok, true, "promotion action preview missing");
42
+ assert.strictEqual(actionPreview.valid_now, true, "promotion action preview should be valid");
43
+
44
+ console.log("xytara adapter review walkthrough passed");
45
+ } finally {
46
+ await new Promise((resolve, reject) => server.close((error) => (error ? reject(error) : resolve())));
47
+ }
48
+ }
49
+
50
+ main().catch((error) => {
51
+ console.error(error);
52
+ process.exitCode = 1;
53
+ });
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ const assert = require("assert");
4
+ const fs = require("fs");
5
+ const path = require("path");
6
+ const { createServer } = require("../server");
7
+ const { createClient } = require("../index.js");
8
+
9
+ function parseOutputPath(argv) {
10
+ const args = Array.isArray(argv) ? argv : [];
11
+ for (let index = 0; index < args.length; index += 1) {
12
+ if (args[index] === "--output" && args[index + 1]) {
13
+ return path.resolve(process.cwd(), args[index + 1]);
14
+ }
15
+ }
16
+ return path.resolve(process.cwd(), "examples", "generated.carried-handoff.json");
17
+ }
18
+
19
+ async function main() {
20
+ const outputPath = parseOutputPath(process.argv.slice(2));
21
+ const server = createServer();
22
+ await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
23
+ const address = server.address();
24
+ const baseUrl = `http://127.0.0.1:${address.port}`;
25
+
26
+ try {
27
+ const client = createClient({
28
+ baseUrl,
29
+ apiKey: "demo-api-key",
30
+ walletId: "demo-wallet",
31
+ walletSecret: "demo-wallet-secret",
32
+ accountId: "acct_demo"
33
+ });
34
+
35
+ const health = await client.getHealthSummary();
36
+ assert.strictEqual(health.status, "ok", "health summary missing");
37
+
38
+ const exported = await client.exportInteractionResultPackage("result.spine.job.commitment", {
39
+ job_type: "batch.render",
40
+ job_id: "job-carried-handoff-demo",
41
+ source_zone_id: "zone.alpha",
42
+ target_zone_id: "zone.beta",
43
+ interaction_class: "cross_zone_job"
44
+ }, {
45
+ command: "carried-handoff-demo-export"
46
+ });
47
+
48
+ assert.strictEqual(
49
+ exported.portable_handoff_bundle.result_package_ref,
50
+ "result.spine.job.commitment",
51
+ "portable handoff result package ref missing"
52
+ );
53
+
54
+ const reviewInput = {
55
+ handoff_bundle: exported.portable_handoff_bundle
56
+ };
57
+
58
+ fs.mkdirSync(path.dirname(outputPath), { recursive: true });
59
+ fs.writeFileSync(outputPath, JSON.stringify(reviewInput, null, 2));
60
+
61
+ process.stdout.write(JSON.stringify({
62
+ ok: true,
63
+ output_file: outputPath,
64
+ result_package_ref: exported.portable_handoff_bundle.result_package_ref,
65
+ committed_ref: exported.portable_handoff_bundle.committed_ref,
66
+ proof_review_summary_surface: "/v1/proof-center/result-package-handoff/review/summary",
67
+ proof_run_surface: "/v1/proof-center/result-package-handoff/run",
68
+ next_xoonya_cli: `xoonya-review --file "${outputPath}" --summary`
69
+ }, null, 2));
70
+ } finally {
71
+ await new Promise((resolve, reject) => {
72
+ server.close((error) => (error ? reject(error) : resolve()));
73
+ });
74
+ }
75
+ }
76
+
77
+ main().catch((error) => {
78
+ process.stderr.write(`${error.stack || error.message}\n`);
79
+ process.exitCode = 1;
80
+ });
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ const assert = require("assert");
4
+ const { createServer } = require("../server");
5
+
6
+ async function fetchJson(url, options) {
7
+ const response = await fetch(url, options);
8
+ assert.strictEqual(response.ok, true, `request failed: ${url}`);
9
+ return response.json();
10
+ }
11
+
12
+ async function postJson(url, body, headers = {}) {
13
+ return fetchJson(url, {
14
+ method: "POST",
15
+ headers: {
16
+ "content-type": "application/json",
17
+ authorization: "Bearer demo-api-key",
18
+ ...headers
19
+ },
20
+ body: JSON.stringify(body)
21
+ });
22
+ }
23
+
24
+ async function main() {
25
+ const server = createServer();
26
+ await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
27
+ const { port } = server.address();
28
+ const baseUrl = `http://127.0.0.1:${port}`;
29
+
30
+ try {
31
+ const packSummary = await fetchJson(`${baseUrl}/v1/credit-packs/summary`);
32
+ assert.strictEqual(packSummary.ok, true, "credit pack summary missing");
33
+ assert.strictEqual(packSummary.credit_pack_count > 0, true, "credit pack count missing");
34
+
35
+ const grant = await postJson(
36
+ `${baseUrl}/v1/credit-bridge/grants`,
37
+ {
38
+ account_id: "acct_demo",
39
+ pack_id: "credits.agent",
40
+ grant_units: 120,
41
+ settlement_ref: "settlement-funded-runtime-demo-1",
42
+ external_ref: "external-funded-runtime-demo-1"
43
+ },
44
+ {
45
+ authorization: "Bearer demo-credit-bridge-token"
46
+ }
47
+ );
48
+ assert.strictEqual(grant.ok, true, "credit bridge grant missing");
49
+
50
+ const balance = await fetchJson(`${baseUrl}/v1/economics/accounts/acct_demo/credit-balance`);
51
+ assert.strictEqual(balance.account_id, "acct_demo", "credit balance missing");
52
+ assert.strictEqual(balance.available_units > 0, true, "credit balance not funded");
53
+
54
+ const preview = await postJson(`${baseUrl}/v1/economics/rails/credits/preview-spend`, {
55
+ account_id: "acct_demo",
56
+ task_ref: "trust.verify",
57
+ units: 40
58
+ });
59
+ assert.strictEqual(preview.ok, true, "credit preview missing");
60
+
61
+ console.log("xytara funded runtime walkthrough passed");
62
+ } finally {
63
+ await new Promise((resolve, reject) => server.close((error) => (error ? reject(error) : resolve())));
64
+ }
65
+ }
66
+
67
+ main().catch((error) => {
68
+ console.error(error);
69
+ process.exitCode = 1;
70
+ });
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ const assert = require("assert");
4
+ const { createServer } = require("../server");
5
+
6
+ async function fetchJson(url, options) {
7
+ const response = await fetch(url, options);
8
+ assert.strictEqual(response.ok, true, `request failed: ${url}`);
9
+ return response.json();
10
+ }
11
+
12
+ async function main() {
13
+ const server = createServer();
14
+ await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
15
+ const address = server.address();
16
+ const baseUrl = `http://127.0.0.1:${address.port}`;
17
+
18
+ try {
19
+ const releaseCenterSummary = await fetchJson(`${baseUrl}/v1/release-center/summary`);
20
+ assert.strictEqual(typeof releaseCenterSummary.category, "string", "release-center summary category missing");
21
+
22
+ const releaseCandidateSummary = await fetchJson(`${baseUrl}/v1/release-candidate/summary`);
23
+ assert.strictEqual(typeof releaseCandidateSummary.category, "string", "release-candidate summary category missing");
24
+
25
+ const durability = await fetchJson(`${baseUrl}/v1/runtime/durability`);
26
+ assert.strictEqual(durability.ok, true, "durability surface missing");
27
+ assert.strictEqual(typeof durability.operator_guidance, "string", "durability guidance missing");
28
+
29
+ const adapterPartnersSummary = await fetchJson(`${baseUrl}/v1/adapter-partners/summary`);
30
+ assert.strictEqual(typeof adapterPartnersSummary.category, "string", "adapter partners summary category missing");
31
+
32
+ console.log("xytara partner launch walkthrough passed");
33
+ } finally {
34
+ await new Promise((resolve, reject) => {
35
+ server.close((error) => (error ? reject(error) : resolve()));
36
+ });
37
+ }
38
+ }
39
+
40
+ main().catch((error) => {
41
+ console.error(error);
42
+ process.exitCode = 1;
43
+ });