@fragment-dev/cli 2026.6.23-1 → 2026.6.23-10

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 (78) hide show
  1. package/README.md +0 -25
  2. package/dist/{chunk-RYBPAM35.js → chunk-273N6ZXQ.js} +3 -3
  3. package/dist/{chunk-3Z7YOSNF.js → chunk-2BXFOBDR.js} +1 -1
  4. package/dist/{chunk-THGLXMNF.js → chunk-2TY723F2.js} +9700 -481
  5. package/dist/{chunk-65ZH3QK2.js → chunk-2XVJPTGJ.js} +5 -5
  6. package/dist/{chunk-4GFUVXOU.js → chunk-4ON2JBLL.js} +1 -1
  7. package/dist/{chunk-YFK5FYC3.js → chunk-5UQJOVVA.js} +2 -2
  8. package/dist/{chunk-7VZGNWZU.js → chunk-7FAAI43J.js} +2 -2
  9. package/dist/{chunk-QG5ISRA6.js → chunk-BBZDU3B4.js} +1 -1
  10. package/dist/{chunk-ZA25L4BB.js → chunk-CZDYCUNU.js} +2 -2
  11. package/dist/{chunk-IH5353LR.js → chunk-DEQKFNI7.js} +2 -2
  12. package/dist/{chunk-7ODKTNDM.js → chunk-DRO64DIW.js} +2 -2
  13. package/dist/{chunk-54TES6VA.js → chunk-DSRAWD4N.js} +1 -1
  14. package/dist/{chunk-XIZTVCPY.js → chunk-FWFNCG6R.js} +2 -2
  15. package/dist/{chunk-426XTAUO.js → chunk-HKNXFZFT.js} +1 -1
  16. package/dist/{chunk-TLN6TZFS.js → chunk-INAIBX5Q.js} +3506 -11
  17. package/dist/{chunk-HLYDHSCC.js → chunk-L7ZGDLYU.js} +121 -103
  18. package/dist/{chunk-TUJDC72W.js → chunk-LQOUDLSN.js} +2 -2
  19. package/dist/{chunk-6OHUBHOM.js → chunk-MOQTJOKZ.js} +1 -1
  20. package/dist/{chunk-4WW4FP3U.js → chunk-MRTEC2MR.js} +27 -32
  21. package/dist/{chunk-KWPWX7YO.js → chunk-OKUHODEP.js} +2 -2
  22. package/dist/{chunk-KRY3SN6D.js → chunk-Q4ZQFJOW.js} +1 -1
  23. package/dist/{chunk-F3APAVQ6.js → chunk-R3UOJOBB.js} +1 -1
  24. package/dist/{chunk-LUXIPN36.js → chunk-RAVIBG3R.js} +1 -1
  25. package/dist/{chunk-KITXRL7V.js → chunk-S5ZYP5UA.js} +2 -2
  26. package/dist/{chunk-ASNIF3XW.js → chunk-UMTPP457.js} +3 -3
  27. package/dist/{chunk-RBQFB2R6.js → chunk-W2XQHKPZ.js} +3 -3
  28. package/dist/{chunk-IDKZFORS.js → chunk-WAMB7442.js} +2 -2
  29. package/dist/{chunk-5DN7VDST.js → chunk-Y32HJLPJ.js} +2 -2
  30. package/dist/{chunk-PYQBNBYQ.js → chunk-Y7M36OPF.js} +1 -1
  31. package/dist/{chunk-66AHNAX3.js → chunk-YKKDKAMP.js} +2 -2
  32. package/dist/{chunk-MJFFSZAZ.js → chunk-YNEY7R37.js} +3 -3
  33. package/dist/{chunk-7ANSQIHO.js → chunk-ZNXOMYLU.js} +2 -2
  34. package/dist/commands/add-ledger-entry.js +7 -9
  35. package/dist/commands/create-custom-link.js +7 -9
  36. package/dist/commands/create-ledger.js +7 -9
  37. package/dist/commands/delete-custom-txs.js +7 -9
  38. package/dist/commands/delete-ledger.js +7 -9
  39. package/dist/commands/delete-schema.js +7 -9
  40. package/dist/commands/gen-graphql.js +8 -10
  41. package/dist/commands/get-schema.js +8 -11
  42. package/dist/commands/init.js +6 -8
  43. package/dist/commands/login.js +7 -10
  44. package/dist/commands/migrate-ledger-entry.js +7 -9
  45. package/dist/commands/query/ledgerAccounts.js +7 -9
  46. package/dist/commands/query/ledgers.js +7 -9
  47. package/dist/commands/query/schema.js +7 -9
  48. package/dist/commands/query/schemas.js +7 -9
  49. package/dist/commands/reverse-ledger-entry.js +7 -9
  50. package/dist/commands/start.js +6 -8
  51. package/dist/commands/store-schema.js +7 -9
  52. package/dist/commands/token.js +7 -9
  53. package/dist/commands/update-ledger-account.js +7 -9
  54. package/dist/commands/update.js +7 -10
  55. package/dist/commands/verify-schema.js +8 -10
  56. package/dist/commands/workspace.js +7 -9
  57. package/dist/commands.js +35 -39
  58. package/dist/graphql.js +2 -2
  59. package/dist/index.js +35 -39
  60. package/dist/lib/auth.js +2 -3
  61. package/dist/lib/authenticatedCommand.js +6 -8
  62. package/dist/lib/baseCommand.js +5 -7
  63. package/dist/utils/formatValidationErrors.js +2 -3
  64. package/dist/utils/schemaValidation.js +3 -4
  65. package/dist/version.js +2 -3
  66. package/oclif.manifest.json +1 -44
  67. package/package.json +1 -3
  68. package/dist/chunk-4NJIQ4GG.js +0 -168
  69. package/dist/chunk-66MJVSVR.js +0 -14200
  70. package/dist/chunk-BRU5ITZE.js +0 -229
  71. package/dist/chunk-OAOBQSDM.js +0 -9275
  72. package/dist/chunk-UDV5USSB.js +0 -120
  73. package/dist/chunk-W6O4UGRF.js +0 -3517
  74. package/dist/commands/designer-mcp.js +0 -19
  75. package/dist/designer/commandQueue.js +0 -7
  76. package/dist/designer/mcpServer.js +0 -8
  77. package/dist/designer/server.js +0 -13557
  78. package/dist/{chunk-WEG4FG46.js → chunk-PGXQFGGZ.js} +3 -3
