volute 0.43.1 → 0.44.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 (107) hide show
  1. package/dist/{activity-events-UISXY4Y5.js → activity-events-OMCSM7XW.js} +3 -3
  2. package/dist/{ai-service-FBCCEYF5.js → ai-service-7PHSRDMO.js} +4 -4
  3. package/dist/{archive-I32WHCJB.js → archive-6R4TZMYI.js} +3 -3
  4. package/dist/{auth-3RIG6GKN.js → auth-FRZJVQCS.js} +4 -4
  5. package/dist/avatar-image-BNWEXSA2.js +16 -0
  6. package/dist/{chat-SDSX5TVV.js → chat-I4EDDIQC.js} +2 -2
  7. package/dist/{chunk-AD46AYZQ.js → chunk-2BONPXAF.js} +1 -1
  8. package/dist/{chunk-PGPLCJPK.js → chunk-3ERIL673.js} +1 -1
  9. package/dist/{chunk-C6ESRQZ7.js → chunk-3GYVW2X3.js} +1 -1
  10. package/dist/{chunk-SPLPKBES.js → chunk-5AHYQHNT.js} +4 -8
  11. package/dist/{chunk-XDTKJNW5.js → chunk-5GT7URXJ.js} +1 -1
  12. package/dist/{chunk-QQ2MVQU3.js → chunk-7FT24JBQ.js} +8 -8
  13. package/dist/{chunk-DE4EKQFH.js → chunk-7KWANSLX.js} +3 -3
  14. package/dist/{chunk-EFL5UOY4.js → chunk-CYI534DJ.js} +3 -3
  15. package/dist/{chunk-DMUPZQWP.js → chunk-EQZD4YU3.js} +8 -8
  16. package/dist/{chunk-57LBQ7JX.js → chunk-FHWUQZXE.js} +1 -1
  17. package/dist/{chunk-K4EHBHPE.js → chunk-FZMEVCWC.js} +3 -3
  18. package/dist/{chunk-YAMO2U3N.js → chunk-H7IYFRAL.js} +1 -1
  19. package/dist/{chunk-M3PGGSBH.js → chunk-HVU45COX.js} +1 -1
  20. package/dist/{chunk-KINGVQSR.js → chunk-I2Y2YHIO.js} +5 -5
  21. package/dist/{chunk-O3DXAR44.js → chunk-IEWZ7VD7.js} +2 -2
  22. package/dist/{chunk-YSV3VJQK.js → chunk-J47TIYHA.js} +1 -1
  23. package/dist/{chunk-QHG4OMZL.js → chunk-KDLYIECM.js} +37 -32
  24. package/dist/{chunk-EE7SZJON.js → chunk-KP3KWNG6.js} +2 -2
  25. package/dist/{chunk-JVK6QQIC.js → chunk-LAXUUY7O.js} +2 -2
  26. package/dist/{chunk-Y6O35D7K.js → chunk-NF75HPNR.js} +5 -5
  27. package/dist/{chunk-4SVONUTC.js → chunk-OMETFX5H.js} +321 -204
  28. package/dist/{chunk-ONM2AZFL.js → chunk-PNV24SEP.js} +1 -1
  29. package/dist/{chunk-ATEX3ZPG.js → chunk-Q2XBKQ2D.js} +2 -2
  30. package/dist/{chunk-GZJFC76M.js → chunk-QMJJWTNL.js} +1 -1
  31. package/dist/chunk-SQL7M4HJ.js +120 -0
  32. package/dist/{chunk-2HIVYZDB.js → chunk-UMI4UIJG.js} +1 -1
  33. package/dist/{chunk-7G2EEYXX.js → chunk-ZMIMSIIT.js} +2 -2
  34. package/dist/{chunk-L3IV23ZG.js → chunk-ZV7MFISX.js} +2 -0
  35. package/dist/cli.js +47 -22
  36. package/dist/{cloud-sync-KOEBUFW5.js → cloud-sync-6WJ7WFYD.js} +16 -16
  37. package/dist/{conversations-67WWW25C.js → conversations-WAJYZKOC.js} +4 -4
  38. package/dist/{create-7W3LV3J7.js → create-YZIV5OJC.js} +1 -1
  39. package/dist/{daemon-restart-EZXB73W7.js → daemon-restart-OUJVINXV.js} +7 -7
  40. package/dist/daemon.js +297 -294
  41. package/dist/{db-CZV62BOQ.js → db-JFLCJCUG.js} +2 -2
  42. package/dist/{db-IJL6B26S.js → db-LZTLA7XC.js} +1 -1
  43. package/dist/delivery-manager-TEVOHX5W.js +32 -0
  44. package/dist/{delivery-router-HXBHYHJM.js → delivery-router-GODSIS62.js} +3 -3
  45. package/dist/{down-RRNYIGCU.js → down-XCAZXWLB.js} +5 -5
  46. package/dist/echo-text-T7ZA5EYD.js +32 -0
  47. package/dist/{exec-SJK7VUTC.js → exec-4GWHAHS3.js} +3 -3
  48. package/dist/{export-7LPCIB5J.js → export-ID7YUSLZ.js} +3 -3
  49. package/dist/{extensions-PQPZT6LS.js → extensions-3QNDGW5E.js} +16 -16
  50. package/dist/{files-LV7VAKPC.js → files-BQ2WB5KC.js} +3 -3
  51. package/dist/{import-XPECCRQ7.js → import-SKID37QX.js} +6 -6
  52. package/dist/{isolation-5AYEY55P.js → isolation-5MB3J73F.js} +3 -3
  53. package/dist/{login-KJSN4JDA.js → login-LM4NF4ZB.js} +2 -2
  54. package/dist/{logout-TMJGUQV2.js → logout-CTJVIZGA.js} +2 -2
  55. package/dist/message-delivery-2EA5LLMD.js +34 -0
  56. package/dist/{mind-G3WEWDM4.js → mind-MI7Z6KM2.js} +5 -5
  57. package/dist/{mind-activity-tracker-JHAT6456.js → mind-activity-tracker-BGHJE7XA.js} +4 -4
  58. package/dist/mind-service-S3SY7HAM.js +36 -0
  59. package/dist/{package-24TL6DTF.js → package-5B4XDTJH.js} +1 -1
  60. package/dist/{registry-7LQHTRUX.js → registry-NUJAGLQJ.js} +2 -2
  61. package/dist/{sandbox-SJH3XOPZ.js → sandbox-IOPWWILM.js} +4 -4
  62. package/dist/scheduler-CXWQ6Z4E.js +30 -0
  63. package/dist/{schema-LRUTFOER.js → schema-PVNG3PQM.js} +1 -1
  64. package/dist/{seed-HHSJTM6O.js → seed-UUPVQWFB.js} +1 -1
  65. package/dist/{seed-cmd-UPQY35RG.js → seed-cmd-7XPKDQUC.js} +2 -2
  66. package/dist/{seed-create-MDRMXMSB.js → seed-create-IZ4M5ESO.js} +3 -3
  67. package/dist/{seed-sprout-4M7IQWMH.js → seed-sprout-POJXHJWV.js} +7 -7
  68. package/dist/{send-ZBZWIH5V.js → send-O6W53VBM.js} +37 -42
  69. package/dist/{service-4EVZKGSA.js → service-AQVPUANO.js} +4 -4
  70. package/dist/{service-install-SHRM6NHK.js → service-install-4QNUDKLM.js} +5 -5
  71. package/dist/{setup-ZD2LMBR3.js → setup-5GCO3CUB.js} +7 -7
  72. package/dist/{setup-25MMJ3J4.js → setup-MLRKNP7Y.js} +3 -3
  73. package/dist/{skills-4KQ377GN.js → skills-775C7QFF.js} +5 -5
  74. package/dist/sleep-manager-HINI6Y46.js +34 -0
  75. package/dist/{spirit-53DQPRNR.js → spirit-IK5OYWMV.js} +7 -7
  76. package/dist/{sprout-YKM2M6D6.js → sprout-ZY5QGOEL.js} +1 -1
  77. package/dist/{src-O4PRLMKM.js → src-JAOVXO5W.js} +1 -0
  78. package/dist/{src-3EGHHKZK.js → src-XFY3XDD6.js} +16 -11
  79. package/dist/{src-L2Z7X5UT.js → src-YH6PQ7LJ.js} +264 -52
  80. package/dist/{status-WTU2WHXY.js → status-E5DQNCAO.js} +5 -5
  81. package/dist/system-chat-4DQZOEZI.js +34 -0
  82. package/dist/{tailscale-Q7ZJL7S7.js → tailscale-QAWVKQKU.js} +2 -2
  83. package/dist/{turn-tracker-JZYERJ76.js → turn-tracker-RWZMY7M6.js} +5 -5
  84. package/dist/{up-LFZA4GI5.js → up-FLCDR2UB.js} +6 -6
  85. package/dist/{update-EJ7Q77ZX.js → update-7TYVH5FM.js} +5 -5
  86. package/dist/{update-check-ACYYNKTW.js → update-check-VSCSJ7KX.js} +3 -3
  87. package/dist/{version-notify-SRQJCQEK.js → version-notify-B67N35A3.js} +17 -17
  88. package/dist/web-assets/assets/{index-DTDmEfPU.js → index-Domoz5Cg.js} +8 -8
  89. package/dist/web-assets/assets/index-dJdNzAPn.css +1 -0
  90. package/dist/web-assets/ext-theme.css +5 -0
  91. package/dist/web-assets/index.html +2 -2
  92. package/package.json +1 -1
  93. package/packages/extensions/notes/dist/ui/assets/{index-BbgANhFm.js → index-D0-DgYyj.js} +1 -1
  94. package/packages/extensions/notes/dist/ui/index.html +1 -1
  95. package/packages/extensions/notes/skills/notes/SKILL.md +31 -3
  96. package/packages/extensions/pages/dist/ui/assets/{index-Dxk-DYrf.js → index-CQjEQg1r.js} +1 -1
  97. package/packages/extensions/pages/dist/ui/index.html +1 -1
  98. package/templates/_base/.init/.local/hooks/startup-context.ts +25 -0
  99. package/templates/claude/src/agent.ts +8 -1
  100. package/dist/delivery-manager-OMCCJEVP.js +0 -32
  101. package/dist/echo-text-KFSUCZXL.js +0 -32
  102. package/dist/message-delivery-HRGFNWO7.js +0 -34
  103. package/dist/mind-service-2C7AINBO.js +0 -36
  104. package/dist/scheduler-VON2TB52.js +0 -30
  105. package/dist/sleep-manager-AG5SQDDI.js +0 -34
  106. package/dist/system-chat-54RN3K67.js +0 -34
  107. package/dist/web-assets/assets/index-D7udpBCx.css +0 -1
