@cotal-ai/cli 0.147.8 → 0.148.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.
@@ -1,11 +1,13 @@
1
1
  import { type ConversationGrant, type ConversationPending, type ParsedArgs } from "@cotal-ai/core";
2
2
  import { ConversationRefusal } from "../lib/app-user-identity.js";
3
3
  /**
4
- * `cotal app-identity`: machine-facing plumbing for a Claude app conversation. The Claude
5
- * connector's local server runs it to open one conversation's own identity on the selected mesh,
6
- * and again to retire it. It prints one JSON line on stdout and nothing else there. The credential is
7
- * never in that line: it goes to a 0600 file whose path the env names. A new identity opens only
8
- * after a person approves it at the mesh's authority, so a mesh without one opens none.
4
+ * `cotal app-identity`: machine-facing plumbing for a personal app conversation. The local server
5
+ * of the Claude or Codex plugin runs it to open one conversation's own identity on the selected
6
+ * mesh, and again to retire it. It prints one JSON line on stdout and nothing else there. The credential is
7
+ * never in that line: it goes to a 0600 file whose path the env names. Every identity belongs to the
8
+ * native conversation the host names. On a signed-in mesh a new one opens only after a person
9
+ * approves it at the mesh's authority. On an open or static mesh this computer runs, it opens with
10
+ * the grant a bare `cotal spawn` gets there, and a static mesh's own signing authority issues it.
9
11
  */
