lody 0.90.1 → 0.91.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -42,7 +42,7 @@ import { performance as performance$1 } from "perf_hooks";
42
42
  import require$$0$9 from "net";
43
43
  import require$$4$2 from "tls";
44
44
  import require$$7$2, { fileURLToPath as fileURLToPath$1, pathToFileURL as pathToFileURL$1 } from "url";
45
- import { D as DEEPSEEK_HARNESS_PERMISSION_MODES, a as DEEPSEEK_HARNESS_AGENT_PRESETS, b as DEEPSEEK_HARNESS_MODELS, c as DEEPSEEK_HARNESS_REASONING_OPTIONS, A as ACP_EXTENSION_DSH_CAPABILITY_SOURCE_VERSION, d as createDeepSeekHarnessCordisConfig, e as ACP_EXTENSION_DSH_VERSION, f as ACP_EXTENSION_DSH_PROFILE_REVISION, g as ACP_EXTENSION_DSH_QUERY_PATH_ENV, h as ACP_EXTENSION_DSH_SESSION_ROOT_ENV, i as DEEPSEEK_HARNESS_NPX_PACKAGES, j as DEEPSEEK_HARNESS_VERSION, k as DEEPSEEK_HARNESS_DEFAULT_SESSION_COMPRESSION } from "./chunks/profile-CPDWaQXE.js";
45
+ import { D as DEEPSEEK_HARNESS_PERMISSION_MODES, a as DEEPSEEK_HARNESS_AGENT_PRESETS, A as ACP_EXTENSION_DSH_CAPABILITY_SOURCE_VERSION, c as createDeepSeekHarnessCordisConfig, b as ACP_EXTENSION_DSH_VERSION, d as ACP_EXTENSION_DSH_PROFILE_REVISION, e as ACP_EXTENSION_DSH_QUERY_PATH_ENV, f as ACP_EXTENSION_DSH_SESSION_ROOT_ENV, g as DEEPSEEK_HARNESS_NPX_PACKAGES, h as DEEPSEEK_HARNESS_VERSION, i as DEEPSEEK_HARNESS_DEFAULT_SESSION_COMPRESSION, j as DEEPSEEK_HARNESS_BASE_URL_ENV } from "./chunks/profile-DLuYzIs8.js";
46
46
  import assert from "assert";
47
47
  import * as fs$2 from "fs/promises";
48
48
  import fs__default$2 from "fs/promises";
@@ -4325,7 +4325,7 @@ Upgrade Node, then re-run: npx lody@latest`;
4325
4325
  }
4326
4326
  const name$2 = "lody";
4327
4327
  const name$1 = "@lody/cli-cloud";
4328
- const version$9 = "0.90.1";
4328
+ const version$9 = "0.91.1";
4329
4329
  const type$2 = "module";
4330
4330
  const scripts = {
4331
4331
  "dev": "node dev.mjs",
@@ -4703,30 +4703,6 @@ Upgrade Node, then re-run: npx lody@latest`;
4703
4703
  options: DEEPSEEK_HARNESS_AGENT_PRESETS.map((preset) => ({
4704
4704
  ...preset
4705
4705
  }))
4706
- },
4707
- {
4708
- id: "model",
4709
- name: "Model",
4710
- description: "DeepSeek model used for the session",
4711
- category: "model",
4712
- type: "select",
4713
- currentValue: "deepseek-v4-pro",
4714
- options: DEEPSEEK_HARNESS_MODELS.map((model) => ({
4715
- value: model.modelId,
4716
- name: model.name,
4717
- description: model.description
4718
- }))
4719
- },
4720
- {
4721
- id: "reasoning_effort",
4722
- name: "Reasoning effort",
4723
- description: "How much reasoning effort the model should use",
4724
- category: "thought_level",
4725
- type: "select",
4726
- currentValue: "max",
4727
- options: DEEPSEEK_HARNESS_REASONING_OPTIONS.map((option2) => ({
4728
- ...option2
4729
- }))
4730
4706
  }
4731
4707
  ];