@@ -3,10 +3,10 @@ import {
3
3
  broadcast,
4
4
  publish,
5
5
  subscribe
6
- } from "./chunk-7G2EEYXX.js";
6
+ } from "./chunk-ZMIMSIIT.js";
7
7
  import "./chunk-T2TP6ZC6.js";
8
- import "./chunk-YAMO2U3N.js";
9
- import "./chunk-L3IV23ZG.js";
8
+ import "./chunk-H7IYFRAL.js";
9
+ import "./chunk-ZV7MFISX.js";
10
10
  import "./chunk-K3NQKI34.js";
11
11
  export {
12
12
  broadcast,
@@ -25,11 +25,11 @@ import {
25
25
  setProviderRefreshHook,
26
26
  setUtilityModel,
27
27
  unqualifyModelId
28
- } from "./chunk-YSV3VJQK.js";
29
- import "./chunk-ONM2AZFL.js";
28
+ } from "./chunk-J47TIYHA.js";
29
+ import "./chunk-PNV24SEP.js";
30
30
  import "./chunk-T2TP6ZC6.js";
31
- import "./chunk-YAMO2U3N.js";
32
- import "./chunk-L3IV23ZG.js";
31
+ import "./chunk-H7IYFRAL.js";
32
+ import "./chunk-ZV7MFISX.js";
33
33
  import "./chunk-K3NQKI34.js";
