lody 0.97.0 → 0.97.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.
@@ -82,8 +82,8 @@ let __tla = Promise.all([
82
82
  }
83
83
  })()
84
84
  ]).then(async () => {
85
- const reviewViewerVersion = "0.97.0";
86
- const reviewViewerSha256 = "dc9c7fc1dde49bb39c5fe86392d69219b469c0cab4fd492d8b562045e7f676e4";
85
+ const reviewViewerVersion = "0.97.1";
86
+ const reviewViewerSha256 = "681ed52366a3bfaba8a637aae99d13a81355378a7152a9e29d4bb7abdb133f01";
87
87
  const reviewViewerFileName = "standalone.html";
88
88
  const DEFAULT_CDN_BASES = [
89
89
  "https://cdn.jsdelivr.net/npm",
package/dist/index.js CHANGED
@@ -4326,7 +4326,7 @@ Upgrade Node, then re-run: npx lody@latest`;
4326
4326
  }
4327
4327
  const name$2 = "lody";
4328
4328
  const name$1 = "@lody/cli-cloud";
4329
- const version$a = "0.97.0";
4329
+ const version$a = "0.97.1";
4330
4330
  const type$2 = "module";
4331
4331
  const scripts = {
4332
4332
  "dev": "node dev.mjs",
@@ -16190,12 +16190,15 @@ Requirements:
16190
16190
  type: "idle"
16191
16191
  };
16192
16192
  },
16193
- running(activity) {
16194
- return activity ? {
16193
+ running(activity, detail) {
16194
+ return {
16195
16195
  type: "running",
16196
- activity
16197
- } : {
16198
- type: "running"
16196
+ ...activity !== void 0 ? {
16197
+ activity
16198
+ } : {},
16199
+ ...detail !== void 0 ? {
16200
+ detail
16201
+ } : {}
16199
16202
  };
16200
16203
  },
16201
16204
  requestPermission() {
@@ -16805,14 +16808,49 @@ Requirements:
16805
16808
  description: "Devin CLI coding agent by Cognition",
16806
16809
  icon: "https://cdn.agentclientprotocol.com/registry/v1/latest/devin.svg",
16807
16810
  distribution: {
16808
- local: {
16809
- command: "devin",
16810
- args: [
16811
- "acp"
16812
- ],
16813
- versionArgs: [
16814
- "--version"
16815
- ]
16811
+ binary: {
16812
+ "darwin-aarch64": {
16813
+ archive: "https://static.devin.ai/cli/3000.10.21/devin-3000.10.21-aarch64-apple-darwin.tar.gz",
16814
+ cmd: "./bin/devin",
16815
+ args: [
16816
+ "acp"
16817
+ ]
16818
+ },
16819
+ "darwin-x86_64": {
16820
+ archive: "https://static.devin.ai/cli/3000.10.21/devin-3000.10.21-x86_64-apple-darwin.tar.gz",
16821
+ cmd: "./bin/devin",
16822
+ args: [
16823
+ "acp"
16824
+ ]
16825
+ },
16826
+ "linux-aarch64": {
16827
+ archive: "https://static.devin.ai/cli/3000.10.21/devin-3000.10.21-aarch64-unknown-linux.tar.gz",
16828
+ cmd: "./bin/devin",
16829
+ args: [
16830
+ "acp"
16831
+ ]
16832
+ },
16833
+ "linux-x86_64": {
16834
+ archive: "https://static.devin.ai/cli/3000.10.21/devin-3000.10.21-x86_64-unknown-linux.tar.gz",
16835
+ cmd: "./bin/devin",
16836
+ args: [
16837
+ "acp"
16838
+ ]
16839
+ },
16840
+ "windows-aarch64": {
16841
+ archive: "https://static.devin.ai/cli/3000.10.21/devin-3000.10.21-aarch64-pc-windows.zip",
16842
+ cmd: "./bin\\devin.exe",
16843
+ args: [
16844
+ "acp"
16845
+ ]
16846
+ },
16847
+ "windows-x86_64": {
16848
+ archive: "https://static.devin.ai/cli/3000.10.21/devin-3000.10.21-x86_64-pc-windows.zip",
16849
+ cmd: "./bin\\devin.exe",
16850
+ args: [
16851
+ "acp"
16852
+ ]
16853
+ }
16816
16854
  }
16817
16855
  }
16818
16856
  },
@@ -22480,7 +22518,8 @@ ${tailedOutput}` : null;
22480
22518
  type: literal$1("running"),
22481
22519
  activity: _enum$1([
22482
22520
  "image_generation"
22483
- ]).optional()
22521
+ ]).optional(),
22522
+ detail: string$1().min(1).max(280).optional()
22484
22523
  }),