10
12
  export declare const appIdentityFlags: readonly [{
11
13
  readonly name: "name";
@@ -26,7 +28,7 @@ export declare const appIdentityFlags: readonly [{
26
28
  readonly name: "session";
27
29
  readonly type: "string";
28
30
  readonly value: "<id>";
29
- readonly description: "provision: the native conversation identity";
31
+ readonly description: "provision: the native conversation identity, required";
30
32
  }, {
31
33
  readonly name: "events";
32
34
  readonly type: "boolean";
@@ -39,7 +41,7 @@ export declare const appIdentityFlags: readonly [{
39
41
  }, {
40
42
  readonly name: "require-approval";
41
43
  readonly type: "boolean";
42
- readonly description: "provision: the caller accepts only an identity a person approved";
44
+ readonly description: "provision: on a signed-in mesh, the caller accepts only an identity a person approved";
43
45
  }];
44
46
  /** `pending` names the request a person has not decided yet and the page where they decide it. It
45
47
  * carries no credential, secret or path. Provisioning again replays that same request. `refused`
@@ -56,6 +58,9 @@ export type AppIdentityReply = {
56
58
  ok: false;
57
59
  pending: true;
58
60
  } & ConversationPending) | {
61
+ ok: false;
62
+ taken: true;
63
+ } | {
59
64
  ok: false;
60
65
  error: string;
61
66
  refused?: ConversationRefusal["decision"];
@@ -1 +1 @@
1
- {"version":3,"file":"app-identity.d.ts","sourceRoot":"","sources":["../../src/commands/app-identity.ts"],"names":[],"mappings":"AAGA,OAAO,EAML,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EAGxB,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAqE,MAAM,6BAA6B,CAAC;AAQrI;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUW,CAAC;AAUzC;;;gEAGgE;AAChE,MAAM,MAAM,gBAAgB,GACxB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,KAAK,CAAC,EAAE,iBAAiB,CAAA;CAAE,GAC9F,CAAC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,GAAG,mBAAmB,CAAC,GACpD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAA;CAAE,CAAC;AAW5E,wBAAsB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAWjE"}
1
+ {"version":3,"file":"app-identity.d.ts","sourceRoot":"","sources":["../../src/commands/app-identity.ts"],"names":[],"mappings":"AAIA,OAAO,EAkBL,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EAIxB,KAAK,UAAU,EAChB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,mBAAmB,EAAqE,MAAM,6BAA6B,CAAC;AAUrI;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWW,CAAC;AAczC;;;gEAGgE;AAChE,MAAM,MAAM,gBAAgB,GACxB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,KAAK,CAAC,EAAE,iBAAiB,CAAA;CAAE,GAC9F,CAAC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,GAAG,mBAAmB,CAAC,GACpD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GAC1B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAA;CAAE,CAAC;AAW5E,wBAAsB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAWjE"}
@@ -1,31 +1,39 @@
1
- import { existsSync, lstatSync, readdirSync, readFileSync, rmdirSync, rmSync } from "node:fs";
1
+ import { createHash } from "node:crypto";
2
+ import { existsSync, lstatSync, mkdtempSync, readdirSync, readFileSync, rmdirSync, rmSync, writeFileSync } from "node:fs";
2
3
  import { tmpdir } from "node:os";
3
4
  import { basename, dirname, join, resolve } from "node:path";
4
- import { checkConversationSelection, deprovisionAgent, isReachable, mintCreds, newIdentity, } from "@cotal-ai/core";
5
- import { resolveTargetOrThrow } from "@cotal-ai/workspace";
5
+ import { acquireLock, agentFilePath, checkConversationSelection, CotalEndpoint, DEV_OWNER, deprovisionAgent, eventChannel, isReachable, loadAgentFile, mintCreds, mintLifecycleUid, mkSecretDir, newIdentity, patternInAllow, provisionAgent, resolveReadAcl, } from "@cotal-ai/core";
6
+ import { activateTerminalSeat, defaultPersonaRef, homeCotalDir, issueTerminalSeat, resolveTargetOrThrow, retireTerminalSeat } from "@cotal-ai/workspace";
7
+ import { defaultPersonaFix } from "../lib/default-persona.js";
8
+ import { liveMeshNames } from "../lib/live-names.js";
6
9
  import { ConversationRefusal, isUserAppDir, provisionUserApp, retireDeadUserApps, retireUserApp } from "../lib/app-user-identity.js";
7
- /** Every credential directory an earlier static-mesh provision made was a fresh `mkdtemp` under the
8
- * OS temp dir with this prefix. Provision makes none now; retire still removes them. */
10
+ /** Every conversation identity on an open or static mesh has a fresh `mkdtemp` directory under the
11
+ * OS temp dir with this prefix, which retire removes. */
9
12
  const CRED_DIR_PREFIX = "cotal-app-identity-";
10
13
  /** The file in that directory that says what to retire. It carries no secret. */
11
14
  const RECORD = "identity.json";
15
+ /** A native conversation identity, as the hosts pass it. */
16
+ const SESSION = /^[A-Za-z0-9_-]{1,128}$/;
12
17
  /**
13
- * `cotal app-identity`: machine-facing plumbing for a Claude app conversation. The Claude
14
- * connector's local server runs it to open one conversation's own identity on the selected mesh,
15
- * and again to retire it. It prints one JSON line on stdout and nothing else there. The credential is
16
- * never in that line: it goes to a 0600 file whose path the env names. A new identity opens only
17
- * after a person approves it at the mesh's authority, so a mesh without one opens none.
18
+ * `cotal app-identity`: machine-facing plumbing for a personal app conversation. The local server
19
+ * of the Claude or Codex plugin runs it to open one conversation's own identity on the selected
20
+ * mesh, and again to retire it. It prints one JSON line on stdout and nothing else there. The credential is
21
+ * never in that line: it goes to a 0600 file whose path the env names. Every identity belongs to the
22
+ * native conversation the host names. On a signed-in mesh a new one opens only after a person
23
+ * approves it at the mesh's authority. On an open or static mesh this computer runs, it opens with
24
+ * the grant a bare `cotal spawn` gets there, and a static mesh's own signing authority issues it.
18
25
  */
19
26
  export const appIdentityFlags = [
20
27
  { name: "name", type: "string", value: "<name>", description: "provision: the agent name to open, exactly" },
21
28
  { name: "space", type: "string", value: "<space>", description: "the mesh to use; defaults as `cotal spawn` does" },
22
29
  { name: "dir", type: "string", value: "<dir>", description: "retire: the credential directory provision returned" },
23
- { name: "session", type: "string", value: "<id>", description: "provision: the native conversation identity" },
30
+ { name: "session", type: "string", value: "<id>", description: "provision: the native conversation identity, required" },
24
31
  { name: "events", type: "boolean", description: "provision: a real native transcript source is bound" },
25
32
  { name: "selection", type: "string", value: "<json>", description: "provision: channels, role and capabilities to request within your own grant" },
26
- // Every provision here needs a person's approval, with or without this flag. A caller passes it so
27
- // that an earlier CLI, which opened identities without approval, refuses the unknown flag first.
28
- { name: "require-approval", type: "boolean", description: "provision: the caller accepts only an identity a person approved" },
33
+ // Every provision on a signed-in mesh needs a person's approval, with or without this flag. A caller
34
+ // passes it so that an earlier CLI, which opened signed-in identities without approval, refuses
35
+ // the unknown flag first.
36
+ { name: "require-approval", type: "boolean", description: "provision: on a signed-in mesh, the caller accepts only an identity a person approved" },
29
37
  ];
30
38
  function reply(r) {
31
39
  process.stdout.write(`${JSON.stringify(r)}\n`);
@@ -69,10 +77,141 @@ async function provision(values) {
69
77
  const connection = await provisionUserApp(t, name, values.session, values.events === true, selection);
70
78
  return "pending" in connection ? { ok: false, pending: true, ...connection.pending } : { ok: true, ...connection };
71
79
  }
72
- // A static or open mesh has no authority where a person approves a connection, so it opens none.
73
- // What a host that died without retiring left behind is still retired here.
80
+ // What a host that died without retiring left behind is retired first.
74
81
  await retireOrphans();
75
- return { ok: false, error: `the mesh "${t.space}" has no human approval for app conversations, so no identity was opened; connect through a signed-in mesh whose authority offers connection approval` };
82
+ return provisionLocal(t, name, values.session, values.events === true, selection);
83
+ }
84
+ /** What to run when the persona a bare spawn loads is missing. `up` in the root of a space this
85
+ * machine started writes the `default` one; another name comes from `COTAL_DEFAULT_PERSONA`. */
86
+ function missingPersonaNext(persona, t) {
87
+ if (persona !== "default")
88
+ return "Create it, or point COTAL_DEFAULT_PERSONA at a persona that exists.";
89
+ const fix = defaultPersonaFix(t);
90
+ return fix.cwd ? `Run \`${fix.command}\` in ${fix.cwd} to write it.` : `Create it with \`${fix.command}\`.`;
91
+ }
92
+ /** The grant a conversation gets on an open or static mesh: the channels, role and capabilities of
93
+ * the persona a bare `cotal spawn` loads there, or the part of them a selection names. A selection
94
+ * only narrows, and an item the persona does not hold refuses the whole request. */
95
+ function localGrant(def, selection) {
96
+ const subscribe = def.subscribe ?? [];
97
+ const allowSubscribe = resolveReadAcl(subscribe, def.allowSubscribe);
98
+ const allowPublish = def.allowPublish ?? [];
99
+ const role = def.role ?? null;
100
+ const scope = def.capabilities ?? [];
101
+ if (!selection)
102
+ return { subscribe, grant: { scope, role, allowSubscribe, allowPublish, subscribe: [] } };
103
+ for (const capability of selection.capabilities.filter((c) => !c.startsWith("role:")))
104
+ if (!scope.includes(capability))
105
+ throw new Error(`capability "${capability}" is not within what this mesh's default persona grants; nothing was opened`);
106
+ if (selection.role !== null && selection.role !== role)
107
+ throw new Error(`the role "${selection.role}" is not within what this mesh's default persona grants; nothing was opened`);
108
+ for (const { channel, access } of selection.channels)
109
+ if (!patternInAllow(allowSubscribe, channel) || (access === "read-post" && !patternInAllow(allowPublish, channel)))
110
+ throw new Error(`channel "${channel}" (${access}) is not within what this mesh's default persona grants; nothing was opened`);
111
+ return { subscribe: [], grant: {
112
+ scope: [...selection.capabilities], role: selection.role, subscribe: [], endpoints: [],
113
+ allowSubscribe: selection.channels.map((c) => c.channel),
114
+ allowPublish: selection.channels.filter((c) => c.access === "read-post").map((c) => c.channel),
115
+ } };
116
+ }
117
+ /** Open one native conversation's identity on an open or static mesh this computer runs. A static
118
+ * mesh's own signing authority issues it as a terminal seat (SPEC 13.15) scoped to its grant, with
119
+ * the durable footprint of a foreground spawn; the credential stays in this account's private
120
+ * files. An open mesh takes no credential. Either way a record names the conversation, so the
121
+ * conversation holds one identity at a time and what its host leaves behind is retired. */
122
+ async function provisionLocal(t, name, session, events, selection) {
123
+ if (!session || !SESSION.test(session))
124
+ return { ok: false, error: `a conversation needs its native session identity before connecting, and this app supplies none; nothing was opened on "${t.space}"` };
125
+ const root = join(homeCotalDir(), "app-identities");
126
+ mkSecretDir(root);
127
+ const lock = acquireLock(join(root, `session-${createHash("sha256").update(session).digest("hex")}.lock`), { waitMs: 0 });
128
+ try {
129
+ return await provisionLocalLocked(t, name, session, events, selection);
130
+ }
131
+ finally {
132
+ lock.release();
133
+ }
134
+ }
135
+ async function provisionLocalLocked(t, name, session, events, selection) {
136
+ if (t.mode === "auth" && !t.auth)
137
+ return { ok: false, error: `the mesh "${t.space}" takes static credentials, and this account holds no signing authority for it in ${t.root}, so no identity was opened` };
138
+ if (t.policy?.events === "required" && !events)
139
+ return { ok: false, error: "this mesh requires a real native conversation event source; no identity was opened" };
140
+ const held = localRecords().find(({ record }) => record.session === session && alive(record.owner));
141
+ if (held)
142
+ return { ok: false, error: `this native conversation already has a live identity on "${held.record.space}"; disconnect it before connecting again` };
143
+ const taken = await liveMeshNames(t);
144
+ if (!taken)
145
+ return { ok: false, error: `the mesh "${t.space}" at ${t.server} is not answering. Start it with \`cotal up\`.` };
146
+ if (taken.has(name))
147
+ return { ok: false, taken: true };
148
+ const persona = defaultPersonaRef();
149
+ let def;
150
+ try {
151
+ def = loadAgentFile(agentFilePath(t.root, persona));
152
+ }
153
+ catch (e) {
154
+ if (e.code === "ENOENT")
155
+ return { ok: false, error: `no "${persona}" persona in ${t.personaRoot} for the mesh "${t.space}". ${missingPersonaNext(persona, t)}` };
156
+ throw e;
157
+ }
158
+ const { subscribe, grant } = localGrant(def, selection);
159
+ const identity = newIdentity();
160
+ const lifecycleUid = mintLifecycleUid();
161
+ // The conversation publishes its own activity on its own event channel, as a spawned seat does.
162
+ const allowPublish = events ? [eventChannel({ owner: DEV_OWNER, actor: identity.id }), ...grant.allowPublish] : grant.allowPublish;
163
+ const env = {
164
+ COTAL_SPACE: t.space, COTAL_SERVERS: t.server, COTAL_NAME: name, COTAL_TLS: t.tlsRequired ? "1" : "0",
165
+ COTAL_ID: identity.id, COTAL_LIFECYCLE_UID: lifecycleUid, COTAL_CAPABILITIES: grant.scope.join(","),
166
+ COTAL_SUBSCRIBE: subscribe.join(","), COTAL_ALLOW_SUBSCRIBE: grant.allowSubscribe.join(","), COTAL_ALLOW_PUBLISH: allowPublish.join(","),
167
+ ...(grant.role ? { COTAL_ROLE: grant.role } : {}), COTAL_WORKSPACE_ROOT: homeCotalDir(), ...(events ? { COTAL_EVENTS: "1" } : {}),
168
+ ...(t.policy?.events === "required" ? { COTAL_EVENTS_REQUIRED: "1" } : {}),
169
+ };
170
+ const dir = mkdtempSync(join(tmpdir(), CRED_DIR_PREFIX));
171
+ // Written before anything reaches the broker, so a provision killed partway still leaves a record.
172
+ const record = { space: t.space, id: identity.id, lifecycleUid, owner: process.ppid, session, ...(t.auth ? { alias: name } : {}) };
173
+ writeFileSync(join(dir, RECORD), JSON.stringify(record), { mode: 0o600 });
174
+ const reply = { ok: true, env, retire: { dir }, grant: { ...grant, allowPublish } };
175
+ if (!t.auth)
176
+ return reply;
177
+ const auth = t.auth;
178
+ const prov = new CotalEndpoint({
179
+ space: t.space,
180
+ servers: t.server,
181
+ creds: await mintCreds(auth, newIdentity(), "provisioner"),
182
+ tls: t.tlsRequired,
183
+ channels: [],
184
+ consume: false,
185
+ registerPresence: false,
186
+ watchPresence: false,
187
+ watchChannels: false,
188
+ card: { name: "app-provisioner", role: "provisioner", kind: "endpoint" },
189
+ });
190
+ // The awaited calls below own the verdict; the provisioner's own events would only reach stdout.
191
+ prov.on("error", () => { });
192
+ prov.on("warning", () => { });
193
+ const seatTarget = { server: t.server, space: t.space, tlsRequired: t.tlsRequired, auth };
194
+ const seat = { actor: identity.id, alias: name, lifecycleUid };
195
+ let acceptedToken;
196
+ try {
197
+ await prov.start();
198
+ await activateTerminalSeat(seatTarget, seat);
199
+ const creds = await issueTerminalSeat(seatTarget, seat, undefined, (issue) => {
200
+ acceptedToken = issue.issued.acceptedToken;
201
+ return provisionAgent(prov, auth, identity, {
202
+ subscribe, allowSubscribe: grant.allowSubscribe, allowPublish, ...(grant.role ? { role: grant.role } : {}), capabilities: grant.scope,
203
+ lifecycleUid, expiresAt: issue.expiresAt, issued: issue.issued, issuance: issue.issuance,
204
+ });
205
+ });
206
+ writeFileSync(join(dir, "agent.creds"), creds, { mode: 0o600 });
207
+ }
208
+ catch (e) {
209
+ await prov.stop().catch(() => { });
210
+ await retireDir(dir).catch(() => { });
211
+ throw e;
212
+ }
213
+ await prov.stop();
214
+ return { ...reply, env: { ...env, COTAL_CREDS: join(dir, "agent.creds"), COTAL_ACCEPTED_TOKEN: acceptedToken } };
76
215
  }
77
216
  async function retire(values) {
78
217
  if (!values.dir)
@@ -91,8 +230,8 @@ async function reap(values) {
91
230
  await retireDeadUserApps(t);
92
231
  return { ok: true };
93
232
  }
94
- /** Remove what provision made in `dirArg`: on an auth mesh the identity's broker footprint first,
95
- * with a deprovisioner credential pinned to that one identity, then the credential, the record and
233
+ /** Remove what provision made in `dirArg`: on an auth mesh the identity's issuance gate and broker
234
+ * footprint first, with credentials pinned to that one identity, then the credential, the record and
96
235
  * the directory. The directory must have provision's shape, and only those two files go, so a wrong
97
236
  * path removes nothing else. When the broker footprint cannot be removed the files stay, so a
98
237
  * later attempt still knows what to retire. */
@@ -105,6 +244,8 @@ async function retireDir(dirArg) {
105
244
  if (t.auth) {
106
245
  if (!(await isReachable(t.server)))
107
246
  throw new Error(`the mesh "${t.space}" at ${t.server} is not answering, so ${record.id} keeps its broker footprint`);
247
+ if (record.alias)
248
+ await retireTerminalSeat({ server: t.server, space: t.space, tlsRequired: t.tlsRequired, auth: t.auth }, { actor: record.id, alias: record.alias, lifecycleUid: record.lifecycleUid });
108
249
  const creds = await mintCreds(t.auth, newIdentity(), "deprovisioner", { deprovisionTarget: { principal: record.id, lifecycleUid: record.lifecycleUid } });
109
250
  await deprovisionAgent({ servers: t.server, space: t.space, targetId: record.id, lifecycleUid: record.lifecycleUid, creds });
110
251
  }
@@ -113,26 +254,32 @@ async function retireDir(dirArg) {
113
254
  if (existsSync(dir))
114
255
  rmdirSync(dir);
115
256
  }
116
- /** Retire every credential directory of this user's whose owning process is gone: a host killed
117
- * before it could retire. One that cannot be retired now stays for the next provision. */
118
- async function retireOrphans() {
257
+ /** This user's credential directories with a readable record. Unreadable or half-written ones are
258
+ * left for a later provision. */
259
+ function localRecords() {
119
260
  const uid = process.getuid?.();
120
- for (const name of readdirSync(tmpdir())) {
261
+ return readdirSync(tmpdir()).flatMap((name) => {
121
262
  if (!name.startsWith(CRED_DIR_PREFIX))
122
- continue;
263
+ return [];
123
264
  const dir = join(tmpdir(), name);
124
265
  try {
125
266
  const st = lstatSync(dir);
126
267
  if (!st.isDirectory() || (uid !== undefined && st.uid !== uid))
127
- continue;
128
- const record = JSON.parse(readFileSync(join(dir, RECORD), "utf8"));
129
- if (alive(record.owner))
130
- continue;
131
- await retireDir(dir);
268
+ return [];
269
+ return [{ dir, record: JSON.parse(readFileSync(join(dir, RECORD), "utf8")) }];
132
270
  }
133
271
  catch {
134
- // Unreadable, half-written or unreachable: left for a later provision.
272
+ return [];
135
273
  }
274
+ });
275
+ }
276
+ /** Retire every credential directory of this user's whose owning process is gone: a host killed
277
+ * before it could retire. One that cannot be retired now stays for the next provision. */
278
+ async function retireOrphans() {
279
+ for (const { dir, record } of localRecords()) {
280
+ if (alive(record.owner))
281
+ continue;
282
+ await retireDir(dir).catch(() => { });
136
283
  }
137
284
  }
138
285
  /** Whether `pid` names a running process. A reused pid reads as alive, so its directory is kept. */
@@ -1 +1 @@
1
- {"version":3,"file":"app-identity.js","sourceRoot":"","sources":["../../src/commands/app-identity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app-identity.js","sourceRoot":"","sources":["../../src/commands/app-identity.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cotal-ai/cli",
3
3
  "description": "Cotal mesh CLI: up, join, watch, console, spawn, mint, channels, history, ext.",
4
- "version": "0.147.8",
4
+ "version": "0.148.0",
5
5
  "homepage": "https://cotal.ai",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {
@@ -27,8 +27,8 @@
27
27
  }
28
28
  },
29
29
  "dependencies": {
30
- "@cotal-ai/core": "0.147.8",
31
- "@cotal-ai/workspace": "0.147.8",
30
+ "@cotal-ai/core": "0.148.0",
31
+ "@cotal-ai/workspace": "0.148.0",
32
32
  "@nats-io/jetstream": "^3.4.0",
33
33
  "@nats-io/kv": "^3.4.0",
34
34
  "@nats-io/obj": "^3.4.0",
@@ -49,7 +49,7 @@
49
49
  "@eplightning/nats-server-win32-x64": "^2.14.0"
50
50
  },
51
51
  "devDependencies": {
52
- "@cotal-ai/auth": "0.147.8",
52
+ "@cotal-ai/auth": "0.148.0",
53
53
  "@cotal-ai/smoke-kit": "0.0.0",
54
54
  "@types/react": "^19.0.0",
55
55
  "@types/ws": "^8.18.1"