nolo-cli 0.182.0-alpha.1 → 0.183.0-alpha.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.
Files changed (66) hide show
  1. package/{_executeModel-ZMEMTJMS.js → _executeModel-YYVG3FYU.js} +24 -16
  2. package/{agentDeleteCommand-VXMMVCHV.js → agentDeleteCommand-EOU67KBO.js} +16 -14
  3. package/{agentEmailCommands-G3UR3SVL.js → agentEmailCommands-HEQLXSP6.js} +18 -16
  4. package/{agentListCommands-V2F7XVZN.js → agentListCommands-4QUON7JZ.js} +21 -61
  5. package/{agentMachineCommands-FALEGGEG.js → agentMachineCommands-53GH4CDQ.js} +7 -6
  6. package/{agentRecordCommands-HN7WNNGT.js → agentRecordCommands-XXN5V3AX.js} +17 -15
  7. package/{agentRunCommand-N3RD7WQ2.js → agentRunCommand-ZUM5E3UV.js} +18 -16
  8. package/{agentRuntimeLocal-B2CGM4VH.js → agentRuntimeLocal-ECGPI3CO.js} +6 -5
  9. package/{agentSlice-NG7VBT4O.js → agentSlice-MS5G7UCC.js} +1 -1
  10. package/{appDeleteCommands-2GVSRT6R.js → appDeleteCommands-UHH52BCJ.js} +6 -5
  11. package/{appDeployCommands-UJVGSH4V.js → appDeployCommands-Z42ILX24.js} +6 -5
  12. package/{appDeployStatusCommands-4UJDG7P3.js → appDeployStatusCommands-COYNEUSI.js} +6 -5
  13. package/{appGetCommands-D5HZK3DJ.js → appGetCommands-35XXIRZJ.js} +6 -5
  14. package/{appListCommands-FAHI4R2I.js → appListCommands-CIUEMKRJ.js} +6 -5
  15. package/{chunk-SO3N2323.js → chunk-3PVH6HJG.js} +2 -2
  16. package/{chunk-JGH3VOCR.js → chunk-5DVM4RIR.js} +2 -2
  17. package/{chunk-3YMDHQAK.js → chunk-5ROGGWPM.js} +8 -8
  18. package/{chunk-EUOPEEMO.js → chunk-7AVKDSWD.js} +1 -1
  19. package/{chunk-HRTEMYBI.js → chunk-ADF4RAQS.js} +1 -1
  20. package/chunk-AMWMV56B.js +73 -0
  21. package/{chunk-Y2CQS353.js → chunk-B3BTDNEC.js} +3 -3
  22. package/{chunk-XYRSQHF2.js → chunk-C3BYVRTJ.js} +2 -2
  23. package/{chunk-7ZGMQZ5D.js → chunk-CSINZLH7.js} +0 -78
  24. package/{chunk-E54QZNU3.js → chunk-DHMXTEM4.js} +1 -1
  25. package/{chunk-7HZ23BLI.js → chunk-FAFNPFGS.js} +7 -7
  26. package/{chunk-G5IZWDSM.js → chunk-FO2BTDKY.js} +11 -9
  27. package/{chunk-BNEHIKIR.js → chunk-FUW33OOI.js} +10 -10
  28. package/chunk-H57T64RA.js +80 -0
  29. package/{chunk-JDCX5RWD.js → chunk-HEYJFOL6.js} +1 -1
  30. package/{chunk-KBVF7LOK.js → chunk-HWJZEUA6.js} +2 -2
  31. package/{chunk-T5RLIVBZ.js → chunk-JWSHARJM.js} +10 -10
  32. package/{chunk-QHFRRM5U.js → chunk-MHC44FKA.js} +3 -3
  33. package/{chunk-EHPJFHFL.js → chunk-MO6NDG3O.js} +3 -3
  34. package/{chunk-UU3QSEA5.js → chunk-NCVSRB7F.js} +9 -9
  35. package/{chunk-T7HBI3WZ.js → chunk-NSASNKVD.js} +4 -2
  36. package/{chunk-RHFEDL32.js → chunk-ORYQ2GDN.js} +2 -2
  37. package/{chunk-YO776XHS.js → chunk-QNLRCES2.js} +2 -2
  38. package/chunk-TZXPT53C.js +8 -0
  39. package/{chunk-GQEQYXWV.js → chunk-WGHIT2HH.js} +13 -13
  40. package/{chunk-ZVVAK3DH.js → chunk-WPWAD6NT.js} +3 -3
  41. package/{commandRegistry-LFXI3KRG.js → commandRegistry-VVY2YPUI.js} +44 -40
  42. package/{contentThunks-AH7QDS6H.js → contentThunks-EWOORWBS.js} +7 -5
  43. package/{createAgentAutomationAction-FAOPVXNF.js → createAgentAutomationAction-TRIAQUAK.js} +7 -5
  44. package/{createDialogAction-DBTKPCXV.js → createDialogAction-FXPXXDRR.js} +8 -6
  45. package/{createPageAction-PZGKZFPS.js → createPageAction-HHFPJKBD.js} +7 -5
  46. package/{dialogCommands-GQPHQ2U6.js → dialogCommands-6Z27OC2B.js} +6 -5
  47. package/{dialogSlice-VHGZCHAQ.js → dialogSlice-4W7DJJC2.js} +6 -4
  48. package/dialogUsageCommand-ZPESQB6W.js +136 -0
  49. package/{docCreateCommands-CQHPL5IB.js → docCreateCommands-EBLE6KZA.js} +6 -5
  50. package/{docDeleteCommands-Z5UPI5PX.js → docDeleteCommands-7JONZ5PW.js} +6 -5
  51. package/{docReadCommands-2AEKFEFV.js → docReadCommands-NI4LTXAV.js} +6 -5
  52. package/{docStore-XGWH3T7Q.js → docStore-VBINJLRX.js} +1 -1
  53. package/{docUpdateCommands-FZD4GSGV.js → docUpdateCommands-QF4J5XQI.js} +6 -5
  54. package/{handleSendMessageAction-XTQQEVD4.js → handleSendMessageAction-FJKTVMCA.js} +11 -9
  55. package/index.js +4 -4
  56. package/{localRuntimeAdapter-LXMUSNJ5.js → localRuntimeAdapter-QZNQNL2X.js} +16 -14
  57. package/{machineCommands-AXD7ISGC.js → machineCommands-53PSUEW7.js} +17 -15
  58. package/{machineWsRunDispatch-PGB3VJGM.js → machineWsRunDispatch-JNNSLAOT.js} +17 -15
  59. package/package.json +1 -1
  60. package/{readlineWorkspace-IO45OJPW.js → readlineWorkspace-46TGVQQ7.js} +18 -16
  61. package/{runAgentClientLoop-2APY5UZL.js → runAgentClientLoop-KV6R3FSU.js} +15 -13
  62. package/{spaceCommands-LM74S5WK.js → spaceCommands-CIXBPVEY.js} +6 -5
  63. package/{streamAgentChatTurn-Z3KS7XZL.js → streamAgentChatTurn-RTQ2DU4K.js} +17 -15
  64. package/{tools-VWAK7F7J.js → tools-R6JLL5PS.js} +11 -9
  65. package/{tuiSummaryLlmCaller-A6T54UJ3.js → tuiSummaryLlmCaller-5D3XCH2C.js} +4 -3
  66. package/{updateDialogTitleAction-WBIPSXFL.js → updateDialogTitleAction-2QNU4T4I.js} +7 -5