34
34
  export {
35
35
  addCustomModel,
@@ -5,9 +5,9 @@ import {
5
5
  extractArchive,
6
6
  isHomeOnlyArchive,
7
7
  readManifest
8
- } from "./chunk-GZJFC76M.js";
9
- import "./chunk-YAMO2U3N.js";
10
- import "./chunk-L3IV23ZG.js";
8
+ } from "./chunk-QMJJWTNL.js";
9
+ import "./chunk-H7IYFRAL.js";
10
+ import "./chunk-ZV7MFISX.js";
11
11
  import "./chunk-K3NQKI34.js";
12
12
  export {
13
13
  addHistoryToArchive,
@@ -17,11 +17,11 @@ import {
17
17
  syncMindProfile,
18
18
  updateUserProfile,
19
19
  verifyUser
20
- } from "./chunk-EFL5UOY4.js";
21
- import "./chunk-7G2EEYXX.js";
20
+ } from "./chunk-CYI534DJ.js";
21
+ import "./chunk-ZMIMSIIT.js";
22
22
  import "./chunk-T2TP6ZC6.js";
23
- import "./chunk-YAMO2U3N.js";
24
- import "./chunk-L3IV23ZG.js";
23
+ import "./chunk-H7IYFRAL.js";
24
+ import "./chunk-ZV7MFISX.js";
25
25
  import "./chunk-K3NQKI34.js";
