@kdonev/termscape 0.1.3 → 0.1.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 (102) hide show
  1. package/README.md +32 -3
  2. package/dist/agents/polling.d.ts +31 -0
  3. package/dist/agents/polling.d.ts.map +1 -0
  4. package/dist/agents/polling.js +65 -0
  5. package/dist/agents/polling.js.map +1 -0
  6. package/dist/agents/profiles.d.ts +18 -3
  7. package/dist/agents/profiles.d.ts.map +1 -1
  8. package/dist/agents/profiles.js +86 -0
  9. package/dist/agents/profiles.js.map +1 -1
  10. package/dist/agents/shares.d.ts +32 -0
  11. package/dist/agents/shares.d.ts.map +1 -0
  12. package/dist/agents/shares.js +46 -0
  13. package/dist/agents/shares.js.map +1 -0
  14. package/dist/agents/wiring.d.ts +8 -0
  15. package/dist/agents/wiring.d.ts.map +1 -1
  16. package/dist/agents/wiring.js +61 -6
  17. package/dist/agents/wiring.js.map +1 -1
  18. package/dist/cli-args.d.ts +61 -0
  19. package/dist/cli-args.d.ts.map +1 -0
  20. package/dist/cli-args.js +35 -0
  21. package/dist/cli-args.js.map +1 -0
  22. package/dist/cli.js +10 -17
  23. package/dist/cli.js.map +1 -1
  24. package/dist/db/migrations.d.ts.map +1 -1
  25. package/dist/db/migrations.js +48 -0
  26. package/dist/db/migrations.js.map +1 -1
  27. package/dist/db/store.d.ts +14 -1
  28. package/dist/db/store.d.ts.map +1 -1
  29. package/dist/db/store.js +61 -0
  30. package/dist/db/store.js.map +1 -1
  31. package/dist/debug.d.ts +11 -0
  32. package/dist/debug.d.ts.map +1 -0
  33. package/dist/debug.js +45 -0
  34. package/dist/debug.js.map +1 -0
  35. package/dist/folders.d.ts +33 -0
  36. package/dist/folders.d.ts.map +1 -0
  37. package/dist/folders.js +88 -0
  38. package/dist/folders.js.map +1 -0
  39. package/dist/hub.d.ts +128 -3
  40. package/dist/hub.d.ts.map +1 -1
  41. package/dist/hub.js +495 -41
  42. package/dist/hub.js.map +1 -1
  43. package/dist/hub.tgz +0 -0
  44. package/dist/mcp/server.d.ts +2 -0
  45. package/dist/mcp/server.d.ts.map +1 -1
  46. package/dist/mcp/server.js +38 -5
  47. package/dist/mcp/server.js.map +1 -1
  48. package/dist/protocol/domain.d.ts +74 -0
  49. package/dist/protocol/domain.d.ts.map +1 -1
  50. package/dist/protocol/domain.js +58 -0
  51. package/dist/protocol/domain.js.map +1 -1
  52. package/dist/protocol/index.d.ts +1 -0
  53. package/dist/protocol/index.d.ts.map +1 -1
  54. package/dist/protocol/index.js +1 -0
  55. package/dist/protocol/index.js.map +1 -1
  56. package/dist/protocol/mcp-tools.d.ts +4 -0
  57. package/dist/protocol/mcp-tools.d.ts.map +1 -1
  58. package/dist/protocol/mcp-tools.js +16 -2
  59. package/dist/protocol/mcp-tools.js.map +1 -1
  60. package/dist/protocol/mouse.d.ts +54 -0
  61. package/dist/protocol/mouse.d.ts.map +1 -0
  62. package/dist/protocol/mouse.js +187 -0
  63. package/dist/protocol/mouse.js.map +1 -0
  64. package/dist/protocol/peer.d.ts +42 -1
  65. package/dist/protocol/peer.d.ts.map +1 -1
  66. package/dist/protocol/peer.js +57 -2
  67. package/dist/protocol/peer.js.map +1 -1
  68. package/dist/protocol/ws.d.ts +115 -2
  69. package/dist/protocol/ws.d.ts.map +1 -1
  70. package/dist/protocol/ws.js +71 -1
  71. package/dist/protocol/ws.js.map +1 -1
  72. package/dist/remote/deployer.d.ts.map +1 -1
  73. package/dist/remote/deployer.js +5 -1
  74. package/dist/remote/deployer.js.map +1 -1
  75. package/dist/remote/join-script.d.ts.map +1 -1
  76. package/dist/remote/join-script.js +156 -31
  77. package/dist/remote/join-script.js.map +1 -1
  78. package/dist/remote/peer-serve.d.ts +19 -2
  79. package/dist/remote/peer-serve.d.ts.map +1 -1
  80. package/dist/remote/peer-serve.js +87 -6
  81. package/dist/remote/peer-serve.js.map +1 -1
  82. package/dist/remote/registry.d.ts +10 -0
  83. package/dist/remote/registry.d.ts.map +1 -1
  84. package/dist/remote/registry.js +31 -5
  85. package/dist/remote/registry.js.map +1 -1
  86. package/dist/server.d.ts.map +1 -1
  87. package/dist/server.js +251 -7
  88. package/dist/server.js.map +1 -1
  89. package/dist/session/manager.d.ts +9 -0
  90. package/dist/session/manager.d.ts.map +1 -1
  91. package/dist/session/manager.js +14 -0
  92. package/dist/session/manager.js.map +1 -1
  93. package/dist/session/pty.d.ts +1 -1
  94. package/dist/session/pty.d.ts.map +1 -1
  95. package/dist/session/pty.js +14 -0
  96. package/dist/session/pty.js.map +1 -1
  97. package/package.json +1 -1
  98. package/web/assets/index-Z03Ta4g3.js +111 -0
  99. package/web/assets/index-u_uCiaPD.css +1 -0
  100. package/web/index.html +2 -2
  101. package/web/assets/index-CHlXyCCd.css +0 -1
  102. package/web/assets/index-DTl8am-O.js +0 -111
