volute 0.29.0 → 0.30.1

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 (122) hide show
  1. package/README.md +112 -13
  2. package/dist/{accept-666DIZX2.js → accept-E3PAH3QJ.js} +2 -2
  3. package/dist/{activity-events-BBIEA2F4.js → activity-events-BKBPPUBP.js} +2 -2
  4. package/dist/ai-service-VAJT5UBS.js +29 -0
  5. package/dist/api.d.ts +351 -477
  6. package/dist/{archive-UA4BDFXQ.js → archive-WWDBWYN2.js} +2 -2
  7. package/dist/{bridge-FQHZL3MC.js → bridge-RO37CUFM.js} +2 -2
  8. package/dist/{chat-KTPOR2JT.js → chat-TCUNPFGO.js} +8 -8
  9. package/dist/{chunk-FLZGS4QH.js → chunk-2C2VXEBB.js} +2 -2
  10. package/dist/chunk-2NDZC3S7.js +1330 -0
  11. package/dist/{chunk-IKRVFPWU.js → chunk-7D47T4RB.js} +3 -2
  12. package/dist/{chunk-AW7PFDVN.js → chunk-CVH6Y2YG.js} +1 -1
  13. package/dist/{chunk-XBLSAVJF.js → chunk-DTC6EH5I.js} +1 -1
  14. package/dist/{chunk-THUUIU3E.js → chunk-EFP3PE6C.js} +5 -5
  15. package/dist/{chunk-JGFVMROS.js → chunk-EFVHR7KH.js} +1 -1
  16. package/dist/{chunk-CQ7SNKNI.js → chunk-FSM45XD5.js} +1 -1
  17. package/dist/{chunk-LAC664WU.js → chunk-FXHXHI2A.js} +42 -24
  18. package/dist/{chunk-RKQEHRBB.js → chunk-G3GBKZGG.js} +1 -1
  19. package/dist/{chunk-H7OZRFJB.js → chunk-HHTXM4JT.js} +0 -49
  20. package/dist/{chunk-J4IBNXGJ.js → chunk-IKHDUZRH.js} +4 -3
  21. package/dist/{chunk-MD4C26II.js → chunk-JGFRDMR6.js} +1 -1
  22. package/dist/{chunk-EHZKEMMV.js → chunk-LIRWLNAK.js} +24 -10
  23. package/dist/{chunk-NI5FFCCS.js → chunk-MDPCSXZ4.js} +35 -11
  24. package/dist/chunk-NSBFETWP.js +188 -0
  25. package/dist/{chunk-VIVMW2H2.js → chunk-P27RV5WM.js} +1 -1
  26. package/dist/{chunk-EHYDTZTF.js → chunk-P7VFDSSG.js} +2 -2
  27. package/dist/{chunk-CMILSHZD.js → chunk-QVAQ5454.js} +84 -300
  28. package/dist/{chunk-HDN7MNGD.js → chunk-S5LR3XYJ.js} +1 -1
  29. package/dist/{chunk-2YP2TVDT.js → chunk-UPA6COHU.js} +5 -5
  30. package/dist/{chunk-AKPFNL7L.js → chunk-VGWJSNHS.js} +1 -1
  31. package/dist/{chunk-DUAUMCEE.js → chunk-W5OOPLNP.js} +3 -3
  32. package/dist/{chunk-2WPW7OT6.js → chunk-ZWKTUQEL.js} +1 -1
  33. package/dist/cli.js +22 -26
  34. package/dist/{clock-DGCBVGYA.js → clock-G3ALCMLJ.js} +10 -6
  35. package/dist/{cloud-sync-KILFGV5Q.js → cloud-sync-JV4LJOK3.js} +13 -12
  36. package/dist/{conversations-P5BL7RMX.js → conversations-7KVQV7EZ.js} +3 -3
  37. package/dist/{create-DFCAGEE5.js → create-JTLS7GX3.js} +2 -2
  38. package/dist/{create-QWV73WXD.js → create-VQSQHJQW.js} +1 -1
  39. package/dist/{daemon-client-I42FK2BF.js → daemon-client-BCTFGVCZ.js} +2 -2
  40. package/dist/{daemon-restart-UHOMICXT.js → daemon-restart-4JGBHEJ4.js} +7 -7
  41. package/dist/daemon.js +1257 -1022
  42. package/dist/{db-IC4J52XQ.js → db-HMFPIRO2.js} +1 -1
  43. package/dist/{delete-4JYGD4VN.js → delete-JESHKE7F.js} +1 -1
  44. package/dist/down-NGBMGORS.js +14 -0
  45. package/dist/{env-YJMUMFIY.js → env-CLXXT7M2.js} +2 -2
  46. package/dist/{export-BOJQWBMA.js → export-EGA5M5PB.js} +3 -3
  47. package/dist/extension-WZ4SUPJB.js +174 -0
  48. package/dist/extensions-ECO4RPFQ.js +27 -0
  49. package/dist/{files-M546TKVN.js → files-4VEJDASH.js} +3 -3
  50. package/dist/{history-ALPTNB3I.js → history-EJMMLXDO.js} +17 -2
  51. package/dist/{import-SRTQXBGH.js → import-YCGPMBSI.js} +3 -3
  52. package/dist/{join-J4QU42DL.js → join-2GBJKZEN.js} +1 -1
  53. package/dist/{list-R73GENNL.js → list-Q6O7FGAN.js} +2 -2
  54. package/dist/{login-3QZNR2DF.js → login-RET5WESK.js} +2 -2
  55. package/dist/{login-BKP3AFWN.js → login-RL6AU2SM.js} +3 -3
  56. package/dist/{logout-T53VKCPU.js → logout-CGAGJN3L.js} +2 -2
  57. package/dist/{logout-IQK7FNEK.js → logout-JRPBEMMR.js} +3 -3
  58. package/dist/message-delivery-6YMVNOEC.js +28 -0
  59. package/dist/{migrate-registry-to-db-XC7T5B7P.js → migrate-registry-to-db-FK35IPEH.js} +1 -1
  60. package/dist/{mind-S5V6CK5W.js → mind-LUWRQUQ5.js} +17 -17
  61. package/dist/{mind-activity-tracker-WRHFI3YW.js → mind-activity-tracker-VYN2ZZ2M.js} +3 -3
  62. package/dist/{mind-list-UPJ75GPI.js → mind-list-V5WW5DUA.js} +2 -2
  63. package/dist/{mind-manager-P66HQDNE.js → mind-manager-YFCOIAAX.js} +6 -6
  64. package/dist/{mind-sleep-BTSWQNAC.js → mind-sleep-R6PTNNW4.js} +2 -2
  65. package/dist/{mind-status-TK5AETEM.js → mind-status-I4ISFJ6I.js} +2 -2
  66. package/dist/{mind-wake-SBAKIDVP.js → mind-wake-67ZQEWAV.js} +2 -2
  67. package/dist/{package-OFKXNKJF.js → package-OYUD4ZJ4.js} +12 -6
  68. package/dist/{pages-watcher-P7QECRE2.js → pages-watcher-Z3PKNROC.js} +3 -3
  69. package/dist/{read-36UFXN3G.js → read-WQMPTSN2.js} +2 -2
  70. package/dist/{register-CHREOMJ3.js → register-NZDSTLP3.js} +3 -3
  71. package/dist/{registry-NDNOOYG4.js → registry-ODSALQQL.js} +1 -1
  72. package/dist/{reject-LXIZFJ4Q.js → reject-2HZOJEIJ.js} +2 -2
  73. package/dist/{restart-6ESL3NBO.js → restart-QHS3NT64.js} +2 -2
  74. package/dist/{sandbox-5BW5HPXM.js → sandbox-O5FUSF43.js} +3 -3
  75. package/dist/{seed-SSUCYYDF.js → seed-WUQMPLDM.js} +1 -1
  76. package/dist/{send-TAOEZ4NH.js → send-OAN3RYYY.js} +20 -6
  77. package/dist/{setup-JHL5ZEST.js → setup-QMDK5RZX.js} +2 -2
  78. package/dist/{setup-RXYVGGT7.js → setup-XJH3E7YM.js} +45 -14
  79. package/dist/{skill-AUAQTSP5.js → skill-FZIN4W4Q.js} +65 -3
  80. package/dist/skills/volute-mind/SKILL.md +10 -19
  81. package/dist/sleep-manager-O7YQFCV5.js +30 -0
  82. package/dist/{split-TKJ5OT3P.js → split-EXYGGGQN.js} +1 -1
  83. package/dist/{sprout-UNT7LKKE.js → sprout-AXQ6H5DB.js} +8 -7
  84. package/dist/{start-EUJSS5R4.js → start-MTOVL6SY.js} +2 -2
  85. package/dist/{status-NQJYR4BG.js → status-ZRO37MWR.js} +5 -5
  86. package/dist/{stop-3XAITBBF.js → stop-OK5WEPVC.js} +2 -2
  87. package/dist/{systems-SMEFSHTA.js → systems-W3BBMSOZ.js} +5 -5
  88. package/dist/{tailscale-NY5MUMY3.js → tailscale-BM72RXCJ.js} +1 -1
  89. package/dist/{template-hash-BIMA4ILT.js → template-hash-3HOR4UAJ.js} +1 -1
  90. package/dist/up-BXUAIDXB.js +17 -0
  91. package/dist/{update-PTSH22AZ.js → update-PLPHMMZ2.js} +5 -5
  92. package/dist/{update-check-64FWC4Y2.js → update-check-CVCN7MF6.js} +2 -2
  93. package/dist/{upgrade-HA47CS4C.js → upgrade-I6NPCYUU.js} +1 -1
  94. package/dist/{version-notify-WDHRO3XD.js → version-notify-2NTWVEHL.js} +15 -14
  95. package/dist/web-assets/assets/index--kREqKl9.js +72 -0
  96. package/dist/web-assets/assets/index-BXYTG0nJ.css +1 -0
  97. package/dist/web-assets/ext-theme.css +111 -0
  98. package/dist/web-assets/index.html +2 -2
  99. package/package.json +12 -6
  100. package/packages/extensions/notes/dist/ui/assets/index-DgawVO5g.css +1 -0
  101. package/packages/extensions/notes/dist/ui/assets/index-qUWoeC4c.js +2 -0
  102. package/packages/extensions/notes/dist/ui/index.html +14 -0
  103. package/packages/extensions/notes/skills/notes/SKILL.md +62 -0
  104. package/packages/extensions/notes/skills/notes/scripts/notes.mjs +185 -0
  105. package/packages/extensions/pages/dist/ui/assets/index-D0HyS-xQ.css +1 -0
  106. package/packages/extensions/pages/dist/ui/assets/index-tLTROSk5.js +2 -0
  107. package/packages/extensions/pages/dist/ui/index.html +14 -0
  108. package/packages/extensions/pages/skills/pages/SKILL.md +58 -0
  109. package/templates/_base/home/VOLUTE.md +1 -1
  110. package/dist/chunk-P72MVS4R.js +0 -188
  111. package/dist/chunk-ZYGKG6VC.js +0 -22
  112. package/dist/down-LVBXEULC.js +0 -14
  113. package/dist/message-delivery-Q7VUMIEI.js +0 -27
  114. package/dist/notes-XCER3I7M.js +0 -220
  115. package/dist/pages-EUJR52AH.js +0 -36
  116. package/dist/publish-ZZB33WP4.js +0 -86
  117. package/dist/skills/notes/SKILL.md +0 -34
  118. package/dist/sleep-manager-G4B5GW5P.js +0 -29
  119. package/dist/status-S7UUPNRW.js +0 -38
  120. package/dist/up-W6VAK2XE.js +0 -17
  121. package/dist/web-assets/assets/index-BmKDnWDB.css +0 -1
  122. package/dist/web-assets/assets/index-CLJMx-GA.js +0 -71
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  getDb
4
- } from "./chunk-H7OZRFJB.js";
4
+ } from "./chunk-HHTXM4JT.js";
5
5
  import "./chunk-K3NQKI34.js";