package/dist/graphql.js CHANGED
@@ -8,13 +8,13 @@ import {
8
8
  isValidGraphQlName,
9
9
  schemaToEntryDefinitions,
10
10
  validateOutputName
11
- } from "./chunk-WEG4FG46.js";
11
+ } from "./chunk-PGXQFGGZ.js";
12
12
  import "./chunk-FMY4RHS4.js";
13
13
  import "./chunk-ZMFGVGZP.js";
14
14
  import "./chunk-2Y3TU546.js";
15
15
  import "./chunk-Q76GHHV3.js";
16
- import "./chunk-XK2D2Z44.js";
17
16
  import "./chunk-7K4RMTU4.js";
17
+ import "./chunk-XK2D2Z44.js";
18
18
  import "./chunk-7GH3YGSC.js";
19
19
  export {
20
20
  camelCase,
package/dist/index.js CHANGED
@@ -1,57 +1,53 @@
1
1
  import {
2
2
  COMMANDS
3
- } from "./chunk-4WW4FP3U.js";
4
- import "./chunk-6OHUBHOM.js";
5
- import "./chunk-4GFUVXOU.js";
6
- import "./chunk-KWPWX7YO.js";
7
- import "./chunk-PYQBNBYQ.js";
8
- import "./chunk-KITXRL7V.js";
9
- import "./chunk-F3APAVQ6.js";
10
- import "./chunk-XIZTVCPY.js";
11
- import "./chunk-5DN7VDST.js";
12
- import "./chunk-ASNIF3XW.js";
13
- import "./chunk-426XTAUO.js";
3
+ } from "./chunk-MRTEC2MR.js";
4
+ import "./chunk-OKUHODEP.js";
5
+ import "./chunk-Y7M36OPF.js";
6
+ import "./chunk-S5ZYP5UA.js";
7
+ import "./chunk-R3UOJOBB.js";
8
+ import "./chunk-FWFNCG6R.js";
9
+ import "./chunk-Y32HJLPJ.js";
10
+ import "./chunk-UMTPP457.js";
11
+ import "./chunk-HKNXFZFT.js";
14
12
  import "./chunk-A4BSWX5D.js";