26
26
  export {
27
27
  approveUser,
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ AVATAR_DIM,
4
+ migrateAvatarSizes,
5
+ normalizeAvatar
6
+ } from "./chunk-SQL7M4HJ.js";
7
+ import "./chunk-CU6OFXMM.js";
8
+ import "./chunk-T2TP6ZC6.js";
9
+ import "./chunk-H7IYFRAL.js";
10
+ import "./chunk-ZV7MFISX.js";
11
+ import "./chunk-K3NQKI34.js";
12
+ export {
13
+ AVATAR_DIM,
14
+ migrateAvatarSizes,
15
+ normalizeAvatar
16
+ };
@@ -12,7 +12,7 @@ var cmd = subcommands({
12
12
  commands: {
13
13
  send: {
14
14
  description: "Send a message",
15
- run: (args) => import("./send-ZBZWIH5V.js").then((m) => m.run(args))
15
+ run: (args) => import("./send-O6W53VBM.js").then((m) => m.run(args))
16
16
  },
17
17
  list: {
18
18
  description: "List conversations",
@@ -32,7 +32,7 @@ var cmd = subcommands({
32
32
  },
33
33
  files: {
34
34
  description: "List pending incoming files",
35
- run: (args) => import("./files-LV7VAKPC.js").then((m) => m.run(args))
35
+ run: (args) => import("./files-BQ2WB5KC.js").then((m) => m.run(args))
36
36
  },
37
37
  accept: {
38
38
  description: "Accept a pending file",
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  voluteSystemDir
4
- } from "./chunk-YAMO2U3N.js";
4
+ } from "./chunk-H7IYFRAL.js";
5
5
 
6
6
  // packages/daemon/src/lib/update-check.ts
7
7
  import { execFile as execFileCb, execFileSync } from "child_process";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  getBaseName,
4
4
  validateMindName
5
- } from "./chunk-YAMO2U3N.js";
5
+ } from "./chunk-H7IYFRAL.js";
6
6
 
7
7
  // packages/daemon/src/lib/mind/isolation.ts
8
8
  import { execFileSync as execFileSync2 } from "child_process";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readGlobalConfig
4
- } from "./chunk-ONM2AZFL.js";
4
+ } from "./chunk-PNV24SEP.js";
5
5
  import {
6
6
  logger_default
7
7
  } from "./chunk-T2TP6ZC6.js";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-T2TP6ZC6.js";
5
5
  import {
6
6
  mindDir
7
- } from "./chunk-YAMO2U3N.js";
7
+ } from "./chunk-H7IYFRAL.js";
8
8
 
9
9
  // packages/daemon/src/lib/delivery/delivery-router.ts
10
10
  import { readFileSync, statSync } from "fs";
@@ -155,8 +155,7 @@ function normalizeBatchConfig(batch) {
155
155
  function resolveDeliveryMode(config, sessionName, rule) {
156
156
  const ruleBatch = rule?.batch;
157
157
  const defaults = {
158
- delivery: { mode: "immediate" },
159
- interrupt: true
158
+ delivery: { mode: "immediate" }
160
159
  };
161
160
  if (!config.sessions) {
162
161
  if (ruleBatch != null) {
@@ -167,8 +166,7 @@ function resolveDeliveryMode(config, sessionName, rule) {
167
166
  debounce: batch.debounce ?? DEFAULT_BATCH_DEBOUNCE,
168
167
  maxWait: batch.maxWait ?? DEFAULT_BATCH_MAX_WAIT,
169
168
  triggers: batch.triggers
170
- },
171
- interrupt: true
169
+ }
172
170
  };
173
171
  }
174
172
  return defaults;
@@ -193,7 +191,6 @@ function resolveDeliveryMode(config, sessionName, rule) {
193
191
  }
194
192
  return {
195
193
  delivery,
196
- interrupt: true,
197
194
  instructions: sessionConfig.instructions
198
195
  };
199
196
  }
@@ -206,8 +203,7 @@ function resolveDeliveryMode(config, sessionName, rule) {
206
203
  debounce: batch.debounce ?? DEFAULT_BATCH_DEBOUNCE,
207
204
  maxWait: batch.maxWait ?? DEFAULT_BATCH_MAX_WAIT,
208
205
  triggers: batch.triggers
209
- },
210
- interrupt: true
206
+ }
211
207
  };
212
208
  }
213
209
  return defaults;
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  stateDir,
4
4
  voluteSystemDir
5
- } from "./chunk-YAMO2U3N.js";
5
+ } from "./chunk-H7IYFRAL.js";
6
6
 
7
7
  // packages/daemon/src/lib/config/env.ts
8
8
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
@@ -10,22 +10,22 @@ import {
10
10
  getSharedSkill,
11
11
  installSkill,
12
12
  mindSkillsDir
13
- } from "./chunk-KINGVQSR.js";
13
+ } from "./chunk-I2Y2YHIO.js";
14
14
  import {
15
15
  readVoluteConfig,
16
16
  writeVoluteConfig
17
17
  } from "./chunk-CU6OFXMM.js";