6
6
  export {
7
7
  getDb
@@ -13,7 +13,7 @@ async function run(args) {
13
13
  force: { type: "boolean" }
14
14
  });
15
15
  const name = resolveMindName({ mind: positional[0] });
16
- const { daemonFetch } = await import("./daemon-client-I42FK2BF.js");
16
+ const { daemonFetch } = await import("./daemon-client-BCTFGVCZ.js");
17
17
  const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
18
18
  const client = getClient();
19
19
  const url = urlOf(client.api.minds[":name"].$url({ param: { name } })) + (flags.force ? "?force=true" : "");
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ run,
4
+ stopDaemon
5
+ } from "./chunk-P7VFDSSG.js";
6
+ import "./chunk-FXHXHI2A.js";
7
+ import "./chunk-CVH6Y2YG.js";
8
+ import "./chunk-G3GBKZGG.js";
9
+ import "./chunk-HHTXM4JT.js";
10
+ import "./chunk-K3NQKI34.js";
11
+ export {
12
+ run,
13
+ stopDaemon
14
+ };
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-SSI47XP2.js";
5
5
  import {
6
6
  daemonFetch
7
- } from "./chunk-JGFVMROS.js";
7
+ } from "./chunk-EFVHR7KH.js";
8
8
  import {
9
9
  getClient,
10
10
  urlOf
@@ -12,7 +12,7 @@ import {
12
12
  import {
13
13
  parseArgs
14
14
  } from "./chunk-D424ZQGI.js";
15
- import "./chunk-H7OZRFJB.js";
15
+ import "./chunk-HHTXM4JT.js";
16
16
  import "./chunk-K3NQKI34.js";
17
17
 
18
18
  // src/commands/env.ts
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  addHistoryToArchive,
4
4
  createExportArchive
5
- } from "./chunk-XBLSAVJF.js";
5
+ } from "./chunk-DTC6EH5I.js";
6
6
  import {
7
7
  parseArgs
8
8
  } from "./chunk-D424ZQGI.js";
