volute 0.45.1 → 0.46.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 (120) hide show
  1. package/README.md +3 -3
  2. package/dist/{activity-events-OMCSM7XW.js → activity-events-NF6VWTJQ.js} +2 -2
  3. package/dist/{ai-service-534WUSDL.js → ai-service-UODCCE4O.js} +3 -3
  4. package/dist/{archive-6R4TZMYI.js → archive-WS2L2VIQ.js} +2 -2
  5. package/dist/{auth-FRZJVQCS.js → auth-CCFAU4GQ.js} +3 -3
  6. package/dist/{avatar-image-BNWEXSA2.js → avatar-image-6KY6UU4D.js} +3 -3
  7. package/dist/{backup-OZXHL3JS.js → backup-TST5C2YN.js} +7 -7
  8. package/dist/{chat-I4EDDIQC.js → chat-ZIQQS25U.js} +2 -2
  9. package/dist/{chunk-ZIR7HSAX.js → chunk-4JOQZPCE.js} +1 -1
  10. package/dist/chunk-4YU7HF4L.js +237 -0
  11. package/dist/{chunk-JSRMEY52.js → chunk-5ZQZDDIK.js} +10 -5
  12. package/dist/{chunk-2BONPXAF.js → chunk-6EMWJZBK.js} +1 -1
  13. package/dist/{chunk-LAXUUY7O.js → chunk-A7WQZKOU.js} +2 -2
  14. package/dist/{chunk-H7IYFRAL.js → chunk-ALKYQULU.js} +10 -5
  15. package/dist/{chunk-5AUKCNPE.js → chunk-BJZ4PV7R.js} +8 -8
  16. package/dist/{chunk-KP3KWNG6.js → chunk-CDPBTTZO.js} +2 -2
  17. package/dist/{chunk-SQL7M4HJ.js → chunk-DRJ24GXK.js} +2 -2
  18. package/dist/{chunk-77BVGCTZ.js → chunk-E3DA4HYV.js} +9 -9
  19. package/dist/{chunk-322KE457.js → chunk-F7H6ATM4.js} +1 -1
  20. package/dist/{chunk-KVKP6VQ5.js → chunk-FXORA5JG.js} +12 -3
  21. package/dist/{chunk-3ERIL673.js → chunk-H2X54EHC.js} +1 -1
  22. package/dist/{chunk-TSK5PI4L.js → chunk-IHKGWTGT.js} +1 -1
  23. package/dist/{chunk-U4FNXDEJ.js → chunk-JO5IO4FH.js} +422 -168
  24. package/dist/{chunk-OXXTPILE.js → chunk-JZ62SYWR.js} +1 -1
  25. package/dist/{chunk-IUXTYXFI.js → chunk-K6T43YBD.js} +3 -3
  26. package/dist/{chunk-Y6OPHHGM.js → chunk-KGIXX4NM.js} +4 -4
  27. package/dist/{chunk-HVU45COX.js → chunk-KQSFTPIM.js} +1 -1
  28. package/dist/{chunk-CYI534DJ.js → chunk-OV7ZQ2GH.js} +2 -2
  29. package/dist/{chunk-CU6OFXMM.js → chunk-PFZBNKUH.js} +9 -0
  30. package/dist/{clock-K43IMROX.js → chunk-PJ45FQPT.js} +21 -16
  31. package/dist/{chunk-QMJJWTNL.js → chunk-QCN24XEN.js} +1 -1
  32. package/dist/{chunk-UMI4UIJG.js → chunk-R77O2WMK.js} +1 -1
  33. package/dist/{chunk-IEWZ7VD7.js → chunk-RRNXJOKB.js} +2 -2
  34. package/dist/{chunk-FHWUQZXE.js → chunk-RXEEYDIB.js} +1 -1
  35. package/dist/{chunk-Q2XBKQ2D.js → chunk-TQJ6ZYVY.js} +2 -2
  36. package/dist/{chunk-V4GYPD5L.js → chunk-YXSUMLTC.js} +46 -269
  37. package/dist/{chunk-5GT7URXJ.js → chunk-ZDZISKCL.js} +1 -1
  38. package/dist/{chunk-ZMIMSIIT.js → chunk-ZNMCCHCP.js} +48 -2
  39. package/dist/cli.js +20 -20
  40. package/dist/clock-RHS2JEDL.js +16 -0
  41. package/dist/{cloud-sync-Y7LQPRE3.js → cloud-sync-46RS4SDA.js} +17 -16
  42. package/dist/{conversations-G4LYMHAA.js → conversations-CJOOCGNW.js} +3 -3
  43. package/dist/{create-2YY7IPMS.js → create-IOV4GCRX.js} +1 -1
  44. package/dist/{daemon-restart-ABP54YN6.js → daemon-restart-VFEI57UO.js} +6 -6
  45. package/dist/daemon.js +392 -270
  46. package/dist/{db-JFLCJCUG.js → db-MF2JNRUW.js} +1 -1
  47. package/dist/{delete-BFMIGAIB.js → delete-HPLC7ETU.js} +1 -1
  48. package/dist/delivery-manager-JINZRG2W.js +33 -0
  49. package/dist/{delivery-router-6DE3BPHO.js → delivery-router-N4A7ZC5T.js} +2 -2
  50. package/dist/{down-XCAZXWLB.js → down-U2CZ23M4.js} +4 -4
  51. package/dist/echo-text-VQPB5L2X.js +33 -0
  52. package/dist/{exec-4GWHAHS3.js → exec-G3ZRST4Z.js} +2 -2
  53. package/dist/{export-ID7YUSLZ.js → export-LY723I3Z.js} +5 -5
  54. package/dist/{extensions-AYSPKE33.js → extensions-ZELQLTSR.js} +17 -16
  55. package/dist/{files-BQ2WB5KC.js → files-4LN3EN7Q.js} +2 -2
  56. package/dist/{import-SKID37QX.js → import-42YNQBF4.js} +5 -5
  57. package/dist/{isolation-5MB3J73F.js → isolation-YMGZZ4E5.js} +2 -2
  58. package/dist/{join-RXPXGV4L.js → join-ZJV7W6MO.js} +4 -0
  59. package/dist/{login-LM4NF4ZB.js → login-M6OJUPQ2.js} +1 -1
  60. package/dist/{logout-CTJVIZGA.js → logout-WQBWO77G.js} +1 -1
  61. package/dist/message-delivery-R7JSQGYX.js +37 -0
  62. package/dist/{mind-KLHC7XYR.js → mind-LHKS55DI.js} +12 -12
  63. package/dist/{mind-activity-tracker-BGHJE7XA.js → mind-activity-tracker-3QRNJVR4.js} +3 -3
  64. package/dist/mind-service-NB2JMWQZ.js +39 -0
  65. package/dist/mind-sleep-74TGOQBC.js +83 -0
  66. package/dist/{package-BMHV7UHN.js → package-DOD6CPO6.js} +2 -1
  67. package/dist/{registry-NUJAGLQJ.js → registry-OUZBZ3Q4.js} +5 -1
  68. package/dist/{sandbox-72MWV4JL.js → sandbox-ZJ7QA6Z6.js} +3 -3
  69. package/dist/scheduler-WVKII3LA.js +31 -0
  70. package/dist/{seed-4MKQ5QKG.js → seed-CNYIHPOH.js} +1 -1
  71. package/dist/{seed-cmd-LCXMR7VV.js → seed-cmd-AVNUNLZV.js} +2 -2
  72. package/dist/{seed-create-N2BF5LQX.js → seed-create-ANXGYSCC.js} +5 -5
  73. package/dist/{seed-sprout-6ZDP23YI.js → seed-sprout-NIUFTX32.js} +10 -8
  74. package/dist/{send-O6W53VBM.js → send-SPE6DVNJ.js} +8 -2
  75. package/dist/{service-AQVPUANO.js → service-UOCLXDWR.js} +3 -3
  76. package/dist/{service-install-4QNUDKLM.js → service-install-4HHFDDWY.js} +4 -4
  77. package/dist/{setup-3O6O2JZ7.js → setup-QT2A25SY.js} +6 -6
  78. package/dist/{setup-73YBJZQL.js → setup-Y2EJI3GG.js} +2 -2
  79. package/dist/skills/imagegen/scripts/imagegen.ts +100 -40
  80. package/dist/skills/orientation/SKILL.md +1 -1
  81. package/dist/skills/volute-mind/SKILL.md +13 -9
  82. package/dist/skills/volute-mind/references/sleep.md +8 -1
  83. package/dist/{skills-ND4ZFYUW.js → skills-AKCFA7BN.js} +4 -4
  84. package/dist/sleep-manager-G6TXSDP7.js +35 -0
  85. package/dist/{spirit-II3HOERM.js → spirit-RPBLLUQ5.js} +7 -7
  86. package/dist/{sprout-4KUG76AQ.js → sprout-SMX42ZBP.js} +1 -1
  87. package/dist/{src-XFY3XDD6.js → src-OJHARHTF.js} +28 -17
  88. package/dist/{status-E5DQNCAO.js → status-SWRVGXBI.js} +4 -4
  89. package/dist/system-chat-NDAW6YP7.js +37 -0
  90. package/dist/{tailscale-QAWVKQKU.js → tailscale-3XOKOW7T.js} +1 -1
  91. package/dist/{turn-tracker-QQIVVXBI.js → turn-tracker-FOIBNUUA.js} +5 -4
  92. package/dist/{up-LG56MPBI.js → up-PS6PFS75.js} +5 -5
  93. package/dist/{update-7TYVH5FM.js → update-SWAYZRWJ.js} +4 -4
  94. package/dist/{update-check-VSCSJ7KX.js → update-check-PQ2MZ47K.js} +2 -2
  95. package/dist/{version-notify-CODJOUW2.js → version-notify-C5CH7CVP.js} +24 -19
  96. package/dist/{volute-config-TS62GS6A.js → volute-config-A52FHWKM.js} +5 -1
  97. package/dist/web-assets/assets/{index-Dac11sKB.js → index-CU6XWICM.js} +15 -15
  98. package/dist/web-assets/index.html +1 -1
  99. package/package.json +2 -1
  100. package/templates/_base/home/VOLUTE.md +6 -2
  101. package/templates/_base/src/lib/context-breakdown.ts +57 -67
  102. package/templates/_base/src/lib/file-handler.ts +3 -3
  103. package/templates/_base/src/lib/router.ts +21 -25
  104. package/templates/_base/src/lib/startup.ts +2 -0
  105. package/templates/_base/src/lib/types.ts +2 -2
  106. package/templates/_base/src/lib/volute-server.ts +2 -2
  107. package/templates/claude/src/agent.ts +147 -46
  108. package/templates/claude/src/lib/message-channel.ts +23 -0
  109. package/templates/claude/src/lib/session-reaper.ts +68 -0
  110. package/templates/claude/src/server.ts +1 -0
  111. package/templates/codex/src/agent.ts +80 -46
  112. package/templates/pi/src/agent.ts +73 -45
  113. package/dist/delivery-manager-R5STGLXB.js +0 -32
  114. package/dist/echo-text-NQXYYYCU.js +0 -32
  115. package/dist/message-delivery-IUAXRPFE.js +0 -34
  116. package/dist/mind-service-BF2LUQMH.js +0 -36
  117. package/dist/mind-sleep-YMBR3I35.js +0 -47
  118. package/dist/scheduler-YHJRRV6E.js +0 -30
  119. package/dist/sleep-manager-YAHDOIU5.js +0 -34
  120. package/dist/system-chat-E65T2HSW.js +0 -34
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  readGlobalConfig
4
- } from "./chunk-322KE457.js";
4
+ } from "./chunk-F7H6ATM4.js";
5
5
  import {
6
6
  logger_default
7
7
  } from "./chunk-T2TP6ZC6.js";