15
- import "./chunk-RYBPAM35.js";
16
- import "./chunk-WEG4FG46.js";
13
+ import "./chunk-MOQTJOKZ.js";
14
+ import "./chunk-YNEY7R37.js";
15
+ import "./chunk-DSRAWD4N.js";
16
+ import "./chunk-2XVJPTGJ.js";
17
+ import "./chunk-INAIBX5Q.js";
18
+ import "./chunk-ZNXOMYLU.js";
19
+ import "./chunk-CZDYCUNU.js";
20
+ import "./chunk-Q4ZQFJOW.js";
21
+ import "./chunk-DRO64DIW.js";
22
+ import "./chunk-4ON2JBLL.js";
23
+ import "./chunk-DEQKFNI7.js";
24
+ import "./chunk-YKKDKAMP.js";
25
+ import "./chunk-7FAAI43J.js";
26
+ import "./chunk-5UQJOVVA.js";
27
+ import "./chunk-LQOUDLSN.js";
28
+ import "./chunk-WAMB7442.js";
29
+ import "./chunk-RAVIBG3R.js";
30
+ import "./chunk-JSQLWL2J.js";
31
+ import "./chunk-273N6ZXQ.js";
32
+ import "./chunk-PGXQFGGZ.js";
17
33
  import "./chunk-FMY4RHS4.js";
18
34
  import "./chunk-ZMFGVGZP.js";
19
35
  import "./chunk-YUG6IFIF.js";
20
- import "./chunk-RBQFB2R6.js";
36
+ import "./chunk-W2XQHKPZ.js";
21
37
  import "./chunk-2Y3TU546.js";
22
38
  import "./chunk-Q76GHHV3.js";
23
- import "./chunk-MJFFSZAZ.js";
24
- import "./chunk-54TES6VA.js";
25
- import "./chunk-65ZH3QK2.js";
26
- import "./chunk-TLN6TZFS.js";
27
- import "./chunk-W6O4UGRF.js";
28
- import "./chunk-7ANSQIHO.js";
29
- import "./chunk-ZA25L4BB.js";
30
- import "./chunk-KRY3SN6D.js";
31
- import "./chunk-7ODKTNDM.js";
32
- import "./chunk-IH5353LR.js";
33
- import "./chunk-66AHNAX3.js";
34
- import "./chunk-7VZGNWZU.js";
35
- import "./chunk-YFK5FYC3.js";
36
- import "./chunk-TUJDC72W.js";
37
- import "./chunk-IDKZFORS.js";
38
- import "./chunk-LUXIPN36.js";
39
- import "./chunk-JSQLWL2J.js";
40
- import "./chunk-UDV5USSB.js";
41
39
  import {
42
40
  require_lib
43
- } from "./chunk-THGLXMNF.js";
44
- import "./chunk-QG5ISRA6.js";
41
+ } from "./chunk-2TY723F2.js";
45
42
  import "./chunk-O7AE4SQS.js";
43
+ import "./chunk-BBZDU3B4.js";
46
44
  import "./chunk-QF5EN33L.js";
47
45
  import "./chunk-CW4UI44G.js";
48
- import "./chunk-OAOBQSDM.js";
49
- import "./chunk-XK2D2Z44.js";
50
46
  import "./chunk-7K4RMTU4.js";
51
- import "./chunk-3Z7YOSNF.js";
52
- import "./chunk-BRU5ITZE.js";
47
+ import "./chunk-2BXFOBDR.js";
48
+ import "./chunk-L7ZGDLYU.js";
53
49
  import "./chunk-WS2PJBP6.js";
54
- import "./chunk-HLYDHSCC.js";
50
+ import "./chunk-XK2D2Z44.js";
55
51
  import {
56
52
  __toESM,
57
53
  init_cjs_shims
package/dist/lib/auth.js CHANGED
@@ -4,10 +4,9 @@ import {
4
4
  attemptToCacheToken,
5
5
  getToken,
6
6
  readUnexpiredAccessToken
7
- } from "../chunk-3Z7YOSNF.js";
8
- import "../chunk-BRU5ITZE.js";
7
+ } from "../chunk-2BXFOBDR.js";
8
+ import "../chunk-L7ZGDLYU.js";
9
9
  import "../chunk-WS2PJBP6.js";
10
- import "../chunk-HLYDHSCC.js";
11
10
  import "../chunk-7GH3YGSC.js";
12
11
  export {
13
12
  AccessTokenSchema,
@@ -1,19 +1,17 @@
1
1
  import {
2
2
  AuthenticatedCommand
3
- } from "../chunk-LUXIPN36.js";
3
+ } from "../chunk-RAVIBG3R.js";
4
4
  import "../chunk-JSQLWL2J.js";
5
- import "../chunk-THGLXMNF.js";
6
- import "../chunk-QG5ISRA6.js";
5
+ import "../chunk-2TY723F2.js";
7
6
  import "../chunk-O7AE4SQS.js";