9
9
  import {
10
10
  findMind,
11
11
  mindDir
12
- } from "./chunk-H7OZRFJB.js";
12
+ } from "./chunk-HHTXM4JT.js";
13
13
  import "./chunk-K3NQKI34.js";
14
14
 
15
15
  // src/commands/export.ts
@@ -63,7 +63,7 @@ async function run(args) {
63
63
  });
64
64
  if (includeHistory) {
65
65
  try {
66
- const { daemonFetch } = await import("./daemon-client-I42FK2BF.js");
66
+ const { daemonFetch } = await import("./daemon-client-BCTFGVCZ.js");
67
67
  const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
68
68
  const client = getClient();
69
69
  const res = await daemonFetch(
@@ -0,0 +1,174 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ daemonFetch
4
+ } from "./chunk-EFVHR7KH.js";
5
+ import {
6
+ exec
7
+ } from "./chunk-CVH6Y2YG.js";
8
+ import "./chunk-G3GBKZGG.js";
9
+ import "./chunk-HHTXM4JT.js";
10
+ import "./chunk-K3NQKI34.js";
11
+
12
+ // src/commands/extension.ts
13
+ import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from "fs";
14
+ import { resolve } from "path";
15
+ function extensionsNpmDir() {
16
+ const home = process.env.VOLUTE_HOME ?? resolve(process.env.HOME ?? "", ".volute");
17
+ return resolve(home, "extensions", "_npm");
18
+ }
19
+ function ensureExtensionsNpmDir() {
20
+ const dir = extensionsNpmDir();
21
+ mkdirSync(dir, { recursive: true });
22
+ const pkgPath = resolve(dir, "package.json");
23
+ if (!existsSync(pkgPath)) {
24
+ writeFileSync(pkgPath, '{"private":true,"dependencies":{}}\n');
25
+ }
26
+ return dir;
27
+ }
28
+ async function run(args) {
29
+ const subcommand = args[0];
30
+ switch (subcommand) {
31
+ case "list":
32
+ await listExtensions();
33
+ break;
34
+ case "install":
35
+ await installExtension(args.slice(1));
36
+ break;
37
+ case "uninstall":
38
+ await uninstallExtension(args.slice(1));
39
+ break;
40
+ case "--help":
41
+ case "-h":
42
+ case void 0:
43
+ printUsage();
44
+ break;
45
+ default:
46
+ console.error(`Unknown subcommand: ${subcommand}`);
47
+ printUsage();
48
+ process.exit(1);
49
+ }
50
+ }
51
+ function printUsage() {
52
+ console.log(`Usage:
53
+ volute extension list List installed extensions
54
+ volute extension install <package> Install a third-party extension
55
+ volute extension uninstall <package> Uninstall a third-party extension`);
56
+ }
57
+ async function listExtensions() {
58
+ const res = await daemonFetch("/api/extensions");
59
+ if (!res.ok) {
60
+ const body = await res.json().catch(() => ({ error: "Unknown error" }));
61
+ console.error(`Error: ${body.error}`);
62
+ process.exit(1);
63
+ }
64
+ const extensions = await res.json();
65
+ if (extensions.length === 0) {
66
+ console.log("No extensions installed.");
67
+ return;
68
+ }
69
+ console.log("Extensions:\n");
70
+ for (const ext of extensions) {
71
+ console.log(` ${ext.id} \u2014 ${ext.name} v${ext.version}`);
72
+ if (ext.description) console.log(` ${ext.description}`);
73
+ }
74
+ }
75
+ function extensionsConfigPath() {
76
+ const home = process.env.VOLUTE_HOME ?? resolve(process.env.HOME ?? "", ".volute");
77
+ return resolve(home, "system", "extensions.json");
78
+ }
79
+ function readConfig() {
80
+ const configPath = extensionsConfigPath();
81
+ if (!existsSync(configPath)) return [];
82
+ try {
83
+ const data = JSON.parse(readFileSync(configPath, "utf-8"));
84
+ return Array.isArray(data) ? data : [];
85
+ } catch (err) {
86
+ console.error(
87
+ `Warning: failed to read extensions config at ${configPath}: ${err.message}`
88
+ );
89
+ return [];
90
+ }
91
+ }
92
+ function writeConfig(packages) {
93
+ const configPath = extensionsConfigPath();
94
+ mkdirSync(resolve(configPath, ".."), { recursive: true });
95
+ writeFileSync(configPath, `${JSON.stringify(packages, null, 2)}
96
+ `);
97
+ }
98
+ async function installExtension(args) {
99
+ const pkg = args[0];
100
+ if (!pkg) {
101
+ console.error("Usage: volute extension install <package>");
102
+ process.exit(1);
103
+ }
104
+ const packages = readConfig();
105
+ if (packages.includes(pkg)) {
106
+ console.log(`Extension "${pkg}" is already installed.`);
107
+ return;
108
+ }
109
+ const dir = ensureExtensionsNpmDir();
110
+ console.log(`Installing "${pkg}"...`);
111
+ try {
112
+ await exec("npm", ["install", pkg], { cwd: dir });
113
+ } catch (err) {
114
+ console.error(`Failed to install "${pkg}": ${err.message}`);
115
+ process.exit(1);
116
+ }
117
+ packages.push(pkg);
118
+ writeConfig(packages);
119
+ console.log(`Installed "${pkg}".`);
120
+ console.log("Restart the daemon (`volute restart`) to load the extension.");
121
+ }
122
+ async function uninstallExtension(args) {
123
+ const pkg = args[0];
124
+ if (!pkg) {
125
+ console.error("Usage: volute extension uninstall <package>");
126
+ process.exit(1);
127
+ }
128
+ const packages = readConfig();
129
+ const idx = packages.indexOf(pkg);
130
+ if (idx === -1) {
131
+ console.error(`Extension "${pkg}" is not installed.`);
132
+ process.exit(1);
133
+ }
134
+ await cleanupExtensionSkills(pkg);
135
+ packages.splice(idx, 1);
136
+ writeConfig(packages);
137
+ try {
138
+ await exec("npm", ["uninstall", pkg], { cwd: extensionsNpmDir() });
139
+ } catch (err) {
140
+ console.warn(
141
+ ` Warning: npm uninstall failed (package may have been manually removed): ${err.message}`
142
+ );
143
+ }
144
+ console.log(`Removed "${pkg}".`);
145
+ console.log("Restart the daemon (`volute restart`) to unload the extension.");
146
+ }
147
+ async function cleanupExtensionSkills(pkg) {
148
+ try {
149
+ const pkgDir = resolve(extensionsNpmDir(), "node_modules", pkg);
150
+ if (!existsSync(pkgDir)) return;
151
+ const { createRequire } = await import("module");
152
+ const require2 = createRequire(resolve(extensionsNpmDir(), "noop.js"));
153
+ const mod = require2(pkg);
154
+ const manifest = mod.default ?? mod.extension ?? mod;
155
+ if (!manifest?.skillsDir || !existsSync(manifest.skillsDir)) return;
156
+ const skillDirs = readdirSync(manifest.skillsDir, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name);
157
+ for (const skillId of skillDirs) {
158
+ await daemonFetch(`/api/skills/defaults/list/${encodeURIComponent(skillId)}`, {
159
+ method: "DELETE"
160
+ }).catch(() => {
161
+ });
162
+ await daemonFetch(`/api/skills/${encodeURIComponent(skillId)}`, {
163
+ method: "DELETE"
164
+ }).catch(() => {
165
+ });
166
+ console.log(` Removed skill: ${skillId}`);
167
+ }
168
+ } catch (err) {
169
+ console.warn(` Warning: could not clean up skills for "${pkg}": ${err.message}`);
170
+ }
171
+ }
172
+ export {
173
+ run
174
+ };
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ getExtensionStandardSkills,
4
+ getLoadedExtensions,
5
+ loadAllExtensions,
6
+ notifyExtensionsDaemonStart,
7
+ notifyExtensionsDaemonStop,
8
+ notifyExtensionsMindStart,
9
+ notifyExtensionsMindStop
10
+ } from "./chunk-2NDZC3S7.js";
11
+ import "./chunk-P27RV5WM.js";
12
+ import "./chunk-MDPCSXZ4.js";
13
+ import "./chunk-YUIHSKR6.js";
14
+ import "./chunk-CVH6Y2YG.js";
15
+ import "./chunk-G3GBKZGG.js";
16
+ import "./chunk-7D47T4RB.js";
17
+ import "./chunk-HHTXM4JT.js";
18
+ import "./chunk-K3NQKI34.js";
19
+ export {
20
+ getExtensionStandardSkills,
21
+ getLoadedExtensions,
22
+ loadAllExtensions,
23
+ notifyExtensionsDaemonStart,
24
+ notifyExtensionsDaemonStop,
25
+ notifyExtensionsMindStart,
26
+ notifyExtensionsMindStop
27
+ };
@@ -4,14 +4,14 @@ import {
4
4
  } from "./chunk-NAOW2CLO.js";
5
5
  import {
6
6
  daemonFetch
7
- } from "./chunk-JGFVMROS.js";
7
+ } from "./chunk-EFVHR7KH.js";
8
8
  import {
9
9
  formatFileSize
10
- } from "./chunk-MD4C26II.js";
10
+ } from "./chunk-JGFRDMR6.js";
11
11
  import {
12
12
  parseArgs
13
13
  } from "./chunk-D424ZQGI.js";