4732
4708
  const CODEX_STATIC_MODES = [
@@ -5137,9 +5113,6 @@ Upgrade Node, then re-run: npx lody@latest`;
5137
5113
  deepseek: {
5138
5114
  modes: DEEPSEEK_HARNESS_PERMISSION_MODES.map((mode2) => ({
5139
5115
  ...mode2
5140
- })),
5141
- models: DEEPSEEK_HARNESS_MODELS.map((model) => ({
5142
- ...model
5143
5116
  }))
5144
5117
  }
5145
5118
  });
@@ -12737,6 +12710,43 @@ Requirements:
12737
12710
  name: string$1().optional(),
12738
12711
  description: string$1().optional()
12739
12712
  }).strict();
12713
+ const AcpConfigOptionValueSummarySchema = object$1({
12714
+ value: string$1(),
12715
+ name: string$1(),
12716
+ description: string$1().optional(),
12717
+ group: string$1().optional()
12718
+ }).strict();
12719
+ const AcpConfigOptionSummarySchema = object$1({
12720
+ id: string$1(),
12721
+ name: string$1(),
12722
+ description: string$1().optional(),
12723
+ category: string$1().optional(),
12724
+ type: _enum$1([
12725
+ "select",
12726
+ "boolean"
12727
+ ]),
12728
+ currentValue: AcpConfigOptionValueSchema,
12729
+ options: array$2(AcpConfigOptionValueSummarySchema)
12730
+ }).strict();
12731
+ const AcpCapabilityCacheEntrySchema = object$1({
12732
+ cliType: AgentConfigCliTypeSchema,
12733
+ agentType: string$1().trim().min(1),
12734
+ cacheVersion: number$4().optional(),
12735
+ provenance: literal$1("runtime").optional(),
12736
+ sourceVersion: string$1().optional(),
12737
+ modes: array$2(AcpModeSchema),
12738
+ models: array$2(AcpModelSchema),
12739
+ configOptions: array$2(AcpConfigOptionSummarySchema).optional(),
12740
+ modelReasoningEfforts: record$1(string$1(), array$2(string$1())).optional(),
12741
+ availableCommands: array$2(object$1({
12742
+ name: string$1(),
12743
+ description: string$1().optional()
12744
+ }).strict()).optional(),
12745
+ sessionFork: boolean().optional(),
12746
+ acknowledgedSteer: boolean().optional(),
12747
+ sessionForkWorktree: boolean().optional(),
12748
+ fetchedAt: number$4()
12749
+ }).strict();
12740
12750
  const MachineAcpAuthMethodSummarySchema = object$1({
12741
12751
  type: _enum$1([
12742
12752
  "agent",
@@ -12854,6 +12864,7 @@ Requirements:
12854
12864
  category: string$1().optional(),
12855
12865
  optionCount: number$4()
12856
12866
  })).optional(),
12867
+ capability: AcpCapabilityCacheEntrySchema.optional(),
12857
12868
  availableCommands: array$2(object$1({
12858
12869
  name: string$1(),
12859
12870
  description: string$1().optional()
@@ -13313,10 +13324,7 @@ Requirements:
13313
13324
  "browser_address",
13314
13325
  "share_action"
13315
13326
  ]),
13316
- targetClass: _enum$1([
13317
- "loopback",
13318
- "private_lan"
13319
- ]),
13327
+ targetClass: literal$1("loopback"),
13320
13328
  target: PreviewTargetSchema,
13321
13329
  confirmedByUserId: string$1().trim().min(1),
13322
13330
  confirmedAt: number$4().int().nonnegative()
@@ -14717,35 +14725,35 @@ Requirements:
14717
14725
  {
14718
14726
  id: "antigravity-acp",
14719
14727
  name: "Google Antigravity",
14720
- version: "1.0.0",
14728
+ version: "1.1.1",
14721
14729
  description: "Google\u2019s AI coding agent",
14722
14730
  icon: "https://cdn.agentclientprotocol.com/registry/v1/latest/antigravity-acp.svg",
14723
14731
  distribution: {
14724
14732
  binary: {
14725
14733
  "darwin-aarch64": {
14726
- archive: "https://dl.google.com/agy-extensions/releases/macos/agy-acp-server-agy_acp_server_20260818_01_RC01-darwin-arm64.zip",
14734
+ archive: "https://dl.google.com/agy-extensions/releases/macos/agy-acp-server-agy_acp_server_1.1.1-darwin-arm64.zip",
14727
14735
  cmd: "./agy_acp_server.par"
14728
14736
  },
14729
14737
  "linux-x86_64": {
14730
- archive: "https://dl.google.com/agy-extensions/releases/linux/agy-acp-server-agy_acp_server_20260818_01_RC01-linux-x86_64.zip",
14738
+ archive: "https://dl.google.com/agy-extensions/releases/linux/agy-acp-server-agy_acp_server_1.1.1-linux-x86_64.zip",
14731
14739
  cmd: "./agy_acp_server.par",
14732
14740
  args: [
14733
14741
  "--uid="
14734
14742
  ]
14735
14743
  },
14736
14744
  "linux-aarch64": {
14737
- archive: "https://dl.google.com/agy-extensions/releases/linux/agy-acp-server-agy_acp_server_20260818_01_RC01-linux-arm64.zip",
14745
+ archive: "https://dl.google.com/agy-extensions/releases/linux/agy-acp-server-agy_acp_server_1.1.1-linux-arm64.zip",
14738
14746
  cmd: "./agy_acp_server.par",
14739
14747
  args: [
14740
14748
  "--uid="
14741
14749
  ]
14742
14750
  },
14743
14751
  "windows-x86_64": {
14744
- archive: "https://dl.google.com/agy-extensions/releases/windows/agy-acp-server-agy_acp_server_20260818_01_RC01-windows-x86_64.zip",
14752
+ archive: "https://dl.google.com/agy-extensions/releases/windows/agy-acp-server-agy_acp_server_1.1.1-windows-x86_64.zip",
14745
14753
  cmd: "./agy_acp_server.exe"
14746
14754
  },
14747
14755
  "windows-aarch64": {
14748
- archive: "https://dl.google.com/agy-extensions/releases/windows/agy-acp-server-agy_acp_server_20260818_01_RC01-windows-arm64.zip",
14756
+ archive: "https://dl.google.com/agy-extensions/releases/windows/agy-acp-server-agy_acp_server_1.1.1-windows-arm64.zip",
14749
14757
  cmd: "./agy_acp_server.exe"
14750
14758
  }
14751
14759
  }
@@ -14784,12 +14792,12 @@ Requirements:
14784
14792
  {
14785
14793
  id: "cline",
14786
14794
  name: "Cline",
14787
- version: "3.0.60",
14795
+ version: "3.0.61",
14788
14796
  description: "Autonomous coding agent CLI - capable of creating/editing files, running commands, using the browser, and more",
14789
14797
  icon: "https://cdn.agentclientprotocol.com/registry/v1/latest/cline.svg",
14790
14798
  distribution: {
14791
14799
  npx: {
14792
- package: "cline@3.0.60",
14800
+ package: "cline@3.0.61",
14793
14801
  args: [
14794
14802
  "--acp"
14795
14803
  ]
@@ -14799,12 +14807,12 @@ Requirements:
14799
14807
  {
14800
14808
  id: "codebuddy-code",
14801
14809
  name: "Codebuddy Code",
14802
- version: "2.142.0",
14810
+ version: "2.143.1",
14803
14811
  description: "Tencent Cloud's official intelligent coding tool",
14804
14812
  icon: "https://cdn.agentclientprotocol.com/registry/v1/latest/codebuddy-code.svg",
14805
14813
  distribution: {
14806
14814
  npx: {
14807
- package: "@tencent-ai/codebuddy-code@2.142.0",
14815
+ package: "@tencent-ai/codebuddy-code@2.143.1",
14808
14816
  args: [
14809
14817
  "--acp"
14810
14818
  ]
@@ -14946,7 +14954,7 @@ Requirements:
14946
14954
  {
14947
14955
  id: "cursor",
14948
14956
  name: "Cursor",
14949
- version: "2026.08.11",
14957
+ version: "2026.08.31",
14950
14958
  description: "Cursor's coding agent",
14951
14959
  icon: "https://cdn.agentclientprotocol.com/registry/v1/latest/cursor.svg",
14952
14960
  distribution: {
@@ -14976,48 +14984,48 @@ Requirements:
14976
14984
  {
14977
14985
  id: "devin",
14978
14986
  name: "Devin",
14979
- version: "3000.6.7",
14987
+ version: "3000.6.14",
14980
14988
  description: "Devin CLI coding agent by Cognition",
14981
14989
  icon: "https://cdn.agentclientprotocol.com/registry/v1/latest/devin.svg",
14982
14990
  distribution: {
14983
14991
  binary: {
14984
14992
  "darwin-aarch64": {
14985
- archive: "https://static.devin.ai/cli/3000.6.7/devin-3000.6.7-aarch64-apple-darwin.tar.gz",
14993
+ archive: "https://static.devin.ai/cli/3000.6.14/devin-3000.6.14-aarch64-apple-darwin.tar.gz",
14986
14994
  cmd: "./bin/devin",
14987
14995
  args: [
14988
14996
  "acp"
14989
14997
  ]
14990
14998
  },
14991
14999
  "darwin-x86_64": {
14992
- archive: "https://static.devin.ai/cli/3000.6.7/devin-3000.6.7-x86_64-apple-darwin.tar.gz",
15000
+ archive: "https://static.devin.ai/cli/3000.6.14/devin-3000.6.14-x86_64-apple-darwin.tar.gz",
14993
15001
  cmd: "./bin/devin",
14994
15002
  args: [
14995
15003
  "acp"
14996
15004
  ]
14997
15005
  },
14998
15006
  "linux-aarch64": {
14999
- archive: "https://static.devin.ai/cli/3000.6.7/devin-3000.6.7-aarch64-unknown-linux.tar.gz",
15007
+ archive: "https://static.devin.ai/cli/3000.6.14/devin-3000.6.14-aarch64-unknown-linux.tar.gz",
15000
15008
  cmd: "./bin/devin",
15001
15009
  args: [
15002
15010
  "acp"
15003
15011
  ]
15004
15012
  },
15005
15013
  "linux-x86_64": {
15006
- archive: "https://static.devin.ai/cli/3000.6.7/devin-3000.6.7-x86_64-unknown-linux.tar.gz",
15014
+ archive: "https://static.devin.ai/cli/3000.6.14/devin-3000.6.14-x86_64-unknown-linux.tar.gz",
15007
15015
  cmd: "./bin/devin",
15008
15016
  args: [
15009
15017
  "acp"
15010
15018
  ]
15011
15019
  },
15012
15020
  "windows-aarch64": {
15013
- archive: "https://static.devin.ai/cli/3000.6.7/devin-3000.6.7-aarch64-pc-windows.zip",
15021
+ archive: "https://static.devin.ai/cli/3000.6.14/devin-3000.6.14-aarch64-pc-windows.zip",
15014
15022
  cmd: "./bin\\devin.exe",
15015
15023
  args: [
15016
15024
  "acp"
15017
15025
  ]
15018
15026
  },
15019
15027
  "windows-x86_64": {
15020
- archive: "https://static.devin.ai/cli/3000.6.7/devin-3000.6.7-x86_64-pc-windows.zip",
15028
+ archive: "https://static.devin.ai/cli/3000.6.14/devin-3000.6.14-x86_64-pc-windows.zip",
15021
15029
  cmd: "./bin\\devin.exe",
15022
15030
  args: [
15023
15031
  "acp"
@@ -15029,12 +15037,12 @@ Requirements:
15029
15037
  {
15030
15038
  id: "dimcode",
15031
15039
  name: "DimCode",
15032
- version: "0.3.22",
15040
+ version: "0.3.28",
15033
15041
  description: "A coding agent that puts leading models at your command.",
15034
15042
  icon: "https://cdn.agentclientprotocol.com/registry/v1/latest/dimcode.svg",
15035
15043
  distribution: {
15036
15044
  npx: {
15037
- package: "dimcode@0.3.22",
15045
+ package: "dimcode@0.3.28",
15038
15046
  args: [
15039
15047
  "acp"
15040
15048
  ]
@@ -15044,12 +15052,12 @@ Requirements:
15044
15052
  {
15045
15053
  id: "dirac",
15046
15054
  name: "Dirac",
15047
- version: "0.5.2",
15055
+ version: "0.5.6",
15048
15056
  description: "Reduces API costs by more than 50%, produces better and faster work. Uses Hash anchored parallel edits, AST manipulation and a whole lot of neat optimizations. Fully Open Source.",
15049
15057
  icon: "https://cdn.agentclientprotocol.com/registry/v1/latest/dirac.svg",
15050
15058
  distribution: {
15051
15059
  npx: {
15052
- package: "dirac-cli@0.5.2",
15060
+ package: "dirac-cli@0.5.6",
15053
15061
  args: [
15054
15062
  "--acp"
15055
15063
  ]
@@ -15059,12 +15067,12 @@ Requirements:
15059
15067
  {
15060
15068
  id: "factory-droid",
15061
15069
  name: "Factory Droid",
15062
- version: "0.208.2",
15070
+ version: "0.211.0",
15063
15071
  description: "Factory Droid - AI coding agent powered by Factory AI",
15064
15072
  icon: "https://cdn.agentclientprotocol.com/registry/v1/latest/factory-droid.svg",
15065
15073
  distribution: {
15066
15074
  npx: {
15067
- package: "droid@0.208.2",
15075
+ package: "droid@0.211.0",
15068
15076
  args: [
15069
15077
  "exec",
15070
15078
  "--output-format",
@@ -15098,12 +15106,12 @@ Requirements:
15098
15106
  {
15099
15107
  id: "gemini",
15100
15108
  name: "Gemini CLI",
15101
- version: "0.57.0",
15109
+ version: "0.58.0",
15102
15110
  description: "Google's official CLI for Gemini",
15103
15111
  icon: "https://cdn.agentclientprotocol.com/registry/v1/latest/gemini.svg",
15104
15112
  distribution: {
15105
15113
  npx: {
15106
- package: "@google/gemini-cli@0.57.0",
15114
+ package: "@google/gemini-cli@0.58.0",
15107
15115
  args: [
15108
15116
  "--acp"
15109
15117
  ]
@@ -15128,19 +15136,19 @@ Requirements:
15128
15136
  {
15129
15137
  id: "glm-acp-agent",
15130
15138
  name: "GLM Agent",
15131
- version: "1.7.0",
15139
+ version: "1.8.0",
15132
15140
  description: "ACP agent powered by Zhipu AI's GLM Coding Plan models (glm-5.1, glm-5-turbo, glm-4.7, glm-4.5-air). Supports streaming, tool calls, mid-session model switching, image input via Z.AI Coding Plan Vision MCP, and session load/fork/resume with on-disk persistence.",
15133
15141
  icon: "https://cdn.agentclientprotocol.com/registry/v1/latest/glm-acp-agent.svg",
15134
15142
  distribution: {
15135
15143
  npx: {
15136
- package: "glm-acp-agent@1.7.0"
15144
+ package: "glm-acp-agent@1.8.0"
15137
15145
  }
15138
15146
  }
15139
15147
  },
15140
15148
  {
15141
15149
  id: "goose",
15142
15150
  name: "goose",
15143
- version: "1.48.0",
15151
+ version: "1.49.0",
15144
15152
  description: "A local, extensible, open source AI agent that automates engineering tasks",
15145
15153
  icon: "https://cdn.agentclientprotocol.com/registry/v1/latest/goose.svg",
15146
15154
  distribution: {
@@ -15158,13 +15166,13 @@ Requirements:
15158
15166
  {
15159
15167
  id: "harn",
15160
15168
  name: "Harn",
15161
- version: "0.10.124",
15169
+ version: "0.10.128",
15162
15170
  description: "Harn runs .harn agent pipelines as a native ACP coding agent over stdio.",
15163
15171
  icon: "https://cdn.agentclientprotocol.com/registry/v1/latest/harn.svg",
15164
15172
  distribution: {
15165
15173
  binary: {
15166
15174
  "darwin-aarch64": {
15167
- archive: "https://github.com/burin-labs/harn/releases/download/v0.10.124/harn-aarch64-apple-darwin.tar.gz",
15175
+ archive: "https://github.com/burin-labs/harn/releases/download/v0.10.128/harn-aarch64-apple-darwin.tar.gz",
15168
15176
  cmd: "./harn",
15169
15177
  args: [
15170
15178
  "serve",
@@ -15172,7 +15180,7 @@ Requirements:
15172
15180
  ]
15173
15181
  },
15174
15182
  "darwin-x86_64": {
15175
- archive: "https://github.com/burin-labs/harn/releases/download/v0.10.124/harn-x86_64-apple-darwin.tar.gz",
15183
+ archive: "https://github.com/burin-labs/harn/releases/download/v0.10.128/harn-x86_64-apple-darwin.tar.gz",
15176
15184
  cmd: "./harn",
15177
15185
  args: [
15178
15186
  "serve",
@@ -15180,7 +15188,7 @@ Requirements:
15180
15188
  ]
15181
15189
  },
15182
15190
  "linux-aarch64": {
15183
- archive: "https://github.com/burin-labs/harn/releases/download/v0.10.124/harn-aarch64-unknown-linux-gnu.tar.gz",
15191
+ archive: "https://github.com/burin-labs/harn/releases/download/v0.10.128/harn-aarch64-unknown-linux-gnu.tar.gz",
15184
15192
  cmd: "./harn",
15185
15193
  args: [
15186
15194
  "serve",
@@ -15188,7 +15196,7 @@ Requirements:
15188
15196
  ]
15189
15197
  },
15190
15198
  "linux-x86_64": {
15191
- archive: "https://github.com/burin-labs/harn/releases/download/v0.10.124/harn-x86_64-unknown-linux-gnu.tar.gz",
15199
+ archive: "https://github.com/burin-labs/harn/releases/download/v0.10.128/harn-x86_64-unknown-linux-gnu.tar.gz",
15192
15200
  cmd: "./harn",
15193
15201
  args: [
15194
15202
  "serve",
@@ -15196,7 +15204,7 @@ Requirements:
15196
15204
  ]
15197
15205
  },
15198
15206
  "windows-x86_64": {
15199
- archive: "https://github.com/burin-labs/harn/releases/download/v0.10.124/harn-x86_64-pc-windows-msvc.zip",
15207
+ archive: "https://github.com/burin-labs/harn/releases/download/v0.10.128/harn-x86_64-pc-windows-msvc.zip",
15200
15208
  cmd: "harn.exe",
15201
15209
  args: [
15202
15210
  "serve",
@@ -15209,7 +15217,7 @@ Requirements:
15209
15217
  {
15210
15218
  id: "junie",
15211
15219
  name: "Junie",
15212
- version: "3032.2.0",
15220
+ version: "3123.3.0",
15213
15221
  description: "AI Coding Agent by JetBrains",
15214
15222
  icon: "https://cdn.agentclientprotocol.com/registry/v1/latest/junie.svg",
15215
15223
  distribution: {
@@ -15227,47 +15235,47 @@ Requirements:
15227
15235
  {
15228
15236
  id: "kilo",
15229
15237
  name: "Kilo",
15230
- version: "7.5.6",
15238
+ version: "7.5.9",
15231
15239
  description: "The open source coding agent",
15232
15240
  icon: "https://cdn.agentclientprotocol.com/registry/v1/latest/kilo.svg",
15233
15241
  distribution: {
15234
15242
  npx: {
15235
- package: "@kilocode/cli@7.5.6",
15243
+ package: "@kilocode/cli@7.5.9",
15236
15244
  args: [
15237
15245
  "acp"
15238
15246
  ]
15239
15247
  },
15240
15248
  binary: {
15241
15249
  "darwin-aarch64": {
15242
- archive: "https://github.com/Kilo-Org/kilocode/releases/download/v7.5.6/kilo-darwin-arm64.zip",
15250
+ archive: "https://github.com/Kilo-Org/kilocode/releases/download/v7.5.9/kilo-darwin-arm64.zip",
15243
15251
  cmd: "./kilo",
15244
15252
  args: [
15245
15253
  "acp"
15246
15254
  ]
15247
15255
  },
15248
15256
  "darwin-x86_64": {
15249
- archive: "https://github.com/Kilo-Org/kilocode/releases/download/v7.5.6/kilo-darwin-x64.zip",
15257
+ archive: "https://github.com/Kilo-Org/kilocode/releases/download/v7.5.9/kilo-darwin-x64.zip",
15250
15258
  cmd: "./kilo",
15251
15259
  args: [
15252
15260
  "acp"
15253
15261
  ]
15254
15262
  },
15255
15263
  "linux-aarch64": {
15256
- archive: "https://github.com/Kilo-Org/kilocode/releases/download/v7.5.6/kilo-linux-arm64.tar.gz",
15264
+ archive: "https://github.com/Kilo-Org/kilocode/releases/download/v7.5.9/kilo-linux-arm64.tar.gz",
15257
15265
  cmd: "./kilo",
15258
15266
  args: [
15259
15267
  "acp"
15260
15268
  ]
15261
15269
  },
15262
15270
  "linux-x86_64": {
15263
- archive: "https://github.com/Kilo-Org/kilocode/releases/download/v7.5.6/kilo-linux-x64.tar.gz",
15271
+ archive: "https://github.com/Kilo-Org/kilocode/releases/download/v7.5.9/kilo-linux-x64.tar.gz",
15264
15272
  cmd: "./kilo",
15265
15273
  args: [
15266
15274
  "acp"
15267
15275
  ]
15268
15276
  },
15269
15277
  "windows-x86_64": {
15270
- archive: "https://github.com/Kilo-Org/kilocode/releases/download/v7.5.6/kilo-windows-x64.zip",
15278
+ archive: "https://github.com/Kilo-Org/kilocode/releases/download/v7.5.9/kilo-windows-x64.zip",
15271
15279
  cmd: "./kilo.exe",
15272
15280
  args: [
15273
15281
  "acp"
@@ -15279,7 +15287,7 @@ Requirements:
15279
15287
  {
15280
15288
  id: "kimi",
15281
15289
  name: "Kimi CLI",
15282
- version: "1.49.0",
15290
+ version: "1.50.0",
15283
15291
  description: "Moonshot AI's coding assistant",
15284
15292
  icon: "https://cdn.agentclientprotocol.com/registry/v1/latest/kimi.svg",
15285
15293
  distribution: {
@@ -15364,7 +15372,7 @@ Requirements:
15364
15372
  {
15365
15373
  id: "opencode",
15366
15374
  name: "OpenCode",
15367
- version: "1.18.25",
15375
+ version: "1.18.27",
15368
15376
  description: "The open source coding agent",
15369
15377
  icon: "https://cdn.agentclientprotocol.com/registry/v1/latest/opencode.svg",
15370
15378
  distribution: {
@@ -15462,12 +15470,12 @@ Requirements:
15462
15470
  {
15463
15471
  id: "qwen-code",
15464
15472
  name: "Qwen Code",
15465
- version: "0.22.3",
15473
+ version: "0.23.0",
15466
15474
  description: "Alibaba's Qwen coding assistant",
15467
15475
  icon: "https://cdn.agentclientprotocol.com/registry/v1/latest/qwen-code.svg",
15468
15476
  distribution: {
15469
15477
  npx: {
15470
- package: "@qwen-code/qwen-code@0.22.3",
15478
+ package: "@qwen-code/qwen-code@0.23.0",
15471
15479
  args: [
15472
15480
  "--acp",
15473
15481
  "--experimental-skills"
@@ -23346,13 +23354,12 @@ ${context2.authorReply.trim()}
23346
23354
  ...right2
23347
23355
  ];
23348
23356
  };
23349
- const isBenchmarkingIpv4 = ([first2, second]) => first2 === 198 && (second === 18 || second === 19);
23350
23357
  const classifyIpv4 = (octets) => {
23351
23358
  const [first2, second, third, fourth] = octets;
23352
23359
  if (first2 === 127) return "loopback";
23353
23360
  if (first2 === 10 || first2 === 172 && second >= 16 && second <= 31) return "private-lan";
23354
23361
  if (first2 === 192 && second === 168) return "private-lan";
23355
- const prohibited = first2 === 0 || first2 >= 224 || first2 === 100 && second >= 64 && second <= 127 || first2 === 169 && second === 254 || first2 === 192 && second === 0 && third === 0 || first2 === 192 && second === 0 && third === 2 || isBenchmarkingIpv4(octets) || first2 === 198 && second === 51 && third === 100 || first2 === 203 && second === 0 && third === 113 || first2 === 255 && second === 255 && third === 255 && fourth === 255;
23362
+ const prohibited = first2 === 0 || first2 >= 224 || first2 === 100 && second >= 64 && second <= 127 || first2 === 169 && second === 254 || first2 === 192 && second === 0 && third === 0 || first2 === 192 && second === 0 && third === 2 || first2 === 198 && (second === 18 || second === 19) || first2 === 198 && second === 51 && third === 100 || first2 === 203 && second === 0 && third === 113 || first2 === 255 && second === 255 && third === 255 && fourth === 255;
23356
23363
  return prohibited ? "prohibited" : "public";
23357
23364
  };
23358
23365
  const mappedIpv4 = (segments) => {
@@ -23397,6 +23404,15 @@ ${context2.authorReply.trim()}
23397
23404
  plainTextBytes: 64 * 1024,
23398
23405
  maxCompressedBytes: 1024 * 1024
23399
23406
  };
23407
+ const FILE_PREVIEW_LOCAL_IPC_RESPONSE_LIMIT_BYTES = 16 * 1024 * 1024;
23408
+ const FILE_PREVIEW_LOCAL_ENVELOPE_BYTES = 64 * 1024;
23409
+ const FILE_PREVIEW_LOCAL_PAYLOAD_BUDGET_BYTES = FILE_PREVIEW_LOCAL_IPC_RESPONSE_LIMIT_BYTES - FILE_PREVIEW_LOCAL_ENVELOPE_BYTES;
23410
+ const FILE_PREVIEW_V3_LOCAL_LIMITS = {
23411
+ maxTextBytes: FILE_PREVIEW_LOCAL_PAYLOAD_BUDGET_BYTES,
23412
+ maxBinaryBytes: Math.floor(FILE_PREVIEW_LOCAL_PAYLOAD_BUDGET_BYTES * 3 / 4),
23413
+ plainTextBytes: FILE_PREVIEW_LOCAL_PAYLOAD_BUDGET_BYTES,
23414
+ maxCompressedBytes: FILE_PREVIEW_LOCAL_PAYLOAD_BUDGET_BYTES
23415
+ };
23400
23416
  const FilePreviewV3DigestSchema = string$1().regex(/^sha256:[0-9a-f]{64}$/u);
23401
23417
  const FilePreviewV3TextFormatSchema = object$1({
23402
23418
  bom: boolean().optional(),
@@ -104783,7 +104799,7 @@ ${value}`;
104783
104799
  await this.machine.init();
104784
104800
  }