@@ -0,0 +1,88 @@
1
+ import { statSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import { resolve } from 'node:path';
4
+ /**
5
+ * A workspace root is a path typed by a person, and it belongs to whichever
6
+ * machine the workspace lives on — not to the process that happens to be
7
+ * holding the string at the moment. `paths.ts` is the hub's own layout, all
8
+ * of it zero-argument; a person's path is a different concern; hence a
9
+ * separate module rather than growing that one.
10
+ *
11
+ * Everything here is meant to run *on the machine the path belongs to* —
12
+ * `hub.ts` calls it for a local workspace, `peer-serve.ts` for one a peer was
13
+ * just asked about. Calling `path.resolve` in the caller's own platform
14
+ * flavour instead, as the code this replaces did, silently produces a
15
+ * different path than the one typed: `win32.resolve('/Users/x/dev')` binds a
16
+ * correct mac path to the current Windows drive, and `posix.resolve('C:\\Users\\x')`
17
+ * treats a Windows path as one relative segment glued under whatever the
18
+ * process's cwd happens to be. Refusing the foreign shape outright, by name,
19
+ * is what turns that into something a person can act on instead of a folder
20
+ * that "does not exist" for no stated reason.
21
+ */
22
+ const WIN32 = process.platform === 'win32';
23
+ /** `C:\...` or `C:/...` — a Windows drive letter, meaningless on POSIX. */
24
+ const WIN_DRIVE = /^[A-Za-z]:[\\/]/;
25
+ /** `\\server\share` — a Windows UNC path, meaningless on POSIX. */
26
+ const WIN_UNC = /^\\\\/;
27
+ /**
28
+ * A single leading `/` or `\`, which `path.win32.resolve` silently binds to
29
+ * whatever drive the process happens to be running from instead of refusing.
30
+ * Doubled (`//server/share` or `\\server\share`), it is a genuine UNC path
31
+ * and stays allowed.
32
+ */
33
+ const SINGLE_LEADING_SLASH = /^[\\/](?![\\/])/;
34
+ /**
35
+ * Turn what a person typed for a workspace folder into an absolute path, on
36
+ * the assumption that it means something *here* — call this only on the
37
+ * machine the path belongs to.
38
+ *
39
+ * Expands a leading `~` the way a shell would (there is no tilde expansion
40
+ * anywhere else in this codebase, so a bare `~/dev/x` used to become
41
+ * `<cwd>/~/dev/x`), then refuses a path that is absolute on the *other*
42
+ * platform rather than mangling it, then resolves whatever is left against
43
+ * `opts.base`.
44
+ */
45
+ export function resolveFolder(input, opts = {}) {
46
+ let p = input.trim();
47
+ if (p === '~' || p.startsWith('~/') || p.startsWith('~\\')) {
48
+ p = homedir() + p.slice(1);
49
+ }
50
+ if (!WIN32 && (WIN_DRIVE.test(p) || WIN_UNC.test(p))) {
51
+ throw new Error(`"${input}" looks like a Windows path, but this machine is not Windows`);
52
+ }
53
+ if (WIN32 && SINGLE_LEADING_SLASH.test(p)) {
54
+ throw new Error(`"${input}" looks like a path from a Linux or macOS machine, but this machine is Windows`);
55
+ }
56
+ return resolve(opts.base ?? process.cwd(), p);
57
+ }
58
+ /**
59
+ * `resolveFolder`, then require the result to actually exist and be a
60
+ * directory. `statSync().isDirectory()` rather than the `existsSync` this
61
+ * replaces: `existsSync` accepts a plain file too, which then fails later,
62
+ * at pty launch, with a far less useful error.
63
+ */
64
+ export function checkFolder(input, opts = {}) {
65
+ const path = resolveFolder(input, opts);
66
+ let stat;
67
+ try {
68
+ stat = statSync(path);
69
+ }
70
+ catch {
71
+ throw new Error(`folder does not exist: ${path}`);
72
+ }
73
+ if (!stat.isDirectory()) {
74
+ throw new Error(`not a folder: ${path}`);
75
+ }
76
+ return { path };
77
+ }
78
+ /**
79
+ * The last path segment, for the default workspace name when nobody typed
80
+ * one. `path.posix.basename` cannot split a Windows path apart (it treats the
81
+ * whole string as one segment), and a name is picked here for a folder that
82
+ * may belong to a machine other than this process's own.
83
+ */
84
+ export function folderName(input) {
85
+ const parts = input.trim().split(/[\\/]+/).filter(Boolean);
86
+ return parts[parts.length - 1] ?? input.trim();
87
+ }
88
+ //# sourceMappingURL=folders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folders.js","sourceRoot":"","sources":["../src/folders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;;;;;;;;;;;;GAiBG;AAEH,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;AAE3C,2EAA2E;AAC3E,MAAM,SAAS,GAAG,iBAAiB,CAAC;AACpC,mEAAmE;AACnE,MAAM,OAAO,GAAG,OAAO,CAAC;AACxB;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG,iBAAiB,CAAC;AAE/C;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,OAA0B,EAAE;IACvE,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,CAAC,GAAG,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,8DAA8D,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,KAAK,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,IAAI,KAAK,gFAAgF,CAC1F,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa,EAAE,OAA0B,EAAE;IACrE,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACH,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3D,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;AACjD,CAAC"}
package/dist/hub.d.ts CHANGED
@@ -1,17 +1,18 @@
1
1
  import { EventEmitter } from 'node:events';
2
- import { type AgentTemplateInfo, type Message, type Host, type Session, type TemplateProposal, type Viewport, type WindowRect, type Workspace } from './protocol/index.js';
2
+ import { type AgentTemplateInfo, type HostInfo, type Message, type Host, type Note, type Session, type TemplateProposal, type Viewport, type WindowRect, type Workspace } from './protocol/index.js';
3
3
  import { type Db } from './db/index.js';
4
4
  import { Store } from './db/store.js';
5
5
  import { ProfileRegistry } from './agents/profiles.js';
6
6
  import { AgentDetector } from './agents/detect.js';
7
7
  import { TemplateRegistry } from './agents/templates.js';
8
8
  import { TokenRegistry } from './agents/tokens.js';
9
+ import { Shares } from './agents/shares.js';
9
10
  import { MessageRouter } from './agents/router.js';
10
11
  import { SessionManager } from './session/manager.js';
11
12
  import type { AgentApi } from './mcp/server.js';
12
13
  import { PeerRegistry } from './remote/registry.js';
13
- import type { Uplink } from './remote/peer-serve.js';
14
- export declare const HUB_VERSION = "0.1.3";
14
+ import { type Uplink } from './remote/peer-serve.js';
15
+ export declare const HUB_VERSION = "0.1.4";
15
16
  /** How many agents one workspace may hold, bounding runaway recursive spawns. */
16
17
  export declare const DEFAULT_SPAWN_CAP = 12;
17
18
  export interface HubOptions {
@@ -37,6 +38,8 @@ export declare class Hub extends EventEmitter implements AgentApi {
37
38
  /** What of those profiles this machine actually has installed. */
38
39
  readonly agents: AgentDetector;
39
40
  readonly tokens: TokenRegistry;
41
+ /** Per-session share links (issue 14). Persisted, unlike `tokens`. */
42
+ readonly shares: Shares;
40
43
  readonly sessions: SessionManager;
41
44
  readonly router: MessageRouter;
42
45
  readonly peers: PeerRegistry;
@@ -62,6 +65,8 @@ export declare class Hub extends EventEmitter implements AgentApi {
62
65
  * agent honestly about whether anyone is there to decide.
63
66
  */
64
67
  private viewers;
68
+ /** Catches an agent watching a screen instead of waiting for a reply. */
69
+ private readonly pollWatch;
65
70
  constructor(opts?: HubOptions);
66
71
  /**
67
72
  * A persisted `connected` is a lie the moment this process starts: the
@@ -108,6 +113,18 @@ export declare class Hub extends EventEmitter implements AgentApi {
108
113
  name?: string;
109
114
  rootPath?: string;
110
115
  }): Workspace;
116
+ /**
117
+ * Resolve and check a folder on whichever machine would own the workspace,
118
+ * before that workspace exists. The Add/Edit-workspace dialog's pre-flight:
119
+ * without it, a bad remote root was never checked at all (createWorkspace
120
+ * cannot check what it cannot resolve), and a bad local one was only
121
+ * checked after the dialog had already closed. One method either way, so
122
+ * the dialog does not need to know which kind of workspace it is asking
123
+ * about.
124
+ */
125
+ checkHostFolder(hostId: string | null, path: string): Promise<{
126
+ path: string;
127
+ }>;
111
128
  removeWorkspace(id: string): Promise<void>;
112
129
  /**
113
130
  * Create a template or replace one, from the panel.
@@ -311,6 +328,46 @@ export declare class Hub extends EventEmitter implements AgentApi {
311
328
  resumeWorkspace(workspaceId: string): Promise<Session[]>;
312
329
  moveWindow(sessionId: string, rect: WindowRect): void;
313
330
  setViewport(v: Viewport): void;
331
+ /**
332
+ * Write a note straight to the db, no debounce.
333
+ *
334
+ * Windows debounce their layout writes (see `session/manager.ts`), and lose
335
+ * whichever drag was in flight if the hub is killed inside that window -
336
+ * `layout.test.ts` covers it, and `notes.test.ts` proves this does not
337
+ * repeat it. `setViewport` above already writes straight through for the
338
+ * same reason.
339
+ *
340
+ * Non-finite numbers are dropped rather than clamped to some default: a NaN
341
+ * or Infinity in x/y/w/h/z means the sender computed garbage, and the
342
+ * previous good rect is a safer answer than inventing one.
343
+ */
344
+ saveNote(note: Note): Note | null;
345
+ removeNote(id: string): void;
346
+ /**
347
+ * Grant a link that opens `sessionId` alone in another browser.
348
+ *
349
+ * Checked against `allSessions()` rather than trusted from the caller,
350
+ * because there is deliberately no foreign key holding the share table to
351
+ * this: a remote window's session lives on a peer, not in this database
352
+ * (see migration 9), so the only way to refuse an id that names nothing is
353
+ * to ask the same place the canvas itself would.
354
+ */
355
+ shareSession(sessionId: string): string;
356
+ /**
357
+ * Revoke a share link. `/ws` listens for `shareRevoked` and closes every
358
+ * socket already scoped to this session - without that, "revoked" would be
359
+ * untrue for a reviewer tab that is already open, which is the one case
360
+ * revocation exists for.
361
+ */
362
+ unshareSession(sessionId: string): void;
363
+ /**
364
+ * Resolve a share token to the session it grants, re-checking against
365
+ * `allSessions()` the same way `shareSession` does at mint time. Not
366
+ * expected to ever disagree - `removeSession` and `removeRemoteWindow` both
367
+ * delete the row when a session goes - but a socket presenting a token is
368
+ * exactly the moment to distrust a row rather than the moment to assume it.
369
+ */
370
+ resolveShareToken(token: string): string | null;
314
371
  private requireSession;
315
372
  whoami(sessionId: string): Promise<{
316
373
  address: string;
@@ -358,6 +415,60 @@ export declare class Hub extends EventEmitter implements AgentApi {
358
415
  source: "derived" | "stored" | "file";
359
416
  }[];
360
417
  }>;
418
+ /**
419
+ * Every machine on the canvas, for `spawn_agent`'s `host` to name and
420
+ * `list_hosts` to report. Relayed rather than answered locally on an
421
+ * attached hub: it holds rows for nothing but itself, so only the canvas
422
+ * can say what else exists, whether it is reachable, or what it has
423
+ * installed.
424
+ */
425
+ listHosts(sessionId: string): Promise<HostInfo[]>;
426
+ /**
427
+ * Every machine on the canvas as the canvas itself sees it: the canvas
428
+ * machine (which has no host row of its own — synthesised here with the
429
+ * same empty id the web tree already gives it), then every host row, each
430
+ * with the workspaces it has and the agent CLIs it last reported.
431
+ *
432
+ * `callerHostId` marks `you`: null for the canvas hub's own agents, a host
433
+ * id for a relayed caller elsewhere on the canvas. Only ever called here,
434
+ * on the canvas — an attached hub has nothing to build this from.
435
+ */
436
+ private hostsView;
437
+ /**
438
+ * Whether a spawn_agent `host` names the machine this hub itself runs on:
439
+ * 'local', 'self', or the label the canvas last told an attached hub it is
440
+ * called. An attached hub holds no id worth matching for itself — only the
441
+ * canvas holds a row for it — so these are the only ways it can recognise
442
+ * itself.
443
+ */
444
+ private namesThisMachine;
445
+ /**
446
+ * Turn a spawn_agent `host` (plus an optional `workspace`) into the
447
+ * `Workspace` to start into. Shared by a local call naming a `host` and a
448
+ * relayed one: the two must fail identically, since either can be what a
449
+ * spawn_agent call elsewhere on the canvas turns into by the time it
450
+ * reaches here. Only ever called on the canvas — it is the one hub these
451
+ * rules can be evaluated on.
452
+ */
453
+ private resolveSpawnTarget;
454
+ /**
455
+ * What this hub's own machine is called: 'canvas' when it owns the canvas,
456
+ * or the label the canvas gave an attached one — the same name list_hosts
457
+ * and list_agents both use, so every tool agrees on what a machine is
458
+ * called. Before the canvas's first `directory` arrives, an attached hub
459
+ * has not been told yet; 'local' is the fallback list_agents always
460
+ * answered with.
461
+ */
462
+ private thisMachineLabel;
463
+ /**
464
+ * What a workspace's machine is called, for a spawn reply's `host` field.
465
+ * `ws.hostId` set means a *remote* machine as this hub's own store knows
466
+ * it — true whether this hub is the canvas resolving a peer, or a peer
467
+ * itself (which holds no host rows of its own, so this branch never
468
+ * triggers for it). Null means local to whichever hub is asking, which is
469
+ * only 'canvas' when that hub is the canvas.
470
+ */
471
+ private hostLabelForWorkspace;
361
472
  listAgents(sessionId: string, workspace?: string): Promise<{
362
473
  address: string;
363
474
  workspace: string | null;
@@ -402,14 +513,28 @@ export declare class Hub extends EventEmitter implements AgentApi {
402
513
  spawnAgent(sessionId: string, opts: {
403
514
  profile?: string;
404
515
  name?: string;
516
+ host?: string;
405
517
  workspace?: string;
406
518
  prompt?: string;
407
519
  }): Promise<{
408
520
  address: string;
409
521
  workspace: string;
410
522
  profile: string;
523
+ host: string;
411
524
  promptQueued: boolean;
412
525
  }>;
526
+ /**
527
+ * Execute a spawn_agent relayed from another hub, exactly as a local call
528
+ * naming the same `host` would: resolve the target with
529
+ * `resolveSpawnTarget`, then land it directly rather than through
530
+ * `startSession` — the values already came out of `resolveTemplate` on the
531
+ * asking hub, and re-resolving `ask.agent` as a template id here could hit
532
+ * a stored template of the same name that means something else entirely on
533
+ * this hub. Never re-resolves a template and never re-prefixes the
534
+ * opening, for the same reason `startSession`'s own peer request does not:
535
+ * a template is config, and the two hubs do not share it.
536
+ */
537
+ private spawnFrom;
413
538
  /**
414
539
  * A template's opening instruction, typed in plainly.
415
540
  *
package/dist/hub.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hub.d.ts","sourceRoot":"","sources":["../src/hub.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hub.d.ts","sourceRoot":"","sources":["../src/hub.ts"],"names":[],"mappings":"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"}