volute 0.30.0 → 0.31.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 (169) hide show
  1. package/dist/{accept-E3PAH3QJ.js → accept-GAKQ3MEH.js} +4 -4
  2. package/dist/{activity-events-BKBPPUBP.js → activity-events-T5ZRCVAL.js} +2 -2
  3. package/dist/{ai-service-VAJT5UBS.js → ai-service-UWUPM4T6.js} +5 -3
  4. package/dist/api.d.ts +238 -111
  5. package/dist/{archive-WWDBWYN2.js → archive-YBNSJYZZ.js} +2 -2
  6. package/dist/auth-T5AW2USD.js +43 -0
  7. package/dist/{bridge-RO37CUFM.js → bridge-4AJ3EY26.js} +4 -4
  8. package/dist/{chat-TCUNPFGO.js → chat-7YLT7FI3.js} +8 -8
  9. package/dist/{chunk-EFVHR7KH.js → chunk-4OUOFS23.js} +24 -5
  10. package/dist/{chunk-G3GBKZGG.js → chunk-57OKQMP3.js} +54 -2
  11. package/dist/chunk-6QIUN46C.js +38 -0
  12. package/dist/{chunk-FSM45XD5.js → chunk-AAO77TZX.js} +1 -1
  13. package/dist/{chunk-DTC6EH5I.js → chunk-BC3P3QCK.js} +1 -1
  14. package/dist/{chunk-P7VFDSSG.js → chunk-BNC43CSY.js} +2 -2
  15. package/dist/{chunk-QVAQ5454.js → chunk-BWKIHH7B.js} +3080 -2099
  16. package/dist/{chunk-IKHDUZRH.js → chunk-DAXJKPHZ.js} +2 -2
  17. package/dist/{chunk-P27RV5WM.js → chunk-EKDWA7E4.js} +3 -1
  18. package/dist/{chunk-S5LR3XYJ.js → chunk-EMPFLFTG.js} +1 -1
  19. package/dist/{chunk-2C2VXEBB.js → chunk-FAHDKPEH.js} +18 -56
  20. package/dist/{chunk-W5OOPLNP.js → chunk-HDKY4TWU.js} +3 -3
  21. package/dist/{chunk-EFP3PE6C.js → chunk-HR5JKIDG.js} +2 -12
  22. package/dist/{chunk-JGFRDMR6.js → chunk-LX6T3GKQ.js} +1 -1
  23. package/dist/{chunk-2NDZC3S7.js → chunk-NOWVQ7AL.js} +447 -299
  24. package/dist/{chunk-ZWKTUQEL.js → chunk-NV3TYNWX.js} +1 -1
  25. package/dist/{chunk-NSBFETWP.js → chunk-PNQCXLSV.js} +7 -26
  26. package/dist/chunk-R5QJBZZG.js +175 -0
  27. package/dist/{chunk-MDPCSXZ4.js → chunk-S2TZLSDH.js} +4 -4
  28. package/dist/{chunk-FXHXHI2A.js → chunk-SNVPRRT7.js} +3 -6
  29. package/dist/{chunk-UPA6COHU.js → chunk-WRS3B556.js} +5 -5
  30. package/dist/{chunk-HHTXM4JT.js → chunk-X62AXPR7.js} +36 -4
  31. package/dist/cli.js +74 -23
  32. package/dist/{clock-G3ALCMLJ.js → clock-LJCG426D.js} +10 -8
  33. package/dist/{cloud-sync-JV4LJOK3.js → cloud-sync-O3LXIRN6.js} +13 -13
  34. package/dist/{conversations-7KVQV7EZ.js → conversations-RKKGP5IA.js} +7 -7
  35. package/dist/{create-VQSQHJQW.js → create-TL623TFC.js} +1 -1
  36. package/dist/{create-JTLS7GX3.js → create-WUTIIRI2.js} +4 -4
  37. package/dist/daemon-client-CVGM25DM.js +11 -0
  38. package/dist/{daemon-restart-4JGBHEJ4.js → daemon-restart-EZP7XH3V.js} +6 -7
  39. package/dist/daemon.js +1879 -1727
  40. package/dist/{db-HMFPIRO2.js → db-SW5PL6QA.js} +1 -1
  41. package/dist/{delete-JESHKE7F.js → delete-Z6HAG35F.js} +1 -1
  42. package/dist/down-TS4XQBA4.js +13 -0
  43. package/dist/{env-CLXXT7M2.js → env-NHESNNSP.js} +4 -4
  44. package/dist/{export-EGA5M5PB.js → export-EVMP7GWY.js} +3 -3
  45. package/dist/{extension-WZ4SUPJB.js → extension-LR7EW3JF.js} +5 -6
  46. package/dist/{extensions-ECO4RPFQ.js → extensions-NGEJI7JH.js} +7 -7
  47. package/dist/{files-4VEJDASH.js → files-3SM7V33S.js} +5 -5
  48. package/dist/{history-EJMMLXDO.js → history-PQD3LXEP.js} +4 -4
  49. package/dist/{import-YCGPMBSI.js → import-PR2OCGQJ.js} +3 -3
  50. package/dist/{join-2GBJKZEN.js → join-R4EN5CWQ.js} +1 -1
  51. package/dist/{list-Q6O7FGAN.js → list-B4XNUOFO.js} +4 -4
  52. package/dist/{login-RL6AU2SM.js → login-62JVY6A2.js} +4 -4
  53. package/dist/{login-RET5WESK.js → login-URWP6S2N.js} +2 -2
  54. package/dist/{logout-CGAGJN3L.js → logout-NXJQJDLI.js} +2 -2
  55. package/dist/{logout-JRPBEMMR.js → logout-ZK2N62T3.js} +2 -2
  56. package/dist/message-delivery-UJHCLVU4.js +30 -0
  57. package/dist/{mind-LUWRQUQ5.js → mind-E2ZV2WRX.js} +17 -17
  58. package/dist/{mind-activity-tracker-VYN2ZZ2M.js → mind-activity-tracker-ASNZBMLC.js} +3 -3
  59. package/dist/{mind-list-V5WW5DUA.js → mind-list-BEI7E5WY.js} +2 -2
  60. package/dist/mind-manager-IPA6DZXD.js +26 -0
  61. package/dist/{mind-sleep-R6PTNNW4.js → mind-sleep-CANABWJI.js} +4 -4
  62. package/dist/{mind-status-I4ISFJ6I.js → mind-status-6WKZVUOP.js} +2 -2
  63. package/dist/{mind-wake-67ZQEWAV.js → mind-wake-RZKLH2IN.js} +4 -4
  64. package/dist/{package-S2OAA5ZA.js → package-NU4CA7OU.js} +3 -3
  65. package/dist/{pages-watcher-Z3PKNROC.js → pages-watcher-72OVPRMH.js} +4 -3
  66. package/dist/read-THL362EI.js +74 -0
  67. package/dist/{register-NZDSTLP3.js → register-QAQELAS6.js} +4 -4
  68. package/dist/{registry-ODSALQQL.js → registry-ASXCQCNH.js} +1 -1
  69. package/dist/{reject-2HZOJEIJ.js → reject-AYPBNPNL.js} +4 -4
  70. package/dist/{restart-QHS3NT64.js → restart-6SKPV3T2.js} +4 -4
  71. package/dist/{sandbox-O5FUSF43.js → sandbox-6ZEWQDVU.js} +3 -3
  72. package/dist/{seed-WUQMPLDM.js → seed-OWX2AW75.js} +36 -12
  73. package/dist/{send-OAN3RYYY.js → send-ZO4BTWXK.js} +5 -5
  74. package/dist/{setup-QMDK5RZX.js → setup-7CFITEQN.js} +2 -4
  75. package/dist/{setup-XJH3E7YM.js → setup-ZXBXG7E4.js} +6 -8
  76. package/dist/{skill-FZIN4W4Q.js → skill-YFXP67A2.js} +4 -4
  77. package/dist/skills/dreaming/references/INSTALL.md +2 -3
  78. package/dist/skills/dreaming/scripts/dream.ts +3 -25
  79. package/dist/skills/volute-mind/SKILL.md +1 -1
  80. package/dist/sleep-manager-TPS6OGCA.js +30 -0
  81. package/dist/{split-EXYGGGQN.js → split-MI62KJUU.js} +1 -1
  82. package/dist/{sprout-AXQ6H5DB.js → sprout-FDVI2CGN.js} +5 -6
  83. package/dist/{start-MTOVL6SY.js → start-D64BRKPH.js} +4 -4
  84. package/dist/{status-ZRO37MWR.js → status-ZZWBYFGE.js} +4 -5
  85. package/dist/{stop-OK5WEPVC.js → stop-OP2CTXCO.js} +4 -4
  86. package/dist/system-chat-B43GIXQU.js +30 -0
  87. package/dist/{systems-W3BBMSOZ.js → systems-EQPPT4B7.js} +5 -5
  88. package/dist/{tailscale-BM72RXCJ.js → tailscale-6DJKUMNF.js} +1 -1
  89. package/dist/up-TDXEP3VA.js +16 -0
  90. package/dist/{update-PLPHMMZ2.js → update-KUJXATRS.js} +4 -5
  91. package/dist/{update-check-CVCN7MF6.js → update-check-5WVSU37T.js} +2 -2
  92. package/dist/{upgrade-I6NPCYUU.js → upgrade-KBHCWX6T.js} +1 -1
  93. package/dist/{version-notify-2NTWVEHL.js → version-notify-75ELVKPV.js} +17 -21
  94. package/dist/web-assets/assets/index-BM1cTzBg.js +72 -0
  95. package/dist/web-assets/assets/index-BfJkKTPF.css +1 -0
  96. package/dist/web-assets/ext-theme.css +1 -0
  97. package/dist/web-assets/index.html +2 -2
  98. package/drizzle/0000_baseline.sql +152 -0
  99. package/drizzle/0001_add_conversation_private.sql +1 -0
  100. package/drizzle/0002_turns.sql +21 -0
  101. package/drizzle/0003_turn_feed_links.sql +11 -0
  102. package/drizzle/meta/0000_snapshot.json +3 -223
  103. package/drizzle/meta/0001_snapshot.json +3 -294
  104. package/drizzle/meta/0002_snapshot.json +3 -335
  105. package/drizzle/meta/0003_snapshot.json +3 -413
  106. package/drizzle/meta/_journal.json +8 -106
  107. package/package.json +3 -3
  108. package/packages/extensions/notes/dist/ui/assets/{index-DgawVO5g.css → index-B8GdTnXs.css} +1 -1
  109. package/packages/extensions/notes/dist/ui/assets/index-CDpGTCWb.js +2 -0
  110. package/packages/extensions/notes/dist/ui/index.html +2 -2
  111. package/packages/extensions/notes/skills/notes/SKILL.md +8 -8
  112. package/packages/extensions/pages/skills/pages/SKILL.md +7 -4
  113. package/packages/extensions/pages/skills/pages/scripts/pages.mjs +58 -0
  114. package/templates/_base/.init/.config/bin/volute +27 -0
  115. package/templates/_base/src/lib/auto-commit.ts +82 -43
  116. package/templates/_base/src/lib/daemon-client.ts +19 -23
  117. package/templates/_base/src/lib/router.ts +17 -1
  118. package/templates/_base/src/lib/startup.ts +6 -8
  119. package/templates/_base/src/lib/volute-server.ts +2 -5
  120. package/templates/claude/src/agent.ts +2 -1
  121. package/templates/claude/src/lib/hooks/auto-commit.ts +7 -3
  122. package/templates/claude/src/server.ts +0 -9
  123. package/templates/pi/package.json.tmpl +1 -1
  124. package/templates/pi/src/agent.ts +1 -1
  125. package/templates/pi/src/lib/event-handler.ts +5 -3
  126. package/dist/chunk-7D47T4RB.js +0 -84
  127. package/dist/chunk-CVH6Y2YG.js +0 -59
  128. package/dist/chunk-LIRWLNAK.js +0 -729
  129. package/dist/daemon-client-BCTFGVCZ.js +0 -9
  130. package/dist/down-NGBMGORS.js +0 -14
  131. package/dist/message-delivery-6YMVNOEC.js +0 -28
  132. package/dist/migrate-registry-to-db-FK35IPEH.js +0 -110
  133. package/dist/mind-manager-YFCOIAAX.js +0 -18
  134. package/dist/read-WQMPTSN2.js +0 -46
  135. package/dist/sleep-manager-O7YQFCV5.js +0 -30
  136. package/dist/up-BXUAIDXB.js +0 -17
  137. package/dist/web-assets/assets/index--kREqKl9.js +0 -72
  138. package/dist/web-assets/assets/index-BXYTG0nJ.css +0 -1
  139. package/drizzle/0000_flaky_mariko_yashida.sql +0 -34
  140. package/drizzle/0001_careless_warpath.sql +0 -12
  141. package/drizzle/0002_wealthy_the_call.sql +0 -6
  142. package/drizzle/0003_clean_ego.sql +0 -12
  143. package/drizzle/0004_magical_silverclaw.sql +0 -1
  144. package/drizzle/0005_rename_agents_to_minds.sql +0 -11
  145. package/drizzle/0006_mind_history.sql +0 -20
  146. package/drizzle/0007_system_prompts.sql +0 -5
  147. package/drizzle/0008_volute_channels.sql +0 -24
  148. package/drizzle/0009_shared_skills.sql +0 -9
  149. package/drizzle/0010_delivery_queue.sql +0 -12
  150. package/drizzle/0011_rename_human_to_brain.sql +0 -1
  151. package/drizzle/0012_activity.sql +0 -11
  152. package/drizzle/0013_user_profiles.sql +0 -3
  153. package/drizzle/0014_conversation_reads.sql +0 -7
  154. package/drizzle/0015_notes.sql +0 -23
  155. package/drizzle/0016_note_reactions_and_replies.sql +0 -15
  156. package/drizzle/0017_minds.sql +0 -16
  157. package/drizzle/meta/0004_snapshot.json +0 -410
  158. package/drizzle/meta/0005_snapshot.json +0 -410
  159. package/drizzle/meta/0006_snapshot.json +0 -7
  160. package/drizzle/meta/0007_snapshot.json +0 -7
  161. package/drizzle/meta/0008_snapshot.json +0 -7
  162. package/drizzle/meta/0009_snapshot.json +0 -7
  163. package/drizzle/meta/0010_snapshot.json +0 -7
  164. package/drizzle/meta/0011_snapshot.json +0 -7
  165. package/drizzle/meta/0012_snapshot.json +0 -7
  166. package/drizzle/meta/0013_snapshot.json +0 -7
  167. package/packages/extensions/notes/dist/ui/assets/index-qUWoeC4c.js +0 -2
  168. package/packages/extensions/notes/skills/notes/scripts/notes.mjs +0 -185
  169. package/templates/_base/home/public/.gitkeep +0 -0