@@ -111,7 +111,7 @@ function createDaemonShortcutCommand(path, description, command) {
111
111
  // packages/cli/agentInternalCommandEntries.ts
112
112
  function getAgentInternalCommandEntries() {
113
113
  const createAgentRunCommand = (path, description) => createContextCommand(path, description, async (args, ctx) => {
114
- const { runAgentRunCommand } = await import("./agentRunCommand-N3RD7WQ2.js");
114
+ const { runAgentRunCommand } = await import("./agentRunCommand-ZUM5E3UV.js");
115
115
  return runAgentRunCommand(args, {
116
116
  env: ctx.env,
117
117
  scriptDir: ctx.scriptDir,
@@ -123,11 +123,11 @@ function getAgentInternalCommandEntries() {
123
123
  createAgentRunCommand(["run"], "Run a no-login local agent in this workspace"),
124
124
  createAgentRunCommand(["chat"], "Chat with an agent"),
125
125
  createEnvCommand(["agent", "list"], "List owned agents", async (args, deps) => {
126
- const { runAgentListCommand } = await import("./agentListCommands-V2F7XVZN.js");
126
+ const { runAgentListCommand } = await import("./agentListCommands-4QUON7JZ.js");
127
127
  return runAgentListCommand(args, deps);
128
128
  }),
129
129
  createEnvCommand(["agent", "create"], "Create a new agent", async (args, deps) => {
130
- const { runAgentCreateCommand } = await import("./agentRecordCommands-HN7WNNGT.js");
130
+ const { runAgentCreateCommand } = await import("./agentRecordCommands-XXN5V3AX.js");
131
131
  return runAgentCreateCommand(args, deps);
132
132
  }),
133
133
  createEnvCommand(["agent", "models"], "List models: --preset <id> (server discovery, exit 1 on static fallback) or --url <base> --api-key <key> (OpenAI-compatible /models)", async (args, deps) => {
@@ -143,7 +143,7 @@ function getAgentInternalCommandEntries() {
143
143
  return runAgentPullCommand(args, deps);
144
144
  }),
145
145
  createEnvCommand(["agent", "read"], "Read a single agent", async (args, deps) => {
146
- const { runAgentReadCommand } = await import("./agentRecordCommands-HN7WNNGT.js");
146
+ const { runAgentReadCommand } = await import("./agentRecordCommands-XXN5V3AX.js");
147
147
  return runAgentReadCommand(args, deps);
148
148
  }),
149
149
  createAgentRunCommand(["agent", "run"], "Run an agent"),
@@ -172,31 +172,31 @@ function getAgentInternalCommandEntries() {
172
172
  return runSetupOfflineMarxistsAgentCommand(args, deps);
173
173
  }),
174
174
  createEnvCommand(["agent", "update"], "Update agent fields", async (args, deps) => {
175
- const { runAgentUpdateCommand } = await import("./agentRecordCommands-HN7WNNGT.js");
175
+ const { runAgentUpdateCommand } = await import("./agentRecordCommands-XXN5V3AX.js");
176
176
  return runAgentUpdateCommand(args, deps);
177
177
  }),
178
178
  createEnvCommand(["agent", "email", "provision"], "Provision a controlled inbox for an agent", async (args, deps) => {
179
- const { runAgentEmailProvisionCommand } = await import("./agentEmailCommands-G3UR3SVL.js");
179
+ const { runAgentEmailProvisionCommand } = await import("./agentEmailCommands-HEQLXSP6.js");
180
180
  return runAgentEmailProvisionCommand(args, deps);
181
181
  }),
182
182
  createEnvCommand(["agent", "email", "bind"], "Bind an existing email address to an agent", async (args, deps) => {
183
- const { runAgentEmailBindCommand } = await import("./agentEmailCommands-G3UR3SVL.js");
183
+ const { runAgentEmailBindCommand } = await import("./agentEmailCommands-HEQLXSP6.js");
184
184
  return runAgentEmailBindCommand(args, deps);
185
185
  }),
186
186
  createEnvCommand(["agent", "email", "transfer"], "Transfer an email identity from one agent to another (cross-account)", async (args, deps) => {
187
- const { runAgentEmailTransferCommand } = await import("./agentEmailCommands-G3UR3SVL.js");
187
+ const { runAgentEmailTransferCommand } = await import("./agentEmailCommands-HEQLXSP6.js");
188
188
  return runAgentEmailTransferCommand(args, deps);
189
189
  }),
190
190
  createEnvCommand(
191
191
  ["agent", "email", "create-and-provision"],
192
192
  "Create an agent and provision its controlled inbox",
193
193
  async (args, deps) => {
194
- const { runAgentEmailCreateAndProvisionCommand } = await import("./agentEmailCommands-G3UR3SVL.js");
194
+ const { runAgentEmailCreateAndProvisionCommand } = await import("./agentEmailCommands-HEQLXSP6.js");
195
195
  return runAgentEmailCreateAndProvisionCommand(args, deps);
196
196
  }
197
197
  ),
198
198
  createEnvCommand(["agent", "delete"], "Hard-delete an agent's private and public records", async (args, deps) => {
199
- const { runAgentDeleteCommand } = await import("./agentDeleteCommand-VXMMVCHV.js");
199
+ const { runAgentDeleteCommand } = await import("./agentDeleteCommand-EOU67KBO.js");
200
200
  return runAgentDeleteCommand(args, deps);
201
201
  }),
202
202
  createEnvCommand(["agent", "grant"], "Grant another user access to this agent's owner credentials", async (args, deps) => {
@@ -212,15 +212,15 @@ function getAgentInternalCommandEntries() {
212
212
  return runAgentRevokeGrantCommand(args, deps);
213
213
  }),
214
214
  createEnvCommand(["agent", "bind-current"], "Bind an agent to this machine", async (args, deps) => {
215
- const { runAgentBindCurrentCommand } = await import("./agentMachineCommands-FALEGGEG.js");
215
+ const { runAgentBindCurrentCommand } = await import("./agentMachineCommands-53GH4CDQ.js");
216
216
  return runAgentBindCurrentCommand(args, deps);
217
217
  }),
218
218
  createEnvCommand(["agent", "smoke-current"], "Smoke test a bound agent through this machine", async (args, deps) => {
219
- const { runAgentSmokeCurrentCommand } = await import("./agentMachineCommands-FALEGGEG.js");
219
+ const { runAgentSmokeCurrentCommand } = await import("./agentMachineCommands-53GH4CDQ.js");
220
220
  return runAgentSmokeCurrentCommand(args, deps);
221
221
  }),
222
222
  createEnvCommand(["agent", "runtime-doctor"], "Diagnose current machine runtime compatibility", async (args, deps) => {
223
- const { runAgentRuntimeDoctorCommand } = await import("./agentMachineCommands-FALEGGEG.js");
223
+ const { runAgentRuntimeDoctorCommand } = await import("./agentMachineCommands-53GH4CDQ.js");
224
224
  return runAgentRuntimeDoctorCommand(args, deps);
225
225
  }),
226
226
  createAgentRunCommand(["agent", "chat"], "Chat with an agent")
@@ -231,23 +231,23 @@ function getAgentInternalCommandEntries() {
231
231
  function getAppInternalCommandEntries() {
232
232
  return [
233
233
  createEnvCommand(["app", "list"], "List your apps", async (args, deps) => {
234
- const { runAppListCommand } = await import("./appListCommands-FAHI4R2I.js");
234
+ const { runAppListCommand } = await import("./appListCommands-CIUEMKRJ.js");
235
235
  return runAppListCommand(args, deps);
236
236
  }),
237
237
  createEnvCommand(["app", "get"], "Get app details", async (args, deps) => {
238
- const { runAppGetCommand } = await import("./appGetCommands-D5HZK3DJ.js");
238
+ const { runAppGetCommand } = await import("./appGetCommands-35XXIRZJ.js");
239
239
  return runAppGetCommand(args, deps);
240
240
  }),
241
241
  createEnvCommand(["app", "deploy"], "Deploy an app", async (args, deps) => {
242
- const { runAppDeployCommand } = await import("./appDeployCommands-UJVGSH4V.js");
242
+ const { runAppDeployCommand } = await import("./appDeployCommands-Z42ILX24.js");
243
243
  return runAppDeployCommand(args, deps);
244
244
  }),
245
245
  createEnvCommand(["app", "deploy", "status"], "Check app deploy status", async (args, deps) => {
246
- const { runAppDeployStatusCommand } = await import("./appDeployStatusCommands-4UJDG7P3.js");
246
+ const { runAppDeployStatusCommand } = await import("./appDeployStatusCommands-COYNEUSI.js");
247
247
  return runAppDeployStatusCommand(args, deps);
248
248
  }),
249
249
  createEnvCommand(["app", "delete"], "Delete an app", async (args, deps) => {
250
- const { runAppDeleteCommand } = await import("./appDeleteCommands-2GVSRT6R.js");
250
+ const { runAppDeleteCommand } = await import("./appDeleteCommands-UHH52BCJ.js");
251
251
  return runAppDeleteCommand(args, deps);
252
252
  })
253
253
  ];
@@ -379,27 +379,27 @@ function getCiInternalCommandEntries() {
379
379
  function getDialogInternalCommandEntries() {
380
380
  return [
381
381
  createEnvCommand(["dialog", "search"], "Search dialog messages across dialogs", async (args, deps) => {
382
- const { runDialogSearchCommand } = await import("./dialogCommands-GQPHQ2U6.js");
382
+ const { runDialogSearchCommand } = await import("./dialogCommands-6Z27OC2B.js");
383
383
  return runDialogSearchCommand(args, deps);
384
384
  }),
385
385
  createEnvCommand(["dialog", "list"], "List dialogs (default --limit 50; --all/--limit 0 full; --jsonl streams)", async (args, deps) => {
386
- const { runDialogListCommand } = await import("./dialogCommands-GQPHQ2U6.js");
386
+ const { runDialogListCommand } = await import("./dialogCommands-6Z27OC2B.js");
387
387
  return runDialogListCommand(args, deps);
388
388
  }),
389
389
  createEnvCommand(["dialog", "delete"], "Delete one or more dialogs", async (args, deps) => {
390
- const { runDialogDeleteCommand } = await import("./dialogCommands-GQPHQ2U6.js");
390
+ const { runDialogDeleteCommand } = await import("./dialogCommands-6Z27OC2B.js");
391
391
  return runDialogDeleteCommand(args, deps);
392
392
  }),
393
393
  createEnvCommand(["dialog", "query"], "Query dialogs by subject refs (default --limit 50; --all full; --jsonl streams)", async (args, deps) => {
394
- const { runDialogQueryCommand } = await import("./dialogCommands-GQPHQ2U6.js");
394
+ const { runDialogQueryCommand } = await import("./dialogCommands-6Z27OC2B.js");
395
395
  return runDialogQueryCommand(args, deps);
396
396
  }),
397
397
  createEnvCommand(["dialog", "read"], "Read a dialog", async (args, deps) => {
398
- const { runDialogReadCommand } = await import("./dialogCommands-GQPHQ2U6.js");
398
+ const { runDialogReadCommand } = await import("./dialogCommands-6Z27OC2B.js");
399
399
  return runDialogReadCommand(args, deps);
400
400
  }),
401
401
  createEnvCommand(["dialog", "status"], "Read compact dialog status", async (args, deps) => {
402
- const { runDialogStatusCommand } = await import("./dialogCommands-GQPHQ2U6.js");
402
+ const { runDialogStatusCommand } = await import("./dialogCommands-6Z27OC2B.js");
403
403
  return runDialogStatusCommand(args, deps);
404
404
  })
405
405
  ];
@@ -409,39 +409,39 @@ function getDialogInternalCommandEntries() {
409
409
  function getDocInternalCommandEntries() {
410
410
  return [
411
411
  createEnvCommand(["doc", "create"], "Create a normal doc", async (args, deps) => {
412
- const { runDocCreateCommand } = await import("./docCreateCommands-CQHPL5IB.js");
412
+ const { runDocCreateCommand } = await import("./docCreateCommands-EBLE6KZA.js");
413
413
  return runDocCreateCommand(args, deps);
414
414
  }),
415
415
  createEnvCommand(["doc", "read"], "Read a normal doc", async (args, deps) => {
416
- const { runDocReadCommand } = await import("./docReadCommands-2AEKFEFV.js");
416
+ const { runDocReadCommand } = await import("./docReadCommands-NI4LTXAV.js");
417
417
  return runDocReadCommand(args, deps);
418
418
  }),
419
419
  createEnvCommand(["doc", "update"], "Update a normal doc", async (args, deps) => {
420
- const { runDocUpdateCommand } = await import("./docUpdateCommands-FZD4GSGV.js");
420
+ const { runDocUpdateCommand } = await import("./docUpdateCommands-QF4J5XQI.js");
421
421
  return runDocUpdateCommand(args, deps);
422
422
  }),
423
423
  createEnvCommand(["doc", "delete"], "Delete a normal doc", async (args, deps) => {
424
- const { runDocDeleteCommand } = await import("./docDeleteCommands-Z5UPI5PX.js");
424
+ const { runDocDeleteCommand } = await import("./docDeleteCommands-7JONZ5PW.js");
425
425
  return runDocDeleteCommand(args, deps);
426
426
  }),
427
427
  createEnvCommand(["skill-doc", "create"], "Create a skill-backed doc", async (args, deps) => {
428
- const { runSkillDocCreateCommand } = await import("./docCreateCommands-CQHPL5IB.js");
428
+ const { runSkillDocCreateCommand } = await import("./docCreateCommands-EBLE6KZA.js");
429
429
  return runSkillDocCreateCommand(args, deps);
430
430
  }),
431
431
  createEnvCommand(["skill", "create-doc"], "Create a skill-backed doc", async (args, deps) => {
432
- const { runSkillDocCreateCommand } = await import("./docCreateCommands-CQHPL5IB.js");
432
+ const { runSkillDocCreateCommand } = await import("./docCreateCommands-EBLE6KZA.js");
433
433
  return runSkillDocCreateCommand(args, deps);
434
434
  }),
435
435
  createEnvCommand(["skill-doc", "read"], "Read a skill doc", async (args, deps) => {
436
- const { runSkillDocReadCommand } = await import("./docReadCommands-2AEKFEFV.js");
436
+ const { runSkillDocReadCommand } = await import("./docReadCommands-NI4LTXAV.js");
437
437
  return runSkillDocReadCommand(args, deps);
438
438
  }),
439
439
  createEnvCommand(["skill-doc", "update"], "Update a skill doc", async (args, deps) => {
440
- const { runSkillDocUpdateCommand } = await import("./docUpdateCommands-FZD4GSGV.js");
440
+ const { runSkillDocUpdateCommand } = await import("./docUpdateCommands-QF4J5XQI.js");
441
441
  return runSkillDocUpdateCommand(args, deps);
442
442
  }),
443
443
  createEnvCommand(["skill-doc", "delete"], "Delete a skill doc", async (args, deps) => {
444
- const { runSkillDocDeleteCommand } = await import("./docDeleteCommands-Z5UPI5PX.js");
444
+ const { runSkillDocDeleteCommand } = await import("./docDeleteCommands-7JONZ5PW.js");
445
445
  return runSkillDocDeleteCommand(args, deps);
446
446
  })
447
447
  ];
@@ -469,19 +469,19 @@ function getMemoryInternalCommandEntries() {
469
469
  function getSpaceInternalCommandEntries() {
470
470
  return [
471
471
  createEnvCommand(["space", "create"], "Create a space", async (args, deps) => {
472
- const { runSpaceCreateCommand } = await import("./spaceCommands-LM74S5WK.js");
472
+ const { runSpaceCreateCommand } = await import("./spaceCommands-CIXBPVEY.js");
473
473
  return runSpaceCreateCommand(args, deps);
474
474
  }),
475
475
  createEnvCommand(["space", "invite"], "Invite an existing user to a space", async (args, deps) => {
476
- const { runSpaceInviteCommand } = await import("./spaceCommands-LM74S5WK.js");
476
+ const { runSpaceInviteCommand } = await import("./spaceCommands-CIXBPVEY.js");
477
477
  return runSpaceInviteCommand(args, deps);
478
478
  }),
479
479
  createEnvCommand(["space", "accept-invite"], "Accept a space invite", async (args, deps) => {
480
- const { runSpaceAcceptInviteCommand } = await import("./spaceCommands-LM74S5WK.js");
480
+ const { runSpaceAcceptInviteCommand } = await import("./spaceCommands-CIXBPVEY.js");
481
481
  return runSpaceAcceptInviteCommand(args, deps);
482
482
  }),
483
483
  createEnvCommand(["space", "upload"], "Upload a file to a space", async (args, deps) => {
484
- const { runSpaceUploadCommand } = await import("./spaceCommands-LM74S5WK.js");
484
+ const { runSpaceUploadCommand } = await import("./spaceCommands-CIXBPVEY.js");
485
485
  return runSpaceUploadCommand(args, deps);
486
486
  })
487
487
  ];
@@ -490,6 +490,10 @@ function getSpaceInternalCommandEntries() {
490
490
  // packages/cli/systemInternalCommandEntries.ts
491
491
  function getSystemInternalCommandEntries(renderHelpText2) {
492
492
  return [
493
+ createContextCommand(["dialog", "usage"], "Show dialog tokens, recorded duration and speed by basis", async (args, ctx) => {
494
+ const { runDialogUsageCommand } = await import("./dialogUsageCommand-ZPESQB6W.js");
495
+ return runDialogUsageCommand(args, { env: ctx.env });
496
+ }),
493
497
  createContextCommand(["auth", "cooldown"], "List / clear credential availability cooldowns", async (_args, ctx) => {
494
498
  const { runAuthCooldownCommand } = await import("./cooldownCommands-QFV3ERZX.js");
495
499
  return runAuthCooldownCommand(_args, ctx.env);
@@ -535,15 +539,15 @@ function getSystemInternalCommandEntries(renderHelpText2) {
535
539
  return runWhoamiCommand({ args, env: ctx.env });
536
540
  }),
537
541
  createEntrypointEnvCommand(["connect"], "Send machine heartbeats or hold a connector websocket", async (args, deps) => {
538
- const { runMachineConnectCommand } = await import("./machineCommands-AXD7ISGC.js");
542
+ const { runMachineConnectCommand } = await import("./machineCommands-53PSUEW7.js");
539
543
  return runMachineConnectCommand(args, deps);
540
544
  }),
541
545
  createDaemonShortcutCommand(["daemon"], "Run the connector daemon shortcut", async (args, deps) => {
542
- const { runMachineConnectCommand } = await import("./machineCommands-AXD7ISGC.js");
546
+ const { runMachineConnectCommand } = await import("./machineCommands-53PSUEW7.js");
543
547
  return runMachineConnectCommand(args, deps);
544
548
  }),
545
549
  createEnvCommand(["machine", "status"], "List machines registered to the current profile", async (args, deps) => {
546
- const { runMachineStatusCommand } = await import("./machineCommands-AXD7ISGC.js");
550
+ const { runMachineStatusCommand } = await import("./machineCommands-53PSUEW7.js");
547
551
  return runMachineStatusCommand(args, deps);
548
552
  }),
549
553
  createEnvCommand(["doctor", "runtime"], "Diagnose local-first agent runtime selection", async (args, deps) => {
@@ -8,14 +8,15 @@ import {
8
8
  updateContentPinned,
9
9
  updateContentTitle,
10
10
  uploadAndAddFileToSpace
11
- } from "./chunk-EUOPEEMO.js";
11
+ } from "./chunk-7AVKDSWD.js";
12
12
  import "./chunk-ZJ7UHBJS.js";
13
- import "./chunk-GQEQYXWV.js";
13
+ import "./chunk-WGHIT2HH.js";
14
+ import "./chunk-TZXPT53C.js";
14
15
  import "./chunk-523DITKR.js";
15
16
  import "./chunk-OFFL4DCR.js";
16
17
  import "./chunk-BYXBJQAS.js";
17
18
  import "./chunk-QYPE3TS3.js";
18
- import "./chunk-QHFRRM5U.js";
19
+ import "./chunk-MHC44FKA.js";
19
20
  import "./chunk-4JH2UMJR.js";
20
21
  import "./chunk-ESMZW5PE.js";
21
22
  import "./chunk-5RGU3J7P.js";
@@ -40,9 +41,10 @@ import "./chunk-OW765XBU.js";
40
41
  import "./chunk-PXYBUFDB.js";
41
42
  import "./chunk-D2MDMY2M.js";
42
43
  import "./chunk-Y6ORVLSS.js";
43
- import "./chunk-T7HBI3WZ.js";
44
+ import "./chunk-NSASNKVD.js";
44
45
  import "./chunk-5ZUL4CUO.js";
45
- import "./chunk-7ZGMQZ5D.js";
46
+ import "./chunk-CSINZLH7.js";
47
+ import "./chunk-H57T64RA.js";
46
48
  import "./chunk-UKZX3NHN.js";
47
49
  import "./chunk-5MMAK75Q.js";
48
50
  import "./chunk-DWLEOOGR.js";
@@ -1,13 +1,14 @@
1
1
  import {
2
2
  addContentToSpace
3
- } from "./chunk-EUOPEEMO.js";
3
+ } from "./chunk-7AVKDSWD.js";
4
4
  import "./chunk-ZJ7UHBJS.js";
5
- import "./chunk-GQEQYXWV.js";
5
+ import "./chunk-WGHIT2HH.js";
6
+ import "./chunk-TZXPT53C.js";
6
7
  import "./chunk-523DITKR.js";
7
8
  import "./chunk-OFFL4DCR.js";
8
9
  import "./chunk-BYXBJQAS.js";
9
10
  import "./chunk-QYPE3TS3.js";
10
- import "./chunk-QHFRRM5U.js";
11
+ import "./chunk-MHC44FKA.js";
11
12
  import "./chunk-4JH2UMJR.js";
12
13
  import "./chunk-ESMZW5PE.js";
13
14
  import "./chunk-5RGU3J7P.js";
@@ -36,9 +37,10 @@ import {
36
37
  } from "./chunk-PXYBUFDB.js";
37
38
  import "./chunk-D2MDMY2M.js";
38
39
  import "./chunk-Y6ORVLSS.js";
39
- import "./chunk-T7HBI3WZ.js";
40
+ import "./chunk-NSASNKVD.js";
40
41
  import "./chunk-5ZUL4CUO.js";
41
- import "./chunk-7ZGMQZ5D.js";
42
+ import "./chunk-CSINZLH7.js";
43
+ import "./chunk-H57T64RA.js";
42
44
  import "./chunk-UKZX3NHN.js";
43
45
  import "./chunk-5MMAK75Q.js";
44
46
  import "./chunk-DWLEOOGR.js";
@@ -1,15 +1,16 @@
1
1
  import {
2
2
  createDialogAction,
3
3
  isLocalOwnerDialogAgents
4
- } from "./chunk-SO3N2323.js";
5
- import "./chunk-EUOPEEMO.js";
4
+ } from "./chunk-3PVH6HJG.js";
5
+ import "./chunk-7AVKDSWD.js";
6
6
  import "./chunk-ZJ7UHBJS.js";
7
- import "./chunk-GQEQYXWV.js";
7
+ import "./chunk-WGHIT2HH.js";
8
+ import "./chunk-TZXPT53C.js";
8
9
  import "./chunk-523DITKR.js";
9
10
  import "./chunk-OFFL4DCR.js";
10
11
  import "./chunk-BYXBJQAS.js";
11
12
  import "./chunk-QYPE3TS3.js";
12
- import "./chunk-QHFRRM5U.js";
13
+ import "./chunk-MHC44FKA.js";
13
14
  import "./chunk-4JH2UMJR.js";
14
15
  import "./chunk-ESMZW5PE.js";
15
16
  import "./chunk-5RGU3J7P.js";
@@ -38,9 +39,10 @@ import "./chunk-EUGTFFO6.js";
38
39
  import "./chunk-AETZ7AD6.js";
39
40
  import "./chunk-Y6ORVLSS.js";
40
41
  import "./chunk-KHCLMKZZ.js";
41
- import "./chunk-T7HBI3WZ.js";
42
+ import "./chunk-NSASNKVD.js";
42
43
  import "./chunk-5ZUL4CUO.js";
43
- import "./chunk-7ZGMQZ5D.js";
44
+ import "./chunk-CSINZLH7.js";
45
+ import "./chunk-H57T64RA.js";
44
46
  import "./chunk-UKZX3NHN.js";
45
47
  import "./chunk-5MMAK75Q.js";
46
48
  import "./chunk-DWLEOOGR.js";
@@ -13,18 +13,19 @@ import {
13
13
  } from "./chunk-VF4K2QE6.js";
14
14
  import {
15
15
  addContentToSpace
16
- } from "./chunk-EUOPEEMO.js";
16
+ } from "./chunk-7AVKDSWD.js";
17
17
  import {
18
18
  getCurrentSpaceId
19
19
  } from "./chunk-ZJ7UHBJS.js";
20
20
  import {
21
21
  runtime_default
22
- } from "./chunk-GQEQYXWV.js";
22
+ } from "./chunk-WGHIT2HH.js";
23
+ import "./chunk-TZXPT53C.js";
23
24
  import "./chunk-523DITKR.js";
24
25
  import "./chunk-OFFL4DCR.js";
25
26
  import "./chunk-BYXBJQAS.js";
26
27
  import "./chunk-QYPE3TS3.js";
27
- import "./chunk-QHFRRM5U.js";
28
+ import "./chunk-MHC44FKA.js";
28
29
  import "./chunk-4JH2UMJR.js";
29
30
  import "./chunk-ESMZW5PE.js";
30
31
  import "./chunk-5RGU3J7P.js";
@@ -57,9 +58,10 @@ import {
57
58
  } from "./chunk-AETZ7AD6.js";
58
59
  import "./chunk-Y6ORVLSS.js";
59
60
  import "./chunk-KHCLMKZZ.js";
60
- import "./chunk-T7HBI3WZ.js";
61
+ import "./chunk-NSASNKVD.js";
61
62
  import "./chunk-5ZUL4CUO.js";
62
- import "./chunk-7ZGMQZ5D.js";
63
+ import "./chunk-CSINZLH7.js";
64
+ import "./chunk-H57T64RA.js";
63
65
  import "./chunk-UKZX3NHN.js";
64
66
  import "./chunk-5MMAK75Q.js";
65
67
  import "./chunk-DWLEOOGR.js";
@@ -30,10 +30,10 @@ import "./chunk-OFFL4DCR.js";
30
30
  import "./chunk-QQ56R7KS.js";
31
31
  import "./chunk-OW765XBU.js";
32
32
  import "./chunk-D2MDMY2M.js";
33
- import "./chunk-G5IZWDSM.js";
33
+ import "./chunk-FO2BTDKY.js";
34
34
  import "./chunk-KMSMIOOL.js";
35
35
  import "./chunk-ZNFJWEN4.js";
36
- import "./chunk-YO776XHS.js";
36
+ import "./chunk-QNLRCES2.js";
37
37
  import "./chunk-HNUWUO75.js";
38
38
  import "./chunk-HIVDQPQR.js";
39
39
  import "./chunk-CHOZJMJS.js";
@@ -45,15 +45,16 @@ import "./chunk-G6OOUQWJ.js";
45
45
  import "./chunk-56GBUMO5.js";
46
46
  import "./chunk-WJZOQR2J.js";
47
47
  import "./chunk-TQU64H2A.js";
48
- import "./chunk-JDCX5RWD.js";
48
+ import "./chunk-HEYJFOL6.js";
49
49
  import "./chunk-E2BESSAW.js";
50
50
  import "./chunk-3FTJG5NU.js";
51
51
  import "./chunk-JLR5NWP2.js";
52
52
  import "./chunk-XAFCJN32.js";
53
53
  import "./chunk-2MBTWINN.js";
54
- import "./chunk-T7HBI3WZ.js";
54
+ import "./chunk-NSASNKVD.js";
55
55
  import "./chunk-5ZUL4CUO.js";
56
- import "./chunk-7ZGMQZ5D.js";
56
+ import "./chunk-CSINZLH7.js";
57
+ import "./chunk-H57T64RA.js";
57
58
  import "./chunk-UKZX3NHN.js";
58
59
  import "./chunk-5MMAK75Q.js";
59
60
  import "./chunk-DWLEOOGR.js";
@@ -20,12 +20,13 @@ import {
20
20
  switchDialogAgent,
21
21
  updateDialogTitle,
22
22
  updateTokens
23
- } from "./chunk-GQEQYXWV.js";
23
+ } from "./chunk-WGHIT2HH.js";
24
+ import "./chunk-TZXPT53C.js";
24
25
  import "./chunk-523DITKR.js";
25
26
  import "./chunk-OFFL4DCR.js";
26
27
  import "./chunk-BYXBJQAS.js";
27
28
  import "./chunk-QYPE3TS3.js";
28
- import "./chunk-QHFRRM5U.js";
29
+ import "./chunk-MHC44FKA.js";
29
30
  import "./chunk-4JH2UMJR.js";
30
31
  import "./chunk-ESMZW5PE.js";
31
32
  import {
@@ -91,9 +92,10 @@ import "./chunk-OW765XBU.js";
91
92
  import "./chunk-PXYBUFDB.js";
92
93
  import "./chunk-D2MDMY2M.js";
93
94
  import "./chunk-Y6ORVLSS.js";
94
- import "./chunk-T7HBI3WZ.js";
95
+ import "./chunk-NSASNKVD.js";
95
96
  import "./chunk-5ZUL4CUO.js";
96
- import "./chunk-7ZGMQZ5D.js";
97
+ import "./chunk-CSINZLH7.js";
98
+ import "./chunk-H57T64RA.js";
97
99
  import "./chunk-UKZX3NHN.js";
98
100
  import "./chunk-5MMAK75Q.js";
99
101
  import "./chunk-DWLEOOGR.js";
@@ -0,0 +1,136 @@
1
+ import {
2
+ resolveObservedSpeed
3
+ } from "./chunk-AMWMV56B.js";
4
+ import {
5
+ ALL_MODELS
6
+ } from "./chunk-TZXPT53C.js";
7
+ import {
8
+ normalizeTimingMs
9
+ } from "./chunk-H57T64RA.js";
10
+ import {
11
+ extractCustomId
12
+ } from "./chunk-M2EJHDJP.js";
13
+ import {
14
+ resolveAuthToken,
15
+ resolveServerUrl
16
+ } from "./chunk-WACI5I6V.js";
17
+ import "./chunk-OLZBQWZU.js";
18
+ import "./chunk-LCBAMY2M.js";
19
+ import "./chunk-4SN6J65J.js";
20
+ import "./chunk-CF7PE763.js";
21
+ import "./chunk-G3SUCT4W.js";
22
+ import "./chunk-4VNS5WPM.js";
23
+
24
+ // packages/ai/token/usageApi.ts
25
+ var normalizeServer = (server) => server.replace(/\/+$/, "");
26
+ var authHeaders = (token) => ({
27
+ "Content-Type": "application/json",
28
+ ...token ? { Authorization: `Bearer ${token}` } : {}
29
+ });
30
+ async function fetchUsageRecordsPage(deps, params) {
31
+ const { startTime, endTime, model, dialogId, pageSize = 50, cursor } = params;
32
+ const query = new URLSearchParams();
33
+ if (dialogId) query.set("dialogId", dialogId);
34
+ if (typeof startTime === "number" && Number.isFinite(startTime)) {
35
+ query.set("startTime", String(startTime));
36
+ }
37
+ if (typeof endTime === "number" && Number.isFinite(endTime)) {
38
+ query.set("endTime", String(endTime));
39
+ }
40
+ query.set("limit", String(pageSize));
41
+ if (model && model !== ALL_MODELS) {
42
+ query.set("model", model);
43
+ }
44
+ if (dialogId) {
45
+ query.set("dialogId", dialogId);
46
+ }
47
+ if (cursor) {
48
+ query.set("cursor", cursor);
49
+ }
50
+ const response = await fetch(
51
+ `${normalizeServer(deps.server)}/api/v1/usage/records?${query.toString()}`,
52
+ { method: "GET", headers: authHeaders(deps.token) }
53
+ );
54
+ if (!response.ok) {
55
+ const errorBody = await response.json().catch(() => ({}));
56
+ throw new Error(
57
+ errorBody?.error?.message || `Failed to fetch usage records: HTTP ${response.status}`
58
+ );
59
+ }
60
+ const data = await response.json();
61
+ return {
62
+ records: data.records || [],
63
+ nextCursor: data.nextCursor,
64
+ hasMore: Boolean(data.hasMore)
65
+ };
66
+ }
67
+
68
+ // packages/cli/dialogUsageCommand.ts
69
+ function formatDialogUsage(dialogKey, records) {
70
+ if (records.length === 0) return `${dialogKey}: \u65E0\u7528\u91CF\u8BB0\u5F55\uFF08\u5BF9\u8BDD\u4E0D\u5B58\u5728\u6216\u5C1A\u65E0\u8BB0\u5F55\uFF09\u3002
71
+ `;
72
+ const input = records.reduce((sum, record) => sum + record.input_tokens, 0);
73
+ const output = records.reduce((sum, record) => sum + record.output_tokens, 0);
74
+ const durations = records.flatMap((record) => {
75
+ const ms = normalizeTimingMs(record.callDurationMs);
76
+ return ms === void 0 ? [] : [ms];
77
+ });
78
+ const lines = [
79
+ `Dialog: ${dialogKey}`,
80
+ `\u8C03\u7528\u6B21\u6570\uFF08\u7528\u91CF\u8BB0\u5F55\uFF09: ${records.length}`,
81
+ `Tokens: input=${input}, output=${output}`
82
+ ];
83
+ if (durations.length === 0) {
84
+ lines.push("\u65E0\u8017\u65F6\u6570\u636E");
85
+ } else {
86
+ lines.push(`\u603B\u8017\u65F6\uFF08\u5DF2\u8BB0\u5F55\u8C03\u7528\u4E4B\u548C\uFF0C\u975E\u5BF9\u8BDD\u5899\u949F\u65F6\u957F\uFF09: ${durations.reduce((a, b) => a + b, 0)} ms\uFF08\u8986\u76D6 ${durations.length}/${records.length}\uFF09`);
87
+ if (durations.length < records.length) lines.push(`\u65E0\u8017\u65F6\u6570\u636E: ${records.length - durations.length} \u6761\uFF08\u4EC5\u8BA1 tokens\uFF09`);
88
+ const speed = resolveObservedSpeed(records, { limit: records.length });
89
+ for (const group of speed.throughputGroups) {
90
+ lines.push(`${group.basis}: median=${group.medianOutputTokensPerSecond} tokens/s, n=${group.throughputSampleCount}${group.throughputSampleCount === 1 ? "\uFF08\u5355\u6837\u672C\uFF0C\u4E0D\u53EF\u9760\uFF09" : ""}`);
91
+ }
92
+ if (speed.throughputGroups.length === 0) lines.push("\u65E0\u6709\u6548\u901F\u5EA6\u6837\u672C");
93
+ }
94
+ return `${lines.join("\n")}
95
+ `;
96
+ }
97
+ async function runDialogUsageCommand(args, deps = {}) {
98
+ const output = deps.output ?? process.stdout;
99
+ if (args.includes("--help") || args.includes("-h")) {
100
+ output.write("Usage: nolo dialog usage <dialogKey> [--server-url <url>]\n");
101
+ return 0;
102
+ }
103
+ const dialogKey = args[0]?.trim();
104
+ if (!dialogKey || dialogKey.startsWith("--")) {
105
+ output.write("Usage: nolo dialog usage <dialogKey> [--server-url <url>]\n");
106
+ return 1;
107
+ }
108
+ const env = deps.env ?? process.env;
109
+ const token = resolveAuthToken(args, env);
110
+ if (!token) {
111
+ output.write("[nolo] dialog usage requires login. Run `nolo login`.\n");
112
+ return 1;
113
+ }
114
+ const dialogId = dialogKey.startsWith("dialog-") ? extractCustomId(dialogKey) : dialogKey;
115
+ const api = { server: resolveServerUrl(args, env), token };
116
+ const fetchPage = deps.fetchPage ?? fetchUsageRecordsPage;
117
+ const records = [];
118
+ const endTime = Date.now();
119
+ let cursor = null;
120
+ const cursors = /* @__PURE__ */ new Set();
121
+ do {
122
+ const page = await fetchPage(api, { dialogId, startTime: 0, endTime, pageSize: 200, cursor });
123
+ records.push(...page.records);
124
+ if (!page.hasMore) break;
125
+ if (!page.nextCursor || cursors.has(page.nextCursor)) throw new Error("Usage pagination did not advance; refusing a partial total.");
126
+ cursor = page.nextCursor;
127
+ cursors.add(cursor);
128
+ } while (true);
129
+ records.sort((a, b) => b.createdAt - a.createdAt);
130
+ output.write(formatDialogUsage(dialogKey, records));
131
+ return 0;
132
+ }
133
+ export {
134
+ formatDialogUsage,
135
+ runDialogUsageCommand
136
+ };
@@ -29,10 +29,10 @@ import "./chunk-VF4K2QE6.js";
29
29
  import "./chunk-UAD2WT54.js";
30
30
  import "./chunk-AETZ7AD6.js";
31
31
  import "./chunk-KHCLMKZZ.js";
32
- import "./chunk-G5IZWDSM.js";
32
+ import "./chunk-FO2BTDKY.js";
33
33
  import "./chunk-KMSMIOOL.js";
34
34
  import "./chunk-ZNFJWEN4.js";
35
- import "./chunk-YO776XHS.js";
35
+ import "./chunk-QNLRCES2.js";
36
36
  import "./chunk-HNUWUO75.js";
37
37
  import "./chunk-HIVDQPQR.js";
38
38
  import "./chunk-CHOZJMJS.js";
@@ -44,15 +44,16 @@ import "./chunk-G6OOUQWJ.js";
44
44
  import "./chunk-56GBUMO5.js";
45
45
  import "./chunk-WJZOQR2J.js";
46
46
  import "./chunk-TQU64H2A.js";
47
- import "./chunk-JDCX5RWD.js";
47
+ import "./chunk-HEYJFOL6.js";
48
48
  import "./chunk-E2BESSAW.js";
49
49
  import "./chunk-3FTJG5NU.js";
50
50
  import "./chunk-JLR5NWP2.js";
51
51
  import "./chunk-XAFCJN32.js";
52
52
  import "./chunk-2MBTWINN.js";
53
- import "./chunk-T7HBI3WZ.js";
53
+ import "./chunk-NSASNKVD.js";
54
54
  import "./chunk-5ZUL4CUO.js";
55
- import "./chunk-7ZGMQZ5D.js";
55
+ import "./chunk-CSINZLH7.js";
56
+ import "./chunk-H57T64RA.js";
56
57
  import "./chunk-UKZX3NHN.js";
57
58
  import "./chunk-5MMAK75Q.js";
58
59
  import "./chunk-DWLEOOGR.js";