@cotal-ai/core 0.8.3 → 0.9.1

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.
package/dist/provision.js CHANGED
@@ -17,7 +17,7 @@
17
17
  import { join } from "node:path";
18
18
  import { encodeOperator, encodeAccount, encodeUser, fmtCreds, } from "@nats-io/jwt";
19
19
  import { createOperator, createAccount, fromPublic, fromSeed } from "@nats-io/nkeys";
20
- import { token, spacePrefix, chatSubject, assertValidChannel, channelInAllow, unicastSubject, anycastSubject, controlServiceSubject, CONTROL_PRIVILEGED, CONTROL_SELF_SERVICE, CONTROL_DELIVERY, chatStream, dmStream, taskStream, dlvStream, inboxStream, chatHistDurable, dmDurable, taskDurable, dlvDurable, presenceBucket, channelBucket, membersBucket, aclBucket, membershipBucket, deliveryBucket, connzRequestSubject, accountConnectSubject, accountDisconnectSubject, MEMBERSHIP_INBOX_PREFIX, FANOUT_DURABLE, INBOX_READER_DURABLE, } from "./subjects.js";
20
+ import { token, spacePrefix, chatSubject, assertValidChannel, channelInAllow, unicastSubject, anycastSubject, controlServiceSubject, CONTROL_PRIVILEGED, CONTROL_SELF_SERVICE, CONTROL_ADMIN, CONTROL_DELIVERY, chatStream, dmStream, taskStream, dlvStream, inboxStream, chatHistDurable, dmDurable, taskDurable, dlvDurable, presenceBucket, channelBucket, membersBucket, aclBucket, aclKey, membershipBucket, deliveryBucket, managerBucket, MANAGER_LEASE_KEY, connzRequestSubject, accountConnectSubject, accountDisconnectSubject, MEMBERSHIP_INBOX_PREFIX, FANOUT_DURABLE, INBOX_READER_DURABLE, } from "./subjects.js";
21
21
  // Unlimited account limits — without explicit limits a JWT account defaults to 0 conns
22
22
  // (every connect denied). JetStream needs storage on the data account but MUST stay off
23
23
  // the system account (the server refuses to start otherwise).
