nolo-cli 0.87.0-alpha.1 → 0.87.0-alpha.2

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 (28) hide show
  1. package/{agentDeleteCommand-RPQ3WNYP.js → agentDeleteCommand-XW2NHDTK.js} +1 -1
  2. package/{agentEmailCommands-B3IGU43E.js → agentEmailCommands-UI6XIGG7.js} +3 -3
  3. package/{agentListCommands-JJ4PR6XR.js → agentListCommands-3S6LZKWI.js} +1 -1
  4. package/{agentMachineCommands-JHEX5T4S.js → agentMachineCommands-XUDFW32H.js} +2 -2
  5. package/{agentRecordCommands-3VXZXFFS.js → agentRecordCommands-HGTP6T5A.js} +3 -3
  6. package/{agentRunCommand-7QM6GYYP.js → agentRunCommand-IFXPSZQT.js} +3 -3
  7. package/{agentRuntimeLocal-EVIFTFXA.js → agentRuntimeLocal-2W4KJIZE.js} +1 -1
  8. package/{appDeleteCommands-EW67CDHD.js → appDeleteCommands-NTG4P4DI.js} +1 -1
  9. package/{appDeployCommands-SUCPTFUI.js → appDeployCommands-O7CEHFFG.js} +1 -1
  10. package/{appDeployStatusCommands-EWYFXTCU.js → appDeployStatusCommands-7OKGI4WA.js} +1 -1
  11. package/{appGetCommands-ITOUFAY4.js → appGetCommands-F6IO3UMX.js} +1 -1
  12. package/{appListCommands-PYCZWROS.js → appListCommands-WNGR3Z4G.js} +1 -1
  13. package/{chunk-R5TSWLOO.js → chunk-6SP2OTHH.js} +3 -3
  14. package/{chunk-5F37RGTR.js → chunk-C3OIYB5O.js} +36 -9
  15. package/{chunk-542M2LFO.js → chunk-DUXL23YX.js} +127 -16
  16. package/{chunk-X2KZN5T7.js → chunk-MYYHP5MC.js} +2 -2
  17. package/{chunk-ZZ6MBROT.js → chunk-PDPKCLOQ.js} +1 -1
  18. package/{dialogCommands-K3Y6JVJH.js → dialogCommands-NL2LL3HN.js} +1 -1
  19. package/{docCreateCommands-U6RYQCCY.js → docCreateCommands-TSB6IGNK.js} +1 -1
  20. package/{docDeleteCommands-KQJTPJVD.js → docDeleteCommands-G7NU7ZDJ.js} +1 -1
  21. package/{docReadCommands-IY3PZ2E4.js → docReadCommands-UOBB3US4.js} +1 -1
  22. package/{docUpdateCommands-FDH5RH2H.js → docUpdateCommands-UWGB4IB7.js} +1 -1
  23. package/index.js +40 -40
  24. package/{machineCommands-KZDKNEHA.js → machineCommands-KQ23PZ34.js} +3 -3
  25. package/{machineWsRunDispatch-7QG7MSF3.js → machineWsRunDispatch-HHQAL54K.js} +3 -3
  26. package/package.json +1 -1
  27. package/{readlineWorkspace-RRHH6B4U.js → readlineWorkspace-IRWDPRMD.js} +3 -3
  28. package/{spaceCommands-KSZU2DEA.js → spaceCommands-AYINXM2I.js} +1 -1
@@ -15,7 +15,7 @@ import "./chunk-KQHGZWSV.js";
15
15
  import {
16
16
  Level
17
17
  } from "./chunk-UV6VISQJ.js";
18
- import "./chunk-542M2LFO.js";
18
+ import "./chunk-DUXL23YX.js";
19
19
  import "./chunk-ZNFJWEN4.js";
20
20
  import "./chunk-6LUUGZTS.js";
21
21
  import "./chunk-FMODTASJ.js";
@@ -8,8 +8,8 @@ import {
8
8
  } from "./chunk-JYYZCK2Z.js";
9
9
  import {
10
10
  runAgentCreateCommand
11
- } from "./chunk-ZZ6MBROT.js";
12
- import "./chunk-5F37RGTR.js";
11
+ } from "./chunk-PDPKCLOQ.js";
12
+ import "./chunk-C3OIYB5O.js";
13
13
  import "./chunk-EDZAJS6E.js";
14
14
  import "./chunk-QCZX4FTW.js";
15
15
  import "./chunk-EADNWBAZ.js";
@@ -69,7 +69,7 @@ import "./chunk-GNWFC7YT.js";
69
69
  import "./chunk-SHMFFPY3.js";
70
70
  import "./chunk-Q554LLSI.js";
71
71
  import "./chunk-KHCLMKZZ.js";
72
- import "./chunk-542M2LFO.js";
72
+ import "./chunk-DUXL23YX.js";
73
73
  import "./chunk-ZNFJWEN4.js";
74
74
  import "./chunk-6LUUGZTS.js";
75
75
  import "./chunk-FMODTASJ.js";
@@ -39,7 +39,7 @@ import {
39
39
  } from "./chunk-WKJC6UOK.js";
40
40
  import "./chunk-KQHGZWSV.js";
41
41
  import "./chunk-YYLHWIW6.js";
42
- import "./chunk-542M2LFO.js";
42
+ import "./chunk-DUXL23YX.js";
43
43
  import "./chunk-ZNFJWEN4.js";
44
44
  import "./chunk-6LUUGZTS.js";
45
45
  import "./chunk-FMODTASJ.js";
@@ -15,7 +15,7 @@ import {
15
15
  } from "./chunk-SPAQ4PVV.js";
16
16
  import "./chunk-NF64D32W.js";
17
17
  import "./chunk-3L2WKC3W.js";
18
- import "./chunk-542M2LFO.js";
18
+ import "./chunk-DUXL23YX.js";
19
19
  import "./chunk-ZNFJWEN4.js";
20
20
  import "./chunk-6LUUGZTS.js";
21
21
  import "./chunk-FMODTASJ.js";
@@ -90,7 +90,7 @@ async function defaultExecuteCli(provider, prompt, options) {
90
90
  return executeCli(provider, prompt, options);
91
91
  }
92
92
  async function forwardConnectorRunMessage(machine, message, pushMessage, executeCli, env, fetchImpl) {
93
- const { handleConnectorRunMessage } = await import("./machineWsRunDispatch-7QG7MSF3.js");
93
+ const { handleConnectorRunMessage } = await import("./machineWsRunDispatch-HHQAL54K.js");
94
94
  return handleConnectorRunMessage(message, pushMessage, executeCli, env, fetchImpl);
95
95
  }
96
96
  async function detectLaunchableMachineInfo() {
@@ -2,8 +2,8 @@ import {
2
2
  runAgentCreateCommand,
3
3
  runAgentReadCommand,
4
4
  runAgentUpdateCommand
5
- } from "./chunk-ZZ6MBROT.js";
6
- import "./chunk-5F37RGTR.js";
5
+ } from "./chunk-PDPKCLOQ.js";
6
+ import "./chunk-C3OIYB5O.js";
7
7
  import "./chunk-EDZAJS6E.js";
8
8
  import "./chunk-QCZX4FTW.js";
9
9
  import "./chunk-EADNWBAZ.js";