104785
104801
  options.signal?.throwIfAborted();
104786
- await this.machine.updateAcpCapabilities(configId, cliType, agentType, modes, models, configOptions, availableCommands, sessionFork, sourceVersion, modelReasoningEfforts, acknowledgedSteer, options);
104802
+ return await this.machine.updateAcpCapabilities(configId, cliType, agentType, modes, models, configOptions, availableCommands, sessionFork, sourceVersion, modelReasoningEfforts, acknowledgedSteer, options);
104787
104803
  }
104788
104804
  async getAcpCapabilities(machineId, configId) {
104789
104805
  if (!this.machine) {
@@ -105962,6 +105978,7 @@ ${value}`;
105962
105978
  modes: entry.modes,
105963
105979
  models: entry.models,
105964
105980
  configOptions: entry.configOptions,
105981
+ modelReasoningEfforts: entry.modelReasoningEfforts,
105965
105982
  availableCommands: entry.availableCommands,
105966
105983
  sessionFork: entry.sessionFork,
105967
105984
  acknowledgedSteer: entry.acknowledgedSteer,
@@ -106057,7 +106074,7 @@ ${value}`;
106057
106074
  ]
106058
106075
  }))[capabilityKey];
106059
106076
  if (existing && serializeAcpCapabilityWithoutFetchTime(existing) === serializeAcpCapabilityWithoutFetchTime(entry)) {
106060
- return;
106077
+ return existing;
106061
106078
  }