18
18
  import {
19
19
  exec
20
- } from "./chunk-PGPLCJPK.js";
20
+ } from "./chunk-3ERIL673.js";
21
21
  import {
22
22
  qualifyModelId,
23
23
  resolveTemplate,
24
24
  unqualifyModelId
25
- } from "./chunk-YSV3VJQK.js";
25
+ } from "./chunk-J47TIYHA.js";
26
26
  import {
27
27
  readGlobalConfig
28
- } from "./chunk-ONM2AZFL.js";
28
+ } from "./chunk-PNV24SEP.js";
29
29
  import {
30
30
  logger_default
31
31
  } from "./chunk-T2TP6ZC6.js";
@@ -34,7 +34,7 @@ import {
34
34
  findMind,
35
35
  nextPort,
36
36
  voluteSystemDir
37
- } from "./chunk-YAMO2U3N.js";
37
+ } from "./chunk-H7IYFRAL.js";
38
38
 
39
39
  // packages/daemon/src/lib/mind/spirit.ts
40
40
  import { cpSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "fs";
@@ -130,7 +130,7 @@ async function ensureSpiritProject() {
130
130
  } catch (err) {
131
131
  slog.warn("failed to add tending schedule to spirit config", logger_default.errorData(err));
132
132
  }
133
- const { createMindUser, chownMindDir, ensureVoluteGroup } = await import("./isolation-5AYEY55P.js");
133
+ const { createMindUser, chownMindDir, ensureVoluteGroup } = await import("./isolation-5MB3J73F.js");
134
134
  ensureVoluteGroup();
135
135
  createMindUser("volute", resolve(dir, "home"));
136
136
  await chownMindDir(dir, "volute");
@@ -164,8 +164,8 @@ async function syncSpiritTemplate() {
164
164
  cpSync(newPkg, resolve(dir, "package.json"));
165
165
  await exec("npm", ["install"], { cwd: dir, env: npmEnv() });
166
166
  }
167
- const db = await (await import("./db-CZV62BOQ.js")).getDb();
168
- const { minds } = await import("./schema-LRUTFOER.js");
167
+ const db = await (await import("./db-JFLCJCUG.js")).getDb();
168
+ const { minds } = await import("./schema-PVNG3PQM.js");
169
169
  const { eq } = await import("drizzle-orm");
170
170
  await db.update(minds).set({ template: expectedTemplate }).where(eq(minds.name, "volute"));
171
171
  }
@@ -7,14 +7,14 @@ import {
7
7
  modeLabel,
8
8
  pollHealth,
9
9
  startService
10
- } from "./chunk-ATEX3ZPG.js";
10
+ } from "./chunk-Q2XBKQ2D.js";
11
11
  import {
12
12
  readGlobalConfig
13
- } from "./chunk-ONM2AZFL.js";
13
+ } from "./chunk-PNV24SEP.js";
14
14
  import {
15
15
  voluteHome,
16
16
  voluteSystemDir
17
- } from "./chunk-YAMO2U3N.js";
17
+ } from "./chunk-H7IYFRAL.js";
18
18
 
19
19
  // src/commands/up.ts
20
20
  import { spawn } from "child_process";
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  broadcast
4
- } from "./chunk-7G2EEYXX.js";
4
+ } from "./chunk-ZMIMSIIT.js";
5
5
  import {
6
6
  getDb
7
- } from "./chunk-YAMO2U3N.js";
7
+ } from "./chunk-H7IYFRAL.js";
8
8
  import {
9
9
  users
10
- } from "./chunk-L3IV23ZG.js";
10
+ } from "./chunk-ZV7MFISX.js";
11
11
 
12
12
  // packages/daemon/src/lib/auth.ts
13
13
  import { compareSync, hashSync } from "bcryptjs";
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  findBridgeForChannel,
4
4
  getBridgeConfig
5
- } from "./chunk-57LBQ7JX.js";
5
+ } from "./chunk-FHWUQZXE.js";
6
6
  import {
7
7
  recordOutbound
8
- } from "./chunk-4SVONUTC.js";
8
+ } from "./chunk-OMETFX5H.js";
9
9
  import {
10
10
  readEnv,
11
11
  sharedEnvPath
12
- } from "./chunk-XDTKJNW5.js";
12
+ } from "./chunk-5GT7URXJ.js";
13
13
  import {
14
14
  addMessage,
15
15
  findDMConversation,
@@ -17,21 +17,21 @@ import {
17
17
  getChannelName,
18
18
  getConversation,
19
19
  getParticipants
20
- } from "./chunk-K4EHBHPE.js";
20
+ } from "./chunk-FZMEVCWC.js";
21
21
  import {
22
22
  readVoluteConfig
23
23
  } from "./chunk-CU6OFXMM.js";