14
- import "./chunk-H7OZRFJB.js";
14
+ import "./chunk-HHTXM4JT.js";
15
15
  import "./chunk-K3NQKI34.js";
16
16
 
17
17
  // src/commands/chat/files.ts
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-NAOW2CLO.js";
5
5
  import {
6
6
  daemonFetch
7
- } from "./chunk-JGFVMROS.js";
7
+ } from "./chunk-EFVHR7KH.js";
8
8
  import {
9
9
  getClient,
10
10
  urlOf
@@ -12,7 +12,7 @@ import {
12
12
  import {
13
13
  parseArgs
14
14
  } from "./chunk-D424ZQGI.js";
15
- import "./chunk-H7OZRFJB.js";
15
+ import "./chunk-HHTXM4JT.js";
16
16
  import "./chunk-K3NQKI34.js";
17
17
 
18
18
  // src/commands/history.ts
@@ -68,6 +68,21 @@ function formatRow(row) {
68
68
  }
69
69
  return `[${time}] [log] ${category}${row.content ?? ""}`;
70
70
  }
71
+ case "summary": {
72
+ let range = "";
73
+ if (row.metadata) {
74
+ try {
75
+ const meta = JSON.parse(row.metadata);
76
+ if (meta.from_time && meta.to_time) {
77
+ const from = new Date(normalizeTimestamp(meta.from_time)).toLocaleTimeString();
78
+ const to = new Date(normalizeTimestamp(meta.to_time)).toLocaleTimeString();
79
+ range = ` (${from}\u2013${to})`;
80
+ }
81
+ } catch {
82
+ }
83
+ }
84
+ return `[${time}] [summary${range}] ${row.content ?? ""}`;
85
+ }
71
86
  case "session_start":
72
87
  return `[${time}] [session_start] ${row.session ?? ""}`;
73
88
  default:
@@ -6,11 +6,11 @@ import {
6
6
  parseNameFromIdentity,
7
7
  run,
8
8
  sessionMatchesWorkspace
9
- } from "./chunk-2YP2TVDT.js";
10
- import "./chunk-2WPW7OT6.js";
9
+ } from "./chunk-UPA6COHU.js";
10
+ import "./chunk-ZWKTUQEL.js";
11
11
  import "./chunk-YUIHSKR6.js";