7
+ import "../chunk-BBZDU3B4.js";
8
8
  import "../chunk-QF5EN33L.js";
9
9
  import "../chunk-CW4UI44G.js";
10
- import "../chunk-OAOBQSDM.js";
11
- import "../chunk-XK2D2Z44.js";
12
10
  import "../chunk-7K4RMTU4.js";
13
- import "../chunk-3Z7YOSNF.js";
14
- import "../chunk-BRU5ITZE.js";
11
+ import "../chunk-2BXFOBDR.js";
12
+ import "../chunk-L7ZGDLYU.js";
15
13
  import "../chunk-WS2PJBP6.js";
16
- import "../chunk-HLYDHSCC.js";
14
+ import "../chunk-XK2D2Z44.js";
17
15
  import "../chunk-7GH3YGSC.js";
18
16
  export {
19
17
  AuthenticatedCommand
@@ -1,17 +1,15 @@
1
1
  import {
2
2
  FragmentCommand
3
- } from "../chunk-THGLXMNF.js";
4
- import "../chunk-QG5ISRA6.js";
3
+ } from "../chunk-2TY723F2.js";
5
4
  import "../chunk-O7AE4SQS.js";
5
+ import "../chunk-BBZDU3B4.js";
6
6
  import "../chunk-QF5EN33L.js";
7
7
  import "../chunk-CW4UI44G.js";
8
- import "../chunk-OAOBQSDM.js";
9
- import "../chunk-XK2D2Z44.js";
10
8
  import "../chunk-7K4RMTU4.js";
11
- import "../chunk-3Z7YOSNF.js";
12
- import "../chunk-BRU5ITZE.js";
9
+ import "../chunk-2BXFOBDR.js";
10
+ import "../chunk-L7ZGDLYU.js";
13
11
  import "../chunk-WS2PJBP6.js";
14
- import "../chunk-HLYDHSCC.js";
12
+ import "../chunk-XK2D2Z44.js";
15
13
  import "../chunk-7GH3YGSC.js";
16
14
  export {
17
15
  FragmentCommand
@@ -1,11 +1,10 @@
1
1
  import {
2
2
  formatValidationErrors,
3
3
  logValidationErrors
4
- } from "../chunk-RBQFB2R6.js";
4
+ } from "../chunk-W2XQHKPZ.js";
5
5
  import "../chunk-Q76GHHV3.js";
6
+ import "../chunk-L7ZGDLYU.js";
6
7
  import "../chunk-XK2D2Z44.js";
7
- import "../chunk-BRU5ITZE.js";
8
- import "../chunk-HLYDHSCC.js";
9
8
  import "../chunk-7GH3YGSC.js";
10
9
  export {
11
10
  formatValidationErrors,
@@ -3,14 +3,13 @@ import {
3
3
  extractSchemaMetadata,
4
4
  isJsonParseError,
5
5
  validateSchemaStructure
6
- } from "../chunk-426XTAUO.js";
6
+ } from "../chunk-HKNXFZFT.js";
7
7
  import "../chunk-YUG6IFIF.js";
8
- import "../chunk-RBQFB2R6.js";
8
+ import "../chunk-W2XQHKPZ.js";
9
9
  import "../chunk-2Y3TU546.js";
10
10
  import "../chunk-Q76GHHV3.js";
11
+ import "../chunk-L7ZGDLYU.js";
11
12
  import "../chunk-XK2D2Z44.js";
12
- import "../chunk-BRU5ITZE.js";
13
- import "../chunk-HLYDHSCC.js";
14
13
  import "../chunk-7GH3YGSC.js";
15
14
  export {
16
15
  countAccountsRecursively,
package/dist/version.js CHANGED
@@ -2,10 +2,9 @@ import {
2
2
  VersionSchema,
3
3
  readVersionFile,
4
4
  updateVersionFile
5
- } from "./chunk-QG5ISRA6.js";
6
- import "./chunk-BRU5ITZE.js";
5
+ } from "./chunk-BBZDU3B4.js";
6
+ import "./chunk-L7ZGDLYU.js";
7
7
  import "./chunk-WS2PJBP6.js";
8
- import "./chunk-HLYDHSCC.js";
9
8
  import "./chunk-7GH3YGSC.js";
10
9
  export {
11
10
  VersionSchema,
@@ -774,49 +774,6 @@
774
774
  "pluginType": "core",
775
775
  "summary": "Reverse a Ledger Entry."
776
776
  },