106062
106079
  options.signal?.throwIfAborted();
106063
106080
  const changed = writeMachineFlockRowToFlock(handle.flock, {
@@ -106072,6 +106089,7 @@ ${value}`;
106072
106089
  await handle.syncOnce().catch(() => void 0);
106073
106090
  }
106074
106091
  }
106092
+ return entry;
106075
106093
  }
106076
106094
  async getAcpCapabilities(configId) {
106077
106095
  const key2 = getAcpCapabilityCacheKey(configId);
@@ -106478,10 +106496,7 @@ ${value}`;
106478
106496
  "browser_address",
106479
106497
  "share_action"
106480
106498
  ]),
106481
- targetClass: _enum$1([
106482
- "loopback",
106483
- "private_lan"
106484
- ]),
106499
+ targetClass: literal$1("loopback"),
106485
106500
  target: PreviewTargetSchema,
106486
106501
  confirmedByUserId: string$1().trim().min(1),
106487
106502
  confirmedAt: number$4().int().nonnegative()
@@ -114790,6 +114805,7 @@ ${incoming}`).output;
114790
114805
  modelUsage: record$1(string$1(), ModelUsageSchema).optional()
114791
114806
  });
114792
114807
  const RateLimitWindowSchema = object$1({
114808
+ label: string$1().optional(),
114793
114809
  usedPercent: number$4().min(0).max(100),
114794
114810
  windowDurationSeconds: number$4().nonnegative().nullable(),
114795
114811
  resetsAtEpochSeconds: number$4().int().positive().nullable()
@@ -126155,9 +126171,9 @@ ${error2.message}` : execaMessage;
126155
126171
  highWaterMark
