nolo-cli 0.16.0 → 0.17.0

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 (132) hide show
  1. package/{_executeModel-AVCA2NAV.js → _executeModel-WPNX5DH4.js} +49 -43
  2. package/{action-F5JACQBG.js → action-LT7BRFLK.js} +10 -9
  3. package/{addContentAction-AQXEYRBE.js → addContentAction-PL3KKBDH.js} +9 -8
  4. package/{addDialogAgentAction-EJHHJZWW.js → addDialogAgentAction-FCMSKYAF.js} +8 -7
  5. package/{agentDeleteCommand-QW5PUMDQ.js → agentDeleteCommand-L3357EFL.js} +31 -28
  6. package/{agentEmailCommands-4ORVLGVQ.js → agentEmailCommands-N65AVLEI.js} +61 -55
  7. package/{agentListCommands-YWBYRTYC.js → agentListCommands-CH27FTI2.js} +30 -27
  8. package/{agentMachineCommands-JSQW4FOA.js → agentMachineCommands-PPK5HJZB.js} +29 -26
  9. package/{agentPullCommand-6HWUT3SW.js → agentPullCommand-ZZGU5KOY.js} +4 -4
  10. package/{agentRecordCommands-AASIWOBT.js → agentRecordCommands-HTVXD4TT.js} +56 -50
  11. package/{agentRunCommand-TB5BHXUH.js → agentRunCommand-MGLVJUA5.js} +62 -53
  12. package/{agentRunControl-6ADXVYMR.js → agentRunControl-P75VPTGS.js} +24 -1
  13. package/{agentRuntimeLocal-QNPNJRVH.js → agentRuntimeLocal-QUTBSY3I.js} +24 -21
  14. package/{agentSlice-RUNXC62Y.js → agentSlice-DOGRCMWK.js} +9 -8
  15. package/appDeleteCommands-FEEVXUBG.js +127 -0
  16. package/appDeployCommands-C4HCGC4B.js +166 -0
  17. package/appDeployStatusCommands-IR5ZUZBQ.js +147 -0
  18. package/appGetCommands-6RJGZ66Z.js +122 -0
  19. package/appListCommands-VMTF5YZF.js +125 -0
  20. package/{authCommand-YFTR3347.js → authCommand-WJZPOLSS.js} +16 -9
  21. package/{authCommands-YXGOXNBZ.js → authCommands-XTBV7OFZ.js} +6 -5
  22. package/{chunk-XPC5C7BK.js → chunk-3ND52WIL.js} +2 -2
  23. package/{chunk-SOTZ6RDN.js → chunk-3Q7WHGCB.js} +1 -1
  24. package/{chunk-M43KDE25.js → chunk-45BY7RLP.js} +2 -8
  25. package/{chunk-KKY4B2Q2.js → chunk-4PWB7JRR.js} +4 -1
  26. package/{chunk-6N4KODMN.js → chunk-4T5F7YZQ.js} +1 -1
  27. package/chunk-7BUYEZ6U.js +671 -0
  28. package/{chunk-AS3ZQ3O2.js → chunk-7OBMZCRD.js} +1 -1
  29. package/{chunk-AVVZUXXC.js → chunk-AAODAAUQ.js} +34 -13
  30. package/{chunk-QLUFR47U.js → chunk-AL2V7U3E.js} +1 -1
  31. package/{chunk-MTU75CZ2.js → chunk-B5TOXZAK.js} +1 -1
  32. package/{chunk-AUURUT6L.js → chunk-BT6K76S7.js} +238 -424
  33. package/chunk-CEFXYF66.js +107 -0
  34. package/{chunk-RLCXU7A5.js → chunk-D3HVJJIA.js} +1 -1
  35. package/{chunk-JTMNCCWF.js → chunk-DKZFOK24.js} +16 -87
  36. package/chunk-DL6EPNIK.js +50 -0
  37. package/{chunk-4L2OJPCU.js → chunk-EGPCU42M.js} +58 -8
  38. package/{chunk-IWLUTMYX.js → chunk-ELT65PZW.js} +2 -2
  39. package/chunk-FKXFCYVO.js +221 -0
  40. package/{chunk-4FX6NVDW.js → chunk-FPKLD4KB.js} +3 -136
  41. package/{chunk-PCTUYVUM.js → chunk-FVIPEIVX.js} +10 -3
  42. package/chunk-GFUIQ4RY.js +136 -0
  43. package/{chunk-66X4VSRC.js → chunk-HQPG2PIV.js} +41 -1
  44. package/{chunk-IGXREZW2.js → chunk-HV2A3B4W.js} +1 -1
  45. package/{chunk-LPEUV5RE.js → chunk-IOOMJJ4Z.js} +2 -2
  46. package/{setDialogExtraReferencesAction-LR6MSIXO.js → chunk-JLA4FXYC.js} +2 -17
  47. package/{chunk-3OIRVWXA.js → chunk-JP7REMYP.js} +10 -1
  48. package/chunk-KFEVY3ST.js +255 -0
  49. package/{chunk-P3RIAYGG.js → chunk-L2MLZQXU.js} +3 -3
  50. package/{chunk-55NSNCFM.js → chunk-L6NVTGI7.js} +1 -1
  51. package/{chunk-3WGLLTK4.js → chunk-LSFAWXKC.js} +100 -3
  52. package/{chunk-S2LXHNHG.js → chunk-MD3V54DA.js} +6 -6
  53. package/{chunk-6EVITP2G.js → chunk-MUCU6ATG.js} +2 -251
  54. package/{chunk-KFHN5NGJ.js → chunk-MVQ4TBSD.js} +1 -1
  55. package/{chunk-ZQBL7LIC.js → chunk-NEKFSXOP.js} +310 -211
  56. package/{chunk-NSCHQQPU.js → chunk-NVB267BZ.js} +397 -324
  57. package/{chunk-Z5JQNBNY.js → chunk-NYUXSXLY.js} +33 -14
  58. package/{chunk-FRV6A633.js → chunk-PZCBZO4J.js} +2 -2
  59. package/{chunk-GSINCD4P.js → chunk-QCJITMYO.js} +21 -11
  60. package/{chunk-OOSFSFMA.js → chunk-R5V5G73M.js} +2 -0
  61. package/{chunk-4IJYA27C.js → chunk-RG2U2MTJ.js} +1 -1
  62. package/{chunk-BEBNFWDU.js → chunk-RRGVDPH3.js} +3 -3
  63. package/{chunk-EABWT43X.js → chunk-RVOUXDFU.js} +5 -5
  64. package/{chunk-JTINRTBT.js → chunk-SKDNBYZK.js} +2 -2
  65. package/{chunk-3663CXZN.js → chunk-SNZV4QCE.js} +65 -22
  66. package/{chunk-KMQPSTMJ.js → chunk-TRT4I4UD.js} +2 -2
  67. package/{chunk-MYMMNKYL.js → chunk-TSIYZBTH.js} +156 -6
  68. package/{chunk-EHLHSX7R.js → chunk-UB4RYYNQ.js} +9 -2
  69. package/{chunk-YJKXGHJ6.js → chunk-UGUW3FHG.js} +4 -4
  70. package/{chunk-DPAB4FQ7.js → chunk-UZY4BEBR.js} +1579 -212
  71. package/chunk-V5R4NZP2.js +78 -0
  72. package/{chunk-MR6ISAGB.js → chunk-VDNQF5VI.js} +6 -6
  73. package/{chunk-33BJUVK4.js → chunk-VGMJ6PDJ.js} +5 -5
  74. package/{chunk-W4NVOSFF.js → chunk-WFHXMLHZ.js} +1 -1
  75. package/{chunk-H33743XH.js → chunk-WJRJDX2W.js} +1 -1
  76. package/chunk-X4Q4UZEY.js +26 -0
  77. package/{chunk-RPDGJO4D.js → chunk-XHG22OEX.js} +4 -4
  78. package/{chunk-DVRHHFEA.js → chunk-XMLRJUU5.js} +1 -1
  79. package/{chunk-3S2VOMIF.js → chunk-XRZJGPFI.js} +7 -7
  80. package/{chunk-7UKFVQ5W.js → chunk-YLRTBX4Y.js} +105 -36
  81. package/{chunk-DGEYDWEZ.js → chunk-YXTRNO5W.js} +3 -3
  82. package/{chunk-FY233ZFU.js → chunk-ZJZCMKOR.js} +107 -177
  83. package/{chunk-NVEWUJVX.js → chunk-ZVOZH2HW.js} +1 -1
  84. package/chunk-ZZ2MH7LE.js +84 -0
  85. package/{cliExecutor-K3F7DMRO.js → cliExecutor-DNE7TCC4.js} +2 -2
  86. package/codingSkills-36KN5NQT.js +48 -0
  87. package/{createAgentAutomationAction-FNHPSKKO.js → createAgentAutomationAction-PMOLEPGJ.js} +19 -18
  88. package/{createDialogAction-TZCVQ3NU.js → createDialogAction-DPRTYNAK.js} +21 -20
  89. package/{createPageAction-EIGZ3BKT.js → createPageAction-JGZK3WAM.js} +25 -24
  90. package/{dbSlice-7KQH6GOU.js → dbSlice-CGSRFJN3.js} +8 -7
  91. package/{deleteFile-WPWVZE4B.js → deleteFile-WDZ3VM7B.js} +3 -3
  92. package/{dialogCommands-FO77J5DQ.js → dialogCommands-XED6DKLV.js} +29 -26
  93. package/{dialogSlice-MM5U4KE2.js → dialogSlice-KO4NRNKC.js} +19 -18
  94. package/{docCreateCommands-I3BS3AZI.js → docCreateCommands-P6DYWHH3.js} +32 -27
  95. package/{docDeleteCommands-Q2OPV52P.js → docDeleteCommands-KUWXAMSN.js} +31 -26
  96. package/{docReadCommands-YOOFACYZ.js → docReadCommands-ECW55TKB.js} +30 -25
  97. package/{docStore-NGYQ2JTR.js → docStore-6KMERNUY.js} +20 -19
  98. package/{docUpdateCommands-2B32ITHN.js → docUpdateCommands-5J4BTJQN.js} +31 -26
  99. package/{fetchMessages-KTNM7QAR.js → fetchMessages-BMGVZVSE.js} +4 -3
  100. package/{getPricing-P4XRJRZB.js → getPricing-RYY6OBA4.js} +2 -2
  101. package/{handleSendMessageAction-JRZWWBKP.js → handleSendMessageAction-R3ZHTVU4.js} +20 -19
  102. package/index.js +95 -64
  103. package/{localDialogRead-2VRI24F4.js → localDialogRead-HQZPVIE3.js} +1 -1
  104. package/{localRuntimeDb-LGDF6FQP.js → localRuntimeDb-THJZGAOJ.js} +1 -1
  105. package/{machineCommands-WRWF2ICZ.js → machineCommands-JF2YL34J.js} +62 -56
  106. package/{machineWsRunDispatch-ZX7Q3TWZ.js → machineWsRunDispatch-ON4AEOJL.js} +54 -48
  107. package/{models-WQ5N4OJM.js → models-5K5G2CZI.js} +1 -1
  108. package/package.json +1 -1
  109. package/queryRunOverlay-O4LOMMPO.js +161 -0
  110. package/{read-CN3TNXIP.js → read-3FMPZPER.js} +3 -3
  111. package/{readDocTool-WF3675ED.js → readDocTool-VSYHKK3V.js} +1 -1
  112. package/{readlineWorkspace-ZTGRGW46.js → readlineWorkspace-SUCINTL7.js} +354 -185
  113. package/{removeDialogAgentAction-YDHBFEGI.js → removeDialogAgentAction-OAGA2G3U.js} +10 -9
  114. package/{runAgentClientLoop-JZCOP7LG.js → runAgentClientLoop-OBD2AVEL.js} +43 -37
  115. package/runOverlayPresentation-ZO4VCWEU.js +11 -0
  116. package/{runtimeDoctorCommands-THIHX2SY.js → runtimeDoctorCommands-E2OUORHK.js} +6 -6
  117. package/setDialogExtraReferencesAction-JZEXA5SL.js +27 -0
  118. package/{setPrimaryDialogAgentAction-IIVDCY5C.js → setPrimaryDialogAgentAction-4ZUQQKDG.js} +26 -17
  119. package/{settingSlice-O23YDK2O.js → settingSlice-7MNKHZ6R.js} +9 -8
  120. package/{skillDiscovery-6M2BZUFN.js → skillDiscovery-KJWT7JBU.js} +3 -3
  121. package/{spaceCommands-VV4GTPQK.js → spaceCommands-32NTNLHS.js} +30 -27
  122. package/{spaceSlice-DRWWZJP7.js → spaceSlice-P7VOXLY6.js} +19 -18
  123. package/{streamAgentChatTurn-Y6WGATQR.js → streamAgentChatTurn-UHEMNI3X.js} +97 -56
  124. package/{tableCommands-3P7MJ3PF.js → tableCommands-BEQAGE4I.js} +1 -1
  125. package/{tools-PUNBY3AH.js → tools-BMXIXHMB.js} +32 -27
  126. package/{tuiSummaryLlmCaller-F64WLSAF.js → tuiSummaryLlmCaller-VUNVBRX3.js} +5 -4
  127. package/types-ZSTJ7MPR.js +7 -0
  128. package/{updateDialogTitleAction-YSR4TCMB.js → updateDialogTitleAction-LJBDYZLH.js} +22 -21
  129. package/{chunk-O4BU24WZ.js → chunk-6Y7A3OQQ.js} +3 -3
  130. package/{chunk-XBS2WYJ2.js → chunk-RK5NYQEL.js} +0 -0
  131. package/{chunk-CMKUBIGW.js → chunk-X7W4TNB4.js} +3 -3
  132. package/{localRuntimeAuthority-TEGCOWX4.js → localRuntimeAuthority-4IXJCHZ7.js} +3 -3
