orbit-agent-runtime 0.8.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 (168) hide show
  1. package/CHANGELOG.md +750 -0
  2. package/LICENSE +201 -0
  3. package/README.md +492 -0
  4. package/README.zh-CN.md +389 -0
  5. package/benchmarks/README.md +24 -0
  6. package/benchmarks/gateway.mjs +68 -0
  7. package/benchmarks/pae.mjs +90 -0
  8. package/benchmarks/replay.mjs +51 -0
  9. package/benchmarks/run-all.mjs +24 -0
  10. package/benchmarks/wal.mjs +50 -0
  11. package/bin/orbit.mjs +523 -0
  12. package/dist/.tsbuildinfo +1 -0
  13. package/dist/demo-deepseek.d.ts +2 -0
  14. package/dist/demo-deepseek.d.ts.map +1 -0
  15. package/dist/demo-deepseek.js +66 -0
  16. package/dist/demo-deepseek.js.map +1 -0
  17. package/dist/demo-host.d.ts +2 -0
  18. package/dist/demo-host.d.ts.map +1 -0
  19. package/dist/demo-host.js +98 -0
  20. package/dist/demo-host.js.map +1 -0
  21. package/dist/demo-replay.d.ts +2 -0
  22. package/dist/demo-replay.d.ts.map +1 -0
  23. package/dist/demo-replay.js +68 -0
  24. package/dist/demo-replay.js.map +1 -0
  25. package/dist/src/core/orbitRuntimeHost.d.ts +349 -0
  26. package/dist/src/core/orbitRuntimeHost.d.ts.map +1 -0
  27. package/dist/src/core/orbitRuntimeHost.js +706 -0
  28. package/dist/src/core/orbitRuntimeHost.js.map +1 -0
  29. package/dist/src/index.d.ts +92 -0
  30. package/dist/src/index.d.ts.map +1 -0
  31. package/dist/src/index.js +226 -0
  32. package/dist/src/index.js.map +1 -0
  33. package/dist/test/audit_chain.test.d.ts +2 -0
  34. package/dist/test/audit_chain.test.d.ts.map +1 -0
  35. package/dist/test/audit_chain.test.js +283 -0
  36. package/dist/test/audit_chain.test.js.map +1 -0
  37. package/dist/test/channel_hub.test.d.ts +2 -0
  38. package/dist/test/channel_hub.test.d.ts.map +1 -0
  39. package/dist/test/channel_hub.test.js +66 -0
  40. package/dist/test/channel_hub.test.js.map +1 -0
  41. package/dist/test/cordis_adapter.test.d.ts +2 -0
  42. package/dist/test/cordis_adapter.test.d.ts.map +1 -0
  43. package/dist/test/cordis_adapter.test.js +280 -0
  44. package/dist/test/cordis_adapter.test.js.map +1 -0
  45. package/dist/test/cost_routing.test.d.ts +2 -0
  46. package/dist/test/cost_routing.test.d.ts.map +1 -0
  47. package/dist/test/cost_routing.test.js +31 -0
  48. package/dist/test/cost_routing.test.js.map +1 -0
  49. package/dist/test/domain_transaction.test.d.ts +2 -0
  50. package/dist/test/domain_transaction.test.d.ts.map +1 -0
  51. package/dist/test/domain_transaction.test.js +351 -0
  52. package/dist/test/domain_transaction.test.js.map +1 -0
  53. package/dist/test/file_channel.test.d.ts +2 -0
  54. package/dist/test/file_channel.test.d.ts.map +1 -0
  55. package/dist/test/file_channel.test.js +179 -0
  56. package/dist/test/file_channel.test.js.map +1 -0
  57. package/dist/test/gateway.test.d.ts +2 -0
  58. package/dist/test/gateway.test.d.ts.map +1 -0
  59. package/dist/test/gateway.test.js +548 -0
  60. package/dist/test/gateway.test.js.map +1 -0
  61. package/dist/test/governance_profile.test.d.ts +2 -0
  62. package/dist/test/governance_profile.test.d.ts.map +1 -0
  63. package/dist/test/governance_profile.test.js +214 -0
  64. package/dist/test/governance_profile.test.js.map +1 -0
  65. package/dist/test/governance_schema.test.d.ts +2 -0
  66. package/dist/test/governance_schema.test.d.ts.map +1 -0
  67. package/dist/test/governance_schema.test.js +200 -0
  68. package/dist/test/governance_schema.test.js.map +1 -0
  69. package/dist/test/host_integration.test.d.ts +2 -0
  70. package/dist/test/host_integration.test.d.ts.map +1 -0
  71. package/dist/test/host_integration.test.js +104 -0
  72. package/dist/test/host_integration.test.js.map +1 -0
  73. package/dist/test/host_journal_persistence.test.d.ts +2 -0
  74. package/dist/test/host_journal_persistence.test.d.ts.map +1 -0
  75. package/dist/test/host_journal_persistence.test.js +367 -0
  76. package/dist/test/host_journal_persistence.test.js.map +1 -0
  77. package/dist/test/impact_domain.test.d.ts +2 -0
  78. package/dist/test/impact_domain.test.d.ts.map +1 -0
  79. package/dist/test/impact_domain.test.js +48 -0
  80. package/dist/test/impact_domain.test.js.map +1 -0
  81. package/dist/test/injected_clock.test.d.ts +13 -0
  82. package/dist/test/injected_clock.test.d.ts.map +1 -0
  83. package/dist/test/injected_clock.test.js +200 -0
  84. package/dist/test/injected_clock.test.js.map +1 -0
  85. package/dist/test/isolation_domain.test.d.ts +2 -0
  86. package/dist/test/isolation_domain.test.d.ts.map +1 -0
  87. package/dist/test/isolation_domain.test.js +302 -0
  88. package/dist/test/isolation_domain.test.js.map +1 -0
  89. package/dist/test/journal_wal.test.d.ts +2 -0
  90. package/dist/test/journal_wal.test.d.ts.map +1 -0
  91. package/dist/test/journal_wal.test.js +622 -0
  92. package/dist/test/journal_wal.test.js.map +1 -0
  93. package/dist/test/mcp_adapter.test.d.ts +2 -0
  94. package/dist/test/mcp_adapter.test.d.ts.map +1 -0
  95. package/dist/test/mcp_adapter.test.js +440 -0
  96. package/dist/test/mcp_adapter.test.js.map +1 -0
  97. package/dist/test/openai_compat_channel.test.d.ts +2 -0
  98. package/dist/test/openai_compat_channel.test.d.ts.map +1 -0
  99. package/dist/test/openai_compat_channel.test.js +325 -0
  100. package/dist/test/openai_compat_channel.test.js.map +1 -0
  101. package/dist/test/openapi_adapter.test.d.ts +2 -0
  102. package/dist/test/openapi_adapter.test.d.ts.map +1 -0
  103. package/dist/test/openapi_adapter.test.js +270 -0
  104. package/dist/test/openapi_adapter.test.js.map +1 -0
  105. package/dist/test/orbit_cli.test.d.ts +2 -0
  106. package/dist/test/orbit_cli.test.d.ts.map +1 -0
  107. package/dist/test/orbit_cli.test.js +137 -0
  108. package/dist/test/orbit_cli.test.js.map +1 -0
  109. package/dist/test/pact_verifier.test.d.ts +2 -0
  110. package/dist/test/pact_verifier.test.d.ts.map +1 -0
  111. package/dist/test/pact_verifier.test.js +41 -0
  112. package/dist/test/pact_verifier.test.js.map +1 -0
  113. package/dist/test/pae_adapter.test.d.ts +2 -0
  114. package/dist/test/pae_adapter.test.d.ts.map +1 -0
  115. package/dist/test/pae_adapter.test.js +469 -0
  116. package/dist/test/pae_adapter.test.js.map +1 -0
  117. package/dist/test/plugin_sandbox_guard.test.d.ts +2 -0
  118. package/dist/test/plugin_sandbox_guard.test.d.ts.map +1 -0
  119. package/dist/test/plugin_sandbox_guard.test.js +57 -0
  120. package/dist/test/plugin_sandbox_guard.test.js.map +1 -0
  121. package/dist/test/rate_limit_behavior.test.d.ts +2 -0
  122. package/dist/test/rate_limit_behavior.test.d.ts.map +1 -0
  123. package/dist/test/rate_limit_behavior.test.js +85 -0
  124. package/dist/test/rate_limit_behavior.test.js.map +1 -0
  125. package/dist/test/replay_compat.test.d.ts +2 -0
  126. package/dist/test/replay_compat.test.d.ts.map +1 -0
  127. package/dist/test/replay_compat.test.js +1122 -0
  128. package/dist/test/replay_compat.test.js.map +1 -0
  129. package/dist/test/replay_engine.test.d.ts +2 -0
  130. package/dist/test/replay_engine.test.d.ts.map +1 -0
  131. package/dist/test/replay_engine.test.js +85 -0
  132. package/dist/test/replay_engine.test.js.map +1 -0
  133. package/dist/test/shell_channel.test.d.ts +2 -0
  134. package/dist/test/shell_channel.test.d.ts.map +1 -0
  135. package/dist/test/shell_channel.test.js +173 -0
  136. package/dist/test/shell_channel.test.js.map +1 -0
  137. package/dist/test/teardown_isolation.test.d.ts +10 -0
  138. package/dist/test/teardown_isolation.test.d.ts.map +1 -0
  139. package/dist/test/teardown_isolation.test.js +279 -0
  140. package/dist/test/teardown_isolation.test.js.map +1 -0
  141. package/dist/test/token_budget.test.d.ts +2 -0
  142. package/dist/test/token_budget.test.d.ts.map +1 -0
  143. package/dist/test/token_budget.test.js +113 -0
  144. package/dist/test/token_budget.test.js.map +1 -0
  145. package/dist/test/trace_journal.test.d.ts +2 -0
  146. package/dist/test/trace_journal.test.d.ts.map +1 -0
  147. package/dist/test/trace_journal.test.js +43 -0
  148. package/dist/test/trace_journal.test.js.map +1 -0
  149. package/dist/test/trace_journal_persistence.test.d.ts +2 -0
  150. package/dist/test/trace_journal_persistence.test.d.ts.map +1 -0
  151. package/dist/test/trace_journal_persistence.test.js +175 -0
  152. package/dist/test/trace_journal_persistence.test.js.map +1 -0
  153. package/dist/test/trace_persistence.test.d.ts +2 -0
  154. package/dist/test/trace_persistence.test.d.ts.map +1 -0
  155. package/dist/test/trace_persistence.test.js +216 -0
  156. package/dist/test/trace_persistence.test.js.map +1 -0
  157. package/dist/test/trip_protector.test.d.ts +2 -0
  158. package/dist/test/trip_protector.test.d.ts.map +1 -0
  159. package/dist/test/trip_protector.test.js +42 -0
  160. package/dist/test/trip_protector.test.js.map +1 -0
  161. package/examples/README.md +34 -0
  162. package/examples/cli-record-replay.mjs +74 -0
  163. package/examples/custom-channel.mjs +102 -0
  164. package/examples/js-pae-plugin.mjs +128 -0
  165. package/examples/mcp-adapter.mjs +102 -0
  166. package/package.json +60 -0
  167. package/src/core/orbitRuntimeHost.ts +853 -0
  168. package/src/index.ts +256 -0