126156
126172
  }));
126157
126173
  }
126158
- const version$7 = "1.6.2";
126174
+ const version$7 = "1.10.0";
126159
126175
  const dependencies$1 = {
126160
- "@openai/codex": "^0.151.0"
126176
+ "@openai/codex": "^0.153.4"
126161
126177
  };
126162
126178
  const codexPackageJson = {
126163
126179
  version: version$7,
@@ -126267,37 +126283,37 @@ ${error2.message}` : execaMessage;
126267
126283
  version: version$3,
126268
126284
  artifacts: artifacts$1
126269
126285
  };
126270
- const version$2 = "0.151.0";
126286
+ const version$2 = "0.153.4";
126271
126287
  const artifacts = {
126272
126288
  "darwin-arm64": {
126273
126289
  "fileName": "codex-package-aarch64-apple-darwin.tar.zst",
126274
- "sha256": "c7414e579bb36eba0c8f6cb45fe0ce4cd2724deeb0c3ec3a08c1babfb59ec6e6",
126275
- "size": 84213361
126290
+ "sha256": "be8a1a895533664ba6f2f11bc30ac8dae3b8ce37a152684229148ad9a8c7d269",
126291
+ "size": 80691565
126276
126292
  },
126277
126293
  "darwin-x64": {
126278
126294
  "fileName": "codex-package-x86_64-apple-darwin.tar.zst",
126279
- "sha256": "41cd66b0ba1279213d2d1e17fef0fc30421e524406cb5954d84d568688c8b118",
126280
- "size": 92568101
126295
+ "sha256": "a673331d8a21023dca1ca66443c1a41421a3105e587339ea7f81a06a56d8dd9b",
126296
+ "size": 88316449
126281
126297
  },
126282
126298
  "linux-arm64": {
126283
126299
  "fileName": "codex-package-aarch64-unknown-linux-musl.tar.zst",
126284
- "sha256": "3ae57da8bc5f8fd065f0352cc14cb10e02be779186bdac989ad0e2622d8cacbb",
126285
- "size": 89411447
126300
+ "sha256": "01ce0d1c38aca1ccc0c67f7612160cef5d820b452e1093d3a6d28597bfebfdb6",
126301
+ "size": 85851511
126286
126302
  },
126287
126303
  "linux-x64": {
126288
126304
  "fileName": "codex-package-x86_64-unknown-linux-musl.tar.zst",
126289
- "sha256": "e2dbacd77547f2d3afb3b1864f92926d936c12d8b822bbac98a766d943656494",
126290
- "size": 95540316
126305
+ "sha256": "2b5c00df5758d014c79910fdffed43f29a6cae73f37e92d5ec216543ca53e79e",
126306
+ "size": 92109110
126291
126307
  },
126292
126308
  "win32-arm64": {
126293
126309
  "fileName": "codex-package-aarch64-pc-windows-msvc.tar.zst",
126294
- "sha256": "bfd73f646fe3c3335049617e35a85e04ecf42609fc591e2b4a246e312fd41cfd",
126295
- "size": 98552597
126310
+ "sha256": "92ff19d1012c1934bb1f9c10bfe15ac9f0af308d2de15b91dfc0f59faf8a77ba",
126311
+ "size": 94420871
126296
126312
  },
126297
126313
  "win32-x64": {
126298
126314
  "fileName": "codex-package-x86_64-pc-windows-msvc.tar.zst",
126299
- "sha256": "02338bb9b9c9d991fed3d0446cfcb4d54ce9a271e70097e9f4c1e099ba304f3c",
126300
- "size": 106201360
126315
+ "sha256": "f06e52c803cb74fb5fe6d42dc0c3c53ecbbf6822ad0c9d0239a0304165209f29",
126316
+ "size": 102002466
126301
126317
  }
126302
126318
  };
126303
126319
  const codexRuntimeManifestJson = {
@@ -127679,7 +127695,8 @@ ${error2.message}` : execaMessage;
127679
127695
  return managedRuntimeVersion ? `builtin-grok-acp:${GROK_ACP_ADAPTER_VERSION}+official-grok:${managedRuntimeVersion}` : `${BUILTIN_GROK_CAPABILITY_SOURCE_VERSION}${runtimeOverrideSuffix}`;
127680
127696
  }
