nolo-cli 0.1.32 → 0.1.34

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 (234) hide show
  1. package/README.md +4 -10
  2. package/agent-runtime/agentRecordConfig.ts +10 -0
  3. package/agent-runtime/hostAdapter.ts +10 -1
  4. package/agent-runtime/index.ts +9 -20
  5. package/agent-runtime/localLoop.ts +49 -2
  6. package/agent-runtime/localToolPolicy.ts +76 -34
  7. package/agent-runtime/localWorkspaceTools.ts +30 -333
  8. package/agent-runtime/openAiCompatibleProvider.ts +7 -3
  9. package/agent-runtime/openAiCompatibleProviderConfig.ts +15 -26
  10. package/agent-runtime/platformChatProvider.ts +47 -73
  11. package/agent-runtime/providerResolution.ts +244 -0
  12. package/agent-runtime/runtimeToolPolicy.ts +77 -29
  13. package/agent-runtime/shellCommandPolicy.ts +120 -0
  14. package/agentAliases.ts +14 -83
  15. package/agentCommandSupport.ts +3 -6
  16. package/agentInternalCommandEntries.ts +4 -13
  17. package/agentListCommands.ts +18 -27
  18. package/agentMachineCommands.ts +40 -336
  19. package/agentPullCommand.ts +30 -55
  20. package/agentRecordCommands.ts +84 -1
  21. package/agentRecordHelpers.ts +102 -186
  22. package/agentRunCommand.ts +438 -107
  23. package/agentRuntimeLocal.ts +2 -9
  24. package/ai/agent/cliExecutor.ts +19 -323
  25. package/ai/tools/toolNameAliases.ts +70 -0
  26. package/authCommands.ts +2 -36
  27. package/cli/agentAliases.ts +14 -83
  28. package/cli/agentCommandSupport.ts +3 -6
  29. package/cli/agentInternalCommandEntries.ts +4 -13
  30. package/cli/agentListCommands.ts +18 -27
  31. package/cli/agentMachineCommands.ts +40 -336
  32. package/cli/agentPullCommand.ts +30 -55
  33. package/cli/agentRecordCommands.ts +84 -1
  34. package/cli/agentRecordHelpers.ts +102 -186
  35. package/cli/agentRunCommand.ts +438 -107
  36. package/cli/agentRuntimeLocal.ts +2 -9
  37. package/cli/authCommands.ts +2 -36
  38. package/cli/cliCommandDispatch.ts +2 -2
  39. package/cli/cliEnvHelpers.ts +34 -107
  40. package/cli/client/agentRun.ts +854 -57
  41. package/cli/client/localRuntimeAdapter.ts +59 -159
  42. package/cli/client/streamingOutput.ts +3 -1
  43. package/cli/client/taskRunPrompt.ts +24 -7
  44. package/cli/commandRegistry.ts +4 -5
  45. package/cli/connectorRunArtifact.ts +10 -34
  46. package/cli/connectorWebSocketTarget.ts +6 -10
  47. package/cli/internalCommandEntries.ts +0 -8
  48. package/cli/localRuntimeDb.ts +2 -39
  49. package/cli/machineCommands.ts +189 -190
  50. package/cli/machineDaemonCommands.ts +165 -9
  51. package/cli/machineHeartbeatCommands.ts +2 -1
  52. package/cli/machineStatusCommands.ts +13 -5
  53. package/cli/machineWatchCommands.ts +1 -1
  54. package/cli/machineWsRunDispatch.ts +30 -44
  55. package/cli/machineWsSession.ts +0 -2
  56. package/cli/offlineMarxistsAgentCommand.ts +314 -0
  57. package/cli/runtimeDoctorCommands.ts +72 -15
  58. package/cli/scriptCommandEntries.ts +45 -5
  59. package/cli/tableCommands.ts +133 -33
  60. package/cli/taskRunCommand.ts +211 -16
  61. package/cli/tui/session.ts +372 -43
  62. package/cli/workflowInternalCommandEntries.ts +0 -20
  63. package/cliCommandDispatch.ts +2 -2
  64. package/cliEnvHelpers.ts +34 -107
  65. package/client/agentConfigResolver.test.ts +2 -0
  66. package/client/agentRun.test.ts +12 -208
  67. package/client/agentRun.ts +854 -57
  68. package/client/localProviderResolver.test.ts +26 -2
  69. package/client/localRuntimeAdapter.test.ts +296 -171
  70. package/client/localRuntimeAdapter.ts +59 -159
  71. package/client/localToolPolicy.test.ts +4 -28
  72. package/client/streamingOutput.ts +3 -1
  73. package/client/taskRunPrompt.ts +24 -7
  74. package/commandRegistry.ts +4 -5
  75. package/connectorRunArtifact.ts +10 -34
  76. package/connectorWebSocketTarget.ts +6 -10
  77. package/database/server/serverStoreFactory.ts +2 -8
  78. package/internalCommandEntries.ts +0 -8
  79. package/localRuntimeDb.ts +2 -39
  80. package/machineCommands.ts +189 -190
  81. package/machineDaemonCommands.ts +165 -9
  82. package/machineHeartbeatCommands.ts +2 -1
  83. package/machineStatusCommands.ts +13 -5
  84. package/machineWatchCommands.ts +1 -1
  85. package/machineWsRunDispatch.ts +30 -44
  86. package/machineWsSession.ts +0 -2
  87. package/offlineMarxistsAgentCommand.ts +314 -0
  88. package/package.json +52 -188
  89. package/runtimeDoctorCommands.ts +72 -15
  90. package/scriptCommandEntries.ts +45 -5
  91. package/tableCommands.ts +133 -33
  92. package/taskRunCommand.ts +211 -16
  93. package/tui/session.ts +372 -43
  94. package/workflowInternalCommandEntries.ts +0 -20
  95. package/agent-runtime/dialogStatus.ts +0 -139
  96. package/agent-runtime/hostRuntimeConfig.ts +0 -86
  97. package/agentCreateCustomCommands.ts +0 -278
  98. package/agentDialogsCommands.ts +0 -227
  99. package/agentDoctorCommands.ts +0 -203
  100. package/agentRunLocalWorkspace.ts +0 -182
  101. package/agentRunParsing.ts +0 -298
  102. package/agentSuperviseCommands.ts +0 -8
  103. package/agentUnpublishCommands.ts +0 -113
  104. package/ai/agent/agentRunDialogLineage.ts +0 -56
  105. package/ai/policy/types.ts +0 -64
  106. package/ai/skills/skillSummaryMarker.ts +0 -26
  107. package/app/types.ts +0 -358
  108. package/build.ts +0 -16
  109. package/buildPublish.ts +0 -138
  110. package/buildPublishArtifactAssembly.ts +0 -724
  111. package/buildPublishImportAnalysis.ts +0 -242
  112. package/chat/messages/fetchMessages.ts +0 -84
  113. package/chat/messages/types.ts +0 -185
  114. package/cli/agentCreateCustomCommands.ts +0 -278
  115. package/cli/agentDialogsCommands.ts +0 -227
  116. package/cli/agentDoctorCommands.ts +0 -203
  117. package/cli/agentRunLocalWorkspace.ts +0 -182
  118. package/cli/agentRunParsing.ts +0 -298
  119. package/cli/agentSuperviseCommands.ts +0 -8
  120. package/cli/agentUnpublishCommands.ts +0 -113
  121. package/cli/buildPublish.ts +0 -138
  122. package/cli/buildPublishArtifactAssembly.ts +0 -724
  123. package/cli/buildPublishImportAnalysis.ts +0 -242
  124. package/cli/cliIoTypes.ts +0 -3
  125. package/cli/cliRuntimeDoctorReport.ts +0 -193
  126. package/cli/client/agentRunInput.ts +0 -10
  127. package/cli/client/agentRunLocalExecution.ts +0 -124
  128. package/cli/client/agentRunLocalExecutor.ts +0 -179
  129. package/cli/client/agentRunRuntimeSelection.ts +0 -145
  130. package/cli/client/agentRunServerTransport.ts +0 -397
  131. package/cli/client/agentRunTaskRunRecorder.ts +0 -176
  132. package/cli/customCodingAgentFlow.ts +0 -208
  133. package/cli/customCodingAgentRecord.ts +0 -179
  134. package/cli/dialogDataAccess.ts +0 -186
  135. package/cli/dialogInternalCommandEntries.ts +0 -11
  136. package/cli/dialogReadCommands.ts +0 -180
  137. package/cli/dialogReadHelpers.ts +0 -226
  138. package/cli/dialogStatusCommands.ts +0 -123
  139. package/cli/docInternalCommandEntries.ts +0 -20
  140. package/cli/hybridReadHelpers.ts +0 -109
  141. package/cli/machineCommandPrompts.ts +0 -79
  142. package/cli/machineCommandResolution.ts +0 -43
  143. package/cli/noloReadBridgePrompt.ts +0 -16
  144. package/cli/pageCreateCommands.ts +0 -219
  145. package/cli/pageDeleteCommands.ts +0 -167
  146. package/cli/pageReadCommands.ts +0 -151
  147. package/cli/pageUpdateCommands.ts +0 -249
  148. package/cli/pageWriteHelpers.ts +0 -209
  149. package/cli/publishPackage.ts +0 -36
  150. package/cli/runtimeInternalCommandEntries.ts +0 -15
  151. package/cli/runtimePassthroughCommands.ts +0 -22
  152. package/cli/scriptPassthroughHelpers.ts +0 -28
  153. package/cli/secretScanHelpers.ts +0 -31
  154. package/cli/spaceAttachCommands.ts +0 -134
  155. package/cli/spaceCategoryCommands.ts +0 -263
  156. package/cli/spaceCommands.ts +0 -295
  157. package/cli/spaceDeleteCommands.ts +0 -312
  158. package/cli/spaceInternalCommandEntries.ts +0 -21
  159. package/cli/spaceMutationHelpers.ts +0 -135
  160. package/cli/spaceReadCommands.ts +0 -323
  161. package/cli/tableDataOutput.ts +0 -41
  162. package/cli/tableDataSafety.ts +0 -26
  163. package/cli/tableMetaCommands.ts +0 -307
  164. package/cli/tableMutationCommands.ts +0 -266
  165. package/cli/tableQueryParsing.ts +0 -90
  166. package/cli/tableQueryRequest.ts +0 -53
  167. package/cli/taskRunActions.ts +0 -122
  168. package/cli/taskRunParsing.ts +0 -86
  169. package/cli/taskRunPromptShared.ts +0 -55
  170. package/cli/tui/tuiCatalog.ts +0 -22
  171. package/cli/tui/tuiCommandInterpreter.ts +0 -253
  172. package/cli/tui/tuiPresentation.ts +0 -146
  173. package/cliIoTypes.ts +0 -3
  174. package/cliRuntimeDoctorReport.ts +0 -193
  175. package/client/agentRunInput.ts +0 -10
  176. package/client/agentRunLocalExecution.test.ts +0 -123
  177. package/client/agentRunLocalExecution.ts +0 -124
  178. package/client/agentRunLocalExecutor.ts +0 -179
  179. package/client/agentRunRuntimeSelection.test.ts +0 -159
  180. package/client/agentRunRuntimeSelection.ts +0 -145
  181. package/client/agentRunServerTransport.ts +0 -397
  182. package/client/agentRunTaskRunRecorder.ts +0 -176
  183. package/connector-experimental/daemonLauncher.ts +0 -223
  184. package/create/space/spaceKeys.ts +0 -65
  185. package/create/types.ts +0 -21
  186. package/customCodingAgentFlow.ts +0 -208
  187. package/customCodingAgentRecord.ts +0 -179
  188. package/database/keys.ts +0 -765
  189. package/database/tombstones.ts +0 -52
  190. package/database/utils/ulid.ts +0 -1
  191. package/dialogDataAccess.ts +0 -186
  192. package/dialogInternalCommandEntries.ts +0 -11
  193. package/dialogReadCommands.ts +0 -180
  194. package/dialogReadHelpers.ts +0 -226
  195. package/dialogStatusCommands.ts +0 -123
  196. package/docInternalCommandEntries.ts +0 -20
  197. package/hybridReadHelpers.ts +0 -109
  198. package/machineCommandPrompts.ts +0 -79
  199. package/machineCommandResolution.ts +0 -43
  200. package/noloReadBridgePrompt.ts +0 -16
  201. package/pageCreateCommands.ts +0 -219
  202. package/pageDeleteCommands.ts +0 -167
  203. package/pageReadCommands.ts +0 -151
  204. package/pageUpdateCommands.ts +0 -249
  205. package/pageWriteHelpers.ts +0 -209
  206. package/publishPackage.ts +0 -36
  207. package/runtimeInternalCommandEntries.ts +0 -15
  208. package/runtimePassthroughCommands.ts +0 -22
  209. package/scriptPassthroughHelpers.ts +0 -28
  210. package/secretScanHelpers.ts +0 -31
  211. package/share/helpers.ts +0 -302
  212. package/share/keys.ts +0 -243
  213. package/share/types.ts +0 -100
  214. package/spaceAttachCommands.ts +0 -134
  215. package/spaceCategoryCommands.ts +0 -263
  216. package/spaceCommands.ts +0 -295
  217. package/spaceDeleteCommands.ts +0 -312
  218. package/spaceInternalCommandEntries.ts +0 -21
  219. package/spaceMutationHelpers.ts +0 -135
  220. package/spaceReadCommands.ts +0 -323
  221. package/tableDataOutput.ts +0 -41
  222. package/tableDataSafety.ts +0 -26
  223. package/tableMetaCommands.ts +0 -307
  224. package/tableMutationCommands.ts +0 -266
  225. package/tableQueryParsing.ts +0 -90
  226. package/tableQueryRequest.ts +0 -53
  227. package/taskRunActions.ts +0 -122
  228. package/taskRunParsing.ts +0 -86
  229. package/taskRunPromptShared.ts +0 -55
  230. package/tui/tuiCatalog.ts +0 -22
  231. package/tui/tuiCommandInterpreter.test.ts +0 -169
  232. package/tui/tuiCommandInterpreter.ts +0 -253
  233. package/tui/tuiPresentation.test.ts +0 -154
  234. package/tui/tuiPresentation.ts +0 -146
