nolo-cli 0.16.0 → 0.18.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 (134) hide show
  1. package/{_executeModel-AVCA2NAV.js → _executeModel-X5PCIZN6.js} +50 -44
  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-2BZDQV36.js} +32 -29
  6. package/{agentEmailCommands-4ORVLGVQ.js → agentEmailCommands-2QJDGRMB.js} +62 -56
  7. package/{agentListCommands-YWBYRTYC.js → agentListCommands-6VEPTKBI.js} +31 -28
  8. package/{agentMachineCommands-JSQW4FOA.js → agentMachineCommands-NVVHNWYI.js} +30 -27
  9. package/{agentPullCommand-6HWUT3SW.js → agentPullCommand-ZZGU5KOY.js} +4 -4
  10. package/{agentRecordCommands-AASIWOBT.js → agentRecordCommands-4GGRDMD4.js} +57 -51
  11. package/{agentRunCommand-TB5BHXUH.js → agentRunCommand-XOLQNKBZ.js} +63 -54
  12. package/{agentRunControl-6ADXVYMR.js → agentRunControl-Y5AFH5PQ.js} +24 -1
  13. package/{agentRuntimeLocal-QNPNJRVH.js → agentRuntimeLocal-7WYWCGL4.js} +25 -22
  14. package/{agentSlice-RUNXC62Y.js → agentSlice-EAXPGEYV.js} +9 -8
  15. package/appDeleteCommands-77KR2RJ4.js +127 -0
  16. package/appDeployCommands-K7CAHGBI.js +166 -0
  17. package/appDeployStatusCommands-4OEKLTBT.js +147 -0
  18. package/appGetCommands-VM2WDLAZ.js +122 -0
  19. package/appListCommands-GX6BBA6U.js +125 -0
  20. package/{authCommand-YFTR3347.js → authCommand-DY6UUL6O.js} +16 -9
  21. package/{authCommands-YXGOXNBZ.js → authCommands-XTBV7OFZ.js} +6 -5
  22. package/{chunk-DPAB4FQ7.js → chunk-23FZYPLC.js} +1608 -212
  23. package/{chunk-LPEUV5RE.js → chunk-34WPV75U.js} +23 -2
  24. package/{chunk-XPC5C7BK.js → chunk-3ND52WIL.js} +2 -2
  25. package/{chunk-SOTZ6RDN.js → chunk-3Q7WHGCB.js} +1 -1
  26. package/{chunk-3OIRVWXA.js → chunk-3ZX7PERL.js} +10 -1
  27. package/{chunk-KKY4B2Q2.js → chunk-4PWB7JRR.js} +4 -1
  28. package/{chunk-6N4KODMN.js → chunk-4T5F7YZQ.js} +1 -1
  29. package/chunk-7BUYEZ6U.js +671 -0
  30. package/{chunk-AS3ZQ3O2.js → chunk-7OBMZCRD.js} +1 -1
  31. package/{chunk-IGXREZW2.js → chunk-AHCY2S2I.js} +1 -1
  32. package/{chunk-QLUFR47U.js → chunk-AL2V7U3E.js} +1 -1
  33. package/{chunk-MTU75CZ2.js → chunk-B5TOXZAK.js} +1 -1
  34. package/{chunk-AUURUT6L.js → chunk-BV4VEE3W.js} +264 -424
  35. package/{chunk-FRV6A633.js → chunk-CZ6NYQTV.js} +13 -4
  36. package/{chunk-PCTUYVUM.js → chunk-DFCFMCY6.js} +10 -3
  37. package/{chunk-JTMNCCWF.js → chunk-DKZFOK24.js} +16 -87
  38. package/chunk-DL6EPNIK.js +50 -0
  39. package/{chunk-ZQBL7LIC.js → chunk-EDV7EBOI.js} +317 -216
  40. package/{chunk-IWLUTMYX.js → chunk-ELT65PZW.js} +2 -2
  41. package/chunk-FQZZLA3C.js +223 -0
  42. package/{chunk-55NSNCFM.js → chunk-FXUSIQC2.js} +1 -1
  43. package/{chunk-MR6ISAGB.js → chunk-G5U6LDLG.js} +6 -6
  44. package/chunk-GFUIQ4RY.js +136 -0
  45. package/{chunk-NVEWUJVX.js → chunk-HEGV7BH3.js} +1 -1
  46. package/{chunk-BEBNFWDU.js → chunk-HWW2M4SN.js} +3 -3
  47. package/{chunk-4L2OJPCU.js → chunk-I2ZJKTG5.js} +58 -8
  48. package/{chunk-Z5JQNBNY.js → chunk-IYEXFJPC.js} +34 -15
  49. package/{setDialogExtraReferencesAction-LR6MSIXO.js → chunk-JLA4FXYC.js} +2 -17
  50. package/chunk-KFEVY3ST.js +255 -0
  51. package/{chunk-4FX6NVDW.js → chunk-L4F3I4SR.js} +3 -136
  52. package/{chunk-XBS2WYJ2.js → chunk-LLWKHDG4.js} +1 -1
  53. package/{chunk-3WGLLTK4.js → chunk-LSFAWXKC.js} +100 -3
  54. package/{chunk-6EVITP2G.js → chunk-MHSGJW4Z.js} +2 -251
  55. package/{chunk-O6W2O2DA.js → chunk-MKA6QE5E.js} +6 -2
  56. package/{chunk-DGEYDWEZ.js → chunk-MPVYDS7I.js} +3 -3
  57. package/{chunk-KFHN5NGJ.js → chunk-MVQ4TBSD.js} +1 -1
  58. package/{chunk-AVVZUXXC.js → chunk-N54HIJVJ.js} +34 -13
  59. package/{chunk-EHLHSX7R.js → chunk-OK6YSWLH.js} +9 -2
  60. package/{chunk-33BJUVK4.js → chunk-PIZYJVHQ.js} +5 -5
  61. package/{chunk-RLCXU7A5.js → chunk-PJSV3IZ5.js} +1 -1
  62. package/{chunk-7UKFVQ5W.js → chunk-R35XMF6F.js} +126 -41
  63. package/{chunk-OOSFSFMA.js → chunk-R5V5G73M.js} +2 -0
  64. package/{chunk-S2LXHNHG.js → chunk-REA4JLBH.js} +6 -6
  65. package/chunk-RQN4SEKL.js +107 -0
  66. package/{chunk-EABWT43X.js → chunk-RVOUXDFU.js} +5 -5
  67. package/{chunk-NSCHQQPU.js → chunk-SCTYAHYK.js} +470 -325
  68. package/{chunk-JTINRTBT.js → chunk-SKDNBYZK.js} +2 -2
  69. package/{chunk-M43KDE25.js → chunk-SWDPIPOY.js} +2 -8
  70. package/{chunk-KMQPSTMJ.js → chunk-TRT4I4UD.js} +2 -2
  71. package/{chunk-66X4VSRC.js → chunk-UAIVG4J6.js} +42 -2
  72. package/{chunk-3663CXZN.js → chunk-UBHAWFQ6.js} +143 -31
  73. package/{chunk-YJKXGHJ6.js → chunk-UGUW3FHG.js} +4 -4
  74. package/{chunk-P3RIAYGG.js → chunk-V3ED5AWK.js} +3 -3
  75. package/chunk-V5R4NZP2.js +78 -0
  76. package/{chunk-4IJYA27C.js → chunk-VDXCXCXH.js} +1 -1
  77. package/{chunk-MYMMNKYL.js → chunk-VNAEBGDK.js} +156 -6
  78. package/{chunk-FY233ZFU.js → chunk-VYHDJEQD.js} +110 -192
  79. package/{chunk-W4NVOSFF.js → chunk-WFHXMLHZ.js} +1 -1
  80. package/{chunk-H33743XH.js → chunk-WJRJDX2W.js} +1 -1
  81. package/chunk-X4Q4UZEY.js +26 -0
  82. package/{chunk-RPDGJO4D.js → chunk-XHG22OEX.js} +4 -4
  83. package/{chunk-DVRHHFEA.js → chunk-XMLRJUU5.js} +1 -1
  84. package/{chunk-3S2VOMIF.js → chunk-XRZJGPFI.js} +7 -7
  85. package/{chunk-GSINCD4P.js → chunk-YGW4G5W5.js} +25 -12
  86. package/chunk-ZZ2MH7LE.js +84 -0
  87. package/{cliExecutor-K3F7DMRO.js → cliExecutor-DNE7TCC4.js} +2 -2
  88. package/codingSkills-36KN5NQT.js +48 -0
  89. package/{createAgentAutomationAction-FNHPSKKO.js → createAgentAutomationAction-GNFF524X.js} +20 -19
  90. package/{createDialogAction-TZCVQ3NU.js → createDialogAction-RB55KCLO.js} +22 -21
  91. package/{createPageAction-EIGZ3BKT.js → createPageAction-Y7343GLU.js} +26 -25
  92. package/{db-HCJ5PRB5.js → db-W3O47YGF.js} +38 -12
  93. package/{dbSlice-7KQH6GOU.js → dbSlice-CGSRFJN3.js} +8 -7
  94. package/{deleteFile-WPWVZE4B.js → deleteFile-WDZ3VM7B.js} +3 -3
  95. package/{dialogCommands-FO77J5DQ.js → dialogCommands-IAZK6YHQ.js} +30 -27
  96. package/{dialogSlice-MM5U4KE2.js → dialogSlice-UQAXF23P.js} +20 -19
  97. package/{docCreateCommands-I3BS3AZI.js → docCreateCommands-I2EWZGCI.js} +33 -28
  98. package/{docDeleteCommands-Q2OPV52P.js → docDeleteCommands-IZ45UZKG.js} +32 -27
  99. package/{docReadCommands-YOOFACYZ.js → docReadCommands-R6Z4QJYU.js} +31 -26
  100. package/{docStore-NGYQ2JTR.js → docStore-5HOJ4D7D.js} +21 -20
  101. package/{docUpdateCommands-2B32ITHN.js → docUpdateCommands-2LRBKQPY.js} +32 -27
  102. package/{fetchMessages-KTNM7QAR.js → fetchMessages-BMGVZVSE.js} +4 -3
  103. package/{getPricing-P4XRJRZB.js → getPricing-G7DLAST6.js} +3 -3
  104. package/{handleSendMessageAction-JRZWWBKP.js → handleSendMessageAction-Q4HY35WX.js} +21 -20
  105. package/index.js +95 -64
  106. package/{localDialogRead-2VRI24F4.js → localDialogRead-4H3QJFLW.js} +2 -2
  107. package/{localRuntimeDb-LGDF6FQP.js → localRuntimeDb-THJZGAOJ.js} +1 -1
  108. package/{machineCommands-WRWF2ICZ.js → machineCommands-PKBPQKTY.js} +63 -57
  109. package/{machineWsRunDispatch-ZX7Q3TWZ.js → machineWsRunDispatch-UZAW4OXJ.js} +55 -49
  110. package/{models-WQ5N4OJM.js → models-DJFSJ7SW.js} +2 -2
  111. package/package.json +1 -1
  112. package/queryRunOverlay-O4LOMMPO.js +161 -0
  113. package/{read-CN3TNXIP.js → read-3FMPZPER.js} +3 -3
  114. package/{readDocTool-WF3675ED.js → readDocTool-VSYHKK3V.js} +1 -1
  115. package/{readlineWorkspace-ZTGRGW46.js → readlineWorkspace-Y2RDOFZG.js} +762 -218
  116. package/{removeDialogAgentAction-YDHBFEGI.js → removeDialogAgentAction-OAGA2G3U.js} +10 -9
  117. package/{runAgentClientLoop-JZCOP7LG.js → runAgentClientLoop-NBPIKJ6J.js} +44 -38
  118. package/runOverlayPresentation-ZO4VCWEU.js +11 -0
  119. package/{runtimeDoctorCommands-THIHX2SY.js → runtimeDoctorCommands-E2OUORHK.js} +6 -6
  120. package/setDialogExtraReferencesAction-JZEXA5SL.js +27 -0
  121. package/{setPrimaryDialogAgentAction-IIVDCY5C.js → setPrimaryDialogAgentAction-4ZUQQKDG.js} +26 -17
  122. package/{settingSlice-O23YDK2O.js → settingSlice-7MNKHZ6R.js} +9 -8
  123. package/{skillDiscovery-6M2BZUFN.js → skillDiscovery-KJWT7JBU.js} +3 -3
  124. package/{spaceCommands-VV4GTPQK.js → spaceCommands-DHCZ7J5I.js} +31 -28
  125. package/{spaceSlice-DRWWZJP7.js → spaceSlice-ZXLLG3CR.js} +20 -19
  126. package/{streamAgentChatTurn-Y6WGATQR.js → streamAgentChatTurn-L3YW6LSB.js} +98 -57
  127. package/{tableCommands-3P7MJ3PF.js → tableCommands-BEQAGE4I.js} +1 -1
  128. package/{tools-PUNBY3AH.js → tools-ECGXR5QF.js} +33 -28
  129. package/{tuiSummaryLlmCaller-F64WLSAF.js → tuiSummaryLlmCaller-OMSCNHXA.js} +6 -5
  130. package/types-ZSTJ7MPR.js +7 -0
  131. package/{updateDialogTitleAction-YSR4TCMB.js → updateDialogTitleAction-HQ2EUDFT.js} +23 -22
  132. package/{chunk-O4BU24WZ.js → chunk-6Y7A3OQQ.js} +3 -3
  133. package/{chunk-CMKUBIGW.js → chunk-X7W4TNB4.js} +3 -3
  134. 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-RQN4SEKL.js";