@@ -7,14 +7,14 @@ import {
7
7
  modeLabel,
8
8
  pollHealth,
9
9
  startService
10
- } from "./chunk-Q2XBKQ2D.js";
10
+ } from "./chunk-TQJ6ZYVY.js";
11
11
  import {
12
12
  readGlobalConfig
13
- } from "./chunk-322KE457.js";
13
+ } from "./chunk-F7H6ATM4.js";
14
14
  import {
15
15
  voluteHome,
16
16
  voluteSystemDir
17
- } from "./chunk-H7IYFRAL.js";
17
+ } from "./chunk-ALKYQULU.js";
18
18
 
19
19
  // src/commands/up.ts
20
20
  import { spawn } from "child_process";
@@ -2,11 +2,11 @@
2
2
  import {
3
3
  exec,
4
4
  gitExec
5
- } from "./chunk-3ERIL673.js";
5
+ } from "./chunk-H2X54EHC.js";
6
6
  import {
7
7
  readGlobalConfig,
8
8
  writeGlobalConfig
9
- } from "./chunk-322KE457.js";
9
+ } from "./chunk-F7H6ATM4.js";
10
10
  import {
11
11
  logger_default
12
12
  } from "./chunk-T2TP6ZC6.js";
@@ -15,7 +15,7 @@ import {
15
15
  mindDir,
16
16
  readRegistry,
17
17
  voluteHome
18
- } from "./chunk-H7IYFRAL.js";
18
+ } from "./chunk-ALKYQULU.js";
19
19
  import {
20
20
  sharedSkills
21
21
  } from "./chunk-ZV7MFISX.js";