24
24
  import {
25
25
  publish
26
- } from "./chunk-Y6O35D7K.js";
26
+ } from "./chunk-NF75HPNR.js";
27
27
  import {
28
28
  daemonConfigPath,
29
29
  readDaemonToken
30
- } from "./chunk-ATEX3ZPG.js";
30
+ } from "./chunk-Q2XBKQ2D.js";
31
31
  import {
32
32
  getOrCreateMindUser,
33
33
  getUserByUsername
34
- } from "./chunk-EFL5UOY4.js";
34
+ } from "./chunk-CYI534DJ.js";
35
35
  import {
36
36
  logger_default
37
37
  } from "./chunk-T2TP6ZC6.js";
@@ -40,7 +40,7 @@ import {
40
40
  } from "./chunk-LGNUFVMR.js";
41
41
  import {
42
42
  mindDir
43
- } from "./chunk-YAMO2U3N.js";
43
+ } from "./chunk-H7IYFRAL.js";
44
44
  import {
45
45
  __export
46
46
  } from "./chunk-K3NQKI34.js";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-T2TP6ZC6.js";
5
5
  import {
6
6
  voluteSystemDir
7
- } from "./chunk-YAMO2U3N.js";
7
+ } from "./chunk-H7IYFRAL.js";
8
8
 
9
9
  // packages/daemon/src/lib/bridges/bridges.ts
10
10
  import { existsSync, readFileSync, writeFileSync } from "fs";
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  subscribe
4
- } from "./chunk-7G2EEYXX.js";
4
+ } from "./chunk-ZMIMSIIT.js";
5
5
  import {
6
6
  logger_default
7
7
  } from "./chunk-T2TP6ZC6.js";
8
8
  import {
9
9
  getDb
10
- } from "./chunk-YAMO2U3N.js";
10
+ } from "./chunk-H7IYFRAL.js";
11
11
  import {
12
12
  channels,
13
13
  conversationParticipants,
@@ -15,7 +15,7 @@ import {
15
15
  conversations,
16
16
  messages,
17
17
  users
18
- } from "./chunk-L3IV23ZG.js";
18
+ } from "./chunk-ZV7MFISX.js";
19
19
 
20
20
  // packages/daemon/src/lib/events/conversations.ts
21
21
  import { randomUUID } from "crypto";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  minds,
4
4
  schema_exports
5
- } from "./chunk-L3IV23ZG.js";
5
+ } from "./chunk-ZV7MFISX.js";
6
6
 
7
7
  // packages/daemon/src/lib/db.ts
8
8
  import { chmodSync, existsSync } from "fs";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  publish
4
- } from "./chunk-7G2EEYXX.js";
4
+ } from "./chunk-ZMIMSIIT.js";
5
5
  import {
6
6
  logger_default
7
7
  } from "./chunk-T2TP6ZC6.js";
@@ -2,11 +2,11 @@
2
2
  import {
3
3
  exec,
4
4
  gitExec
5
- } from "./chunk-PGPLCJPK.js";
5
+ } from "./chunk-3ERIL673.js";
6
6
  import {
7
7
  readGlobalConfig,
8
8
  writeGlobalConfig
9
- } from "./chunk-ONM2AZFL.js";
9
+ } from "./chunk-PNV24SEP.js";
10
10
  import {
11
11
  logger_default
12
12
  } from "./chunk-T2TP6ZC6.js";
@@ -15,10 +15,10 @@ import {
15
15
  mindDir,
16
16
  readRegistry,
17
17
  voluteHome
18
- } from "./chunk-YAMO2U3N.js";
18
+ } from "./chunk-H7IYFRAL.js";
19
19
  import {
20
20
  sharedSkills
21
- } from "./chunk-L3IV23ZG.js";
21
+ } from "./chunk-ZV7MFISX.js";
22
22
 
23
23
  // packages/daemon/src/lib/skills.ts
24
24
  import { createHash } from "crypto";
@@ -46,7 +46,7 @@ async function initDefaultSkills() {
46
46
  const config = readGlobalConfig();
47
47
  let extensionSkills = [];
48
48
  try {
49
- const { getExtensionStandardSkills } = await import("./extensions-PQPZT6LS.js");
49
+ const { getExtensionStandardSkills } = await import("./extensions-3QNDGW5E.js");
50
50
  extensionSkills = getExtensionStandardSkills();
51
51
  } catch (err) {
52
52
  logger_default.warn("failed to load extension standard skills during init", logger_default.errorData(err));
@@ -8,10 +8,10 @@ import {
8
8
  pollHealthDown,
9
9
  readDaemonConfig,
10
10
  stopService
11
- } from "./chunk-ATEX3ZPG.js";
11
+ } from "./chunk-Q2XBKQ2D.js";
12
12
  import {
13
13
  voluteSystemDir
14
- } from "./chunk-YAMO2U3N.js";
14
+ } from "./chunk-H7IYFRAL.js";
15
15
 