8
+ import {
9
+ hasFlag,
10
+ hasHelpArg
11
+ } from "./chunk-L4F3I4SR.js";
12
+ import "./chunk-DFCFMCY6.js";
13
+ import "./chunk-SWDPIPOY.js";
14
+ import "./chunk-VHBWHNVT.js";
15
+ import "./chunk-VF4K2QE6.js";
16
+ import "./chunk-R35XMF6F.js";
17
+ import "./chunk-ZNFJWEN4.js";
18
+ import "./chunk-N54HIJVJ.js";
19
+ import "./chunk-OIQPORYI.js";
20
+ import "./chunk-YGW4G5W5.js";
21
+ import "./chunk-LSFAWXKC.js";
22
+ import "./chunk-34WPV75U.js";
23
+ import "./chunk-KFEVY3ST.js";
24
+ import "./chunk-MHSGJW4Z.js";
25
+ import "./chunk-DKZFOK24.js";
26
+ import "./chunk-I2ZJKTG5.js";
27
+ import "./chunk-5MMAK75Q.js";
28
+ import "./chunk-5CS33IBL.js";
29
+ import "./chunk-JZPBVBIY.js";
30
+ import "./chunk-UAIVG4J6.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-LLWKHDG4.js";
44
+ import "./chunk-MKA6QE5E.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-RQN4SEKL.js";
9
+ import {
10
+ hasFlag,
11
+ hasHelpArg
12
+ } from "./chunk-L4F3I4SR.js";
13
+ import "./chunk-DFCFMCY6.js";
14
+ import "./chunk-SWDPIPOY.js";
15
+ import "./chunk-VHBWHNVT.js";
16
+ import "./chunk-VF4K2QE6.js";
17
+ import "./chunk-R35XMF6F.js";
18
+ import "./chunk-ZNFJWEN4.js";
19
+ import "./chunk-N54HIJVJ.js";
20
+ import "./chunk-OIQPORYI.js";
21
+ import "./chunk-YGW4G5W5.js";
22
+ import "./chunk-LSFAWXKC.js";
23
+ import "./chunk-34WPV75U.js";
24
+ import "./chunk-KFEVY3ST.js";
25
+ import "./chunk-MHSGJW4Z.js";
26
+ import "./chunk-DKZFOK24.js";
27
+ import "./chunk-I2ZJKTG5.js";
28
+ import "./chunk-5MMAK75Q.js";
29
+ import "./chunk-5CS33IBL.js";
30
+ import "./chunk-JZPBVBIY.js";
31
+ import "./chunk-UAIVG4J6.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-LLWKHDG4.js";
45
+ import "./chunk-MKA6QE5E.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-RQN4SEKL.js";
8
+ import {
9
+ hasFlag,
10
+ hasHelpArg
11
+ } from "./chunk-L4F3I4SR.js";
12
+ import "./chunk-DFCFMCY6.js";
13
+ import "./chunk-SWDPIPOY.js";
14
+ import "./chunk-VHBWHNVT.js";
15
+ import "./chunk-VF4K2QE6.js";
16
+ import "./chunk-R35XMF6F.js";
17
+ import "./chunk-ZNFJWEN4.js";
18
+ import "./chunk-N54HIJVJ.js";
19
+ import "./chunk-OIQPORYI.js";
20
+ import "./chunk-YGW4G5W5.js";
21
+ import "./chunk-LSFAWXKC.js";
22
+ import "./chunk-34WPV75U.js";
23
+ import "./chunk-KFEVY3ST.js";
24
+ import "./chunk-MHSGJW4Z.js";
25
+ import "./chunk-DKZFOK24.js";
26
+ import "./chunk-I2ZJKTG5.js";
27
+ import "./chunk-5MMAK75Q.js";
28
+ import "./chunk-5CS33IBL.js";
29
+ import "./chunk-JZPBVBIY.js";
30
+ import "./chunk-UAIVG4J6.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-LLWKHDG4.js";
44
+ import "./chunk-MKA6QE5E.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-RQN4SEKL.js";
9
+ import {
10
+ hasFlag,
11
+ hasHelpArg
12
+ } from "./chunk-L4F3I4SR.js";
13
+ import "./chunk-DFCFMCY6.js";
14
+ import "./chunk-SWDPIPOY.js";
15
+ import "./chunk-VHBWHNVT.js";
16
+ import "./chunk-VF4K2QE6.js";
17
+ import "./chunk-R35XMF6F.js";
18
+ import "./chunk-ZNFJWEN4.js";
19
+ import "./chunk-N54HIJVJ.js";
20
+ import "./chunk-OIQPORYI.js";
21
+ import "./chunk-YGW4G5W5.js";
22
+ import "./chunk-LSFAWXKC.js";
23
+ import "./chunk-34WPV75U.js";
24
+ import "./chunk-KFEVY3ST.js";
25
+ import "./chunk-MHSGJW4Z.js";
26
+ import "./chunk-DKZFOK24.js";
27
+ import "./chunk-I2ZJKTG5.js";
28
+ import "./chunk-5MMAK75Q.js";
29
+ import "./chunk-5CS33IBL.js";
30
+ import "./chunk-JZPBVBIY.js";
31
+ import "./chunk-UAIVG4J6.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-LLWKHDG4.js";
45
+ import "./chunk-MKA6QE5E.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-RQN4SEKL.js";
9
+ import {
10
+ hasFlag,
11
+ hasHelpArg
12
+ } from "./chunk-L4F3I4SR.js";
13
+ import "./chunk-DFCFMCY6.js";
14
+ import "./chunk-SWDPIPOY.js";
15
+ import "./chunk-VHBWHNVT.js";
16
+ import "./chunk-VF4K2QE6.js";
17
+ import "./chunk-R35XMF6F.js";
18
+ import "./chunk-ZNFJWEN4.js";
19
+ import "./chunk-N54HIJVJ.js";
20
+ import "./chunk-OIQPORYI.js";
21
+ import "./chunk-YGW4G5W5.js";
22
+ import "./chunk-LSFAWXKC.js";
23
+ import "./chunk-34WPV75U.js";
24
+ import "./chunk-KFEVY3ST.js";
25
+ import "./chunk-MHSGJW4Z.js";
26
+ import "./chunk-DKZFOK24.js";
27
+ import "./chunk-I2ZJKTG5.js";
28
+ import "./chunk-5MMAK75Q.js";
29
+ import "./chunk-5CS33IBL.js";
30
+ import "./chunk-JZPBVBIY.js";
31
+ import "./chunk-UAIVG4J6.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-LLWKHDG4.js";
45
+ import "./chunk-MKA6QE5E.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
+ };