@@ -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-AYSPKE33.js");
49
+ const { getExtensionStandardSkills } = await import("./extensions-ZELQLTSR.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));
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  publish
4
- } from "./chunk-ZMIMSIIT.js";
4
+ } from "./chunk-ZNMCCHCP.js";
5
5
  import {
6
6
  logger_default
7
7
  } from "./chunk-T2TP6ZC6.js";
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  broadcast
4
- } from "./chunk-ZMIMSIIT.js";
4
+ } from "./chunk-ZNMCCHCP.js";
5
5
  import {
6
6
  getDb
7
- } from "./chunk-H7IYFRAL.js";
7
+ } from "./chunk-ALKYQULU.js";
8
8
  import {
9
9
  users
10
10
  } from "./chunk-ZV7MFISX.js";
@@ -3,6 +3,13 @@
3
3
  // packages/daemon/src/lib/mind/volute-config.ts
4
4
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
5
5
  import { dirname, resolve } from "path";
6
+ var WAKE_TRIGGER_DEFAULTS = { mentions: true, dms: true };
7
+ function resolveWakeTriggers(triggers) {
8
+ return {
9
+ mentions: triggers?.mentions ?? WAKE_TRIGGER_DEFAULTS.mentions,
10
+ dms: triggers?.dms ?? WAKE_TRIGGER_DEFAULTS.dms
11
+ };
12
+ }
6
13
  function readJson(path) {
7
14
  if (!existsSync(path)) return null;
8
15
  try {
@@ -24,6 +31,8 @@ function writeVoluteConfig(mindDir, config) {
24
31
  }
25
32
 
26
33
  export {
34
+ WAKE_TRIGGER_DEFAULTS,
35
+ resolveWakeTriggers,
27
36
  readVoluteConfig,
28
37
  writeVoluteConfig
29
38
  };
@@ -17,8 +17,6 @@ import {
17
17
  command,
18
18
  subcommands
19
19
  } from "./chunk-TXSA4Q3V.js";
20
- import "./chunk-O7IGP7ZW.js";
21
- import "./chunk-K3NQKI34.js";
22
20
 
23
21
  // packages/cli/src/commands/clock.ts
24
22
  import { CronExpressionParser } from "cron-parser";
@@ -52,8 +50,12 @@ var clockStatusCmd = command({
52
50
  const compact = isCompact();
53
51
  const fmtTime = (s) => compact ? compactDateTime(s) : new Date(s).toLocaleString();
54
52
  if (status.sleep?.sleeping) {
55
- const since = status.sleep.sleepingSince ? fmtTime(status.sleep.sleepingSince) : "unknown";
56
- console.log(`Sleep: sleeping since ${since}`);
53
+ if (status.sleep.wokenByTrigger) {
54
+ console.log("Sleep: briefly awake (trigger) \u2014 returns to sleep when idle");
55
+ } else {
56
+ const since = status.sleep.sleepingSince ? fmtTime(status.sleep.sleepingSince) : "unknown";
57
+ console.log(`Sleep: sleeping since ${since}`);
58
+ }
57
59
  if (status.sleep.scheduledWakeAt) {
58
60
  console.log(` Wake at: ${fmtTime(status.sleep.scheduledWakeAt)}`);
59
61
  }
@@ -76,8 +78,9 @@ var clockStatusCmd = command({
76
78
  console.log("Upcoming (next 24h):");
77
79
  for (const u of status.upcoming) {
78
80
  const time = fmtTime(u.at);
79
- const label = u.type === "timer" ? "[timer]" : "[cron]";
80
- console.log(` ${u.id.padEnd(20)} ${label} ${time}`);
81
+ const label = u.type === "timer" ? "[once]" : "[cron]";
82
+ const suffix = u.willSkip ? " [will skip: sleeping]" : u.willQueue ? " [will queue: sleeping]" : "";
83
+ console.log(` ${u.id.padEnd(20)} ${label} ${time}${suffix}`);
81
84
  }
82
85
  } else {
83
86
  if (!compact) console.log("");
@@ -91,7 +94,7 @@ ${status.schedules.length} schedule(s) configured.`);
91
94
  });
92
95
  var listSchedulesCmd = command({
93
96
  name: "volute clock list",
94
- description: "List schedules and timers",
97
+ description: "List schedules",
95
98
  flags: {
96
99
  mind: { type: "string", description: "Mind name" }
97
100
  },
@@ -132,14 +135,14 @@ var listSchedulesCmd = command({
132
135
  });
133
136
  var addScheduleCmd = command({
134
137
  name: "volute clock add",
135
- description: "Add a schedule or timer",
138
+ description: "Add a schedule (recurring --cron or one-time --in)",
136
139
  flags: {
137
140
  mind: { type: "string", description: "Mind name" },
138
141
  cron: { type: "string", description: "Cron expression" },
139
142
  in: { type: "string", description: "Duration (e.g. 30s, 10m, 1h)" },
140
143
  message: { type: "string", description: "Message to send" },
141
144
  script: { type: "string", description: "Script to run" },
142
- id: { type: "string", description: "Schedule ID (required)" },
145
+ id: { type: "string", description: "Unique name for this schedule (required)" },
143
146
  session: { type: "string", description: "Session name" },
144
147
  "while-sleeping": {
145
148
  type: "string",
@@ -216,7 +219,7 @@ var addScheduleCmd = command({
216
219
  }
217
220
  const data = await res.json();
218
221
  if (flags.in) {
219
- console.log(`Timer set: ${data.id} (fires in ${flags.in})`);
222
+ console.log(`Schedule added: ${data.id} (fires once in ${flags.in})`);
220
223
  } else {
221
224
  console.log(`Schedule added: ${data.id}`);
222
225
  }
@@ -224,7 +227,7 @@ var addScheduleCmd = command({
224
227
  });
225
228
  var removeScheduleCmd = command({
226
229
  name: "volute clock remove",
227
- description: "Remove a schedule or timer",
230
+ description: "Remove a schedule",
228
231
  flags: {
229
232
  mind: { type: "string", description: "Mind name" },
230
233
  id: { type: "string", description: "Schedule ID (required)" }
@@ -254,27 +257,27 @@ var removeScheduleCmd = command({
254
257
  });
255
258
  var cmd = subcommands({
256
259
  name: "volute clock",
257
- description: "Manage schedules, timers, and sleep/wake cycles",
260
+ description: "Manage schedules and sleep/wake cycles",
258
261
  commands: {
259
262
  status: {
260
263
  description: "Show sleep state and upcoming schedule fires",
261
264
  run: clockStatusCmd.execute
262
265
  },
263
266
  list: {
264
- description: "List schedules and timers",
267
+ description: "List schedules",
265
268
  run: listSchedulesCmd.execute
266
269
  },
267
270
  add: {
268
- description: "Add a schedule or timer",
271
+ description: "Add a schedule (recurring --cron or one-time --in)",
269
272
  run: addScheduleCmd.execute
270
273
  },
271
274
  remove: {
272
- description: "Remove a schedule or timer",
275
+ description: "Remove a schedule",
273
276
  run: removeScheduleCmd.execute
274
277
  },
275
278
  sleep: {
276
279
  description: "Put a mind to sleep",
277
- run: (args) => import("./mind-sleep-YMBR3I35.js").then((m) => m.run(args))
280
+ run: (args) => import("./mind-sleep-74TGOQBC.js").then((m) => m.run(args))
278
281
  },
279
282
  wake: {
280
283
  description: "Wake a sleeping mind",
@@ -284,6 +287,8 @@ var cmd = subcommands({
284
287
  footer: "Use --mind <name> or VOLUTE_MIND to identify the mind."
285
288
  });
286
289
  var run = cmd.execute;
290
+
287
291
  export {
292
+ parseDuration,
288
293
  run
289
294
  };
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  mindDir,
4
4
  stateDir
5
- } from "./chunk-H7IYFRAL.js";
5
+ } from "./chunk-ALKYQULU.js";
6
6
 
7
7
  // packages/daemon/src/lib/mind/archive.ts
8
8
  import { execFileSync } from "child_process";
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  stateDir
4
- } from "./chunk-H7IYFRAL.js";
4
+ } from "./chunk-ALKYQULU.js";
5
5
 
6
6
  // packages/daemon/src/lib/chat/file-sharing.ts
7
7
  import { randomBytes } from "crypto";
@@ -8,10 +8,10 @@ import {
8
8
  pollHealthDown,
9
9
  readDaemonConfig,
10
10
  stopService
11
- } from "./chunk-Q2XBKQ2D.js";
11
+ } from "./chunk-TQJ6ZYVY.js";
12
12
  import {
13
13
  voluteSystemDir
14
- } from "./chunk-H7IYFRAL.js";
14
+ } from "./chunk-ALKYQULU.js";
15
15
 
16
16
  // src/commands/down.ts
17
17
  import { existsSync, readFileSync, unlinkSync } from "fs";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-T2TP6ZC6.js";
5
5
  import {
6
6
  voluteSystemDir
7
- } from "./chunk-H7IYFRAL.js";
7
+ } from "./chunk-ALKYQULU.js";
8
8
 
9
9
  // packages/daemon/src/lib/bridges/bridges.ts
10
10
  import { existsSync, readFileSync, writeFileSync } from "fs";
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  exec,
4
4
  execInherit
5
- } from "./chunk-3ERIL673.js";
5
+ } from "./chunk-H2X54EHC.js";
6
6
  import {
7
7
  voluteSystemDir
8
- } from "./chunk-H7IYFRAL.js";
8
+ } from "./chunk-ALKYQULU.js";
9
9
 
10
10
  // packages/daemon/src/lib/config/service-mode.ts
11
11
  import { execFileSync } from "child_process";