nolo-cli 0.8.0 → 0.9.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 (183) hide show
  1. package/_executeModel-UD44KGZ4.js +203 -0
  2. package/action-ZJWE3Y5S.js +28 -0
  3. package/addContentAction-TVDBNJM5.js +26 -0
  4. package/addDialogAgentAction-EKH774VT.js +68 -0
  5. package/agentDeleteCommand-TCPEFJTF.js +327 -0
  6. package/agentEmailCommands-CZ3UILZ4.js +626 -0
  7. package/agentListCommands-SJKO2FFB.js +223 -0
  8. package/agentMachineCommands-PSNABISZ.js +425 -0
  9. package/agentPullCommand-O2MTUAFR.js +122 -0
  10. package/agentRecordCommands-MH2JKFHS.js +94 -0
  11. package/agentRunCommand-4KH6MIZR.js +110 -0
  12. package/agentRunControl-K4VKNEHF.js +57 -0
  13. package/agentRuntimeLocal-SKHJUWSS.js +104 -0
  14. package/agentSlice-3WXXN4VK.js +42 -0
  15. package/authCommand-PXFX6JDT.js +581 -0
  16. package/authCommands-356AYWEK.js +35 -0
  17. package/chunk-2EISRLRC.js +238 -0
  18. package/chunk-2FTTDCD4.js +675 -0
  19. package/chunk-2K2ECKSG.js +222 -0
  20. package/chunk-2PUGVR6E.js +19 -0
  21. package/chunk-3ASDTTEI.js +1774 -0
  22. package/chunk-3EUW3WEO.js +8 -0
  23. package/chunk-3LY4F7SV.js +9293 -0
  24. package/chunk-3TZDXYSF.js +71 -0
  25. package/chunk-3WYQEUBI.js +34 -0
  26. package/chunk-4CQLVGRV.js +50 -0
  27. package/chunk-4IJYA27C.js +342 -0
  28. package/chunk-4K2KKCSD.js +577 -0
  29. package/chunk-4SN6J65J.js +38 -0
  30. package/chunk-4VNS5WPM.js +42 -0
  31. package/chunk-4ZDM73SD.js +34 -0
  32. package/chunk-5CS33IBL.js +301 -0
  33. package/chunk-5KLGBAAR.js +386 -0
  34. package/chunk-5MIDPSSK.js +206 -0
  35. package/chunk-5MMAK75Q.js +15 -0
  36. package/chunk-5PJ3VWCS.js +360 -0
  37. package/chunk-63SLEOLK.js +175 -0
  38. package/chunk-63W5N6P3.js +150 -0
  39. package/chunk-6GANEXVO.js +231 -0
  40. package/chunk-6HYVJV7B.js +102 -0
  41. package/chunk-6WD3OOJS.js +20 -0
  42. package/chunk-7OOXPE3N.js +628 -0
  43. package/chunk-7QRKCBOP.js +1078 -0
  44. package/chunk-ATNTHIZI.js +13 -0
  45. package/chunk-AUQ747NZ.js +902 -0
  46. package/chunk-AVMKZHBC.js +85 -0
  47. package/chunk-AZPCASRE.js +36 -0
  48. package/chunk-BBYVOSU2.js +792 -0
  49. package/chunk-C3RUNRHT.js +51 -0
  50. package/chunk-CF2WZF4N.js +134 -0
  51. package/chunk-CF7PE763.js +10 -0
  52. package/chunk-CKOJQDKR.js +198 -0
  53. package/chunk-COMXDWNM.js +807 -0
  54. package/chunk-CPB2YM4D.js +171 -0
  55. package/chunk-CWMSB67P.js +34 -0
  56. package/chunk-DCOA4QSN.js +105 -0
  57. package/chunk-DFFIZ25G.js +30 -0
  58. package/chunk-DWLEOOGR.js +8 -0
  59. package/chunk-DZ3XJVET.js +231 -0
  60. package/chunk-EHLHSX7R.js +1433 -0
  61. package/chunk-ELRRLDWI.js +478 -0
  62. package/chunk-EXTIQUCI.js +482 -0
  63. package/chunk-EYEEHCU4.js +3066 -0
  64. package/chunk-G3SUCT4W.js +8 -0
  65. package/chunk-G43KEVSC.js +1447 -0
  66. package/chunk-GAKEBQD6.js +30 -0
  67. package/chunk-GBRG75BQ.js +86 -0
  68. package/chunk-GG4AJPSR.js +191 -0
  69. package/chunk-H33743XH.js +25 -0
  70. package/chunk-HNMXYYJR.js +12 -0
  71. package/chunk-I42VC5KR.js +15 -0
  72. package/chunk-IDZTNRP2.js +85 -0
  73. package/chunk-ISNCLGUZ.js +146 -0
  74. package/chunk-IWX4UW2E.js +548 -0
  75. package/chunk-JBTJAPUF.js +35 -0
  76. package/chunk-JEXVIMYZ.js +55 -0
  77. package/chunk-JRKKFRAV.js +537 -0
  78. package/chunk-JZPBVBIY.js +94 -0
  79. package/chunk-KKY4B2Q2.js +21 -0
  80. package/chunk-KOCA5FCS.js +4750 -0
  81. package/chunk-KQHGZWSV.js +63 -0
  82. package/chunk-KTVVPRJS.js +138 -0
  83. package/chunk-KUG52IAP.js +8 -0
  84. package/chunk-KX6YBIHG.js +8 -0
  85. package/chunk-LARL2V6G.js +9017 -0
  86. package/chunk-LCBAMY2M.js +60 -0
  87. package/chunk-LM6IYQ3F.js +16 -0
  88. package/chunk-M76ECQRD.js +13658 -0
  89. package/chunk-MGOJ5R6J.js +113 -0
  90. package/chunk-MKMWT7SA.js +27196 -0
  91. package/chunk-MRC4Q34M.js +188 -0
  92. package/chunk-OLZBQWZU.js +6 -0
  93. package/chunk-OPZYGHUC.js +89 -0
  94. package/chunk-OWOHNGCN.js +50 -0
  95. package/chunk-PAKN26FP.js +239 -0
  96. package/chunk-PCWC3JTN.js +91 -0
  97. package/chunk-PG5PNA7Y.js +939 -0
  98. package/chunk-Q2YZULBH.js +104 -0
  99. package/chunk-QSJ3HFEF.js +8 -0
  100. package/chunk-QYXLLLGL.js +4519 -0
  101. package/chunk-ROWQEJRP.js +139 -0
  102. package/chunk-S7Z2HMCN.js +25 -0
  103. package/chunk-SBR32ZZS.js +1901 -0
  104. package/chunk-SH2CFQOH.js +3391 -0
  105. package/chunk-SL35K7AH.js +226 -0
  106. package/chunk-TILFE6LV.js +381 -0
  107. package/chunk-TSS3XJY4.js +2052 -0
  108. package/chunk-U4TRT5V4.js +246 -0
  109. package/chunk-U6VC4MU4.js +8 -0
  110. package/chunk-UAD2WT54.js +64 -0
  111. package/chunk-UUJDGGAK.js +421 -0
  112. package/chunk-VF4K2QE6.js +21 -0
  113. package/chunk-VHBWHNVT.js +59 -0
  114. package/chunk-VIDPVFP3.js +20 -0
  115. package/chunk-VP4WJWKW.js +8882 -0
  116. package/chunk-W4NVOSFF.js +37 -0
  117. package/chunk-WKM6FH35.js +190 -0
  118. package/chunk-WWC7I6TA.js +8 -0
  119. package/chunk-X7W4TNB4.js +1550 -0
  120. package/chunk-XE635NI4.js +1948 -0
  121. package/chunk-XKIMRZO2.js +221 -0
  122. package/chunk-XS466O7S.js +933 -0
  123. package/chunk-Y5GCAMGP.js +9 -0
  124. package/chunk-YBWOP46I.js +3272 -0
  125. package/chunk-YPRZSPF3.js +148 -0
  126. package/chunk-YYUCRDOK.js +69 -0
  127. package/chunk-Z4NR32XR.js +50 -0
  128. package/chunk-ZIG5LJ7X.js +24765 -0
  129. package/chunk-ZNFJWEN4.js +56 -0
  130. package/chunk-ZQ2UM4KG.js +2878 -0
  131. package/cliExecutor-DNE7TCC4.js +36 -0
  132. package/clipboardy-BVE3LVEH.js +12001 -0
  133. package/createAgentAutomationAction-63OIP6X5.js +866 -0
  134. package/createDialogAction-ZLYZDYBB.js +54 -0
  135. package/createPageAction-AL5FSDCK.js +171 -0
  136. package/db-HCJ5PRB5.js +271 -0
  137. package/dbSlice-PR44QPXY.js +60 -0
  138. package/deleteFile-4SKGPHOZ.js +41 -0
  139. package/dialogCommands-F6YI5742.js +63 -0
  140. package/dialogSlice-JSBNZRLR.js +148 -0
  141. package/docCreateCommands-4CTO7ERT.js +219 -0
  142. package/docDeleteCommands-VBWERDRG.js +180 -0
  143. package/docReadCommands-KNP4MFYB.js +133 -0
  144. package/docStore-ADP5VYY4.js +98 -0
  145. package/docUpdateCommands-4BCBJQHA.js +317 -0
  146. package/fetchMessages-U6ZHN56A.js +17 -0
  147. package/getPricing-3E6UNPKL.js +30 -0
  148. package/handleSendMessageAction-IJDQ6ARA.js +185 -0
  149. package/index.js +188 -112943
  150. package/lib-FYYBQIXS.js +19839 -0
  151. package/localDialogRead-Z5UTAJPU.js +26 -0
  152. package/localFirstLog-DHNOY2NA.js +19 -0
  153. package/localRuntimeAuthority-TEGCOWX4.js +471 -0
  154. package/localRuntimeDb-LGDF6FQP.js +12 -0
  155. package/machineCommands-EA3M4XTN.js +779 -0
  156. package/machineInfo-M6KB6HZN.js +10 -0
  157. package/machineWsRunDispatch-NAPKE5ZA.js +110 -0
  158. package/memoryCommands-O4MIPIWQ.js +476 -0
  159. package/models-4OPOOLFS.js +9 -0
  160. package/offlineMarxistsAgentCommand-BCPJITJL.js +242 -0
  161. package/package.json +3 -25
  162. package/read-RIJCIVKX.js +17 -0
  163. package/readDocTool-GZD2N3LO.js +16 -0
  164. package/readlineWorkspace-KMWT4T4S.js +5509 -0
  165. package/removeDialogAgentAction-GJQJNDW6.js +73 -0
  166. package/runAgentClientLoop-U5Q6NDTJ.js +291 -0
  167. package/runtimeDoctorCommands-LRHLPDRC.js +289 -0
  168. package/setDialogExtraReferencesAction-M7OQG54N.js +60 -0
  169. package/setPrimaryDialogAgentAction-46UNFJDL.js +80 -0
  170. package/settingSlice-FVUUH4JA.js +199 -0
  171. package/skillSummaryMarker-42HKSXYY.js +9 -0
  172. package/slateToRenderMarkdown-Y5IYN73U.js +7 -0
  173. package/slateUtils-2M7MUTWX.js +19 -0
  174. package/spaceCommands-E2CFRPZJ.js +454 -0
  175. package/spaceSlice-L3R6IMXE.js +147 -0
  176. package/streamAgentChatTurn-UBDAOQWE.js +4528 -0
  177. package/tableCommands-GOFP7QKA.js +1286 -0
  178. package/toolApiClient-QI3YBNWB.js +26 -0
  179. package/tools-TMJXZTCA.js +85 -0
  180. package/tuiSummaryLlmCaller-RV3THLZF.js +78 -0
  181. package/understanding-GQKNDDWM.js +271 -0
  182. package/updateCommands-VOSPKXFF.js +31 -0
  183. package/updateDialogTitleAction-ZTWRDXI2.js +188 -0
