trellis 3.2.2 → 3.2.4

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 (210) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +4 -0
  3. package/dist/better-sqlite-backend-CDYOAJDF.js +209 -0
  4. package/dist/boot-middleware-LBJX4N2S.js +9 -0
  5. package/dist/boot-middleware-PATBLD52.js +9 -0
  6. package/dist/bridge-G5DPW6TY.js +2361 -0
  7. package/dist/bridge-JSSPQPRH.js +2389 -0
  8. package/dist/bridge-LNXE4HAW.js +2389 -0
  9. package/dist/bridge-OAAXJWSA.js +2389 -0
  10. package/dist/bridge-SFS63RHC.js +2367 -0
  11. package/dist/bridge-U5TOUBVM.js +2389 -0
  12. package/dist/browser/index.js +9 -9
  13. package/dist/{chunk-KSU2GW22.js → chunk-276W52FK.js} +8 -0
  14. package/dist/{chunk-KFQGP6VL.js → chunk-2ESYSVXG.js} +15 -0
  15. package/dist/{chunk-L5N5PR2S.js → chunk-2WW2X2BR.js} +313 -77
  16. package/dist/chunk-3XCOAP6G.js +48 -0
  17. package/dist/chunk-53PDCTJ3.js +1856 -0
  18. package/dist/{chunk-N6MYZT4O.js → chunk-547FZFKO.js} +1 -1
  19. package/dist/{chunk-H6JB3PZ3.js → chunk-5KSGGKET.js} +1 -1
  20. package/dist/{chunk-J2TXUFCZ.js → chunk-6RWGFC3N.js} +134 -20
  21. package/dist/{chunk-QB5ISE47.js → chunk-7WVOPXJV.js} +3 -3
  22. package/dist/chunk-CMSFD6OV.js +11801 -0
  23. package/dist/{chunk-RSWUFTO2.js → chunk-CPUYCCLT.js} +2 -2
  24. package/dist/{chunk-4HYPLFJD.js → chunk-FA5TFVA5.js} +1 -1
  25. package/dist/{chunk-4XIVMVHC.js → chunk-G3XIHPSQ.js} +1 -1
  26. package/dist/{chunk-JHHEXEDM.js → chunk-GCQF75T4.js} +3 -3
  27. package/dist/{chunk-FKQO5A3H.js → chunk-GHG4H3AS.js} +2 -2
  28. package/dist/{chunk-GLM4HGN4.js → chunk-GRWQPKYK.js} +1 -1
  29. package/dist/{chunk-PZ4XYZ4J.js → chunk-GXA73CNC.js} +33 -8
  30. package/dist/{chunk-6GEZ6DN5.js → chunk-H6VTC5SS.js} +3 -3
  31. package/dist/{chunk-S3XLFZ27.js → chunk-IHHSOBJS.js} +1 -1
  32. package/dist/chunk-IJNC25UD.js +2243 -0
  33. package/dist/{chunk-VDAKEOML.js → chunk-J6OUIION.js} +1 -1
  34. package/dist/chunk-JAVAYMMS.js +6 -0
  35. package/dist/{chunk-S6GBJ2ZB.js → chunk-JCQQFLO5.js} +1 -1
  36. package/dist/{chunk-FWRS4CSC.js → chunk-KQG6ZYXP.js} +3 -3
  37. package/dist/chunk-KXAISKZT.js +119 -0
  38. package/dist/chunk-N3R74ZSR.js +7949 -0
  39. package/dist/{chunk-GU374KWZ.js → chunk-NLFRRGX6.js} +3 -3
  40. package/dist/{chunk-XMQ7G77X.js → chunk-OB4CMMX6.js} +1 -1
  41. package/dist/chunk-OKNASCZY.js +182 -0
  42. package/dist/chunk-ONOPPX5E.js +394 -0
  43. package/dist/chunk-QMSU2RAH.js +98 -0
  44. package/dist/{chunk-TCKXSOBP.js → chunk-RARKFVWU.js} +8 -1
  45. package/dist/{chunk-2W3MHTMG.js → chunk-SJWVDS5M.js} +835 -127
  46. package/dist/{chunk-SPSPV5BC.js → chunk-SZ3VAB5P.js} +159 -2
  47. package/dist/chunk-V2ASD6RQ.js +147 -0
  48. package/dist/{chunk-KQ4A2D2P.js → chunk-V4YCJDYL.js} +58 -38
  49. package/dist/{chunk-LNUIGRDZ.js → chunk-VWKLKLYB.js} +1 -1
  50. package/dist/chunk-W5PADCDF.js +1856 -0
  51. package/dist/{chunk-MLC5BUYO.js → chunk-WMERMSWI.js} +1 -1
  52. package/dist/{chunk-IZX2PLIB.js → chunk-WXAURJUD.js} +835 -127
  53. package/dist/chunk-YC5I32PS.js +147 -0
  54. package/dist/{chunk-VBYUTRXX.js → chunk-YKVB4LUQ.js} +3 -3
  55. package/dist/{chunk-7ZFRVCUE.js → chunk-YPT6XMS4.js} +48 -64
  56. package/dist/cli/deploy-cli.d.ts.map +1 -1
  57. package/dist/{deploy-cli-C35HTITO.js → cli/deploy-cli.js} +45 -6
  58. package/dist/cli/gateway-deploy-cli.d.ts +19 -0
  59. package/dist/cli/gateway-deploy-cli.d.ts.map +1 -0
  60. package/dist/cli/index.d.ts.map +1 -1
  61. package/dist/cli/index.js +1363 -884
  62. package/dist/cli/lane.d.ts.map +1 -1
  63. package/dist/cli/protocol.d.ts +6 -0
  64. package/dist/cli/protocol.d.ts.map +1 -0
  65. package/dist/client/index.browser.js +2 -2
  66. package/dist/client/index.js +11 -11
  67. package/dist/client/sdk.browser.d.ts +28 -1
  68. package/dist/client/sdk.browser.d.ts.map +1 -1
  69. package/dist/client/sdk.browser.js +2 -2
  70. package/dist/client/sdk.js +2 -2
  71. package/dist/cms/index.js +1 -1
  72. package/dist/config-KMY6RRK3.js +19 -0
  73. package/dist/core/index.js +17 -17
  74. package/dist/core/kernel/boot-middleware.d.ts +1 -1
  75. package/dist/core/kernel/boot-middleware.d.ts.map +1 -1
  76. package/dist/core/kernel/schema-middleware.d.ts +2 -1
  77. package/dist/core/kernel/schema-middleware.d.ts.map +1 -1
  78. package/dist/core/kernel/trellis-kernel.d.ts +10 -10
  79. package/dist/core/kernel/trellis-kernel.d.ts.map +1 -1
  80. package/dist/core/persist/factory.js +2 -2
  81. package/dist/core/persist/sqljs-backend.js +2 -2
  82. package/dist/db/index.js +32 -27
  83. package/dist/decisions/index.js +4 -4
  84. package/dist/embeddings/index.js +2 -2
  85. package/dist/engine.d.ts +24 -6
  86. package/dist/engine.d.ts.map +1 -1
  87. package/dist/gateway-deploy-cli-4TU4V3QI.js +312 -0
  88. package/dist/gateway-deploy-cli-A4ISTDHJ.js +298 -0
  89. package/dist/gateway-deploy-cli-D3XTKJQJ.js +312 -0
  90. package/dist/gateway-deploy-cli-ECV3OQCN.js +305 -0
  91. package/dist/gateway-deploy-cli-JUHKVIJE.js +296 -0
  92. package/dist/gateway-deploy-cli-NSDW2JLT.js +310 -0
  93. package/dist/gateway-serve-CM5EAZ52.js +113 -0
  94. package/dist/import-AJLYHFIA.js +10 -0
  95. package/dist/index.js +11 -11
  96. package/dist/launch-explorer-FVX6ZABW.js +95 -0
  97. package/dist/links/index.js +2 -2
  98. package/dist/mcp/bridge.d.ts +45 -0
  99. package/dist/mcp/bridge.d.ts.map +1 -0
  100. package/dist/mcp/discovery.d.ts +15 -0
  101. package/dist/mcp/discovery.d.ts.map +1 -0
  102. package/dist/mcp/gateway-config.d.ts +20 -0
  103. package/dist/mcp/gateway-config.d.ts.map +1 -0
  104. package/dist/mcp/gateway-serve.d.ts +19 -0
  105. package/dist/mcp/gateway-serve.d.ts.map +1 -0
  106. package/dist/mcp/gateway-serve.js +119 -0
  107. package/dist/mcp/graph-summary.d.ts +47 -0
  108. package/dist/mcp/graph-summary.d.ts.map +1 -0
  109. package/dist/mcp/room-audit.d.ts +14 -0
  110. package/dist/mcp/room-audit.d.ts.map +1 -0
  111. package/dist/mcp/room-helpers.d.ts +43 -0
  112. package/dist/mcp/room-helpers.d.ts.map +1 -0
  113. package/dist/mcp/room-registry.d.ts +32 -0
  114. package/dist/mcp/room-registry.d.ts.map +1 -0
  115. package/dist/mcp/room.d.ts +28 -0
  116. package/dist/mcp/room.d.ts.map +1 -0
  117. package/dist/plugins/agent-memory/index.js +1 -1
  118. package/dist/plugins/idea-garden/index.js +1 -1
  119. package/dist/plugins/plan-approval/index.js +1 -1
  120. package/dist/plugins/proactive-watcher/index.js +1 -1
  121. package/dist/protocol/envelope.d.ts +30 -0
  122. package/dist/protocol/envelope.d.ts.map +1 -0
  123. package/dist/protocol/index.d.ts +3 -0
  124. package/dist/protocol/index.d.ts.map +1 -0
  125. package/dist/protocol/whereami.d.ts +33 -0
  126. package/dist/protocol/whereami.d.ts.map +1 -0
  127. package/dist/query-KHDDIR5G.js +31 -0
  128. package/dist/react/index.js +3 -3
  129. package/dist/react/realtime.js +1 -1
  130. package/dist/react/schema-hooks.js +6 -6
  131. package/dist/realtime/index.js +3 -3
  132. package/dist/realtime/relay-server.d.ts.map +1 -1
  133. package/dist/realtime/room.d.ts.map +1 -1
  134. package/dist/realtime.bundle.js +2 -0
  135. package/dist/relay-server-BT6DCJ7F.js +12 -0
  136. package/dist/relay-server-MPQVGNQU.js +12 -0
  137. package/dist/relay-server-PAPW2EWC.js +12 -0
  138. package/dist/remote-manager-6ERQUBSL.js +224 -0
  139. package/dist/remote-manager-G665WWYY.js +224 -0
  140. package/dist/remote-manager-HJTEZ4OF.js +224 -0
  141. package/dist/remote-manager-NYP2Y5UR.js +224 -0
  142. package/dist/remote-manager-WGLCAMMC.js +224 -0
  143. package/dist/scaffold/write.d.ts.map +1 -1
  144. package/dist/schema/index.js +1 -1
  145. package/dist/server/cors.d.ts +13 -0
  146. package/dist/server/cors.d.ts.map +1 -0
  147. package/dist/server/deploy-gateway.d.ts +27 -0
  148. package/dist/server/deploy-gateway.d.ts.map +1 -0
  149. package/dist/server/deploy.d.ts +1 -1
  150. package/dist/server/deploy.d.ts.map +1 -1
  151. package/dist/server/deploy.js +10 -0
  152. package/dist/server/discovery-mcp-gateway.d.ts +13 -0
  153. package/dist/server/discovery-mcp-gateway.d.ts.map +1 -0
  154. package/dist/server/index.js +44 -37
  155. package/dist/server/mcp-gateway.d.ts +27 -0
  156. package/dist/server/mcp-gateway.d.ts.map +1 -0
  157. package/dist/server/mcp-oauth-metadata.d.ts +31 -0
  158. package/dist/server/mcp-oauth-metadata.d.ts.map +1 -0
  159. package/dist/server/node-adapter.d.ts +7 -0
  160. package/dist/server/node-adapter.d.ts.map +1 -1
  161. package/dist/server/node-adapter.js +2 -2
  162. package/dist/server/realtime.d.ts.map +1 -1
  163. package/dist/server/server.d.ts +8 -0
  164. package/dist/server/server.d.ts.map +1 -1
  165. package/dist/server/streamable-mcp-gateway.d.ts +12 -0
  166. package/dist/server/streamable-mcp-gateway.d.ts.map +1 -0
  167. package/dist/server/usage-meter.d.ts +11 -0
  168. package/dist/server/usage-meter.d.ts.map +1 -1
  169. package/dist/server-4VEZHXXS.js +23 -0
  170. package/dist/{server-ZVWGLLRF.js → server-556BMK4C.js} +1 -1
  171. package/dist/server-FQT2VYRE.js +23 -0
  172. package/dist/server-HGZE4ECC.js +23 -0
  173. package/dist/server-J4JKEAMH.js +23 -0
  174. package/dist/server-LXPM5TFR.js +23 -0
  175. package/dist/{server-MB3OPSPI.js → server-POB4NEUX.js} +2 -2
  176. package/dist/server-VJKAPGPG.js +23 -0
  177. package/dist/server-YHS3XIIG.js +23 -0
  178. package/dist/server-ZHTPWPXS.js +23 -0
  179. package/dist/sprites-NC6D7YZS.js +27 -0
  180. package/dist/svelte/index.js +3 -3
  181. package/dist/svelte/schema-hooks.js +4 -4
  182. package/dist/sync/index.js +4 -4
  183. package/dist/tenancy-2SZTP4UD.js +16 -0
  184. package/dist/tenancy-7MTSESMJ.js +16 -0
  185. package/dist/tenancy-U4E7ZEAG.js +16 -0
  186. package/dist/vcs/decompose.d.ts.map +1 -1
  187. package/dist/vcs/index.js +5 -5
  188. package/dist/vcs/lane-disk-materialize.d.ts +11 -0
  189. package/dist/vcs/lane-disk-materialize.d.ts.map +1 -0
  190. package/dist/vcs/lane-worktree.d.ts +21 -0
  191. package/dist/vcs/lane-worktree.d.ts.map +1 -0
  192. package/dist/vcs/store.d.ts +28 -0
  193. package/dist/vcs/store.d.ts.map +1 -0
  194. package/dist/vcs/types.d.ts +5 -0
  195. package/dist/vcs/types.d.ts.map +1 -1
  196. package/dist/vm-config-YZRJ3KUB.js +21 -0
  197. package/dist/vue/index.js +3 -3
  198. package/dist/vue/schema-hooks.js +4 -4
  199. package/package.json +4 -3
  200. package/dist/chunk-FF36CQHZ.js +0 -61
  201. package/dist/chunk-GFZCJ4EH.js +0 -108
  202. package/dist/chunk-KIJITUZB.js +0 -419
  203. package/dist/chunk-SGMDTWJJ.js +0 -149
  204. package/dist/chunk-UQISRW6T.js +0 -203
  205. package/dist/db/trellis.css +0 -1
  206. package/dist/deploy-LQ7GUGJ5.js +0 -9
  207. package/dist/deploy-YNVG5E4E.js +0 -9
  208. package/dist/deploy-cli-24BCHAXY.js +0 -67
  209. package/dist/sprites-RU3E4XQN.js +0 -15
  210. package/dist/tenancy-NBLLGCNJ.js +0 -14