777
- "designer-mcp": {
778
- "aliases": [],
779
- "args": {},
780
- "description": "Connect your LLM to the Fragment Schema designer (experimental)",
781
- "examples": [
782
- "<%= config.bin %> <%= command.id %>",
783
- "<%= config.bin %> <%= command.id %> --port 4321",
784
- "<%= config.bin %> <%= command.id %> --host 127.0.0.1 --port 5000"
785
- ],
786
- "flags": {
787
- "port": {
788
- "char": "p",
789
- "description": "Port to bind the HTTP server on",
790
- "name": "port",
791
- "default": 4321,
792
- "hasDynamicHelp": false,
793
- "multiple": false,
794
- "type": "option"
795
- },
796
- "host": {
797
- "description": "Host to bind the HTTP server on",
798
- "name": "host",
799
- "default": "127.0.0.1",
800
- "hasDynamicHelp": false,
801
- "multiple": false,
802
- "type": "option"
803
- },
804
- "allowed-origin": {
805
- "description": "Additional CORS origin to allow (repeatable). Localhost is always allowed.",
806
- "name": "allowed-origin",
807
- "hasDynamicHelp": false,
808
- "multiple": true,
809
- "type": "option"
810
- }
811
- },
812
- "hasDynamicHelp": false,
813
- "hiddenAliases": [],
814
- "id": "designer-mcp",
815
- "pluginAlias": "@fragment-dev/cli",
816
- "pluginName": "@fragment-dev/cli",
817
- "pluginType": "core",
818
- "strict": true
819
- },
820
777
  "query:ledgerAccounts": {
821
778
  "aliases": [],
822
779
  "args": {},
@@ -1023,5 +980,5 @@
1023
980
  "help": "Generate GraphQL queries from your Schema for your SDK."
1024
981
  }
1025
982
  },
1026
- "version": "2026.6.23-1"
983
+ "version": "2026.6.23-10"
1027
984
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fragment-dev/cli",
3
- "version": "2026.6.23-1",
3
+ "version": "2026.6.23-10",
4
4
  "description": "FRAGMENT CLI",
5
5
  "author": "hello@fragment.dev",