@@ -0,0 +1,127 @@
1
+ import {
2
+ cliApiRequest,
3
+ outputResult,
4
+ pickDefined,
5
+ printCliError,
6
+ resolveCliContext
7
+ } from "./chunk-CEFXYF66.js";
8
+ import {
9
+ hasFlag,
10
+ hasHelpArg
11
+ } from "./chunk-FPKLD4KB.js";
12
+ import "./chunk-FVIPEIVX.js";
13
+ import "./chunk-45BY7RLP.js";
14
+ import "./chunk-VHBWHNVT.js";
15
+ import "./chunk-VF4K2QE6.js";
16
+ import "./chunk-YLRTBX4Y.js";
17
+ import "./chunk-ZNFJWEN4.js";
18
+ import "./chunk-AAODAAUQ.js";
19
+ import "./chunk-OIQPORYI.js";
20
+ import "./chunk-QCJITMYO.js";
21
+ import "./chunk-LSFAWXKC.js";
22
+ import "./chunk-IOOMJJ4Z.js";
23
+ import "./chunk-KFEVY3ST.js";
24
+ import "./chunk-MUCU6ATG.js";
25
+ import "./chunk-DKZFOK24.js";
26
+ import "./chunk-EGPCU42M.js";
27
+ import "./chunk-5MMAK75Q.js";
28
+ import "./chunk-5CS33IBL.js";
29
+ import "./chunk-JZPBVBIY.js";
30
+ import "./chunk-HQPG2PIV.js";
31
+ import "./chunk-ZHXJ6M7T.js";
32
+ import "./chunk-HNMXYYJR.js";
33
+ import "./chunk-ELT65PZW.js";
34
+ import "./chunk-AL2V7U3E.js";
35
+ import "./chunk-4PWB7JRR.js";
36
+ import "./chunk-ZZ2MH7LE.js";
37
+ import "./chunk-DWLEOOGR.js";
38
+ import "./chunk-IDZTNRP2.js";
39
+ import {
40
+ readOption
41
+ } from "./chunk-A7GB5UGH.js";
42
+ import "./chunk-OLZBQWZU.js";
43
+ import "./chunk-RK5NYQEL.js";
44
+ import "./chunk-O6W2O2DA.js";
45
+ import "./chunk-KX6YBIHG.js";
46
+ import "./chunk-XRZJGPFI.js";
47
+ import "./chunk-6Y7A3OQQ.js";
48
+ import "./chunk-WWC7I6TA.js";
49
+ import "./chunk-SKDNBYZK.js";
50
+ import "./chunk-I42VC5KR.js";
51
+ import "./chunk-QSJ3HFEF.js";
52
+ import "./chunk-X4Q4UZEY.js";
53
+ import "./chunk-3ND52WIL.js";
54
+ import "./chunk-XMLRJUU5.js";
55
+ import "./chunk-R5V5G73M.js";
56
+ import "./chunk-GBRG75BQ.js";
57
+ import "./chunk-3EUW3WEO.js";
58
+ import "./chunk-U6VC4MU4.js";
59
+ import "./chunk-KUG52IAP.js";
60
+ import "./chunk-LCBAMY2M.js";
61
+ import "./chunk-4SN6J65J.js";
62
+ import "./chunk-CF7PE763.js";
63
+ import "./chunk-G3SUCT4W.js";
64
+ import "./chunk-4VNS5WPM.js";
65
+
66
+ // packages/cli/appDeleteCommands.ts
67
+ function printAppDeleteUsage() {
68
+ process.stdout.write(`Usage:
69
+ nolo app delete (--name <name> | --app-id <id>)
70
+
71
+ Options:
72
+ --name <name> App name to delete
73
+ --app-id <id> App id to delete
74
+ --yes Skip confirmation prompt
75
+ --json Print machine-readable JSON
76
+ --server <url> Server to query
77
+ --token <jwt> Auth token. Required for writes.
78
+ `);
79
+ }
80
+ async function runAppDeleteCommand(args, deps) {
81
+ if (hasHelpArg(args)) {
82
+ printAppDeleteUsage();
83
+ return 0;
84
+ }
85
+ const name = readOption(args, "--name");
86
+ const appId = readOption(args, "--app-id");
87
+ const skipConfirm = hasFlag(args, "--yes");
88
+ const shouldOutputJson = hasFlag(args, "--json");
89
+ if (!name && !appId) {
90
+ printAppDeleteUsage();
91
+ process.stderr.write("\n\u9519\u8BEF: \u5FC5\u987B\u63D0\u4F9B --name \u6216 --app-id\n");
92
+ return 1;
93
+ }
94
+ if (!skipConfirm) {
95
+ const target = name ? `name="${name}"` : `appId="${appId}"`;
96
+ process.stdout.write(`\u5373\u5C06\u5220\u9664\u5E94\u7528 (${target})\uFF0C\u6B64\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002\u786E\u8BA4\uFF1F[y/N] `);
97
+ const answer = await new Promise((resolve) => {
98
+ let data = "";
99
+ process.stdin.setEncoding("utf-8");
100
+ process.stdin.once("data", (chunk) => {
101
+ data = chunk.toString();
102
+ resolve(data.trim().toLowerCase());
103
+ });
104
+ });
105
+ if (answer !== "y" && answer !== "yes") {
106
+ process.stdout.write("\u5DF2\u53D6\u6D88\n");
107
+ return 0;
108
+ }
109
+ }
110
+ try {
111
+ const { serverUrl, authToken } = resolveCliContext(args, deps.env);
112
+ const body = pickDefined({ name, appId });
113
+ const data = await cliApiRequest({ serverUrl, authToken, path: "/api/app/delete", body });
114
+ outputResult(data, shouldOutputJson, () => {
115
+ const target = name ? `name="${name}"` : `appId="${appId}"`;
116
+ process.stdout.write(`\u5DF2\u5220\u9664\u5E94\u7528 (${target})
117
+ `);
118
+ });
119
+ return 0;
120
+ } catch (error) {
121
+ printCliError(error);
122
+ return 1;
123
+ }
124
+ }
125
+ export {
126
+ runAppDeleteCommand
127
+ };
@@ -0,0 +1,166 @@
1
+ import {
2
+ cliApiRequest,
3
+ formatFields,
4
+ outputResult,
5
+ pickDefined,
6
+ printCliError,
7
+ resolveCliContext
8
+ } from "./chunk-CEFXYF66.js";
9
+ import {
10
+ hasFlag,
11
+ hasHelpArg
12
+ } from "./chunk-FPKLD4KB.js";
13
+ import "./chunk-FVIPEIVX.js";
14
+ import "./chunk-45BY7RLP.js";
15
+ import "./chunk-VHBWHNVT.js";
16
+ import "./chunk-VF4K2QE6.js";
17
+ import "./chunk-YLRTBX4Y.js";
18
+ import "./chunk-ZNFJWEN4.js";
19
+ import "./chunk-AAODAAUQ.js";
20
+ import "./chunk-OIQPORYI.js";
21
+ import "./chunk-QCJITMYO.js";
22
+ import "./chunk-LSFAWXKC.js";
23
+ import "./chunk-IOOMJJ4Z.js";
24
+ import "./chunk-KFEVY3ST.js";
25
+ import "./chunk-MUCU6ATG.js";
26
+ import "./chunk-DKZFOK24.js";
27
+ import "./chunk-EGPCU42M.js";
28
+ import "./chunk-5MMAK75Q.js";
29
+ import "./chunk-5CS33IBL.js";
30
+ import "./chunk-JZPBVBIY.js";
31
+ import "./chunk-HQPG2PIV.js";
32
+ import "./chunk-ZHXJ6M7T.js";
33
+ import "./chunk-HNMXYYJR.js";
34
+ import "./chunk-ELT65PZW.js";
35
+ import "./chunk-AL2V7U3E.js";
36
+ import "./chunk-4PWB7JRR.js";
37
+ import "./chunk-ZZ2MH7LE.js";
38
+ import "./chunk-DWLEOOGR.js";
39
+ import "./chunk-IDZTNRP2.js";
40
+ import {
41
+ readOption
42
+ } from "./chunk-A7GB5UGH.js";
43
+ import "./chunk-OLZBQWZU.js";
44
+ import "./chunk-RK5NYQEL.js";
45
+ import "./chunk-O6W2O2DA.js";
46
+ import "./chunk-KX6YBIHG.js";
47
+ import "./chunk-XRZJGPFI.js";
48
+ import "./chunk-6Y7A3OQQ.js";
49
+ import "./chunk-WWC7I6TA.js";
50
+ import "./chunk-SKDNBYZK.js";
51
+ import "./chunk-I42VC5KR.js";
52
+ import "./chunk-QSJ3HFEF.js";
53
+ import "./chunk-X4Q4UZEY.js";
54
+ import "./chunk-3ND52WIL.js";
55
+ import "./chunk-XMLRJUU5.js";
56
+ import "./chunk-R5V5G73M.js";
57
+ import "./chunk-GBRG75BQ.js";
58
+ import "./chunk-3EUW3WEO.js";
59
+ import "./chunk-U6VC4MU4.js";
60
+ import "./chunk-KUG52IAP.js";
61
+ import "./chunk-LCBAMY2M.js";
62
+ import "./chunk-4SN6J65J.js";
63
+ import "./chunk-CF7PE763.js";
64
+ import "./chunk-G3SUCT4W.js";
65
+ import "./chunk-4VNS5WPM.js";
66
+
67
+ // packages/cli/appDeployCommands.ts
68
+ import { readFileSync } from "node:fs";
69
+ function printAppDeployUsage() {
70
+ process.stdout.write(`Usage:
71
+ nolo app deploy --name <name> [--code <text> | --code-file <path> | --files <json>]
72
+
73
+ Options:
74
+ --name <name> App name (required for new apps)
75
+ --app-id <id> Update an existing app by id
76
+ --code <text> Single-file worker source code
77
+ --code-file <path> Read single-file source from a file
78
+ --files <json> JSON array of {name, code} for multi-file apps
79
+ --framework <type> worker | react-spa | nolo-react
80
+ --space-id <id> Attach app to a space
81
+ --deploy-target <t> Deploy target hint
82
+ --json Print machine-readable JSON
83
+ --server <url> Server to deploy to
84
+ --token <jwt> Auth token. Required for writes.
85
+ `);
86
+ }
87
+ function parseDeployArgs(args) {
88
+ const name = readOption(args, "--name");
89
+ const appId = readOption(args, "--app-id");
90
+ const codeFlag = readOption(args, "--code");
91
+ const codeFile = readOption(args, "--code-file");
92
+ const filesFlag = readOption(args, "--files");
93
+ const framework = readOption(args, "--framework");
94
+ const spaceId = readOption(args, "--space-id");
95
+ const deployTarget = readOption(args, "--deploy-target");
96
+ if (!name && !appId) {
97
+ return { body: {}, error: "\u5FC5\u987B\u63D0\u4F9B --name \u6216 --app-id" };
98
+ }
99
+ let code;
100
+ if (codeFlag) code = codeFlag;
101
+ if (codeFile) {
102
+ try {
103
+ code = readFileSync(codeFile, "utf-8");
104
+ } catch (error) {
105
+ return { body: {}, error: `\u65E0\u6CD5\u8BFB\u53D6 --code-file: ${error.message}` };
106
+ }
107
+ }
108
+ let files;
109
+ if (filesFlag) {
110
+ try {
111
+ const parsed = JSON.parse(filesFlag);
112
+ if (!Array.isArray(parsed)) {
113
+ return { body: {}, error: "--files \u5FC5\u987B\u662F JSON \u6570\u7EC4" };
114
+ }
115
+ files = parsed.map((f) => ({
116
+ name: String(f.name ?? ""),
117
+ code: String(f.code ?? "")
118
+ }));
119
+ } catch (error) {
120
+ return { body: {}, error: `--files \u89E3\u6790\u5931\u8D25: ${error.message}` };
121
+ }
122
+ }
123
+ if (!code && !files && !appId) {
124
+ return { body: {}, error: "\u5FC5\u987B\u63D0\u4F9B --code / --code-file / --files \u4E4B\u4E00" };
125
+ }
126
+ const body = pickDefined({ name, appId, code, files, framework, spaceId, deployTarget });
127
+ return { body };
128
+ }
129
+ async function runAppDeployCommand(args, deps) {
130
+ if (hasHelpArg(args)) {
131
+ printAppDeployUsage();
132
+ return 0;
133
+ }
134
+ const { body, error } = parseDeployArgs(args);
135
+ if (error) {
136
+ printAppDeployUsage();
137
+ process.stderr.write(`
138
+ \u9519\u8BEF: ${error}
139
+ `);
140
+ return 1;
141
+ }
142
+ try {
143
+ const { serverUrl, authToken } = resolveCliContext(args, deps.env);
144
+ const data = await cliApiRequest({ serverUrl, authToken, path: "/api/app/deploy", body });
145
+ outputResult(data, hasFlag(args, "--json"), () => {
146
+ process.stdout.write("\u90E8\u7F72\u6210\u529F\n");
147
+ const fields = [];
148
+ if (data.jobId) fields.push(["jobId", data.jobId]);
149
+ if (data.url) fields.push(["url", data.url]);
150
+ if (data.appId) fields.push(["appId", data.appId]);
151
+ if (data.status) fields.push(["status", data.status]);
152
+ if (fields.length > 0) {
153
+ process.stdout.write(formatFields(fields, " "));
154
+ process.stdout.write("\n");
155
+ }
156
+ });
157
+ return 0;
158
+ } catch (error2) {
159
+ printCliError(error2);
160
+ return 1;
161
+ }
162
+ }
163
+ export {
164
+ parseDeployArgs,
165
+ runAppDeployCommand
166
+ };
@@ -0,0 +1,147 @@
1
+ import {
2
+ cliApiRequest,
3
+ formatFields,
4
+ outputResult,
5
+ printCliError,
6
+ resolveCliContext
7
+ } from "./chunk-CEFXYF66.js";
8
+ import {
9
+ hasFlag,
10
+ hasHelpArg
11
+ } from "./chunk-FPKLD4KB.js";
12
+ import "./chunk-FVIPEIVX.js";
13
+ import "./chunk-45BY7RLP.js";
14
+ import "./chunk-VHBWHNVT.js";
15
+ import "./chunk-VF4K2QE6.js";
16
+ import "./chunk-YLRTBX4Y.js";
17
+ import "./chunk-ZNFJWEN4.js";
18
+ import "./chunk-AAODAAUQ.js";
19
+ import "./chunk-OIQPORYI.js";
20
+ import "./chunk-QCJITMYO.js";
21
+ import "./chunk-LSFAWXKC.js";
22
+ import "./chunk-IOOMJJ4Z.js";
23
+ import "./chunk-KFEVY3ST.js";
24
+ import "./chunk-MUCU6ATG.js";
25
+ import "./chunk-DKZFOK24.js";
26
+ import "./chunk-EGPCU42M.js";
27
+ import "./chunk-5MMAK75Q.js";
28
+ import "./chunk-5CS33IBL.js";
29
+ import "./chunk-JZPBVBIY.js";
30
+ import "./chunk-HQPG2PIV.js";
31
+ import "./chunk-ZHXJ6M7T.js";
32
+ import "./chunk-HNMXYYJR.js";
33
+ import "./chunk-ELT65PZW.js";
34
+ import "./chunk-AL2V7U3E.js";
35
+ import "./chunk-4PWB7JRR.js";
36
+ import "./chunk-ZZ2MH7LE.js";
37
+ import "./chunk-DWLEOOGR.js";
38
+ import "./chunk-IDZTNRP2.js";
39
+ import {
40
+ readOption
41
+ } from "./chunk-A7GB5UGH.js";
42
+ import "./chunk-OLZBQWZU.js";
43
+ import "./chunk-RK5NYQEL.js";
44
+ import "./chunk-O6W2O2DA.js";
45
+ import "./chunk-KX6YBIHG.js";
46
+ import "./chunk-XRZJGPFI.js";
47
+ import "./chunk-6Y7A3OQQ.js";
48
+ import "./chunk-WWC7I6TA.js";
49
+ import "./chunk-SKDNBYZK.js";
50
+ import "./chunk-I42VC5KR.js";
51
+ import "./chunk-QSJ3HFEF.js";
52
+ import "./chunk-X4Q4UZEY.js";
53
+ import "./chunk-3ND52WIL.js";
54
+ import "./chunk-XMLRJUU5.js";
55
+ import "./chunk-R5V5G73M.js";
56
+ import "./chunk-GBRG75BQ.js";
57
+ import "./chunk-3EUW3WEO.js";
58
+ import "./chunk-U6VC4MU4.js";
59
+ import "./chunk-KUG52IAP.js";
60
+ import "./chunk-LCBAMY2M.js";
61
+ import "./chunk-4SN6J65J.js";
62
+ import "./chunk-CF7PE763.js";
63
+ import "./chunk-G3SUCT4W.js";
64
+ import "./chunk-4VNS5WPM.js";
65
+
66
+ // packages/cli/appDeployStatusCommands.ts
67
+ function printAppDeployStatusUsage() {
68
+ process.stdout.write(`Usage:
69
+ nolo app deploy status --job-id <id> [--watch]
70
+
71
+ Options:
72
+ --job-id <id> Deploy job id (required)
73
+ --watch Poll until status is done or failed
74
+ --interval-ms <ms> Poll interval (default 2000)
75
+ --json Print machine-readable JSON
76
+ --server <url> Server to query
77
+ --token <jwt> Auth token. Required for reads.
78
+ `);
79
+ }
80
+ async function fetchDeployStatus(serverUrl, authToken, jobId) {
81
+ return cliApiRequest({
82
+ serverUrl,
83
+ authToken,
84
+ path: "/api/app/deploy/status",
85
+ body: { jobId }
86
+ });
87
+ }
88
+ async function runAppDeployStatusCommand(args, deps) {
89
+ if (hasHelpArg(args)) {
90
+ printAppDeployStatusUsage();
91
+ return 0;
92
+ }
93
+ const jobId = readOption(args, "--job-id");
94
+ if (!jobId) {
95
+ printAppDeployStatusUsage();
96
+ process.stderr.write("\n\u9519\u8BEF: \u5FC5\u987B\u63D0\u4F9B --job-id\n");
97
+ return 1;
98
+ }
99
+ const shouldWatch = hasFlag(args, "--watch");
100
+ const shouldOutputJson = hasFlag(args, "--json");
101
+ const intervalMs = (() => {
102
+ const raw = readOption(args, "--interval-ms");
103
+ const parsed = raw ? Number.parseInt(raw, 10) : NaN;
104
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : 2e3;
105
+ })();
106
+ try {
107
+ const { serverUrl, authToken } = resolveCliContext(args, deps.env);
108
+ let data = await fetchDeployStatus(serverUrl, authToken, jobId);
109
+ if (shouldWatch) {
110
+ while (data.status !== "done" && data.status !== "failed") {
111
+ await new Promise((resolve) => setTimeout(resolve, intervalMs));
112
+ data = await fetchDeployStatus(serverUrl, authToken, jobId);
113
+ }
114
+ }
115
+ outputResult(data, shouldOutputJson, () => {
116
+ process.stdout.write("\u90E8\u7F72\u72B6\u6001\n\n");
117
+ const fields = [
118
+ ["jobId", data.jobId ?? jobId],
119
+ ["status", data.status]
120
+ ];
121
+ if (data.summary) fields.push(["summary", data.summary]);
122
+ if (data.url) fields.push(["url", data.url]);
123
+ if (data.error) {
124
+ const err = data.error;
125
+ fields.push(["error", err.message ?? String(data.error)]);
126
+ }
127
+ process.stdout.write(formatFields(fields, " "));
128
+ if (Array.isArray(data.steps)) {
129
+ process.stdout.write("\n steps:\n");
130
+ for (const step of data.steps) {
131
+ process.stdout.write(` - ${step.name ?? "?"}: ${step.status ?? "?"}
132
+ `);
133
+ }
134
+ } else {
135
+ process.stdout.write("\n");
136
+ }
137
+ });
138
+ return data.status === "failed" ? 1 : 0;
139
+ } catch (error) {
140
+ printCliError(error);
141
+ return 1;
142
+ }
143
+ }
144
+ export {
145
+ fetchDeployStatus,
146
+ runAppDeployStatusCommand
147
+ };
@@ -0,0 +1,122 @@
1
+ import {
2
+ cliApiRequest,
3
+ formatFields,
4
+ outputResult,
5
+ pickDefined,
6
+ printCliError,
7
+ resolveCliContext
8
+ } from "./chunk-CEFXYF66.js";
9
+ import {
10
+ hasFlag,
11
+ hasHelpArg
12
+ } from "./chunk-FPKLD4KB.js";
13
+ import "./chunk-FVIPEIVX.js";
14
+ import "./chunk-45BY7RLP.js";
15
+ import "./chunk-VHBWHNVT.js";
16
+ import "./chunk-VF4K2QE6.js";
17
+ import "./chunk-YLRTBX4Y.js";
18
+ import "./chunk-ZNFJWEN4.js";
19
+ import "./chunk-AAODAAUQ.js";
20
+ import "./chunk-OIQPORYI.js";
21
+ import "./chunk-QCJITMYO.js";
22
+ import "./chunk-LSFAWXKC.js";
23
+ import "./chunk-IOOMJJ4Z.js";
24
+ import "./chunk-KFEVY3ST.js";
25
+ import "./chunk-MUCU6ATG.js";
26
+ import "./chunk-DKZFOK24.js";
27
+ import "./chunk-EGPCU42M.js";
28
+ import "./chunk-5MMAK75Q.js";
29
+ import "./chunk-5CS33IBL.js";
30
+ import "./chunk-JZPBVBIY.js";
31
+ import "./chunk-HQPG2PIV.js";
32
+ import "./chunk-ZHXJ6M7T.js";
33
+ import "./chunk-HNMXYYJR.js";
34
+ import "./chunk-ELT65PZW.js";
35
+ import "./chunk-AL2V7U3E.js";
36
+ import "./chunk-4PWB7JRR.js";
37
+ import "./chunk-ZZ2MH7LE.js";
38
+ import "./chunk-DWLEOOGR.js";
39
+ import "./chunk-IDZTNRP2.js";
40
+ import {
41
+ readOption
42
+ } from "./chunk-A7GB5UGH.js";
43
+ import "./chunk-OLZBQWZU.js";
44
+ import "./chunk-RK5NYQEL.js";
45
+ import "./chunk-O6W2O2DA.js";
46
+ import "./chunk-KX6YBIHG.js";
47
+ import "./chunk-XRZJGPFI.js";
48
+ import "./chunk-6Y7A3OQQ.js";
49
+ import "./chunk-WWC7I6TA.js";
50
+ import "./chunk-SKDNBYZK.js";
51
+ import "./chunk-I42VC5KR.js";
52
+ import "./chunk-QSJ3HFEF.js";
53
+ import "./chunk-X4Q4UZEY.js";
54
+ import "./chunk-3ND52WIL.js";
55
+ import "./chunk-XMLRJUU5.js";
56
+ import "./chunk-R5V5G73M.js";
57
+ import "./chunk-GBRG75BQ.js";
58
+ import "./chunk-3EUW3WEO.js";
59
+ import "./chunk-U6VC4MU4.js";
60
+ import "./chunk-KUG52IAP.js";
61
+ import "./chunk-LCBAMY2M.js";
62
+ import "./chunk-4SN6J65J.js";
63
+ import "./chunk-CF7PE763.js";
64
+ import "./chunk-G3SUCT4W.js";
65
+ import "./chunk-4VNS5WPM.js";
66
+
67
+ // packages/cli/appGetCommands.ts
68
+ function printAppGetUsage() {
69
+ process.stdout.write(`Usage:
70
+ nolo app get (--name <name> | --app-id <id> | --app-key <key>)
71
+
72
+ Options:
73
+ --name <name> App name
74
+ --app-id <id> App id
75
+ --app-key <key> Full app key
76
+ --json Print machine-readable JSON
77
+ --server <url> Server to query
78
+ --token <jwt> Auth token. Required for reads.
79
+ `);
80
+ }
81
+ async function runAppGetCommand(args, deps) {
82
+ if (hasHelpArg(args)) {
83
+ printAppGetUsage();
84
+ return 0;
85
+ }
86
+ const name = readOption(args, "--name");
87
+ const appId = readOption(args, "--app-id");
88
+ const appKey = readOption(args, "--app-key");
89
+ if (!name && !appId && !appKey) {
90
+ printAppGetUsage();
91
+ process.stderr.write("\n\u9519\u8BEF: \u5FC5\u987B\u63D0\u4F9B --name / --app-id / --app-key \u4E4B\u4E00\n");
92
+ return 1;
93
+ }
94
+ try {
95
+ const { serverUrl, authToken } = resolveCliContext(args, deps.env);
96
+ const body = pickDefined({ name, appId, appKey });
97
+ const data = await cliApiRequest({ serverUrl, authToken, path: "/api/app/get", body });
98
+ outputResult(data, hasFlag(args, "--json"), () => {
99
+ process.stdout.write("\u5E94\u7528\u8BE6\u60C5\n\n");
100
+ const fields = [
101
+ ["name", data.name ?? data.userFriendlyName],
102
+ ["appId", data.appId],
103
+ ["appKey", data.appKey],
104
+ ["framework", data.framework],
105
+ ["visibility", data.visibility]
106
+ ];
107
+ if (data.url) fields.push(["url", data.url]);
108
+ if (data.customUrl) fields.push(["customUrl", data.customUrl]);
109
+ if (data.spaceId) fields.push(["spaceId", data.spaceId]);
110
+ if (data.sourceStatus) fields.push(["source", data.sourceStatus]);
111
+ process.stdout.write(formatFields(fields, " "));
112
+ process.stdout.write("\n");
113
+ });
114
+ return 0;
115
+ } catch (error) {
116
+ printCliError(error);
117
+ return 1;
118
+ }
119
+ }
120
+ export {
121
+ runAppGetCommand
122
+ };
@@ -0,0 +1,125 @@
1
+ import {
2
+ cliApiRequest,
3
+ formatFields,
4
+ outputResult,
5
+ pickDefined,
6
+ printCliError,
7
+ resolveCliContext
8
+ } from "./chunk-CEFXYF66.js";
9
+ import {
10
+ hasFlag,
11
+ hasHelpArg
12
+ } from "./chunk-FPKLD4KB.js";
13
+ import "./chunk-FVIPEIVX.js";
14
+ import "./chunk-45BY7RLP.js";
15
+ import "./chunk-VHBWHNVT.js";
16
+ import "./chunk-VF4K2QE6.js";
17
+ import "./chunk-YLRTBX4Y.js";
18
+ import "./chunk-ZNFJWEN4.js";
19
+ import "./chunk-AAODAAUQ.js";
20
+ import "./chunk-OIQPORYI.js";
21
+ import "./chunk-QCJITMYO.js";
22
+ import "./chunk-LSFAWXKC.js";
23
+ import "./chunk-IOOMJJ4Z.js";
24
+ import "./chunk-KFEVY3ST.js";
25
+ import "./chunk-MUCU6ATG.js";
26
+ import "./chunk-DKZFOK24.js";
27
+ import "./chunk-EGPCU42M.js";
28
+ import "./chunk-5MMAK75Q.js";
29
+ import "./chunk-5CS33IBL.js";
30
+ import "./chunk-JZPBVBIY.js";
31
+ import "./chunk-HQPG2PIV.js";
32
+ import "./chunk-ZHXJ6M7T.js";
33
+ import "./chunk-HNMXYYJR.js";
34
+ import "./chunk-ELT65PZW.js";
35
+ import "./chunk-AL2V7U3E.js";
36
+ import "./chunk-4PWB7JRR.js";
37
+ import "./chunk-ZZ2MH7LE.js";
38
+ import "./chunk-DWLEOOGR.js";
39
+ import "./chunk-IDZTNRP2.js";
40
+ import {
41
+ readOption
42
+ } from "./chunk-A7GB5UGH.js";
43
+ import "./chunk-OLZBQWZU.js";
44
+ import "./chunk-RK5NYQEL.js";
45
+ import "./chunk-O6W2O2DA.js";
46
+ import "./chunk-KX6YBIHG.js";
47
+ import "./chunk-XRZJGPFI.js";
48
+ import "./chunk-6Y7A3OQQ.js";
49
+ import "./chunk-WWC7I6TA.js";
50
+ import "./chunk-SKDNBYZK.js";
51
+ import "./chunk-I42VC5KR.js";
52
+ import "./chunk-QSJ3HFEF.js";
53
+ import "./chunk-X4Q4UZEY.js";
54
+ import "./chunk-3ND52WIL.js";
55
+ import "./chunk-XMLRJUU5.js";
56
+ import "./chunk-R5V5G73M.js";
57
+ import "./chunk-GBRG75BQ.js";
58
+ import "./chunk-3EUW3WEO.js";
59
+ import "./chunk-U6VC4MU4.js";
60
+ import "./chunk-KUG52IAP.js";
61
+ import "./chunk-LCBAMY2M.js";
62
+ import "./chunk-4SN6J65J.js";
63
+ import "./chunk-CF7PE763.js";
64
+ import "./chunk-G3SUCT4W.js";
65
+ import "./chunk-4VNS5WPM.js";
66
+
67
+ // packages/cli/appListCommands.ts
68
+ function printAppListUsage() {
69
+ process.stdout.write(`Usage:
70
+ nolo app list [--scope owned|accessible] [--space-id <id>]
71
+
72
+ Options:
73
+ --scope <type> owned (default) or accessible
74
+ --space-id <id> List apps under a space
75
+ --json Print machine-readable JSON
76
+ --server <url> Server to query
77
+ --token <jwt> Auth token. Required for reads.
78
+ `);
79
+ }
80
+ async function runAppListCommand(args, deps) {
81
+ if (hasHelpArg(args)) {
82
+ printAppListUsage();
83
+ return 0;
84
+ }
85
+ try {
86
+ const { serverUrl, authToken } = resolveCliContext(args, deps.env);
87
+ const body = pickDefined({
88
+ scope: readOption(args, "--scope"),
89
+ spaceId: readOption(args, "--space-id")
90
+ });
91
+ const data = await cliApiRequest({ serverUrl, authToken, path: "/api/app/list", body });
92
+ const workers = data.workers ?? [];
93
+ outputResult(data, hasFlag(args, "--json"), () => {
94
+ if (workers.length === 0) {
95
+ process.stdout.write("\u6CA1\u6709\u5E94\u7528\n");
96
+ return;
97
+ }
98
+ process.stdout.write(`\u5E94\u7528\u5217\u8868 (${workers.length})
99
+
100
+ `);
101
+ for (const app of workers) {
102
+ process.stdout.write(` ${app.userFriendlyName ?? "(unnamed)"}
103
+ `);
104
+ const fields = [
105
+ ["appId", app.appId],
106
+ ["appKey", app.appKey],
107
+ ["url", app.url],
108
+ ["framework", app.framework],
109
+ ["visibility", app.visibility]
110
+ ];
111
+ if (app.customUrl) fields.push(["customUrl", app.customUrl]);
112
+ if (app.modifiedOn) fields.push(["modified", app.modifiedOn]);
113
+ process.stdout.write(formatFields(fields, " "));
114
+ process.stdout.write("\n\n");
115
+ }
116
+ });
117
+ return 0;
118
+ } catch (error) {
119
+ printCliError(error);
120
+ return 1;
121
+ }
122
+ }
123
+ export {
124
+ runAppListCommand
125
+ };