@lazehq/cli 0.1.42 → 0.1.43

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 +200 -106
  2. package/package.json +1 -1
package/dist/laze.mjs CHANGED
@@ -96,9 +96,9 @@ var require_node_gyp_build = __commonJS({
96
96
  var debug = getFirst(path.join(dir, "build/Debug"), matchBuild);
97
97
  if (debug) return debug;
98
98
  }
99
- var prebuild = resolve17(dir);
99
+ var prebuild = resolve18(dir);
100
100
  if (prebuild) return prebuild;
101
- var nearby = resolve17(path.dirname(process.execPath));
101
+ var nearby = resolve18(path.dirname(process.execPath));
102
102
  if (nearby) return nearby;
103
103
  var target = [
104
104
  "platform=" + platform,
@@ -114,7 +114,7 @@ var require_node_gyp_build = __commonJS({
114
114
  // eslint-disable-line
115
115
  ].filter(Boolean).join(" ");
116
116
  throw new Error("No native build was found for " + target + "\n loaded from: " + dir + "\n");
117
- function resolve17(dir2) {
117
+ function resolve18(dir2) {
118
118
  var tuples = readdirSync(path.join(dir2, "prebuilds")).map(parseTuple);
119
119
  var tuple2 = tuples.filter(matchTuple(platform, arch)).sort(compareTuples)[0];
120
120
  if (!tuple2) return;
@@ -6561,9 +6561,9 @@ var require_dispatcher_base = __commonJS({
6561
6561
  }
6562
6562
  close(callback) {
6563
6563
  if (callback === void 0) {
6564
- return new Promise((resolve17, reject) => {
6564
+ return new Promise((resolve18, reject) => {
6565
6565
  this.close((err, data) => {
6566
- return err ? reject(err) : resolve17(data);
6566
+ return err ? reject(err) : resolve18(data);
6567
6567
  });
6568
6568
  });
6569
6569
  }
@@ -6601,9 +6601,9 @@ var require_dispatcher_base = __commonJS({
6601
6601
  err = null;
6602
6602
  }
6603
6603
  if (callback === void 0) {
6604
- return new Promise((resolve17, reject) => {
6604
+ return new Promise((resolve18, reject) => {
6605
6605
  this.destroy(err, (err2, data) => {
6606
- return err2 ? reject(err2) : resolve17(data);
6606
+ return err2 ? reject(err2) : resolve18(data);
6607
6607
  });
6608
6608
  });
6609
6609
  }
@@ -11558,12 +11558,12 @@ upgrade: ${upgrade2}\r
11558
11558
  cb();
11559
11559
  }
11560
11560
  }
11561
- const waitForDrain = () => new Promise((resolve17, reject) => {
11561
+ const waitForDrain = () => new Promise((resolve18, reject) => {
11562
11562
  assert2(callback === null);
11563
11563
  if (socket[kError]) {
11564
11564
  reject(socket[kError]);
11565
11565
  } else {
11566
- callback = resolve17;
11566
+ callback = resolve18;
11567
11567
  }
11568
11568
  });
11569
11569
  socket.on("close", onDrain).on("drain", onDrain);
@@ -12921,12 +12921,12 @@ var require_client_h2 = __commonJS({
12921
12921
  cb();
12922
12922
  }
12923
12923
  }
12924
- const waitForDrain = () => new Promise((resolve17, reject) => {
12924
+ const waitForDrain = () => new Promise((resolve18, reject) => {
12925
12925
  assert2(callback === null);
12926
12926
  if (socket[kError]) {
12927
12927
  reject(socket[kError]);
12928
12928
  } else {
12929
- callback = resolve17;
12929
+ callback = resolve18;
12930
12930
  }
12931
12931
  });
12932
12932
  h2stream.on("close", onDrain).on("drain", onDrain);
@@ -13294,16 +13294,16 @@ var require_client = __commonJS({
13294
13294
  return this[kNeedDrain] < 2;
13295
13295
  }
13296
13296
  [kClose]() {
13297
- return new Promise((resolve17) => {
13297
+ return new Promise((resolve18) => {
13298
13298
  if (this[kSize]) {
13299
- this[kClosedResolve] = resolve17;
13299
+ this[kClosedResolve] = resolve18;
13300
13300
  } else {
13301
- resolve17(null);
13301
+ resolve18(null);
13302
13302
  }
13303
13303
  });
13304
13304
  }
13305
13305
  [kDestroy](err) {
13306
- return new Promise((resolve17) => {
13306
+ return new Promise((resolve18) => {
13307
13307
  const requests2 = this[kQueue].splice(this[kPendingIdx]);
13308
13308
  for (let i = 0; i < requests2.length; i++) {
13309
13309
  const request2 = requests2[i];
@@ -13316,7 +13316,7 @@ var require_client = __commonJS({
13316
13316
  this[kClosedResolve]();
13317
13317
  this[kClosedResolve] = null;
13318
13318
  }
13319
- resolve17(null);
13319
+ resolve18(null);
13320
13320
  };
13321
13321
  if (this[kHTTPContext]) {
13322
13322
  this[kHTTPContext].destroy(err, callback);
@@ -13729,8 +13729,8 @@ var require_pool_base = __commonJS({
13729
13729
  }
13730
13730
  return Promise.all(closeAll);
13731
13731
  } else {
13732
- return new Promise((resolve17) => {
13733
- this[kClosedResolve] = resolve17;
13732
+ return new Promise((resolve18) => {
13733
+ this[kClosedResolve] = resolve18;
13734
13734
  });
13735
13735
  }
13736
13736
  }
@@ -16241,7 +16241,7 @@ var require_readable = __commonJS({
16241
16241
  if (this._readableState.closeEmitted) {
16242
16242
  return Promise.resolve(null);
16243
16243
  }
16244
- return new Promise((resolve17, reject) => {
16244
+ return new Promise((resolve18, reject) => {
16245
16245
  if (this[kContentLength] && this[kContentLength] > limit || this[kBytesRead] > limit) {
16246
16246
  this.destroy(new AbortError());
16247
16247
  }
@@ -16255,11 +16255,11 @@ var require_readable = __commonJS({
16255
16255
  if (signal.aborted) {
16256
16256
  reject(signal.reason ?? new AbortError());
16257
16257
  } else {
16258
- resolve17(null);
16258
+ resolve18(null);
16259
16259
  }
16260
16260
  });
16261
16261
  } else {
16262
- this.on("close", resolve17);
16262
+ this.on("close", resolve18);
16263
16263
  }
16264
16264
  this.on("error", noop2).on("data", () => {
16265
16265
  if (this[kBytesRead] > limit) {
@@ -16287,7 +16287,7 @@ var require_readable = __commonJS({
16287
16287
  }
16288
16288
  function consume(stream, type) {
16289
16289
  assert2(!stream[kConsume]);
16290
- return new Promise((resolve17, reject) => {
16290
+ return new Promise((resolve18, reject) => {
16291
16291
  if (isUnusable(stream)) {
16292
16292
  const rState = stream._readableState;
16293
16293
  if (rState.destroyed && rState.closeEmitted === false) {
@@ -16302,7 +16302,7 @@ var require_readable = __commonJS({
16302
16302
  stream[kConsume] = {
16303
16303
  type,
16304
16304
  stream,
16305
- resolve: resolve17,
16305
+ resolve: resolve18,
16306
16306
  reject,
16307
16307
  length: 0,
16308
16308
  body: []
@@ -16380,18 +16380,18 @@ var require_readable = __commonJS({
16380
16380
  return buffer;
16381
16381
  }
16382
16382
  function consumeEnd(consume2, encoding) {
16383
- const { type, body, resolve: resolve17, stream, length } = consume2;
16383
+ const { type, body, resolve: resolve18, stream, length } = consume2;
16384
16384
  try {
16385
16385
  if (type === "text") {
16386
- resolve17(chunksDecode(body, length, encoding));
16386
+ resolve18(chunksDecode(body, length, encoding));
16387
16387
  } else if (type === "json") {
16388
- resolve17(JSON.parse(chunksDecode(body, length, encoding)));
16388
+ resolve18(JSON.parse(chunksDecode(body, length, encoding)));
16389
16389
  } else if (type === "arrayBuffer") {
16390
- resolve17(chunksConcat(body, length).buffer);
16390
+ resolve18(chunksConcat(body, length).buffer);
16391
16391
  } else if (type === "blob") {
16392
- resolve17(new Blob(body, { type: stream[kContentType] }));
16392
+ resolve18(new Blob(body, { type: stream[kContentType] }));
16393
16393
  } else if (type === "bytes") {
16394
- resolve17(chunksConcat(body, length));
16394
+ resolve18(chunksConcat(body, length));
16395
16395
  }
16396
16396
  consumeFinish(consume2);
16397
16397
  } catch (err) {
@@ -16610,9 +16610,9 @@ var require_api_request = __commonJS({
16610
16610
  };
16611
16611
  function request2(opts, callback) {
16612
16612
  if (callback === void 0) {
16613
- return new Promise((resolve17, reject) => {
16613
+ return new Promise((resolve18, reject) => {
16614
16614
  request2.call(this, opts, (err, data) => {
16615
- return err ? reject(err) : resolve17(data);
16615
+ return err ? reject(err) : resolve18(data);
16616
16616
  });
16617
16617
  });
16618
16618
  }
@@ -16873,9 +16873,9 @@ var require_api_stream = __commonJS({
16873
16873
  };
16874
16874
  function stream(opts, factory, callback) {
16875
16875
  if (callback === void 0) {
16876
- return new Promise((resolve17, reject) => {
16876
+ return new Promise((resolve18, reject) => {
16877
16877
  stream.call(this, opts, factory, (err, data) => {
16878
- return err ? reject(err) : resolve17(data);
16878
+ return err ? reject(err) : resolve18(data);
16879
16879
  });
16880
16880
  });
16881
16881
  }
@@ -17175,9 +17175,9 @@ var require_api_upgrade = __commonJS({
17175
17175
  };
17176
17176
  function upgrade2(opts, callback) {
17177
17177
  if (callback === void 0) {
17178
- return new Promise((resolve17, reject) => {
17178
+ return new Promise((resolve18, reject) => {
17179
17179
  upgrade2.call(this, opts, (err, data) => {
17180
- return err ? reject(err) : resolve17(data);
17180
+ return err ? reject(err) : resolve18(data);
17181
17181
  });
17182
17182
  });
17183
17183
  }
@@ -17271,9 +17271,9 @@ var require_api_connect = __commonJS({
17271
17271
  };
17272
17272
  function connect6(opts, callback) {
17273
17273
  if (callback === void 0) {
17274
- return new Promise((resolve17, reject) => {
17274
+ return new Promise((resolve18, reject) => {
17275
17275
  connect6.call(this, opts, (err, data) => {
17276
- return err ? reject(err) : resolve17(data);
17276
+ return err ? reject(err) : resolve18(data);
17277
17277
  });
17278
17278
  });
17279
17279
  }
@@ -18734,7 +18734,7 @@ var require_snapshot_recorder = __commonJS({
18734
18734
  "../../node_modules/.pnpm/undici@8.10.0/node_modules/undici/lib/mock/snapshot-recorder.js"(exports, module) {
18735
18735
  "use strict";
18736
18736
  var { writeFile: writeFile23, readFile: readFile39, mkdir: mkdir22 } = __require("node:fs/promises");
18737
- var { dirname: dirname23, resolve: resolve17 } = __require("node:path");
18737
+ var { dirname: dirname23, resolve: resolve18 } = __require("node:path");
18738
18738
  var { setTimeout: setTimeout2, clearTimeout: clearTimeout2 } = __require("node:timers");
18739
18739
  var { InvalidArgumentError, UndiciError } = require_errors();
18740
18740
  var { hashId, isUrlExcludedFactory, normalizeHeaders, createHeaderFilters } = require_snapshot_utils();
@@ -18950,7 +18950,7 @@ var require_snapshot_recorder = __commonJS({
18950
18950
  throw new InvalidArgumentError("Snapshot path is required");
18951
18951
  }
18952
18952
  try {
18953
- const data = await readFile39(resolve17(path), "utf8");
18953
+ const data = await readFile39(resolve18(path), "utf8");
18954
18954
  const parsed = JSON.parse(data);
18955
18955
  if (Array.isArray(parsed)) {
18956
18956
  this.#snapshots.clear();
@@ -18979,7 +18979,7 @@ var require_snapshot_recorder = __commonJS({
18979
18979
  if (!path) {
18980
18980
  throw new InvalidArgumentError("Snapshot path is required");
18981
18981
  }
18982
- const resolvedPath = resolve17(path);
18982
+ const resolvedPath = resolve18(path);
18983
18983
  await mkdir22(dirname23(resolvedPath), { recursive: true });
18984
18984
  const data = Array.from(this.#snapshots.entries()).map(([hash2, snapshot]) => ({
18985
18985
  hash: hash2,
@@ -26477,7 +26477,7 @@ var require_fetch = __commonJS({
26477
26477
  const hasTrailingQuestionMark = url2.search.length === 0 && url2.href[url2.href.length - url2.hash.length - 1] === "?";
26478
26478
  return dispatchWithProtocolPreference(body);
26479
26479
  function dispatchWithProtocolPreference(body2, allowH2) {
26480
- return new Promise((resolve17, reject) => agent2.dispatch(
26480
+ return new Promise((resolve18, reject) => agent2.dispatch(
26481
26481
  {
26482
26482
  path: hasTrailingQuestionMark ? `${path}?` : path,
26483
26483
  origin: url2.origin,
@@ -26560,7 +26560,7 @@ var require_fetch = __commonJS({
26560
26560
  }
26561
26561
  }
26562
26562
  const onError = (err) => this.onResponseError(controller, err);
26563
- resolve17({
26563
+ resolve18({
26564
26564
  status: status9,
26565
26565
  statusText,
26566
26566
  headersList,
@@ -26593,7 +26593,7 @@ var require_fetch = __commonJS({
26593
26593
  fetchParams.controller.off("terminated", this.abort);
26594
26594
  }
26595
26595
  if (request2.mode === "websocket" && allowH2 !== false && error62?.code === "UND_ERR_INFO" && error62?.message === "HTTP/2: Extended CONNECT protocol not supported by server") {
26596
- resolve17(dispatchWithProtocolPreference(body2, false));
26596
+ resolve18(dispatchWithProtocolPreference(body2, false));
26597
26597
  return;
26598
26598
  }
26599
26599
  this.body?.destroy(error62);
@@ -26607,7 +26607,7 @@ var require_fetch = __commonJS({
26607
26607
  const rawHeaders = controller?.rawHeaders ?? [];
26608
26608
  const headersList = new HeadersList();
26609
26609
  appendHeadersListFromResponseHeaders(headersList, headers, rawHeaders);
26610
- resolve17({
26610
+ resolve18({
26611
26611
  status: status9,
26612
26612
  statusText: STATUS_CODES[status9],
26613
26613
  headersList,
@@ -31581,7 +31581,7 @@ function runRedacted({
31581
31581
  signal
31582
31582
  }) {
31583
31583
  const values = Object.values(env);
31584
- return new Promise((resolve17, reject) => {
31584
+ return new Promise((resolve18, reject) => {
31585
31585
  const [file3, ...args] = command;
31586
31586
  const child = spawn(file3, args, {
31587
31587
  env: { ...baseEnv, ...env },
@@ -31607,7 +31607,7 @@ function runRedacted({
31607
31607
  child.on("error", reject);
31608
31608
  child.on("close", (code, ended) => {
31609
31609
  signal?.removeEventListener("abort", killGroup);
31610
- void drained.then(() => resolve17(code ?? (ended ? 128 + signalNumber(ended) : 1)));
31610
+ void drained.then(() => resolve18(code ?? (ended ? 128 + signalNumber(ended) : 1)));
31611
31611
  });
31612
31612
  });
31613
31613
  }
@@ -35709,7 +35709,7 @@ function flagText({
35709
35709
  }
35710
35710
 
35711
35711
  // src/rules/cli-version.rules.ts
35712
- var STAMPED = "0.1.42";
35712
+ var STAMPED = "0.1.43";
35713
35713
  function cliVersionOf({ stamped = STAMPED } = {}) {
35714
35714
  return stamped.startsWith("__") ? "dev" : stamped;
35715
35715
  }
@@ -40748,7 +40748,7 @@ var recursive = /* @__PURE__ */ new WeakMap();
40748
40748
  var NONE = 0;
40749
40749
  var ASSUMED = 1;
40750
40750
  var PROVEN = 2;
40751
- function isRecursive(inst, stack, resolve17) {
40751
+ function isRecursive(inst, stack, resolve18) {
40752
40752
  const cached2 = recursive.get(inst);
40753
40753
  if (cached2 !== void 0)
40754
40754
  return cached2 ? PROVEN : NONE;
@@ -40758,7 +40758,7 @@ function isRecursive(inst, stack, resolve17) {
40758
40758
  let result = NONE;
40759
40759
  const check3 = (child) => {
40760
40760
  if (result !== PROVEN && child?._zod) {
40761
- const answer4 = isRecursive(child, stack, resolve17);
40761
+ const answer4 = isRecursive(child, stack, resolve18);
40762
40762
  if (answer4 > result)
40763
40763
  result = answer4;
40764
40764
  }
@@ -40769,7 +40769,7 @@ function isRecursive(inst, stack, resolve17) {
40769
40769
  const desc = Object.getOwnPropertyDescriptor(sh, key);
40770
40770
  if (spread && !desc.enumerable)
40771
40771
  continue;
40772
- const child = desc.get ? ASSUMED : desc.value?._zod ? isRecursive(desc.value, stack, resolve17) : NONE;
40772
+ const child = desc.get ? ASSUMED : desc.value?._zod ? isRecursive(desc.value, stack, resolve18) : NONE;
40773
40773
  if (child > answer4)
40774
40774
  answer4 = child;
40775
40775
  }
@@ -40833,7 +40833,7 @@ function isRecursive(inst, stack, resolve17) {
40833
40833
  break;
40834
40834
  // `$ZodLazy` caches its inner on the def, so a resolved edge is followed exactly
40835
40835
  case "lazy": {
40836
- const inner = def._cachedInner ?? (resolve17 ? inst._zod.innerType : void 0);
40836
+ const inner = def._cachedInner ?? (resolve18 ? inst._zod.innerType : void 0);
40837
40837
  merge2(inner ? isRecursive(inner, stack, false) : ASSUMED);
40838
40838
  break;
40839
40839
  }
@@ -60093,6 +60093,68 @@ var burstSummaryIntentSchemaDefinition = external_exports.object({
60093
60093
  fromName: external_exports.string(),
60094
60094
  since: external_exports.iso.datetime()
60095
60095
  });
60096
+ var heldFeedPushSchema = external_exports.object({
60097
+ itemId: external_exports.string().min(1),
60098
+ idempotencyKey: external_exports.string().min(1),
60099
+ collapseId: external_exports.string().optional(),
60100
+ title: external_exports.string(),
60101
+ body: external_exports.string(),
60102
+ path: external_exports.string().min(1)
60103
+ });
60104
+ var heldBurstPushSchema = external_exports.object({
60105
+ fromKey: external_exports.string().min(1),
60106
+ fromName: external_exports.string(),
60107
+ since: external_exports.iso.datetime()
60108
+ });
60109
+ var heldPhonePushShape = {
60110
+ noticeId: external_exports.string().min(1).optional(),
60111
+ channelId: external_exports.string().min(1).optional(),
60112
+ messageId: external_exports.string().min(1).optional(),
60113
+ kind: noticeKindSchema.optional(),
60114
+ silent: external_exports.boolean().optional(),
60115
+ feed: heldFeedPushSchema.optional(),
60116
+ burst: heldBurstPushSchema.optional()
60117
+ };
60118
+ var phonePushHeldPayloadSchemaDefinition = external_exports.object({
60119
+ workspaceId: external_exports.string().min(1),
60120
+ userId: external_exports.string().min(1),
60121
+ ...heldPhonePushShape,
60122
+ dueAt: external_exports.iso.datetime(),
60123
+ at: external_exports.iso.datetime()
60124
+ });
60125
+ var phonePushHoldStateSchemaDefinition = external_exports.object({
60126
+ workspaceId: external_exports.string(),
60127
+ userId: external_exports.string(),
60128
+ pending: external_exports.array(
60129
+ external_exports.object({
60130
+ ...heldPhonePushShape,
60131
+ /** In epoch milliseconds. */
60132
+ dueAt: external_exports.number()
60133
+ })
60134
+ )
60135
+ });
60136
+ var heldPhonePushIntentSchemaDefinition = external_exports.object({
60137
+ workspaceId: external_exports.string().min(1),
60138
+ userId: external_exports.string().min(1),
60139
+ ...heldPhonePushShape
60140
+ });
60141
+ var conversationQuietedPayloadSchemaDefinition = external_exports.object({
60142
+ workspaceId: external_exports.string().min(1),
60143
+ userId: external_exports.string().min(1),
60144
+ channelId: external_exports.string().min(1),
60145
+ changeId: external_exports.string().min(1),
60146
+ levelQuiets: external_exports.array(noticeKindSchema),
60147
+ muteQuiets: external_exports.array(noticeKindSchema),
60148
+ mutedUntil: external_exports.iso.datetime().nullable(),
60149
+ at: external_exports.iso.datetime()
60150
+ });
60151
+ var feedCardSettledPayloadSchemaDefinition = external_exports.object({
60152
+ workspaceId: external_exports.string().min(1),
60153
+ userId: external_exports.string().min(1),
60154
+ itemId: external_exports.string().min(1),
60155
+ changeId: external_exports.string().min(1),
60156
+ at: external_exports.iso.datetime()
60157
+ });
60096
60158
  var feedDigestSetPayloadSchemaDefinition = external_exports.object({
60097
60159
  workspaceId: external_exports.string().min(1),
60098
60160
  userId: external_exports.string().min(1),
@@ -60129,6 +60191,16 @@ var NotificationDefaultHooksToken = notificationUi.hooks("channel-default");
60129
60191
  var NotificationPauseDialogSlot = notificationUi.component("pause-dialog");
60130
60192
 
60131
60193
  // ../../modules/chat/contract/src/chat.events.ts
60194
+ var memberNotifySetPayloadSchemaDefinition = external_exports.object({
60195
+ workspaceId: external_exports.string().min(1),
60196
+ channelId: external_exports.string().min(1),
60197
+ userId: external_exports.string().min(1),
60198
+ changeId: external_exports.string().min(1),
60199
+ levelQuiets: external_exports.array(noticeKindSchema),
60200
+ muteQuiets: external_exports.array(noticeKindSchema),
60201
+ mutedUntil: external_exports.iso.datetime().nullable(),
60202
+ at: external_exports.iso.datetime()
60203
+ });
60132
60204
  var personErasedPayloadSchemaDefinition = external_exports.object({
60133
60205
  workspaceId: external_exports.string().min(1),
60134
60206
  channelId: external_exports.string().min(1),
@@ -68757,8 +68829,10 @@ var openclawConfig = Config.define((c) => ({
68757
68829
  reconnectMaxSeconds: c.env("OPENCLAW_RECONNECT_MAX_SECONDS", positiveInt5.default(60)),
68758
68830
  /** How long one inbox read waits for an agent's next message. */
68759
68831
  inboxWaitSeconds: c.env("OPENCLAW_INBOX_WAIT_SECONDS", positiveInt5.max(55).default(25)),
68760
- /** A run with no answer after this long is given up and said so in the conversation. */
68761
- runTimeoutMinutes: c.env("OPENCLAW_RUN_TIMEOUT_MINUTES", positiveInt5.default(30))
68832
+ /** A run that shows no progress for this long is given up and said so in the conversation. */
68833
+ runTimeoutMinutes: c.env("OPENCLAW_RUN_TIMEOUT_MINUTES", positiveInt5.default(30)),
68834
+ /** The hard limit of one run, progress or not; OpenClaw gets it as the run's `timeoutMs`. */
68835
+ runMaxHours: c.env("OPENCLAW_RUN_MAX_HOURS", positiveInt5.default(6))
68762
68836
  }));
68763
68837
 
68764
68838
  // ../../modules/openclaw/contract/src/openclaw.events.ts
@@ -70108,8 +70182,8 @@ var CodexAppServer = class _CodexAppServer {
70108
70182
  }
70109
70183
  async call(method, params) {
70110
70184
  const id2 = ++this.#nextId;
70111
- const reply2 = await new Promise((resolve17) => {
70112
- this.#pending.set(id2, resolve17);
70185
+ const reply2 = await new Promise((resolve18) => {
70186
+ this.#pending.set(id2, resolve18);
70113
70187
  this.write({ id: id2, method, params });
70114
70188
  });
70115
70189
  if (reply2.error !== void 0) throw new Error(`${method}: ${JSON.stringify(reply2.error)}`);
@@ -70121,12 +70195,12 @@ var CodexAppServer = class _CodexAppServer {
70121
70195
  /** Starts one turn; `done` settles when it completes, keeping its last agent message. */
70122
70196
  async startTurn({ threadId, text: text2 }) {
70123
70197
  const result = { answer: "" };
70124
- const done = new Promise((resolve17) => {
70198
+ const done = new Promise((resolve18) => {
70125
70199
  const listen = (message2) => {
70126
70200
  absorbTurnEvent({ result, message: message2 });
70127
70201
  if (message2.method !== "turn/completed") return;
70128
70202
  this.#listeners.delete(listen);
70129
- resolve17(result);
70203
+ resolve18(result);
70130
70204
  };
70131
70205
  this.#listeners.add(listen);
70132
70206
  });
@@ -75805,6 +75879,16 @@ async function profileOf({
75805
75879
  ...me.agent ? { agentId: me.agent.id } : {}
75806
75880
  };
75807
75881
  }
75882
+ async function signInFolder(input2) {
75883
+ const profile = await profileOf(input2);
75884
+ await input2.context.store.saveProfile({
75885
+ name: input2.name,
75886
+ profile,
75887
+ bindDirectory: input2.folder,
75888
+ onlyThere: true
75889
+ });
75890
+ return profile;
75891
+ }
75808
75892
  async function login({ context, args }) {
75809
75893
  const url2 = serverUrlOf({ context, args });
75810
75894
  const name3 = flagText({ args, name: "profile", fallback: "default" });
@@ -76242,7 +76326,7 @@ function tunnel({
76242
76326
  host: host2,
76243
76327
  port
76244
76328
  }) {
76245
- return new Promise((resolve17, reject) => {
76329
+ return new Promise((resolve18, reject) => {
76246
76330
  const socket = connectTcp(proxy.port, proxy.host);
76247
76331
  let answer4 = "";
76248
76332
  const auth = proxy.authorization ? `Proxy-Authorization: ${proxy.authorization}\r
@@ -76259,7 +76343,7 @@ ${auth}\r
76259
76343
  answer4 += chunk.toString("latin1");
76260
76344
  if (!answer4.includes(HEADER_END)) return;
76261
76345
  socket.off("data", onData);
76262
- if (/^HTTP\/1\.[01] 200/.test(answer4)) return resolve17(socket);
76346
+ if (/^HTTP\/1\.[01] 200/.test(answer4)) return resolve18(socket);
76263
76347
  socket.destroy();
76264
76348
  reject(new Error(`proxy refused the tunnel: ${answer4.split("\r\n")[0] ?? ""}`));
76265
76349
  };
@@ -76272,8 +76356,8 @@ async function upstreamOf({ target, proxy }) {
76272
76356
  const raw = proxy ? await tunnel({ proxy, host: target.hostname, port }) : connectTcp(port, target.hostname);
76273
76357
  if (!secure) return raw;
76274
76358
  const tls = connectTls({ socket: raw, servername: target.hostname });
76275
- await new Promise((resolve17, reject) => {
76276
- tls.once("secureConnect", () => resolve17());
76359
+ await new Promise((resolve18, reject) => {
76360
+ tls.once("secureConnect", () => resolve18());
76277
76361
  tls.once("error", reject);
76278
76362
  });
76279
76363
  return tls;
@@ -76315,8 +76399,8 @@ async function browserSocket({
76315
76399
  createConnection: () => upstream,
76316
76400
  perMessageDeflate: false
76317
76401
  });
76318
- await new Promise((resolve17, reject) => {
76319
- socket.once("open", () => resolve17());
76402
+ await new Promise((resolve18, reject) => {
76403
+ socket.once("open", () => resolve18());
76320
76404
  socket.once("error", reject);
76321
76405
  });
76322
76406
  return socket;
@@ -76329,12 +76413,12 @@ async function browserCall({
76329
76413
  }) {
76330
76414
  const socket = await browserSocket({ target, proxy });
76331
76415
  try {
76332
- return await new Promise((resolve17, reject) => {
76416
+ return await new Promise((resolve18, reject) => {
76333
76417
  socket.on("message", (data) => {
76334
76418
  const reply2 = JSON.parse(textOf2(data));
76335
76419
  if (reply2.id !== 1) return;
76336
76420
  if (reply2.error) reject(new Error(`${method}: ${JSON.stringify(reply2.error)}`));
76337
- else resolve17(reply2.result ?? {});
76421
+ else resolve18(reply2.result ?? {});
76338
76422
  });
76339
76423
  socket.once(
76340
76424
  "close",
@@ -76498,18 +76582,18 @@ function retargetCdpBridge({
76498
76582
  target,
76499
76583
  expiresAt
76500
76584
  }) {
76501
- return new Promise((resolve17) => {
76585
+ return new Promise((resolve18) => {
76502
76586
  const call = httpRequest(
76503
76587
  { host: "127.0.0.1", port, path: TARGET_PATH, method: "PUT", timeout: 2e3 },
76504
76588
  (response) => {
76505
76589
  response.resume();
76506
- resolve17(response.statusCode === 204);
76590
+ resolve18(response.statusCode === 204);
76507
76591
  }
76508
76592
  );
76509
76593
  call.setHeader(KEY_HEADER, key);
76510
76594
  call.setHeader("content-type", "application/json");
76511
76595
  call.once("timeout", () => call.destroy());
76512
- call.once("error", () => resolve17(false));
76596
+ call.once("error", () => resolve18(false));
76513
76597
  call.end(JSON.stringify({ target, expiresAt }));
76514
76598
  });
76515
76599
  }
@@ -76558,15 +76642,15 @@ async function startCdpBridge({
76558
76642
  (socket) => relayPage({ client: socket, targetId, target: url2, proxy })
76559
76643
  );
76560
76644
  });
76561
- await new Promise((resolve17) => server.listen(0, "127.0.0.1", resolve17));
76645
+ await new Promise((resolve18) => server.listen(0, "127.0.0.1", resolve18));
76562
76646
  const port = server.address().port;
76563
76647
  return {
76564
76648
  port,
76565
- close: () => new Promise((resolve17) => {
76649
+ close: () => new Promise((resolve18) => {
76566
76650
  for (const client of relayed) client.destroy();
76567
76651
  pages.close();
76568
76652
  server.closeAllConnections();
76569
- server.close(() => resolve17());
76653
+ server.close(() => resolve18());
76570
76654
  })
76571
76655
  };
76572
76656
  }
@@ -76583,7 +76667,7 @@ function launchCdpBridge({
76583
76667
  stdio: ["ignore", "pipe", "ignore"],
76584
76668
  env: { ...env, LAZE_CDP_TARGET: target, LAZE_CDP_EXPIRES_AT: expiresAt, LAZE_CDP_KEY: key }
76585
76669
  });
76586
- return new Promise((resolve17, reject) => {
76670
+ return new Promise((resolve18, reject) => {
76587
76671
  let printed = "";
76588
76672
  child.once("error", reject);
76589
76673
  child.once("exit", (code) => reject(new Error(`the CDP bridge stopped (${code})`)));
@@ -76594,7 +76678,7 @@ function launchCdpBridge({
76594
76678
  child.stdout.destroy();
76595
76679
  child.removeAllListeners("exit");
76596
76680
  child.unref();
76597
- if (Number.isInteger(port) && port > 0) resolve17(port);
76681
+ if (Number.isInteger(port) && port > 0) resolve18(port);
76598
76682
  else reject(new Error("the CDP bridge printed no port"));
76599
76683
  });
76600
76684
  });
@@ -84108,6 +84192,7 @@ async function notifications({ context, args }) {
84108
84192
  }
84109
84193
 
84110
84194
  // src/services/openclaw-commands.service.ts
84195
+ import { resolve as resolve12 } from "node:path";
84111
84196
  var OPENCLAW_USAGE = `Usage (a person's key; a gateway belongs to the person who connects it):
84112
84197
  laze openclaw list the gateways connected here and their agents
84113
84198
  laze openclaw connect <wss url> [--label <label>] (< token | --from-file <file> | --from-vault <connection>)
@@ -84116,9 +84201,11 @@ var OPENCLAW_USAGE = `Usage (a person's key; a gateway belongs to the person who
84116
84201
  laze openclaw connect --local [--gateway ws://127.0.0.1:18789] [--label <label>] (< token | --from-vault <connection>)
84117
84202
  a gateway on this machine: Laze never dials it; the laze connect service relays it out to
84118
84203
  Laze. Run it again to give the kept relay a new key
84119
- laze openclaw agent <connectionId> <openclawAgentId> on|off make one of its agents a Laze agent
84120
- laze openclaw agent-key <connectionId> <openclawAgentId> a Laze CLI key for an agent that is on,
84121
- printed once as the login line to run on its machine; its previous key stops working
84204
+ laze openclaw agent <connectionId> <openclawAgentId> on|off [--login <folder>] make one of its
84205
+ agents a Laze agent; --login also signs its CLI in for its workspace folder on this machine
84206
+ laze openclaw agent-key <connectionId> <openclawAgentId> [--login <folder>] a Laze CLI key for an
84207
+ agent that is on, printed once as the login line to run on its machine, or with --login kept
84208
+ as its profile for that folder here, never printed; its previous key stops working
84122
84209
  laze openclaw feed <connectionId> on|off temporary Workboard migration bridge, off by default
84123
84210
  laze openclaw disconnect <connectionId> remove it, its Laze agents and its credentials`;
84124
84211
  function wordAt4(args, index) {
@@ -84235,13 +84322,16 @@ var connect3 = async (input2) => {
84235
84322
  });
84236
84323
  answer2({ context, args, connection });
84237
84324
  };
84238
- var agent = async ({ context, args, client }) => {
84325
+ var agent = async (input2) => {
84326
+ const { context, args, client } = input2;
84327
+ const enabled = switchAt(args, 4);
84239
84328
  const connection = await client.post(OPENCLAW_KEY_PATHS.setAgent, {
84240
84329
  connectionId: wordAt4(args, 2),
84241
84330
  openclawAgentId: wordAt4(args, 3),
84242
- enabled: switchAt(args, 4)
84331
+ enabled
84243
84332
  });
84244
84333
  answer2({ context, args, connection });
84334
+ if (enabled && flagText({ args, name: "login" })) await agentKey(input2);
84245
84335
  };
84246
84336
  function profileNameOf(agentName) {
84247
84337
  return agentName.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "") || "agent";
@@ -84251,6 +84341,17 @@ var agentKey = async ({ context, args, client, url: url2 }) => {
84251
84341
  connectionId: wordAt4(args, 2),
84252
84342
  openclawAgentId: wordAt4(args, 3)
84253
84343
  });
84344
+ const login2 = flagText({ args, name: "login" });
84345
+ if (login2) {
84346
+ const folder = resolve12(context.cwd, login2);
84347
+ const profile = profileNameOf(key.agentName);
84348
+ await signInFolder({ context, url: url2, token: key.token, name: profile, folder });
84349
+ context.out(
84350
+ `Signed ${key.agentName} (${key.agentId}) in with a new key, profile "${profile}", used in ${folder} and below; its previous key stopped working.
84351
+ `
84352
+ );
84353
+ return;
84354
+ }
84254
84355
  if (args.flags.json) return context.out(`${JSON.stringify(key)}
84255
84356
  `);
84256
84357
  context.out(
@@ -84341,17 +84442,13 @@ var MANAGERS = [
84341
84442
  ];
84342
84443
  var NPM_PREFIX = /^(.+)[\\/]lib[\\/]node_modules[\\/]@lazehq[\\/]cli[\\/]/;
84343
84444
  var NPX_CACHE2 = /[\\/]_npx[\\/]/;
84344
- function releaseAgeOverrideOf({
84345
- manager,
84346
- nowMs
84347
- }) {
84348
- if (manager === "npm")
84349
- return [`--before=${Temporal3.Instant.fromEpochMilliseconds(nowMs).toString()}`];
84445
+ function releaseAgeOverrideOf({ manager }) {
84446
+ if (manager === "npm") return ["--prefer-online", "--min-release-age=0"];
84350
84447
  if (manager === "pnpm") return [`--config.minimum-release-age-exclude=${CLI_PACKAGE}`];
84351
84448
  if (manager === "bun") return ["--minimum-release-age=0"];
84352
84449
  return [];
84353
84450
  }
84354
- function updatePlanOf({ script, nowMs }) {
84451
+ function updatePlanOf({ script }) {
84355
84452
  if (script === SANDBOX_CLI_PATH) return { kind: "sandbox" };
84356
84453
  const found = MANAGERS.find(({ pattern }) => pattern.test(script));
84357
84454
  if (!found) return { kind: "unmanaged", script };
@@ -84362,7 +84459,7 @@ function updatePlanOf({ script, nowMs }) {
84362
84459
  command: [
84363
84460
  ...found.command,
84364
84461
  ...prefix ? ["--prefix", prefix] : [],
84365
- ...releaseAgeOverrideOf({ manager: found.manager, nowMs }),
84462
+ ...releaseAgeOverrideOf({ manager: found.manager }),
84366
84463
  CLI_PACKAGE_LATEST
84367
84464
  ]
84368
84465
  };
@@ -84472,7 +84569,7 @@ async function startedUpdate({
84472
84569
  server
84473
84570
  }) {
84474
84571
  if (context.environment.inherited.LAZE_AUTO_UPDATE === "0") return null;
84475
- const plan2 = updatePlanOf({ script: await scriptOf(context), nowMs: context.nowMs() });
84572
+ const plan2 = updatePlanOf({ script: await scriptOf(context) });
84476
84573
  if (plan2.kind !== "install") return null;
84477
84574
  const folder = dirname21(context.environment.configPath);
84478
84575
  const stamp = join22(folder, "auto-update.json");
@@ -84733,7 +84830,7 @@ async function schedule({ context, args }) {
84733
84830
 
84734
84831
  // src/services/skill-commands.service.ts
84735
84832
  import { readdir as readdir7, readFile as readFile33 } from "node:fs/promises";
84736
- import { join as join23, relative as relative6, resolve as resolve12 } from "node:path";
84833
+ import { join as join23, relative as relative6, resolve as resolve13 } from "node:path";
84737
84834
  var USAGE16 = `Usage:
84738
84835
  laze skill list [--agent <agentId>]
84739
84836
  laze skill install <catalogue-id> [--as <name>] [--agent <agentId>]
@@ -84786,7 +84883,7 @@ async function skillInstall({ context, args }) {
84786
84883
  if (!catalogueId === !from) throw new CliUsageError(USAGE16);
84787
84884
  const name3 = flagText({ args, name: "as" });
84788
84885
  const agent2 = flagText({ args, name: "agent" });
84789
- const files2 = from ? await folderFiles({ root: resolve12(context.cwd, from) }) : void 0;
84886
+ const files2 = from ? await folderFiles({ root: resolve13(context.cwd, from) }) : void 0;
84790
84887
  const { client } = await signedIn({ context, args });
84791
84888
  const installed = await client.post("/api/skills/install", {
84792
84889
  ...catalogueId ? { catalogueId } : {},
@@ -84853,7 +84950,7 @@ async function skillUpdate({ context, args }) {
84853
84950
  if (!name3 || !newName && description === void 0 && !skillMdFile) {
84854
84951
  throw new CliUsageError(USAGE16);
84855
84952
  }
84856
- const skillMd = skillMdFile ? await readFile33(resolve12(context.cwd, skillMdFile), "utf8") : void 0;
84953
+ const skillMd = skillMdFile ? await readFile33(resolve13(context.cwd, skillMdFile), "utf8") : void 0;
84857
84954
  const { client } = await signedIn({ context, args });
84858
84955
  const updated = await client.post("/api/skills/update", {
84859
84956
  name: name3,
@@ -84900,7 +84997,7 @@ async function skill({ context, args }) {
84900
84997
 
84901
84998
  // src/services/slack-commands.service.ts
84902
84999
  import { readFile as readFile34 } from "node:fs/promises";
84903
- import { resolve as resolve13 } from "node:path";
85000
+ import { resolve as resolve14 } from "node:path";
84904
85001
  var SLACK_USAGE = `Usage (a person's key; Slack stays the source, the bot joins no channel by itself):
84905
85002
  laze slack overview connected Slack workspaces, mirrors, your link
84906
85003
  laze slack link-prompts Slack workspaces you have not linked yet
@@ -84947,7 +85044,7 @@ async function secretLines({ context, args }) {
84947
85044
  throw new CliUsageError("A secret never goes in a flag: pipe it on stdin or use --from-file.");
84948
85045
  }
84949
85046
  const file3 = flagText({ args, name: "from-file" });
84950
- const text2 = file3 ? await readFile34(resolve13(context.cwd, file3), "utf8") : await context.readStdin();
85047
+ const text2 = file3 ? await readFile34(resolve14(context.cwd, file3), "utf8") : await context.readStdin();
84951
85048
  return text2.split("\n").map((line) => line.trim()).filter(Boolean);
84952
85049
  }
84953
85050
  async function secretsOf({
@@ -85608,10 +85705,7 @@ async function update2({
85608
85705
  args,
85609
85706
  mine: mine4 = cliVersionOf()
85610
85707
  }) {
85611
- const plan2 = updatePlanOf({
85612
- script: await realScriptOf({ program: context.program }),
85613
- nowMs: context.nowMs()
85614
- });
85708
+ const plan2 = updatePlanOf({ script: await realScriptOf({ program: context.program }) });
85615
85709
  if (plan2.kind === "sandbox") {
85616
85710
  context.out("This laze comes with your computer and updates with every Laze release.\n");
85617
85711
  return 0;
@@ -85770,7 +85864,7 @@ async function vaultScrub({ context, args }) {
85770
85864
 
85771
85865
  // src/services/whatsapp-business-commands.service.ts
85772
85866
  import { readFile as readFile36 } from "node:fs/promises";
85773
- import { resolve as resolve14 } from "node:path";
85867
+ import { resolve as resolve15 } from "node:path";
85774
85868
 
85775
85869
  // ../../modules/whatsapp-business/contract/src/whatsapp-business.prices.ts
85776
85870
  var whatsappBusinessCategorySchema = external_exports.enum([
@@ -86189,7 +86283,7 @@ async function secretsOf2({ context, args }) {
86189
86283
  const fromConnection = flagText({ args, name: "from-vault" });
86190
86284
  if (fromConnection) return { fromConnection };
86191
86285
  const file3 = flagText({ args, name: "from-file" });
86192
- const text2 = file3 ? await readFile36(resolve14(context.cwd, file3), "utf8") : await context.readStdin();
86286
+ const text2 = file3 ? await readFile36(resolve15(context.cwd, file3), "utf8") : await context.readStdin();
86193
86287
  const lines2 = text2.split("\n").map((line) => line.trim()).filter(Boolean);
86194
86288
  if (lines2.length !== 2) {
86195
86289
  throw new CliUsageError(
@@ -86391,7 +86485,7 @@ async function whatsappBusiness({
86391
86485
 
86392
86486
  // src/services/whatsapp-pairing-commands.service.ts
86393
86487
  import { writeFile as writeFile22 } from "node:fs/promises";
86394
- import { resolve as resolve15 } from "node:path";
86488
+ import { resolve as resolve16 } from "node:path";
86395
86489
  var WHATSAPP_PAIRING_USAGE = [
86396
86490
  " laze whatsapp pair <machine> [--qr <file.svg>] link WhatsApp on your machine; scan the code (owner)",
86397
86491
  " laze whatsapp pairing <pairing-id> [--qr <file.svg>] where the linking stands, with a fresh code",
@@ -86410,7 +86504,7 @@ function svgOf(dataUrl) {
86410
86504
  return decodeURIComponent(body);
86411
86505
  }
86412
86506
  async function report({ context, args, pairing: pairing2 }) {
86413
- const qrFile = pairing2.qrSvg ? resolve15(context.cwd, flagText({ args, name: "qr", fallback: "whatsapp-qr.svg" })) : null;
86507
+ const qrFile = pairing2.qrSvg ? resolve16(context.cwd, flagText({ args, name: "qr", fallback: "whatsapp-qr.svg" })) : null;
86414
86508
  if (qrFile && pairing2.qrSvg) await writeFile22(qrFile, svgOf(pairing2.qrSvg), "utf8");
86415
86509
  if (args.flags.json) return context.out(`${JSON.stringify({ ...pairing2, qrFile }, null, 2)}
86416
86510
  `);
@@ -86771,7 +86865,7 @@ async function flags({ context, args }) {
86771
86865
 
86772
86866
  // src/services/workspace-commands.service.ts
86773
86867
  import { readFile as readFile37 } from "node:fs/promises";
86774
- import { resolve as resolve16 } from "node:path";
86868
+ import { resolve as resolve17 } from "node:path";
86775
86869
  var ROLE_NAMES2 = {
86776
86870
  OWNER: "Owner",
86777
86871
  ADMIN: "Admin",
@@ -86953,7 +87047,7 @@ var LOGO_USAGE = "Usage: laze workspace logo set <file.png|jpg|webp> | laze work
86953
87047
  async function readLogo({ context, file: file3 }) {
86954
87048
  let bytes;
86955
87049
  try {
86956
- bytes = new Uint8Array(await readFile37(resolve16(context.cwd, file3)));
87050
+ bytes = new Uint8Array(await readFile37(resolve17(context.cwd, file3)));
86957
87051
  } catch {
86958
87052
  throw new CliUsageError(`No file to read at ${file3}.`);
86959
87053
  }
@@ -87754,15 +87848,15 @@ function terminalAsk() {
87754
87848
  };
87755
87849
  }
87756
87850
  function sleep(ms, signal) {
87757
- return new Promise((resolve17) => {
87758
- if (signal?.aborted) return resolve17();
87851
+ return new Promise((resolve18) => {
87852
+ if (signal?.aborted) return resolve18();
87759
87853
  const stop3 = () => {
87760
87854
  clearTimeout(timer);
87761
- resolve17();
87855
+ resolve18();
87762
87856
  };
87763
87857
  const timer = setTimeout(() => {
87764
87858
  signal?.removeEventListener("abort", stop3);
87765
- resolve17();
87859
+ resolve18();
87766
87860
  }, ms);
87767
87861
  signal?.addEventListener("abort", stop3, { once: true });
87768
87862
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lazehq/cli",
3
- "version": "0.1.42",
3
+ "version": "0.1.43",
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",