@lazehq/cli 0.1.41 → 0.1.42

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 (2) hide show
  1. package/dist/laze.mjs +93 -22
  2. package/package.json +1 -1
package/dist/laze.mjs CHANGED
@@ -35670,7 +35670,8 @@ var SWITCHES = /* @__PURE__ */ new Set([
35670
35670
  "clear",
35671
35671
  "wait-reply",
35672
35672
  "no-publish",
35673
- "local"
35673
+ "local",
35674
+ "done"
35674
35675
  ]);
35675
35676
  function parseArgs({ argv }) {
35676
35677
  const words = [];
@@ -35708,7 +35709,7 @@ function flagText({
35708
35709
  }
35709
35710
 
35710
35711
  // src/rules/cli-version.rules.ts
35711
- var STAMPED = "0.1.41";
35712
+ var STAMPED = "0.1.42";
35712
35713
  function cliVersionOf({ stamped = STAMPED } = {}) {
35713
35714
  return stamped.startsWith("__") ? "dev" : stamped;
35714
35715
  }
@@ -76202,12 +76203,12 @@ async function browserTabCdp({
76202
76203
  args,
76203
76204
  client
76204
76205
  }) {
76205
- const channel = channelOf({ context, args });
76206
- if (!channel.channel) return null;
76207
76206
  try {
76207
+ const channel = channelOf({ context, args });
76208
76208
  return await client.post(BROWSER_TAB_PATHS.cdp, { tab: word({ args, at: 2 }), ...channel });
76209
76209
  } catch (error62) {
76210
- if (error62 instanceof LazeApiError && error62.code === "browser_tab_not_found") return null;
76210
+ const missing = ["browser_tab_not_found", "not_found"];
76211
+ if (error62 instanceof LazeApiError && missing.includes(error62.code)) return null;
76211
76212
  throw error62;
76212
76213
  }
76213
76214
  }
@@ -76335,13 +76336,38 @@ async function browserCall({
76335
76336
  if (reply2.error) reject(new Error(`${method}: ${JSON.stringify(reply2.error)}`));
76336
76337
  else resolve17(reply2.result ?? {});
76337
76338
  });
76338
- socket.once("close", () => reject(new Error(`${method}: the machine closed the socket`)));
76339
+ socket.once(
76340
+ "close",
76341
+ (_code, reason) => reject(
76342
+ new Error(`${method}: ${reason.toString("utf8") || "the machine closed the socket"}`)
76343
+ )
76344
+ );
76339
76345
  socket.send(JSON.stringify({ id: 1, method, params }));
76340
76346
  });
76341
76347
  } finally {
76342
76348
  socket.close();
76343
76349
  }
76344
76350
  }