12
12
  import "./chunk-D424ZQGI.js";
13
- import "./chunk-H7OZRFJB.js";
13
+ import "./chunk-HHTXM4JT.js";
14
14
  import "./chunk-K3NQKI34.js";
15
15
  export {
16
16
  findOpenClawSession,
@@ -20,7 +20,7 @@ async function run(args) {
20
20
  process.exit(1);
21
21
  }
22
22
  console.log(`Joining variant ${variantName}...`);
23
- const { daemonFetch } = await import("./daemon-client-I42FK2BF.js");
23
+ const { daemonFetch } = await import("./daemon-client-BCTFGVCZ.js");
24
24
  const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
25
25
  const client = getClient();
26
26
  const statusRes = await daemonFetch(
@@ -4,11 +4,11 @@ import {
4
4
  } from "./chunk-NAOW2CLO.js";
5
5
  import {
6
6
  daemonFetch
7
- } from "./chunk-JGFVMROS.js";
7
+ } from "./chunk-EFVHR7KH.js";
8
8
  import {
9
9
  parseArgs
10
10
  } from "./chunk-D424ZQGI.js";
11
- import "./chunk-H7OZRFJB.js";
11
+ import "./chunk-HHTXM4JT.js";
12
12
  import "./chunk-K3NQKI34.js";
13
13
 
14
14
  // src/commands/chat/list.ts
@@ -5,10 +5,10 @@ import {
5
5
  } from "./chunk-SSI47XP2.js";
6
6
  import {
7
7
  daemonFetch
8
- } from "./chunk-JGFVMROS.js";
8
+ } from "./chunk-EFVHR7KH.js";
9
9
  import {
10
10
  voluteUserHome
11
- } from "./chunk-H7OZRFJB.js";
11
+ } from "./chunk-HHTXM4JT.js";
12
12
  import "./chunk-K3NQKI34.js";