@@ -0,0 +1,351 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const strict_1 = __importDefault(require("node:assert/strict"));
8
+ const index_1 = require("../src/index");
9
+ /**
10
+ * W20 — cross-domain transactions (VISION 2.1/2.2/2.5).
11
+ *
12
+ * Three layers, the same split the rest of the kernel uses:
13
+ *
14
+ * 1. **pure ledger** — begin / execute / settle / reconcile, with no clock, no
15
+ * randomness and no I/O, so reconciliation is provable from the records;
16
+ * 2. **manager** — every hop through a domain opens a transaction, executes,
17
+ * and settles (success or failure); a refused hop is *recorded*, not lost;
18
+ * 3. **host** — the allocation plan becomes host state: graph mutations mark
19
+ * the plan stale, allocation is idempotent, and the fingerprint only grows a
20
+ * `domainPlanHash` once domains actually exist (backward compatible).
21
+ */
22
+ const CTX = { traceMarkId: "tm-txn", maxWaitMs: 1000 };
23
+ const ALLOWED = { targetDomain: "shared:0", isolation: "L2", allowed: true };
24
+ const REFUSED = {
25
+ targetDomain: "—",
26
+ isolation: "—",
27
+ allowed: false,
28
+ reason: "no isolation domain owns unit ghost"
29
+ };
30
+ /* ------------------------------------------------------------------ */
31
+ /* 1. Pure ledger */
32
+ /* ------------------------------------------------------------------ */
33
+ (0, node_test_1.test)("transaction: ids are sequential and deterministic", () => {
34
+ strict_1.default.equal((0, index_1.newTxnId)(0), "dtx:0");
35
+ strict_1.default.equal((0, index_1.newTxnId)(41), "dtx:41");
36
+ strict_1.default.throws(() => (0, index_1.newTxnId)(-1), /non-negative integer/);
37
+ strict_1.default.throws(() => (0, index_1.newTxnId)(1.5), /non-negative integer/);
38
+ });
39
+ (0, node_test_1.test)("transaction: an allowed hop opens in `decided`, a refused one closes as `rejected`", () => {
40
+ const open = (0, index_1.beginTransaction)({ seq: 0, ctx: CTX, targetUnit: "echo", tool: "echo", decision: ALLOWED });
41
+ strict_1.default.equal(open.state, "decided");
42
+ strict_1.default.equal(open.txnId, "dtx:0");
43
+ strict_1.default.equal(open.sourceDomain, "host", "an unknown caller is attributed to the host");
44
+ strict_1.default.equal(open.targetDomain, "shared:0");
45
+ const refused = (0, index_1.beginTransaction)({ seq: 1, ctx: CTX, targetUnit: "ghost", tool: "echo", decision: REFUSED });
46
+ strict_1.default.equal(refused.state, "rejected");
47
+ strict_1.default.equal((0, index_1.markExecuted)(refused), refused, "a refused transaction executes nothing");
48
+ });
49
+ (0, node_test_1.test)("transaction: execute then settle is the only path to a terminal state", () => {
50
+ const open = (0, index_1.beginTransaction)({ seq: 0, ctx: CTX, targetUnit: "echo", tool: "echo", decision: ALLOWED });
51
+ const executed = (0, index_1.markExecuted)(open);
52
+ strict_1.default.equal(executed.state, "executed");
53
+ const settled = (0, index_1.settleTransaction)(executed, { ok: true, latencyMs: 3, costTokens: 2 });
54
+ strict_1.default.equal(settled.state, "settled");
55
+ strict_1.default.equal(settled.latencyMs, 3);
56
+ strict_1.default.equal(settled.costTokens, 2);
57
+ // Settling twice must not corrupt the record.
58
+ strict_1.default.equal((0, index_1.settleTransaction)(settled, { ok: false }), settled);
59
+ });
60
+ (0, node_test_1.test)("transaction: a failure is terminal and carries the reason", () => {
61
+ const open = (0, index_1.beginTransaction)({ seq: 0, ctx: CTX, targetUnit: "echo", tool: "echo", decision: ALLOWED });
62
+ const failed = (0, index_1.settleTransaction)((0, index_1.markExecuted)(open), { ok: false, error: "host exited" });
63
+ strict_1.default.equal(failed.state, "failed");
64
+ strict_1.default.equal(failed.error, "host exited");
65
+ });
66
+ (0, node_test_1.test)("reconciliation: a balanced ledger has no orphans and correct pair counts", () => {
67
+ const mk = (seq, src, tgt, ok) => {
68
+ const t = (0, index_1.beginTransaction)({
69
+ seq,
70
+ ctx: CTX,
71
+ targetUnit: "u",
72
+ tool: "t",
73
+ decision: { targetDomain: tgt, isolation: "L2", allowed: true },
74
+ sourceDomain: src
75
+ });
76
+ return (0, index_1.settleTransaction)((0, index_1.markExecuted)(t), { ok, error: ok ? undefined : "boom" });
77
+ };
78
+ const ledger = [mk(0, "host", "shared:0", true), mk(1, "host", "shared:0", false), mk(2, "host", "iso:x", true)];
79
+ const r = (0, index_1.reconcileTransactions)(ledger);
80
+ strict_1.default.equal(r.balanced, true);
81
+ strict_1.default.deepEqual(r.orphans, []);
82
+ strict_1.default.deepEqual(r.pairs.map((p) => `${p.sourceDomain}->${p.targetDomain}:${p.settled}/${p.failed}`), ["host->iso:x:1/0", "host->shared:0:1/1"]);
83
+ strict_1.default.deepEqual(r.totals, { transactions: 3, settled: 2, failed: 1, rejected: 0 });
84
+ });
85
+ (0, node_test_1.test)("reconciliation: an unsettled hop is detected as an orphan", () => {
86
+ const open = (0, index_1.beginTransaction)({ seq: 0, ctx: CTX, targetUnit: "u", tool: "t", decision: ALLOWED });
87
+ const r = (0, index_1.reconcileTransactions)([(0, index_1.markExecuted)(open)]);
88
+ strict_1.default.equal(r.balanced, false);
89
+ strict_1.default.deepEqual(r.orphans, ["dtx:0"]);
90
+ });
91
+ (0, node_test_1.test)("reconciliation: refusals are counted without poisoning the balance", () => {
92
+ const refused = (0, index_1.beginTransaction)({ seq: 7, ctx: CTX, targetUnit: "ghost", tool: "t", decision: REFUSED });
93
+ const r = (0, index_1.reconcileTransactions)([refused]);
94
+ strict_1.default.equal(r.balanced, true, "a refused hop never crossed the boundary, so it owes nothing");
95
+ strict_1.default.deepEqual(r.rejected, ["dtx:7"]);
96
+ strict_1.default.equal(r.totals.rejected, 1);
97
+ });
98
+ (0, node_test_1.test)("stableHash: equal ledgers hash equally, different ones differ", () => {
99
+ const mk = () => (0, index_1.beginTransaction)({ seq: 0, ctx: CTX, targetUnit: "u", tool: "t", decision: ALLOWED });
100
+ const a = (0, index_1.settleTransaction)((0, index_1.markExecuted)(mk()), { ok: true });
101
+ const b = (0, index_1.settleTransaction)((0, index_1.markExecuted)(mk()), { ok: true });
102
+ const c = (0, index_1.settleTransaction)((0, index_1.markExecuted)(mk()), { ok: false, error: "x" });
103
+ strict_1.default.equal((0, index_1.stableHash)(JSON.stringify(a)), (0, index_1.stableHash)(JSON.stringify(b)));
104
+ strict_1.default.notEqual((0, index_1.stableHash)(JSON.stringify(a)), (0, index_1.stableHash)(JSON.stringify(c)));
105
+ });
106
+ /* ------------------------------------------------------------------ */
107
+ /* 2. Manager — every hop is a transaction */
108
+ /* ------------------------------------------------------------------ */
109
+ function memoryManager(clock) {
110
+ const graph = new index_1.ImpactDomainGraph();
111
+ graph.addNode("echo");
112
+ graph.addNode("calc");
113
+ const manager = new index_1.IsolationDomainManager({
114
+ transportFactory: () => new index_1.InMemoryDomainTransport((method, params) => {
115
+ if (method === "initialize") {
116
+ return { protocolVersion: "1.0.0", hostInfo: { name: "txn-host", version: "1.0.0" } };
117
+ }
118
+ if (method === "units/list") {
119
+ return { units: [{ id: "echo", tools: [{ name: "sum" }] }, { id: "calc", tools: [{ name: "add" }] }] };
120
+ }
121
+ const p = params;
122
+ return p.arguments;
123
+ }),
124
+ clock: { now: clock }
125
+ });
126
+ return { manager, graph };
127
+ }
128
+ (0, node_test_1.test)("manager: a successful hop settles one transaction", async () => {
129
+ // An injected clock that advances 5ms per read: the hop is measured twice
130
+ // (start, end), so the settled latency is the injected delta.
131
+ let now = 0;
132
+ const { manager, graph } = memoryManager(() => (now += 5));
133
+ await manager.syncDomains(graph, CTX);
134
+ const out = await manager.invokeUnit("echo", "sum", [{ n: 1 }], CTX);
135
+ strict_1.default.deepEqual(out, { n: 1 });
136
+ const ledger = manager.txnLedger();
137
+ strict_1.default.equal(ledger.length, 1);
138
+ strict_1.default.equal(ledger[0].state, "settled");
139
+ strict_1.default.equal(ledger[0].txnId, "dtx:0");
140
+ strict_1.default.equal(ledger[0].latencyMs, 5, "latency comes from the injected clock, never Date.now()");
141
+ strict_1.default.deepEqual(manager.reconcile().orphans, []);
142
+ });
143
+ (0, node_test_1.test)("manager: a refused hop is recorded as rejected and throws", async () => {
144
+ const { manager, graph } = memoryManager(() => 0);
145
+ await manager.syncDomains(graph, CTX);
146
+ await strict_1.default.rejects(() => manager.invokeUnit("ghost", "sum", [], CTX), index_1.DomainUnitMissingError);
147
+ const ledger = manager.txnLedger();
148
+ strict_1.default.equal(ledger.length, 1);
149
+ strict_1.default.equal(ledger[0].state, "rejected");
150
+ strict_1.default.match(ledger[0].decision.reason ?? "", /no isolation domain owns unit ghost/);
151
+ strict_1.default.equal(manager.reconcile().balanced, true, "nothing crossed a boundary");
152
+ strict_1.default.equal(manager.reconcile().totals.rejected, 1);
153
+ });
154
+ (0, node_test_1.test)("manager: a failing host settles as failed and still fails the call", async () => {
155
+ const graph = new index_1.ImpactDomainGraph();
156
+ graph.addNode("broken");
157
+ const manager = new index_1.IsolationDomainManager({
158
+ transportFactory: () => new index_1.InMemoryDomainTransport(() => {
159
+ throw new index_1.DomainRemoteError("host exploded");
160
+ })
161
+ });
162
+ await strict_1.default.rejects(() => manager.syncDomains(graph, CTX), index_1.DomainRemoteError);
163
+ // A domain that never completed setup cannot be invoked; the plan still exists.
164
+ await strict_1.default.rejects(() => manager.invokeUnit("broken", "x", [], CTX), index_1.DomainUnitMissingError);
165
+ const ledger = manager.txnLedger();
166
+ strict_1.default.equal(ledger.length, 1);
167
+ strict_1.default.equal(ledger[0].state, "rejected");
168
+ });
169
+ (0, node_test_1.test)("manager: the ledger hashes identically for identical hop sequences", async () => {
170
+ let now = 0;
171
+ const a = memoryManager(() => now);
172
+ const b = memoryManager(() => now);
173
+ await a.manager.syncDomains(a.graph, CTX);
174
+ await b.manager.syncDomains(b.graph, CTX);
175
+ await a.manager.invokeUnit("echo", "sum", [{ n: 1 }], CTX);
176
+ await b.manager.invokeUnit("echo", "sum", [{ n: 1 }], CTX);
177
+ strict_1.default.equal(a.manager.ledgerHash(), b.manager.ledgerHash());
178
+ });
179
+ (0, node_test_1.test)("manager: clearLedger drops the records and restarts the sequence", async () => {
180
+ const { manager, graph } = memoryManager(() => 0);
181
+ await manager.syncDomains(graph, CTX);
182
+ await manager.invokeUnit("echo", "sum", [{}], CTX);
183
+ strict_1.default.equal(manager.txnLedger().length, 1);
184
+ manager.clearLedger();
185
+ strict_1.default.deepEqual(manager.txnLedger(), []);
186
+ await manager.invokeUnit("echo", "sum", [{}], CTX);
187
+ strict_1.default.equal(manager.txnLedger()[0].txnId, "dtx:0");
188
+ });
189
+ /* ------------------------------------------------------------------ */
190
+ /* 3. Host — the plan is host state */
191
+ /* ------------------------------------------------------------------ */
192
+ (0, node_test_1.test)("host: the graph marks domains stale, allocation clears it and is idempotent", async () => {
193
+ const host = new index_1.OrbitRuntimeHost();
194
+ await host.bootHost();
195
+ try {
196
+ strict_1.default.equal(host.domainsStale(), false, "a host that never allocated has nothing stale");
197
+ strict_1.default.equal(host.domainPlan(), null);
198
+ host.registerPlugin({
199
+ id: "p.alpha",
200
+ displayName: "p.alpha",
201
+ edition: "1.0.0",
202
+ requireHostMinEdition: "0.2.0",
203
+ allowCapabilities: ["channel:read", "channel:write"],
204
+ declareChannelDeps: [index_1.ChannelKind.LLM_ACCESS]
205
+ });
206
+ strict_1.default.equal(host.domainsStale(), true, "registering a unit invalidates the plan");
207
+ const plan = await host.allocateIsolationDomains({
208
+ transportFactory: () => new index_1.InMemoryDomainTransport(() => ({ units: [] })),
209
+ maxImpactClosure: 1
210
+ });
211
+ strict_1.default.equal(plan.domains.length >= 1, true);
212
+ strict_1.default.equal(host.domainsStale(), false, "allocation cleared the stale flag");
213
+ strict_1.default.deepEqual(host.domainPlan(), plan);
214
+ // Idempotent: the same graph yields the same plan hash and no churn.
215
+ const again = await host.allocateIsolationDomains();
216
+ strict_1.default.deepEqual(again, plan);
217
+ strict_1.default.equal(host.domains().length, plan.domains.length);
218
+ }
219
+ finally {
220
+ await host.shutdownHost();
221
+ }
222
+ });
223
+ (0, node_test_1.test)("host: a host that never allocates domains keeps the old fingerprint shape", async () => {
224
+ const host = new index_1.OrbitRuntimeHost();
225
+ await host.bootHost();
226
+ try {
227
+ const fp = host.runFingerprint();
228
+ strict_1.default.ok(!("domainPlanHash" in fp), "no domain plan ⇒ no domain field in the fingerprint");
229
+ strict_1.default.ok("paeEnabled" in fp);
230
+ }
231
+ finally {
232
+ await host.shutdownHost();
233
+ }
234
+ });
235
+ (0, node_test_1.test)("host: once domains exist the fingerprint carries a stable plan hash", async () => {
236
+ const host = new index_1.OrbitRuntimeHost();
237
+ await host.bootHost();
238
+ try {
239
+ host.registerPlugin({
240
+ id: "p.beta",
241
+ displayName: "p.beta",
242
+ edition: "1.0.0",
243
+ requireHostMinEdition: "0.2.0",
244
+ allowCapabilities: ["channel:read", "channel:write"],
245
+ declareChannelDeps: [index_1.ChannelKind.LLM_ACCESS]
246
+ });
247
+ await host.allocateIsolationDomains({
248
+ transportFactory: () => new index_1.InMemoryDomainTransport(() => ({ units: [] }))
249
+ });
250
+ const fp = host.runFingerprint();
251
+ strict_1.default.equal(typeof fp.domainPlanHash, "string");
252
+ strict_1.default.ok(fp.domainPlanHash.length > 0);
253
+ // Re-allocating the same graph must not perturb the hash.
254
+ await host.allocateIsolationDomains();
255
+ strict_1.default.equal(host.runFingerprint().domainPlanHash, fp.domainPlanHash);
256
+ }
257
+ finally {
258
+ await host.shutdownHost();
259
+ }
260
+ });
261
+ (0, node_test_1.test)("host: domain reconciliation over an empty ledger is balanced", async () => {
262
+ const host = new index_1.OrbitRuntimeHost();
263
+ await host.bootHost();
264
+ try {
265
+ const r = host.reconcileDomainTransactions();
266
+ strict_1.default.equal(r.balanced, true);
267
+ strict_1.default.deepEqual(r.totals, { transactions: 0, settled: 0, failed: 0, rejected: 0 });
268
+ strict_1.default.deepEqual(host.domainLedger(), []);
269
+ }
270
+ finally {
271
+ await host.shutdownHost();
272
+ }
273
+ });
274
+ (0, node_test_1.test)("host: invoking a domain unit is a recorded gateway transaction", async () => {
275
+ const host = new index_1.OrbitRuntimeHost();
276
+ await host.bootHost();
277
+ try {
278
+ host.registerPlugin({
279
+ id: "p.gamma",
280
+ displayName: "p.gamma",
281
+ edition: "1.0.0",
282
+ requireHostMinEdition: "0.2.0",
283
+ allowCapabilities: ["channel:read", "channel:write"],
284
+ declareChannelDeps: [index_1.ChannelKind.LLM_ACCESS]
285
+ });
286
+ // The unit lives in a domain host that answers with its argument object.
287
+ await host.allocateIsolationDomains({
288
+ transportFactory: () => new index_1.InMemoryDomainTransport((method, params) => {
289
+ if (method === "initialize") {
290
+ return { protocolVersion: "1.0.0", hostInfo: { name: "unit-host", version: "1.0.0" } };
291
+ }
292
+ if (method === "units/list") {
293
+ return { units: [{ id: "p.gamma", tools: [{ name: "ping" }] }] };
294
+ }
295
+ const p = params;
296
+ return { pong: p.arguments };
297
+ }),
298
+ maxImpactClosure: 1
299
+ });
300
+ const out = await host.invokeDomainUnit("p.gamma", "ping", [{ hello: "world" }], { pluginUnitId: "p.gamma" });
301
+ strict_1.default.deepEqual(out.pong, { hello: "world" });
302
+ const ledger = host.domainLedger();
303
+ strict_1.default.equal(ledger.length, 1);
304
+ strict_1.default.equal(ledger[0].state, "settled");
305
+ strict_1.default.equal(ledger[0].targetUnit, "p.gamma");
306
+ strict_1.default.equal(ledger[0].tool, "ping");
307
+ const r = host.reconcileDomainTransactions();
308
+ strict_1.default.equal(r.balanced, true);
309
+ strict_1.default.deepEqual(r.pairs.map((p) => `${p.sourceDomain}->${p.targetDomain}`), [
310
+ `${ledger[0].sourceDomain}->${ledger[0].targetDomain}`
311
+ ]);
312
+ }
313
+ finally {
314
+ await host.shutdownHost();
315
+ }
316
+ });
317
+ (0, node_test_1.test)("host: shutdown releases the domains", async () => {
318
+ const host = new index_1.OrbitRuntimeHost();
319
+ await host.bootHost();
320
+ host.registerPlugin({
321
+ id: "p.delta",
322
+ displayName: "p.delta",
323
+ edition: "1.0.0",
324
+ requireHostMinEdition: "0.2.0",
325
+ allowCapabilities: ["channel:read", "channel:write"],
326
+ declareChannelDeps: [index_1.ChannelKind.LLM_ACCESS]
327
+ });
328
+ await host.allocateIsolationDomains({
329
+ transportFactory: () => new index_1.InMemoryDomainTransport(() => ({ units: [] }))
330
+ });
331
+ strict_1.default.equal(host.domains().length >= 1, true);
332
+ await host.shutdownHost();
333
+ strict_1.default.deepEqual(host.domains(), []);
334
+ strict_1.default.equal(host.domainPlan(), null);
335
+ });
336
+ /* ------------------------------------------------------------------ */
337
+ /* 4. Direct domain transport sanity (kept next to the ledger tests) */
338
+ /* ------------------------------------------------------------------ */
339
+ (0, node_test_1.test)("domain: a unit that reports no tools yields an empty surface", async () => {
340
+ const domain = new index_1.IsolationDomain({
341
+ domainId: "shared:0",
342
+ isolation: "L2",
343
+ transport: new index_1.InMemoryDomainTransport((method) => method === "initialize"
344
+ ? { protocolVersion: "1.0.0", hostInfo: { name: "empty", version: "1.0.0" } }
345
+ : { units: [] })
346
+ });
347
+ await domain.setup(CTX);
348
+ strict_1.default.deepEqual(domain.describeUnits(), []);
349
+ await domain.teardown();
350
+ });
351
+ //# sourceMappingURL=domain_transaction.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain_transaction.test.js","sourceRoot":"","sources":["../../test/domain_transaction.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=file_channel.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file_channel.test.d.ts","sourceRoot":"","sources":["../../test/file_channel.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const node_test_1 = require("node:test");
40
+ const strict_1 = __importDefault(require("node:assert/strict"));
41
+ const node_fs_1 = require("node:fs");
42
+ const os = __importStar(require("node:os"));
43
+ const path = __importStar(require("node:path"));
44
+ const core_hub_1 = require("@orbit/core-hub");
45
+ const infra_common_1 = require("@orbit/infra-common");
46
+ function makeCtx() {
47
+ return { traceMarkId: "t-file", maxWaitMs: 5000 };
48
+ }
49
+ async function makeChannel(rootDir) {
50
+ const root = rootDir ?? await node_fs_1.promises.mkdtemp(path.join(os.tmpdir(), "orbit-file-"));
51
+ const channel = new core_hub_1.FileChannel({ rootDir: root });
52
+ await channel.setup(makeCtx());
53
+ return { channel, root };
54
+ }
55
+ (0, node_test_1.test)("FileChannel: requires a rootDir", () => {
56
+ strict_1.default.throws(() => new core_hub_1.FileChannel({ rootDir: "" }), /rootDir/);
57
+ strict_1.default.throws(() => new core_hub_1.FileChannel({ rootDir: undefined }), /rootDir/);
58
+ });
59
+ (0, node_test_1.test)("FileChannel: setup creates the root directory by default", async () => {
60
+ const root = path.join(os.tmpdir(), `orbit-file-create-${Date.now()}-${Math.floor(Math.random() * 1e6)}`);
61
+ const channel = new core_hub_1.FileChannel({ rootDir: root });
62
+ await channel.setup(makeCtx());
63
+ const stat = await node_fs_1.promises.stat(root);
64
+ strict_1.default.equal(stat.isDirectory(), true);
65
+ await node_fs_1.promises.rm(root, { recursive: true, force: true });
66
+ });
67
+ (0, node_test_1.test)("FileChannel: setup fails when root is missing and createRootDir is false", async () => {
68
+ const channel = new core_hub_1.FileChannel({ rootDir: path.join(os.tmpdir(), "orbit-file-missing-root"), createRootDir: false });
69
+ await strict_1.default.rejects(channel.setup(makeCtx()), /does not exist/);
70
+ });
71
+ (0, node_test_1.test)("FileChannel: write → read roundtrip returns content and byte count", async () => {
72
+ const { channel, root } = await makeChannel();
73
+ const written = await channel.writeTextFile("notes/a.txt", "hello orbit");
74
+ strict_1.default.equal(written, 11);
75
+ strict_1.default.equal(await channel.readTextFile("notes/a.txt"), "hello orbit");
76
+ await node_fs_1.promises.rm(root, { recursive: true, force: true });
77
+ });
78
+ (0, node_test_1.test)("FileChannel: readTextFile returns null for missing files, does not throw", async () => {
79
+ const { channel, root } = await makeChannel();
80
+ strict_1.default.equal(await channel.readTextFile("nope.txt"), null);
81
+ await node_fs_1.promises.rm(root, { recursive: true, force: true });
82
+ });
83
+ (0, node_test_1.test)("FileChannel: writeFile creates parent directories", async () => {
84
+ const { channel, root } = await makeChannel();
85
+ await channel.writeTextFile("a/b/c/deep.txt", "deep");
86
+ strict_1.default.equal(await channel.readTextFile("a/b/c/deep.txt"), "deep");
87
+ await node_fs_1.promises.rm(root, { recursive: true, force: true });
88
+ });
89
+ (0, node_test_1.test)("FileChannel: appendTextFile appends and creates missing files", async () => {
90
+ const { channel, root } = await makeChannel();
91
+ strict_1.default.equal(await channel.appendTextFile("log.txt", "line1\n"), 6);
92
+ strict_1.default.equal(await channel.appendTextFile("log.txt", "line2\n"), 6);
93
+ strict_1.default.equal(await channel.readTextFile("log.txt"), "line1\nline2\n");
94
+ await node_fs_1.promises.rm(root, { recursive: true, force: true });
95
+ });
96
+ (0, node_test_1.test)("FileChannel: listDir returns sorted entry names", async () => {
97
+ const { channel, root } = await makeChannel();
98
+ await channel.writeTextFile("b.txt", "1");
99
+ await channel.writeTextFile("a.txt", "1");
100
+ await channel.makeDir("zdir");
101
+ strict_1.default.deepEqual(await channel.listDir("."), ["a.txt", "b.txt", "zdir"]);
102
+ await node_fs_1.promises.rm(root, { recursive: true, force: true });
103
+ });
104
+ (0, node_test_1.test)("FileChannel: listDir on a missing directory throws ChannelCallFaultError", async () => {
105
+ const { channel, root } = await makeChannel();
106
+ await strict_1.default.rejects(channel.listDir("missing"), (err) => {
107
+ strict_1.default.ok(err instanceof infra_common_1.ChannelCallFaultError);
108
+ return true;
109
+ });
110
+ await node_fs_1.promises.rm(root, { recursive: true, force: true });
111
+ });
112
+ (0, node_test_1.test)("FileChannel: statPath reports file, dir and missing states", async () => {
113
+ const { channel, root } = await makeChannel();
114
+ await channel.writeTextFile("f.txt", "12345");
115
+ await channel.makeDir("d");
116
+ const file = await channel.statPath("f.txt");
117
+ strict_1.default.equal(file.exists, true);
118
+ strict_1.default.equal(file.kind, "file");
119
+ strict_1.default.equal(file.sizeBytes, 5);
120
+ strict_1.default.ok(typeof file.modifiedAt === "string");
121
+ const dir = await channel.statPath("d");
122
+ strict_1.default.equal(dir.kind, "dir");
123
+ const missing = await channel.statPath("ghost.txt");
124
+ strict_1.default.deepEqual(missing, { exists: false, kind: "missing", sizeBytes: 0, modifiedAt: null });
125
+ await node_fs_1.promises.rm(root, { recursive: true, force: true });
126
+ });
127
+ (0, node_test_1.test)("FileChannel: removePath removes files; non-empty dirs need recursive", async () => {
128
+ const { channel, root } = await makeChannel();
129
+ await channel.writeTextFile("gone.txt", "x");
130
+ await channel.removePath("gone.txt");
131
+ strict_1.default.equal(await channel.readTextFile("gone.txt"), null);
132
+ await channel.writeTextFile("tree/inner.txt", "x");
133
+ await strict_1.default.rejects(channel.removePath("tree"), /ENOTEMPTY|EISDIR|Directory not empty/);
134
+ await channel.removePath("tree", true);
135
+ strict_1.default.deepEqual(await channel.statPath("tree"), { exists: false, kind: "missing", sizeBytes: 0, modifiedAt: null });
136
+ await node_fs_1.promises.rm(root, { recursive: true, force: true });
137
+ });
138
+ (0, node_test_1.test)("FileChannel: path jail rejects traversal beyond the root", async () => {
139
+ const { channel, root } = await makeChannel();
140
+ await strict_1.default.rejects(channel.readTextFile("../escape.txt"), (err) => {
141
+ strict_1.default.ok(err instanceof infra_common_1.ChannelCallFaultError);
142
+ strict_1.default.match(err.message, /escapes the file channel root/);
143
+ return true;
144
+ });
145
+ await strict_1.default.rejects(channel.writeTextFile("..\\..\\escape.txt", "x"), /escapes the file channel root/);
146
+ await strict_1.default.rejects(channel.listDir("../"), /escapes the file channel root/);
147
+ await node_fs_1.promises.rm(root, { recursive: true, force: true });
148
+ });
149
+ (0, node_test_1.test)("FileChannel: absolute paths are rejected unless they resolve inside the root", async () => {
150
+ const { channel, root } = await makeChannel();
151
+ await strict_1.default.rejects(channel.readTextFile(path.join(os.tmpdir(), "elsewhere.txt")), /escapes the file channel root/);
152
+ // An in-root absolute path is fine (it resolves back inside the jail).
153
+ const inRoot = path.join(root, "abs.txt");
154
+ await channel.writeTextFile(inRoot, "ok");
155
+ strict_1.default.equal(await channel.readTextFile(inRoot), "ok");
156
+ await node_fs_1.promises.rm(root, { recursive: true, force: true });
157
+ });
158
+ (0, node_test_1.test)("FileChannel: null bytes in paths are rejected upfront", async () => {
159
+ const { channel, root } = await makeChannel();
160
+ await strict_1.default.rejects(channel.readTextFile("bad\0path"), /null byte/);
161
+ await node_fs_1.promises.rm(root, { recursive: true, force: true });
162
+ });
163
+ (0, node_test_1.test)("FileChannel: size guard rejects oversized reads and writes", async () => {
164
+ const root = await node_fs_1.promises.mkdtemp(path.join(os.tmpdir(), "orbit-file-limit-"));
165
+ const channel = new core_hub_1.FileChannel({ rootDir: root, maxFileBytes: 32 });
166
+ await channel.setup(makeCtx());
167
+ const big = "x".repeat(64);
168
+ await strict_1.default.rejects(channel.writeTextFile("big.txt", big), /32 byte limit/);
169
+ await node_fs_1.promises.writeFile(path.join(root, "big2.txt"), big, "utf8");
170
+ await strict_1.default.rejects(channel.readTextFile("big2.txt"), /32 byte limit/);
171
+ await node_fs_1.promises.rm(root, { recursive: true, force: true });
172
+ });
173
+ (0, node_test_1.test)("FileChannel: replay contract is io-bound + inject", async () => {
174
+ const { channel, root } = await makeChannel();
175
+ strict_1.default.deepEqual(channel.determinismMeta, { determinism: "io-bound", replayPolicy: "inject" });
176
+ await channel.teardown();
177
+ await node_fs_1.promises.rm(root, { recursive: true, force: true });
178
+ });
179
+ //# sourceMappingURL=file_channel.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file_channel.test.js","sourceRoot":"","sources":["../../test/file_channel.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=gateway.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway.test.d.ts","sourceRoot":"","sources":["../../test/gateway.test.ts"],"names":[],"mappings":""}