@nimbus-sh/worker 0.5.0 → 0.6.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 (61) hide show
  1. package/dist/_shared/preview-host.d.ts +26 -8
  2. package/dist/_shared/preview-host.d.ts.map +1 -1
  3. package/dist/_shared/preview-host.js +51 -11
  4. package/dist/facets/durable-images.d.ts +9 -0
  5. package/dist/facets/durable-images.d.ts.map +1 -1
  6. package/dist/facets/durable-images.js +20 -1
  7. package/dist/facets/durable-slots.d.ts +1 -1
  8. package/dist/facets/durable-slots.d.ts.map +1 -1
  9. package/dist/facets/durable-slots.js +2 -1
  10. package/dist/facets/manager.d.ts +98 -15
  11. package/dist/facets/manager.d.ts.map +1 -1
  12. package/dist/facets/manager.js +443 -116
  13. package/dist/facets/resident-identity.d.ts +23 -0
  14. package/dist/facets/resident-identity.d.ts.map +1 -0
  15. package/dist/facets/resident-identity.js +31 -0
  16. package/dist/git/commands.d.ts +0 -1
  17. package/dist/git/commands.d.ts.map +1 -1
  18. package/dist/git/commands.js +0 -3
  19. package/dist/router/index.d.ts.map +1 -1
  20. package/dist/router/index.js +47 -10
  21. package/dist/router/public-directory.d.ts +5 -1
  22. package/dist/router/public-directory.d.ts.map +1 -1
  23. package/dist/router/public-directory.js +9 -2
  24. package/dist/router/remote-api.d.ts +18 -0
  25. package/dist/router/remote-api.d.ts.map +1 -1
  26. package/dist/router/remote-api.js +33 -4
  27. package/dist/runtime/cpython-resident.d.ts.map +1 -1
  28. package/dist/runtime/cpython-resident.js +3 -1
  29. package/dist/runtime/package-manager.d.ts +44 -1
  30. package/dist/runtime/package-manager.d.ts.map +1 -1
  31. package/dist/runtime/package-manager.js +168 -3
  32. package/dist/runtime/ruby-resident.d.ts.map +1 -1
  33. package/dist/runtime/ruby-resident.js +2 -0
  34. package/dist/session/agent.d.ts.map +1 -1
  35. package/dist/session/agent.js +28 -1
  36. package/dist/session/init.d.ts.map +1 -1
  37. package/dist/session/init.js +9 -0
  38. package/dist/session/keys.d.ts +4 -0
  39. package/dist/session/keys.d.ts.map +1 -1
  40. package/dist/session/keys.js +4 -0
  41. package/dist/session/nimbus-session.d.ts +34 -1
  42. package/dist/session/nimbus-session.d.ts.map +1 -1
  43. package/dist/session/nimbus-session.js +71 -10
  44. package/dist/session/port-capability.d.ts +46 -0
  45. package/dist/session/port-capability.d.ts.map +1 -1
  46. package/dist/session/port-capability.js +109 -9
  47. package/dist/session/programmatic.d.ts +95 -1
  48. package/dist/session/programmatic.d.ts.map +1 -1
  49. package/dist/session/programmatic.js +350 -26
  50. package/dist/session/routes.d.ts +9 -0
  51. package/dist/session/routes.d.ts.map +1 -1
  52. package/dist/session/routes.js +27 -2
  53. package/dist/session/rpc.d.ts +24 -1
  54. package/dist/session/rpc.d.ts.map +1 -1
  55. package/dist/session/rpc.js +51 -94
  56. package/dist/session/supervisor-op.d.ts +41 -4
  57. package/dist/session/supervisor-op.d.ts.map +1 -1
  58. package/dist/session/supervisor-op.js +95 -73
  59. package/dist/session/supervisor-rpc.d.ts.map +1 -1
  60. package/dist/session/supervisor-rpc.js +2 -3
  61. package/package.json +4 -4
@@ -15,9 +15,11 @@ import { CRED_KERNEL } from '@nimbus-sh/core/runtime/os-contracts.js';
15
15
  import { endProcessInput, resizeProcess, signalProcess, writeProcessInput, } from '@nimbus-sh/core/runtime/process-input-routing.js';
16
16
  import { z } from 'zod/v4';
17
17
  import { SESSION_DESTROYED_KEY, SHELL_STATE_KEY_PREFIX, VITE_CONFIG_KEY } from './keys.js';
18
- import { clearPortCapability, persistPortCapability, PortRecordSchema, portRecordKey, readPortReservation, reservePort, restorePortCapability, } from './port-capability.js';
18
+ import { clearPortCapability, isValidAppName, persistPortCapability, PortRecordSchema, portRecordKey, readPortReservation, readPortReservationByName, readPortReservationByOwner, reservePort, restorePortCapability, rotatePortCapability, } from './port-capability.js';
19
19
  import { PORT_CAPABILITY_KEY_PREFIX } from './keys.js';
20
20
  import { bindPublicPortCapability, unbindPublicPortCapability } from '../router/public-directory.js';