13
13
 
14
14
  // src/commands/login.ts
@@ -4,14 +4,14 @@ import {
4
4
  } from "./chunk-SSI47XP2.js";
5
5
  import {
6
6
  daemonFetch
7
- } from "./chunk-JGFVMROS.js";
7
+ } from "./chunk-EFVHR7KH.js";
8
8
  import {
9
9
  parseArgs
10
10
  } from "./chunk-D424ZQGI.js";
11
- import "./chunk-H7OZRFJB.js";
11
+ import "./chunk-HHTXM4JT.js";
12
12
  import "./chunk-K3NQKI34.js";
13
13
 
14
- // src/commands/pages/login.ts
14
+ // src/commands/systems/login.ts
15
15
  async function run(args) {
16
16
  const { flags } = parseArgs(args, {
17
17
  key: { type: "string" }
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  daemonFetch
4
- } from "./chunk-JGFVMROS.js";
4
+ } from "./chunk-EFVHR7KH.js";
5
5
  import {
6
6
  voluteUserHome
7
- } from "./chunk-H7OZRFJB.js";
7
+ } from "./chunk-HHTXM4JT.js";
8
8
  import "./chunk-K3NQKI34.js";
9
9
 
10
10
  // src/commands/logout.ts
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  daemonFetch
4
- } from "./chunk-JGFVMROS.js";
5
- import "./chunk-H7OZRFJB.js";
4
+ } from "./chunk-EFVHR7KH.js";
5
+ import "./chunk-HHTXM4JT.js";
6
6
  import "./chunk-K3NQKI34.js";
7
7
 