127681
127697
  if (input2.agentType === "deepseek") {
127682
- return DEEPSEEK_HARNESS_CAPABILITY_SOURCE_VERSION;
127698
+ const baseUrl = input2.env?.[DEEPSEEK_HARNESS_BASE_URL_ENV];
127699
+ return baseUrl?.trim() ? `${DEEPSEEK_HARNESS_CAPABILITY_SOURCE_VERSION}+endpoint:${createHash("sha256").update(baseUrl).digest("hex").slice(0, 12)}` : DEEPSEEK_HARNESS_CAPABILITY_SOURCE_VERSION;
127683
127700
  }
127684
127701
  }
127685
127702
  return `builtin:${input2.agentType}:unknown`;
@@ -129202,6 +129219,7 @@ ${fallbackStderrTail}` : errorMessage2;
129202
129219
  agentType: options.agentType,
129203
129220
  customAcp: options.customAcp,
129204
129221
  runtimeOverrides: options.runtimeOverrides,
129222
+ env: options.env,
129205
129223
  extraArgs: options.extraArgs,
129206
129224
  onManagedRuntimeProgress: options.onManagedRuntimeProgress ? (event) => {
129207
129225
  if (!options.signal?.aborted) {
@@ -137672,7 +137690,8 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
137672
137690
  cliType: config2.agentCliType,
137673
137691
  agentType: config2.agentType,
137674
137692
  customAcp: config2.customAcp,
137675
- runtimeOverrides: config2.runtimeOverrides
137693
+ runtimeOverrides: config2.runtimeOverrides,
137694
+ env: config2.env
137676
137695
  });
137677
137696
  const existing = await this.deps.workspaceDocument.getAcpCapabilities(this.deps.machineId, agentConfigId);
137678
137697
  const availableCommands = capabilities.availableCommands !== void 0 ? capabilities.availableCommands : existing?.sourceVersion === sourceVersion ? existing.availableCommands : void 0;
@@ -137927,11 +137946,12 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
137927
137946
  }
137928
137947
  });
137929
137948
  options.signal?.throwIfAborted();
137930
- await this.deps.workspaceDocument.updateAcpCapabilities(this.deps.machineId, message.configId, message.cliType, message.agentType, modes, models, configOptions, availableCommands, sessionFork, capabilitySourceVersion ?? getAcpCapabilitySourceVersion({
137949
+ const capability = await this.deps.workspaceDocument.updateAcpCapabilities(this.deps.machineId, message.configId, message.cliType, message.agentType, modes, models, configOptions, availableCommands, sessionFork, capabilitySourceVersion ?? getAcpCapabilitySourceVersion({
137931
137950
  cliType: message.cliType,
137932
137951
  agentType: message.agentType,
137933
137952
  customAcp: message.customAcp,
137934
- runtimeOverrides: message.runtimeOverrides
137953
+ runtimeOverrides: message.runtimeOverrides,
137954
+ env: message.env
137935
137955
  }), modelReasoningEfforts, acknowledgedSteer, {
137936
137956
  signal: options.signal
137937
137957
  });
@@ -137950,6 +137970,7 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
137950
137970
  category: opt.category,
137951
137971
  optionCount: opt.options.length
137952
137972
  })),
137973
+ capability,
137953
137974
  availableCommands
137954
137975
  };
137955
137976
  } catch (error2) {
@@ -149909,6 +149930,11 @@ The postId is ${normalizedFeedbackPostId}. Use the feedback-progress-reporter sk
149909
149930
  }
149910
149931
  }
149911
149932
  const PRICE_DATA = {
149933
+ "gpt-6-astra": {
149934
+ inputCostPerToken: 1e-5,
149935
+ cacheReadInputTokenCost: 1e-6,
149936
+ outputCostPerToken: 5e-5
149937
+ },
149912
149938
  "gpt-5.6": {
149913
149939
  inputCostPerToken: 5e-6,
149914
149940
  cacheReadInputTokenCost: 5e-7,
@@ -161051,6 +161077,10 @@ ${entry.text}`).join("\n\n");
161051
161077
  }
161052
161078
  limits;