@@ -0,0 +1,224 @@
1
+ import {
2
+ TrellisVcsEngine,
3
+ init_engine
4
+ } from "./chunk-UH7TZAN7.js";
5
+ import "./chunk-NLFRRGX6.js";
6
+ import "./chunk-G3XIHPSQ.js";
7
+ import "./chunk-YKVB4LUQ.js";
8
+ import "./chunk-547FZFKO.js";
9
+ import "./chunk-GRWQPKYK.js";
10
+ import "./chunk-2ESYSVXG.js";
11
+
12
+ // src/federation/remote-manager.ts
13
+ init_engine();
14
+ import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
15
+ import { join, resolve } from "path";
16
+ var RemoteManager = class {
17
+ trellisPath;
18
+ remotesPath;
19
+ constructor(trellisPath) {
20
+ this.trellisPath = trellisPath;
21
+ this.remotesPath = join(trellisPath, "remotes.json");
22
+ }
23
+ /** Load remotes configuration */
24
+ loadRemotes() {
25
+ if (!existsSync(this.remotesPath)) {
26
+ return { remotes: {} };
27
+ }
28
+ try {
29
+ const content = readFileSync(this.remotesPath, "utf8");
30
+ return JSON.parse(content);
31
+ } catch (error) {
32
+ throw new Error(`Failed to load remotes config: ${error}`);
33
+ }
34
+ }
35
+ /** Save remotes configuration */
36
+ saveRemotes(config) {
37
+ try {
38
+ if (!existsSync(this.trellisPath)) {
39
+ mkdirSync(this.trellisPath, { recursive: true });
40
+ }
41
+ writeFileSync(this.remotesPath, JSON.stringify(config, null, 2), "utf8");
42
+ } catch (error) {
43
+ throw new Error(`Failed to save remotes config: ${error}`);
44
+ }
45
+ }
46
+ /** Add a new remote */
47
+ addRemote(name, path) {
48
+ const config = this.loadRemotes();
49
+ if (config.remotes[name]) {
50
+ throw new Error(`Remote '${name}' already exists`);
51
+ }
52
+ const resolvedPath = resolve(path);
53
+ if (!TrellisVcsEngine.isRepo(resolvedPath)) {
54
+ throw new Error(`Not a TrellisVCS repository: ${resolvedPath}`);
55
+ }
56
+ config.remotes[name] = {
57
+ name,
58
+ path: resolvedPath
59
+ };
60
+ this.saveRemotes(config);
61
+ }
62
+ /** Remove a remote */
63
+ removeRemote(name) {
64
+ const config = this.loadRemotes();
65
+ if (!config.remotes[name]) {
66
+ throw new Error(`Remote '${name}' not found`);
67
+ }
68
+ delete config.remotes[name];
69
+ this.saveRemotes(config);
70
+ }
71
+ /** List all remotes */
72
+ listRemotes() {
73
+ const config = this.loadRemotes();
74
+ return Object.values(config.remotes);
75
+ }
76
+ /** Pull new ops from a specific remote */
77
+ async pullRemote(remoteName, localEngine) {
78
+ const startTime = Date.now();
79
+ const config = this.loadRemotes();
80
+ const remote = config.remotes[remoteName];
81
+ if (!remote) {
82
+ throw new Error(`Remote '${remoteName}' not found`);
83
+ }
84
+ const errors = [];
85
+ let newOps = 0;
86
+ let latestOpId = remote.lastOpId || "";
87
+ try {
88
+ const remoteEngine = new TrellisVcsEngine({ rootPath: remote.path });
89
+ remoteEngine.open();
90
+ const remoteOps = remoteEngine.getOps();
91
+ if (remoteOps.length === 0) {
92
+ return {
93
+ remote: remoteName,
94
+ newOps: 0,
95
+ latestOpId: "",
96
+ durationMs: Date.now() - startTime,
97
+ errors: []
98
+ };
99
+ }
100
+ const lastOpHash = remote.lastOpId;
101
+ let startIndex = 0;
102
+ if (lastOpHash) {
103
+ startIndex = remoteOps.findIndex((op) => op.hash === lastOpHash);
104
+ if (startIndex === -1) {
105
+ startIndex = 0;
106
+ errors.push(
107
+ `Last op hash ${lastOpHash} not found in remote, pulling all ops`
108
+ );
109
+ } else {
110
+ startIndex++;
111
+ }
112
+ }
113
+ const opsToPull = remoteOps.slice(startIndex);
114
+ if (opsToPull.length > 0) {
115
+ const prefixedOps = opsToPull.map(
116
+ (op) => this.prefixOpEntities(op, remoteName)
117
+ );
118
+ for (const op of prefixedOps) {
119
+ localEngine.opLog.append(op);
120
+ newOps++;
121
+ }
122
+ latestOpId = remoteOps[remoteOps.length - 1].hash;
123
+ }
124
+ remote.lastOpId = latestOpId;
125
+ remote.pulledAt = (/* @__PURE__ */ new Date()).toISOString();
126
+ this.saveRemotes(config);
127
+ } catch (error) {
128
+ errors.push(`Failed to pull from remote: ${error}`);
129
+ }
130
+ return {
131
+ remote: remoteName,
132
+ newOps,
133
+ latestOpId,
134
+ durationMs: Date.now() - startTime,
135
+ errors
136
+ };
137
+ }
138
+ /** Pull from all configured remotes */
139
+ async pullAll(localEngine) {
140
+ const config = this.loadRemotes();
141
+ const remoteNames = Object.keys(config.remotes);
142
+ if (remoteNames.length === 0) {
143
+ return {
144
+ results: [],
145
+ totalNewOps: 0,
146
+ totalDurationMs: 0
147
+ };
148
+ }
149
+ const startTime = Date.now();
150
+ const results = [];
151
+ let totalNewOps = 0;
152
+ for (const remoteName of remoteNames) {
153
+ try {
154
+ const result = await this.pullRemote(remoteName, localEngine);
155
+ results.push(result);
156
+ totalNewOps += result.newOps;
157
+ } catch (error) {
158
+ results.push({
159
+ remote: remoteName,
160
+ newOps: 0,
161
+ latestOpId: "",
162
+ durationMs: 0,
163
+ errors: [`Failed to pull: ${error}`]
164
+ });
165
+ }
166
+ }
167
+ return {
168
+ results,
169
+ totalNewOps,
170
+ totalDurationMs: Date.now() - startTime
171
+ };
172
+ }
173
+ /** Prefix entity IDs in operations with remote name */
174
+ prefixOpEntities(op, remoteName) {
175
+ const prefixed = { ...op };
176
+ if (op.vcs) {
177
+ const vcs = { ...op.vcs };
178
+ if (vcs.issueId && !vcs.issueId.includes(":")) {
179
+ vcs.issueId = `${remoteName}:${vcs.issueId}`;
180
+ }
181
+ if (vcs.parentIssueId && !vcs.parentIssueId.includes(":")) {
182
+ vcs.parentIssueId = `${remoteName}:${vcs.parentIssueId}`;
183
+ }
184
+ if (vcs.blockedByIssueId && !vcs.blockedByIssueId.includes(":")) {
185
+ vcs.blockedByIssueId = `${remoteName}:${vcs.blockedByIssueId}`;
186
+ }
187
+ if (vcs.decisionId && !vcs.decisionId.includes(":")) {
188
+ vcs.decisionId = `${remoteName}:${vcs.decisionId}`;
189
+ }
190
+ prefixed.vcs = vcs;
191
+ }
192
+ if (op.facts) {
193
+ prefixed.facts = op.facts.map((fact) => {
194
+ if (fact.e === "entity" && fact.a === "id" && typeof fact.v === "string" && !fact.v.includes(":")) {
195
+ return { ...fact, v: `${remoteName}:${fact.v}` };
196
+ }
197
+ if (fact.e === "entity" && fact.a === "from" && typeof fact.v === "string" && !fact.v.includes(":")) {
198
+ return { ...fact, v: `${remoteName}:${fact.v}` };
199
+ }
200
+ if (fact.e === "entity" && fact.a === "to" && typeof fact.v === "string" && !fact.v.includes(":")) {
201
+ return { ...fact, v: `${remoteName}:${fact.v}` };
202
+ }
203
+ return fact;
204
+ });
205
+ }
206
+ if (op.links) {
207
+ prefixed.links = op.links.map((link) => ({
208
+ ...link,
209
+ e1: link.e1.includes(":") ? link.e1 : `${remoteName}:${link.e1}`,
210
+ e2: link.e2.includes(":") ? link.e2 : `${remoteName}:${link.e2}`
211
+ }));
212
+ }
213
+ if (!prefixed.facts) prefixed.facts = [];
214
+ prefixed.facts.push({
215
+ e: "op",
216
+ a: "remote",
217
+ v: remoteName
218
+ });
219
+ return prefixed;
220
+ }
221
+ };
222
+ export {
223
+ RemoteManager
224
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/scaffold/write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAMhD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,MAAM,OAAO,GACf,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,SAAS,GACT,OAAO,GACP,QAAQ,GACR,MAAM,CAAC;AACX,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AACjE,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,KAAK,GACL,QAAQ,GACR,MAAM,GACN,MAAM,GACN,UAAU,GACV,MAAM,GACN,KAAK,GACL,MAAM,GACN,KAAK,GACL,SAAS,GACT,WAAW,GACX,OAAO,GACP,MAAM,CAAC;AAEX,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,kBAAkB,CAAC;IAC9B,SAAS,EAAE,aAAa,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B;AA8QD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,aAAa,GACnB,IAAI,CAoCN;AAq4BD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,gBAAgB,GACtB,IAAI,CA4IN"}
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/scaffold/write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAMhD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,MAAM,OAAO,GACf,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,SAAS,GACT,OAAO,GACP,QAAQ,GACR,MAAM,CAAC;AACX,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AACjE,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,KAAK,GACL,QAAQ,GACR,MAAM,GACN,MAAM,GACN,UAAU,GACV,MAAM,GACN,KAAK,GACL,MAAM,GACN,KAAK,GACL,SAAS,GACT,WAAW,GACX,OAAO,GACP,MAAM,CAAC;AAEX,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,OAAO,CAAC;IACb,SAAS,EAAE,kBAAkB,CAAC;IAC9B,SAAS,EAAE,aAAa,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC;CAC7B;AAuRD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,aAAa,GACnB,IAAI,CAoCN;AA83BD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,gBAAgB,GACtB,IAAI,CA4IN"}
@@ -23,7 +23,7 @@ import {
23
23
  resolveRelations,
24
24
  whereCondition
25
25
  } from "../chunk-JUEMDWLU.js";
26
- import "../chunk-KFQGP6VL.js";
26
+ import "../chunk-2ESYSVXG.js";
27
27
  export {
28
28
  bindingEntityId,
29
29
  bindingToEntity,
@@ -0,0 +1,13 @@
1
+ /**
2
+ * CORS for browser clients hitting a remote room node (TurtleDB Cloud C0 / deploy).
3
+ *
4
+ * Enabled when `TRELLIS_CORS_ORIGINS` is set, or when the server uses an API key
5
+ * (typical deployed Sprite). Set `TRELLIS_CORS_ORIGINS=*` to allow any origin.
6
+ *
7
+ * @module trellis/server
8
+ */
9
+ export declare function corsEnabledForConfig(apiKey?: string): boolean;
10
+ export declare function corsHeaders(req: Request): Record<string, string>;
11
+ export declare function withCors(req: Request, res: Response): Response;
12
+ export declare function corsPreflightResponse(req: Request): Response;
13
+ //# sourceMappingURL=cors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../../src/server/cors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAE7D;AAQD,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAqBhE;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,GAAG,QAAQ,CAU9D;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,QAAQ,CAK5D"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Deploy Trellis MCP discovery gateway to Sprites.
3
+ *
4
+ * Provisions a lightweight Sprite running `startGatewayServer` — no room kernel.
5
+ * Writes `.trellis-mcp-gateway.json` and uploads `.trellis-rooms.json` for discovery.
6
+ *
7
+ * @module trellis/server
8
+ */
9
+ export interface DeployGatewayOptions {
10
+ name: string;
11
+ /** Vanity URL printed to agents (default: https://mcp.trellis.computer). */
12
+ publicUrl?: string;
13
+ port?: number;
14
+ configDir?: string;
15
+ /** Extra rooms JSON file (merged with local registry at deploy time). */
16
+ roomsFile?: string;
17
+ onProgress?: (msg: string) => void;
18
+ stub?: boolean;
19
+ }
20
+ export interface DeployGatewayResult {
21
+ url: string;
22
+ publicUrl: string;
23
+ name: string;
24
+ roomCount: number;
25
+ }
26
+ export declare function deployMcpGateway(opts: DeployGatewayOptions): Promise<DeployGatewayResult>;
27
+ //# sourceMappingURL=deploy-gateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-gateway.d.ts","sourceRoot":"","sources":["../../src/server/deploy-gateway.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA8BH,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAqH9B"}
@@ -10,7 +10,7 @@
10
10
  * 1. Bundle the server entrypoint with Bun
11
11
  * 2. Create or wake the target Sprite via `sprite exec`
12
12
  * 3. Upload the bundle + SQLite file (if seeding)
13
- * 4. Install dependencies and start the server as a detached session
13
+ * 4. Install Bun and register the server via `sprite-env services` (port 8080)
14
14
  * 5. Write the resulting URL + API key back to .trellis-db.json
15
15
  *
16
16
  * Prerequisites:
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/server/deploy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAwBH,MAAM,WAAW,aAAa;IAC5B,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,wBAAsB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAqFvE"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../src/server/deploy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AA2BH,MAAM,WAAW,aAAa;IAC5B,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,wBAAsB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CA4FvE"}
@@ -0,0 +1,10 @@
1
+ import {
2
+ deploy
3
+ } from "../chunk-YPT6XMS4.js";
4
+ import "../chunk-3XCOAP6G.js";
5
+ import "../chunk-CAG4FULI.js";
6
+ import "../chunk-JA7AIHRK.js";
7
+ import "../chunk-2ESYSVXG.js";
8
+ export {
9
+ deploy
10
+ };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Discovery MCP gateway — room list / connect tools.
3
+ *
4
+ * @module trellis/server
5
+ */
6
+ import { type DiscoveryMcpContext } from '../mcp/discovery.js';
7
+ export declare class DiscoveryMcpGateway {
8
+ private gateway;
9
+ handle(req: Request, ctx: DiscoveryMcpContext): Promise<Response>;
10
+ close(): Promise<void>;
11
+ }
12
+ export declare const discoveryMcpGateway: DiscoveryMcpGateway;
13
+ //# sourceMappingURL=discovery-mcp-gateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery-mcp-gateway.d.ts","sourceRoot":"","sources":["../../src/server/discovery-mcp-gateway.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,qBAAqB,CAAC;AAG7B,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAA8B;IAEvC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIjE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;AAED,eAAO,MAAM,mBAAmB,qBAA4B,CAAC"}
@@ -1,25 +1,8 @@
1
+ import "../chunk-JAVAYMMS.js";
1
2
  import {
2
3
  attachRealtimeRelay,
3
4
  createRealtimeRelay
4
- } from "../chunk-PZ4XYZ4J.js";
5
- import {
6
- getActiveSprite,
7
- getSprite,
8
- isSpriteTracked,
9
- loadVmConfig,
10
- saveVmConfig,
11
- setActiveSprite,
12
- trackSprite,
13
- untrackSprite
14
- } from "../chunk-UZRUP7QW.js";
15
- import {
16
- DeployNameError,
17
- SPRITE_PUBLIC_HTTP_PORT,
18
- buildDeployUrl,
19
- deploy,
20
- normalizeDeployName,
21
- validateDeployName
22
- } from "../chunk-7ZFRVCUE.js";
5
+ } from "../chunk-GXA73CNC.js";
23
6
  import {
24
7
  ADMIN_ONLY,
25
8
  ANONYMOUS,
@@ -31,28 +14,28 @@ import {
31
14
  PermissionError,
32
15
  PermissionRegistry,
33
16
  SubscriptionManager,
34
- UsageMeter,
35
17
  buildOAuthUrl,
36
- dayKey,
37
18
  exchangeOAuthCode,
38
19
  resolveAuth,
39
- resolveUsageTenantId,
40
- sampleTenantStorage,
41
20
  signJwt,
42
21
  startServer,
43
22
  startServerCrossRuntime,
44
- verifyAdminKey,
45
23
  verifyJwt
46
- } from "../chunk-2W3MHTMG.js";
47
- import {
48
- DEFAULT_TENANT,
49
- TenantPool,
50
- resolvePoolBackendFromEnv
51
- } from "../chunk-JHHEXEDM.js";
24
+ } from "../chunk-SJWVDS5M.js";
52
25
  import {
53
26
  importFile,
54
27
  importRecords
55
- } from "../chunk-MLC5BUYO.js";
28
+ } from "../chunk-WMERMSWI.js";
29
+ import {
30
+ deploy
31
+ } from "../chunk-YPT6XMS4.js";
32
+ import {
33
+ DeployNameError,
34
+ SPRITE_PUBLIC_HTTP_PORT,
35
+ buildDeployUrl,
36
+ normalizeDeployName,
37
+ validateDeployName
38
+ } from "../chunk-3XCOAP6G.js";
56
39
  import {
57
40
  SPRITE_ENSURE_BUN_SH,
58
41
  assertSpriteCli,
@@ -66,17 +49,41 @@ import {
66
49
  runSpriteExec,
67
50
  runSpriteInteractive
68
51
  } from "../chunk-CAG4FULI.js";
52
+ import "../chunk-53PDCTJ3.js";
53
+ import {
54
+ UsageMeter,
55
+ dayKey,
56
+ resolveUsageTenantId,
57
+ sampleTenantStorage,
58
+ verifyAdminKey
59
+ } from "../chunk-CMSFD6OV.js";
60
+ import {
61
+ DEFAULT_TENANT,
62
+ TenantPool,
63
+ resolvePoolBackendFromEnv
64
+ } from "../chunk-GCQF75T4.js";
65
+ import "../chunk-YC5I32PS.js";
66
+ import {
67
+ getActiveSprite,
68
+ getSprite,
69
+ isSpriteTracked,
70
+ loadVmConfig,
71
+ saveVmConfig,
72
+ setActiveSprite,
73
+ trackSprite,
74
+ untrackSprite
75
+ } from "../chunk-UZRUP7QW.js";
69
76
  import "../chunk-JA7AIHRK.js";
70
77
  import "../chunk-44FFQKQX.js";
71
78
  import "../chunk-JUEMDWLU.js";
72
- import "../chunk-SPSPV5BC.js";
73
79
  import "../chunk-X5FLTRUB.js";
74
- import "../chunk-XMQ7G77X.js";
75
- import "../chunk-KQ4A2D2P.js";
80
+ import "../chunk-SZ3VAB5P.js";
81
+ import "../chunk-OB4CMMX6.js";
82
+ import "../chunk-V4YCJDYL.js";
76
83
  import "../chunk-6CTA6MCE.js";
77
- import "../chunk-4XIVMVHC.js";
78
- import "../chunk-GFZCJ4EH.js";
79
- import "../chunk-KFQGP6VL.js";
84
+ import "../chunk-G3XIHPSQ.js";
85
+ import "../chunk-KXAISKZT.js";
86
+ import "../chunk-2ESYSVXG.js";
80
87
  export {
81
88
  ADMIN_ONLY,
82
89
  ANONYMOUS,
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Streamable HTTP MCP gateway for Trellis room graph tools.
3
+ *
4
+ * @module trellis/server
5
+ */
6
+ import type { AuthContext } from './auth.js';
7
+ import type { PermissionRegistry } from './permissions.js';
8
+ import type { SubscriptionManager } from './realtime.js';
9
+ import type { TenantPool } from './tenancy.js';
10
+ import type { UsageMeter } from './usage-meter.js';
11
+ import type { TrellisDbConfig } from '../client/config.js';
12
+ export interface McpGatewayRouteCtx {
13
+ pool: TenantPool;
14
+ permissions: PermissionRegistry | null;
15
+ subs: SubscriptionManager;
16
+ meter: UsageMeter;
17
+ authConfig: import('./auth.js').AuthConfig;
18
+ config: TrellisDbConfig;
19
+ }
20
+ export declare class RoomMcpGateway {
21
+ private gateway;
22
+ handle(req: Request, ctx: McpGatewayRouteCtx, auth: AuthContext, tenantId: string | null): Promise<Response>;
23
+ close(): Promise<void>;
24
+ }
25
+ /** Shared gateway instance for the process lifetime. */
26
+ export declare const roomMcpGateway: RoomMcpGateway;
27
+ //# sourceMappingURL=mcp-gateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-gateway.d.ts","sourceRoot":"","sources":["../../src/server/mcp-gateway.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACvC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE,UAAU,CAAC;IAClB,UAAU,EAAE,OAAO,WAAW,EAAE,UAAU,CAAC;IAC3C,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAA8B;IAEvC,MAAM,CACV,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,QAAQ,CAAC;IAed,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;AAED,wDAAwD;AACxD,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * OAuth metadata for MCP clients (ChatGPT Connectors, Claude web, etc.).
3
+ *
4
+ * Room servers issue JWTs via /auth/oauth/* and accept Bearer JWT on /mcp.
5
+ *
6
+ * @module trellis/server
7
+ */
8
+ import type { AuthConfig } from './auth.js';
9
+ export declare function oauthProtectedResourceMetadata(origin: string, resourcePath?: string): {
10
+ resource: string;
11
+ authorization_servers: string[];
12
+ bearer_methods_supported: string[];
13
+ scopes_supported: string[];
14
+ };
15
+ export declare function oauthAuthorizationServerMetadata(origin: string, providers?: string[]): {
16
+ issuer: string;
17
+ authorization_endpoint: string;
18
+ token_endpoint: string;
19
+ registration_endpoint: string;
20
+ scopes_supported: string[];
21
+ response_types_supported: string[];
22
+ grant_types_supported: string[];
23
+ code_challenge_methods_supported: string[];
24
+ mcp_resource: string;
25
+ oauth_providers: {
26
+ name: string;
27
+ authorization_endpoint: string;
28
+ }[];
29
+ };
30
+ export declare function mcpServiceDocument(origin: string, authConfig: AuthConfig): Record<string, unknown>;
31
+ //# sourceMappingURL=mcp-oauth-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-oauth-metadata.d.ts","sourceRoot":"","sources":["../../src/server/mcp-oauth-metadata.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,SAAS;;;;;EAQnF;AAED,wBAAgB,gCAAgC,CAC9C,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,MAAM,EAAyB;;;;;;;;;;;;;;EAkB3C;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,UAAU,GACrB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBzB"}
@@ -25,6 +25,13 @@ export interface NodeAdapterOptions {
25
25
  message: (ws: WsLike, data: string | Buffer) => void | Promise<void>;
26
26
  close: (ws: WsLike) => void;
27
27
  };
28
+ /**
29
+ * Mount a presence relay on `/rt` (or custom path). Coexists with the graph
30
+ * subscription socket at `/realtime` when upgrades are path-scoped.
31
+ */
32
+ attachPresenceRelay?: boolean | {
33
+ path?: string;
34
+ };
28
35
  }
29
36
  /**
30
37
  * Minimal interface satisfied by both Bun's WebSocket and the `ws` library's
@@ -1 +1 @@
1
- {"version":3,"file":"node-adapter.d.ts","sourceRoot":"","sources":["../../src/server/node-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3C,wDAAwD;IACxD,SAAS,EAAE;QACT,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACrE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;KAC7B,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,iBAAiB,CAAC,CA6D5B"}
1
+ {"version":3,"file":"node-adapter.d.ts","sourceRoot":"","sources":["../../src/server/node-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,KAAK,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3C,wDAAwD;IACxD,SAAS,EAAE;QACT,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACrE,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;KAC7B,CAAC;IACF;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACnD;AAED;;;GAGG;AACH,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,iBAAiB,CAAC,CAwE5B"}
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  init_node_adapter,
3
3
  startNodeServer
4
- } from "../chunk-TCKXSOBP.js";
5
- import "../chunk-KFQGP6VL.js";
4
+ } from "../chunk-RARKFVWU.js";
5
+ import "../chunk-2ESYSVXG.js";
6
6
  init_node_adapter();
7
7
  export {
8
8
  startNodeServer
@@ -1 +1 @@
1
- {"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/server/realtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAM3D,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACtC,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE;QAAE,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzC,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,MAAM,eAAe,GACvB;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB,GACD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAMrB;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,KAAK,CAAoB;gBAG/B,IAAI,EAAE,UAAU,EAChB,WAAW,GAAE,kBAAkB,GAAG,IAAW,EAC7C,KAAK,GAAE,UAAU,GAAG,IAAW;IAWjC,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,EAClB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,IAAI;IAUP,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQ9B,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCjE;;;OAGG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBpD,IAAI,WAAW,IAAI,MAAM,CAExB;YAMa,gBAAgB;YAqEhB,WAAW;IA2CzB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,KAAK;CAYd"}
1
+ {"version":3,"file":"realtime.d.ts","sourceRoot":"","sources":["../../src/server/realtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAM3D,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACtC,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE;QAAE,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzC,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,MAAM,eAAe,GACvB;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB,GACD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAMrB;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,KAAK,CAAoB;gBAG/B,IAAI,EAAE,UAAU,EAChB,WAAW,GAAE,kBAAkB,GAAG,IAAW,EAC7C,KAAK,GAAE,UAAU,GAAG,IAAW;IAWjC,SAAS,CACP,QAAQ,EAAE,MAAM,EAChB,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,EAClB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,IAAI;IAUP,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQ9B,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCjE;;;OAGG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBpD,IAAI,WAAW,IAAI,MAAM,CAExB;YAMa,gBAAgB;YAyEhB,WAAW;IA2CzB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,KAAK;CAYd"}
@@ -9,6 +9,7 @@
9
9
  * PUT /entities/:id Update entity attributes
10
10
  * DELETE /entities/:id Delete entity
11
11
  * GET /entities?type=&limit=&offset= List entities
12
+ * GET /ops?kind=&limit=&offset= List causal ops (newest last in page)
12
13
  * POST /query EQL-S query
13
14
  * POST /upload File upload → blob hash
14
15
  * GET /files/:hash Download blob
@@ -24,6 +25,9 @@
24
25
  * WebSocket:
25
26
  * GET /realtime Upgrade to WebSocket for subscriptions
26
27
  *
28
+ * MCP (Streamable HTTP):
29
+ * GET/POST/DELETE /mcp Remote graph query/CRUD for AI agents
30
+ *
27
31
  * @module trellis/server
28
32
  */
29
33
  import type { TrellisDbConfig } from '../client/config.js';
@@ -37,6 +41,10 @@ export interface ServerConfig {
37
41
  pool: TenantPool;
38
42
  permissions?: PermissionRegistry;
39
43
  oauthProviders?: Record<string, import('./auth.js').OAuthProvider>;
44
+ /** Mount a cross-browser presence relay at `/rt` on the same HTTP server. */
45
+ presenceRelay?: boolean | {
46
+ path?: string;
47
+ };
40
48
  }
41
49
  /**
42
50
  * Start the Trellis DB HTTP + WebSocket server.
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAcH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAU/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAQ3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAM5D,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,WAAW,EAAE,aAAa,CAAC,CAAC;CACpE;AAMD;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,iBAAiB,CAAC,CAE5B;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,oBAAc,CAAC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAcH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAU/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAQ3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAkB5D,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,CAAC;IACxB,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,WAAW,EAAE,aAAa,CAAC,CAAC;IACnE,6EAA6E;IAC7E,aAAa,CAAC,EAAE,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7C;AAMD;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,iBAAiB,CAAC,CAE5B;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,oBAAc,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Streamable HTTP MCP gateway — shared session transport for room + discovery.
3
+ *
4
+ * @module trellis/server
5
+ */
6
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
7
+ export declare class StreamableMcpGateway {
8
+ private sessions;
9
+ handle(req: Request, createServer: () => McpServer | Promise<McpServer>): Promise<Response>;
10
+ close(): Promise<void>;
11
+ }
12
+ //# sourceMappingURL=streamable-mcp-gateway.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamable-mcp-gateway.d.ts","sourceRoot":"","sources":["../../src/server/streamable-mcp-gateway.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsBzE,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAmC;IAE7C,MAAM,CACV,GAAG,EAAE,OAAO,EACZ,YAAY,EAAE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,GACjD,OAAO,CAAC,QAAQ,CAAC;IAkDd,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAM7B"}
@@ -22,6 +22,11 @@ export interface TenantUsageSnapshot {
22
22
  }
23
23
  export interface UsageMeterOptions {
24
24
  now?: () => Date;
25
+ /** Daily graph I/O cap per tenant (0 = unlimited). Env: TRELLIS_MCP_GRAPH_IO_LIMIT */
26
+ graphIoLimit?: number;
27
+ }
28
+ export declare class McpRateLimitError extends Error {
29
+ constructor(message: string);
25
30
  }
26
31
  export declare function resolveUsageTenantId(tenantId?: string | null): string;
27
32
  export declare function dayKey(date: Date): string;
@@ -38,7 +43,13 @@ export declare class UsageMeter {
38
43
  private buckets;
39
44
  private storageSampledAt;
40
45
  private now;
46
+ private graphIoLimit;
41
47
  constructor(opts?: UsageMeterOptions);
48
+ /**
49
+ * Enforce per-tenant daily graph I/O budget (MCP + REST).
50
+ * No-op when limit is 0 (unlimited).
51
+ */
52
+ assertGraphIoBudget(tenantId: string): void;
42
53
  recordGraphIo(tenantId: string, count?: number): void;
43
54
  recordEgress(tenantId: string, bytes: number): void;
44
55
  /** Set storage gauge for the current day (from sampler, not incremental). */
@@ -1 +1 @@
1
- {"version":3,"file":"usage-meter.d.ts","sourceRoot":"","sources":["../../src/server/usage-meter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAO/C,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,eAAe,GAAG,cAAc,CAAC;AAEtE,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,CAAC;IAClB,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAYD,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAErE;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAEzC;AAYD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,UAAU,EAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GACvB,MAAM,CAWR;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAUpD;AAMD,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAA6C;IAC5D,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,GAAG,CAAa;gBAEZ,IAAI,GAAE,iBAAsB;IAIxC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,IAAI;IAMhD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAMnD,6EAA6E;IAC7E,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAMpD,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;IAOjE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,mBAAmB;IAc7D,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAMpC,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,OAAO;CAYhB"}
1
+ {"version":3,"file":"usage-meter.d.ts","sourceRoot":"","sources":["../../src/server/usage-meter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAO/C,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,eAAe,GAAG,cAAc,CAAC;AAEtE,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,CAAC;IAClB,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,sFAAsF;IACtF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAYD,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAErE;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAEzC;AAYD;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,UAAU,EAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GACvB,MAAM,CAWR;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAUpD;AAMD,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAA6C;IAC5D,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,GAAG,CAAa;IACxB,OAAO,CAAC,YAAY,CAAS;gBAEjB,IAAI,GAAE,iBAAsB;IAQxC;;;OAGG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAU3C,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,IAAI;IAMhD,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAMnD,6EAA6E;IAC7E,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAMpD,aAAa,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM;IAOjE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,mBAAmB;IAc7D,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAMpC,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,OAAO;CAYhB"}