8
- // src/commands/pages/logout.ts
8
+ // src/commands/systems/logout.ts
9
9
  async function run() {
10
10
  const res = await daemonFetch("/api/system/logout", { method: "POST" });
11
11
  if (!res.ok) {
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ deliverMessage,
4
+ extractTextContent,
5
+ recordInbound,
6
+ resolveSleepAction
7
+ } from "./chunk-QVAQ5454.js";
8
+ import "./chunk-FSM45XD5.js";
9
+ import "./chunk-LIRWLNAK.js";
10
+ import "./chunk-IKHDUZRH.js";
11
+ import "./chunk-2C2VXEBB.js";
12
+ import "./chunk-2NDZC3S7.js";
13
+ import "./chunk-P27RV5WM.js";
14
+ import "./chunk-MDPCSXZ4.js";
15
+ import "./chunk-ZWKTUQEL.js";
16
+ import "./chunk-YUIHSKR6.js";
17
+ import "./chunk-CVH6Y2YG.js";
18
+ import "./chunk-G3GBKZGG.js";
19
+ import "./chunk-7D47T4RB.js";
20
+ import "./chunk-A6TUJJ3L.js";
21
+ import "./chunk-HHTXM4JT.js";
22
+ import "./chunk-K3NQKI34.js";
23
+ export {
24
+ deliverMessage,
25
+ extractTextContent,
26
+ recordInbound,
27
+ resolveSleepAction
28
+ };
@@ -6,7 +6,7 @@ import {
6
6
  getDb,
7
7
  minds,
8
8
  voluteSystemDir
9
- } from "./chunk-H7OZRFJB.js";
9
+ } from "./chunk-HHTXM4JT.js";
10
10
  import "./chunk-K3NQKI34.js";
11
11
 
12
12
  // src/lib/migrate-registry-to-db.ts
@@ -6,58 +6,58 @@ async function run(args) {
6
6
  const subcommand = args[0];
7
7
  switch (subcommand) {
8
8
  case "create":
9
- await import("./create-QWV73WXD.js").then((m) => m.run(args.slice(1)));
9
+ await import("./create-VQSQHJQW.js").then((m) => m.run(args.slice(1)));
10
10
  break;
11
11
  case "start":
12
- await import("./start-EUJSS5R4.js").then((m) => m.run(args.slice(1)));
12
+ await import("./start-MTOVL6SY.js").then((m) => m.run(args.slice(1)));
13
13
  break;
14
14
  case "stop":
15
- await import("./stop-3XAITBBF.js").then((m) => m.run(args.slice(1)));
15
+ await import("./stop-OK5WEPVC.js").then((m) => m.run(args.slice(1)));
16
16
  break;
17
17
  case "restart":
18
- await import("./restart-6ESL3NBO.js").then((m) => m.run(args.slice(1)));
18
+ await import("./restart-QHS3NT64.js").then((m) => m.run(args.slice(1)));
19
19
  break;
20
20
  case "delete":
21
- await import("./delete-4JYGD4VN.js").then((m) => m.run(args.slice(1)));
21
+ await import("./delete-JESHKE7F.js").then((m) => m.run(args.slice(1)));
22
22
  break;
23
23
  case "list":
24
- await import("./mind-list-UPJ75GPI.js").then((m) => m.run(args.slice(1)));
24
+ await import("./mind-list-V5WW5DUA.js").then((m) => m.run(args.slice(1)));
25
25
  break;
26
26
  case "status":
27
- await import("./mind-status-TK5AETEM.js").then((m) => m.run(args.slice(1)));
27
+ await import("./mind-status-I4ISFJ6I.js").then((m) => m.run(args.slice(1)));
28
28
  break;
29
29
  case "history": {
30
30
  const rest = args.slice(1);
31
31
  const historyArgs = transformMindFlag(rest);
32
- await import("./history-ALPTNB3I.js").then((m) => m.run(historyArgs));
32
+ await import("./history-EJMMLXDO.js").then((m) => m.run(historyArgs));
33
33
  break;
34
34
  }
35
35
  case "upgrade":
36
- await import("./upgrade-HA47CS4C.js").then((m) => m.run(args.slice(1)));
36
+ await import("./upgrade-I6NPCYUU.js").then((m) => m.run(args.slice(1)));
37
37
  break;
38
38
  case "import":
39
- await import("./import-SRTQXBGH.js").then((m) => m.run(args.slice(1)));
39
+ await import("./import-YCGPMBSI.js").then((m) => m.run(args.slice(1)));
40
40
  break;
41
41
  case "export":
42
- await import("./export-BOJQWBMA.js").then((m) => m.run(args.slice(1)));
42
+ await import("./export-EGA5M5PB.js").then((m) => m.run(args.slice(1)));
43
43
  break;
44
44
  case "seed":
45
- await import("./seed-SSUCYYDF.js").then((m) => m.run(args.slice(1)));
45
+ await import("./seed-WUQMPLDM.js").then((m) => m.run(args.slice(1)));
46
46
  break;
47
47
  case "sprout":
48
- await import("./sprout-UNT7LKKE.js").then((m) => m.run(args.slice(1)));
48
+ await import("./sprout-AXQ6H5DB.js").then((m) => m.run(args.slice(1)));
49
49
  break;
50
50
  case "sleep":
51
- await import("./mind-sleep-BTSWQNAC.js").then((m) => m.run(args.slice(1)));
51
+ await import("./mind-sleep-R6PTNNW4.js").then((m) => m.run(args.slice(1)));
52
52
  break;
53
53
  case "wake":
54
- await import("./mind-wake-SBAKIDVP.js").then((m) => m.run(args.slice(1)));
54
+ await import("./mind-wake-67ZQEWAV.js").then((m) => m.run(args.slice(1)));
55
55
  break;
56
56
  case "split":
57
- await import("./split-TKJ5OT3P.js").then((m) => m.run(args.slice(1)));
57
+ await import("./split-EXYGGGQN.js").then((m) => m.run(args.slice(1)));
58
58
  break;
59
59
  case "join":
60
- await import("./join-J4QU42DL.js").then((m) => m.run(args.slice(1)));
60
+ await import("./join-2GBJKZEN.js").then((m) => m.run(args.slice(1)));
61
61
  break;
62
62
  case "--help":
63
63
  case "-h":
@@ -4,10 +4,10 @@ import {
4
4
  markIdle,
5
5
  onMindEvent,
6
6
  stopAll
7
- } from "./chunk-CQ7SNKNI.js";
8
- import "./chunk-VIVMW2H2.js";
7
+ } from "./chunk-FSM45XD5.js";
8
+ import "./chunk-P27RV5WM.js";
9
9
  import "./chunk-YUIHSKR6.js";
10
- import "./chunk-H7OZRFJB.js";
10
+ import "./chunk-HHTXM4JT.js";
11
11
  import "./chunk-K3NQKI34.js";
12
12
  export {
13
13
  getActiveMinds,
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  daemonFetch
4
- } from "./chunk-JGFVMROS.js";
5
- import "./chunk-H7OZRFJB.js";
4
+ } from "./chunk-EFVHR7KH.js";
5
+ import "./chunk-HHTXM4JT.js";
6
6
  import "./chunk-K3NQKI34.js";