6
6
  "bin": {
@@ -31,9 +31,7 @@
31
31
  "@graphql-codegen/typescript-operations": "^4.4.0",
32
32
  "@oclif/test": "4.1.18",
33
33
  "@types/chai": "^4",
34
- "@types/cors": "^2.8.17",
35
34
  "@types/cross-spawn": "^6.0.2",
36
- "@types/express": "^4.17.21",
37
35
  "@types/inquirer": "^9.0.7",
38
36
  "@types/mocha": "^9.0.0",
39
37
  "@types/node": "^20.11.16",
@@ -1,168 +0,0 @@
1
- import {
2
- init_cjs_shims
3
- } from "./chunk-7GH3YGSC.js";
4
-
5
- // src/designer/commandQueue.ts
6
- init_cjs_shims();
7
- import { randomUUID } from "node:crypto";
8
-
9
- // ../../libs/designer-mcp-protocol/index.ts
10
- init_cjs_shims();
11
- var DESIGNER_BRIDGE_VERSION = 5;
12
- var DESIGNER_POLL_TIMEOUT_MS = 25e3;
13
- var DESIGNER_COMMAND_TIMEOUT_MS = 3e4;
14
-
15
- // src/designer/commandQueue.ts
16
- var DEFAULT_COMMAND_TIMEOUT_MS = DESIGNER_COMMAND_TIMEOUT_MS;
17
- var DEFAULT_POLL_TIMEOUT_MS = DESIGNER_POLL_TIMEOUT_MS;
18
- var REDELIVERY_GRACE_MS = 5e3;
19
- var createCommandQueue = () => {
20
- const pending = /* @__PURE__ */ new Map();
21
- const waiters = [];
22
- let dashboardLastSeenMs = 0;
23
- let closed = false;
24
- const markDashboardSeen = () => {
25
- dashboardLastSeenMs = Date.now();
26
- };
27
- const isRedeliverable = (entry, now) => entry.deliveredAtMs === void 0 || now - entry.deliveredAtMs >= REDELIVERY_GRACE_MS;
28
- const takeDeliverable = (now) => {
29
- const batch = [];
30
- pending.forEach((entry) => {
31
- if (isRedeliverable(entry, now)) {
32
- entry.deliveredAtMs = now;
33
- batch.push(entry.command);
34
- }
35
- });
36
- return batch;
37
- };
38
- const nextRedeliveryDelay = (now) => {
39
- let soonest;
40
- pending.forEach((entry) => {
41
- if (entry.deliveredAtMs === void 0)
42
- return;
43
- const readyIn = entry.deliveredAtMs + REDELIVERY_GRACE_MS - now;
44
- if (readyIn > 0 && (soonest === void 0 || readyIn < soonest)) {
45
- soonest = readyIn;
46
- }
47
- });
48
- return soonest;
49
- };
50
- const failPending = (id, error) => {
51
- const entry = pending.get(id);
52
- if (!entry) {
53
- return;
54
- }
55
- clearTimeout(entry.timer);
56
- pending.delete(id);
57
- entry.resolve({ id, ok: false, error });
58
- };
59
- const deliverPendingToWaiter = () => {
60
- if (waiters.length === 0) {
61
- return;
62
- }
63
- const batch = takeDeliverable(Date.now());
64
- if (batch.length === 0) {
65
- return;
66
- }
67
- const waiter = waiters.shift();
68
- if (!waiter) {
69
- return;
70
- }
71
- clearTimeout(waiter.timer);
72
- waiter.resolve(batch);
73
- };
74
- const enqueue = (name, args, timeoutMs = DEFAULT_COMMAND_TIMEOUT_MS) => new Promise((resolve) => {
75
- if (closed) {
76
- const id = randomUUID();
77
- resolve({
78
- id,
79
- ok: false,
80
- error: "Designer MCP server shutting down"
81
- });
82
- return;
83
- }
84
- const command = {
85
- id: randomUUID(),
86
- name,
87
- args,
88
- issuedAtMs: Date.now()
89
- };
90
- const timer = setTimeout(() => {
91
- failPending(
92
- command.id,
93
- "Dashboard did not respond in time. Is the schema designer open?"
94
- );
95
- }, timeoutMs);
96
- timer.unref?.();
97
- pending.set(command.id, { command, resolve, timer });
98
- deliverPendingToWaiter();
99
- });
100
- const drainForPoll = (timeoutMs = DEFAULT_POLL_TIMEOUT_MS) => new Promise((resolve) => {
101
- markDashboardSeen();
102
- const batch = takeDeliverable(Date.now());
103
- if (batch.length > 0) {
104
- resolve(batch);
105
- return;
106
- }
107
- const redeliveryDelay = nextRedeliveryDelay(Date.now());
108
- const waitMs = redeliveryDelay === void 0 ? timeoutMs : Math.min(timeoutMs, redeliveryDelay);
109
- const timer = setTimeout(() => {
110
- const idx = waiters.indexOf(waiter);
111
- if (idx !== -1) {
112
- waiters.splice(idx, 1);
113
- }
114
- resolve(takeDeliverable(Date.now()));
115
- }, waitMs);
116
- timer.unref?.();
117
- const waiter = { resolve, timer };
118
- waiters.push(waiter);
119
- });
120
- const resolveCommand = (response) => {
121
- const entry = pending.get(response.id);
122
- if (!entry) {
123
- return false;
124
- }
125
- clearTimeout(entry.timer);
126
- pending.delete(response.id);
127
- entry.resolve(response);
128
- return true;
129
- };
130
- const getDashboardLastSeenMs = () => dashboardLastSeenMs;
131
- const isDashboardConnected = (staleThresholdMs = DEFAULT_COMMAND_TIMEOUT_MS) => {
132
- if (dashboardLastSeenMs === 0)
133
- return false;
134
- return Date.now() - dashboardLastSeenMs < staleThresholdMs;
135
- };
136
- const shutdown = () => {
137
- closed = true;
138
- pending.forEach((entry, id) => {
139
- clearTimeout(entry.timer);
140
- entry.resolve({
141
- id,
142
- ok: false,
143
- error: "Designer MCP server shutting down"
144
- });
145
- });
146
- pending.clear();
147
- waiters.forEach((waiter) => {
148
- clearTimeout(waiter.timer);
149
- waiter.resolve([]);
150
- });
151
- waiters.length = 0;
152
- };
153
- return {
154
- enqueue,
155
- drainForPoll,
156
- resolveCommand,
157
- markDashboardSeen,
158
- getDashboardLastSeenMs,
159
- isDashboardConnected,
160
- shutdown
161
- };
162
- };
163
-
164
- export {
165
- DESIGNER_BRIDGE_VERSION,
166
- DESIGNER_POLL_TIMEOUT_MS,
167
- createCommandQueue
168
- };