nolo-cli 0.183.0-alpha.1 → 0.185.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 (84) hide show
  1. package/{_executeModel-YYVG3FYU.js → _executeModel-5SGPPCT6.js} +19 -19
  2. package/{accountResolver-HPVXZJYD.js → accountResolver-NQJ57BVU.js} +1 -1
  3. package/{agentDeleteCommand-EOU67KBO.js → agentDeleteCommand-BCCSKYLM.js} +23 -23
  4. package/{agentEmailCommands-HEQLXSP6.js → agentEmailCommands-W5QGS7GJ.js} +24 -24
  5. package/{agentListCommands-4QUON7JZ.js → agentListCommands-OCQ6JTT5.js} +12 -12
  6. package/{agentMachineCommands-53GH4CDQ.js → agentMachineCommands-QHBMZYFX.js} +8 -8
  7. package/{agentRecordCommands-XXN5V3AX.js → agentRecordCommands-UVPX52OJ.js} +23 -23
  8. package/{agentRunCommand-ZUM5E3UV.js → agentRunCommand-5UDWFHFQ.js} +24 -24
  9. package/{agentRuntimeLocal-ECGPI3CO.js → agentRuntimeLocal-CBDP2OYK.js} +5 -5
  10. package/{agentSlice-MS5G7UCC.js → agentSlice-2PEJP3NV.js} +1 -1
  11. package/{appDeleteCommands-UHH52BCJ.js → appDeleteCommands-ZHRMHUN2.js} +10 -10
  12. package/{appDeployCommands-Z42ILX24.js → appDeployCommands-KECT5OVJ.js} +10 -10
  13. package/{appDeployStatusCommands-COYNEUSI.js → appDeployStatusCommands-L6IUZHLH.js} +10 -10
  14. package/{appGetCommands-35XXIRZJ.js → appGetCommands-Z5SPTOED.js} +10 -10
  15. package/{appListCommands-CIUEMKRJ.js → appListCommands-JVET3ZQ4.js} +10 -10
  16. package/{authCommand-AX23Q2Q5.js → authCommand-QHIRCCHQ.js} +2 -2
  17. package/{builtinSkillRegistry-HJCSXMKS.js → builtinSkillRegistry-RR35BY57.js} +4 -4
  18. package/{chromeCommands-BGL6JZMB.js → chromeCommands-EXJZ5HH5.js} +2 -2
  19. package/{chromeOpsCommands-2KFQEE3H.js → chromeOpsCommands-DCIUHXOK.js} +27 -2
  20. package/{chunk-ONFC3RLP.js → chunk-3FHLLDI6.js} +10 -15
  21. package/{chunk-NCVSRB7F.js → chunk-3RL3CUVL.js} +12 -15
  22. package/{chunk-JWSHARJM.js → chunk-7DPEOMDL.js} +7 -7
  23. package/{chunk-NRYTWXXV.js → chunk-7XISFN2T.js} +1 -1
  24. package/{chunk-HWJZEUA6.js → chunk-7YW5OUQE.js} +3 -3
  25. package/{chunk-NHBJHDVW.js → chunk-AKE53VMW.js} +1 -1
  26. package/{chunk-C3BYVRTJ.js → chunk-BJPALUYR.js} +2 -2
  27. package/{chunk-G5LNJZJH.js → chunk-CVHB44VO.js} +2 -2
  28. package/{chunk-PS3GU7YU.js → chunk-CWLKTRCI.js} +560 -3
  29. package/{chunk-5ROGGWPM.js → chunk-D4JCY67U.js} +14 -14
  30. package/{chunk-MHC44FKA.js → chunk-DBEIHUCJ.js} +3 -3
  31. package/{chunk-WPWAD6NT.js → chunk-DWTNJZ63.js} +2 -2
  32. package/{chunk-J2EVUNED.js → chunk-EFPGYWIN.js} +2 -2
  33. package/{chunk-3FTJG5NU.js → chunk-FKOCI2WR.js} +1 -1
  34. package/{chunk-MMSZKZWA.js → chunk-FSIJK37C.js} +1 -1
  35. package/{chunk-7AVKDSWD.js → chunk-HRLKX6YP.js} +1 -1
  36. package/{chunk-GTQKUQGF.js → chunk-IHQ7RMRS.js} +1 -1
  37. package/{chunk-FO2BTDKY.js → chunk-IOQHM7ID.js} +4 -4
  38. package/{chunk-F2P6YUHC.js → chunk-K3TVMCV3.js} +1 -1
  39. package/{chunk-P7JNYLDW.js → chunk-KHMJI7GE.js} +1 -1
  40. package/{chunk-ORYQ2GDN.js → chunk-MIPGIRJJ.js} +3 -3
  41. package/{chunk-FAFNPFGS.js → chunk-MROMTEHV.js} +7 -7
  42. package/{chunk-5DVM4RIR.js → chunk-NCC2SYOD.js} +3 -3
  43. package/{chunk-ADF4RAQS.js → chunk-P54WWWQL.js} +2 -2
  44. package/{chunk-MO6NDG3O.js → chunk-QBJYZEXZ.js} +5 -5
  45. package/{chunk-TQU64H2A.js → chunk-QEGPFGKA.js} +2 -2
  46. package/{chunk-WGHIT2HH.js → chunk-VXCDYN6M.js} +8 -8
  47. package/{chunk-FUW33OOI.js → chunk-YDD6QMEG.js} +287 -16
  48. package/{chunk-53HMDUG6.js → chunk-YI75FYBS.js} +1 -1
  49. package/{chunk-AWFDDOVW.js → chunk-YVAERPCH.js} +3 -3
  50. package/{chunk-GKKIZRJ6.js → chunk-YXTMZQGX.js} +11 -2
  51. package/{chunk-3PVH6HJG.js → chunk-YXTQJ2QR.js} +3 -3
  52. package/{chunk-MPIAKYZ7.js → chunk-YYKHIX4X.js} +1 -1
  53. package/{chunk-JX5XVFVW.js → chunk-ZC3CMUKU.js} +27 -3
  54. package/{chunk-B3BTDNEC.js → chunk-ZU2BF6Q4.js} +5 -5
  55. package/{chunk-DHMXTEM4.js → chunk-ZYI6K46I.js} +2 -2
  56. package/{chunk-TXJZ7QXG.js → chunk-ZZE2IJ5U.js} +2 -2
  57. package/{commandRegistry-VVY2YPUI.js → commandRegistry-BMWJLKA4.js} +65 -61
  58. package/{contentThunks-EWOORWBS.js → contentThunks-BSCTL5G3.js} +3 -3
  59. package/{cooldownCommands-QFV3ERZX.js → cooldownCommands-PRIJS6OJ.js} +1 -1
  60. package/{createAgentAutomationAction-TRIAQUAK.js → createAgentAutomationAction-Y5W2FW3Y.js} +3 -3
  61. package/{createDialogAction-FXPXXDRR.js → createDialogAction-GIZ7QCRQ.js} +6 -6
  62. package/{createPageAction-HHFPJKBD.js → createPageAction-GFH4DXMX.js} +3 -3
  63. package/{dialogCommands-6Z27OC2B.js → dialogCommands-2UADPK7U.js} +11 -9
  64. package/{dialogSlice-4W7DJJC2.js → dialogSlice-U3X3CBR7.js} +2 -2
  65. package/{docCreateCommands-EBLE6KZA.js → docCreateCommands-QBPVKQ2I.js} +9 -9
  66. package/{docDeleteCommands-7JONZ5PW.js → docDeleteCommands-NWVGJUVN.js} +10 -10
  67. package/{docReadCommands-NI4LTXAV.js → docReadCommands-2LG22OYA.js} +9 -9
  68. package/{docStore-VBINJLRX.js → docStore-H2XCYODR.js} +1 -1
  69. package/{docUpdateCommands-QF4J5XQI.js → docUpdateCommands-2NXP2A2G.js} +9 -9
  70. package/{handleSendMessageAction-FJKTVMCA.js → handleSendMessageAction-MZKFIPYL.js} +11 -11
  71. package/index.js +6 -6
  72. package/{localRuntimeAdapter-QZNQNL2X.js → localRuntimeAdapter-FOP7DG3L.js} +21 -21
  73. package/{machineCommands-53PSUEW7.js → machineCommands-7M23LIZG.js} +22 -22
  74. package/{machineWsRunDispatch-JNNSLAOT.js → machineWsRunDispatch-SZY7GGSH.js} +22 -22
  75. package/package.json +1 -1
  76. package/{readlineWorkspace-46TGVQQ7.js → readlineWorkspace-7ENOVLKC.js} +242 -33
  77. package/{runAgentClientLoop-KV6R3FSU.js → runAgentClientLoop-JRW5EA5U.js} +17 -17
  78. package/{secretCommands-XEQLKDB4.js → secretCommands-S7IIU5Q3.js} +1 -1
  79. package/{spaceCommands-CIXBPVEY.js → spaceCommands-PHLKQ2AW.js} +8 -8
  80. package/{streamAgentChatTurn-RTQ2DU4K.js → streamAgentChatTurn-CBGAGRQL.js} +19 -19
  81. package/{tools-R6JLL5PS.js → tools-RVVZ2Y6V.js} +13 -13
  82. package/{updateCommands-KDYX32JR.js → updateCommands-QW27XJ6K.js} +3 -3
  83. package/{updateDialogTitleAction-2QNU4T4I.js → updateDialogTitleAction-2RKLYUPB.js} +3 -3
  84. package/{windowsSelfUpdate-IYQK4IDS.js → windowsSelfUpdate-G2A2JXXX.js} +2 -2