22485
22524
  object$1({
22486
22525
  type: literal$1("requestPermission")
@@ -129379,6 +129418,21 @@ ${incoming}`).output;
129379
129418
  ])
129380
129419
  });
129381
129420
  const IMAGE_GENERATION_REVISED_PROMPT_PREFIX = "Revised prompt: ";
129421
+ const MAX_LIVE_REASONING_LABEL_LENGTH = 280;
129422
+ const latestCodexReasoningSummaryLine = (text) => {
129423
+ for (const rawLine of text.split(/\r?\n/u).reverse()) {
129424
+ let line3 = rawLine.trim();
129425
+ if (!line3 || line3.startsWith("<!--")) continue;
129426
+ line3 = line3.replace(/^#+\s*/u, "").trim();
129427
+ if (line3.startsWith("**")) {
129428
+ const closing = line3.indexOf("**", 2);
129429
+ if (closing < 0) continue;
129430
+ line3 = `${line3.slice(2, closing)}${line3.slice(closing + 2)}`.trim();
129431
+ }
129432
+ if (line3) return line3.slice(0, MAX_LIVE_REASONING_LABEL_LENGTH);
129433
+ }
129434
+ return null;
129435
+ };
129382
129436
  function isRecord$2(value) {
129383
129437
  return typeof value === "object" && value !== null;
129384
129438
  }
@@ -129492,6 +129546,8 @@ ${incoming}`).output;
129492
129546
  agentMcpCapabilities;
129493
129547
  configOptions = [];
129494
129548
  configOptionsListeners = /* @__PURE__ */ new Set();
129549
+ codexReasoningMessageId = null;
129550
+ codexReasoningText = "";
129495
129551
  configOptionValues;
129496
129552
  legacySessionModelState = null;
129497
129553
  currentModel;
@@ -129746,9 +129802,40 @@ ${incoming}`).output;
129746
129802
  if (this.handleImageGenerationNotification(notification)) {
129747
129803
  return;
129748
129804
  }
129805
+ if (this.handleCodexLiveReasoning(notification)) {
129806
+ return;
129807
+ }
129749
129808
  this.options.onUpdateMessage(notification);
129750
129809
  return;
129751
129810
  }
129811
+ handleCodexLiveReasoning(notification) {
129812
+ if (!this.isCodexAgent()) return false;
129813
+ const { update: update2 } = notification;
129814
+ if (update2.sessionUpdate === "agent_thought_chunk") {
129815
+ if (update2.content.type !== "text") return true;
129816
+ const messageId = update2.messageId ?? "__current__";
129817
+ if (this.codexReasoningMessageId !== messageId) {
129818
+ this.codexReasoningMessageId = messageId;
129819
+ this.codexReasoningText = "";
129820
+ }
129821
+ this.codexReasoningText += update2.content.text;
129822
+ this.options.onLiveReasoningStatus?.(latestCodexReasoningSummaryLine(this.codexReasoningText));
129823
+ return true;
129824
+ }
129825
+ switch (update2.sessionUpdate) {
129826
+ case "agent_message_chunk":
129827
+ case "tool_call":
129828
+ case "tool_call_update":
129829
+ case "plan":
129830
+ if (this.codexReasoningMessageId !== null) {
129831
+ this.codexReasoningMessageId = null;
129832
+ this.codexReasoningText = "";
129833
+ this.options.onLiveReasoningStatus?.(null);
129834
+ }
129835
+ break;
129836
+ }
129837
+ return false;
129838
+ }
129752
129839
  handleGoalSessionInfoUpdate(notification) {
129753
129840
  if (notification.update.sessionUpdate !== "session_info_update") {
129754
129841
  return;
@@ -136480,6 +136567,7 @@ ${fallbackStderrTail}` : errorMessage2;
136480
136567
  terminalEnabled: options.terminalEnabled,
136481
136568
  onStartupStage: options.onStartupStage,
136482
136569
  onUpdateMessage: options.onUpdateMessage,
136570
+ onLiveReasoningStatus: options.onLiveReasoningStatus,
136483
136571
  onRequestPermission: options.onRequestPermission,
136484
136572
  onUsageUpdate: options.onUsageUpdate,
136485
136573
  onContextWindowUsageUpdate: options.onContextWindowUsageUpdate,
@@ -138267,7 +138355,7 @@ ${fallbackStderrTail}` : errorMessage2;
138267
138355
  const phaseToStatus = (phase, detail) => {
138268
138356
  switch (phase ?? "thinking") {
138269
138357
  case "thinking":
138270
- return SessionStatusFactory.running();
138358
+ return SessionStatusFactory.running(void 0, detail);
138271
138359
  case "initializing":
138272
138360
  return SessionStatusFactory.initializing(void 0, detail);
138273
138361
  case "git-clone":
@@ -142510,7 +142598,10 @@ ${withCauses}`;
142510
142598
  type: "successor"
142511
142599
  }))