@@ -49,8 +49,8 @@ describe("cli agent run client", () => {
49
49
  });
50
50
 
51
51
  test("calls the Nolo HTTP API directly when AUTH_TOKEN is present", async () => {
52
- const output = new CaptureOutput();
53
- const requests: Array<{ url: string; body: any; auth: string | null }> = [];
52
+ const output = new CaptureOutput();
53
+ const requests: Array<{ url: string; body: any; auth: string | null }> = [];
54
54
 
55
55
  const result = await runAgentTurn({
56
56
  agentName: "nolo",
@@ -97,124 +97,10 @@ describe("cli agent run client", () => {
97
97
  ]);
98
98
  expect(result).toEqual({ exitCode: 0, dialogId: "dialog-1" });
99
99
  expect(output.text()).toContain("nolo -> working");
100
- expect(output.text()).toContain("nolo > hi");
100
+ expect(output.text()).toContain("nolo > hi");
101
101
  expect(output.text()).not.toContain("tokens=");
102
102
  });
103
103
 
104
- test("retries machine-bound cluster runs on a sibling server when the primary registry is unavailable", async () => {
105
- const output = new CaptureOutput();
106
- const requests: string[] = [];
107
-
108
- const result = await runAgentTurn({
109
- agentName: "frontend",
110
- agentKey: "frontend-implementer",
111
- serverUrl: "https://nolo.chat",
112
- message: "hello",
113
- scriptDir: "C:/missing/scripts",
114
- env: { AUTH_TOKEN: "token-123" },
115
- output,
116
- runtimeMode: "server",
117
- scriptPathExists: () => false,
118
- fetchImpl: async (url) => {
119
- requests.push(String(url));
120
- if (String(url) === "https://nolo.chat/api/agent/run") {
121
- return Response.json({
122
- error: "Runtime binding unavailable",
123
- reason: "bound_machine_unavailable",
124
- message: "Bound runtime machine is not available on this cluster node.",
125
- }, { status: 409 });
126
- }
127
- return Response.json({
128
- content: "cluster ok",
129
- dialogId: "dialog-us",
130
- });
131
- },
132
- });
133
-
134
- expect(result).toEqual({ exitCode: 0, dialogId: "dialog-us" });
135
- expect(requests).toEqual([
136
- "https://nolo.chat/api/agent/run",
137
- "https://us.nolo.chat/api/agent/run",
138
- ]);
139
- expect(output.text()).toContain("retrying https://us.nolo.chat");
140
- expect(output.text()).toContain("frontend > cluster ok");
141
- });
142
-
143
- test("follows an explicit retryServerBase hint before cluster sibling fallback", async () => {
144
- const output = new CaptureOutput();
145
- const requests: string[] = [];
146
-
147
- const result = await runAgentTurn({
148
- agentName: "frontend",
149
- agentKey: "frontend-implementer",
150
- serverUrl: "https://router.nolo.chat",
151
- message: "hello",
152
- scriptDir: "C:/missing/scripts",
153
- env: { AUTH_TOKEN: "token-123" },
154
- output,
155
- runtimeMode: "server",
156
- scriptPathExists: () => false,
157
- fetchImpl: async (url) => {
158
- requests.push(String(url));
159
- if (String(url) === "https://router.nolo.chat/api/agent/run") {
160
- return Response.json({
161
- error: "Runtime binding unavailable",
162
- reason: "bound_machine_unavailable",
163
- message: "Bound runtime machine is not available on this cluster node.",
164
- retryServerBase: "https://us.nolo.chat",
165
- }, { status: 409 });
166
- }
167
- return Response.json({
168
- content: "sticky ok",
169
- dialogId: "dialog-sticky",
170
- });
171
- },
172
- });
173
-
174
- expect(result).toEqual({ exitCode: 0, dialogId: "dialog-sticky" });
175
- expect(requests).toEqual([
176
- "https://router.nolo.chat/api/agent/run",
177
- "https://us.nolo.chat/api/agent/run",
178
- ]);
179
- expect(output.text()).toContain("retrying https://us.nolo.chat");
180
- expect(output.text()).toContain("frontend > sticky ok");
181
- });
182
-
183
- test("does not retry sibling cluster nodes on owner mismatch and prints the detailed binding message", async () => {
184
- const output = new CaptureOutput();
185
- const requests: string[] = [];
186
-
187
- const result = await runAgentTurn({
188
- agentName: "frontend",
189
- agentKey: "frontend-implementer",
190
- serverUrl: "https://nolo.chat",
191
- message: "hello",
192
- scriptDir: "C:/missing/scripts",
193
- env: { AUTH_TOKEN: "token-123" },
194
- output,
195
- runtimeMode: "server",
196
- scriptPathExists: () => false,
197
- fetchImpl: async (url) => {
198
- requests.push(String(url));
199
- return Response.json({
200
- error: "Runtime binding unavailable",
201
- reason: "bound_machine_owner_mismatch",
202
- message:
203
- "Bound runtime machine machine-main is online for the current caller account, " +
204
- "but this agent is bound to a different runtimeBinding.ownerUserId. " +
205
- "Rebind the agent or connect the machine under the binding owner account.",
206
- }, { status: 409 });
207
- },
208
- });
209
-
210
- expect(result).toEqual({ exitCode: 1 });
211
- expect(requests).toEqual(["https://nolo.chat/api/agent/run"]);
212
- expect(output.text()).toContain("Runtime binding unavailable");
213
- expect(output.text()).toContain("Bound runtime machine machine-main is online for the current caller account");
214
- expect(output.text()).toContain("reason=bound_machine_owner_mismatch");
215
- expect(output.text()).not.toContain("retrying https://us.nolo.chat");
216
- });
217
-
218
104
  test("prepends task-run context for HTTP agent runs", async () => {
219
105
  const output = new CaptureOutput();
220
106
  const requests: Array<{ body: any }> = [];
@@ -363,66 +249,6 @@ describe("cli agent run client", () => {
363
249
  expect(result).toEqual({ exitCode: 0, dialogId: "dialog-1" });
364
250
  });
365
251
 
366
- test("drops inherited lineage when continueDialogId is authoritative for HTTP runs and trims it", async () => {
367
- const output = new CaptureOutput();
368
- const requests: Array<{ body: any }> = [];
369
-
370
- await runAgentTurn({
371
- agentName: "nolo",
372
- agentKey: "agent-pub-test",
373
- serverUrl: "https://nolo.chat",
374
- message: "hello",
375
- continueDialogId: " dialog-existing ",
376
- inheritedFromDialogKey: "dialog-user-1-dialog-2",
377
- parentDialogId: "dialog-2",
378
- scriptDir: "C:/missing/scripts",
379
- env: { AUTH_TOKEN: "token-123" },
380
- output,
381
- runtimeMode: "server",
382
- scriptPathExists: () => false,
383
- fetchImpl: async (_url, init) => {
384
- requests.push({ body: JSON.parse(String(init?.body)) });
385
- return Response.json({ content: "ok", dialogId: "dialog-1" });
386
- },
387
- });
388
-
389
- expect(requests[0]?.body).toMatchObject({
390
- continueDialogId: "dialog-existing",
391
- });
392
- expect(requests[0]?.body).not.toHaveProperty("inheritedFromDialogKey");
393
- expect(requests[0]?.body).not.toHaveProperty("parentDialogId");
394
- });
395
-
396
- test("treats blank continueDialogId as absent for HTTP runs", async () => {
397
- const output = new CaptureOutput();
398
- const requests: Array<{ body: any }> = [];
399
-
400
- await runAgentTurn({
401
- agentName: "nolo",
402
- agentKey: "agent-pub-test",
403
- serverUrl: "https://nolo.chat",
404
- message: "hello",
405
- continueDialogId: " ",
406
- inheritedFromDialogKey: "dialog-user-1-dialog-2",
407
- parentDialogId: "dialog-2",
408
- scriptDir: "C:/missing/scripts",
409
- env: { AUTH_TOKEN: "token-123" },
410
- output,
411
- runtimeMode: "server",
412
- scriptPathExists: () => false,
413
- fetchImpl: async (_url, init) => {
414
- requests.push({ body: JSON.parse(String(init?.body)) });
415
- return Response.json({ content: "ok", dialogId: "dialog-1" });
416
- },
417
- });
418
-
419
- expect(requests[0]?.body).not.toHaveProperty("continueDialogId");
420
- expect(requests[0]?.body).toMatchObject({
421
- inheritedFromDialogKey: "dialog-user-1-dialog-2",
422
- parentDialogId: "dialog-2",
423
- });
424
- });
425
-
426
252
  test("records background task-run handoff as running instead of completed", async () => {
427
253
  const output = new CaptureOutput();
428
254
  const writebacks: any[] = [];
@@ -1040,7 +866,7 @@ describe("cli agent run client", () => {
1040
866
  expect(output.text()).toContain("queryTableRows, taskRun");
1041
867
  });
1042
868
 
1043
- test("auto mode falls back to HTTP when local config cannot be read for a non-platform agent", async () => {
869
+ test("auto mode skips known platform agents when local config cannot be read", async () => {
1044
870
  const output = new CaptureOutput();
1045
871
  const httpCalls: Array<{ url: string; body: any }> = [];
1046
872
 
@@ -1082,7 +908,7 @@ describe("cli agent run client", () => {
1082
908
  expect(result).toEqual({ exitCode: 0, dialogId: "dialog-server" });
1083
909
  expect(httpCalls).toHaveLength(1);
1084
910
  expect(httpCalls[0]?.body.agentKey).toBe(NOLO_PROJECT_MANAGER_AGENT_KEY);
1085
- expect(output.text()).toContain("nolo-project-manager -> working locally");
911
+ expect(output.text()).toContain("known platform agent");
1086
912
  expect(output.text()).toContain("nolo-project-manager -> working");
1087
913
  expect(output.text()).toContain("nolo-project-manager > server ok");
1088
914
  });
@@ -1238,8 +1064,8 @@ describe("cli agent run client", () => {
1238
1064
  expect(output.text()).toContain("Set AUTH_TOKEN");
1239
1065
  });
1240
1066
 
1241
- test("prints a friendly connection hint instead of crashing on transport errors", async () => {
1242
- const output = new CaptureOutput();
1067
+ test("prints a friendly connection hint instead of crashing on transport errors", async () => {
1068
+ const output = new CaptureOutput();
1243
1069
 
1244
1070
  const result = await runAgentTurn({
1245
1071
  agentName: "nolo",
@@ -1255,30 +1081,8 @@ describe("cli agent run client", () => {
1255
1081
  },
1256
1082
  });
1257
1083
 
1258
- expect(result).toEqual({ exitCode: 1 });
1259
- expect(output.text()).toContain("Could not reach http://127.0.0.1:38123/api/agent/run");
1260
- expect(output.text()).toContain("set NOLO_SERVER");
1261
- });
1262
-
1263
- test("mentions sandboxed network isolation for remote transport failures", async () => {
1264
- const output = new CaptureOutput();
1265
-
1266
- const result = await runAgentTurn({
1267
- agentName: "nolo",
1268
- agentKey: "agent-pub-test",
1269
- serverUrl: "https://nolo.chat",
1270
- message: "hello",
1271
- scriptDir: "C:/missing/scripts",
1272
- env: { AUTH_TOKEN: "token-123" },
1273
- output,
1274
- scriptPathExists: () => false,
1275
- fetchImpl: async () => {
1276
- throw new TypeError("Unable to connect. Is the computer able to access the url?");
1277
- },
1278
- });
1279
-
1280
- expect(result).toEqual({ exitCode: 1 });
1281
- expect(output.text()).toContain("sandboxed agent session");
1282
- expect(output.text()).toContain("host machine can reach the server");
1283
- });
1284
- });
1084
+ expect(result).toEqual({ exitCode: 1 });
1085
+ expect(output.text()).toContain("Could not reach http://127.0.0.1:38123/api/agent/run");
1086
+ expect(output.text()).toContain("set NOLO_SERVER");
1087
+ });
1088
+ });