7
7
 
8
8
  // src/commands/mind-list.ts
@@ -3,13 +3,13 @@ import {
3
3
  MindManager,
4
4
  getMindManager,
5
5
  initMindManager
6
- } from "./chunk-EHZKEMMV.js";
7
- import "./chunk-J4IBNXGJ.js";
8
- import "./chunk-2WPW7OT6.js";
6
+ } from "./chunk-LIRWLNAK.js";
7
+ import "./chunk-IKHDUZRH.js";
8
+ import "./chunk-ZWKTUQEL.js";
9
9
  import "./chunk-YUIHSKR6.js";
10
- import "./chunk-RKQEHRBB.js";
11
- import "./chunk-IKRVFPWU.js";
12
- import "./chunk-H7OZRFJB.js";
10
+ import "./chunk-G3GBKZGG.js";
11
+ import "./chunk-7D47T4RB.js";
12
+ import "./chunk-HHTXM4JT.js";
13
13
  import "./chunk-K3NQKI34.js";
14
14
  export {
15
15
  MindManager,
@@ -4,11 +4,11 @@ import {
4
4
  } from "./chunk-NAOW2CLO.js";
5
5
  import {
6
6
  daemonFetch
7
- } from "./chunk-JGFVMROS.js";
7
+ } from "./chunk-EFVHR7KH.js";
8
8
  import {
9
9
  parseArgs
10
10
  } from "./chunk-D424ZQGI.js";
11
- import "./chunk-H7OZRFJB.js";
11
+ import "./chunk-HHTXM4JT.js";
12
12
  import "./chunk-K3NQKI34.js";
13
13
 
14
14
  // src/commands/mind-sleep.ts
@@ -4,8 +4,8 @@ import {
4
4
  } from "./chunk-NAOW2CLO.js";
5
5
  import {
6
6
  daemonFetch
7
- } from "./chunk-JGFVMROS.js";
8
- import "./chunk-H7OZRFJB.js";
7
+ } from "./chunk-EFVHR7KH.js";
8
+ import "./chunk-HHTXM4JT.js";
9
9
  import "./chunk-K3NQKI34.js";
10
10
 
11
11
  // src/commands/mind-status.ts
@@ -4,11 +4,11 @@ import {
4
4
  } from "./chunk-NAOW2CLO.js";
5
5
  import {
6
6
  daemonFetch
7
- } from "./chunk-JGFVMROS.js";
7
+ } from "./chunk-EFVHR7KH.js";
8
8
  import {
9
9
  parseArgs
10
10
  } from "./chunk-D424ZQGI.js";
11
- import "./chunk-H7OZRFJB.js";
11
+ import "./chunk-HHTXM4JT.js";
12
12
  import "./chunk-K3NQKI34.js";
13
13
 
14
14
  // src/commands/mind-wake.ts