@@ -56,7 +56,7 @@ import "./chunk-GNWFC7YT.js";
56
56
  import "./chunk-SHMFFPY3.js";
57
57
  import "./chunk-Q554LLSI.js";
58
58
  import "./chunk-KHCLMKZZ.js";
59
- import "./chunk-542M2LFO.js";
59
+ import "./chunk-DUXL23YX.js";
60
60
  import "./chunk-ZNFJWEN4.js";
61
61
  import "./chunk-6LUUGZTS.js";
62
62
  import "./chunk-FMODTASJ.js";
@@ -8,12 +8,12 @@ import {
8
8
  resolveRunSettlementNote,
9
9
  resolveWorkflowReference,
10
10
  runAgentRunCommand
11
- } from "./chunk-R5TSWLOO.js";
11
+ } from "./chunk-6SP2OTHH.js";
12
12
  import "./chunk-S7Z2HMCN.js";
13
13
  import {
14
14
  parseAgentRunArgs
15
15
  } from "./chunk-JYYZCK2Z.js";
16
- import "./chunk-5F37RGTR.js";
16
+ import "./chunk-C3OIYB5O.js";
17
17
  import "./chunk-EDZAJS6E.js";
18
18
  import "./chunk-QCZX4FTW.js";
19
19
  import "./chunk-EADNWBAZ.js";
@@ -71,7 +71,7 @@ import "./chunk-GNWFC7YT.js";
71
71
  import "./chunk-SHMFFPY3.js";
72
72
  import "./chunk-Q554LLSI.js";
73
73
  import "./chunk-KHCLMKZZ.js";
74
- import "./chunk-542M2LFO.js";
74
+ import "./chunk-DUXL23YX.js";
75
75
  import "./chunk-ZNFJWEN4.js";
76
76
  import "./chunk-6LUUGZTS.js";
77
77
  import "./chunk-FMODTASJ.js";
@@ -19,7 +19,7 @@ import {
19
19
  resolveOpenAiCompatibleProviderConfig,
20
20
  runLocalAgentTurn,
21
21
  shouldCacheHybridRemoteRecord
22
- } from "./chunk-542M2LFO.js";
22
+ } from "./chunk-DUXL23YX.js";
23
23
  import "./chunk-ZNFJWEN4.js";
24
24
  import {
25
25
  buildPlatformChatCompletionRequest,
@@ -13,7 +13,7 @@ import "./chunk-2LX7X7HX.js";
13
13
  import "./chunk-OAJRZ35U.js";
14
14
  import "./chunk-SPAQ4PVV.js";
15
15
  import "./chunk-VF4K2QE6.js";
16
- import "./chunk-542M2LFO.js";
16
+ import "./chunk-DUXL23YX.js";
17
17
  import "./chunk-ZNFJWEN4.js";
18
18
  import "./chunk-6LUUGZTS.js";
19
19
  import "./chunk-FMODTASJ.js";
@@ -14,7 +14,7 @@ import "./chunk-2LX7X7HX.js";
14
14
  import "./chunk-OAJRZ35U.js";
15
15
  import "./chunk-SPAQ4PVV.js";
16
16
  import "./chunk-VF4K2QE6.js";
17
- import "./chunk-542M2LFO.js";
17
+ import "./chunk-DUXL23YX.js";
18
18
  import "./chunk-ZNFJWEN4.js";
19
19
  import "./chunk-6LUUGZTS.js";
20
20
  import "./chunk-FMODTASJ.js";
@@ -13,7 +13,7 @@ import "./chunk-2LX7X7HX.js";
13
13
  import "./chunk-OAJRZ35U.js";
14
14
  import "./chunk-SPAQ4PVV.js";
15
15
  import "./chunk-VF4K2QE6.js";
16
- import "./chunk-542M2LFO.js";
16
+ import "./chunk-DUXL23YX.js";
17
17
  import "./chunk-ZNFJWEN4.js";
18
18
  import "./chunk-6LUUGZTS.js";
19
19
  import "./chunk-FMODTASJ.js";
@@ -14,7 +14,7 @@ import "./chunk-2LX7X7HX.js";
14
14
  import "./chunk-OAJRZ35U.js";
15
15
  import "./chunk-SPAQ4PVV.js";
16
16
  import "./chunk-VF4K2QE6.js";
17
- import "./chunk-542M2LFO.js";
17
+ import "./chunk-DUXL23YX.js";
18
18
  import "./chunk-ZNFJWEN4.js";
19
19
  import "./chunk-6LUUGZTS.js";
20
20
  import "./chunk-FMODTASJ.js";
@@ -14,7 +14,7 @@ import "./chunk-2LX7X7HX.js";
14
14
  import "./chunk-OAJRZ35U.js";
15
15
  import "./chunk-SPAQ4PVV.js";
16
16
  import "./chunk-VF4K2QE6.js";
17
- import "./chunk-542M2LFO.js";
17
+ import "./chunk-DUXL23YX.js";
18
18
  import "./chunk-ZNFJWEN4.js";
19
19
  import "./chunk-6LUUGZTS.js";
20
20
  import "./chunk-FMODTASJ.js";
@@ -27,7 +27,7 @@ import {
27
27
  resolveLocalUserId,
28
28
  t,
29
29
  toolLabel
30
- } from "./chunk-5F37RGTR.js";
30
+ } from "./chunk-C3OIYB5O.js";
31
31
  import {
32
32
  createRunActivityTracker,
33
33
  popSingleQueueMessage,
@@ -111,7 +111,7 @@ import {
111
111
  LOCAL_AGENT_CONFIG_MISSING_CODE,
112
112
  LOCAL_TURN_ABORTED_CODE,
113
113
  readActionGate
114
- } from "./chunk-542M2LFO.js";
114
+ } from "./chunk-DUXL23YX.js";
115
115
  import {
116
116
  resolveAgentRuntimeConfigFromRecord
117
117
  } from "./chunk-5XV64MAU.js";
@@ -10413,7 +10413,7 @@ function findCollapsedPasteSpanAt(buffer, pos, opts = {}) {
10413
10413
  // packages/cli/client/agentRun.ts
10414
10414
  import { ulid } from "ulid";
10415
10415
  async function loadRunLocalAgentTurn() {
10416
- const { runLocalAgentTurn } = await import("./agentRuntimeLocal-EVIFTFXA.js");
10416
+ const { runLocalAgentTurn } = await import("./agentRuntimeLocal-2W4KJIZE.js");
10417
10417
  return runLocalAgentTurn;
10418
10418
  }
10419
10419
  var stripDebugNoise = (s) => s.replace(/\s*raw="[\s\S]*"/g, "").replace(/\s*raw=\S+/g, "").replace(/\s*headers=\[[^\]]*\]/g, "").replace(/\s*headers=\S+/g, "").trim();