161053
161079
  async previewFile(request2, options = {}) {
161080
+ const limits = options.sameMachine ? {
161081
+ ...FILE_PREVIEW_V3_LOCAL_LIMITS,
161082
+ ...this.deps.limits
161083
+ } : this.limits;
161054
161084
  const workspace = await this.deps.resolveWorkspace(request2.sessionId);
161055
161085
  if (!workspace.ok) {
161056
161086
  return filePreviewV3Error(workspace.code, {
@@ -161081,7 +161111,7 @@ ${entry.text}`).join("\n\n");
161081
161111
  }
161082
161112
  const resolved = resolution.resolved;
161083
161113
  const isImageByName = isBinaryImagePath(resolved.reportedPath);
161084
- const limitBytes = Math.min(isImageByName ? this.limits.maxBinaryBytes : this.limits.maxTextBytes, request2.maxBytes ?? Number.MAX_SAFE_INTEGER);
161114
+ const limitBytes = Math.min(isImageByName ? limits.maxBinaryBytes : limits.maxTextBytes, request2.maxBytes ?? Number.MAX_SAFE_INTEGER);
161085
161115
  if (resolved.sizeBytes > limitBytes) {
161086
161116
  return filePreviewV3Error("too_large", {
161087
161117
  message: "File is too large to preview.",
@@ -161134,23 +161164,32 @@ ${entry.text}`).join("\n\n");
161134
161164
  };
161135
161165
  }
161136
161166
  if (isImageByName || hasBinaryNul(bytes)) {
161137
- return this.binaryOk(resolved, bytes, digest);
161167
+ return this.binaryOk(resolved, bytes, digest, limits, options.sameMachine === true);
161138
161168
  }
161139
161169
  let text;
161140
161170
  try {
161141
161171
  text = decodeUtf8(bytes);
161142
161172
  } catch {
161143
- return this.binaryOk(resolved, bytes, digest);
161173
+ return this.binaryOk(resolved, bytes, digest, limits, options.sameMachine === true);
161144
161174
  }
161145
161175
  let content;
161146
161176
  try {
161147
- content = await this.encodeTextContent(bytes, text);
161177
+ content = await this.encodeTextContent(bytes, text, limits);
161148
161178
  } catch (error2) {
161149
161179
  return filePreviewV3Error("too_large", {
161150
161180
  message: formatErrorMessage(error2),
161151
161181
  path: resolved.reportedPath,
161152
161182
  sizeBytes: bytes.byteLength,
161153
- limitBytes: this.limits.maxCompressedBytes
161183
+ limitBytes: limits.maxCompressedBytes
161184
+ });
161185
+ }
161186
+ const payloadOverflow = options.sameMachine ? measurePayloadOverflow(content, FILE_PREVIEW_LOCAL_PAYLOAD_BUDGET_BYTES) : null;
161187
+ if (payloadOverflow !== null) {
161188
+ return filePreviewV3Error("too_large", {
161189
+ message: "File is too large to preview.",
161190
+ path: resolved.reportedPath,
161191
+ sizeBytes: bytes.byteLength,
161192
+ limitBytes: FILE_PREVIEW_LOCAL_PAYLOAD_BUDGET_BYTES
161154
161193
  });
161155
161194
  }
161156
161195
  return {
@@ -161168,13 +161207,22 @@ ${entry.text}`).join("\n\n");
161168
161207
  readonly: true
161169
161208
  };
161170
161209
  }
161171
- binaryOk(resolved, bytes, digest) {
161172
- if (bytes.byteLength > this.limits.maxBinaryBytes) {
161210
+ binaryOk(resolved, bytes, digest, limits, sameMachine) {
161211
+ if (bytes.byteLength > limits.maxBinaryBytes) {
161173
161212
  return filePreviewV3Error("too_large", {
161174
161213
  message: "Binary file is too large to preview.",
161175
161214
  path: resolved.reportedPath,
161176
161215
  sizeBytes: bytes.byteLength,
161177
- limitBytes: this.limits.maxBinaryBytes
161216
+ limitBytes: limits.maxBinaryBytes
161217
+ });
161218
+ }
161219
+ const data = Buffer.from(bytes).toString("base64");
161220
+ if (sameMachine && data.length > FILE_PREVIEW_LOCAL_PAYLOAD_BUDGET_BYTES) {
161221
+ return filePreviewV3Error("too_large", {
161222
+ message: "Binary file is too large to preview.",
161223
+ path: resolved.reportedPath,
161224
+ sizeBytes: bytes.byteLength,
161225
+ limitBytes: FILE_PREVIEW_LOCAL_PAYLOAD_BUDGET_BYTES
161178
161226
  });
161179
161227
  }
161180
161228
  const mimeType = getImageMimeTypeForPath(resolved.reportedPath);
@@ -161189,7 +161237,7 @@ ${entry.text}`).join("\n\n");
161189
161237
  kind: "binary",
161190
161238
  content: {
161191
161239
  encoding: "base64",
161192
- data: Buffer.from(bytes).toString("base64"),
161240
+ data,
161193
161241
  rawBytes: bytes.byteLength
161194
161242
  },
161195
161243
  mimeType: mimeType ?? "application/octet-stream",
@@ -161197,8 +161245,8 @@ ${entry.text}`).join("\n\n");
161197
161245
  readonly: true
161198
161246
  };
161199
161247
  }
161200
- async encodeTextContent(bytes, text) {
161201
- if (bytes.byteLength <= this.limits.plainTextBytes) {
161248
+ async encodeTextContent(bytes, text, limits) {
161249
+ if (bytes.byteLength <= limits.plainTextBytes) {
161202
161250
  return {
161203
161251
  encoding: "utf8-plain",
161204
161252
  text,
@@ -161206,8 +161254,8 @@ ${entry.text}`).join("\n\n");
161206
161254
  };
161207
161255
  }
161208
161256
  const compressed = await gzipAsync(bytes);