@@ -4,14 +4,14 @@ import {
4
4
  } from "./chunk-YUIHSKR6.js";
5
5
  import {
6
6
  readGlobalConfig
7
- } from "./chunk-7D47T4RB.js";
7
+ } from "./chunk-6QIUN46C.js";
8
8
  import {
9
9
  getBaseName,
10
10
  readRegistry,
11
11
  voluteHome,
12
12
  voluteSystemDir,
13
13
  voluteUserHome
14
- } from "./chunk-HHTXM4JT.js";
14
+ } from "./chunk-X62AXPR7.js";
15
15
 
16
16
  // src/lib/sandbox.ts
17
17
  import { resolve } from "path";
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  activity,
7
7
  getDb
8
- } from "./chunk-HHTXM4JT.js";
8
+ } from "./chunk-X62AXPR7.js";
9
9
 
10
10
  // src/lib/events/activity-events.ts
11
11
  var subscribers = /* @__PURE__ */ new Set();
@@ -25,6 +25,8 @@ async function publish(event) {
25
25
  mind: event.mind,
26
26
  summary: event.summary,
27
27
  metadata: event.metadata ? JSON.stringify(event.metadata) : null,
28
+ turn_id: event.turn_id ?? null,
29
+ source_event_id: event.source_event_id ?? null,
28
30
  created_at
29
31
  });