@@ -160,7 +160,7 @@ import {
160
160
  resolveOpenAiCompatibleProviderConfig,
161
161
  shouldUseGeminiNativeToolRoute,
162
162
  summarizeToolArguments
163
- } from "./chunk-542M2LFO.js";
163
+ } from "./chunk-DUXL23YX.js";
164
164
  import {
165
165
  PlatformStreamInterruptedError,
166
166
  buildPlatformChatCompletionRequest,
@@ -9317,7 +9317,13 @@ var resolveCursorTransport = async (ctx) => {
9317
9317
 
9318
9318
  // packages/cli/client/providerResolution/devinTransport.ts
9319
9319
  var resolveDevinTransport = async (ctx) => {
9320
- const { agentConfig, apiKeyRefResolver } = ctx;
9320
+ const {
9321
+ agentConfig,
9322
+ apiKeyRefResolver,
9323
+ deps,
9324
+ buildProviderOpenAiTools,
9325
+ additionalToolNames
9326
+ } = ctx;
9321
9327
  if (isDevinOAuthAgent(agentConfig)) {
9322
9328
  const accessToken = await apiKeyRefResolver("devin");
9323
9329
  if (!accessToken) {
@@ -9326,17 +9332,31 @@ var resolveDevinTransport = async (ctx) => {
9326
9332
  );
9327
9333
  }
9328
9334
  const model = agentConfig.model || "swe-2-max";
9335
+ const { requestedToolNames, tools } = resolveProviderOpenAiToolBundle(
9336
+ agentConfig,
9337
+ deps.env,
9338
+ buildProviderOpenAiTools,
9339
+ additionalToolNames
9340
+ );
9341
+ const devinProvider = createDevinProvider({
9342
+ token: accessToken,
9343
+ model,
9344
+ fetchImpl: ctx.fetchImpl,
9345
+ tools,
9346
+ // agentConfig.temperature reaches every transport except the Devin one;
9347
+ // forward it so the agent form's sampling knob stops being a no-op here.
9348
+ // Left undefined it keeps the upstream-calibrated default.
9349
+ temperature: typeof agentConfig.temperature === "number" ? agentConfig.temperature : void 0
9350
+ });
9329
9351
  logLocalRuntimeDiagnostic("provider.selected", {
9330
9352
  agentKey: agentConfig.key,
9331
9353
  transport: "devin-connect",
9332
9354
  provider: "devin",
9333
9355
  model,
9334
- hasApiKey: true
9335
- });
9336
- const devinProvider = createDevinProvider({
9337
- token: accessToken,
9338
- model,
9339
- fetchImpl: ctx.fetchImpl
9356
+ hasApiKey: true,
9357
+ toolCount: tools.length,
9358
+ requestedToolNames,
9359
+ temperature: typeof agentConfig.temperature === "number" ? agentConfig.temperature : null
9340
9360
  });
9341
9361
  return {
9342
9362
  model,
@@ -12621,7 +12641,14 @@ function createCliLocalRuntimeAdapter(deps) {
12621
12641
  agentKey: agentConfig?.key,
12622
12642
  ...runtimeToolExecutionLimits
12623
12643
  });
12624
- const exposedAgentConfig = agentConfig ? { ...agentConfig, exposedToolNames: activeAgentToolNames } : agentConfig;
12644
+ const exposedAgentConfig = agentConfig ? {
12645
+ ...agentConfig,
12646
+ exposedToolNames: activeAgentToolNames,
12647
+ toolSurface: {
12648
+ ...agentConfig.toolSurface ?? {},
12649
+ finalToolNames: activeAgentToolNames
12650
+ }
12651
+ } : agentConfig;
12625
12652
  if (exposedAgentConfig && !deps.pastedTextStore) {
12626
12653
  preparedAgentRuntimeCache.set(cacheKey, {
12627
12654
  agentConfig: exposedAgentConfig,
@@ -20227,11 +20227,33 @@ function encodeDevinClientMetadata(token) {
20227
20227
  ]);
20228
20228
  }
20229
20229
  function encodeDevinChatMessage(msg) {
20230
- const source = msg.role === "assistant" ? 2 : 1;
20230
+ const source = msg.role === "assistant" ? 2 : msg.role === "tool" ? 4 : 1;
20231
20231
  return Buffer.concat([
20232
20232
  writeStringField(1, randomUUID2()),
20233
20233
  writeVarint(2, source),
20234
- writeStringField(3, msg.text)
20234
+ writeStringField(3, msg.text),
20235
+ ...(msg.toolCalls ?? []).map(
20236
+ (toolCall) => writeMessageField(
20237
+ 6,
20238
+ Buffer.concat([
20239
+ writeStringField(1, toolCall.id),
20240
+ writeStringField(2, toolCall.function.name),
20241
+ writeStringField(3, toolCall.function.arguments)
20242
+ ])
20243
+ )
20244
+ ),
20245
+ ...msg.toolCallId ? [writeStringField(7, msg.toolCallId)] : []
20246
+ ]);
20247
+ }
20248
+ function encodeDevinToolDefinition(tool) {
20249
+ const fn3 = tool.function ?? {};
20250
+ const name = typeof fn3.name === "string" ? fn3.name : "";
20251
+ const description = typeof fn3.description === "string" ? fn3.description : "";
20252
+ const parameters = fn3.parameters ?? {};
20253
+ return Buffer.concat([
20254
+ writeStringField(1, name),
20255
+ writeStringField(2, description.length > 6998 ? `${description.slice(0, 6995)}...` : description),
20256
+ writeStringField(3, JSON.stringify(parameters))
20235
20257
  ]);
20236
20258
  }
20237
20259
  function writeFixed64Field(fieldNum, val) {
@@ -20248,20 +20270,21 @@ function writeFixed64Field(fieldNum, val) {
20248
20270
  return Buffer.concat([Buffer.from(tagBytes), b]);
20249
20271
  }
20250
20272
  function buildCompletionConfig(params) {
20251
- const maxTokens = params?.maxTokens ?? 4096;
20273
+ const maxTokens = params?.maxTokens ?? 128e3;
20274
+ const maxNewlines = params?.maxNewlines ?? 400;
20252
20275
  const temp = params?.temperature ?? 0.4;
20253
20276
  const topP = params?.topP ?? 0.95;
20254
20277
  return Buffer.concat([
20255
20278
  writeVarint(1, 1),
20256
20279
  writeVarint(2, maxTokens),
20257
- writeVarint(3, 128e3),
20280
+ writeVarint(3, maxNewlines),
20258
20281
  writeFixed64Field(5, temp),
20259
20282
  writeVarint(7, 40),
20260
20283
  writeFixed64Field(8, topP)
20261
20284
  ]);
20262
20285
  }
20263
20286
  function buildGetChatMessageRequest(params) {
20264
- const { token, messages, model } = params;
20287
+ const { token, messages, model, tools = [], temperature } = params;
20265
20288
  const metadata = encodeDevinClientMetadata(token);
20266
20289
  let systemPrompt = "";
20267
20290
  const filteredMessages = [];
@@ -20271,14 +20294,19 @@ function buildGetChatMessageRequest(params) {
20271
20294
  systemPrompt = systemPrompt ? `${systemPrompt}
20272
20295
 
20273
20296
  ${text}` : text;
20274
- } else if (m.role === "user" || m.role === "assistant") {
20275
- filteredMessages.push({ role: m.role, text });
20297
+ } else if (m.role === "user" || m.role === "assistant" || m.role === "tool") {
20298
+ filteredMessages.push({
20299
+ role: m.role,
20300
+ text,
20301
+ ...m.tool_call_id ? { toolCallId: m.tool_call_id } : {},
20302
+ ...m.tool_calls?.length ? { toolCalls: m.tool_calls } : {}
20303
+ });
20276
20304
  }
20277
20305
  }
20278
20306
  const coalesced = [];
20279
20307
  for (const item of filteredMessages) {
20280
20308
  const last = coalesced[coalesced.length - 1];
20281
- if (last && last.role === item.role) {
20309
+ if (last && last.role === item.role && item.role !== "tool" && !last.toolCalls?.length && !item.toolCalls?.length) {
20282
20310
  last.text = `${last.text}
20283
20311
 
20284
20312
  ${item.text}`;
@@ -20287,7 +20315,7 @@ ${item.text}`;
20287
20315
  }
20288
20316
  }
20289
20317
  const chatMessageBuffers = coalesced.map((m) => encodeDevinChatMessage(m));
20290
- const completionConfig = buildCompletionConfig();
20318
+ const completionConfig = buildCompletionConfig({ temperature });
20291
20319
  const modelConfig = Buffer.concat([
20292
20320
  writeStringField(1, randomUUID2()),
20293
20321
  writeVarint(2, 1),
@@ -20299,6 +20327,7 @@ ${item.text}`;
20299
20327
  ...chatMessageBuffers.map((b) => writeMessageField(3, b)),
20300
20328
  writeVarint(7, 5),
20301
20329
  writeMessageField(8, completionConfig),
20330
+ ...tools.map((tool) => writeMessageField(10, encodeDevinToolDefinition(tool))),
20302
20331
  writeMessageField(15, modelConfig),
20303
20332
  writeStringField(16, randomUUID2()),
20304
20333
  writeVarint(20, 1),
@@ -20371,7 +20400,7 @@ function decodeDevinResponsePayload(payload) {
20371
20400
  s += 7;
20372
20401
  }
20373
20402
  if (fieldNum === 5) {
20374
- finishReason = val === 2 ? "stop" : "length";
20403
+ finishReason = val === 10 ? "tool_calls" : val === 1 || val === 3 ? "length" : "stop";
20375
20404
  }
20376
20405
  } else if (wireType === 2) {
20377
20406
  let len = 0;
@@ -20392,6 +20421,44 @@ function decodeDevinResponsePayload(payload) {
20392
20421
  const text = valBytes.toString("utf8");
20393
20422
  reasoning += text;
20394
20423
  events.push({ type: "reasoning", text });
20424
+ } else if (fieldNum === 6) {
20425
+ let nestedOffset = 0;
20426
+ let id;
20427
+ let name;
20428
+ let argsDelta;
20429
+ while (nestedOffset < valBytes.length) {
20430
+ let nestedTag = 0;
20431
+ let nestedShift = 0;
20432
+ while (nestedOffset < valBytes.length) {
20433
+ const b = valBytes[nestedOffset++];
20434
+ nestedTag |= (b & 127) << nestedShift;
20435
+ if (!(b & 128)) break;
20436
+ nestedShift += 7;
20437
+ }
20438
+ const nestedField = nestedTag >>> 3;
20439
+ const nestedWire = nestedTag & 7;
20440
+ if (nestedWire !== 2) break;
20441
+ let nestedLength = 0;
20442
+ let lengthShift = 0;
20443
+ while (nestedOffset < valBytes.length) {
20444
+ const b = valBytes[nestedOffset++];
20445
+ nestedLength |= (b & 127) << lengthShift;
20446
+ if (!(b & 128)) break;
20447
+ lengthShift += 7;
20448
+ }
20449
+ const nestedValue = valBytes.subarray(nestedOffset, nestedOffset + nestedLength);
20450
+ nestedOffset += nestedLength;
20451
+ const text = nestedValue.toString("utf8");
20452
+ if (nestedField === 1) id = text;
20453
+ else if (nestedField === 2) name = text;
20454
+ else if (nestedField === 3) argsDelta = (argsDelta ?? "") + text;
20455
+ }
20456
+ if (id !== void 0 && name !== void 0) {
20457
+ events.push({ type: "tool-call-start", id, name });
20458
+ }
20459
+ if (argsDelta !== void 0) {
20460
+ events.push({ type: "tool-call-args", argsDelta, ...id ? { id } : {} });
20461
+ }
20395
20462
  }
20396
20463
  } else {
20397
20464
  break;
@@ -20400,7 +20467,7 @@ function decodeDevinResponsePayload(payload) {
20400
20467
  return { content, reasoning, finishReason, events };
20401
20468
  }
20402
20469
  function createDevinProvider(options) {
20403
- const { token, model = "swe-2", fetchImpl = fetch } = options;
20470
+ const { token, model = "swe-2", fetchImpl = fetch, tools = [], temperature } = options;
20404
20471
  return {
20405
20472
  model,
20406
20473
  async complete(messages, opts) {
@@ -20408,7 +20475,9 @@ function createDevinProvider(options) {
20408
20475
  const requestPayload = buildGetChatMessageRequest({
20409
20476
  token,
20410
20477
  messages,
20411
- model: selectedModel
20478
+ model: selectedModel,
20479
+ tools,
20480
+ temperature
20412
20481
  });
20413
20482
  const frame = buildDevinConnectFrame(requestPayload);
20414
20483
  const response = await fetchImpl(DEVIN_CONNECT_URL, {
@@ -20432,6 +20501,10 @@ function createDevinProvider(options) {
20432
20501
  }
20433
20502
  let text = "";
20434
20503
  let reasoning = "";
20504
+ let finishReason = null;
20505
+ const toolCallOrder = [];
20506
+ const toolCallById = /* @__PURE__ */ new Map();
20507
+ let currentToolCallId = null;
20435
20508
  let buffer3 = Buffer.alloc(0);
20436
20509
  let sawTrailer = false;
20437
20510
  const reader = response.body.getReader();
@@ -20455,11 +20528,29 @@ function createDevinProvider(options) {
20455
20528
  const delta = decodeDevinResponsePayload(f.payload);
20456
20529
  text += delta.content;
20457
20530
  reasoning += delta.reasoning;
20531
+ if (delta.finishReason) finishReason = delta.finishReason;
20458
20532
  for (const event of delta.events) {
20459
20533
  if (event.type === "reasoning") {
20460
20534
  opts?.onReasoningDelta?.(event.text);
20461
- } else {
20535
+ } else if (event.type === "content") {
20462
20536
  opts?.onTextDelta?.(event.text);
20537
+ } else if (event.type === "tool-call-start") {
20538
+ const existing = toolCallById.get(event.id);
20539
+ if (existing) {
20540
+ existing.name = event.name;
20541
+ } else {
20542
+ toolCallOrder.push(event.id);
20543
+ toolCallById.set(event.id, {
20544
+ id: event.id,
20545
+ name: event.name,
20546
+ argumentsText: ""
20547
+ });
20548
+ }
20549
+ currentToolCallId = event.id;
20550
+ } else {
20551
+ const targetId = event.id ?? currentToolCallId;
20552
+ const target = targetId ? toolCallById.get(targetId) : void 0;
20553
+ if (target) target.argumentsText += event.argsDelta;
20463
20554
  }
20464
20555
  }
20465
20556
  }
@@ -20473,14 +20564,34 @@ function createDevinProvider(options) {
20473
20564
  if (!sawTrailer) {
20474
20565
  throw new Error("Devin Connect upstream ended before the terminal trailer");
20475
20566
  }
20476
- if (!text && !reasoning) {
20477
- throw new Error("Devin Connect upstream completed without content");
20567
+ const toolCalls = toolCallOrder.map((id) => {
20568
+ const call = toolCallById.get(id);
20569
+ return {
20570
+ id: call.id,
20571
+ type: "function",
20572
+ function: {
20573
+ name: call.name,
20574
+ arguments: call.argumentsText || "{}"
20575
+ }
20576
+ };
20577
+ });
20578
+ if (!text && !reasoning && toolCalls.length === 0) {
20579
+ throw new Error("Devin Connect upstream completed without content or tool calls");
20478
20580
  }
20479
20581
  return {
20480
20582
  content: text,
20481
20583
  model: selectedModel,
20482
20584
  provider: "devin",
20483
- reasoning_content: reasoning || void 0
20585
+ ...reasoning ? { reasoning_content: reasoning } : {},
20586
+ ...toolCalls.length > 0 ? { tool_calls: toolCalls } : {},
20587
+ // The upstream finish event wins whenever it is present. A tool call
20588
+ // cut off by the length limit has to stay "length" instead of being
20589
+ // relabelled "tool_calls", so probes/telemetry and any downstream
20590
+ // consumer of the final finish_reason no longer see a truncated turn
20591
+ // mislabelled as a normal one. localLoop keeps its own truncation
20592
+ // gates and excludes tool-bearing turns from them.
20593
+ finish_reason: finishReason ?? (toolCalls.length > 0 ? "tool_calls" : "stop"),
20594
+ stream_complete: true
20484
20595
  };
20485
20596
  }
20486
20597
  };
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createCliLocalRuntimeAdapter,
3
3
  summarizeEndpoint
4
- } from "./chunk-5F37RGTR.js";
4
+ } from "./chunk-C3OIYB5O.js";
5
5
  import {
6
6
  clipMultilineText
7
7
  } from "./chunk-IVWFJGEB.js";
8
8
  import {
9
9
  runLocalAgentTurn
10
- } from "./chunk-542M2LFO.js";
10
+ } from "./chunk-DUXL23YX.js";
11
11
  import {
12
12
  applyToolSurfaceConstraints
13
13
  } from "./chunk-OKCTLCKS.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  clearCliLocalRuntimePreparedAgentCache
3
- } from "./chunk-5F37RGTR.js";
3
+ } from "./chunk-C3OIYB5O.js";
4
4
  import {
5
5
  getReadableCliDb
6
6
  } from "./chunk-RXX4GDIH.js";
@@ -23,7 +23,7 @@ import "./chunk-KQHGZWSV.js";
23
23
  import "./chunk-3BMYXEUW.js";
24
24
  import "./chunk-URMS4XY2.js";
25
25
  import "./chunk-GLKOYSRU.js";
26
- import "./chunk-542M2LFO.js";
26
+ import "./chunk-DUXL23YX.js";
27
27
  import "./chunk-ZNFJWEN4.js";
28
28
  import "./chunk-6LUUGZTS.js";
29
29
  import "./chunk-FMODTASJ.js";
@@ -28,7 +28,7 @@ import "./chunk-SPAQ4PVV.js";
28
28
  import "./chunk-VF4K2QE6.js";
29
29
  import "./chunk-Q554LLSI.js";
30
30
  import "./chunk-KHCLMKZZ.js";
31
- import "./chunk-542M2LFO.js";
31
+ import "./chunk-DUXL23YX.js";
32
32
  import "./chunk-ZNFJWEN4.js";
33
33
  import "./chunk-6LUUGZTS.js";
34
34
  import "./chunk-FMODTASJ.js";
@@ -21,7 +21,7 @@ import "./chunk-KQHGZWSV.js";
21
21
  import "./chunk-VF4K2QE6.js";
22
22
  import "./chunk-Q554LLSI.js";
23
23
  import "./chunk-KHCLMKZZ.js";
24
- import "./chunk-542M2LFO.js";
24
+ import "./chunk-DUXL23YX.js";
25
25
  import "./chunk-ZNFJWEN4.js";
26
26
  import "./chunk-6LUUGZTS.js";
27
27
  import "./chunk-FMODTASJ.js";
@@ -16,7 +16,7 @@ import "./chunk-SPAQ4PVV.js";
16
16
  import "./chunk-VF4K2QE6.js";
17
17
  import "./chunk-Q554LLSI.js";
18
18
  import "./chunk-KHCLMKZZ.js";
19
- import "./chunk-542M2LFO.js";
19
+ import "./chunk-DUXL23YX.js";
20
20
  import "./chunk-ZNFJWEN4.js";
21
21
  import "./chunk-6LUUGZTS.js";
22
22
  import "./chunk-FMODTASJ.js";
@@ -30,7 +30,7 @@ import {
30
30
  resolvePageSkillMetadata
31
31
  } from "./chunk-Q554LLSI.js";
32
32
  import "./chunk-KHCLMKZZ.js";
33
- import "./chunk-542M2LFO.js";
33
+ import "./chunk-DUXL23YX.js";
34
34
  import "./chunk-ZNFJWEN4.js";
35
35
  import "./chunk-6LUUGZTS.js";
36
36
  import "./chunk-FMODTASJ.js";
package/index.js CHANGED
@@ -127,7 +127,7 @@ function createDaemonShortcutCommand(path, description, command2) {
127
127
  // packages/cli/agentInternalCommandEntries.ts
128
128
  function getAgentInternalCommandEntries() {
129
129
  const createAgentRunCommand = (path, description) => createContextCommand(path, description, async (args2, ctx) => {
130
- const { runAgentRunCommand } = await import("./agentRunCommand-7QM6GYYP.js");
130
+ const { runAgentRunCommand } = await import("./agentRunCommand-IFXPSZQT.js");
131
131
  return runAgentRunCommand(args2, {
132
132
  env: ctx.env,
133
133
  scriptDir: ctx.scriptDir,
@@ -139,11 +139,11 @@ function getAgentInternalCommandEntries() {
139
139
  createAgentRunCommand(["run"], "Run a no-login local agent in this workspace"),
140
140
  createAgentRunCommand(["chat"], "Chat with an agent"),
141
141
  createEnvCommand(["agent", "list"], "List owned agents", async (args2, deps) => {
142
- const { runAgentListCommand } = await import("./agentListCommands-JJ4PR6XR.js");
142
+ const { runAgentListCommand } = await import("./agentListCommands-3S6LZKWI.js");
143
143
  return runAgentListCommand(args2, deps);
144
144
  }),
145
145
  createEnvCommand(["agent", "create"], "Create a new agent", async (args2, deps) => {
146
- const { runAgentCreateCommand } = await import("./agentRecordCommands-3VXZXFFS.js");
146
+ const { runAgentCreateCommand } = await import("./agentRecordCommands-HGTP6T5A.js");
147
147
  return runAgentCreateCommand(args2, deps);
148
148
  }),
149
149
  createEnvCommand(["agent", "models"], "List models available on an OpenAI-compatible provider", async (args2, deps) => {
@@ -155,7 +155,7 @@ function getAgentInternalCommandEntries() {
155
155
  return runAgentPullCommand(args2, deps);
156
156
  }),
157
157
  createEnvCommand(["agent", "read"], "Read a single agent", async (args2, deps) => {
158
- const { runAgentReadCommand } = await import("./agentRecordCommands-3VXZXFFS.js");
158
+ const { runAgentReadCommand } = await import("./agentRecordCommands-HGTP6T5A.js");
159
159
  return runAgentReadCommand(args2, deps);
160
160
  }),
161
161
  createAgentRunCommand(["agent", "run"], "Run an agent"),
@@ -184,31 +184,31 @@ function getAgentInternalCommandEntries() {
184
184
  return runSetupOfflineMarxistsAgentCommand(args2, deps);
185
185
  }),
186
186
  createEnvCommand(["agent", "update"], "Update agent fields", async (args2, deps) => {
187
- const { runAgentUpdateCommand } = await import("./agentRecordCommands-3VXZXFFS.js");
187
+ const { runAgentUpdateCommand } = await import("./agentRecordCommands-HGTP6T5A.js");
188
188
  return runAgentUpdateCommand(args2, deps);
189
189
  }),
190
190
  createEnvCommand(["agent", "email", "provision"], "Provision a controlled inbox for an agent", async (args2, deps) => {
191
- const { runAgentEmailProvisionCommand } = await import("./agentEmailCommands-B3IGU43E.js");
191
+ const { runAgentEmailProvisionCommand } = await import("./agentEmailCommands-UI6XIGG7.js");
192
192
  return runAgentEmailProvisionCommand(args2, deps);
193
193
  }),
194
194
  createEnvCommand(["agent", "email", "bind"], "Bind an existing email address to an agent", async (args2, deps) => {
195
- const { runAgentEmailBindCommand } = await import("./agentEmailCommands-B3IGU43E.js");
195
+ const { runAgentEmailBindCommand } = await import("./agentEmailCommands-UI6XIGG7.js");
196
196
  return runAgentEmailBindCommand(args2, deps);
197
197
  }),
198
198
  createEnvCommand(["agent", "email", "transfer"], "Transfer an email identity from one agent to another (cross-account)", async (args2, deps) => {
199
- const { runAgentEmailTransferCommand } = await import("./agentEmailCommands-B3IGU43E.js");
199
+ const { runAgentEmailTransferCommand } = await import("./agentEmailCommands-UI6XIGG7.js");
200
200
  return runAgentEmailTransferCommand(args2, deps);
201
201
  }),
202
202
  createEnvCommand(
203
203
  ["agent", "email", "create-and-provision"],
204
204
  "Create an agent and provision its controlled inbox",
205
205
  async (args2, deps) => {
206
- const { runAgentEmailCreateAndProvisionCommand } = await import("./agentEmailCommands-B3IGU43E.js");
206
+ const { runAgentEmailCreateAndProvisionCommand } = await import("./agentEmailCommands-UI6XIGG7.js");
207
207
  return runAgentEmailCreateAndProvisionCommand(args2, deps);
208
208
  }
209
209
  ),
210
210
  createEnvCommand(["agent", "delete"], "Hard-delete an agent's private and public records", async (args2, deps) => {
211
- const { runAgentDeleteCommand } = await import("./agentDeleteCommand-RPQ3WNYP.js");
211
+ const { runAgentDeleteCommand } = await import("./agentDeleteCommand-XW2NHDTK.js");
212
212
  return runAgentDeleteCommand(args2, deps);
213
213
  }),
214
214
  createEnvCommand(["agent", "grant"], "Grant another user access to this agent's owner credentials", async (args2, deps) => {
@@ -224,15 +224,15 @@ function getAgentInternalCommandEntries() {
224
224
  return runAgentRevokeGrantCommand(args2, deps);
225
225
  }),
226
226
  createEnvCommand(["agent", "bind-current"], "Bind an agent to this machine", async (args2, deps) => {
227
- const { runAgentBindCurrentCommand } = await import("./agentMachineCommands-JHEX5T4S.js");
227
+ const { runAgentBindCurrentCommand } = await import("./agentMachineCommands-XUDFW32H.js");
228
228
  return runAgentBindCurrentCommand(args2, deps);
229
229
  }),
230
230
  createEnvCommand(["agent", "smoke-current"], "Smoke test a bound agent through this machine", async (args2, deps) => {
231
- const { runAgentSmokeCurrentCommand } = await import("./agentMachineCommands-JHEX5T4S.js");
231
+ const { runAgentSmokeCurrentCommand } = await import("./agentMachineCommands-XUDFW32H.js");
232
232
  return runAgentSmokeCurrentCommand(args2, deps);
233
233
  }),
234
234
  createEnvCommand(["agent", "runtime-doctor"], "Diagnose current machine runtime compatibility", async (args2, deps) => {
235
- const { runAgentRuntimeDoctorCommand } = await import("./agentMachineCommands-JHEX5T4S.js");
235
+ const { runAgentRuntimeDoctorCommand } = await import("./agentMachineCommands-XUDFW32H.js");
236
236
  return runAgentRuntimeDoctorCommand(args2, deps);
237
237
  }),
238
238
  createAgentRunCommand(["agent", "chat"], "Chat with an agent")
@@ -243,23 +243,23 @@ function getAgentInternalCommandEntries() {
243
243
  function getAppInternalCommandEntries() {
244
244
  return [
245
245
  createEnvCommand(["app", "list"], "List your apps", async (args2, deps) => {
246
- const { runAppListCommand } = await import("./appListCommands-PYCZWROS.js");
246
+ const { runAppListCommand } = await import("./appListCommands-WNGR3Z4G.js");
247
247
  return runAppListCommand(args2, deps);
248
248
  }),
249
249
  createEnvCommand(["app", "get"], "Get app details", async (args2, deps) => {
250
- const { runAppGetCommand } = await import("./appGetCommands-ITOUFAY4.js");
250
+ const { runAppGetCommand } = await import("./appGetCommands-F6IO3UMX.js");
251
251
  return runAppGetCommand(args2, deps);
252
252
  }),
253
253
  createEnvCommand(["app", "deploy"], "Deploy an app", async (args2, deps) => {
254
- const { runAppDeployCommand } = await import("./appDeployCommands-SUCPTFUI.js");
254
+ const { runAppDeployCommand } = await import("./appDeployCommands-O7CEHFFG.js");
255
255
  return runAppDeployCommand(args2, deps);
256
256
  }),
257
257
  createEnvCommand(["app", "deploy", "status"], "Check app deploy status", async (args2, deps) => {
258
- const { runAppDeployStatusCommand } = await import("./appDeployStatusCommands-EWYFXTCU.js");
258
+ const { runAppDeployStatusCommand } = await import("./appDeployStatusCommands-7OKGI4WA.js");
259
259
  return runAppDeployStatusCommand(args2, deps);
260
260
  }),
261
261
  createEnvCommand(["app", "delete"], "Delete an app", async (args2, deps) => {
262
- const { runAppDeleteCommand } = await import("./appDeleteCommands-EW67CDHD.js");
262
+ const { runAppDeleteCommand } = await import("./appDeleteCommands-NTG4P4DI.js");
263
263
  return runAppDeleteCommand(args2, deps);
264
264
  })
265
265
  ];
@@ -324,23 +324,23 @@ function getChromeInternalCommandEntries() {
324
324
  function getDialogInternalCommandEntries() {
325
325
  return [
326
326
  createEnvCommand(["dialog", "list"], "List dialogs (default --limit 50; --all/--limit 0 full; --jsonl streams)", async (args2, deps) => {
327
- const { runDialogListCommand } = await import("./dialogCommands-K3Y6JVJH.js");
327
+ const { runDialogListCommand } = await import("./dialogCommands-NL2LL3HN.js");
328
328
  return runDialogListCommand(args2, deps);
329
329
  }),
330
330
  createEnvCommand(["dialog", "delete"], "Delete one or more dialogs", async (args2, deps) => {
331
- const { runDialogDeleteCommand } = await import("./dialogCommands-K3Y6JVJH.js");
331
+ const { runDialogDeleteCommand } = await import("./dialogCommands-NL2LL3HN.js");
332
332
  return runDialogDeleteCommand(args2, deps);
333
333
  }),
334
334
  createEnvCommand(["dialog", "query"], "Query dialogs by subject refs (default --limit 50; --all full; --jsonl streams)", async (args2, deps) => {
335
- const { runDialogQueryCommand } = await import("./dialogCommands-K3Y6JVJH.js");
335
+ const { runDialogQueryCommand } = await import("./dialogCommands-NL2LL3HN.js");
336
336
  return runDialogQueryCommand(args2, deps);
337
337
  }),
338
338
  createEnvCommand(["dialog", "read"], "Read a dialog", async (args2, deps) => {
339
- const { runDialogReadCommand } = await import("./dialogCommands-K3Y6JVJH.js");
339
+ const { runDialogReadCommand } = await import("./dialogCommands-NL2LL3HN.js");
340
340
  return runDialogReadCommand(args2, deps);
341
341
  }),
342
342
  createEnvCommand(["dialog", "status"], "Read compact dialog status", async (args2, deps) => {
343
- const { runDialogStatusCommand } = await import("./dialogCommands-K3Y6JVJH.js");
343
+ const { runDialogStatusCommand } = await import("./dialogCommands-NL2LL3HN.js");
344
344
  return runDialogStatusCommand(args2, deps);
345
345
  })
346
346
  ];
@@ -350,39 +350,39 @@ function getDialogInternalCommandEntries() {
350
350
  function getDocInternalCommandEntries() {
351
351
  return [
352
352
  createEnvCommand(["doc", "create"], "Create a normal doc", async (args2, deps) => {
353
- const { runDocCreateCommand } = await import("./docCreateCommands-U6RYQCCY.js");
353
+ const { runDocCreateCommand } = await import("./docCreateCommands-TSB6IGNK.js");
354
354
  return runDocCreateCommand(args2, deps);
355
355
  }),
356
356
  createEnvCommand(["doc", "read"], "Read a normal doc", async (args2, deps) => {
357
- const { runDocReadCommand } = await import("./docReadCommands-IY3PZ2E4.js");
357
+ const { runDocReadCommand } = await import("./docReadCommands-UOBB3US4.js");
358
358
  return runDocReadCommand(args2, deps);
359
359
  }),
360
360
  createEnvCommand(["doc", "update"], "Update a normal doc", async (args2, deps) => {
361
- const { runDocUpdateCommand } = await import("./docUpdateCommands-FDH5RH2H.js");
361
+ const { runDocUpdateCommand } = await import("./docUpdateCommands-UWGB4IB7.js");
362
362
  return runDocUpdateCommand(args2, deps);
363
363
  }),
364
364
  createEnvCommand(["doc", "delete"], "Delete a normal doc", async (args2, deps) => {
365
- const { runDocDeleteCommand } = await import("./docDeleteCommands-KQJTPJVD.js");
365
+ const { runDocDeleteCommand } = await import("./docDeleteCommands-G7NU7ZDJ.js");
366
366
  return runDocDeleteCommand(args2, deps);
367
367
  }),
368
368
  createEnvCommand(["skill-doc", "create"], "Create a skill-backed doc", async (args2, deps) => {
369
- const { runSkillDocCreateCommand } = await import("./docCreateCommands-U6RYQCCY.js");
369
+ const { runSkillDocCreateCommand } = await import("./docCreateCommands-TSB6IGNK.js");
370
370
  return runSkillDocCreateCommand(args2, deps);
371
371
  }),
372
372
  createEnvCommand(["skill", "create-doc"], "Create a skill-backed doc", async (args2, deps) => {
373
- const { runSkillDocCreateCommand } = await import("./docCreateCommands-U6RYQCCY.js");
373
+ const { runSkillDocCreateCommand } = await import("./docCreateCommands-TSB6IGNK.js");
374
374
  return runSkillDocCreateCommand(args2, deps);
375
375
  }),
376
376
  createEnvCommand(["skill-doc", "read"], "Read a skill doc", async (args2, deps) => {
377
- const { runSkillDocReadCommand } = await import("./docReadCommands-IY3PZ2E4.js");
377
+ const { runSkillDocReadCommand } = await import("./docReadCommands-UOBB3US4.js");
378
378
  return runSkillDocReadCommand(args2, deps);
379
379
  }),
380
380
  createEnvCommand(["skill-doc", "update"], "Update a skill doc", async (args2, deps) => {
381
- const { runSkillDocUpdateCommand } = await import("./docUpdateCommands-FDH5RH2H.js");
381
+ const { runSkillDocUpdateCommand } = await import("./docUpdateCommands-UWGB4IB7.js");
382
382
  return runSkillDocUpdateCommand(args2, deps);
383
383
  }),
384
384
  createEnvCommand(["skill-doc", "delete"], "Delete a skill doc", async (args2, deps) => {
385
- const { runSkillDocDeleteCommand } = await import("./docDeleteCommands-KQJTPJVD.js");
385
+ const { runSkillDocDeleteCommand } = await import("./docDeleteCommands-G7NU7ZDJ.js");
386
386
  return runSkillDocDeleteCommand(args2, deps);
387
387
  })
388
388
  ];
@@ -410,19 +410,19 @@ function getMemoryInternalCommandEntries() {
410
410
  function getSpaceInternalCommandEntries() {
411
411
  return [
412
412
  createEnvCommand(["space", "create"], "Create a space", async (args2, deps) => {
413
- const { runSpaceCreateCommand } = await import("./spaceCommands-KSZU2DEA.js");
413
+ const { runSpaceCreateCommand } = await import("./spaceCommands-AYINXM2I.js");
414
414
  return runSpaceCreateCommand(args2, deps);
415
415
  }),
416
416
  createEnvCommand(["space", "invite"], "Invite an existing user to a space", async (args2, deps) => {
417
- const { runSpaceInviteCommand } = await import("./spaceCommands-KSZU2DEA.js");
417
+ const { runSpaceInviteCommand } = await import("./spaceCommands-AYINXM2I.js");
418
418
  return runSpaceInviteCommand(args2, deps);
419
419
  }),
420
420
  createEnvCommand(["space", "accept-invite"], "Accept a space invite", async (args2, deps) => {
421
- const { runSpaceAcceptInviteCommand } = await import("./spaceCommands-KSZU2DEA.js");
421
+ const { runSpaceAcceptInviteCommand } = await import("./spaceCommands-AYINXM2I.js");
422
422
  return runSpaceAcceptInviteCommand(args2, deps);
423
423
  }),
424
424
  createEnvCommand(["space", "upload"], "Upload a file to a space", async (args2, deps) => {
425
- const { runSpaceUploadCommand } = await import("./spaceCommands-KSZU2DEA.js");
425
+ const { runSpaceUploadCommand } = await import("./spaceCommands-AYINXM2I.js");
426
426
  return runSpaceUploadCommand(args2, deps);
427
427
  })
428
428
  ];
@@ -476,15 +476,15 @@ function getSystemInternalCommandEntries(renderHelpText2) {
476
476
  return runWhoamiCommand({ args: args2, env: ctx.env });
477
477
  }),
478
478
  createEntrypointEnvCommand(["connect"], "Send machine heartbeats or hold a connector websocket", async (args2, deps) => {
479
- const { runMachineConnectCommand } = await import("./machineCommands-KZDKNEHA.js");
479
+ const { runMachineConnectCommand } = await import("./machineCommands-KQ23PZ34.js");
480
480
  return runMachineConnectCommand(args2, deps);
481
481
  }),
482
482
  createDaemonShortcutCommand(["daemon"], "Run the connector daemon shortcut", async (args2, deps) => {
483
- const { runMachineConnectCommand } = await import("./machineCommands-KZDKNEHA.js");
483
+ const { runMachineConnectCommand } = await import("./machineCommands-KQ23PZ34.js");
484
484
  return runMachineConnectCommand(args2, deps);
485
485
  }),
486
486
  createEnvCommand(["machine", "status"], "List machines registered to the current profile", async (args2, deps) => {
487
- const { runMachineStatusCommand } = await import("./machineCommands-KZDKNEHA.js");
487
+ const { runMachineStatusCommand } = await import("./machineCommands-KQ23PZ34.js");
488
488
  return runMachineStatusCommand(args2, deps);
489
489
  }),
490
490
  createEnvCommand(["doctor", "runtime"], "Diagnose local-first agent runtime selection", async (args2, deps) => {
@@ -879,7 +879,7 @@ async function runScript(script, forwardedArgs, env) {
879
879
  return proc.exited;
880
880
  }
881
881
  async function launchTuiWorkspace(args2) {
882
- const { startTuiWorkspace } = await import("./readlineWorkspace-RRHH6B4U.js");
882
+ const { startTuiWorkspace } = await import("./readlineWorkspace-IRWDPRMD.js");
883
883
  const { createTuiSummaryLlmCaller } = await import("./tuiSummaryLlmCaller-CCYGQDGB.js");
884
884
  return startTuiWorkspace({
885
885
  ...args2,
@@ -2,13 +2,13 @@ import {
2
2
  buildMachinePermissionPromptBlock,
3
3
  handleConnectorRunMessage,
4
4
  resolveMachineRunPermissionPolicy
5
- } from "./chunk-X2KZN5T7.js";
5
+ } from "./chunk-MYYHP5MC.js";
6
6
  import {
7
7
  isConnectorWebSocketAuthError,
8
8
  isConnectorWebSocketRetryableError,
9
9
  resolveConnectorWebSocketTarget
10
10
  } from "./chunk-ALXHV7NK.js";
11
- import "./chunk-5F37RGTR.js";
11
+ import "./chunk-C3OIYB5O.js";
12
12
  import "./chunk-EDZAJS6E.js";
13
13
  import "./chunk-QCZX4FTW.js";
14
14
  import "./chunk-EADNWBAZ.js";
@@ -67,7 +67,7 @@ import "./chunk-KHCLMKZZ.js";
67
67
  import {
68
68
  PATH_FIELD_ALIASES,
69
69
  createLocalWorkspaceToolExecutors
70
- } from "./chunk-542M2LFO.js";
70
+ } from "./chunk-DUXL23YX.js";
71
71
  import "./chunk-ZNFJWEN4.js";
72
72
  import "./chunk-6LUUGZTS.js";
73
73
  import "./chunk-FMODTASJ.js";
@@ -11,8 +11,8 @@ import {
11
11
  runtimeWorkspacePermissionPolicy,
12
12
  scopePermissionPolicyToRuntimeWorkspace,
13
13
  summarizeAgentConfigForLogs
14
- } from "./chunk-X2KZN5T7.js";
15
- import "./chunk-5F37RGTR.js";
14
+ } from "./chunk-MYYHP5MC.js";
15
+ import "./chunk-C3OIYB5O.js";
16
16
  import "./chunk-EDZAJS6E.js";
17
17
  import "./chunk-QCZX4FTW.js";
18
18
  import "./chunk-EADNWBAZ.js";
@@ -63,7 +63,7 @@ import "./chunk-GNWFC7YT.js";
63
63
  import "./chunk-SHMFFPY3.js";
64
64
  import "./chunk-Q554LLSI.js";
65
65
  import "./chunk-KHCLMKZZ.js";
66
- import "./chunk-542M2LFO.js";
66
+ import "./chunk-DUXL23YX.js";
67
67
  import "./chunk-ZNFJWEN4.js";
68
68
  import "./chunk-6LUUGZTS.js";
69
69
  import "./chunk-FMODTASJ.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nolo-cli",
3
- "version": "0.87.0-alpha.1",
3
+ "version": "0.87.0-alpha.2",
4
4
  "type": "module",
5
5
  "description": "Agent-first terminal workspace for Nolo",
6
6
  "bin": {
@@ -72,7 +72,7 @@ import {
72
72
  wrapTextToLines,
73
73
  wrapTranscriptLine,
74
74
  wrapTranscriptLineWithLayout
75
- } from "./chunk-R5TSWLOO.js";
75
+ } from "./chunk-6SP2OTHH.js";
76
76
  import "./chunk-S7Z2HMCN.js";
77
77
  import {
78
78
  listFavoriteAgentIdsAcrossServers,
@@ -96,7 +96,7 @@ import {
96
96
  readTimestamp,
97
97
  setCliLocale,
98
98
  t
99
- } from "./chunk-5F37RGTR.js";
99
+ } from "./chunk-C3OIYB5O.js";
100
100
  import "./chunk-EDZAJS6E.js";
101
101
  import "./chunk-QCZX4FTW.js";
102
102
  import "./chunk-EADNWBAZ.js";
@@ -203,7 +203,7 @@ import {
203
203
  formatToolOverflowMarker,
204
204
  getProcessRegistry,
205
205
  readCommandActionGatePayload
206
- } from "./chunk-542M2LFO.js";
206
+ } from "./chunk-DUXL23YX.js";
207
207
  import "./chunk-ZNFJWEN4.js";
208
208
  import "./chunk-6LUUGZTS.js";
209
209
  import "./chunk-FMODTASJ.js";
@@ -11,7 +11,7 @@ import {
11
11
  import "./chunk-OAJRZ35U.js";
12
12
  import "./chunk-SPAQ4PVV.js";
13
13
  import "./chunk-KQHGZWSV.js";
14
- import "./chunk-542M2LFO.js";
14
+ import "./chunk-DUXL23YX.js";
15
15
  import "./chunk-ZNFJWEN4.js";
16
16
  import "./chunk-6LUUGZTS.js";
17
17
  import "./chunk-FMODTASJ.js";