76351
+ async function checkCdp({
76352
+ target,
76353
+ env,
76354
+ timeoutMs
76355
+ }) {
76356
+ let timer;
76357
+ const late = new Promise((_, reject) => {
76358
+ timer = setTimeout(() => reject(new Error(`no answer in ${timeoutMs / 1e3} s`)), timeoutMs);
76359
+ });
76360
+ const call = browserCall({
76361
+ target: new URL(target),
76362
+ proxy: proxyOfEnv({ env }),
76363
+ method: "Target.getTargets"
76364
+ });
76365
+ try {
76366
+ await Promise.race([call, late]);
76367
+ } finally {
76368
+ clearTimeout(timer);
76369
+ }
76370
+ }
76345
76371
  function describeTarget({ info, port }) {
76346
76372
  return {
76347
76373
  id: info.targetId,
@@ -76575,6 +76601,7 @@ function launchCdpBridge({
76575
76601
  }
76576
76602
 
76577
76603
  // src/services/browser-commands.service.ts
76604
+ var CDP_CHECK_MS = 3e4;
76578
76605
  var PATHS2 = {
76579
76606
  machines: "/api/compute/machines",
76580
76607
  setup: "/api/compute/browser/setup",
@@ -76661,7 +76688,9 @@ The screen link goes to your requester's DM once it is ready. ${next}`
76661
76688
  }
76662
76689
  async function cdp({ context, args }) {
76663
76690
  const client = await computeClient({ context, args });
76664
- const access = await browserTabCdp({ context, args, client }) ?? await client.post(PATHS2.cdp, { machine: machineArg({ args }) });
76691
+ const tab = await browserTabCdp({ context, args, client });
76692
+ if (tab) await answering({ context, access: tab });
76693
+ const access = tab ?? await client.post(PATHS2.cdp, { machine: machineArg({ args }) });
76665
76694
  if (access.status === "waking") {
76666
76695
  if (args.flags.json) return context.out(`${JSON.stringify(access, null, 2)}
76667
76696
  `);
@@ -76679,6 +76708,17 @@ async function cdp({ context, args }) {
76679
76708
  context.err(`Valid until ${access.expiresAt}. Use it with chromium.connectOverCDP(url).
76680
76709
  `);
76681
76710
  }
76711
+ async function answering({
76712
+ context,
76713
+ access
76714
+ }) {
76715
+ const env = context.environment.inherited;
76716
+ await checkCdp({ target: access.url, env, timeoutMs: CDP_CHECK_MS }).catch((cause) => {
76717
+ const why = cause instanceof Error ? cause.message : String(cause);
76718
+ const text2 = `${access.machine}'s browser did not answer over CDP (${why}). Try again in a minute`;
76719
+ throw new LazeApiError(502, "browser_cdp_unreachable", text2);
76720
+ });
76721
+ }
76682
76722
  function bridgeStatePath({ context, machine: machine2 }) {
76683
76723
  const safe = machine2.replace(/[^a-zA-Z0-9_-]/g, "_");
76684
76724
  return join19(dirname17(context.environment.configPath), "bridges", `${safe}.json`);
@@ -78056,6 +78096,19 @@ var browserTabScreenDefinition = external_exports.discriminatedUnion("status", [
78056
78096
  external_exports.object({ status: external_exports.literal("starting"), retryAfterSeconds: external_exports.number().int().positive() })
78057
78097
  ]);
78058
78098
  var browserTabScreenSchema = browserTabScreenDefinition;
78099
+ var screenSizeDefinition = external_exports.object({
78100
+ ...browserTabRefDefinition.shape,
78101
+ width: external_exports.number().int().positive().max(1e5),
78102
+ height: external_exports.number().int().positive().max(1e5),
78103
+ cause: external_exports.enum(["open", "resize", "input"])
78104
+ });
78105
+ var browserTabScreenSizeInputSchema = screenSizeDefinition;
78106
+ var screenSizeAnswerDefinition = external_exports.object({
78107
+ follows: external_exports.boolean(),
78108
+ width: external_exports.number().int().positive(),
78109
+ height: external_exports.number().int().positive()
78110
+ });
78111
+ var browserTabScreenSizeSchema = screenSizeAnswerDefinition;
78059
78112
  var restOpenBrowserTabInputDefinition = openBrowserTabDefinition.omit({ workspaceId: true });
78060
78113
  var restBrowserTabListInputDefinition = browserTabListInputDefinition.omit({ workspaceId: true });
78061
78114
  var restBrowserTabInputDefinition = browserTabRefDefinition.omit({ workspaceId: true });
@@ -79303,7 +79356,7 @@ var ownMachineSshConnectDefinition = external_exports.object({
79303
79356
  var ownMachineSshConnectSchema = ownMachineSshConnectDefinition;
79304
79357
  var reconcileDefinition = external_exports.object({ workspaceId: workspaceIdSchema18, machineId: idSchema19 });
79305
79358
  var ComputeApi = moduleApi()("compute");
79306
- var computeCoreTrpc = defineTrpcContract("compute").query("status").withInput(computeWorkspaceInputSchema).withOutput(computeStatusSchema).query("browserTabs").withInput(browserTabListInputSchema).withOutput(browserTabListSchema).query("browserTab").withInput(browserTabInputSchema).withOutput(browserTabSchema).mutation("openBrowserTab").withInput(openBrowserTabInputSchema).withOutput(browserTabSchema).mutation("browserTabScreen").withInput(browserTabInputSchema).withOutput(browserTabScreenSchema).mutation("gotoBrowserTab").withInput(browserTabGotoInputSchema).withOutput(browserTabPageSchema).mutation("doneOnBrowserTab").withInput(browserTabInputSchema).withOutput(browserTabSchema).mutation("shareBrowserTab").withInput(browserTabShareInputSchema).withOutput(browserTabSchema).mutation("closeBrowserTab").withInput(browserTabInputSchema).withOutput(external_exports.object({ closed: external_exports.literal(true) })).query("computer").withInput(computeWorkspaceInputSchema).withOutput(computerStatusSchema).mutation("setComputerSize").withInput(setComputerSizeInputSchema).withOutput(computerSizeAnswerSchema).mutation("requestComputerSize").withInput(setComputerSizeInputSchema).withOutput(computerRequestSchema).mutation("cancelComputerRequest").withInput(computerRequestRefSchema).withOutput(computerRequestSchema).mutation("restartComputer").withInput(restartComputerInputSchema).withOutput(computerRestartAnswerSchema).query("computers").withInput(computeWorkspaceInputSchema).withOutput(computerListSchema).query("dedicatedIp").withInput(computeWorkspaceInputSchema).withOutput(dedicatedIpStatusSchema).mutation("setDedicatedIp").withInput(setDedicatedIpInputSchema).withOutput(dedicatedIpAnswerSchema).mutation("turnOffDedicatedIp").withInput(computeWorkspaceInputSchema).withOutput(dedicatedIpAnswerSchema).mutation("setDedicatedIpDomains").withInput(setDedicatedIpDomainsInputSchema).withOutput(dedicatedIpAnswerSchema).query("dedicatedIps").withInput(computeWorkspaceInputSchema).withOutput(dedicatedIpListSchema).query("dedicatedIpCountries").withInput(computeWorkspaceInputSchema).withOutput(dedicatedIpCountriesSchema).query("dedicatedIpOffer").withInput(dedicatedIpOfferInputSchema).withOutput(dedicatedIpOfferSchema).query("list").withInput(computeWorkspaceInputSchema).withOutput(external_exports.array(machineSchema)).query("get").withInput(machineRefSchema).withOutput(machineSchema).mutation("setupBrowser").withInput(setupBrowserInputSchema).withOutput(machineSchema).mutation("sleep").withInput(machineRefSchema).withOutput(machineSchema).mutation("wake").withInput(machineRefSchema).withOutput(machineSchema).mutation("delete").withInput(machineRefSchema).withOutput(machineSchema).mutation("rename").withInput(renameMachineInputSchema).withOutput(machineSchema).mutation("grant").withInput(machineGrantInputSchema).withOutput(machineSchema).mutation("revokeGrant").withInput(machineGrantInputSchema).withOutput(machineSchema).mutation("setBudget").withInput(setMachineBudgetInputSchema).withOutput(machineSchema).mutation("openScreen").withInput(openScreenInputSchema).withOutput(screenSessionSchema).mutation("finishScreen").withInput(screenRefSchema).withOutput(machineSchema).mutation("connectOwn").withInput(connectOwnMachineInputSchema).withOutput(ownMachineConnectSchema).mutation("newConnectCommand").withInput(machineRefSchema).withOutput(ownMachineConnectSchema).mutation("connectSsh").withInput(connectSshMachineInputSchema).withOutput(ownMachineSshConnectSchema).mutation("trustHostKey").withInput(trustHostKeyInputSchema).withOutput(machineSchema).mutation("checkHealth").withInput(machineRefSchema).withOutput(machineSchema).mutation("hostAgent").withInput(hostAgentInputSchema).withOutput(machineSchema).mutation("unhostAgent").withInput(unhostAgentInputSchema).withOutput(external_exports.object({ agentId: external_exports.string() })).mutation("pairWhatsapp").withInput(machineRefSchema).withOutput(whatsappPairingSchema).query("whatsappPairing").withInput(whatsappPairingRefSchema).withOutput(whatsappPairingSchema).mutation("cancelWhatsappPairing").withInput(whatsappPairingRefSchema).withOutput(whatsappPairingSchema).mutation("unpairWhatsapp").withInput(machineRefSchema).withOutput(machineSchema).build();
79359
+ var computeCoreTrpc = defineTrpcContract("compute").query("status").withInput(computeWorkspaceInputSchema).withOutput(computeStatusSchema).query("browserTabs").withInput(browserTabListInputSchema).withOutput(browserTabListSchema).query("browserTab").withInput(browserTabInputSchema).withOutput(browserTabSchema).mutation("openBrowserTab").withInput(openBrowserTabInputSchema).withOutput(browserTabSchema).mutation("browserTabScreen").withInput(browserTabInputSchema).withOutput(browserTabScreenSchema).mutation("sizeBrowserTabScreen").withInput(browserTabScreenSizeInputSchema).withOutput(browserTabScreenSizeSchema).mutation("gotoBrowserTab").withInput(browserTabGotoInputSchema).withOutput(browserTabPageSchema).mutation("doneOnBrowserTab").withInput(browserTabInputSchema).withOutput(browserTabSchema).mutation("shareBrowserTab").withInput(browserTabShareInputSchema).withOutput(browserTabSchema).mutation("closeBrowserTab").withInput(browserTabInputSchema).withOutput(external_exports.object({ closed: external_exports.literal(true) })).query("computer").withInput(computeWorkspaceInputSchema).withOutput(computerStatusSchema).mutation("setComputerSize").withInput(setComputerSizeInputSchema).withOutput(computerSizeAnswerSchema).mutation("requestComputerSize").withInput(setComputerSizeInputSchema).withOutput(computerRequestSchema).mutation("cancelComputerRequest").withInput(computerRequestRefSchema).withOutput(computerRequestSchema).mutation("restartComputer").withInput(restartComputerInputSchema).withOutput(computerRestartAnswerSchema).query("computers").withInput(computeWorkspaceInputSchema).withOutput(computerListSchema).query("dedicatedIp").withInput(computeWorkspaceInputSchema).withOutput(dedicatedIpStatusSchema).mutation("setDedicatedIp").withInput(setDedicatedIpInputSchema).withOutput(dedicatedIpAnswerSchema).mutation("turnOffDedicatedIp").withInput(computeWorkspaceInputSchema).withOutput(dedicatedIpAnswerSchema).mutation("setDedicatedIpDomains").withInput(setDedicatedIpDomainsInputSchema).withOutput(dedicatedIpAnswerSchema).query("dedicatedIps").withInput(computeWorkspaceInputSchema).withOutput(dedicatedIpListSchema).query("dedicatedIpCountries").withInput(computeWorkspaceInputSchema).withOutput(dedicatedIpCountriesSchema).query("dedicatedIpOffer").withInput(dedicatedIpOfferInputSchema).withOutput(dedicatedIpOfferSchema).query("list").withInput(computeWorkspaceInputSchema).withOutput(external_exports.array(machineSchema)).query("get").withInput(machineRefSchema).withOutput(machineSchema).mutation("setupBrowser").withInput(setupBrowserInputSchema).withOutput(machineSchema).mutation("sleep").withInput(machineRefSchema).withOutput(machineSchema).mutation("wake").withInput(machineRefSchema).withOutput(machineSchema).mutation("delete").withInput(machineRefSchema).withOutput(machineSchema).mutation("rename").withInput(renameMachineInputSchema).withOutput(machineSchema).mutation("grant").withInput(machineGrantInputSchema).withOutput(machineSchema).mutation("revokeGrant").withInput(machineGrantInputSchema).withOutput(machineSchema).mutation("setBudget").withInput(setMachineBudgetInputSchema).withOutput(machineSchema).mutation("openScreen").withInput(openScreenInputSchema).withOutput(screenSessionSchema).mutation("finishScreen").withInput(screenRefSchema).withOutput(machineSchema).mutation("connectOwn").withInput(connectOwnMachineInputSchema).withOutput(ownMachineConnectSchema).mutation("newConnectCommand").withInput(machineRefSchema).withOutput(ownMachineConnectSchema).mutation("connectSsh").withInput(connectSshMachineInputSchema).withOutput(ownMachineSshConnectSchema).mutation("trustHostKey").withInput(trustHostKeyInputSchema).withOutput(machineSchema).mutation("checkHealth").withInput(machineRefSchema).withOutput(machineSchema).mutation("hostAgent").withInput(hostAgentInputSchema).withOutput(machineSchema).mutation("unhostAgent").withInput(unhostAgentInputSchema).withOutput(external_exports.object({ agentId: external_exports.string() })).mutation("pairWhatsapp").withInput(machineRefSchema).withOutput(whatsappPairingSchema).query("whatsappPairing").withInput(whatsappPairingRefSchema).withOutput(whatsappPairingSchema).mutation("cancelWhatsappPairing").withInput(whatsappPairingRefSchema).withOutput(whatsappPairingSchema).mutation("unpairWhatsapp").withInput(machineRefSchema).withOutput(machineSchema).build();
79307
79360
  var computeFleetTrpc = defineTrpcContract("compute").query("myComputers").withInput(computeWorkspaceInputSchema).withOutput(myComputersSchema).mutation("createComputer").withInput(createComputerInputSchema).withOutput(computerStatusSchema).mutation("deleteComputer").withInput(deleteComputerInputSchema).withOutput(deleteComputerAnswerSchema).mutation("setComputerCreators").withInput(setComputerCreatorsInputSchema).withOutput(computerStatusSchema).mutation("setAgentComputer").withInput(setAgentComputerInputSchema).withOutput(agentComputerAnswerSchema).build();
79308
79361
  var computeTrpc = joinTrpcContracts("compute", computeCoreTrpc, computeFleetTrpc);
79309
79362
  var restMachineInputDefinition = external_exports.object({ machine: external_exports.string().min(1).max(64) });
@@ -81189,7 +81242,9 @@ var feedActionSchemaDefinition = external_exports.object({
81189
81242
  message: external_exports.string(),
81190
81243
  style: external_exports.enum(["primary", "secondary"]).optional(),
81191
81244
  /** What the button says once pressed, and the handled line: "Sent". */
81192
- doneLabel: external_exports.string().optional()
81245
+ doneLabel: external_exports.string().optional(),
81246
+ /** A done action closes the card as it is pressed; the agent still hears which one. */
81247
+ done: external_exports.boolean().optional()
81193
81248
  });
81194
81249
  var feedActionSchema = feedActionSchemaDefinition;
81195
81250
  var feedItemActionSchemaDefinition = external_exports.object({
@@ -81197,7 +81252,9 @@ var feedItemActionSchemaDefinition = external_exports.object({
81197
81252
  label: external_exports.string(),
81198
81253
  message: external_exports.string(),
81199
81254
  style: external_exports.enum(["primary", "secondary"]),
81200
- doneLabel: external_exports.string().nullable()
81255
+ doneLabel: external_exports.string().nullable(),
81256
+ /** Present only on a done action: pressing it closes the card for everyone who gets it. */
81257
+ done: external_exports.literal(true).optional()
81201
81258
  });
81202
81259
  var feedItemActionSchema = feedItemActionSchemaDefinition;
81203
81260
  var feedLinkSchemaDefinition = external_exports.object({ label: external_exports.string(), url: external_exports.string() });
@@ -81313,7 +81370,9 @@ var replyFeedItemInputSchemaDefinition = external_exports.object({
81313
81370
  agent: feedAgentSchema,
81314
81371
  body: external_exports.string(),
81315
81372
  /** Wakes the item now for everyone who snoozed it. */
81316
- urgent: external_exports.boolean().default(false)
81373
+ urgent: external_exports.boolean().default(false),
81374
+ /** Closes the item with this reply: it leaves every feed and later replies keep it closed. */
81375
+ done: external_exports.boolean().default(false)
81317
81376
  });
81318
81377
  var feedEntrySchemaDefinition = external_exports.object({
81319
81378
  id: external_exports.string(),
@@ -81485,10 +81544,16 @@ var actFeedItemInputSchemaDefinition = external_exports.object({
81485
81544
  draft: external_exports.string().optional()
81486
81545
  });
81487
81546
  var actFeedItemInputSchema = actFeedItemInputSchemaDefinition;
81547
+ var feedCommentAfterSchemaDefinition = external_exports.discriminatedUnion("kind", [
81548
+ external_exports.object({ kind: external_exports.literal("done") }),
81549
+ external_exports.object({ kind: external_exports.literal("snooze"), until: external_exports.iso.datetime({ offset: true }) })
81550
+ ]);
81488
81551
  var commentFeedItemInputSchemaDefinition = external_exports.object({
81489
81552
  ...itemRef.shape,
81490
81553
  body: external_exports.string(),
81491
- draft: external_exports.string().optional()
81554
+ draft: external_exports.string().optional(),
81555
+ /** With an after-step the comment is a note on the card and the agent files no turn. */
81556
+ after: feedCommentAfterSchemaDefinition.nullable().default(null)
81492
81557
  });
81493
81558
  var commentFeedItemInputSchema = commentFeedItemInputSchemaDefinition;
81494
81559
  var snoozeFeedItemInputSchemaDefinition = external_exports.object({
@@ -81625,6 +81690,7 @@ var feedCommentByKeyInputSchemaDefinition = external_exports.object({
81625
81690
  itemId: external_exports.string().min(1),
81626
81691
  body: external_exports.string(),
81627
81692
  draft: external_exports.string().optional(),
81693
+ after: feedCommentAfterSchemaDefinition.nullable().default(null),
81628
81694
  /** Post the text as written even when the readability check pushes it back. */
81629
81695
  force: external_exports.boolean().default(false)
81630
81696
  });
@@ -81821,12 +81887,19 @@ function pairsOf(args) {
81821
81887
  });
81822
81888
  }
81823
81889
  const actions = args.lists.action ?? [];
81890
+ const doneLabels = new Set(args.lists["done-action"] ?? []);
81891
+ const labels = /* @__PURE__ */ new Set();
81824
81892
  if (actions.length > 0) {
81825
81893
  fields.actions = actions.map((value) => {
81826
81894
  const [label3, message2] = pairOf({ value, flag: "action" });
81827
- return { label: label3, message: message2 };
81895
+ labels.add(label3);
81896
+ return doneLabels.has(label3) ? { label: label3, message: message2, done: true } : { label: label3, message: message2 };
81828
81897
  });
81829
81898
  }
81899
+ for (const label3 of doneLabels) {
81900
+ if (!labels.has(label3))
81901
+ throw new Error(`--done-action "${label3}" names no --action of this card`);
81902
+ }
81830
81903
  return fields;
81831
81904
  }
81832
81905
  function feedFlagsOf({ args }) {
@@ -81927,7 +82000,8 @@ var USAGE10 = `Usage:
81927
82000
  [--draft <text|@file>] [--draft-header "To: ...\\nRe: ..."]
81928
82001
  [--metric <json|@file.json> | --table <csv|@file.csv>]
81929
82002
  [--image <path|url>]... [--file <path|url>]... (post only, at most 6)
81930
- [--link <label>=<url>]... [--action <label>=<message>]... [--to <userId>]...
82003
+ [--link <label>=<url>]... [--action <label>=<message>]... [--done-action <label>]...
82004
+ [--to <userId>]...
81931
82005
  [--urgent] [--done-label <line>] [--show-at <ISO time>]
81932
82006
  [--snooze-for <userId>... --until <ISO time>]
81933
82007
  [--group <name> [--label <word>]...] [--loop <key> [--reopen]]
@@ -81935,7 +82009,7 @@ var USAGE10 = `Usage:
81935
82009
  laze feed update <id> [the post flags that change] [--title <title>]
81936
82010
  [--auto-send-on <YYYY-MM-DD>|none]
81937
82011
  [--show-at <ISO time>|none] [--snooze-for <userId>... --until <ISO time>|none] [--reopen]
81938
- laze feed reply <id> <text> [--urgent] [--force]
82012
+ laze feed reply <id> <text> [--done] [--urgent] [--force]
81939
82013
  laze feed read <id>
81940
82014
  laze feed inbox
81941
82015
  laze feed close <id>|--loop <key> --note <text>
@@ -82036,7 +82110,8 @@ async function feedReply({ context, args }) {
82036
82110
  itemId,
82037
82111
  body: text2,
82038
82112
  urgent: Boolean(args.flags.urgent),
82039
- ...args.flags.force ? { force: true } : {}
82113
+ ...args.flags.force ? { force: true } : {},
82114
+ ...args.flags.done === true ? { done: true } : {}
82040
82115
  });
82041
82116
  printItem({ context, args, item: replied });
82042
82117
  }
@@ -84361,7 +84436,7 @@ function releaseWarningOf({
84361
84436
  sandbox
84362
84437
  }) {
84363
84438
  const skew = releaseSkewOf({ mine: mine4, server });
84364
- if (!skew) return null;
84439
+ if (!skew || skew === "other_build") return null;
84365
84440
  if (sandbox) {
84366
84441
  return `laze: this CLI is ${mine4}, but the server ships ${server}. Laze updates the computer's CLI each time the agent connects, so restart the agent if this stays.
84367
84442
  `;
@@ -84370,11 +84445,7 @@ function releaseWarningOf({
84370
84445
  return `laze: this CLI is ${mine4}, newer than the server's ${server}; a command the server does not have yet fails.
84371
84446
  `;
84372
84447
  }
84373
- const how = `Update it with npm i -g ${CLI_PACKAGE_LATEST} (or laze update).`;
84374
- if (skew === "older")
84375
- return `laze: this CLI is ${mine4}, older than the server's ${server}. ${how}
84376
- `;
84377
- return `laze: this CLI is ${mine4}, a different build from the server's ${server}. ${how}
84448
+ return `laze: this CLI is ${mine4}, older than the server's ${server}. Update it with npm i -g ${CLI_PACKAGE_LATEST} (or laze update).
84378
84449
  `;
84379
84450
  }
84380
84451
  function selfUpdateLineOf({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lazehq/cli",
3
- "version": "0.1.41",
3
+ "version": "0.1.42",
4
4
  "description": "The Laze command line: sign in, read and post in chat, and connect your own Claude Code or Codex session as an agent.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",