@@ -0,0 +1,139 @@
1
+ // packages/cli/client/profileConfig.ts
2
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
+ import { dirname, join } from "node:path";
4
+ import { homedir } from "node:os";
5
+
6
+ // packages/core/noloServerUrl.ts
7
+ function isNoloChatHostname(hostname) {
8
+ if (typeof hostname !== "string") return false;
9
+ const host = hostname.trim().toLowerCase();
10
+ if (!host) return false;
11
+ return host === "nolo.chat" || host.endsWith(".nolo.chat");
12
+ }
13
+ function canonicalizeNoloServerUrl(value) {
14
+ const normalized = value.trim().replace(/\/+$/, "");
15
+ if (!normalized) return normalized;
16
+ try {
17
+ const url = new URL(normalized);
18
+ if (url.protocol === "http:" && isNoloChatHostname(url.hostname)) {
19
+ url.protocol = "https:";
20
+ return url.toString().replace(/\/+$/, "");
21
+ }
22
+ } catch {
23
+ return normalized;
24
+ }
25
+ return normalized;
26
+ }
27
+
28
+ // packages/cli/client/profileConfig.ts
29
+ var normalizeProfileServerUrl = canonicalizeNoloServerUrl;
30
+ function getDefaultProfileConfigPath() {
31
+ return join(homedir(), ".nolo", "config.json");
32
+ }
33
+ function loadProfileConfig(path = getDefaultProfileConfigPath()) {
34
+ if (!existsSync(path)) return null;
35
+ const raw = readFileSync(path, "utf8");
36
+ const parsed = JSON.parse(raw);
37
+ if (!parsed.currentProfile || !parsed.profiles?.[parsed.currentProfile]) return null;
38
+ for (const profile of Object.values(parsed.profiles)) {
39
+ if (!profile?.serverUrl) continue;
40
+ profile.serverUrl = normalizeProfileServerUrl(profile.serverUrl);
41
+ }
42
+ return parsed;
43
+ }
44
+ function clearProfileAuthToken(path = getDefaultProfileConfigPath()) {
45
+ const config = loadProfileConfig(path);
46
+ if (!config) return false;
47
+ const profile = config.profiles[config.currentProfile];
48
+ if (!profile?.authToken?.trim()) return false;
49
+ delete profile.authToken;
50
+ mkdirSync(dirname(path), { recursive: true });
51
+ writeFileSync(path, `${JSON.stringify(config, null, 2)}
52
+ `, "utf8");
53
+ return true;
54
+ }
55
+ function saveDefaultProfile(path, profile) {
56
+ const existing = loadProfileConfig(path);
57
+ const mergedDefault = {
58
+ ...existing?.profiles?.default ?? {},
59
+ serverUrl: normalizeProfileServerUrl(profile.serverUrl),
60
+ authToken: profile.authToken.trim()
61
+ };
62
+ const config = {
63
+ currentProfile: "default",
64
+ profiles: {
65
+ ...existing?.profiles ?? {},
66
+ default: mergedDefault
67
+ }
68
+ };
69
+ mkdirSync(dirname(path), { recursive: true });
70
+ writeFileSync(path, `${JSON.stringify(config, null, 2)}
71
+ `, "utf8");
72
+ return config;
73
+ }
74
+ function buildEnvFromProfile(config) {
75
+ if (!config) return {};
76
+ const profile = config.profiles[config.currentProfile];
77
+ if (!profile) return {};
78
+ return {
79
+ NOLO_PROFILE: config.currentProfile,
80
+ NOLO_SERVER: profile.serverUrl,
81
+ ...profile.authToken?.trim() ? { AUTH_TOKEN: profile.authToken.trim() } : {},
82
+ ...profile.agentKey ? { NOLO_AGENT: profile.agentKey } : {},
83
+ ...profile.agentName ? { NOLO_AGENT_NAME: profile.agentName } : {},
84
+ ...profile.locale ? { NOLO_LANG: profile.locale } : {}
85
+ };
86
+ }
87
+ function buildCliRuntimeEnv(processEnv, config) {
88
+ const profileEnv = buildEnvFromProfile(config);
89
+ const explicitAuthToken = processEnv.AUTH_TOKEN || processEnv.AUTH;
90
+ const explicitServerUrl = processEnv.NOLO_SERVER || processEnv.NOLO_SERVER_URL || processEnv.BASE_URL;
91
+ return {
92
+ ...processEnv,
93
+ ...profileEnv,
94
+ ...explicitAuthToken ? { AUTH_TOKEN: explicitAuthToken } : {},
95
+ ...explicitServerUrl ? {
96
+ NOLO_SERVER: explicitServerUrl,
97
+ BASE_URL: explicitServerUrl
98
+ } : {}
99
+ };
100
+ }
101
+ function getCurrentProfile(config) {
102
+ if (!config) return null;
103
+ return config.profiles[config.currentProfile] ?? null;
104
+ }
105
+ function saveProfileLocale(locale, path = getDefaultProfileConfigPath()) {
106
+ const config = loadProfileConfig(path);
107
+ if (!config) return null;
108
+ const profile = config.profiles[config.currentProfile];
109
+ if (!profile) return null;
110
+ profile.locale = locale;
111
+ mkdirSync(dirname(path), { recursive: true });
112
+ writeFileSync(path, `${JSON.stringify(config, null, 2)}
113
+ `, "utf8");
114
+ return config;
115
+ }
116
+ function saveProfileAgentSelection(selection, path = getDefaultProfileConfigPath()) {
117
+ const config = loadProfileConfig(path);
118
+ if (!config) return null;
119
+ const profile = config.profiles[config.currentProfile];
120
+ if (!profile) return null;
121
+ profile.agentKey = selection.agentKey.trim();
122
+ profile.agentName = selection.agentName.trim();
123
+ mkdirSync(dirname(path), { recursive: true });
124
+ writeFileSync(path, `${JSON.stringify(config, null, 2)}
125
+ `, "utf8");
126
+ return config;
127
+ }
128
+
129
+ export {
130
+ getDefaultProfileConfigPath,
131
+ loadProfileConfig,
132
+ clearProfileAuthToken,
133
+ saveDefaultProfile,
134
+ buildEnvFromProfile,
135
+ buildCliRuntimeEnv,
136
+ getCurrentProfile,
137
+ saveProfileLocale,
138
+ saveProfileAgentSelection
139
+ };
@@ -0,0 +1,25 @@
1
+ // packages/cli/secretScan.ts
2
+ var SECRET_PATTERNS = [
3
+ { label: "password", pattern: /\bpassword\s*[:=]\s*["']?[^"',\s#]{8,}/i },
4
+ { label: "psk", pattern: /\bpsk\s*[:=]\s*["']?[^"',\s#]{8,}/i },
5
+ { label: "api key", pattern: /\b(api[_-]?key|apikey)\s*[:=]\s*["']?[^"',\s#]{12,}/i },
6
+ { label: "token", pattern: /\b(token|secret)\s*[:=]\s*["']?[^"',\s#]{12,}/i },
7
+ { label: "private key", pattern: /-----BEGIN [A-Z ]*PRIVATE KEY-----/ }
8
+ ];
9
+ function findPotentialSecrets(text) {
10
+ return text.split(/\r?\n/).flatMap(
11
+ (line, index) => SECRET_PATTERNS.filter(({ pattern }) => pattern.test(line)).map(({ label }) => ({
12
+ label,
13
+ line: index + 1,
14
+ preview: line.length > 120 ? `${line.slice(0, 117)}...` : line
15
+ }))
16
+ );
17
+ }
18
+ function formatSecretFindings(findings) {
19
+ return findings.map((finding) => ` line ${finding.line} (${finding.label}): ${finding.preview}`).join("\n");
20
+ }
21
+
22
+ export {
23
+ findPotentialSecrets,
24
+ formatSecretFindings
25
+ };