142512
142600
  ]);
142513
- if (settled.type === "prompt" && !run2.successor) runtime.steerWaitController?.abort();
142601
+ const handoffVerdictPending = !!runtime.pendingHandoffSteerOutcome && !runtime.cancelRequested;
142602
+ if (settled.type === "prompt" && !run2.successor && !handoffVerdictPending) {
142603
+ runtime.steerWaitController?.abort();
142604
+ }
142514
142605
  const decision = await this.steerMutationQueue.enqueue(runtime.sessionId, async () => {
142515
142606
  if (this.turnRuntimeBySession.get(runtime.sessionId) !== runtime || !runtime.promptInFlight) {
142516
142607
  return {
@@ -143067,6 +143158,16 @@ ${withCauses}`;
143067
143158
  const previousUserTurnId = runtime.userTurnId;
143068
143159
  const steerRun = agentClient.steerPrompt(acpSessionId, promptBlocks);
143069
143160
  providerSubmissionStarted = true;
143161
+ if (steerCapability.upstreamTurn === "handoff") {
143162
+ const pendingOutcome = steerRun.outcome;
143163
+ runtime.pendingHandoffSteerOutcome = pendingOutcome;
143164
+ const clear = () => {
143165
+ if (runtime.pendingHandoffSteerOutcome === pendingOutcome) {
143166
+ runtime.pendingHandoffSteerOutcome = void 0;
143167
+ }
143168
+ };
143169
+ void pendingOutcome.then(clear, clear);
143170
+ }
143070
143171
  let steerOutcome;
143071
143172
  try {
143072
143173
  steerOutcome = await wait(steerRun.outcome);
@@ -178495,6 +178596,9 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
178495
178596
  this.sessionManager.on("onACPUpdateMessage", (sessionId, update2) => {
178496
178597
  this.enqueueACPUpdate(sessionId, update2);
178497
178598
  });
178599
+ this.sessionManager.on("onCodexLiveReasoningStatus", (sessionId, label2) => {
178600
+ this.setSessionActivePresencePhase(sessionId, "thinking", label2 ?? void 0);
178601
+ });
178498
178602
  this.sessionManager.on("onWriteTextFile", (sessionId, event) => {
178499
178603
  this.trackCodeCollabEvidenceWrite(sessionId, this.collectCodeCollabWriteTextFileEvidence(sessionId, event));
178500
178604
  });
@@ -187301,6 +187405,7 @@ export PATH=${toSingleQuotedShellString(ghShimBinDir)}:"$PATH"
187301
187405
  forkSessionTurnId: callbacks.forkSessionTurnId,
187302
187406
  onStartupStage: callbacks.onStartupStage,
187303
187407
  onUpdateMessage: callbacks.onUpdateMessage,
187408
+ onLiveReasoningStatus: callbacks.onLiveReasoningStatus,
187304
187409
  onRequestPermission: callbacks.onRequestPermission,
187305
187410
  onUsageUpdate: callbacks.onUsageUpdate,
187306
187411
  onContextWindowUsageUpdate: callbacks.onContextWindowUsageUpdate,
@@ -188647,6 +188752,9 @@ export PATH=${toSingleQuotedShellString(ghShimBinDir)}:"$PATH"
188647
188752
  onUpdateMessage: (update2) => {
188648
188753
  dispatchEvent(() => this.emit("onACPUpdateMessage", sessionId, update2));
188649
188754
  },
188755
+ onLiveReasoningStatus: (label2) => {
188756
+ dispatchEvent(() => this.emit("onCodexLiveReasoningStatus", sessionId, label2));
188757
+ },
188650
188758
  onRequestPermission: (requestId, request2) => {
188651
188759
  if (options?.allowInteractiveRequest && !options.allowInteractiveRequest()) {
188652
188760
  return Promise.resolve({
@@ -225453,7 +225561,7 @@ ${page}${helpTipBottom}${choiceDescription}${ansiEscapes.cursorHide}`;
225453
225561
  data = createReviewBundleSnapshot(bundle);
225454
225562
  }
225455
225563
  const { injectReviewSnapshot } = await import("./chunks/index-VoI6Ds2-.js");
225456
- const { resolveReviewViewerTemplate } = await import("./chunks/review-viewer-B9jEGZSx.js").then(async (m) => {
225564
+ const { resolveReviewViewerTemplate } = await import("./chunks/review-viewer-Bf0L8T_A.js").then(async (m) => {
225457
225565
  await m.__tla;
225458
225566
  return m;
225459
225567
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lody",
3
- "version": "0.97.0",
3
+ "version": "0.97.1",
4
4
  "description": "Lody Agent CLI tool for managing remote command execution",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",