@@ -720,6 +720,17 @@ Use /switch, /switch list, /switch minimax-m3, or a full agent key.`,
720
720
  "agentRunStream.rawErrorDetail": {
721
721
  en: "[nolo] Raw error detail (NOLO_DEBUG=1): {0}\n",
722
722
  zh: "[nolo] \u539F\u59CB\u9519\u8BEF\u8BE6\u60C5\uFF08NOLO_DEBUG=1\uFF09\uFF1A{0}\n"
723
+ },
724
+ // --- `nolo agent run` CLI surface (packages/cli/agentRunCommand.ts) ---
725
+ // The direct CLI entry bypasses the dispatch tool's allowHostWrites guard, so
726
+ // this is the only thing standing between `--runtime-key=local` and host writes.
727
+ "agentRun.hostWriteGuard": {
728
+ en: "[nolo] runtimeKey=local executes on \u2014 and writes to \u2014 the **host filesystem**, so it needs an explicit --allow-host-writes confirmation; drop --runtime-key to run isolated instead (docker sandbox by default).\n",
729
+ zh: "[nolo] runtimeKey=local \u4F1A\u5728**\u5BBF\u4E3B\u6587\u4EF6\u7CFB\u7EDF**\u4E0A\u6267\u884C\u5E76\u5199\u5165\uFF0C\u5FC5\u987B\u663E\u5F0F\u52A0 --allow-host-writes \u786E\u8BA4\uFF1B\u8981\u9694\u79BB\u6267\u884C\u8BF7\u7701\u7565 --runtime-key\uFF08\u9ED8\u8BA4\u8FDB docker \u6C99\u76D2\uFF09\u3002\n"
730
+ },
731
+ "agentRun.instaboxConfigFailed": {
732
+ en: "[nolo] instabox config generation failed: {0}\n",
733
+ zh: "[nolo] instabox \u914D\u7F6E\u751F\u6210\u5931\u8D25: {0}\n"
723
734
  }
724
735
  };
725
736
 
@@ -1474,7 +1485,7 @@ var cliSurfaceStrings = {
1474
1485
  "zh": "\u672A\u77E5\u547D\u4EE4\uFF1A{0}"
1475
1486
  },
1476
1487
  "cliCooldownHelp": {
1477
- "en": "Manage per-credential availability cooldowns (429 \u9650\u6D41\u51B7\u5374).\n\nUsage:\n nolo auth cooldown List all active cooldowns\n nolo auth cooldown --clear <credential> Clear one credential's cooldown\n nolo auth cooldown --clear-all Clear all cooldowns\n\nOptions:\n --clear <credential> Clear the cooldown for the given credential\n (e.g. chatgpt / claude / antigravity, or a custom API credential).\n --clear-all Clear every credential cooldown.\n --help Show this help.\n\nNo argument lists the currently cooled credentials with their human-readable\nrecovery time and remaining duration.\n",
1488
+ "en": "Manage per-credential availability cooldowns (429 rate-limit cooldown).\n\nUsage:\n nolo auth cooldown List all active cooldowns\n nolo auth cooldown --clear <credential> Clear one credential's cooldown\n nolo auth cooldown --clear-all Clear all cooldowns\n\nOptions:\n --clear <credential> Clear the cooldown for the given credential\n (e.g. chatgpt / claude / antigravity, or a custom API credential).\n --clear-all Clear every credential cooldown.\n --help Show this help.\n\nNo argument lists the currently cooled credentials with their human-readable\nrecovery time and remaining duration.\n",
1478
1489
  "zh": "\u7BA1\u7406\u5404\u51ED\u636E\u7684\u53EF\u7528\u6027\u51B7\u5374\uFF08429 \u9650\u6D41\u51B7\u5374\uFF09\u3002\n\n\u7528\u6CD5\uFF1A\n nolo auth cooldown \u5217\u51FA\u6240\u6709\u751F\u6548\u4E2D\u7684\u51B7\u5374\n nolo auth cooldown --clear <credential> \u6E05\u9664\u6307\u5B9A\u51ED\u636E\u7684\u51B7\u5374\n nolo auth cooldown --clear-all \u6E05\u9664\u6240\u6709\u51B7\u5374\n\n\u9009\u9879\uFF1A\n --clear <credential> \u6E05\u9664\u6307\u5B9A\u51ED\u636E\u7684\u51B7\u5374\n \uFF08\u4F8B\u5982 chatgpt / claude / antigravity\uFF0C\u6216\u81EA\u5B9A\u4E49 API \u51ED\u636E\uFF09\u3002\n --clear-all \u6E05\u9664\u5168\u90E8\u51ED\u636E\u51B7\u5374\u3002\n --help \u663E\u793A\u6B64\u5E2E\u52A9\u3002\n\n\u4E0D\u5E26\u53C2\u6570\u65F6\u5217\u51FA\u5904\u4E8E\u51B7\u5374\u4E2D\u7684\u51ED\u636E\u3001\u6062\u590D\u65F6\u95F4\u548C\u5269\u4F59\u65F6\u957F\u3002\n"
1479
1490
  },
1480
1491
  "cliCooldownClearedCount": {
@@ -1553,6 +1564,14 @@ var cliSurfaceStrings = {
1553
1564
  "en": "Missing required --key <key>. Usage: {0}",
1554
1565
  "zh": "\u7F3A\u5C11\u5FC5\u9700\u7684 --key <key>\u3002\u7528\u6CD5\uFF1A{0}"
1555
1566
  },
1567
+ "cliBrowserMissingExpression": {
1568
+ "en": "Missing required --expr <js>. Usage: {0}",
1569
+ "zh": "\u7F3A\u5C11\u5FC5\u9700\u7684 --expr <js>\u3002\u7528\u6CD5\uFF1A{0}"
1570
+ },
1571
+ "cliBrowserEvalTimeoutRange": {
1572
+ "en": "--timeout-ms must be an integer between 100 and 60000. Usage: {0}",
1573
+ "zh": "--timeout-ms \u5FC5\u987B\u662F 100 \u5230 60000 \u4E4B\u95F4\u7684\u6574\u6570\u3002\u7528\u6CD5\uFF1A{0}"
1574
+ },
1556
1575
  "cliBrowserAction": {
1557
1576
  "en": "Invalid or missing --action <click|type|press>. Usage: {0}",
1558
1577
  "zh": "--action <click|type|press> \u65E0\u6548\u6216\u7F3A\u5931\u3002\u7528\u6CD5\uFF1A{0}"
@@ -1586,8 +1605,33 @@ var cliSurfaceStrings = {
1586
1605
  "zh": "\u901A\u8FC7 Nolo Browser Connector \u64CD\u4F5C\u7528\u6237\u7684\u6D4F\u89C8\u5668\uFF08Chrome \u6216 Firefox\uFF09\n\uFF08\u684C\u9762\u6865\u63A5\uFF1B\u4E0E browser_* agent \u5DE5\u5177\u4F7F\u7528\u76F8\u540C RPC\uFF0C\u4ECD\u517C\u5BB9\u65E7\u540D\u79F0 `chrome_*`\uFF09\u3002\n\n\u7528\u6CD5\uFF1A\n nolo browser <subcommand> [flags]\n nolo chrome <subcommand> [flags] # \u517C\u5BB9\u522B\u540D\n\n\u5B50\u547D\u4EE4\uFF1A"
1587
1606
  },
1588
1607
  "cliBrowserHelpNotes": {
1589
- "en": '\nNotes:\n --ref takes an elementRef copied from `nolo browser read-page` (revision-scoped,\n preferred over --selector); --selector takes a CSS selector.\n Actions the connector classifies as irreversible (pay / send / delete / publish / permission)\n open a confirmation request in the browser and return USER_APPROVAL_PENDING with an approvalId:\n the user clicks "Allow once" there, then rerun the same command with --approval-id <id>.\n That id is not an authorization \u2014 only the lookup key for the decision the user already made.\n prepare-action prepares an immutable action challenge binding for host consent verification;\n it is strictly read-only, never executes mutations, and does not grant approval.\n read-console / read-network / upload work on Chrome only (Firefox lacks chrome.debugger).\n --browser chrome|firefox selects which connector endpoint serves the call (default\n auto-detects single online browser: chrome = 127.0.0.1:38947, firefox = 127.0.0.1:38948);\n the wrong browser is refused.\n Every subcommand prints the connector\'s raw JSON result; failures exit 1.\n Endpoint: NOLO_CHROME_CONNECTOR_RPC_URL or per-browser NOLO_CHROME_CONNECTOR_PORT /\n NOLO_FIREFOX_CONNECTOR_PORT (default http://127.0.0.1:38947/rpc).',
1590
- "zh": "\n\u8BF4\u660E\uFF1A\n --ref \u4F7F\u7528\u4ECE `nolo browser read-page` \u590D\u5236\u7684 elementRef\uFF08\u4EC5\u9002\u7528\u4E8E\u5BF9\u5E94\u4FEE\u8BA2\uFF0C\n \u4F18\u5148\u4E8E --selector\uFF09\uFF1B--selector \u4F7F\u7528 CSS \u9009\u62E9\u5668\u3002\n \u8FDE\u63A5\u5668\u5224\u5B9A\u4E3A\u4E0D\u53EF\u9006\u7684\u52A8\u4F5C\uFF08\u4ED8\u6B3E / \u53D1\u9001 / \u5220\u9664 / \u53D1\u5E03 / \u6388\u6743\uFF09\u4F1A\u5728\u6D4F\u89C8\u5668\u91CC\u53D1\u8D77\u786E\u8BA4\u8BF7\u6C42\uFF0C\n \u8FD4\u56DE USER_APPROVAL_PENDING \u4E0E\u4E00\u4E2A approvalId\uFF1A\n \u7528\u6237\u5728\u90A3\u91CC\u70B9\u300C\u5141\u8BB8\u4E00\u6B21\u300D\u540E\uFF0C\u518D\u7528 --approval-id <id> \u91CD\u8DD1\u540C\u4E00\u6761\u547D\u4EE4\u3002\n \u8BE5 id \u4E0D\u662F\u6388\u6743\u51ED\u8BC1\u2014\u2014\u53EA\u662F\u7528\u6237\u5DF2\u505A\u51B3\u5B9A\u7684\u67E5\u8BE2\u952E\u3002\n prepare-action \u4E3A\u5BBF\u4E3B\u540C\u610F\u6821\u9A8C\u51C6\u5907\u4E0D\u53EF\u53D8\u7684\u52A8\u4F5C\u6311\u6218\u7ED1\u5B9A\uFF1B\n \u5B83\u4E25\u683C\u53EA\u8BFB\uFF0C\u4E0D\u6267\u884C\u4FEE\u6539\uFF0C\u4E5F\u4E0D\u6388\u4E88\u6279\u51C6\u3002\n read-console / read-network / upload \u4EC5\u652F\u6301 Chrome\uFF08Firefox \u7F3A\u5C11 chrome.debugger\uFF09\u3002\n --browser chrome|firefox \u9009\u62E9\u8FDE\u63A5\u5668\u7AEF\u70B9\uFF08\u9ED8\u8BA4\u81EA\u52A8\u63A2\u6D4B\u552F\u4E00\u5728\u7EBF\u6D4F\u89C8\u5668\uFF1A\n chrome = 127.0.0.1:38947\uFF0Cfirefox = 127.0.0.1:38948\uFF09\uFF1B\n \u6D4F\u89C8\u5668\u4E0D\u5339\u914D\u65F6\u4F1A\u62D2\u7EDD\u8C03\u7528\u3002\n \u6BCF\u4E2A\u5B50\u547D\u4EE4\u8F93\u51FA\u8FDE\u63A5\u5668\u7684\u539F\u59CB JSON \u7ED3\u679C\uFF1B\u5931\u8D25\u65F6\u9000\u51FA\u7801\u4E3A 1\u3002\n \u7AEF\u70B9\uFF1ANOLO_CHROME_CONNECTOR_RPC_URL \u6216\u6309\u6D4F\u89C8\u5668\u8BBE\u7F6E NOLO_CHROME_CONNECTOR_PORT /\n NOLO_FIREFOX_CONNECTOR_PORT\uFF08\u9ED8\u8BA4 http://127.0.0.1:38947/rpc\uFF09\u3002"
1608
+ "en": '\nNotes:\n --ref takes an elementRef copied from `nolo browser read-page` (revision-scoped,\n preferred over --selector); --selector takes a CSS selector.\n Actions the connector classifies as irreversible (pay / send / delete / publish / permission)\n open a confirmation request in the browser and return USER_APPROVAL_PENDING with an approvalId:\n the user clicks "Allow once" there, then rerun the same command with --approval-id <id>.\n That id is not an authorization \u2014 only the lookup key for the decision the user already made.\n prepare-action prepares an immutable action challenge binding for host consent verification;\n it is strictly read-only, never executes mutations, and does not grant approval.\n read-console / read-network / upload work on Chrome only (Firefox lacks chrome.debugger).\n eval runs JS in the tab and also works on Chrome only; every single execution must be\n approved by the user in the browser (it is not a standing grant, --approval-id only\n completes one approval the user already clicked). Script results can contain sensitive\n page data: never forward them to third parties.\n --browser chrome|firefox selects which connector endpoint serves the call (default\n auto-detects single online browser: chrome = 127.0.0.1:38947, firefox = 127.0.0.1:38948);\n the wrong browser is refused.\n Every subcommand prints the connector\'s raw JSON result; failures exit 1.\n Endpoint: NOLO_CHROME_CONNECTOR_RPC_URL or per-browser NOLO_CHROME_CONNECTOR_PORT /\n NOLO_FIREFOX_CONNECTOR_PORT (default http://127.0.0.1:38947/rpc).',
1609
+ "zh": "\n\u8BF4\u660E\uFF1A\n --ref \u4F7F\u7528\u4ECE `nolo browser read-page` \u590D\u5236\u7684 elementRef\uFF08\u4EC5\u9002\u7528\u4E8E\u5BF9\u5E94\u4FEE\u8BA2\uFF0C\n \u4F18\u5148\u4E8E --selector\uFF09\uFF1B--selector \u4F7F\u7528 CSS \u9009\u62E9\u5668\u3002\n \u8FDE\u63A5\u5668\u5224\u5B9A\u4E3A\u4E0D\u53EF\u9006\u7684\u52A8\u4F5C\uFF08\u4ED8\u6B3E / \u53D1\u9001 / \u5220\u9664 / \u53D1\u5E03 / \u6388\u6743\uFF09\u4F1A\u5728\u6D4F\u89C8\u5668\u91CC\u53D1\u8D77\u786E\u8BA4\u8BF7\u6C42\uFF0C\n \u8FD4\u56DE USER_APPROVAL_PENDING \u4E0E\u4E00\u4E2A approvalId\uFF1A\n \u7528\u6237\u5728\u90A3\u91CC\u70B9\u300C\u5141\u8BB8\u4E00\u6B21\u300D\u540E\uFF0C\u518D\u7528 --approval-id <id> \u91CD\u8DD1\u540C\u4E00\u6761\u547D\u4EE4\u3002\n \u8BE5 id \u4E0D\u662F\u6388\u6743\u51ED\u8BC1\u2014\u2014\u53EA\u662F\u7528\u6237\u5DF2\u505A\u51B3\u5B9A\u7684\u67E5\u8BE2\u952E\u3002\n prepare-action \u4E3A\u5BBF\u4E3B\u540C\u610F\u6821\u9A8C\u51C6\u5907\u4E0D\u53EF\u53D8\u7684\u52A8\u4F5C\u6311\u6218\u7ED1\u5B9A\uFF1B\n \u5B83\u4E25\u683C\u53EA\u8BFB\uFF0C\u4E0D\u6267\u884C\u4FEE\u6539\uFF0C\u4E5F\u4E0D\u6388\u4E88\u6279\u51C6\u3002\n read-console / read-network / upload \u4EC5\u652F\u6301 Chrome\uFF08Firefox \u7F3A\u5C11 chrome.debugger\uFF09\u3002\n eval \u5728\u6807\u7B7E\u9875\u91CC\u6267\u884C JS\uFF0C\u540C\u6837\u4EC5\u652F\u6301 Chrome\uFF1B\u6BCF\u6B21\u6267\u884C\u90FD\u5FC5\u987B\u5728\u6D4F\u89C8\u5668\u91CC\u4EBA\u5DE5\u6279\u51C6\u4E00\u6B21\n \uFF08\u4E0D\u662F\u5E38\u9A7B\u6388\u6743\uFF0C--approval-id \u53EA\u662F\u5B8C\u6210\u7528\u6237\u5DF2\u7ECF\u70B9\u8FC7\u7684\u90A3\u4E00\u6B21\u6279\u51C6\uFF09\u3002\u811A\u672C\u7ED3\u679C\u53EF\u80FD\n \u5305\u542B\u9875\u9762\u7684\u654F\u611F\u6570\u636E\uFF0C\u4E0D\u8981\u5916\u4F20\u3002\n --browser chrome|firefox \u9009\u62E9\u8FDE\u63A5\u5668\u7AEF\u70B9\uFF08\u9ED8\u8BA4\u81EA\u52A8\u63A2\u6D4B\u552F\u4E00\u5728\u7EBF\u6D4F\u89C8\u5668\uFF1A\n chrome = 127.0.0.1:38947\uFF0Cfirefox = 127.0.0.1:38948\uFF09\uFF1B\n \u6D4F\u89C8\u5668\u4E0D\u5339\u914D\u65F6\u4F1A\u62D2\u7EDD\u8C03\u7528\u3002\n \u6BCF\u4E2A\u5B50\u547D\u4EE4\u8F93\u51FA\u8FDE\u63A5\u5668\u7684\u539F\u59CB JSON \u7ED3\u679C\uFF1B\u5931\u8D25\u65F6\u9000\u51FA\u7801\u4E3A 1\u3002\n \u7AEF\u70B9\uFF1ANOLO_CHROME_CONNECTOR_RPC_URL \u6216\u6309\u6D4F\u89C8\u5668\u8BBE\u7F6E NOLO_CHROME_CONNECTOR_PORT /\n NOLO_FIREFOX_CONNECTOR_PORT\uFF08\u9ED8\u8BA4 http://127.0.0.1:38947/rpc\uFF09\u3002"
1610
+ }
1611
+ };
1612
+
1613
+ // packages/cli/i18n/strings/dialogCommands.ts
1614
+ var dialogCommandStrings = {
1615
+ "dialogCmd.localDbFallbackChain": {
1616
+ en: " - databases tried (fallback chain: <cwd>/data/leveldb \u2192 NOLO_HOME/data/leveldb):",
1617
+ zh: " - \u5DF2\u5C1D\u8BD5\u7684\u6570\u636E\u5E93\uFF08\u56DE\u9000\u94FE: <cwd>/data/leveldb \u2192 NOLO_HOME/data/leveldb\uFF09:"
1618
+ },
1619
+ "dialogCmd.localDbLockedAdvice": {
1620
+ en: " - the local DB is under an exclusive LevelDB lock held by some process (often the current TUI host process itself; local read-only access is unavailable while the lock is held); read this dialog through the server endpoint instead.",
1621
+ zh: " - \u672C\u5730\u5E93\u6B63\u88AB\u67D0\u4E2A\u8FDB\u7A0B\u6301\u6709 LevelDB \u6392\u4ED6\u9501\uFF08\u5E38\u5E38\u5C31\u662F\u5F53\u524D TUI \u5BBF\u4E3B\u8FDB\u7A0B\u81EA\u5DF1\uFF0C\u672C\u5730\u53EA\u8BFB\u5728\u6301\u9501\u671F\u95F4\u4E0D\u53EF\u7528\uFF09\uFF1B\u8BF7\u901A\u8FC7 server \u7AEF\u70B9\u8BFB\u53D6\u8BE5 dialog\u3002"
1622
+ },
1623
+ // {0} = optional " (tried: <path> → <path>)" suffix; empty when paths are unknown.
1624
+ "dialogCmd.notFoundTriedPaths": {
1625
+ en: " (tried: {0})",
1626
+ zh: "\uFF08\u5DF2\u5C1D\u8BD5\uFF1A{0}\uFF09"
1627
+ },
1628
+ "dialogCmd.notFoundNextStep": {
1629
+ en: " next-step: the target dialog may not live on these servers; dialogs of local runs are looked up with the <cwd>/data/leveldb \u2192 NOLO_HOME/data/leveldb (default ~/.nolo) fallback chain{0}, so read it through the environment/service that owns that store \u2014 a running run can be summarised with `nolo agent status <runId|pid>` or dialog status mode.",
1630
+ zh: " next-step: \u76EE\u6807 dialog \u53EF\u80FD\u4E0D\u5728\u8FD9\u4E9B server \u4E0A\uFF1B\u672C\u5730 run \u7684\u5BF9\u8BDD\u6309 <cwd>/data/leveldb \u2192 NOLO_HOME/data/leveldb\uFF08\u9ED8\u8BA4 ~/.nolo\uFF09\u56DE\u9000\u67E5\u627E{0}\uFF0C\u8BF7\u7528\u5B58\u50A8\u65B9\u5BF9\u5E94\u73AF\u5883/\u670D\u52A1\u8BFB\u53D6\uFF0C\u8FD0\u884C\u4E2D run \u53EF\u7528 `nolo agent status <runId|pid>` \u6216 dialog \u7684 status \u6A21\u5F0F\u67E5\u6458\u8981\u3002"
1631
+ },
1632
+ "dialogCmd.connectivityNextStep": {
1633
+ en: " next-step: connection refused / timeout \u2014 check that the server NOLO_SERVER/--server points at is reachable and running.",
1634
+ zh: " next-step: \u5B58\u5728\u8FDE\u63A5\u62D2\u7EDD/\u8D85\u65F6\uFF0C\u8BF7\u68C0\u67E5 NOLO_SERVER/--server \u6307\u5411\u7684 server \u662F\u5426\u53EF\u8FBE\u3001\u662F\u5426\u5728\u8FD0\u884C\u3002"
1591
1635
  }
1592
1636
  };
1593
1637
 
@@ -2394,6 +2438,7 @@ var STRINGS = {
2394
2438
  ...secretStrings,
2395
2439
  ...docCommandStrings,
2396
2440
  ...cliSurfaceStrings,
2441
+ ...dialogCommandStrings,
2397
2442
  ...commonStrings
2398
2443
  };
2399
2444
  function t(key, ...params) {
@@ -2497,6 +2542,518 @@ var COMMAND_DESCRIPTIONS = {
2497
2542
  "auth devin": {
2498
2543
  en: "Authorize Devin OAuth (Free SWE-2)",
2499
2544
  zh: "\u6388\u6743 Devin OAuth\uFF08\u514D\u8D39 SWE-2\uFF09"
2545
+ },
2546
+ "run": {
2547
+ en: "Run a no-login local agent in this workspace",
2548
+ zh: "\u5728\u5DE5\u4F5C\u533A\u4E2D\u8FD0\u884C\u514D\u767B\u5F55\u7684\u672C\u5730\u667A\u80FD\u4F53"
2549
+ },
2550
+ "chat": {
2551
+ en: "Chat with an agent",
2552
+ zh: "\u4E0E\u667A\u80FD\u4F53\u5BF9\u8BDD"
2553
+ },
2554
+ "agent list": {
2555
+ en: "List owned agents",
2556
+ zh: "\u5217\u51FA\u6211\u62E5\u6709\u7684\u667A\u80FD\u4F53"
2557
+ },
2558
+ "agent create": {
2559
+ en: "Create a new agent",
2560
+ zh: "\u521B\u5EFA\u65B0\u667A\u80FD\u4F53"
2561
+ },
2562
+ "agent models": {
2563
+ en: "List models: --preset <id> (server discovery, exit 1 on static fallback) or --url <base> --api-key <key> (OpenAI-compatible /models)",
2564
+ zh: "\u5217\u51FA\u53EF\u7528\u6A21\u578B\uFF1A--preset <id>\uFF08\u670D\u52A1\u7AEF\u53D1\u73B0\uFF0C\u9000\u56DE\u9759\u6001\u5217\u8868\u65F6\u4EE5\u9000\u51FA\u7801 1 \u7ED3\u675F\uFF09\u6216 --url <base> --api-key <key>\uFF08OpenAI \u517C\u5BB9\u7684 /models\uFF09"
2565
+ },
2566
+ "agent providers": {
2567
+ en: "List agent-creation provider presets (subscription / metered / oauth)",
2568
+ zh: "\u5217\u51FA\u667A\u80FD\u4F53\u521B\u5EFA\u7684\u670D\u52A1\u5546\u9884\u8BBE\uFF08subscription / metered / oauth\uFF09"
2569
+ },
2570
+ "agent pull": {
2571
+ en: "Cache an agent for local runs",
2572
+ zh: "\u7F13\u5B58\u667A\u80FD\u4F53\u4EE5\u4F9B\u672C\u5730\u8FD0\u884C"
2573
+ },
2574
+ "agent read": {
2575
+ en: "Read a single agent",
2576
+ zh: "\u8BFB\u53D6\u5355\u4E2A\u667A\u80FD\u4F53"
2577
+ },
2578
+ "agent run": {
2579
+ en: "Run an agent",
2580
+ zh: "\u8FD0\u884C\u667A\u80FD\u4F53"
2581
+ },
2582
+ "agent ps": {
2583
+ en: "List active and recent local agent runs (--json for machine-readable output)",
2584
+ zh: "\u5217\u51FA\u6D3B\u8DC3\u4E0E\u8FD1\u671F\u7684\u672C\u5730\u667A\u80FD\u4F53\u8FD0\u884C\uFF08--json \u8F93\u51FA\u673A\u5668\u53EF\u8BFB\u683C\u5F0F\uFF09"
2585
+ },
2586
+ "agent status": {
2587
+ en: "Show status of a local agent run (--json, --watch, --interval-ms N)",
2588
+ zh: "\u67E5\u770B\u672C\u5730\u667A\u80FD\u4F53\u8FD0\u884C\u72B6\u6001\uFF08--json\u3001--watch\u3001--interval-ms N\uFF09"
2589
+ },
2590
+ "agent logs": {
2591
+ en: "Show logs of a local agent run",
2592
+ zh: "\u67E5\u770B\u672C\u5730\u667A\u80FD\u4F53\u8FD0\u884C\u7684\u65E5\u5FD7"
2593
+ },
2594
+ "agent stop": {
2595
+ en: "Stop a local agent run",
2596
+ zh: "\u505C\u6B62\u672C\u5730\u667A\u80FD\u4F53\u8FD0\u884C"
2597
+ },
2598
+ "agent kill": {
2599
+ en: "Kill a local agent run",
2600
+ zh: "\u5F3A\u5236\u7ED3\u675F\u672C\u5730\u667A\u80FD\u4F53\u8FD0\u884C"
2601
+ },
2602
+ "agent setup-offline-marxists": {
2603
+ en: "Create or update the Marxists.org offline book agent",
2604
+ zh: "\u521B\u5EFA\u6216\u66F4\u65B0 Marxists.org \u79BB\u7EBF\u56FE\u4E66\u667A\u80FD\u4F53"
2605
+ },
2606
+ "agent update": {
2607
+ en: "Update agent fields",
2608
+ zh: "\u66F4\u65B0\u667A\u80FD\u4F53\u5B57\u6BB5"
2609
+ },
2610
+ "agent email provision": {
2611
+ en: "Provision a controlled inbox for an agent",
2612
+ zh: "\u4E3A\u667A\u80FD\u4F53\u5206\u914D\u53D7\u63A7\u6536\u4EF6\u7BB1"
2613
+ },
2614
+ "agent email bind": {
2615
+ en: "Bind an existing email address to an agent",
2616
+ zh: "\u628A\u5DF2\u6709\u90AE\u7BB1\u5730\u5740\u7ED1\u5B9A\u5230\u667A\u80FD\u4F53"
2617
+ },
2618
+ "agent email transfer": {
2619
+ en: "Transfer an email identity from one agent to another (cross-account)",
2620
+ zh: "\u5C06\u90AE\u7BB1\u8EAB\u4EFD\u4ECE\u4E00\u4E2A\u667A\u80FD\u4F53\u8F6C\u79FB\u5230\u53E6\u4E00\u4E2A\uFF08\u8DE8\u8D26\u53F7\uFF09"
2621
+ },
2622
+ "agent email create-and-provision": {
2623
+ en: "Create an agent and provision its controlled inbox",
2624
+ zh: "\u521B\u5EFA\u667A\u80FD\u4F53\u5E76\u4E3A\u5176\u5206\u914D\u53D7\u63A7\u6536\u4EF6\u7BB1"
2625
+ },
2626
+ "agent delete": {
2627
+ en: "Hard-delete an agent's private and public records",
2628
+ zh: "\u786C\u5220\u9664\u667A\u80FD\u4F53\u7684\u79C1\u6709\u4E0E\u516C\u5F00\u8BB0\u5F55"
2629
+ },
2630
+ "agent grant": {
2631
+ en: "Grant another user access to this agent's owner credentials",
2632
+ zh: "\u6388\u6743\u5176\u4ED6\u7528\u6237\u4F7F\u7528\u8BE5\u667A\u80FD\u4F53\u7684\u5C5E\u4E3B\u51ED\u8BC1"
2633
+ },
2634
+ "agent grants": {
2635
+ en: "List active credential grants for an agent",
2636
+ zh: "\u5217\u51FA\u8BE5\u667A\u80FD\u4F53\u751F\u6548\u4E2D\u7684\u51ED\u8BC1\u6388\u6743"
2637
+ },
2638
+ "agent revoke-grant": {
2639
+ en: "Revoke a credential grant for an agent",
2640
+ zh: "\u64A4\u9500\u8BE5\u667A\u80FD\u4F53\u7684\u67D0\u6761\u51ED\u8BC1\u6388\u6743"
2641
+ },
2642
+ "agent bind-current": {
2643
+ en: "Bind an agent to this machine",
2644
+ zh: "\u628A\u667A\u80FD\u4F53\u7ED1\u5B9A\u5230\u5F53\u524D\u673A\u5668"
2645
+ },
2646
+ "agent smoke-current": {
2647
+ en: "Smoke test a bound agent through this machine",
2648
+ zh: "\u901A\u8FC7\u5F53\u524D\u673A\u5668\u5BF9\u5DF2\u7ED1\u5B9A\u7684\u667A\u80FD\u4F53\u505A\u5192\u70DF\u6D4B\u8BD5"
2649
+ },
2650
+ "agent runtime-doctor": {
2651
+ en: "Diagnose current machine runtime compatibility",
2652
+ zh: "\u8BCA\u65AD\u5F53\u524D\u673A\u5668\u7684\u8FD0\u884C\u65F6\u517C\u5BB9\u6027"
2653
+ },
2654
+ "agent chat": {
2655
+ en: "Chat with an agent",
2656
+ zh: "\u4E0E\u667A\u80FD\u4F53\u5BF9\u8BDD"
2657
+ },
2658
+ "dialog search": {
2659
+ en: "Search dialog messages across dialogs",
2660
+ zh: "\u8DE8\u5BF9\u8BDD\u641C\u7D22\u6D88\u606F"
2661
+ },
2662
+ "dialog list": {
2663
+ en: "List dialogs (default --limit 50; --all/--limit 0 full; --jsonl streams)",
2664
+ zh: "\u5217\u51FA\u5BF9\u8BDD\uFF08\u9ED8\u8BA4 --limit 50\uFF1B--all / --limit 0 \u53D6\u5168\u90E8\uFF1B--jsonl \u6D41\u5F0F\u8F93\u51FA\uFF09"
2665
+ },
2666
+ "dialog delete": {
2667
+ en: "Delete one or more dialogs",
2668
+ zh: "\u5220\u9664\u4E00\u4E2A\u6216\u591A\u4E2A\u5BF9\u8BDD"
2669
+ },
2670
+ "dialog query": {
2671
+ en: "Query dialogs by subject refs (default --limit 50; --all full; --jsonl streams)",
2672
+ zh: "\u6309 subject \u5F15\u7528\u67E5\u8BE2\u5BF9\u8BDD\uFF08\u9ED8\u8BA4 --limit 50\uFF1B--all \u53D6\u5168\u90E8\uFF1B--jsonl \u6D41\u5F0F\u8F93\u51FA\uFF09"
2673
+ },
2674
+ "dialog read": {
2675
+ en: "Read a dialog",
2676
+ zh: "\u8BFB\u53D6\u4E00\u4E2A\u5BF9\u8BDD"
2677
+ },
2678
+ "dialog status": {
2679
+ en: "Read compact dialog status",
2680
+ zh: "\u8BFB\u53D6\u7CBE\u7B80\u7684\u5BF9\u8BDD\u72B6\u6001"
2681
+ },
2682
+ "doc create": {
2683
+ en: "Create a normal doc",
2684
+ zh: "\u521B\u5EFA\u666E\u901A\u6587\u6863"
2685
+ },
2686
+ "doc read": {
2687
+ en: "Read a normal doc",
2688
+ zh: "\u8BFB\u53D6\u666E\u901A\u6587\u6863"
2689
+ },
2690
+ "doc update": {
2691
+ en: "Update a normal doc",
2692
+ zh: "\u66F4\u65B0\u666E\u901A\u6587\u6863"
2693
+ },
2694
+ "doc delete": {
2695
+ en: "Delete a normal doc",
2696
+ zh: "\u5220\u9664\u666E\u901A\u6587\u6863"
2697
+ },
2698
+ "skill-doc create": {
2699
+ en: "Create a skill-backed doc",
2700
+ zh: "\u521B\u5EFA skill \u6587\u6863"
2701
+ },
2702
+ "skill create-doc": {
2703
+ en: "Create a skill-backed doc",
2704
+ zh: "\u521B\u5EFA skill \u6587\u6863"
2705
+ },
2706
+ "skill-doc read": {
2707
+ en: "Read a skill doc",
2708
+ zh: "\u8BFB\u53D6 skill \u6587\u6863"
2709
+ },
2710
+ "skill-doc update": {
2711
+ en: "Update a skill doc",
2712
+ zh: "\u66F4\u65B0 skill \u6587\u6863"
2713
+ },
2714
+ "skill-doc delete": {
2715
+ en: "Delete a skill doc",
2716
+ zh: "\u5220\u9664 skill \u6587\u6863"
2717
+ },
2718
+ "memory list": {
2719
+ en: "List long-term memories by filter",
2720
+ zh: "\u6309\u6761\u4EF6\u5217\u51FA\u957F\u671F\u8BB0\u5FC6"
2721
+ },
2722
+ "memory remember": {
2723
+ en: "Store a long-term memory",
2724
+ zh: "\u5199\u5165\u4E00\u6761\u957F\u671F\u8BB0\u5FC6"
2725
+ },
2726
+ "memory delete": {
2727
+ en: "Delete long-term memories by filter",
2728
+ zh: "\u6309\u6761\u4EF6\u5220\u9664\u957F\u671F\u8BB0\u5FC6"
2729
+ },
2730
+ "space create": {
2731
+ en: "Create a space",
2732
+ zh: "\u521B\u5EFA\u7A7A\u95F4"
2733
+ },
2734
+ "space invite": {
2735
+ en: "Invite an existing user to a space",
2736
+ zh: "\u9080\u8BF7\u5DF2\u6709\u7528\u6237\u52A0\u5165\u7A7A\u95F4"
2737
+ },
2738
+ "space accept-invite": {
2739
+ en: "Accept a space invite",
2740
+ zh: "\u63A5\u53D7\u7A7A\u95F4\u9080\u8BF7"
2741
+ },
2742
+ "space upload": {
2743
+ en: "Upload a file to a space",
2744
+ zh: "\u4E0A\u4F20\u6587\u4EF6\u5230\u7A7A\u95F4"
2745
+ },
2746
+ "table": {
2747
+ en: "Show table command help",
2748
+ zh: "\u663E\u793A table \u547D\u4EE4\u5E2E\u52A9"
2749
+ },
2750
+ "table delete-rows": {
2751
+ en: "Delete table rows",
2752
+ zh: "\u5220\u9664\u8868\u683C\u884C"
2753
+ },
2754
+ "table purge-rows": {
2755
+ en: "Permanently purge table rows",
2756
+ zh: "\u5F7B\u5E95\u6E05\u9664\u8868\u683C\u884C"
2757
+ },
2758
+ "table remove-row-fields": {
2759
+ en: "Remove fields from table rows",
2760
+ zh: "\u4ECE\u8868\u683C\u884C\u4E2D\u79FB\u9664\u5B57\u6BB5"
2761
+ },
2762
+ "table add-column": {
2763
+ en: "Add a table column",
2764
+ zh: "\u65B0\u589E\u8868\u683C\u5217"
2765
+ },
2766
+ "table add-row": {
2767
+ en: "Add a table row",
2768
+ zh: "\u65B0\u589E\u8868\u683C\u884C"
2769
+ },
2770
+ "table add-rows": {
2771
+ en: "Add table rows",
2772
+ zh: "\u6279\u91CF\u65B0\u589E\u8868\u683C\u884C"
2773
+ },
2774
+ "table update-row": {
2775
+ en: "Update a table row",
2776
+ zh: "\u66F4\u65B0\u8868\u683C\u884C"
2777
+ },
2778
+ "table update-rows": {
2779
+ en: "Update table rows",
2780
+ zh: "\u6279\u91CF\u66F4\u65B0\u8868\u683C\u884C"
2781
+ },
2782
+ "table delete-row": {
2783
+ en: "Delete a table row",
2784
+ zh: "\u5220\u9664\u8868\u683C\u884C"
2785
+ },
2786
+ "app list": {
2787
+ en: "List your apps",
2788
+ zh: "\u5217\u51FA\u6211\u7684\u5E94\u7528"
2789
+ },
2790
+ "app get": {
2791
+ en: "Get app details",
2792
+ zh: "\u83B7\u53D6\u5E94\u7528\u8BE6\u60C5"
2793
+ },
2794
+ "app deploy": {
2795
+ en: "Deploy an app",
2796
+ zh: "\u90E8\u7F72\u5E94\u7528"
2797
+ },
2798
+ "app deploy status": {
2799
+ en: "Check app deploy status",
2800
+ zh: "\u67E5\u770B\u5E94\u7528\u90E8\u7F72\u72B6\u6001"
2801
+ },
2802
+ "app delete": {
2803
+ en: "Delete an app",
2804
+ zh: "\u5220\u9664\u5E94\u7528"
2805
+ },
2806
+ "table list": {
2807
+ en: "List table metadata",
2808
+ zh: "\u5217\u51FA\u8868\u683C\u5143\u6570\u636E"
2809
+ },
2810
+ "table query": {
2811
+ en: "Query table rows",
2812
+ zh: "\u67E5\u8BE2\u8868\u683C\u884C"
2813
+ },
2814
+ "browser status": {
2815
+ en: "Show Nolo Browser Connector status (native host manifest, token, live connection)",
2816
+ zh: "\u663E\u793A Nolo \u6D4F\u89C8\u5668\u8FDE\u63A5\u5668\u72B6\u6001\uFF08\u539F\u751F host manifest\u3001\u4EE4\u724C\u3001\u5728\u7EBF\u8FDE\u63A5\uFF09"
2817
+ },
2818
+ "browser install": {
2819
+ en: "Install the native messaging host manifest for this user (--browser chrome|firefox)",
2820
+ zh: "\u4E3A\u5F53\u524D\u7528\u6237\u5B89\u88C5\u539F\u751F\u6D88\u606F host manifest\uFF08--browser chrome|firefox\uFF09"
2821
+ },
2822
+ "browser reload": {
2823
+ en: "Reload the connector extension through the running native host",
2824
+ zh: "\u901A\u8FC7\u8FD0\u884C\u4E2D\u7684\u539F\u751F host \u91CD\u8F7D\u8FDE\u63A5\u5668\u6269\u5C55"
2825
+ },
2826
+ "browser list-tabs": {
2827
+ en: "List controllable browser tabs",
2828
+ zh: "\u5217\u51FA\u53EF\u63A7\u5236\u7684\u6D4F\u89C8\u5668\u6807\u7B7E\u9875"
2829
+ },
2830
+ "browser open-tab": {
2831
+ en: "Open a URL in a new tab (--url <url> [--active])",
2832
+ zh: "\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00 URL\uFF08--url <url> [--active]\uFF09"
2833
+ },
2834
+ "browser close-tab": {
2835
+ en: "Close a tab (--tab <id>)",
2836
+ zh: "\u5173\u95ED\u6807\u7B7E\u9875\uFF08--tab <id>\uFF09"
2837
+ },
2838
+ "browser read-page": {
2839
+ en: "Read a tab's text and interactive elements as elementRefs (--tab <id> [--offset N] [--viewport])",
2840
+ zh: "\u4EE5 elementRefs \u8BFB\u53D6\u6807\u7B7E\u9875\u7684\u6587\u672C\u4E0E\u53EF\u4EA4\u4E92\u5143\u7D20\uFF08--tab <id> [--offset N] [--viewport]\uFF09"
2841
+ },
2842
+ "browser click": {
2843
+ en: "Click an element (--tab <id> --ref|--selector)",
2844
+ zh: "\u70B9\u51FB\u5143\u7D20\uFF08--tab <id> --ref|--selector\uFF09"
2845
+ },
2846
+ "browser type": {
2847
+ en: "Type text into an element (--tab <id> --ref|--selector --text <text>)",
2848
+ zh: "\u5411\u5143\u7D20\u8F93\u5165\u6587\u672C\uFF08--tab <id> --ref|--selector --text <text>\uFF09"
2849
+ },
2850
+ "browser select": {
2851
+ en: "Set a native <select> value and verify it (--tab <id> --ref|--selector --value <v>|--label <l>)",
2852
+ zh: "\u8BBE\u7F6E\u539F\u751F <select> \u7684\u503C\u5E76\u6821\u9A8C\uFF08--tab <id> --ref|--selector --value <v>|--label <l>\uFF09"
2853
+ },
2854
+ "browser upload": {
2855
+ en: "Upload files to a file input element (--tab <id> --ref|--selector --file <path>)",
2856
+ zh: "\u4E0A\u4F20\u6587\u4EF6\u5230\u6587\u4EF6\u8F93\u5165\u5143\u7D20\uFF08--tab <id> --ref|--selector --file <path>\uFF09"
2857
+ },
2858
+ "browser press": {
2859
+ en: "Press a keyboard key (--tab <id> --key <key>)",
2860
+ zh: "\u6309\u4E0B\u952E\u76D8\u6309\u952E\uFF08--tab <id> --key <key>\uFF09"
2861
+ },
2862
+ "browser scroll": {
2863
+ en: "Scroll a tab or observe a container (--tab <id> [--selector <css>] [--delta-x N] [--delta-y N])",
2864
+ zh: "\u6EDA\u52A8\u6807\u7B7E\u9875\u6216\u89C2\u5BDF\u5BB9\u5668\uFF08--tab <id> [--selector <css>] [--delta-x N] [--delta-y N]\uFF09"
2865
+ },
2866
+ "browser screenshot": {
2867
+ en: "Capture a screenshot (--tab <id> [--out <path>])",
2868
+ zh: "\u622A\u53D6\u5C4F\u5E55\u622A\u56FE\uFF08--tab <id> [--out <path>]\uFF09"
2869
+ },
2870
+ "browser read-console": {
2871
+ en: "Read recent console entries (--tab <id>)",
2872
+ zh: "\u8BFB\u53D6\u6700\u8FD1\u7684\u63A7\u5236\u53F0\u6761\u76EE\uFF08--tab <id>\uFF09"
2873
+ },
2874
+ "browser read-network": {
2875
+ en: "Read recent network entries (--tab <id>)",
2876
+ zh: "\u8BFB\u53D6\u6700\u8FD1\u7684\u7F51\u7EDC\u6761\u76EE\uFF08--tab <id>\uFF09"
2877
+ },
2878
+ "chrome status": {
2879
+ en: "Show Nolo Browser Connector status (native host manifest, token, live connection) (Compatibility alias of `nolo browser status`)",
2880
+ zh: "\u663E\u793A Nolo \u6D4F\u89C8\u5668\u8FDE\u63A5\u5668\u72B6\u6001\uFF08\u539F\u751F host manifest\u3001\u4EE4\u724C\u3001\u5728\u7EBF\u8FDE\u63A5\uFF09\uFF08`nolo browser status` \u7684\u517C\u5BB9\u522B\u540D\uFF09"
2881
+ },
2882
+ "chrome install": {
2883
+ en: "Install the native messaging host manifest for this user (--browser chrome|firefox) (Compatibility alias of `nolo browser install`)",
2884
+ zh: "\u4E3A\u5F53\u524D\u7528\u6237\u5B89\u88C5\u539F\u751F\u6D88\u606F host manifest\uFF08--browser chrome|firefox\uFF09\uFF08`nolo browser install` \u7684\u517C\u5BB9\u522B\u540D\uFF09"
2885
+ },
2886
+ "chrome reload": {
2887
+ en: "Reload the connector extension through the running native host (Compatibility alias of `nolo browser reload`)",
2888
+ zh: "\u901A\u8FC7\u8FD0\u884C\u4E2D\u7684\u539F\u751F host \u91CD\u8F7D\u8FDE\u63A5\u5668\u6269\u5C55\uFF08`nolo browser reload` \u7684\u517C\u5BB9\u522B\u540D\uFF09"
2889
+ },
2890
+ "chrome list-tabs": {
2891
+ en: "List controllable browser tabs (Compatibility alias of `nolo browser list-tabs`)",
2892
+ zh: "\u5217\u51FA\u53EF\u63A7\u5236\u7684\u6D4F\u89C8\u5668\u6807\u7B7E\u9875\uFF08`nolo browser list-tabs` \u7684\u517C\u5BB9\u522B\u540D\uFF09"
2893
+ },
2894
+ "chrome open-tab": {
2895
+ en: "Open a URL in a new tab (--url <url> [--active]) (Compatibility alias of `nolo browser open-tab`)",
2896
+ zh: "\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00 URL\uFF08--url <url> [--active]\uFF09\uFF08`nolo browser open-tab` \u7684\u517C\u5BB9\u522B\u540D\uFF09"
2897
+ },
2898
+ "chrome close-tab": {
2899
+ en: "Close a tab (--tab <id>) (Compatibility alias of `nolo browser close-tab`)",
2900
+ zh: "\u5173\u95ED\u6807\u7B7E\u9875\uFF08--tab <id>\uFF09\uFF08`nolo browser close-tab` \u7684\u517C\u5BB9\u522B\u540D\uFF09"
2901
+ },
2902
+ "chrome read-page": {
2903
+ en: "Read a tab's text and interactive elements as elementRefs (--tab <id> [--offset N] [--viewport]) (Compatibility alias of `nolo browser read-page`)",
2904
+ zh: "\u4EE5 elementRefs \u8BFB\u53D6\u6807\u7B7E\u9875\u7684\u6587\u672C\u4E0E\u53EF\u4EA4\u4E92\u5143\u7D20\uFF08--tab <id> [--offset N] [--viewport]\uFF09\uFF08`nolo browser read-page` \u7684\u517C\u5BB9\u522B\u540D\uFF09"
2905
+ },
2906
+ "chrome click": {
2907
+ en: "Click an element (--tab <id> --ref|--selector) (Compatibility alias of `nolo browser click`)",
2908
+ zh: "\u70B9\u51FB\u5143\u7D20\uFF08--tab <id> --ref|--selector\uFF09\uFF08`nolo browser click` \u7684\u517C\u5BB9\u522B\u540D\uFF09"
2909
+ },
2910
+ "chrome type": {
2911
+ en: "Type text into an element (--tab <id> --ref|--selector --text <text>) (Compatibility alias of `nolo browser type`)",
2912
+ zh: "\u5411\u5143\u7D20\u8F93\u5165\u6587\u672C\uFF08--tab <id> --ref|--selector --text <text>\uFF09\uFF08`nolo browser type` \u7684\u517C\u5BB9\u522B\u540D\uFF09"
2913
+ },
2914
+ "chrome select": {
2915
+ en: "Set a native <select> value and verify it (--tab <id> --ref|--selector --value <v>|--label <l>) (Compatibility alias of `nolo browser select`)",
2916
+ zh: "\u8BBE\u7F6E\u539F\u751F <select> \u7684\u503C\u5E76\u6821\u9A8C\uFF08--tab <id> --ref|--selector --value <v>|--label <l>\uFF09\uFF08`nolo browser select` \u7684\u517C\u5BB9\u522B\u540D\uFF09"
2917
+ },
2918
+ "chrome upload": {
2919
+ en: "Upload files to a file input element (--tab <id> --ref|--selector --file <path>) (Compatibility alias of `nolo browser upload`)",
2920
+ zh: "\u4E0A\u4F20\u6587\u4EF6\u5230\u6587\u4EF6\u8F93\u5165\u5143\u7D20\uFF08--tab <id> --ref|--selector --file <path>\uFF09\uFF08`nolo browser upload` \u7684\u517C\u5BB9\u522B\u540D\uFF09"
2921
+ },
2922
+ "chrome press": {
2923
+ en: "Press a keyboard key (--tab <id> --key <key>) (Compatibility alias of `nolo browser press`)",
2924
+ zh: "\u6309\u4E0B\u952E\u76D8\u6309\u952E\uFF08--tab <id> --key <key>\uFF09\uFF08`nolo browser press` \u7684\u517C\u5BB9\u522B\u540D\uFF09"
2925
+ },
2926
+ "chrome scroll": {
2927
+ en: "Scroll a tab or observe a container (--tab <id> [--selector <css>] [--delta-x N] [--delta-y N]) (Compatibility alias of `nolo browser scroll`)",
2928
+ zh: "\u6EDA\u52A8\u6807\u7B7E\u9875\u6216\u89C2\u5BDF\u5BB9\u5668\uFF08--tab <id> [--selector <css>] [--delta-x N] [--delta-y N]\uFF09\uFF08`nolo browser scroll` \u7684\u517C\u5BB9\u522B\u540D\uFF09"
2929
+ },
2930
+ "chrome screenshot": {
2931
+ en: "Capture a screenshot (--tab <id> [--out <path>]) (Compatibility alias of `nolo browser screenshot`)",
2932
+ zh: "\u622A\u53D6\u5C4F\u5E55\u622A\u56FE\uFF08--tab <id> [--out <path>]\uFF09\uFF08`nolo browser screenshot` \u7684\u517C\u5BB9\u522B\u540D\uFF09"
2933
+ },
2934
+ "chrome read-console": {
2935
+ en: "Read recent console entries (--tab <id>) (Compatibility alias of `nolo browser read-console`)",
2936
+ zh: "\u8BFB\u53D6\u6700\u8FD1\u7684\u63A7\u5236\u53F0\u6761\u76EE\uFF08--tab <id>\uFF09\uFF08`nolo browser read-console` \u7684\u517C\u5BB9\u522B\u540D\uFF09"
2937
+ },
2938
+ "chrome read-network": {
2939
+ en: "Read recent network entries (--tab <id>) (Compatibility alias of `nolo browser read-network`)",
2940
+ zh: "\u8BFB\u53D6\u6700\u8FD1\u7684\u7F51\u7EDC\u6761\u76EE\uFF08--tab <id>\uFF09\uFF08`nolo browser read-network` \u7684\u517C\u5BB9\u522B\u540D\uFF09"
2941
+ },
2942
+ "ci status": {
2943
+ en: "Show recent nolo-ci deploy jobs (alpha / main)",
2944
+ zh: "\u67E5\u770B\u6700\u8FD1\u7684 nolo-ci \u90E8\u7F72\u4EFB\u52A1\uFF08alpha / main\uFF09"
2945
+ },
2946
+ "dialog usage": {
2947
+ en: "Show dialog tokens, recorded duration and speed by basis",
2948
+ zh: "\u663E\u793A\u5BF9\u8BDD\u7684 token \u6570\u3001\u8BB0\u5F55\u65F6\u957F\u4E0E\u6309\u57FA\u51C6\u8BA1\u7B97\u7684\u901F\u5EA6"
2949
+ },
2950
+ "login": {
2951
+ en: "Log in to Nolo",
2952
+ zh: "\u767B\u5F55 Nolo"
2953
+ },
2954
+ "logout": {
2955
+ en: "Log out of Nolo",
2956
+ zh: "\u9000\u51FA Nolo \u767B\u5F55"
2957
+ },
2958
+ "whoami": {
2959
+ en: "Show the current login state",
2960
+ zh: "\u663E\u793A\u5F53\u524D\u767B\u5F55\u72B6\u6001"
2961
+ },
2962
+ "connect": {
2963
+ en: "Send machine heartbeats or hold a connector websocket",
2964
+ zh: "\u53D1\u9001\u673A\u5668\u5FC3\u8DF3\u6216\u4FDD\u6301\u8FDE\u63A5\u5668 WebSocket"
2965
+ },
2966
+ "daemon": {
2967
+ en: "Run the connector daemon shortcut",
2968
+ zh: "\u8FD0\u884C\u8FDE\u63A5\u5668\u5B88\u62A4\u8FDB\u7A0B\u5FEB\u6377\u65B9\u5F0F"
2969
+ },
2970
+ "machine status": {
2971
+ en: "List machines registered to the current profile",
2972
+ zh: "\u5217\u51FA\u6CE8\u518C\u5230\u5F53\u524D\u914D\u7F6E\u7684\u673A\u5668"
2973
+ },
2974
+ "doctor runtime": {
2975
+ en: "Diagnose local-first agent runtime selection",
2976
+ zh: "\u8BCA\u65AD\u672C\u5730\u4F18\u5148\u667A\u80FD\u4F53\u8FD0\u884C\u65F6\u7684\u9009\u62E9\u7ED3\u679C"
2977
+ },
2978
+ "doctor": {
2979
+ en: "Show CLI doctor information",
2980
+ zh: "\u663E\u793A CLI \u8BCA\u65AD\u4FE1\u606F"
2981
+ },
2982
+ "secret": {
2983
+ en: "Manage local developer secrets (~/.nolo/credentials/secrets.json)",
2984
+ zh: "\u7BA1\u7406\u672C\u5730\u5F00\u53D1\u8005\u5BC6\u94A5\uFF08~/.nolo/credentials/secrets.json\uFF09"
2985
+ },
2986
+ "version": {
2987
+ en: "Show CLI version",
2988
+ zh: "\u663E\u793A CLI \u7248\u672C"
2989
+ },
2990
+ "--version": {
2991
+ en: "Show CLI version",
2992
+ zh: "\u663E\u793A CLI \u7248\u672C"
2993
+ },
2994
+ "-v": {
2995
+ en: "Show CLI version",
2996
+ zh: "\u663E\u793A CLI \u7248\u672C"
2997
+ },
2998
+ "--help": {
2999
+ en: "Show help",
3000
+ zh: "\u663E\u793A\u5E2E\u52A9"
3001
+ },
3002
+ "-h": {
3003
+ en: "Show help",
3004
+ zh: "\u663E\u793A\u5E2E\u52A9"
3005
+ },
3006
+ "space list": {
3007
+ en: "List joined spaces",
3008
+ zh: "\u5217\u51FA\u5DF2\u52A0\u5165\u7684\u7A7A\u95F4"
3009
+ },
3010
+ "space read": {
3011
+ en: "Read a space",
3012
+ zh: "\u8BFB\u53D6\u7A7A\u95F4"
3013
+ },
3014
+ "space delete": {
3015
+ en: "Delete spaces by safe filters",
3016
+ zh: "\u6309\u5B89\u5168\u6761\u4EF6\u5220\u9664\u7A7A\u95F4"
3017
+ },
3018
+ "space category": {
3019
+ en: "Create or update a space category",
3020
+ zh: "\u521B\u5EFA\u6216\u66F4\u65B0\u7A7A\u95F4\u5206\u7C7B"
3021
+ },
3022
+ "space content-category": {
3023
+ en: "Move content into a space category",
3024
+ zh: "\u628A\u5185\u5BB9\u79FB\u5165\u7A7A\u95F4\u5206\u7C7B"
3025
+ },
3026
+ "table meta": {
3027
+ en: "Create or update table metadata",
3028
+ zh: "\u521B\u5EFA\u6216\u66F4\u65B0\u8868\u683C\u5143\u6570\u636E"
3029
+ },
3030
+ "agent unpublish": {
3031
+ en: "Remove an agent's public record",
3032
+ zh: "\u79FB\u9664\u667A\u80FD\u4F53\u7684\u516C\u5F00\u8BB0\u5F55"
3033
+ },
3034
+ "agent dialogs": {
3035
+ en: "Inspect recent dialogs for an agent",
3036
+ zh: "\u67E5\u770B\u667A\u80FD\u4F53\u6700\u8FD1\u7684\u5BF9\u8BDD"
3037
+ },
3038
+ "agent doctor": {
3039
+ en: "Audit agent workspace health",
3040
+ zh: "\u5BA1\u8BA1\u667A\u80FD\u4F53\u5DE5\u4F5C\u533A\u7684\u5065\u5EB7\u72B6\u51B5"
3041
+ },
3042
+ "agent create-custom": {
3043
+ en: "Create a custom coding agent",
3044
+ zh: "\u521B\u5EFA\u81EA\u5B9A\u4E49\u7F16\u7801\u667A\u80FD\u4F53"
3045
+ },
3046
+ "agent create-space": {
3047
+ en: "Create or attach shared-space agents",
3048
+ zh: "\u521B\u5EFA\u6216\u9644\u52A0\u5171\u4EAB\u7A7A\u95F4\u667A\u80FD\u4F53"
3049
+ },
3050
+ "agent setup-demo": {
3051
+ en: "Bootstrap demo publisher agents",
3052
+ zh: "\u521D\u59CB\u5316\u6F14\u793A\u7528\u53D1\u5E03\u8005\u667A\u80FD\u4F53"
3053
+ },
3054
+ "dev": {
3055
+ en: "Manage the local dev environment",
3056
+ zh: "\u7BA1\u7406\u672C\u5730\u5F00\u53D1\u73AF\u5883"
2500
3057
  }
2501
3058
  };
2502
3059
  function cliCommandDescription(commandPath) {