21
+ import { buildPreviewHost, buildPublicPreviewHost, isPreviewHostSafeSid, readPreviewHostSuffix, } from '../_shared/preview-host.js';
22
+ import { RESTART_POLICY_ENV } from '../facets/manager.js';
21
23
  import { GENERATION_KEY, assumeGeneration, generation } from '@nimbus-sh/fabric/generation.js';
22
24
  import { HeadlessTerminal, Shell } from '@nimbus-sh/core/substrate/lifo/index.js';
23
25
  const ShellIdSchema = z.string().min(1).max(160).regex(/^[A-Za-z0-9][A-Za-z0-9._:-]*$/);
@@ -352,7 +354,16 @@ function collectJobOutput(self, pid) {
352
354
  */
353
355
  export async function rpcStartProcess(self, command, options = {}) {
354
356
  await ensureProgrammaticReady(self, options);
355
- return withShellState(self, options, true, (scoped) => startOnShell(self, command, options, scoped));
357
+ if (options.restart !== undefined && options.restart !== 'never' && options.restart !== 'on-failure') {
358
+ throw new Error(`startProcess: restart must be 'never' or 'on-failure', got ${String(options.restart)}`);
359
+ }
360
+ // The policy rides the command's environment: the resident the command
361
+ // starts reads it off its env at launch and journals it, so the shell,
362
+ // the SDK and a child_process spawn all carry it the same way.
363
+ const withPolicy = options.restart === 'on-failure'
364
+ ? { ...options, env: { ...(options.env ?? {}), [RESTART_POLICY_ENV]: 'on-failure' } }
365
+ : options;
366
+ return withShellState(self, withPolicy, true, (scoped) => startOnShell(self, command, withPolicy, scoped));
356
367
  }
357
368
  async function startOnShell(self, command, options, scoped) {
358
369
  const job = startShellJob(self, command, options, { background: true }, scoped);
@@ -524,45 +535,359 @@ export async function rpcListPorts(self) {
524
535
  await Promise.all(entries.map((entry) => persistPortCapability(self, entry.port, entry.capability)));
525
536
  return entries.map(serializePort);
526
537
  }
538
+ /**
539
+ * Browser-facing URL for an application, built inside the session: the
540
+ * host form when the deployment carries a preview suffix (name first, port
541
+ * otherwise; the public bearer form when public and a capability exists),
542
+ * else the path form on the origin the session was last reached at. Null
543
+ * when the session has never been reached over HTTP and has no suffix —
544
+ * an embedder builds its own from the port and capability in that case.
545
+ */
546
+ export function appUrl(self, app) {
547
+ const sid = sessionIdOf(self);
548
+ const suffix = readPreviewHostSuffix(self.env);
549
+ if (suffix !== null && sid !== null && isPreviewHostSafeSid(sid)) {
550
+ const label = app.name ?? app.port;
551
+ if (app.visibility === 'public' && typeof app.capability === 'string') {
552
+ return `https://${buildPublicPreviewHost(sid, label, app.capability, suffix)}/`;
553
+ }
554
+ return `https://${buildPreviewHost(sid, label, suffix)}/`;
555
+ }
556
+ const origin = self.sessionOrigin;
557
+ if (!origin || sid === null)
558
+ return null;
559
+ const base = self.sessionBasePath || `/s/${sid}`;
560
+ return app.name ? `${origin}${base}/app/${app.name}/` : `${origin}${base}/port/${app.port}/`;
561
+ }
562
+ /** The sid this DO serves: the last segment of its name, `tn:sub:sid`. */
563
+ function sessionIdOf(self) {
564
+ const name = self.ctx.id?.name;
565
+ if (typeof name === 'string' && name.length > 0) {
566
+ const cut = name.lastIndexOf(':');
567
+ if (cut > 0)
568
+ return name.slice(cut + 1);
569
+ }
570
+ const fromBase = (self.sessionBasePath || '').replace(/^\/s\//, '');
571
+ return fromBase.length > 0 ? fromBase : null;
572
+ }
573
+ /**
574
+ * The port-centric surface, kept for every caller that has a port and
575
+ * nothing else — a dev server or a process outside the
576
+ * resident lifecycle. When the port's occupant carries an identity the
577
+ * exposure is the same lazy reservation `apps.expose` makes; when it does
578
+ * not, this compatibility path writes the row port-only, as before. One implementation:
579
+ * `applyExposure` below.
580
+ */
527
581
  export async function rpcExposePort(self, port, options) {
528
582
  await ensureProgrammaticReady(self);
529
583
  const n = Number(port);
530
584
  const entry = self.portRegistry.get(n);
531
- if (entry)
532
- await persistPortCapability(self, n, entry.capability);
533
- // The stored record decides visibility: a reservation's mark is sticky,
534
- // so 'public' survives persists of unrelated fields — and the caller's
535
- // explicit choice, when given, lands on the row the same way.
536
- if (options?.visibility !== undefined) {
537
- // A visibility choice is a write on the stored row, not a reservation
538
- // claim: owner and capability stay exactly as they were.
539
- await self.ctx.storage.transaction(async (txn) => {
540
- const stored = await readPortReservation({ storage: txn }, n);
541
- if (stored !== null && stored.visibility !== options.visibility) {
542
- await txn.put(portRecordKey(n), {
585
+ const identity = entry === undefined ? null : await self.facetManager.residentIdentity(entry.pid);
586
+ if (identity?.ephemeral) {
587
+ throw new Error(`port ${n} is served by the second instance of its program, which is not the durable one`);
588
+ }
589
+ const exposed = await applyExposure(self, n, identity?.owner ?? null, options ?? {});
590
+ return {
591
+ port: n,
592
+ listening: !!entry,
593
+ pid: entry?.pid ?? null,
594
+ registeredAt: entry?.registeredAt ?? null,
595
+ capability: exposed.capability,
596
+ visibility: exposed.visibility,
597
+ owner: exposed.owner,
598
+ name: exposed.name,
599
+ };
600
+ }
601
+ /**
602
+ * The identity-centric surface: the target names a running application —
603
+ * by port, by pid, or by name — and the exposure is what makes it durable
604
+ * under its identity: the port is reserved for the owner lazily, the
605
+ * capability minted when public and bound in the directory, the name
606
+ * stored on the reservation. Returns the address the caller can reach.
607
+ */
608
+ export async function rpcExposeApp(self, target, options = {}) {
609
+ await ensureProgrammaticReady(self);
610
+ const resolved = await resolveAppTarget(self, target);
611
+ if (resolved.port === null) {
612
+ throw new Error(`${describeTarget(target)} has not bound a port yet — expose it once it is listening`);
613
+ }
614
+ if (resolved.owner === null) {
615
+ throw new Error(`${describeTarget(target)} has no launch record to bind an identity to — `
616
+ + 'only journalled residents carry one; use ports.expose for a bare port');
617
+ }
618
+ const exposed = await applyExposure(self, resolved.port, resolved.owner, options);
619
+ const live = self.portRegistry.get(resolved.port);
620
+ return {
621
+ owner: resolved.owner,
622
+ name: exposed.name,
623
+ port: resolved.port,
624
+ pid: live?.pid ?? null,
625
+ capability: exposed.capability,
626
+ visibility: exposed.visibility,
627
+ url: appUrl(self, { port: resolved.port, ...exposed }),
628
+ };
629
+ }
630
+ /**
631
+ * The one exposure implementation. With an owner: reserve the port for it
632
+ * (a conflict if another owner holds it), carrying the name and visibility
633
+ * onto the reservation and adopting the live capability so the URL in
634
+ * circulation is the one the reservation re-adopts after a reset; public
635
+ * exposures mint a capability if none is live yet and bind the directory.
636
+ * Without an owner: the row is written port-only, exactly as `exposePort`
637
+ * always did.
638
+ */
639
+ async function applyExposure(self, port, owner, options) {
640
+ if (options.name !== undefined && !isValidAppName(options.name)) {
641
+ throw new Error(`'${options.name}' is not a valid app name: one DNS label, not all digits, not 24 hex`);
642
+ }
643
+ const entry = self.portRegistry.get(port);
644
+ if (owner !== null) {
645
+ await assertServingOwner(self, port, owner);
646
+ const occupied = new Set(self.portRegistry.getAll().map((live) => live.port));
647
+ occupied.delete(port);
648
+ await reservePort(self.ctx, {
649
+ owner,
650
+ kind: 'derived',
651
+ preferredPort: port,
652
+ occupiedPorts: occupied,
653
+ ...(entry !== undefined ? { capability: entry.capability } : {}),
654
+ ...(options.visibility !== undefined ? { visibility: options.visibility } : {}),
655
+ ...(options.name !== undefined ? { name: options.name } : {}),
656
+ });
657
+ }
658
+ else {
659
+ if (entry)
660
+ await persistPortCapability(self, port, entry.capability);
661
+ // A visibility or name choice is a write on the stored row, not a
662
+ // reservation claim: owner and capability stay exactly as they were.
663
+ if (options.visibility !== undefined || options.name !== undefined) {
664
+ await self.ctx.storage.transaction(async (txn) => {
665
+ const stored = await readPortReservation({ storage: txn }, port);
666
+ if (stored === null)
667
+ return;
668
+ const visibility = options.visibility ?? stored.visibility;
669
+ const name = options.name ?? stored.name;
670
+ if (visibility === stored.visibility && name === stored.name)
671
+ return;
672
+ await txn.put(portRecordKey(port), {
543
673
  owner: stored.owner,
674
+ kind: stored.kind,
544
675
  capability: stored.capability,
545
- visibility: options.visibility,
676
+ visibility,
677
+ ...(name !== undefined ? { name } : {}),
546
678
  });
547
- }
679
+ });
680
+ }
681
+ }
682
+ let record = await readPortReservation(self.ctx, port);
683
+ if (record?.visibility === 'public' && record.capability === null && owner !== null) {
684
+ // Public before the application has bound: mint now, so the URL exists
685
+ // and the binding re-adopts it, exactly as ensureDurableApp does.
686
+ await reservePort(self.ctx, {
687
+ owner, preferredPort: port, occupiedPorts: new Set(), capability: createPortCapability(),
548
688
  });
689
+ record = await readPortReservation(self.ctx, port);
549
690
  }
550
- const record = await readPortReservation(self.ctx, n);
551
- if (record?.visibility === 'public' && entry) {
691
+ // The live registration must answer the stored capability, or a URL
692
+ // minted before the bind 404s until the next restore.
693
+ if (record?.capability !== null && record?.capability !== undefined) {
694
+ const capability = record.capability;
695
+ if (record.owner !== null) {
696
+ await assertServingOwner(self, port, record.owner, () => self.portRegistry.restoreCapability(port, capability));
697
+ }
698
+ else {
699
+ self.portRegistry.restoreCapability(port, capability);
700
+ }
701
+ }
702
+ if (record?.visibility === 'public' && record.capability !== null) {
552
703
  // A port that goes public must be resolvable: the capability the URL
553
704
  // carries has to name this session in the directory, and a non-legacy
554
705
  // deployment without the binding is refused loudly — never half-public.
555
- await bindPublicPortCapability(self, entry.capability, n);
706
+ await bindPublicPortCapability(self, record.capability, port, record.name);
556
707
  }
557
708
  return {
558
- port: n,
559
- listening: !!entry,
560
- pid: entry?.pid ?? null,
561
- registeredAt: entry?.registeredAt ?? null,
562
- capability: entry?.capability ?? null,
709
+ owner: record?.owner ?? owner,
710
+ name: record?.name ?? null,
711
+ capability: record?.capability ?? entry?.capability ?? null,
563
712
  visibility: record?.visibility ?? 'scoped',
564
713
  };
565
714
  }
715
+ /**
716
+ * Mint a new capability for the application and rebind the directory:
717
+ * every URL built on the old one stops resolving. The registry adopts the
718
+ * new value at once if the port is live, so the new URL answers without
719
+ * waiting for a restore.
720
+ */
721
+ export async function rpcRotateLink(self, target) {
722
+ await ensureProgrammaticReady(self);
723
+ const resolved = await resolveAppTarget(self, target);
724
+ if (resolved.port === null || resolved.reservation === null) {
725
+ throw new Error(`${describeTarget(target)} is not exposed — nothing to rotate`);
726
+ }
727
+ const previous = resolved.reservation;
728
+ if (previous.owner !== null)
729
+ await assertServingOwner(self, resolved.port, previous.owner);
730
+ if (previous.visibility === 'public' && previous.capability !== null) {
731
+ await unbindPublicPortCapability(self, previous.capability);
732
+ }
733
+ if (previous.owner !== null)
734
+ await assertServingOwner(self, resolved.port, previous.owner);
735
+ const capability = await rotatePortCapability(self, resolved.port, createPortCapability());
736
+ if (capability === null)
737
+ throw new Error(`${describeTarget(target)} is not exposed — nothing to rotate`);
738
+ if (previous.owner !== null) {
739
+ await assertServingOwner(self, resolved.port, previous.owner, () => self.portRegistry.restoreCapability(resolved.port, capability));
740
+ }
741
+ else {
742
+ self.portRegistry.restoreCapability(resolved.port, capability);
743
+ }
744
+ if (previous.visibility === 'public') {
745
+ await bindPublicPortCapability(self, capability, resolved.port, previous.name);
746
+ }
747
+ const live = self.portRegistry.get(resolved.port);
748
+ return {
749
+ owner: resolved.owner ?? previous.owner ?? '',
750
+ name: previous.name ?? null,
751
+ port: resolved.port,
752
+ pid: live?.pid ?? null,
753
+ capability,
754
+ visibility: previous.visibility,
755
+ url: appUrl(self, { port: resolved.port, name: previous.name, capability, visibility: previous.visibility }),
756
+ };
757
+ }
758
+ /** A name or owner identifies a reservation, never whoever happens to occupy its port. */
759
+ async function assertServingOwner(self, port, owner, adopt) {
760
+ for (;;) {
761
+ const live = self.portRegistry.get(port);
762
+ if (live === undefined)
763
+ return;
764
+ const identity = await self.facetManager.residentIdentity(live.pid);
765
+ if (self.portRegistry.get(port)?.pid !== live.pid)
766
+ continue;
767
+ if (identity?.owner !== owner || identity.ephemeral) {
768
+ throw new Error(`port ${port} is served by a different process (owner ${identity?.owner ?? 'none'})`);
769
+ }
770
+ adopt?.();
771
+ return;
772
+ }
773
+ }
774
+ /** Every stamped identity, with the URL each is reachable at. */
775
+ export async function rpcListApps(self) {
776
+ await ensureProgrammaticReady(self);
777
+ const apps = await self.facetManager.listResidentApps();
778
+ return apps.map((app) => ({
779
+ ...app,
780
+ url: app.port === null ? null : appUrl(self, { ...app, port: app.port }),
781
+ }));
782
+ }
783
+ /**
784
+ * End an application: kill its live pids, release the reservation, purge
785
+ * its journal rows, free the durable slot and its storage, unbind the
786
+ * directory — `removeDurableApp`, addressed by any target.
787
+ */
788
+ export async function rpcRemoveApp(self, target) {
789
+ await ensureProgrammaticReady(self);
790
+ const resolved = await resolveAppTarget(self, target);
791
+ if (resolved.owner === null) {
792
+ throw new Error(`${describeTarget(target)} names no application — nothing to remove`);
793
+ }
794
+ return rpcRemoveDurableApp(self, resolved.owner);
795
+ }
796
+ function describeTarget(target) {
797
+ if (typeof target === 'number')
798
+ return `target ${target}`;
799
+ if (typeof target === 'string')
800
+ return `'${target}'`;
801
+ if ('port' in target)
802
+ return `port ${target.port}`;
803
+ if ('pid' in target)
804
+ return `pid ${target.pid}`;
805
+ if ('name' in target)
806
+ return `app '${target.name}'`;
807
+ return `owner '${target.owner}'`;
808
+ }
809
+ /**
810
+ * Resolve an app target to what the verbs need: the owner (from the
811
+ * serving pid's journal row, or the reservation), the port, and the
812
+ * reservation if one exists. A bare number is a port when something
813
+ * listens on it or a reservation names it, else a pid; a string is a name
814
+ * first, then an owner.
815
+ */
816
+ async function resolveAppTarget(self, target) {
817
+ const fm = self.facetManager;
818
+ const byPort = async (port) => {
819
+ const live = self.portRegistry.get(port);
820
+ const reservation = await readPortReservation(self.ctx, port);
821
+ const identity = live === undefined ? null : await fm.residentIdentity(live.pid);
822
+ if (identity?.ephemeral) {
823
+ throw new Error(`port ${port} is served by the second instance of its program, which is not the durable one`);
824
+ }
825
+ return { owner: identity?.owner ?? reservation?.owner ?? null, port, reservation };
826
+ };
827
+ const byPid = async (pid) => {
828
+ const identity = await fm.residentIdentity(pid);
829
+ if (identity === null)
830
+ return null;
831
+ if (identity.ephemeral) {
832
+ throw new Error(`pid ${pid} is the second instance of its program, which is not the durable one`);
833
+ }
834
+ const port = self.portRegistry.getAll().find((live) => live.pid === pid)?.port ?? identity.port ?? null;
835
+ const reservation = port === null ? null : await readPortReservation(self.ctx, port);
836
+ return { owner: identity.owner ?? null, port, reservation };
837
+ };
838
+ const byOwner = async (owner) => {
839
+ const held = await readPortReservationByOwner(self.ctx, owner);
840
+ if (held !== null)
841
+ return { owner, port: held.port, reservation: held.reservation };
842
+ const app = (await fm.listResidentApps()).find((candidate) => candidate.owner === owner);
843
+ return app === undefined ? null : { owner, port: app.port, reservation: null };
844
+ };
845
+ const byName = async (name) => {
846
+ const held = await readPortReservationByName(self.ctx, name);
847
+ return held === null ? null : { owner: held.reservation.owner, port: held.port, reservation: held.reservation };
848
+ };
849
+ if (typeof target === 'number') {
850
+ if (!Number.isInteger(target) || target <= 0)
851
+ throw new Error(`target ${target} is not a port or a pid`);
852
+ if (self.portRegistry.has(target) || (await readPortReservation(self.ctx, target)) !== null) {
853
+ return byPort(target);
854
+ }
855
+ const asPid = await byPid(target);
856
+ if (asPid !== null)
857
+ return asPid;
858
+ if (target <= 65535)
859
+ return byPort(target);
860
+ throw new Error(`nothing listens on port ${target} and no process ${target} exists`);
861
+ }
862
+ if (typeof target === 'string') {
863
+ const asName = await byName(target);
864
+ if (asName !== null)
865
+ return asName;
866
+ const asOwner = await byOwner(target);
867
+ if (asOwner !== null)
868
+ return asOwner;
869
+ throw new Error(`no application is named or owned '${target}'`);
870
+ }
871
+ if ('port' in target)
872
+ return byPort(Number(target.port));
873
+ if ('pid' in target) {
874
+ const asPid = await byPid(Number(target.pid));
875
+ if (asPid === null) {
876
+ throw new Error(`pid ${target.pid} has no launch record — only journalled residents carry one`);
877
+ }
878
+ return asPid;
879
+ }
880
+ if ('name' in target) {
881
+ const asName = await byName(target.name);
882
+ if (asName === null)
883
+ throw new Error(`no application is named '${target.name}'`);
884
+ return asName;
885
+ }
886
+ const asOwner = await byOwner(target.owner);
887
+ if (asOwner === null)
888
+ throw new Error(`no application is owned by '${target.owner}'`);
889
+ return asOwner;
890
+ }
566
891
  /**
567
892
  * The embedder's durable-application seam: reserve (or re-answer) the port
568
893
  * `owner` holds, minting the capability the application's public URL is
@@ -896,8 +1221,7 @@ function resetInMemorySessionState(self) {
896
1221
  self.nimbusWrangler = null;
897
1222
  self.npmInstaller = null;
898
1223
  self.fetchProxyEntrypoint = null;
899
- self.runtimeFsBridges?.clear();
900
- self.runtimeFsBridges = null;
1224
+ self._supervisorOps = null;
901
1225
  self._cpRegistry = null;
902
1226
  self._viteShimPid = null;
903
1227
  self._viteShimPort = null;
@@ -43,6 +43,15 @@ type RoutesHost = any;
43
43
  export declare function routeToSessionPort(self: RoutesHost, port: number, request: Request, innerPath: string, mountBase: string, capability?: string): Promise<Response>;
44
44
  /** Route a capability-authenticated embedder request to a guest HTTP server. */
45
45
  export declare function routeCapabilityPort(self: RoutesHost, port: number, capability: string, request: Request, innerPath: string): Promise<Response>;
46
+ /**
47
+ * The name-addressed door: `/app/<name>/…` — what the scoped `<name>--<sid>`
48
+ * host is forwarded as, and reachable in path form as `/s/<sid>/app/<name>/`.
49
+ * The name is a reservation alias only this session's records know, so it
50
+ * is resolved here and the request continues exactly as the port form would
51
+ * — same routing, same durable re-drive, same capability gate. A name
52
+ * nothing holds is a 404, never a guess.
53
+ */
54
+ export declare function routeToSessionApp(self: RoutesHost, name: string, request: Request, innerPath: string, capability?: string): Promise<Response>;
46
55
  export declare function handleFetch(self: RoutesHost, request: Request): Promise<Response>;
47
56
  export {};
48
57
  //# sourceMappingURL=routes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/session/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAuDH,KAAK,UAAU,GAAG,GAAG,CAAC;AA2HtB;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC,CAyDnB;AA2BD,gFAAgF;AAChF,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,CAAC,CAEnB;AAyGD,wBAAsB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAugCvF"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/session/routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAyDH,KAAK,UAAU,GAAG,GAAG,CAAC;AA2HtB;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC,CAyDnB;AA2BD,gFAAgF;AAChF,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,QAAQ,CAAC,CAEnB;AAeD;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC,CAMnB;AA4FD,wBAAsB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAmhCvF"}
@@ -41,13 +41,14 @@ import { ViteDevServer } from '../facets/vite-dev-server.js';
41
41
  import { notifyTerminalEvent, wireProcessLogSocketBroadcast } from '../runtime/process-logs-api.js';
42
42
  import { makeLongRunningPortStub } from '@nimbus-sh/core/runtime/long-running-handle.js';
43
43
  import { startRealVite } from './start-real-vite.js';
44
+ import { withResolvers } from '@nimbus-sh/fabric/turn-budget.js';
44
45
  import { getLoadedCodesStats } from '@nimbus-sh/fabric/bindings.js';
45
46
  import { generation } from '@nimbus-sh/fabric/generation.js';
46
47
  import { facetIdBudget } from '@nimbus-sh/fabric/budgets.js';
47
48
  import { loaderLedgerStats } from '@nimbus-sh/fabric/budgets.js';
48
49
  import { HOSTED_WEBSOCKET_CAPABILITY_HEADER, HOSTED_WEBSOCKET_KEY_HEADER, } from '@nimbus-sh/fabric/process-host.js';
49
50
  import { routeHostedWebSocket } from './rpc.js';
50
- import { clearPortCapability, persistPortCapability, readPortCapability, readPortReservation, restorePortCapability, } from './port-capability.js';
51
+ import { clearPortCapability, persistPortCapability, readPortCapability, readPortReservation, readPortReservationByName, restorePortCapability, } from './port-capability.js';
51
52
  import { PREVIEW_CAPABILITY_HEADER, PUBLIC_BEARER_HEADER, CALLER_SCOPES_HEADER, renderSessionStatusPage } from '../_shared/session-router.js';
52
53
  import { renderNoDevServerHtml } from './helpers.js';
53
54
  import { handleAgentRequest } from './agent.js';
@@ -291,6 +292,22 @@ function portRouteMountBase(request, port) {
291
292
  const header = request.headers.get(BASE_PATH_HEADER);
292
293
  return header ? `${header}/port/${port}` : '';
293
294
  }
295
+ /**
296
+ * The name-addressed door: `/app/<name>/…` — what the scoped `<name>--<sid>`
297
+ * host is forwarded as, and reachable in path form as `/s/<sid>/app/<name>/`.
298
+ * The name is a reservation alias only this session's records know, so it
299
+ * is resolved here and the request continues exactly as the port form would
300
+ * — same routing, same durable re-drive, same capability gate. A name
301
+ * nothing holds is a 404, never a guess.
302
+ */
303
+ export async function routeToSessionApp(self, name, request, innerPath, capability) {
304
+ const held = await readPortReservationByName(self.ctx, name);
305
+ if (held === null)
306
+ return new Response('Not found', { status: 404 });
307
+ const header = request.headers.get(BASE_PATH_HEADER);
308
+ const mountBase = header ? `${header}/app/${name}` : '';
309
+ return routeToSessionPort(self, held.port, request, innerPath, mountBase, capability);
310
+ }
294
311
  /** True if `innerPath` targets the cirrus-real HMR socket, under any mount
295
312
  * base — the client opens `<base>/__nimbus_hmr`, and on a `<port>--<sid>` host
296
313
  * the router forwards the whole path, base and all, under `/port/N`. */
@@ -1337,6 +1354,12 @@ export async function handleFetch(self, request) {
1337
1354
  const capability = request.headers.get(PREVIEW_CAPABILITY_HEADER);
1338
1355
  return routeToSessionPort(self, port, request, path, portRouteMountBase(request, port), capability ?? undefined);
1339
1356
  }
1357
+ // ── App route: the same door, addressed by a reservation's name ──
1358
+ const appMatch = url.pathname.match(/^\/app\/([a-z0-9][a-z0-9-]{0,62})(\/.*)?$/);
1359
+ if (appMatch) {
1360
+ const capability = request.headers.get(PREVIEW_CAPABILITY_HEADER);
1361
+ return routeToSessionApp(self, appMatch[1], request, normalizeForwardedHttpPath(appMatch[2] || '/'), capability ?? undefined);
1362
+ }
1340
1363
  // ── /api/_diag/cache — per-tier cache observability ───────────────
1341
1364
  //
1342
1365
  // Cache-observability wave: surfaces the L1/L2/L3/L4 × tarball/
@@ -1395,7 +1418,9 @@ export async function handleFetch(self, request) {
1395
1418
  if (!callerScopes.includes('session:admin')) {
1396
1419
  return new Response('forbidden: session:admin scope required', { status: 403 });
1397
1420
  }
1398
- self.ctx.waitUntil(new Promise((resolve) => setTimeout(resolve, 250)).then(() => self.ctx.abort()));
1421
+ const { promise: abortDue, resolve: abortReady } = withResolvers();
1422
+ self.ctx.waitUntil(abortDue.then(() => self.ctx.abort()));
1423
+ setTimeout(abortReady, 250);
1399
1424
  return new Response(null, { status: 204 });
1400
1425
  }
1401
1426
  return new Response('Not found', { status: 404 });
@@ -21,12 +21,30 @@
21
21
  * these ~3 sites would each need ctx threaded through; cast at boundary
22
22
  * is acceptable per plan §IX recommendation 1.
23
23
  */
24
+ import { SqliteRuntimeFsBridge } from '@nimbus-sh/core/runtime/sqlite-runtime-fs-bridge.js';
24
25
  import { type ResidentFacet } from '@nimbus-sh/fabric/workerd-facet-host.js';
25
26
  import { type HostedHttpRequest, type HostedHttpResponse } from '@nimbus-sh/fabric/process-host.js';
26
27
  import { type RuntimeOpenFlags, type VfsAcquireResult, type VfsListPage } from '@nimbus-sh/core/runtime/os-contracts.js';
27
28
  import type { WriteBatchStreamResult } from '@nimbus-sh/core/vfs/sqlite-vfs.js';
28
29
  import { z } from 'zod/v4';
29
30
  type RpcHost = any;
31
+ export declare function checkedReadPayloadBytes(bytes: number): number;
32
+ /**
33
+ * Bytes a ranged read can actually return, so the reservation covers the
34
+ * result rather than the ask. A 64 KiB range over a 200-byte file retains 200
35
+ * bytes; reserving the range would let a handful of small reads exhaust the
36
+ * read reserve and serialise a workload whose real cost is negligible.
37
+ *
38
+ * `stat` here is a local SQLite lookup inside the DO — the same one
39
+ * `_rpcReadFile` makes for the same reason — not a second round trip.
40
+ */
41
+ export declare function rangeReadBytes(fs: SqliteRuntimeFsBridge, path: string, offset: number, length: number): Promise<number>;
42
+ export declare function withReadAllocation<T>(bytes: number, read: () => Promise<T>): Promise<T>;
43
+ /**
44
+ * `files.readFile` — the read with the supervisor's allocation lease.
45
+ * The body lives in `buildSessionSupervisorOps`'s `readFile` override so
46
+ * direct `_rpc*` calls and the supervisor envelope share it.
47
+ */
30
48
  export declare function _rpcReadFile(self: RpcHost, path: string, pid?: number): Promise<string | null>;
31
49
  /**
32
50
  * Read a file as raw bytes (Uint8Array). Used by git network facet for
@@ -94,6 +112,11 @@ export declare function _rpcRmdir(self: RpcHost, path: string, pid?: number): Pr
94
112
  export declare function _rpcRename(self: RpcHost, from: string, to: string, pid?: number): Promise<void>;
95
113
  export declare function _rpcReadlink(self: RpcHost, path: string, pid?: number): Promise<string | null>;
96
114
  export declare function _rpcSymlink(self: RpcHost, target: string, path: string, pid?: number): Promise<void>;
115
+ export declare const FsReadRangeArgsSchema: z.ZodObject<{
116
+ path: z.ZodString;
117
+ offset: z.ZodNumber;
118
+ length: z.ZodNumber;
119
+ }, z.core.$strip>;
97
120
  declare const FsReadBatchArgsSchema: z.ZodArray<z.ZodObject<{
98
121
  path: z.ZodString;
99
122
  offset: z.ZodNumber;
@@ -135,7 +158,7 @@ export declare function _rpcFsAcquire(self: RpcHost, epoch: string | null, curso
135
158
  /**
136
159
  * Enumerate the session filesystem for a process, one bounded page at a time.
137
160
  *
138
- * Goes through `runtimeFs(self, pid)` like every other fs RPC, so the listing
161
+ * Goes through `self.supervisorBridge(pid)` like every other fs RPC, so the listing
139
162
  * is filtered by the calling process's own credential rather than the kernel's
140
163
  * — a process must not learn of a path it could not stat.
141
164
  */
@@ -1 +1 @@
1
- {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/session/rpc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAgBH,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,yCAAyC,CAAC;AAEjD,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACxB,MAAM,mCAAmC,CAAC;AAa3C,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EAErB,KAAK,WAAW,EACjB,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAmB,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAYjG,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAO3B,KAAK,OAAO,GAAG,GAAG,CAAC;AAwHnB,wBAAsB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQpG;AAEC;;;;GAIG;AACL,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAK7G;AAEC;;;;;;;;;;GAUG;AACL,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAC5B,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;CAC1B,GAAG,OAAO,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAC5B,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;CAC1B,CAAC,CAoDH;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ5H;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GAAG,UAAU,GAC3B,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAEtF;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAEvF;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG3G;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3H;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtG;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvG;AAED,wBAAsB,SAAS,CAC7B,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAE,GACrC,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE7F;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAEtH;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5F;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF;AAED,wBAAsB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErG;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAEpG;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1G;AAUD,QAAA,MAAM,qBAAqB;;;;kBAIa,CAAC;AAEzC,+EAA+E;AAC/E,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/E,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,SAAS,CAAA;CAAE,GAC/C;IAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,qBAAqB,CAAA;CAAE,CAAC;AA0CxD,wBAAsB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE3G;AA2BD,wBAAsB,UAAU,CAC9B,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EAAE,EACnB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAG3C;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,OAAO,EACb,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,EAAE,CAAC,CAEpB;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,OAAO,EACb,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,KAAK,EAAE,UAAU,GAAG,IAAI,EACxB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,OAAO,EACb,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,CAAC,CAG3B;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,WAAW,CAAC,CAGtB;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAO5B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAO5B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,OAAO,EACjB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAgC7B;AAkBD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,EAAE,EAC1C,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,EAAE,EAC1C,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3G;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAEjH;AAED,wBAAsB,UAAU,CAC9B,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,UAAU,CAAC,CAKrB;AAED,wBAAsB,WAAW,CAC/B,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,MAAM,EAAE,EAC1C,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9F;AAEC;;;;GAIG;AACL,wBAAsB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrG;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzF;AAEC;;;;;;;;;;GAUG;AACL,wBAAsB,cAAc,CAClC,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,OAAO,EAChB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAiB7C;AAgBC;;;;;;;;;;;;;;GAcG;AACL,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EACpD,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAClC,aAAa,CAAC,EAAE,MAAM,EACtB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,sBAAsB,CAAC,CA0BnC;AAEC;;;;;;;;GAQG;AACL,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAKxH;AAeD,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAE3E,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBxF;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAcxF;AAcC;;;;;;;GAOG;AACL,wBAAsB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkE1G;AAEC;;;;;;;;;;;GAWG;AACL,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAkB5E;AAEC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACL,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAoClH;AAEC;;;;;GAKG;AACL,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA0ClG;AAEC;;;;;EAKC;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAE9E;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CASjH;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAc9F;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEnF;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAQxG;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAiB9H;AASD,wBAAsB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAGxF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAA;CAAE,CAAC,CAM9G;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOnF;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAapF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAGlH;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAGtE;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGlG;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAG/E;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAG/D;AAKC,kEAAkE;AACpE,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAS3E;AAEC,0DAA0D;AAC5D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ5E;AAEC,uDAAuD;AACzD,wBAAgB,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQrJ;AAEC,iCAAiC;AACnC,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAI9D;AAEC,qEAAqE;AACvE,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,CAQxF;AAEC,oCAAoC;AACtC,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAIjF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,OAAO,EACb,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EAAE,EACf,QAAQ,GAAE;IACR,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACnB,GACL,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,CAqCjC;AAmCD;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,mEAAmE;IACnE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,MAAM,IAAI,IAAI,CAAC;CAChB;AA8GD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,CAE7E;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAA;CAAE,CAAC,CAkE1B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAA;CAAE,CAAC,CAIpG;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAGzG;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,kBAAkB,CAAC,CAoB7B;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,QAAQ,CAAC,CAKnB;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC,CAQjC;AAoBD,OAAO,EAA4D,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,wCAAwC,CAAC;AAElJ,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,CAAC;AAE5D,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAWlG"}
1
+ {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../src/session/rpc.ts"],"names":[],"mappings":"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"}