30
32
  id = Number(result.lastInsertRowid);
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  voluteSystemDir
4
- } from "./chunk-HHTXM4JT.js";
4
+ } from "./chunk-X62AXPR7.js";
5
5
 
6
6
  // src/lib/update-check.ts
7
7
  import { existsSync, readFileSync, writeFileSync } from "fs";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  subscribe
4
- } from "./chunk-P27RV5WM.js";
4
+ } from "./chunk-EKDWA7E4.js";
5
5
  import {
6
6
  logger_default
7
7
  } from "./chunk-YUIHSKR6.js";
@@ -12,7 +12,7 @@ import {
12
12
  getDb,
13
13
  messages,
14
14
  users
15
- } from "./chunk-HHTXM4JT.js";
15
+ } from "./chunk-X62AXPR7.js";
16
16
 
17
17
  // src/lib/events/conversations.ts
18
18
  import { randomUUID } from "crypto";
@@ -109,53 +109,6 @@ function publish(conversationId, event) {
109
109
  }
110
110
 
111
111
  // src/lib/events/conversations.ts
112
- async function migrateGroupDMsToChannels() {
113
- const db = await getDb();
114
- await db.transaction(async (tx) => {
115
- const overloadedDMs = await tx.select({
116
- conversationId: conversationParticipants.conversation_id,
117
- count: sql`COUNT(*)`
118
- }).from(conversationParticipants).innerJoin(conversations, eq(conversationParticipants.conversation_id, conversations.id)).where(eq(conversations.type, "dm")).groupBy(conversationParticipants.conversation_id).having(sql`COUNT(*) > 2`);
119
- const dmIds = overloadedDMs.map((r) => r.conversationId);
120
- await tx.update(conversations).set({
121
- type: "channel",
122
- name: sql`COALESCE(${conversations.name}, ${conversations.title})`
123
- }).where(eq(conversations.type, "group"));
124
- if (dmIds.length > 0) {
125
- await tx.update(conversations).set({
126
- type: "channel",
127
- name: sql`COALESCE(${conversations.name}, ${conversations.title})`
128
- }).where(inArray(conversations.id, dmIds));
129
- }
130
- });
131
- await migrateChannelEntryTypes();
132
- }
133
- async function migrateChannelEntryTypes() {
134
- const { existsSync, readdirSync, readFileSync, writeFileSync } = await import("fs");
135
- const { join } = await import("path");
136
- const home = join((await import("os")).homedir(), ".volute", "state");
137
- if (!existsSync(home)) return;
138
- for (const name of readdirSync(home)) {
139
- const filePath = join(home, name, "channels.json");
140
- if (!existsSync(filePath)) continue;
141
- try {
142
- const raw = readFileSync(filePath, "utf-8");
143
- const map = JSON.parse(raw);
144
- let changed = false;
145
- for (const entry of Object.values(map)) {
146
- if (entry.type === "group") {
147
- entry.type = "channel";
148
- changed = true;
149
- }
150
- }
151
- if (changed) {
152
- writeFileSync(filePath, `${JSON.stringify(map, null, 2)}
153
- `);
154
- }
155
- } catch {
156
- }
157
- }
158
- }
159
112
  async function createConversation(mindName, channel, opts) {
160
113
  const db = await getDb();
161
114
  const id = randomUUID();
@@ -194,6 +147,7 @@ async function createConversation(mindName, channel, opts) {
194
147
  name,
195
148
  user_id: opts?.userId ?? null,
196
149
  title: opts?.title ?? null,
150
+ private: 0,
197
151
  created_at: (/* @__PURE__ */ new Date()).toISOString(),
198
152
  updated_at: (/* @__PURE__ */ new Date()).toISOString()
199
153
  };
@@ -263,20 +217,24 @@ async function listConversationsForUser(userId) {
263
217
  return await db.select().from(conversations).where(inArray(conversations.id, convIds)).orderBy(desc(conversations.updated_at)).all();
264
218
  }
265
219
  async function isParticipantOrOwner(conversationId, userId) {
266
- if (await isParticipant(conversationId, userId)) return true;
267
- const db = await getDb();
268
- const row = await db.select().from(conversations).where(and(eq(conversations.id, conversationId), eq(conversations.user_id, userId))).get();
269
- return row != null;
220
+ return isParticipant(conversationId, userId);
270
221
  }
271
222
  async function deleteConversationForUser(id, userId) {
272
223
  if (!await isParticipantOrOwner(id, userId)) return false;
273
224
  await deleteConversation(id);
274
225
  return true;
275
226
  }
276
- async function addMessage(conversationId, role, senderName, content) {
227
+ async function addMessage(conversationId, role, senderName, content, opts) {
277
228
  const db = await getDb();
278
229
  const serialized = JSON.stringify(content);
279
- const [result] = await db.insert(messages).values({ conversation_id: conversationId, role, sender_name: senderName, content: serialized }).returning({ id: messages.id, created_at: messages.created_at });
230
+ const [result] = await db.insert(messages).values({
231
+ conversation_id: conversationId,
232
+ role,
233
+ sender_name: senderName,
234
+ content: serialized,
235
+ source_event_id: opts?.sourceEventId ?? null,
236
+ turn_id: opts?.turnId ?? null
237
+ }).returning({ id: messages.id, created_at: messages.created_at });
280
238
  await db.update(conversations).set({ updated_at: sql`datetime('now')` }).where(eq(conversations.id, conversationId));
281
239
  if (role === "user") {
282
240
  const firstText = content.find((b) => b.type === "text");
@@ -522,6 +480,10 @@ async function isConversationForMind(mindName, conversationId) {
522
480
  ).get();
523
481
  return !!participant;
524
482
  }
483
+ async function setConversationPrivate(id, isPrivate) {
484
+ const db = await getDb();
485
+ await db.update(conversations).set({ private: isPrivate ? 1 : 0 }).where(eq(conversations.id, id));
486
+ }
525
487
  async function deleteConversation(id) {
526
488
  const db = await getDb();
527
489
  await db.delete(conversations).where(eq(conversations.id, id));
@@ -593,7 +555,6 @@ export {
593
555
  initWebhook,
594
556
  subscribe2 as subscribe,
595
557
  publish,
596
- migrateGroupDMsToChannels,
597
558
  createConversation,
598
559
  getOrCreateConversation,
599
560
  getConversation,
@@ -611,6 +572,7 @@ export {
611
572
  findDMConversation,
612
573
  listConversationsForMind,
613
574
  isConversationForMind,
575
+ setConversationPrivate,
614
576
  deleteConversation,
615
577
  createChannel,
616
578
  getChannelByName,
@@ -4,17 +4,17 @@ import {
4
4
  modeLabel,
5
5
  pollHealth,
6
6
  startService
7
- } from "./chunk-FXHXHI2A.js";
7
+ } from "./chunk-SNVPRRT7.js";
8
8
  import {
9
9
  readGlobalConfig
10
- } from "./chunk-7D47T4RB.js";
10
+ } from "./chunk-6QIUN46C.js";
11
11
  import {
12
12
  parseArgs
13
13
  } from "./chunk-D424ZQGI.js";
14
14
  import {
15
15
  voluteHome,
16
16
  voluteSystemDir
17
- } from "./chunk-HHTXM4JT.js";
17
+ } from "./chunk-X62AXPR7.js";
18
18
 
19
19
  // src/commands/up.ts
20
20
  import { spawn } from "child_process";
@@ -1,7 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import {
3
- publish
4
- } from "./chunk-P27RV5WM.js";
5
2
  import {
6
3
  logger_default
7
4
  } from "./chunk-YUIHSKR6.js";
@@ -9,7 +6,7 @@ import {
9
6
  mindDir,
10
7
  readRegistry,
11
8
  voluteHome
12
- } from "./chunk-HHTXM4JT.js";
9
+ } from "./chunk-X62AXPR7.js";
13
10
 
14
11
  // src/lib/pages-watcher.ts
15
12
  import { existsSync, readdirSync, statSync, watch } from "fs";
@@ -31,14 +28,6 @@ function startPagesWatcher(mindName, pagesDir) {
31
28
  setTimeout(() => {
32
29
  debounceTimers.delete(key);
33
30
  invalidateCache();
34
- publish({
35
- type: "page_updated",
36
- mind: mindName,
37
- summary: `${mindName} updated ${filename}`,
38
- metadata: { file: filename }
39
- }).catch(
40
- (err) => logger_default.error("failed to publish page_updated activity", logger_default.errorData(err))
41
- );
42
31
  }, 100)
43
32
  );
44
33
  });
@@ -227,6 +216,7 @@ export {
227
216
  startWatcher,
228
217
  stopWatcher,
229
218
  stopAllWatchers,
219
+ invalidateCache,
230
220
  getCachedSites,
231
221
  getCachedRecentPages
232
222
  };
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  stateDir
4
- } from "./chunk-HHTXM4JT.js";
4
+ } from "./chunk-X62AXPR7.js";
5
5
 
6
6
  // src/lib/file-sharing.ts
7
7
  import { randomBytes } from "crypto";