161209
- if (compressed.byteLength > this.limits.maxCompressedBytes) {
161210
- throw new Error(`Compressed preview payload exceeds ${this.limits.maxCompressedBytes} bytes.`);
161257
+ if (compressed.byteLength > limits.maxCompressedBytes) {
161258
+ throw new Error(`Compressed preview payload exceeds ${limits.maxCompressedBytes} bytes.`);
161211
161259
  }
161212
161260
  return {
161213
161261
  encoding: "utf8-gzip-base64",
@@ -161217,6 +161265,10 @@ ${entry.text}`).join("\n\n");
161217
161265
  };
161218
161266
  }
161219
161267
  }
161268
+ function measurePayloadOverflow(content, budgetBytes) {
161269
+ const encodedBytes = content.encoding === "utf8-plain" ? Buffer.byteLength(JSON.stringify(content.text), "utf8") : content.data.length;
161270
+ return encodedBytes > budgetBytes ? encodedBytes - budgetBytes : null;
161271
+ }
161220
161272
  async function readFileWithinLimit(absolutePath, limitBytes) {
161221
161273
  const handle = await open(absolutePath, "r");
161222
161274
  try {
@@ -162435,10 +162487,22 @@ ${entry.text}`).join("\n\n");
162435
162487
  try {
162436
162488
  const stat2 = fs__default$1.fstatSync(fd);
162437
162489
  if (!stat2.isFile()) return null;
162438
- const buffer2 = Buffer.alloc(maxBytes + 1);
162439
- const bytesRead = fs__default$1.readSync(fd, buffer2, 0, maxBytes + 1, 0);
162490
+ const readLimit = maxBytes + 1;
162491
+ let buffer2 = Buffer.alloc(Math.max(1, Math.min(readLimit, stat2.size + 1)));
162492
+ let bytesRead = 0;
162493
+ for (; ; ) {
162494
+ if (bytesRead >= readLimit) break;
162495
+ if (bytesRead === buffer2.length) {
162496
+ const grown = Buffer.alloc(Math.min(readLimit, buffer2.length * 2));
162497
+ buffer2.copy(grown, 0, 0, bytesRead);
162498
+ buffer2 = grown;
162499
+ }
162500
+ const read = fs__default$1.readSync(fd, buffer2, bytesRead, buffer2.length - bytesRead, bytesRead);
162501
+ if (read === 0) break;
162502
+ bytesRead += read;
162503
+ }
162440
162504
  const truncated = bytesRead > maxBytes;
162441
- const safeBytes = truncated ? maxBytes : bytesRead;
162505
+ const safeBytes = Math.min(bytesRead, maxBytes);
162442
162506
  const resolvedRelativePath = toProjectRelativePath(rootRealPath, targetRealPath);
162443
162507
  if (allowBinary && isBinaryImagePath(resolvedRelativePath)) {
162444
162508
  return {
@@ -165535,7 +165599,7 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
165535
165599
  }
165536
165600
  return trimmed2;
165537
165601
  };
165538
- const normalizeTarget = (target, policy) => {
165602
+ const normalizeTarget = (target) => {
165539
165603
  if (target.protocol !== "http" && target.protocol !== "https") {
165540
165604
  return {
165541
165605
  code: "invalid_protocol",
@@ -165559,24 +165623,17 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
165559
165623
  retryable: false
165560
165624
  };
165561
165625
  }
165562
- if (policy === "agent-candidate" && targetClass !== "loopback") {
165626
+ if (targetClass !== "loopback") {
165563
165627
  return {
165564
165628
  code: "host_not_loopback",
165565
165629
  message: `Preview target host must be loopback, got ${target.host}.`,
165566
165630
  retryable: false
165567
165631
  };
165568
165632
  }
165569
- if (policy === "user-approved" && targetClass !== "loopback" && targetClass !== "private-lan") {
165633
+ if (host !== "localhost" && require$$0$9.isIP(host) === 0) {
165570
165634
  return {
165571
- code: "host_not_private",
165572
- message: `Managed preview only accepts loopback or private LAN targets, got ${target.host}.`,
165573
- retryable: false
165574
- };
165575
- }
165576
- if (policy === "user-approved" && targetClass === "private-lan" && require$$0$9.isIP(host) === 0) {
165577
- return {
165578
- code: "target_resolution_failed",
165579
- message: "Private LAN hostnames are not supported yet. Enter the target IP address.",
165635
+ code: "host_not_loopback",
165636
+ message: `Preview target host must be a loopback address or "localhost", got ${target.host}.`,
165580
165637
  retryable: false
165581
165638
  };
165582
165639
  }
@@ -165759,7 +165816,7 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
165759
165816
  };
165760
165817
  }
165761
165818
  const session2 = await this.getSessionMeta(request2.sessionId);
165762
- const normalized = normalizeTarget(request2.target, "agent-candidate");
165819
+ const normalized = normalizeTarget(request2.target);
165763
165820
  const now2 = this.now();
165764
165821
  const baseCandidate = {
165765
165822
  status: "invalid",
@@ -165847,11 +165904,11 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
165847
165904
  };
165848
165905
  return this.failCreate(request2.sessionId, failure, now2, request2.target);
165849
165906
  }
165850
- const requestedTarget = normalizeTarget(request2.target, "user-approved");
165907
+ const requestedTarget = normalizeTarget(request2.target);
165851
165908
  if (isValidationFailure(requestedTarget)) {
165852
165909
  return this.failCreate(request2.sessionId, requestedTarget, now2, request2.target);
165853
165910
  }
165854
- const approvedTarget = normalizeTarget(request2.approval.target, "user-approved");
165911
+ const approvedTarget = normalizeTarget(request2.approval.target);
165855
165912
  const actualTargetClass = classifyBrowserHostname(requestedTarget.host);
165856
165913
  const approvedTargetClass = request2.approval.targetClass.replace("_", "-");
165857
165914
  if (isValidationFailure(approvedTarget) || actualTargetClass !== approvedTargetClass || !sameTargetOrigin(approvedTarget, requestedTarget)) {
@@ -165862,7 +165919,7 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
165862
165919
  };
165863
165920
  return this.failCreate(request2.sessionId, failure, now2, requestedTarget);
165864
165921
  }
165865
- const validation2 = await this.validateTargetForCreate(requestedTarget, "user-approved");
165922
+ const validation2 = await this.validateTargetForCreate(requestedTarget);
165866
165923
  if ("failure" in validation2) {
165867
165924
  return this.failCreate(request2.sessionId, validation2.failure, now2, requestedTarget);
165868
165925
  }
@@ -166028,7 +166085,7 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
166028
166085
  message: "Only the session initiator can open a managed local preview."
166029
166086
  };
166030
166087
  }
166031
- const validation2 = await this.validateTargetForCreate(request2.target, "user-approved");
166088
+ const validation2 = await this.validateTargetForCreate(request2.target);
166032
166089
  if ("failure" in validation2) {
166033
166090
  return {
166034
166091
  type: "session/preview-endpoint-acquire_response",
@@ -166153,8 +166210,8 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
166153
166210
  connection: revoked
166154
166211
  };
166155
166212
  }
166156
- async validateTargetForCreate(target, policy) {
166157
- const normalized = normalizeTarget(target, policy);
166213
+ async validateTargetForCreate(target) {
166214
+ const normalized = normalizeTarget(target);
166158
166215
  if (isValidationFailure(normalized)) {
166159
166216
  return {
166160
166217
  failure: normalized
@@ -172589,7 +172646,8 @@ ${escapeHtmlScriptContent(VISUAL_ANNOTATION_INSPECTOR_BROWSER_SCRIPT)}
172589
172646
  case "file/preview-local":
172590
172647
  await assertOwner(request2.params.sessionId);
172591
172648
  return await this.filePreviewService.previewFile(request2.params, {
172592
- allowArbitraryPaths: true
172649
+ allowArbitraryPaths: true,
172650
+ sameMachine: true
172593
172651
  });
172594
172652
  case "session/cancel": {
172595
172653
  const result = await this.executionService.cancelSession({
@@ -184787,7 +184845,8 @@ export PATH=${toSingleQuotedShellString(ghShimBinDir)}:"$PATH"
184787
184845
  cliType: config2.agentCliType,
184788
184846
  agentType: config2.agentType,
184789
184847
  customAcp: config2.customAcp,
184790
- runtimeOverrides: config2.runtimeOverrides
184848
+ runtimeOverrides: config2.runtimeOverrides,
184849
+ env: config2.env
184791
184850
  });
184792
184851
  signal.throwIfAborted();
184793
184852
  const worktreeTarget = this.resolveSessionWorktreeTarget(config2);
@@ -185114,6 +185173,7 @@ export PATH=${toSingleQuotedShellString(ghShimBinDir)}:"$PATH"
185114
185173
  agentType: config2.agentType,
185115
185174
  customAcp: config2.customAcp,
185116
185175
  runtimeOverrides: config2.runtimeOverrides,
185176
+ env: config2.env,
185117
185177
  onManagedRuntimeProgress: (event) => {
185118
185178
  config2.onPresencePhase?.("managed-runtime", formatManagedRuntimeProgressDetail(event));
185119
185179
  if (event.phase === "complete" && !managedRuntimeReadyLogged) {
@@ -222226,7 +222286,7 @@ ${page}${helpTipBottom}${choiceDescription}${ansiEscapes.cursorHide}`;
222226
222286
  data = createReviewBundleSnapshot(bundle);
222227
222287
  }
222228
222288
  const { injectReviewSnapshot } = await import("./chunks/index-VoI6Ds2-.js");
222229
- const { resolveReviewViewerTemplate } = await import("./chunks/review-viewer-CtZMff5T.js").then(async (m) => {
222289
+ const { resolveReviewViewerTemplate } = await import("./chunks/review-viewer-C_L6J8dc.js").then(async (m) => {
222230
222290
  await m.__tla;
222231
222291
  return m;
222232
222292
  });