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,54 @@
1
+ import {
2
+ createDialogAction,
3
+ isLocalOwnerDialogAgents
4
+ } from "./chunk-PG5PNA7Y.js";
5
+ import "./chunk-ZQ2UM4KG.js";
6
+ import "./chunk-Q2YZULBH.js";
7
+ import "./chunk-ZIG5LJ7X.js";
8
+ import "./chunk-4ZDM73SD.js";
9
+ import "./chunk-MRC4Q34M.js";
10
+ import "./chunk-PCWC3JTN.js";
11
+ import "./chunk-CWMSB67P.js";
12
+ import "./chunk-4K2KKCSD.js";
13
+ import "./chunk-KTVVPRJS.js";
14
+ import "./chunk-Z4NR32XR.js";
15
+ import "./chunk-M76ECQRD.js";
16
+ import "./chunk-YYUCRDOK.js";
17
+ import "./chunk-MGOJ5R6J.js";
18
+ import "./chunk-UAD2WT54.js";
19
+ import "./chunk-DCOA4QSN.js";
20
+ import "./chunk-5MMAK75Q.js";
21
+ import "./chunk-BBYVOSU2.js";
22
+ import "./chunk-5CS33IBL.js";
23
+ import "./chunk-JZPBVBIY.js";
24
+ import "./chunk-IWX4UW2E.js";
25
+ import "./chunk-DFFIZ25G.js";
26
+ import "./chunk-3ASDTTEI.js";
27
+ import "./chunk-DWLEOOGR.js";
28
+ import "./chunk-HNMXYYJR.js";
29
+ import "./chunk-TSS3XJY4.js";
30
+ import "./chunk-Y5GCAMGP.js";
31
+ import "./chunk-COMXDWNM.js";
32
+ import "./chunk-AZPCASRE.js";
33
+ import "./chunk-2EISRLRC.js";
34
+ import "./chunk-KX6YBIHG.js";
35
+ import "./chunk-SH2CFQOH.js";
36
+ import "./chunk-I42VC5KR.js";
37
+ import "./chunk-WWC7I6TA.js";
38
+ import "./chunk-QSJ3HFEF.js";
39
+ import "./chunk-ELRRLDWI.js";
40
+ import "./chunk-EYEEHCU4.js";
41
+ import "./chunk-QYXLLLGL.js";
42
+ import "./chunk-GBRG75BQ.js";
43
+ import "./chunk-4SN6J65J.js";
44
+ import "./chunk-LCBAMY2M.js";
45
+ import "./chunk-3EUW3WEO.js";
46
+ import "./chunk-U6VC4MU4.js";
47
+ import "./chunk-CF7PE763.js";
48
+ import "./chunk-G3SUCT4W.js";
49
+ import "./chunk-KUG52IAP.js";
50
+ import "./chunk-4VNS5WPM.js";
51
+ export {
52
+ createDialogAction,
53
+ isLocalOwnerDialogAgents
54
+ };
@@ -0,0 +1,171 @@
1
+ import {
2
+ buildSkillSummaryMarker
3
+ } from "./chunk-VF4K2QE6.js";
4
+ import {
5
+ markdownToSlate
6
+ } from "./chunk-3LY4F7SV.js";
7
+ import {
8
+ createEmptyParagraph,
9
+ splitSlateTitleAndBody
10
+ } from "./chunk-VP4WJWKW.js";
11
+ import {
12
+ slateToRenderMarkdown
13
+ } from "./chunk-63W5N6P3.js";
14
+ import {
15
+ parseSkillDocProtocol
16
+ } from "./chunk-ZQ2UM4KG.js";
17
+ import {
18
+ addContentToSpace,
19
+ client_default,
20
+ selectCurrentSpaceId
21
+ } from "./chunk-ZIG5LJ7X.js";
22
+ import "./chunk-4ZDM73SD.js";
23
+ import "./chunk-MRC4Q34M.js";
24
+ import "./chunk-PCWC3JTN.js";
25
+ import "./chunk-CWMSB67P.js";
26
+ import "./chunk-4K2KKCSD.js";
27
+ import "./chunk-KTVVPRJS.js";
28
+ import "./chunk-Z4NR32XR.js";
29
+ import "./chunk-M76ECQRD.js";
30
+ import "./chunk-YYUCRDOK.js";
31
+ import "./chunk-MGOJ5R6J.js";
32
+ import "./chunk-UAD2WT54.js";
33
+ import "./chunk-DCOA4QSN.js";
34
+ import "./chunk-5MMAK75Q.js";
35
+ import "./chunk-BBYVOSU2.js";
36
+ import "./chunk-5CS33IBL.js";
37
+ import "./chunk-JZPBVBIY.js";
38
+ import "./chunk-IWX4UW2E.js";
39
+ import "./chunk-DFFIZ25G.js";
40
+ import "./chunk-3ASDTTEI.js";
41
+ import "./chunk-DWLEOOGR.js";
42
+ import "./chunk-HNMXYYJR.js";
43
+ import "./chunk-TSS3XJY4.js";
44
+ import "./chunk-Y5GCAMGP.js";
45
+ import {
46
+ write
47
+ } from "./chunk-COMXDWNM.js";
48
+ import "./chunk-AZPCASRE.js";
49
+ import "./chunk-2EISRLRC.js";
50
+ import "./chunk-KX6YBIHG.js";
51
+ import {
52
+ createPageKey
53
+ } from "./chunk-SH2CFQOH.js";
54
+ import "./chunk-I42VC5KR.js";
55
+ import "./chunk-WWC7I6TA.js";
56
+ import "./chunk-QSJ3HFEF.js";
57
+ import "./chunk-ELRRLDWI.js";
58
+ import {
59
+ selectIdentityUserId
60
+ } from "./chunk-EYEEHCU4.js";
61
+ import "./chunk-QYXLLLGL.js";
62
+ import "./chunk-GBRG75BQ.js";
63
+ import "./chunk-4SN6J65J.js";
64
+ import "./chunk-LCBAMY2M.js";
65
+ import "./chunk-3EUW3WEO.js";
66
+ import "./chunk-U6VC4MU4.js";
67
+ import "./chunk-CF7PE763.js";
68
+ import {
69
+ asOptionalTrimmedString
70
+ } from "./chunk-G3SUCT4W.js";
71
+ import "./chunk-KUG52IAP.js";
72
+ import "./chunk-4VNS5WPM.js";
73
+
74
+ // packages/render/page/createPageAction.ts
75
+ var normalizeCategoryId = (raw) => {
76
+ const trimmed = raw?.trim();
77
+ if (!trimmed) return void 0;
78
+ const asciiNoSpace = /^[\x20-\x7E]+$/;
79
+ if (!asciiNoSpace.test(trimmed)) return void 0;
80
+ if (trimmed.length < 8) return void 0;
81
+ return trimmed;
82
+ };
83
+ var createPageAction = async ({
84
+ categoryId,
85
+ spaceId: customSpaceId,
86
+ title: initialTitle,
87
+ addMomentTag,
88
+ content,
89
+ slateData
90
+ } = {}, { dispatch, getState }) => {
91
+ const state = getState();
92
+ const userId = selectIdentityUserId(state);
93
+ if (!userId) throw new Error("User ID not found.");
94
+ const spaceId = customSpaceId ?? selectCurrentSpaceId(state);
95
+ const { dbKey, id } = createPageKey.create(userId);
96
+ const now = /* @__PURE__ */ new Date();
97
+ const defaultTitle = client_default.t("page:untitled", {
98
+ defaultValue: "\u672A\u547D\u540D\u9875\u9762"
99
+ });
100
+ let title = asOptionalTrimmedString(initialTitle) ?? defaultTitle;
101
+ const tags = addMomentTag ? ["moment"] : void 0;
102
+ let pageMeta;
103
+ let initialSlateData;
104
+ if (slateData) {
105
+ initialSlateData = slateData;
106
+ } else if (content) {
107
+ const parsedProtocol = parseSkillDocProtocol(content);
108
+ const normalizedContent = parsedProtocol.content;
109
+ pageMeta = parsedProtocol.meta;
110
+ console.log("content", content);
111
+ try {
112
+ const parsed = markdownToSlate(normalizedContent);
113
+ console.log("parsed", parsed);
114
+ if (Array.isArray(parsed) && parsed.length > 0) {
115
+ const split = splitSlateTitleAndBody(parsed, initialTitle);
116
+ title = asOptionalTrimmedString(initialTitle) ?? (split.title || defaultTitle);
117
+ initialSlateData = split.body;
118
+ } else {
119
+ initialSlateData = [
120
+ { type: "paragraph", children: [{ text: normalizedContent }] }
121
+ ];
122
+ }
123
+ } catch (e) {
124
+ console.error(
125
+ "[createPageAction] markdownToSlate failed, fallback to plain text:",
126
+ e
127
+ );
128
+ initialSlateData = [
129
+ { type: "paragraph", children: [{ text: normalizedContent }] }
130
+ ];
131
+ }
132
+ } else {
133
+ initialSlateData = [createEmptyParagraph()];
134
+ }
135
+ const safeCategoryId = normalizeCategoryId(categoryId);
136
+ const pageData = {
137
+ dbKey,
138
+ id,
139
+ type: "page" /* DOC */,
140
+ title,
141
+ spaceId,
142
+ slateData: initialSlateData,
143
+ // `content` 只作为只读展示缓存 / legacy bridge,真源仍是 `slateData`。
144
+ content: typeof content === "string" ? parseSkillDocProtocol(content, pageMeta).content || slateToRenderMarkdown(initialSlateData) : slateToRenderMarkdown(initialSlateData),
145
+ tags,
146
+ created: now.toISOString(),
147
+ ...pageMeta ? { meta: pageMeta } : {}
148
+ };
149
+ const skillSummary = buildSkillSummaryMarker(pageMeta);
150
+ await dispatch(write({ data: pageData, customKey: dbKey })).unwrap();
151
+ if (spaceId) {
152
+ dispatch(
153
+ addContentToSpace({
154
+ contentKey: dbKey,
155
+ type: "page" /* DOC */,
156
+ spaceId,
157
+ title,
158
+ // 只使用经过 normalize 的 safeCategoryId
159
+ categoryId: safeCategoryId,
160
+ ...skillSummary ? { skillSummary } : {}
161
+ })
162
+ );
163
+ }
164
+ if (typeof window !== "undefined") {
165
+ window.dispatchEvent(new Event("nolo-user-data-updated"));
166
+ }
167
+ return dbKey;
168
+ };
169
+ export {
170
+ createPageAction
171
+ };
package/db-HCJ5PRB5.js ADDED
@@ -0,0 +1,271 @@
1
+ import {
2
+ createLegacyServerDb,
3
+ createLevelAuthorityStore,
4
+ isLevelLockError
5
+ } from "./chunk-CF2WZF4N.js";
6
+ import {
7
+ Level
8
+ } from "./chunk-6WD3OOJS.js";
9
+ import {
10
+ resolveServerDbPath
11
+ } from "./chunk-LM6IYQ3F.js";
12
+ import {
13
+ asTrimmedLowercaseString
14
+ } from "./chunk-QSJ3HFEF.js";
15
+ import "./chunk-4VNS5WPM.js";
16
+
17
+ // packages/database-engine/ensureDbOpen.ts
18
+ async function ensureDbOpen(db) {
19
+ if (db.status === "open") {
20
+ return;
21
+ }
22
+ if (typeof db.open === "function") {
23
+ await db.open();
24
+ }
25
+ }
26
+
27
+ // packages/database-engine/serverStoreFactory.ts
28
+ import fs from "fs";
29
+ import path from "path";
30
+
31
+ // packages/database-engine/memoryAuthorityStore.ts
32
+ var createNotFoundError = () => {
33
+ const error = new Error("NotFound");
34
+ error.notFound = true;
35
+ return error;
36
+ };
37
+ var MemoryAuthorityBacking = class {
38
+ location;
39
+ status = "closed";
40
+ data = /* @__PURE__ */ new Map();
41
+ constructor(location) {
42
+ this.location = location;
43
+ }
44
+ async open() {
45
+ this.status = "open";
46
+ }
47
+ async close() {
48
+ this.status = "closed";
49
+ }
50
+ async get(key) {
51
+ if (!this.data.has(key)) {
52
+ throw createNotFoundError();
53
+ }
54
+ return this.data.get(key);
55
+ }
56
+ async put(key, value) {
57
+ this.data.set(key, value);
58
+ }
59
+ async del(key) {
60
+ this.data.delete(key);
61
+ }
62
+ async batchWrite(ops) {
63
+ for (const op of ops) {
64
+ if (op.type === "put") {
65
+ this.data.set(op.key, op.value);
66
+ } else {
67
+ this.data.delete(op.key);
68
+ }
69
+ }
70
+ }
71
+ createBatch() {
72
+ const buffered = [];
73
+ return {
74
+ put(key, value) {
75
+ buffered.push({ type: "put", key, value });
76
+ },
77
+ del(key) {
78
+ buffered.push({ type: "del", key });
79
+ },
80
+ write: async () => {
81
+ await this.batchWrite(buffered);
82
+ }
83
+ };
84
+ }
85
+ async *iterator(options = {}) {
86
+ const entries = Array.from(this.data.entries()).sort(([left], [right]) => left.localeCompare(right)).map(([key, value]) => ({ key, value }));
87
+ if (options.reverse) {
88
+ entries.reverse();
89
+ }
90
+ for (const entry of entries) {
91
+ if (options.gte && entry.key < options.gte) continue;
92
+ if (options.lte && entry.key > options.lte) continue;
93
+ if (options.lt && entry.key >= options.lt) continue;
94
+ yield [entry.key, entry.value];
95
+ }
96
+ }
97
+ };
98
+ function createMemoryAuthorityStore(location = ":memory:") {
99
+ const backing = new MemoryAuthorityBacking(location);
100
+ return {
101
+ get location() {
102
+ return backing.location;
103
+ },
104
+ get status() {
105
+ return backing.status;
106
+ },
107
+ async open() {
108
+ await backing.open();
109
+ },
110
+ async close() {
111
+ await backing.close();
112
+ },
113
+ async get(key) {
114
+ return backing.get(key);
115
+ },
116
+ async put(key, value) {
117
+ await backing.put(key, value);
118
+ },
119
+ async del(key) {
120
+ await backing.del(key);
121
+ },
122
+ async batchWrite(ops) {
123
+ await backing.batchWrite(ops);
124
+ },
125
+ createBatch() {
126
+ return backing.createBatch();
127
+ },
128
+ iterator(options = {}) {
129
+ return backing.iterator(options);
130
+ }
131
+ };
132
+ }
133
+
134
+ // packages/database-engine/serverStoreFactory.ts
135
+ var safeJsonEncoding = {
136
+ name: "safe-json",
137
+ format: "utf8",
138
+ encode: (data) => JSON.stringify(data),
139
+ decode: (data) => {
140
+ try {
141
+ return JSON.parse(data);
142
+ } catch {
143
+ console.warn("[LevelDB] Corrupted value:", data?.substring?.(0, 60));
144
+ return null;
145
+ }
146
+ }
147
+ };
148
+ function ensureServerDbDirectory(dbPath) {
149
+ const dir = path.dirname(dbPath);
150
+ if (!fs.existsSync(dir)) {
151
+ fs.mkdirSync(dir, { recursive: true });
152
+ }
153
+ }
154
+ function createLevelBackedAuthorityStore(dbPath) {
155
+ const levelDb = new Level(dbPath, {
156
+ valueEncoding: safeJsonEncoding
157
+ });
158
+ return createLevelAuthorityStore(levelDb);
159
+ }
160
+ function resolveServerStoreDriver(env = process.env) {
161
+ const rawDriver = asTrimmedLowercaseString(env.NOLO_SERVER_AUTHORITY_DRIVER);
162
+ if (!rawDriver) return "level";
163
+ if (rawDriver === "level") return "level";
164
+ if (rawDriver === "memory") return "memory";
165
+ throw new Error(`Unsupported server authority store driver: ${rawDriver}`);
166
+ }
167
+ function createAuthorityStoreForDriver(driver, dbPath) {
168
+ switch (driver) {
169
+ case "level":
170
+ return createLevelBackedAuthorityStore(dbPath);
171
+ case "memory":
172
+ return createMemoryAuthorityStore(dbPath);
173
+ }
174
+ }
175
+ function getOrCreateServerStoreRuntime(dbPath, options = {}) {
176
+ const globalScope = options.globalScope ?? globalThis;
177
+ const driver = options.driver ?? resolveServerStoreDriver(options.env);
178
+ const cachedDriver = globalScope.__serverAuthorityStoreDriver;
179
+ ensureServerDbDirectory(dbPath);
180
+ if (globalScope.__serverAuthorityStore && typeof cachedDriver === "string" && cachedDriver !== driver) {
181
+ throw new Error(
182
+ `Server authority store already initialized with driver ${cachedDriver}, cannot reuse it for ${driver}`
183
+ );
184
+ }
185
+ if (!globalScope.__serverAuthorityStore) {
186
+ globalScope.__serverAuthorityStore = createAuthorityStoreForDriver(
187
+ driver,
188
+ dbPath
189
+ );
190
+ globalScope.__serverAuthorityStoreDriver = driver;
191
+ } else if (!cachedDriver) {
192
+ globalScope.__serverAuthorityStoreDriver = driver;
193
+ }
194
+ const authorityStore2 = globalScope.__serverAuthorityStore;
195
+ if (!globalScope.__serverDb) {
196
+ globalScope.__serverDb = createLegacyServerDb(authorityStore2);
197
+ }
198
+ return {
199
+ authorityStore: authorityStore2,
200
+ serverDb: globalScope.__serverDb
201
+ };
202
+ }
203
+
204
+ // packages/database-engine/db.ts
205
+ var DB_PATH = resolveServerDbPath();
206
+ console.log("\u6570\u636E\u5E93\u914D\u7F6E:");
207
+ console.log("- \u5F53\u524D\u5DE5\u4F5C\u76EE\u5F55:", process.cwd());
208
+ console.log("- \u6570\u636E\u5E93\u8DEF\u5F84:", DB_PATH);
209
+ function isServerDbLockError(error) {
210
+ const queue = [error];
211
+ const seen = /* @__PURE__ */ new Set();
212
+ while (queue.length > 0) {
213
+ const current = queue.shift();
214
+ if (!current || seen.has(current)) continue;
215
+ seen.add(current);
216
+ if (isLevelLockError(current)) return true;
217
+ if (current?.cause) queue.push(current.cause);
218
+ if (Array.isArray(current?.errors)) {
219
+ queue.push(...current.errors);
220
+ }
221
+ }
222
+ return false;
223
+ }
224
+ var {
225
+ authorityStore,
226
+ serverDb
227
+ } = getOrCreateServerStoreRuntime(DB_PATH);
228
+ console.log("- LevelDB\u5B9E\u9645\u8DEF\u5F84:", serverDb.location);
229
+ var db_default = serverDb;
230
+ function getServerAuthorityStore() {
231
+ return authorityStore;
232
+ }
233
+ async function ensureServerDbOpen() {
234
+ const status = authorityStore.status;
235
+ if (status === "open") return;
236
+ try {
237
+ await ensureDbOpen(authorityStore);
238
+ if (status !== "opening") {
239
+ console.log("\u2705 LevelDB \u5DF2\u6253\u5F00");
240
+ }
241
+ } catch (err) {
242
+ if (isServerDbLockError(err)) {
243
+ console.error("\u274C \u6253\u5F00 LevelDB \u5931\u8D25: \u6570\u636E\u5E93\u5DF2\u88AB\u5176\u4ED6\u8FDB\u7A0B\u5360\u7528");
244
+ } else {
245
+ console.error("\u274C \u6253\u5F00 LevelDB \u5931\u8D25:", err);
246
+ }
247
+ throw err;
248
+ }
249
+ }
250
+ async function openServerDb() {
251
+ return ensureServerDbOpen();
252
+ }
253
+ async function closeServerDb() {
254
+ const status = authorityStore.status;
255
+ if (status !== "open") return;
256
+ try {
257
+ await authorityStore.close();
258
+ console.log("\u2705 LevelDB \u5DF2\u5173\u95ED");
259
+ } catch (err) {
260
+ console.error("\u274C \u5173\u95ED LevelDB \u5931\u8D25:", err);
261
+ }
262
+ }
263
+ export {
264
+ closeServerDb,
265
+ db_default as default,
266
+ ensureServerDbOpen,
267
+ getServerAuthorityStore,
268
+ isServerDbLockError,
269
+ openServerDb,
270
+ serverDb
271
+ };
@@ -0,0 +1,60 @@
1
+ import {
2
+ dbAdapter,
3
+ dbSlice_default,
4
+ patch,
5
+ purge,
6
+ read,
7
+ readAndWait,
8
+ readFileContent,
9
+ remove,
10
+ removeCachedEntity,
11
+ selectAll,
12
+ selectById,
13
+ selectEntities,
14
+ selectIds,
15
+ selectTotal,
16
+ share,
17
+ upload,
18
+ upsert,
19
+ upsertSSREntity,
20
+ write
21
+ } from "./chunk-COMXDWNM.js";
22
+ import "./chunk-AZPCASRE.js";
23
+ import "./chunk-2EISRLRC.js";
24
+ import "./chunk-SH2CFQOH.js";
25
+ import "./chunk-I42VC5KR.js";
26
+ import "./chunk-WWC7I6TA.js";
27
+ import "./chunk-QSJ3HFEF.js";
28
+ import "./chunk-ELRRLDWI.js";
29
+ import "./chunk-EYEEHCU4.js";
30
+ import "./chunk-QYXLLLGL.js";
31
+ import "./chunk-GBRG75BQ.js";
32
+ import "./chunk-4SN6J65J.js";
33
+ import "./chunk-LCBAMY2M.js";
34
+ import "./chunk-3EUW3WEO.js";
35
+ import "./chunk-U6VC4MU4.js";
36
+ import "./chunk-CF7PE763.js";
37
+ import "./chunk-G3SUCT4W.js";
38
+ import "./chunk-KUG52IAP.js";
39
+ import "./chunk-4VNS5WPM.js";
40
+ export {
41
+ dbAdapter,
42
+ dbSlice_default as default,
43
+ patch,
44
+ purge,
45
+ read,
46
+ readAndWait,
47
+ readFileContent,
48
+ remove,
49
+ removeCachedEntity,
50
+ selectAll,
51
+ selectById,
52
+ selectEntities,
53
+ selectIds,
54
+ selectTotal,
55
+ share,
56
+ upload,
57
+ upsert,
58
+ upsertSSREntity,
59
+ write
60
+ };
@@ -0,0 +1,41 @@
1
+ import {
2
+ deleteFileFromIndexedDb,
3
+ removeAction
4
+ } from "./chunk-2EISRLRC.js";
5
+ import "./chunk-EYEEHCU4.js";
6
+ import {
7
+ fetchFromClientDb,
8
+ logger
9
+ } from "./chunk-QYXLLLGL.js";
10
+ import "./chunk-GBRG75BQ.js";
11
+ import "./chunk-4SN6J65J.js";
12
+ import "./chunk-LCBAMY2M.js";
13
+ import "./chunk-3EUW3WEO.js";
14
+ import "./chunk-U6VC4MU4.js";
15
+ import "./chunk-CF7PE763.js";
16
+ import "./chunk-G3SUCT4W.js";
17
+ import "./chunk-KUG52IAP.js";
18
+ import "./chunk-4VNS5WPM.js";
19
+
20
+ // packages/database/actions/deleteFile.ts
21
+ var deleteFileAction = async (dbKey, thunkApi) => {
22
+ const { db: clientDb } = thunkApi.extra;
23
+ try {
24
+ const metadata = await fetchFromClientDb(clientDb, dbKey);
25
+ if (metadata && metadata.id) {
26
+ try {
27
+ await deleteFileFromIndexedDb(metadata.id);
28
+ logger.debug({ fileId: metadata.id }, "Deleted file blob from IndexedDB");
29
+ } catch (err) {
30
+ logger.warn({ err, fileId: metadata.id }, "Failed to delete file blob from IndexedDB, proceeding to delete metadata");
31
+ }
32
+ }
33
+ await removeAction(dbKey, thunkApi);
34
+ } catch (error) {
35
+ logger.error({ error, dbKey }, "Failed to delete file completely");
36
+ throw error;
37
+ }
38
+ };
39
+ export {
40
+ deleteFileAction
41
+ };
@@ -0,0 +1,63 @@
1
+ import {
2
+ isScheduledDialog,
3
+ normalizeDialogRecord,
4
+ readDialogSnapshot,
5
+ runDialogDeleteCommand,
6
+ runDialogListCommand,
7
+ runDialogQueryCommand,
8
+ runDialogReadCommand,
9
+ runDialogStatusCommand,
10
+ sortDialogs
11
+ } from "./chunk-G43KEVSC.js";
12
+ import "./chunk-4CQLVGRV.js";
13
+ import "./chunk-WKM6FH35.js";
14
+ import "./chunk-7OOXPE3N.js";
15
+ import "./chunk-2PUGVR6E.js";
16
+ import "./chunk-VHBWHNVT.js";
17
+ import "./chunk-KQHGZWSV.js";
18
+ import "./chunk-PCWC3JTN.js";
19
+ import "./chunk-IDZTNRP2.js";
20
+ import "./chunk-ISNCLGUZ.js";
21
+ import "./chunk-OLZBQWZU.js";
22
+ import "./chunk-YBWOP46I.js";
23
+ import "./chunk-5KLGBAAR.js";
24
+ import "./chunk-ZNFJWEN4.js";
25
+ import "./chunk-TILFE6LV.js";
26
+ import "./chunk-XS466O7S.js";
27
+ import "./chunk-OPZYGHUC.js";
28
+ import "./chunk-PAKN26FP.js";
29
+ import "./chunk-JRKKFRAV.js";
30
+ import "./chunk-AUQ747NZ.js";
31
+ import "./chunk-5MMAK75Q.js";
32
+ import "./chunk-BBYVOSU2.js";
33
+ import "./chunk-5CS33IBL.js";
34
+ import "./chunk-JZPBVBIY.js";
35
+ import "./chunk-IWX4UW2E.js";
36
+ import "./chunk-DWLEOOGR.js";
37
+ import "./chunk-HNMXYYJR.js";
38
+ import "./chunk-Y5GCAMGP.js";
39
+ import "./chunk-KX6YBIHG.js";
40
+ import "./chunk-SH2CFQOH.js";
41
+ import "./chunk-I42VC5KR.js";
42
+ import "./chunk-WWC7I6TA.js";
43
+ import "./chunk-QSJ3HFEF.js";
44
+ import "./chunk-GBRG75BQ.js";
45
+ import "./chunk-4SN6J65J.js";
46
+ import "./chunk-LCBAMY2M.js";
47
+ import "./chunk-3EUW3WEO.js";
48
+ import "./chunk-U6VC4MU4.js";
49
+ import "./chunk-CF7PE763.js";
50
+ import "./chunk-G3SUCT4W.js";
51
+ import "./chunk-KUG52IAP.js";
52
+ import "./chunk-4VNS5WPM.js";
53
+ export {
54
+ isScheduledDialog,
55
+ normalizeDialogRecord,
56
+ readDialogSnapshot,
57
+ runDialogDeleteCommand,
58
+ runDialogListCommand,
59
+ runDialogQueryCommand,
60
+ runDialogReadCommand,
61
+ runDialogStatusCommand,
62
+ sortDialogs
63
+ };