16
16
  // src/commands/down.ts
17
17
  import { existsSync, readFileSync, unlinkSync } from "fs";
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  readGlobalConfig,
4
4
  writeGlobalConfig
5
- } from "./chunk-ONM2AZFL.js";
5
+ } from "./chunk-PNV24SEP.js";
6
6
  import {
7
7
  logger_default
8
8
  } from "./chunk-T2TP6ZC6.js";
@@ -14,11 +14,13 @@ function initDb(db) {
14
14
  CREATE UNIQUE INDEX IF NOT EXISTS idx_pp_mind_file ON published_pages(mind, file);
15
15
  CREATE INDEX IF NOT EXISTS idx_pp_updated_at ON published_pages(updated_at);
16
16
  `);
17
- try {
18
- db.exec("ALTER TABLE published_pages ADD COLUMN author TEXT");
19
- } catch (err) {
20
- if (!(err instanceof Error) || !err.message.includes("duplicate column")) {
21
- throw err;
17
+ for (const column of ["author TEXT", "hash TEXT"]) {
18
+ try {
19
+ db.exec(`ALTER TABLE published_pages ADD COLUMN ${column}`);
20
+ } catch (err) {
21
+ if (!(err instanceof Error) || !err.message.includes("duplicate column")) {
22
+ throw err;
23
+ }
22
24
  }
23
25
  }
24
26
  }
@@ -63,32 +65,31 @@ function getSystemPages(db) {
63
65
  files: rows.map((r) => ({ file: r.file, updated_at: r.updated_at, author: r.author }))
64
66
  };
65
67
  }
66
- function syncSystemPages(db, htmlFiles, author) {
67
- const existing = new Set(
68
- db.prepare("SELECT file FROM published_pages WHERE mind = '_system'").all().map((r) => r.file)
68
+ function syncSystemPages(db, pages, author) {
69
+ const existing = new Map(
70
+ db.prepare("SELECT file, hash FROM published_pages WHERE mind = '_system'").all().map((r) => [r.file, r.hash])
69
71
  );
70
- const newSet = new Set(htmlFiles);
72
+ const newSet = new Set(pages.map((p) => p.file));
71
73
  db.exec("BEGIN");
72
74
  try {
73
- for (const file of htmlFiles) {
74
- if (existing.has(file)) {
75
+ for (const { file, hash } of pages) {
76
+ if (!existing.has(file)) {
77
+ db.prepare(
78
+ "INSERT INTO published_pages (mind, file, hash, author) VALUES ('_system', ?, ?, ?)"
79
+ ).run(file, hash, author ?? null);
80
+ } else if (existing.get(file) !== hash) {
75
81
  if (author) {
76
82
  db.prepare(
77
- "UPDATE published_pages SET updated_at = datetime('now'), author = ? WHERE mind = '_system' AND file = ?"
78
- ).run(author, file);
83
+ "UPDATE published_pages SET updated_at = datetime('now'), hash = ?, author = ? WHERE mind = '_system' AND file = ?"
84
+ ).run(hash, author, file);
79
85
  } else {
80
86
  db.prepare(
81
- "UPDATE published_pages SET updated_at = datetime('now') WHERE mind = '_system' AND file = ?"
82
- ).run(file);
87
+ "UPDATE published_pages SET updated_at = datetime('now'), hash = ? WHERE mind = '_system' AND file = ?"
88
+ ).run(hash, file);
83
89
  }
84
- } else {
85
- db.prepare("INSERT INTO published_pages (mind, file, author) VALUES ('_system', ?, ?)").run(
86
- file,
87
- author ?? null
88
- );
89
90
  }
90
91
  }
91
- for (const file of existing) {
92
+ for (const file of existing.keys()) {
92
93
  if (!newSet.has(file)) {
93
94
  db.prepare("DELETE FROM published_pages WHERE mind = '_system' AND file = ?").run(file);
94
95
  }
@@ -99,28 +100,32 @@ function syncSystemPages(db, htmlFiles, author) {
99
100
  throw err;
100
101
  }
101
102
  }
102
- function syncPublishedPages(db, mind, pageFiles) {
103
+ function syncPublishedPages(db, mind, pages) {
103
104
  const existing = new Map(
104
- db.prepare("SELECT file, updated_at FROM published_pages WHERE mind = ?").all(mind).map((r) => [r.file, r.updated_at])
105
+ db.prepare("SELECT file, hash FROM published_pages WHERE mind = ?").all(mind).map((r) => [r.file, r.hash])
105
106
  );
106
- const newSet = new Set(pageFiles);
107
+ const newSet = new Set(pages.map((p) => p.file));
107
108
  const added = [];
108
109
  const updated = [];
109
110
  const removed = [];
110
111
  db.exec("BEGIN");
111
112
  try {
112
- for (const file of pageFiles) {
113
- if (existing.has(file)) {
113
+ for (const { file, hash } of pages) {
114
+ if (!existing.has(file)) {
115
+ db.prepare("INSERT INTO published_pages (mind, file, hash) VALUES (?, ?, ?)").run(
116
+ mind,
117
+ file,
118
+ hash
119
+ );
120
+ added.push(file);
121
+ } else if (existing.get(file) !== hash) {
114
122
  db.prepare(
115
- "UPDATE published_pages SET updated_at = datetime('now') WHERE mind = ? AND file = ?"
116
- ).run(mind, file);
123
+ "UPDATE published_pages SET updated_at = datetime('now'), hash = ? WHERE mind = ? AND file = ?"
124
+ ).run(hash, mind, file);
117
125
  updated.push(file);
118
- } else {
119
- db.prepare("INSERT INTO published_pages (mind, file) VALUES (?, ?)").run(mind, file);
120
- added.push(file);
121
126
  }
122
127
  }
123
- for (const [file] of existing) {
128
+ for (const file of existing.keys()) {
124
129
  if (!newSet.has(file)) {
125
130
  db.prepare("DELETE FROM published_pages WHERE mind = ? AND file = ?").run(mind, file);
126
131
  removed.push(file);
@@ -3,10 +3,10 @@ import {
3
3
  LAUNCHD_PLIST_LABEL,
4
4
  LAUNCHD_PLIST_PATH,
5
5
  USER_SYSTEMD_UNIT
6
- } from "./chunk-ATEX3ZPG.js";
6
+ } from "./chunk-Q2XBKQ2D.js";
7
7
  import {
8
8
  resolveVoluteBin
9
- } from "./chunk-PGPLCJPK.js";
9
+ } from "./chunk-3ERIL673.js";
10
10
 
11
11
  // packages/daemon/src/lib/config/service-install.ts
12
12
  import { execFile } from "child_process";
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  setBridgeConfig
4
- } from "./chunk-57LBQ7JX.js";
4
+ } from "./chunk-FHWUQZXE.js";
5
5
  import {
6
6
  readEnv,
7
7
  sharedEnvPath,
8
8
  writeEnv
9
- } from "./chunk-XDTKJNW5.js";
9
+ } from "./chunk-5GT7URXJ.js";
10
10
 
11
11
  // packages/daemon/src/lib/template/import-utils.ts
12
12
  import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from "fs";
@@ -1,20 +1,20 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  aiCompleteUtility
4
- } from "./chunk-YSV3VJQK.js";
4
+ } from "./chunk-J47TIYHA.js";
5
5
  import {
6
6
  logger_default
7
7
  } from "./chunk-T2TP6ZC6.js";
8
8
  import {
9
9
  getDb
10
- } from "./chunk-YAMO2U3N.js";
10
+ } from "./chunk-H7IYFRAL.js";
11
11
  import {
12
12
  messages,
13
13
  mindHistory,
14
14
  summaries,
15
15
  systemPrompts,
16
16
  turns
17
- } from "./chunk-L3IV23ZG.js";
17
+ } from "./chunk-ZV7MFISX.js";
18
18
 
19
19
  // packages/daemon/src/lib/daemon/turn-tracker.ts
20
20
  import { randomUUID } from "crypto";
@@ -1013,11 +1013,11 @@ var Summarizer = class {
1013
1013
  }
1014
1014
  };
1015
1015
  async function reconcileWedgedTurns(idleMs) {
1016
- const { sweepWedgedTurns: sweepWedgedTurns2, summarizeOrphanedTurns: summarizeOrphanedTurns2 } = await import("./turn-tracker-JZYERJ76.js");
1016
+ const { sweepWedgedTurns: sweepWedgedTurns2, summarizeOrphanedTurns: summarizeOrphanedTurns2 } = await import("./turn-tracker-RWZMY7M6.js");
1017
1017
  const wedged = await sweepWedgedTurns2(idleMs);
1018
1018
  if (wedged.length === 0) return;
1019
1019
  summarizeOrphanedTurns2(wedged);
1020
- const { tryGetDeliveryManager } = await import("./delivery-manager-OMCCJEVP.js");
1020
+ const { tryGetDeliveryManager } = await import("./delivery-manager-TEVOHX5W.js");
1021
1021
  const dm = tryGetDeliveryManager();
1022
1022
  if (!dm) return;
1023
1023
  for (const t of wedged) {