@@ -112,8 +112,8 @@ export async function provisionAgent(provisioner, auth, identity, opts = {}) {
112
112
  * (`fromPublic`) — the agent seed is never part of the signature, it's only folded into
113
113
  * the resulting creds file. The "agent" profile is scoped to publish only as itself and only to
114
114
  * its declared `allowPublish` channels (post ACL, default-deny), and to read only within
115
- * `allowSubscribe` (live tail bind-only + per-channel history grants); "manager" and "observer"
116
- * stay permissive here and are scoped in steps 6–7. */
115
+ * `allowSubscribe` (live tail bind-only + per-channel history grants). Every profile is now
116
+ * enumerated least-privilege there is no allow-all cred (the former `manager` is deleted). */
117
117
  export async function mintCreds(auth, identity, profile, opts = {}) {
118
118
  const signer = fromSeed(new TextEncoder().encode(auth.account.signingSeed));
119
119
  const perms = permissionsFor(profile, auth.space, identity.id, opts);
@@ -122,16 +122,44 @@ export async function mintCreds(auth, identity, profile, opts = {}) {
122
122
  return new TextDecoder().decode(creds);
123
123
  }
124
124
  /** Build the NATS user permission object for a profile: a default-deny allow-list scoped to
125
- * exactly what each profile does. "manager" stays permissive (the privileged provisioner
126
- * host). Subject/stream/durable names come from the shared builders so the ACLs can't drift
127
- * from the wire layout. */
125
+ * exactly what each profile does. Every profile is now enumerated least-privilege — the former
126
+ * allow-all `manager` is gone (its roles split across supervisor/provisioner/operator/purger and the
127
+ * PR 1.5 CLI-surface profiles). Subject/stream/durable names come from the shared builders so the ACLs
128
+ * can't drift from the wire layout. */
128
129
  function permissionsFor(profile, space, id, opts) {
129
130
  if (profile === "delivery")
130
131
  return deliveryPermissions(space, id); // scoped server-side Plane-3 infra
131
132
  if (profile === "membership-rw")
132
133
  return membershipRwPermissions(space, id); // scoped graph-feed reader/writer
133
- if (profile === "manager")
134
- return {}; // privileged: allow-all defaults
134
+ if (profile === "supervisor")
135
+ return supervisorPermissions(space, id); // always-on daemon (closure (ii) gate)
136
+ if (profile === "provisioner")
137
+ return provisionerPermissions(space, id); // ephemeral onboarding authority (closure (ii))
138
+ if (profile === "deprovisioner") {
139
+ // Ephemeral, TARGET-PINNED teardown (#159 B) — the counterpart to `provisioner`. It deletes exactly
140
+ // ONE departed agent's id-keyed footprint, so the target id is REQUIRED and baked into the grants.
141
+ if (!opts.deprovisionTarget)
142
+ throw new Error("permissionsFor: deprovisioner requires opts.deprovisionTarget (the departed agent's id)");
143
+ return deprovisionerPermissions(space, id, opts.deprovisionTarget);
144
+ }
145
+ if (profile === "purger")
146
+ return purgerPermissions(space, id); // ephemeral history-purge (closure (ii))
147
+ if (profile === "operator")
148
+ return operatorPermissions(space, id); // human-CLI client (send/dm/ask) (closure (ii))
149
+ if (profile === "probe")
150
+ return probePermissions(id); // connect-only liveness/auth preflight (PR 1.5)
151
+ if (profile === "channel-writer")
152
+ return channelWriterPermissions(space, id); // channel-registry writes (PR 1.5)
153
+ if (profile === "channel-purger")
154
+ return channelPurgerPermissions(space, id); // channel-writer + CHAT purge (PR 1.5)
155
+ if (profile === "teardown")
156
+ return teardownPermissions(space, id); // sole STREAM.DELETE holder (PR 1.5)
157
+ if (profile === "control-caller-privileged")
158
+ return controlCallerPermissions(space, id, CONTROL_PRIVILEGED); // ps/start (PR 1.5)
159
+ if (profile === "control-caller-admin")
160
+ return controlCallerPermissions(space, id, CONTROL_ADMIN); // stop/attach (PR 1.5)
161
+ if (profile === "deployer")
162
+ return deployerPermissions(space, id); // spawn -f deploy authority (PR 1.5)
135
163
  const CHAT = chatStream(space), DM = dmStream(space), TASK = taskStream(space);
136
164
  const KV = `KV_${presenceBucket(space)}`;
137
165
  const CHKV = `KV_${channelBucket(space)}`; // channel registry (read-only for everyone)
@@ -190,6 +218,11 @@ function permissionsFor(profile, space, id, opts) {
190
218
  return { sub: { allow: sub }, pub: { allow } };
191
219
  }
192
220
  // ---- agent ----
221
+ // No silent fallthrough: every non-agent profile is handled above, so anything else reaching here is a
222
+ // stale/unwired profile string (e.g. a JS caller bypassing the closed `Profile` union). Fail loud rather
223
+ // than mint it agent perms by accident (the no-fallbacks rule; matches the deleted `manager`'s intent).
224
+ if (profile !== "agent")
225
+ throw new Error(`permissionsFor: unhandled profile "${profile}" — add an explicit arm, do not fall through to agent`);
193
226
  const allowPublish = opts.allowPublish ?? []; // post ACL — DEFAULT-DENY (publish must be declared)
194
227
  const allowSubscribe = opts.allowSubscribe?.length ? opts.allowSubscribe : ["general"]; // read ACL
195
228
  // Re-assert at the mint chokepoint (covers mint/spawn paths that bypass the file loader): a policy
@@ -306,7 +339,418 @@ function permissionsFor(profile, space, id, opts) {
306
339
  // Replies to this agent's durable join/leave/list requests ride `ctl.delivery.<id>.>` (NOT the
307
340
  // per-id _INBOX), so the scoped delivery daemon can answer without broad inbox-publish.
308
341
  const deliveryReplies = `${controlServiceSubject(space, CONTROL_DELIVERY, id)}.>`;
309
- return { pub: { allow: pubAllow, deny: pubDeny }, sub: { allow: [inbox, deliveryReplies, ...subChat] } };
342
+ // Bounded control replies (closure (i)): the manager's lifecycle tiers now reply on
343
+ // `ctl.<tier>.<id>.reply.>` (not the per-id `_INBOX`), so each agent must subscribe the reply subtree
344
+ // for the tiers it may call. Every agent can self-stop ⇒ always grant the self tier; the privileged
345
+ // tier's reply is granted only with the spawn capability (which also grants the request publish above).
346
+ // Admin is manager-only — agents never call it, so no admin reply sub.
347
+ const controlReplies = [`${controlServiceSubject(space, CONTROL_SELF_SERVICE, id)}.reply.>`];
348
+ if (opts.capabilities?.includes("spawn"))
349
+ controlReplies.push(`${controlServiceSubject(space, CONTROL_PRIVILEGED, id)}.reply.>`);
350
+ return { pub: { allow: pubAllow, deny: pubDeny }, sub: { allow: [inbox, deliveryReplies, ...controlReplies, ...subChat] } };
351
+ }
352
+ /** The long-lived SUPERVISOR permission set (closure (ii), residual 2) — the always-on manager daemon
353
+ * (`manager.ts` `this.ep`), carved down from the former allow-all `manager`. THIS is the cred whose
354
+ * STANDING breadth was the residual-2 gate: tightening it removes the always-on DM/DLV body-read AND the
355
+ * stream-admin tamper from the one connection that never goes away. It does exactly three things — serve
356
+ * the three lifecycle control tiers (bounded replies), hold the singleton manager lease, and publish +
357
+ * watch presence (the roster) — and nothing else. Provisioning (DM/DLV/TASK consumer-create + ACL
358
+ * writes) moves to the EPHEMERAL `provisioner` (opened per-spawn); destructive history-purge moves to the
359
+ * EPHEMERAL `purger`. So the supervisor holds NO chat/inst/svc publish (it never posts — only
360
+ * `setActivity`, a presence write), NO DM/DLV read of any kind (no consumer-create, no native sub), NO
361
+ * stream CREATE/DELETE/PURGE/UPDATE, NO channel-registry access (the daemon sets `watchChannels:false`).
362
+ * `$JS` is an ENUMERATED allow-list — exactly the presence-watch + lease-KV verbs — never `$JS.>`. A
363
+ * leaked supervisor cred can hold/serve control and read the public roster; it cannot read a DM, forge an
364
+ * actor, provision, purge, or tamper with a stream. */
365
+ function supervisorPermissions(space, id) {
366
+ const PKV = `KV_${presenceBucket(space)}`, MKV = `KV_${managerBucket(space)}`;
367
+ // The three SERVED lifecycle tiers (manager.ts serveControl): subscribe `ctl.<tier>.*` (queue-grouped)
368
+ // and reply on the bounded `ctl.<tier>.<caller>.reply.<uuid>` subtree. Plain NATS request/reply — no
369
+ // `$JS.ACK` for control replies (panel blocker #6).
370
+ const tiers = [CONTROL_PRIVILEGED, CONTROL_SELF_SERVICE, CONTROL_ADMIN];
371
+ const ctlServe = tiers.map((t) => controlServiceSubject(space, t, "*")); // ctl.<tier>.*
372
+ const ctlReplies = tiers.map((t) => `${controlServiceSubject(space, t, "*")}.reply.>`);
373
+ return {
374
+ pub: {
375
+ allow: [
376
+ "$JS.API.INFO",
377
+ // Singleton manager lease (managerBucket, pre-created at `cotal up`): OPEN-ONLY bind + CAS the one
378
+ // lease key (acquire/renew/release) + read it. NO STREAM.CREATE (pre-created), DELETE, or PURGE.
379
+ `$JS.API.STREAM.INFO.${MKV}`,
380
+ `$JS.API.STREAM.MSG.GET.${MKV}`, // readManagerLease + CAS-conflict kv.get (auth-mode kvm.open ⇒ MSG.GET)
381
+ `$KV.${managerBucket(space)}.${MANAGER_LEASE_KEY}`, // the SINGLE lease key (create/update/delete = $KV publishes)
382
+ // Presence: publish OWN key + watch the roster. Own key only (no peer-key forge — residual 3); no
383
+ // presence-stream purge/delete (no force-offline tamper). No presence kv.get (roster is the in-memory
384
+ // watch cache + sweep), so no STREAM.MSG.GET on presence.
385
+ `$KV.${presenceBucket(space)}.${id}`,
386
+ `$JS.API.STREAM.INFO.${PKV}`,
387
+ `$JS.API.CONSUMER.CREATE.${PKV}.>`, // kv.watch ordered consumer (roster)
388
+ `$JS.API.CONSUMER.INFO.${PKV}.>`,
389
+ "$JS.FC.>", // ordered-consumer flow control
390
+ // Control: reply to any caller on each SERVED tier (bounded). It SERVES (does not call), so no
391
+ // request-publish grant and no position-1 wildcard.
392
+ ...ctlReplies,
393
+ ],
394
+ },
395
+ sub: {
396
+ // Own reply inbox + the three served control tiers (queue-grouped). NO chat/inst/dlv native sub (the
397
+ // supervisor reads no feed), NO broad `$JS.>`/`$KV.>` (the residual-2 read/admin path is gone).
398
+ allow: [`_INBOX_${id}.>`, ...ctlServe],
399
+ },
400
+ };
401
+ }
402
+ /** The human-CLI OPERATOR permission set (closure (ii), residual 2) — the ephemeral key the headless
403
+ * client commands mint (`cotal send dm|msg|ask`, `cotal dm`, `personas list --running`, via
404
+ * `openTransient`). It does exactly what those do: POST as itself (chat/DM/anycast — self-scoped, can
405
+ * never forge another actor), and READ the public roster (presence) + the channel registry to resolve a
406
+ * name→id and a channel's delivery class. Much narrower than the old broad `manager`: NO serve-control,
407
+ * NO DM/DLV body read, NO chat-history read, NO stream CREATE/DELETE/PURGE, NO ACL write, NO lease, NO
408
+ * provisioning. A leaked operator cred can post as itself and read the roster — the same surface as the
409
+ * human who ran the command. (The interactive `cotal join` console — chat read + own-DM receive — is a
410
+ * separate, fuller surface, deferred: it needs the unprovisioned-console DM self-create fixed first.) */
411
+ function operatorPermissions(space, id) {
412
+ const PKV = `KV_${presenceBucket(space)}`, CHKV = `KV_${channelBucket(space)}`;
413
+ return {
414
+ pub: {
415
+ allow: [
416
+ // Post AS itself only — self-scoped, so a leaked operator cred can never forge a message
417
+ // attributable to another actor.
418
+ chatSubject(space, id, ">"), // chat.<id>.> — multicast any channel as me
419
+ unicastSubject(space, "*", id), // inst.*.<id> — DM any peer as me
420
+ anycastSubject(space, "*", id), // svc.*.<id> — anycast any role as me
421
+ `$KV.${presenceBucket(space)}.${id}`, // own presence key (when a caller registers; own key only)
422
+ "$JS.API.INFO",
423
+ // Presence watch (name→id resolution + the live roster) — read-only ordered consumer. No
424
+ // STREAM.MSG.GET (the roster is the in-memory watch cache).
425
+ `$JS.API.STREAM.INFO.${PKV}`,
426
+ `$JS.API.CONSUMER.CREATE.${PKV}.>`,
427
+ `$JS.API.CONSUMER.INFO.${PKV}.>`,
428
+ // Channel registry read — the transient endpoint opens+watches it, and multicast reads a
429
+ // channel's delivery class. Read-only (no `$KV.<channel>` write — that's the provisioner).
430
+ `$JS.API.STREAM.INFO.${CHKV}`,
431
+ `$JS.API.STREAM.MSG.GET.${CHKV}`,
432
+ // Keyed KV get rides `DIRECT.GET.<stream>.$KV.<bucket>.<key>` — the key is in the SUBJECT, so
433
+ // the grant needs the trailing `.>` (unlike STREAM.MSG.GET, which carries it in the payload).
434
+ `$JS.API.DIRECT.GET.${CHKV}.>`,
435
+ `$JS.API.CONSUMER.CREATE.${CHKV}.>`,
436
+ `$JS.API.CONSUMER.INFO.${CHKV}.>`,
437
+ "$JS.FC.>", // ordered-consumer flow control
438
+ ],
439
+ },
440
+ // Own reply inbox only (presence/channel watch ordered-consumer delivery + any request replies land
441
+ // here). NO chat/inst/dlv native sub — the operator posts and reads the roster, it receives no feed.
442
+ sub: { allow: [`_INBOX_${id}.>`] },
443
+ };
444
+ }
445
+ /** Connect-only PROBE (PR 1.5) — the liveness/auth preflight (`preflight.ts preflightTarget`, minted on
446
+ * ~every CLI command that resolves a mesh). `probeConnect` opens a connection to prove the broker is up
447
+ * and the creds are accepted, then closes it — it performs NO pub/sub. So the tightest possible grant:
448
+ * deny ALL publish, subscribe only to the own reply inbox. A leaked probe cred can open a socket and do
449
+ * nothing else. (Was the broad `manager` cred — minted on nearly every command, the worst over-grant.) */
450
+ function probePermissions(id) {
451
+ return { pub: { deny: [">"] }, sub: { allow: [`_INBOX_${id}.>`] } };
452
+ }
453
+ /** CHANNEL-WRITER (PR 1.5) — edits the channel registry ONLY: `cotal channels set/default` and the
454
+ * `spawn -f` new-channel seed (`seedChannelRegistry`). It VALUE-writes `$KV.<channelBucket>` (a channel's
455
+ * config key) and read-before-writes it. NO stream data, NO other bucket, NO chat/DM — a leaked
456
+ * channel-writer can only rewrite channel config, never post, read a body, or tear a stream down. */
457
+ function channelWriterPermissions(space, id) {
458
+ const CHKV = `KV_${channelBucket(space)}`;
459
+ return {
460
+ pub: {
461
+ allow: [
462
+ "$JS.API.INFO",
463
+ `$KV.${channelBucket(space)}.>`, // create/update/delete a channel config key
464
+ `$JS.API.STREAM.INFO.${CHKV}`, // kvm.open/create existence check
465
+ `$JS.API.STREAM.CREATE.${CHKV}`, // kvm.create is create-if-matching (bucket already exists post-up)
466
+ // read-before-write: kvm.open rides STREAM.MSG.GET; kvm.create (direct=true) rides keyed DIRECT.GET.
467
+ `$JS.API.STREAM.MSG.GET.${CHKV}`,
468
+ `$JS.API.DIRECT.GET.${CHKV}.>`,
469
+ ],
470
+ },
471
+ sub: { allow: [`_INBOX_${id}.>`] },
472
+ };
473
+ }
474
+ /** CHANNEL-PURGER (PR 1.5) — the `cotal web` dashboard's ONLY write path: delete a channel
475
+ * (`clearChannel` = filtered `STREAM.PURGE.CHAT` to drop the channel's messages + a `$KV.<channelBucket>`
476
+ * key delete). Pre-minted once by `web` so the account signing seed falls out of scope; the dashboard's
477
+ * READ side runs on the separate read-only `admin` cred. = channel-writer + the scoped CHAT purge. */
478
+ function channelPurgerPermissions(space, id) {
479
+ const CHKV = `KV_${channelBucket(space)}`;
480
+ // `clearChannel` only kvm.OPENs the (already-created) bucket, key-deletes, and purges — it never
481
+ // kvm.creates, so — unlike channel-writer's set/default back-compat path — this cred gets NO
482
+ // `STREAM.CREATE`. Compose the shared channel-KV read + delete verbs + the scoped CHAT purge explicitly.
483
+ return {
484
+ pub: {
485
+ allow: [
486
+ "$JS.API.INFO",
487
+ `$KV.${channelBucket(space)}.>`, // delete the channel's registry key
488
+ `$JS.API.STREAM.INFO.${CHKV}`, // kvm.open existence check
489
+ `$JS.API.STREAM.MSG.GET.${CHKV}`, // read-before-delete
490
+ `$JS.API.DIRECT.GET.${CHKV}.>`,
491
+ `$JS.API.STREAM.PURGE.${chatStream(space)}`, // drop the channel's chat messages
492
+ ],
493
+ },
494
+ sub: { allow: [`_INBOX_${id}.>`] },
495
+ };
496
+ }
497
+ /** TEARDOWN (PR 1.5) — `cotal down -f` space teardown. The SOLE cred that keeps `STREAM.DELETE` (the
498
+ * face-b tamper verb). `down -f` is multi-step: `connectProbe` (presence-watch + channel-registry read)
499
+ * → `requestControl(CONTROL_ADMIN, ps/stop)` to politely stop the managed agents → `deleteChannels`
500
+ * (channel-registry key delete + CHAT purge) → `deleteSpace` (STREAM.DELETE all 12 space streams/buckets).
501
+ * So it reads state, CALLS admin control, deletes channels, and deletes streams — but NEVER reads a
502
+ * DM/DLV body, posts chat, or forges. Isolated here so no standing operator/provisioner/supervisor cred
503
+ * can delete a stream; a leaked teardown can wipe a space you own + stop its agents (that IS its job),
504
+ * nothing else. Minted ephemerally per teardown from the local trust material (same-checkout `down -f`). */
505
+ function teardownPermissions(space, id) {
506
+ const CHAT = chatStream(space);
507
+ const PKV = `KV_${presenceBucket(space)}`, CHKV = `KV_${channelBucket(space)}`;
508
+ // deleteSpace() deletes EVERY stream + KV bucket setup creates (5 streams + 7 buckets); each needs
509
+ // INFO (jsm existence) + DELETE. This is the ONLY cred that holds STREAM.DELETE (face-b isolated here).
510
+ const del = [
511
+ CHAT, dmStream(space), taskStream(space), inboxStream(space), dlvStream(space),
512
+ PKV, CHKV, `KV_${membersBucket(space)}`, `KV_${aclBucket(space)}`,
513
+ `KV_${membershipBucket(space)}`, `KV_${deliveryBucket(space)}`, `KV_${managerBucket(space)}`,
514
+ ].flatMap((s) => [`$JS.API.STREAM.INFO.${s}`, `$JS.API.STREAM.DELETE.${s}`]);
515
+ return {
516
+ pub: {
517
+ allow: [
518
+ "$JS.API.INFO",
519
+ // connectProbe read: presence watch (name→id + roster) + channel registry read.
520
+ `$JS.API.CONSUMER.CREATE.${PKV}.>`,
521
+ `$JS.API.CONSUMER.INFO.${PKV}.>`,
522
+ `$JS.API.STREAM.MSG.GET.${CHKV}`,
523
+ `$JS.API.DIRECT.GET.${CHKV}.>`,
524
+ `$JS.API.CONSUMER.CREATE.${CHKV}.>`,
525
+ `$JS.API.CONSUMER.INFO.${CHKV}.>`,
526
+ "$JS.FC.>", // ordered-consumer flow control
527
+ // Stop the managed agents via the admin control tier (ps + per-agent stop).
528
+ controlServiceSubject(space, CONTROL_ADMIN, id),
529
+ ...del,
530
+ // deleteChannels/clearChannel: purge the channel's chat messages + delete its registry key.
531
+ `$JS.API.STREAM.PURGE.${CHAT}`,
532
+ `$KV.${channelBucket(space)}.>`,
533
+ ],
534
+ },
535
+ // Own inbox (connectProbe presence-watch delivery + JS API responses) + the BOUNDED admin control-reply
536
+ // subtree: the agent-stop step is `requestControl(CONTROL_ADMIN, ps/stop)`, whose reply rides
537
+ // `ctl.admin.<id>.reply.<uuid>` (NOT `_INBOX`) — without this grant those calls hang and the agents are
538
+ // never stopped before the streams are deleted.
539
+ sub: { allow: [`_INBOX_${id}.>`, `${controlServiceSubject(space, CONTROL_ADMIN, id)}.reply.>`] },
540
+ };
541
+ }
542
+ /** CONTROL-CALLER (PR 1.5) — the operator's lifecycle commands (`cotal ps/start/stop/attach`,
543
+ * `manager/commands.ts`). It CALLS ONE of the running manager's control tiers and reads the bounded
544
+ * reply on its own inbox. That is ALL — no `$JS`, no `$KV`, no chat/DM: it forges nothing, reads no body.
545
+ *
546
+ * The tiers are SPLIT because the manager's control authz is SUBJECT-gated, NOT caller-identity-gated
547
+ * (`manager.ts authorizeNamed`: `if (admin) return undefined` — ANY caller reaching `ctl.<admin>` may
548
+ * stop/attach ANY agent; the privileged tier restricts named ops to the caller's OWN spawned child).
549
+ * So the BROKER grant is load-bearing: holding `ctl.<admin>.<id>` pub *is* cross-agent stop/attach
550
+ * power — the manager does not re-narrow it by `req.from.id`. Therefore:
551
+ * • `control-caller-privileged` (ps/start) gets ONLY `ctl.<privileged>.<id>` — structurally barred from
552
+ * cross-agent admin ops by the broker. This is the high-frequency path; it never needs admin reach.
553
+ * • `control-caller-admin` (stop/attach) gets ONLY `ctl.<admin>.<id>` — it genuinely needs cross-agent
554
+ * reach. Its containment is NOT a manager re-check (there is none): it is the broker gating the admin
555
+ * subject + the cred being ephemeral (mint → one request → disconnect, from the local signing seed). */
556
+ function controlCallerPermissions(space, id, tier) {
557
+ const reqSubject = controlServiceSubject(space, tier, id);
558
+ return {
559
+ pub: { allow: [reqSubject] }, // exactly ONE tier — ps/start XOR stop/attach
560
+ // Own inbox + the BOUNDED control-reply subtree. `requestControl` issues a `noMux` request whose reply
561
+ // rides `ctl.<tier>.<id>.reply.<uuid>` (UNDER its own request subject, NOT `_INBOX`), so it must be able
562
+ // to subscribe that subtree — without this grant the reply sub is broker-denied and every control call
563
+ // hangs to timeout (endpoint.ts:803-806 predicts exactly this).
564
+ sub: { allow: [`_INBOX_${id}.>`, `${reqSubject}.reply.>`] },
565
+ };
566
+ }
567
+ /** DEPLOYER (PR 1.5) — the `cotal spawn -f` manifest-deploy authority. `spawn -f` drives ONE
568
+ * `connectProbe` endpoint that both READS live state (roster/presence watch, channel registry,
569
+ * membership feed, manager-singleton lease) AND control-CALLS the running manager's admin tier
570
+ * (`launch` + `ps` readiness — both `CONTROL_ADMIN`). Those interleave on one connection, so a strict
571
+ * 3-connection split would only refactor `live.ts` for marginal gain; `deployer` is that one coherent,
572
+ * ephemeral deploy cred. It is the SOLE profile that combines reads + admin-control — NOT a template a
573
+ * 4th command should reach for (revisit the connection split before adding a second such caller).
574
+ *
575
+ * Boundaries (all enforced by omission / default-deny): NO self-post (`chat`/`inst`/`svc`), NO `$JS.>`,
576
+ * NO `STREAM.DELETE`/`PURGE`/`UPDATE`, NO DM/DLV/TASK `CONSUMER.CREATE` (no body-read surface), NO `$KV`
577
+ * writes (channel seeding rides a SEPARATE `channel-writer` cred), admin tier ONLY (no privileged, no
578
+ * serve). It holds `ctl.<admin>.<id>` because manifest launch/ps genuinely need the admin tier — and
579
+ * that IS real cross-agent power: the manager's admin authz is subject-gated, not caller-identity-gated
580
+ * (`authorizeNamed`: `if (admin) return undefined`), so holding the admin pub grant lets it stop/attach/
581
+ * launch ANY agent, with no manager-side `req.from.id` re-check. The BROKER gating that subject is the
582
+ * boundary. Containment is therefore the LIFETIME, not a manager re-check: minted from LOCAL same-checkout
583
+ * auth for one `spawn -f`, memory-only, dropped after deploy. If it is ever persisted, handed to
584
+ * user-supplied `--creds`, or reused as a general "read + admin" cred, revisit. */
585
+ function deployerPermissions(space, id) {
586
+ const PKV = `KV_${presenceBucket(space)}`, CHKV = `KV_${channelBucket(space)}`;
587
+ const MSHIP = `KV_${membershipBucket(space)}`, MGRKV = `KV_${managerBucket(space)}`;
588
+ // Read verbs for a KV bucket SCANNED/WATCHED via an ordered consumer (presence, channel registry, and
589
+ // the membership feed — `readMembership` enumerates keys via `kv.keys()`): existence + kv.get (both
590
+ // STREAM.MSG.GET and keyed DIRECT.GET forms) + the ordered consumer. NO `$KV.<bucket>` publish → no write.
591
+ const kvScan = (bucket) => [
592
+ `$JS.API.STREAM.INFO.${bucket}`,
593
+ `$JS.API.STREAM.MSG.GET.${bucket}`,
594
+ `$JS.API.DIRECT.GET.${bucket}.>`,
595
+ `$JS.API.CONSUMER.CREATE.${bucket}.>`,
596
+ `$JS.API.CONSUMER.INFO.${bucket}.>`,
597
+ ];
598
+ // A KV bucket read by a KEYED point-get only (`readManagerLease` = kvm.open + `kv.get(LEASE_KEY)`, no
599
+ // scan/watch): existence + kv.get, but NO ordered-consumer verbs (nothing enumerates or watches it).
600
+ const kvPointRead = (bucket) => [
601
+ `$JS.API.STREAM.INFO.${bucket}`,
602
+ `$JS.API.STREAM.MSG.GET.${bucket}`,
603
+ `$JS.API.DIRECT.GET.${bucket}.>`,
604
+ ];
605
+ return {
606
+ pub: {
607
+ allow: [
608
+ "$JS.API.INFO",
609
+ ...kvScan(PKV), // presence watch — roster + name→id
610
+ ...kvScan(CHKV), // channel registry read (readChannelRegistry + classifyChannels)
611
+ ...kvScan(MSHIP), // membership FEED read (readMembership → detectUnmanagedActors) — the membership_ bucket
612
+ ...kvPointRead(MGRKV), // manager-singleton lease keyed read (waitManagerReady) — point-get, NO write, NO watch
613
+ "$JS.FC.>", // ordered-consumer flow control
614
+ // Admin control tier ONLY — launch + ps readiness (both CONTROL_ADMIN). No privileged subject.
615
+ controlServiceSubject(space, CONTROL_ADMIN, id),
616
+ ],
617
+ },
618
+ // Own inbox (presence/registry watch delivery + JS API responses) + the BOUNDED admin control-reply
619
+ // subtree: `requestControl(CONTROL_ADMIN, launch/ps)` subscribes `ctl.admin.<id>.reply.<uuid>`, so
620
+ // without this grant the launch + ps-readiness calls hang to timeout.
621
+ sub: { allow: [`_INBOX_${id}.>`, `${controlServiceSubject(space, CONTROL_ADMIN, id)}.reply.>`] },
622
+ };
623
+ }
624
+ /** The ephemeral PURGER permission set (closure (ii), residual 2) — minted per-purge inside the daemon's
625
+ * `opPurge` and `cotal history clear`. Isolates the DESTRUCTIVE history-purge grant
626
+ * (`STREAM.PURGE.CHAT` + `STREAM.PURGE.DM`) off the always-on supervisor: `--dms` purges the DM stream,
627
+ * exactly the grant the supervisor must not hold. It PURGES but never READS — no DM/chat consumer, no
628
+ * `MSG.GET` — so a leaked purger can drop history but cannot read a body. Short-lived (one purge call). */
629
+ function purgerPermissions(space, id) {
630
+ const CHAT = chatStream(space), DM = dmStream(space);
631
+ return {
632
+ pub: {
633
+ allow: [
634
+ "$JS.API.INFO", // jetstreamManager bootstrap; STREAM.PURGE needs no prior STREAM.INFO
635
+ `$JS.API.STREAM.PURGE.${CHAT}`, // clearSpaceHistory chat purge
636
+ `$JS.API.STREAM.PURGE.${DM}`, // clearSpaceHistory includeDms — the isolated DM-purge grant
637
+ ],
638
+ // NOTE: this profile does NOT cover `clearChannel` (web/`down -f` channel-delete) — that also does a
639
+ // `$KV.<channelBucket>.<ch>` registry delete this cred lacks; it stays on the broad operator/CLI cred.
640
+ },
641
+ sub: { allow: [`_INBOX_${id}.>`] },
642
+ };
643
+ }
644
+ /** The ephemeral PROVISIONER permission set (closure (ii), residual 2) — the onboarding authority,
645
+ * carved off the long-lived manager. Minted short-lived for per-spawn provisioning (pre-create each
646
+ * agent's bind-only DM/DLV/TASK durables + record its read ACL via `commitAcl`) — the daemon opens it per
647
+ * spawn (`manager.ts withProvisioner`). It is ALSO the cred that creates the space's streams + KV buckets
648
+ * and seeds the channel registry via `setupSpaceStreams` (exercised by the manager-split smoke) — and
649
+ * `cotal up`'s ephemeral setup cred (`up.ts authSetup`) now mints THIS profile, not the broad `manager`.
650
+ * NEVER minted for an agent — `cotal mint` whitelists
651
+ * agent/observer/admin only, like `manager`/`delivery`.
652
+ *
653
+ * This profile HOLDS the DM/DLV `CONSUMER.CREATE` push-consumer surface — the irreducible onboarding
654
+ * power (the create-time `deliver_subject` of a push consumer is not ACL-constrained, so whoever can
655
+ * create a DM/DLV consumer can stream the bodies). That is exactly why it is split OFF the always-on
656
+ * supervisor and made EPHEMERAL: the daemon opens a provisioner connection per spawn and drains it
657
+ * immediately, so the surface exists only for the provisioning window, not as a standing target. The
658
+ * cred is MEMORY-ONLY (never written to `.cotal`); short-`exp`/revocation is the auth-callout follow-up.
659
+ *
660
+ * `$JS` is an ENUMERATED allow-list, never `$JS.>`: STREAM.CREATE + INFO for the space streams/buckets,
661
+ * DM/DLV/TASK consumer CREATE/DURABLE.CREATE/INFO — and deliberately NO `MSG.NEXT`/`MSG.GET`/`ACK` on
662
+ * DM/DLV (it creates the bind-only mailbox but never reads it), NO STREAM.DELETE/PURGE/UPDATE/MSG.DELETE
663
+ * (it provisions, it does not tear down or tamper). KV value-writes are scoped to exactly the two
664
+ * registries provisioning touches: the read-ACL bucket (`commitAcl`) and the channel registry (seed). */
665
+ function provisionerPermissions(space, id) {
666
+ const CHAT = chatStream(space), DM = dmStream(space), TASK = taskStream(space);
667
+ const INBOX = inboxStream(space), DLV = dlvStream(space);
668
+ // Every backing stream the provisioner pre-creates — the 5 message streams + the KV buckets (a bucket's
669
+ // backing stream is `KV_<bucket>`). `managerBucket` is now pre-created here too (so the supervisor binds
670
+ // its lease open-only); members/membership/delivery are written by other creds but created at setup here.
671
+ const buckets = [
672
+ presenceBucket, channelBucket, membersBucket, aclBucket, membershipBucket, deliveryBucket, managerBucket,
673
+ ].map((b) => `KV_${b(space)}`);
674
+ // STREAM.CREATE + INFO for each (idempotent setup at `cotal up`; CREATE is create-if-matching, INFO covers
675
+ // the client's existence checks). NO DELETE/PURGE/UPDATE — provisioning never tears a stream down.
676
+ const streamSetup = [CHAT, DM, TASK, INBOX, DLV, ...buckets].flatMap((s) => [
677
+ `$JS.API.STREAM.CREATE.${s}`,
678
+ `$JS.API.STREAM.INFO.${s}`,
679
+ ]);
680
+ // DM/DLV/TASK durable pre-create (bind-only mailboxes): both the new-API CREATE and legacy DURABLE.CREATE
681
+ // forms (the client's consumer-add path varies by version), plus INFO (the add returns ConsumerInfo).
682
+ // NO MSG.NEXT/MSG.GET/ACK — the provisioner creates the consumer but MUST NOT read its body.
683
+ const consumerCreate = [DM, DLV, TASK].flatMap((s) => [
684
+ `$JS.API.CONSUMER.CREATE.${s}.>`,
685
+ `$JS.API.CONSUMER.DURABLE.CREATE.${s}.>`,
686
+ `$JS.API.CONSUMER.INFO.${s}.>`,
687
+ ]);
688
+ return {
689
+ pub: {
690
+ allow: [
691
+ "$JS.API.INFO",
692
+ ...streamSetup,
693
+ ...consumerCreate,
694
+ // KV value-writes — exactly the two registries provisioning writes: the agent read-ACL registry
695
+ // (`commitAcl` at provision) and the channel registry (seed defaults at `cotal up`, channel admin).
696
+ // NO presence/members/membership/delivery writes (the agent's own key, the delivery cred, and the
697
+ // membership-rw cred own those).
698
+ `$KV.${aclBucket(space)}.>`,
699
+ `$KV.${channelBucket(space)}.>`,
700
+ // ...and READ both: commitAcl read-before-writes the ACL (`kvm.open`, direct=false ⇒ STREAM.MSG.GET);
701
+ // the channel seed read-before-writes defaults (`kvm.create`, direct=true ⇒ DIRECT.GET). Grant both
702
+ // read verbs on both buckets to cover the open/create-path variance — reads of registries it already
703
+ // writes, no escalation. Without these the read-before-write rejects and provisioning/seed throws.
704
+ `$JS.API.STREAM.MSG.GET.KV_${aclBucket(space)}`,
705
+ `$JS.API.DIRECT.GET.KV_${aclBucket(space)}.>`, // keyed get: `.>` (the key rides the subject)
706
+ `$JS.API.STREAM.MSG.GET.KV_${channelBucket(space)}`,
707
+ `$JS.API.DIRECT.GET.KV_${channelBucket(space)}.>`, // keyed get: `.>` (the key rides the subject)
708
+ ],
709
+ },
710
+ // Replies only: every stream/consumer/KV-create PubAck and JS API response lands on the per-id inbox.
711
+ // NO chat/inst/dlv/ctl subscription — the provisioner never serves control nor reads any feed.
712
+ sub: { allow: [`_INBOX_${id}.>`] },
713
+ };
714
+ }
715
+ /** The ephemeral, TARGET-PINNED DEPROVISIONER permission set (#159 Part B) — the teardown counterpart
716
+ * to {@link provisionerPermissions}, minted per departed agent inside the manager's `deprovision` tail
717
+ * (`withProvisioner`-style: a fresh scoped cred per teardown is cheap). It deletes exactly the id-keyed
718
+ * footprint the provisioner created for ONE agent: that agent's two bind-only durables (`dm_<id>`,
719
+ * `dlv_<id>`) and its read-ACL row — pinned BY NAME to the `target` id, so a leaked deprovisioner cred
720
+ * can tear down that one (already-dead) agent and NOTHING else.
721
+ *
722
+ * Deliberately NOT granted (least-privilege / correctness): the role-SHARED `svc_<role>` TASK durable
723
+ * (one consumer for ALL agents of a role — deleting it on one agent's exit would break its siblings; it
724
+ * lives until space teardown), any peer's `dm_`/`dlv_`/ACL (the grants are target-name-pinned, never
725
+ * `.>`), any MSG.NEXT/MSG.GET/ACK (it deletes mailboxes, never reads a body), and any STREAM
726
+ * DELETE/PURGE (it removes per-agent consumers, never a stream). The `chathist_<id>` history consumers
727
+ * need no grant here — they are ephemeral (`mem_storage`, 30s inactive threshold) and agent-deleted
728
+ * after each read, so they self-clean on the agent's disconnect.
729
+ *
730
+ * Blast radius of a leaked cred (minted for target T): it can delete T's `dm_<T>`/`dlv_<T>` durables +
731
+ * purge T's ACL row — a denial-of-DELIVERY for T (broken DM/DLV bind + the reader DEFERs on the absent
732
+ * ACL) if fired while T is still alive. It CANNOT read T's bodies, impersonate T, reach any peer, or
733
+ * delete a stream — and it is ephemeral (one per-exit teardown, minted then dropped). Contained and
734
+ * recoverable (re-provision T). */
735
+ function deprovisionerPermissions(space, id, target) {
736
+ const DM = dmStream(space), DLV = dlvStream(space);
737
+ return {
738
+ pub: {
739
+ allow: [
740
+ "$JS.API.INFO", // jetstreamManager bootstrap
741
+ // Delete the target's two bind-only durables BY EXACT NAME (id-keyed) — no `.>`, no cross-agent reach.
742
+ `$JS.API.CONSUMER.DELETE.${DM}.${dmDurable(target)}`,
743
+ `$JS.API.CONSUMER.DELETE.${DLV}.${dlvDurable(target)}`,
744
+ // Purge the target's read-ACL row (own-target key only — the reader then treats it as an unknown
745
+ // owner). `kvm.open` binds the pre-created bucket; the purge rides `$KV.<aclBucket>.<key>`.
746
+ `$JS.API.STREAM.INFO.KV_${aclBucket(space)}`,
747
+ `$KV.${aclBucket(space)}.${aclKey(target)}`,
748
+ ],
749
+ },
750
+ // Replies only: the CONSUMER.DELETE PubAcks + KV purge ack land on the per-id inbox. NO chat/DM/ctl
751
+ // subscription — the deprovisioner serves nothing and reads no feed.
752
+ sub: { allow: [`_INBOX_${id}.>`] },
753
+ };
310
754
  }
311
755
  /** The scoped `delivery` daemon permission set (server-side Plane-3 infra; NEVER allow-all, never
312
756
  * minted for an agent — `cotal mint` excludes it, like `manager`). Least-privilege: exactly what the
@@ -1 +1 @@
1
- {"version":3,"file":"provision.js","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provision.js","sourceRoot":"","sources":["../src/provision.ts"],"names":[],"mappings":"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"}
package/dist/runtime.d.ts CHANGED
@@ -9,8 +9,10 @@ export type RuntimeKind = string;
9
9
  export interface AttachSession {
10
10
  readonly cols: number;
11
11
  readonly rows: number;
12
- /** Scrollback so a late attach sees output that already scrolled past. */
13
- backlog(): Buffer;
12
+ /** A snapshot to bootstrap a late/concurrent attach: bytes that repaint the current screen.
13
+ * May be async — a backend can reconstruct a full-screen (alternate-screen) TUI's buffer rather
14
+ * than replay raw scrollback, so an attach paints correctly without the child having to repaint. */
15
+ backlog(): Buffer | Promise<Buffer>;
14
16
  /** Subscribe to live output; returns an unsubscribe fn. */
15
17
  onData(fn: (chunk: Buffer) => void): () => void;
16
18
  /** Fires when the underlying process exits; returns an unsubscribe fn. */
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;0FAC0F;AAC1F,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC;;2BAE2B;AAC3B,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,OAAO,IAAI,MAAM,CAAC;IAClB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAChD,0EAA0E;IAC1E,MAAM,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACnC,yCAAyC;IACzC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kCAAkC;IAClC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED;2DAC2D;AAC3D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B;iFAC6E;IAC7E,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,IAAI,SAAS,GAAG,QAAQ,CAAC;IAC/B;;uCAEmC;IACnC,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1C,SAAS,IAAI,IAAI,CAAC;IAClB;mCAC+B;IAC/B,MAAM,IAAI,aAAa,CAAC;CACzB;AAED;sEACsE;AACtE,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;CACjE;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,kFAAkF;IAClF,SAAS,IAAI,OAAO,CAAC;IACrB;kEAC8D;IAC9D,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;CAC5C"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;0FAC0F;AAC1F,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC;AAEjC;;2BAE2B;AAC3B,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;yGAEqG;IACrG,OAAO,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,2DAA2D;IAC3D,MAAM,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAChD,0EAA0E;IAC1E,MAAM,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IACnC,yCAAyC;IACzC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kCAAkC;IAClC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED;2DAC2D;AAC3D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B;iFAC6E;IAC7E,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,IAAI,SAAS,GAAG,QAAQ,CAAC;IAC/B;;uCAEmC;IACnC,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1C,SAAS,IAAI,IAAI,CAAC;IAClB;mCAC+B;IAC/B,MAAM,IAAI,aAAa,CAAC;CACzB;AAED;sEACsE;AACtE,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;CACjE;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,kFAAkF;IAClF,SAAS,IAAI,OAAO,CAAC;IACrB;kEAC8D;IAC9D,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;CAC5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"spaces.d.ts","sourceRoot":"","sources":["../src/spaces.ts"],"names":[],"mappings":"AAYA,qCAAqC;AACrC,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;2EAE2E;AAC3E,wBAAsB,UAAU,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAmDnF;AAED;;0FAE0F;AAC1F,wBAAsB,WAAW,CAAC,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB1G"}
1
+ {"version":3,"file":"spaces.d.ts","sourceRoot":"","sources":["../src/spaces.ts"],"names":[],"mappings":"AA4BA,qCAAqC;AACrC,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;2EAE2E;AAC3E,wBAAsB,UAAU,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAmDnF;AAED;;0FAE0F;AAC1F,wBAAsB,WAAW,CAAC,IAAI,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8B1G"}