volute 0.43.0 → 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.
- package/dist/{activity-events-UISXY4Y5.js → activity-events-OMCSM7XW.js} +3 -3
- package/dist/{ai-service-FBCCEYF5.js → ai-service-7PHSRDMO.js} +4 -4
- package/dist/{archive-I32WHCJB.js → archive-6R4TZMYI.js} +3 -3
- package/dist/{auth-3RIG6GKN.js → auth-FRZJVQCS.js} +4 -4
- package/dist/avatar-image-BNWEXSA2.js +16 -0
- package/dist/{chat-SDSX5TVV.js → chat-I4EDDIQC.js} +2 -2
- package/dist/{chunk-AD46AYZQ.js → chunk-2BONPXAF.js} +1 -1
- package/dist/{chunk-PGPLCJPK.js → chunk-3ERIL673.js} +1 -1
- package/dist/{chunk-C6ESRQZ7.js → chunk-3GYVW2X3.js} +1 -1
- package/dist/{chunk-SPLPKBES.js → chunk-5AHYQHNT.js} +4 -8
- package/dist/{chunk-XDTKJNW5.js → chunk-5GT7URXJ.js} +1 -1
- package/dist/{chunk-65OLHBCL.js → chunk-7FT24JBQ.js} +8 -8
- package/dist/{chunk-ZO7IQJKO.js → chunk-7KWANSLX.js} +3 -3
- package/dist/{chunk-EFL5UOY4.js → chunk-CYI534DJ.js} +3 -3
- package/dist/{chunk-FZ5TH5PF.js → chunk-EQZD4YU3.js} +8 -8
- package/dist/{chunk-57LBQ7JX.js → chunk-FHWUQZXE.js} +1 -1
- package/dist/{chunk-K4EHBHPE.js → chunk-FZMEVCWC.js} +3 -3
- package/dist/{chunk-YAMO2U3N.js → chunk-H7IYFRAL.js} +1 -1
- package/dist/{chunk-M3PGGSBH.js → chunk-HVU45COX.js} +1 -1
- package/dist/{chunk-FSSUANZJ.js → chunk-I2Y2YHIO.js} +5 -5
- package/dist/{chunk-O3DXAR44.js → chunk-IEWZ7VD7.js} +2 -2
- package/dist/{chunk-YSV3VJQK.js → chunk-J47TIYHA.js} +1 -1
- package/dist/{chunk-QHG4OMZL.js → chunk-KDLYIECM.js} +37 -32
- package/dist/{chunk-EE7SZJON.js → chunk-KP3KWNG6.js} +2 -2
- package/dist/{chunk-JVK6QQIC.js → chunk-LAXUUY7O.js} +2 -2
- package/dist/{chunk-3WLWKOGM.js → chunk-NF75HPNR.js} +5 -5
- package/dist/{chunk-PF2AB7VJ.js → chunk-OMETFX5H.js} +321 -204
- package/dist/{chunk-ONM2AZFL.js → chunk-PNV24SEP.js} +1 -1
- package/dist/{chunk-ATEX3ZPG.js → chunk-Q2XBKQ2D.js} +2 -2
- package/dist/{chunk-GZJFC76M.js → chunk-QMJJWTNL.js} +1 -1
- package/dist/chunk-SQL7M4HJ.js +120 -0
- package/dist/{chunk-2HIVYZDB.js → chunk-UMI4UIJG.js} +1 -1
- package/dist/{chunk-7G2EEYXX.js → chunk-ZMIMSIIT.js} +2 -2
- package/dist/{chunk-L3IV23ZG.js → chunk-ZV7MFISX.js} +2 -0
- package/dist/cli.js +47 -22
- package/dist/{cloud-sync-FRYNWKCR.js → cloud-sync-6WJ7WFYD.js} +16 -16
- package/dist/{conversations-67WWW25C.js → conversations-WAJYZKOC.js} +4 -4
- package/dist/{create-7W3LV3J7.js → create-YZIV5OJC.js} +1 -1
- package/dist/{daemon-restart-5GVZ5V3X.js → daemon-restart-OUJVINXV.js} +7 -7
- package/dist/daemon.js +297 -294
- package/dist/{db-CZV62BOQ.js → db-JFLCJCUG.js} +2 -2
- package/dist/{db-IJL6B26S.js → db-LZTLA7XC.js} +1 -1
- package/dist/delivery-manager-TEVOHX5W.js +32 -0
- package/dist/{delivery-router-HXBHYHJM.js → delivery-router-GODSIS62.js} +3 -3
- package/dist/{down-RRNYIGCU.js → down-XCAZXWLB.js} +5 -5
- package/dist/echo-text-T7ZA5EYD.js +32 -0
- package/dist/{exec-SJK7VUTC.js → exec-4GWHAHS3.js} +3 -3
- package/dist/{export-7LPCIB5J.js → export-ID7YUSLZ.js} +3 -3
- package/dist/{extensions-76EGTMFY.js → extensions-3QNDGW5E.js} +16 -16
- package/dist/{files-LV7VAKPC.js → files-BQ2WB5KC.js} +3 -3
- package/dist/{import-XPECCRQ7.js → import-SKID37QX.js} +6 -6
- package/dist/{isolation-5AYEY55P.js → isolation-5MB3J73F.js} +3 -3
- package/dist/{login-KJSN4JDA.js → login-LM4NF4ZB.js} +2 -2
- package/dist/{logout-TMJGUQV2.js → logout-CTJVIZGA.js} +2 -2
- package/dist/message-delivery-2EA5LLMD.js +34 -0
- package/dist/{mind-QEWCR7FA.js → mind-MI7Z6KM2.js} +5 -5
- package/dist/{mind-activity-tracker-JHAT6456.js → mind-activity-tracker-BGHJE7XA.js} +4 -4
- package/dist/mind-service-S3SY7HAM.js +36 -0
- package/dist/{package-ZOI2KAYC.js → package-5B4XDTJH.js} +1 -1
- package/dist/{registry-7LQHTRUX.js → registry-NUJAGLQJ.js} +2 -2
- package/dist/{sandbox-SJH3XOPZ.js → sandbox-IOPWWILM.js} +4 -4
- package/dist/scheduler-CXWQ6Z4E.js +30 -0
- package/dist/{schema-LRUTFOER.js → schema-PVNG3PQM.js} +1 -1
- package/dist/{seed-KOG6KJAO.js → seed-UUPVQWFB.js} +1 -1
- package/dist/{seed-cmd-GJFENEJH.js → seed-cmd-7XPKDQUC.js} +2 -2
- package/dist/{seed-create-YXO6R4KE.js → seed-create-IZ4M5ESO.js} +3 -3
- package/dist/{seed-sprout-BBU64QXP.js → seed-sprout-POJXHJWV.js} +7 -7
- package/dist/{send-ZBZWIH5V.js → send-O6W53VBM.js} +37 -42
- package/dist/{service-4EVZKGSA.js → service-AQVPUANO.js} +4 -4
- package/dist/{service-install-SHRM6NHK.js → service-install-4QNUDKLM.js} +5 -5
- package/dist/{setup-354PDHUF.js → setup-5GCO3CUB.js} +7 -7
- package/dist/{setup-25MMJ3J4.js → setup-MLRKNP7Y.js} +3 -3
- package/dist/{skills-DPI3WZPQ.js → skills-775C7QFF.js} +5 -5
- package/dist/sleep-manager-HINI6Y46.js +34 -0
- package/dist/{spirit-JQQHUVWR.js → spirit-IK5OYWMV.js} +7 -7
- package/dist/{sprout-4WAYBUVV.js → sprout-ZY5QGOEL.js} +1 -1
- package/dist/{src-O4PRLMKM.js → src-JAOVXO5W.js} +1 -0
- package/dist/{src-TJ7RBU5H.js → src-XFY3XDD6.js} +24 -19
- package/dist/{src-L2Z7X5UT.js → src-YH6PQ7LJ.js} +264 -52
- package/dist/{status-WTU2WHXY.js → status-E5DQNCAO.js} +5 -5
- package/dist/system-chat-4DQZOEZI.js +34 -0
- package/dist/{tailscale-Q7ZJL7S7.js → tailscale-QAWVKQKU.js} +2 -2
- package/dist/{turn-tracker-2GMKJQTN.js → turn-tracker-RWZMY7M6.js} +5 -5
- package/dist/{up-7RSBEKW6.js → up-FLCDR2UB.js} +6 -6
- package/dist/{update-EJ7Q77ZX.js → update-7TYVH5FM.js} +5 -5
- package/dist/{update-check-ACYYNKTW.js → update-check-VSCSJ7KX.js} +3 -3
- package/dist/{version-notify-DCAIXXZB.js → version-notify-B67N35A3.js} +17 -17
- package/dist/web-assets/assets/{index-DTDmEfPU.js → index-Domoz5Cg.js} +8 -8
- package/dist/web-assets/assets/index-dJdNzAPn.css +1 -0
- package/dist/web-assets/ext-theme.css +5 -0
- package/dist/web-assets/index.html +2 -2
- package/package.json +1 -1
- package/packages/extensions/notes/dist/ui/assets/{index-BbgANhFm.js → index-D0-DgYyj.js} +1 -1
- package/packages/extensions/notes/dist/ui/index.html +1 -1
- package/packages/extensions/notes/skills/notes/SKILL.md +31 -3
- package/packages/extensions/pages/dist/ui/assets/{index-Dxk-DYrf.js → index-CQjEQg1r.js} +1 -1
- package/packages/extensions/pages/dist/ui/index.html +1 -1
- package/templates/_base/.init/.local/hooks/startup-context.ts +25 -0
- package/templates/claude/src/agent.ts +16 -2
- package/templates/claude/src/lib/message-channel.ts +28 -6
- package/dist/delivery-manager-5J2BE22P.js +0 -32
- package/dist/echo-text-XKBJM6RV.js +0 -32
- package/dist/message-delivery-WJBZFALY.js +0 -34
- package/dist/mind-service-ZBVUMJ5H.js +0 -36
- package/dist/scheduler-BR6C6B3E.js +0 -30
- package/dist/sleep-manager-BVU5D2AE.js +0 -34
- package/dist/system-chat-KMQIP7VH.js +0 -34
- package/dist/web-assets/assets/index-D7udpBCx.css +0 -1
|
@@ -18,9 +18,9 @@ import {
|
|
|
18
18
|
import "./chunk-O7IGP7ZW.js";
|
|
19
19
|
import {
|
|
20
20
|
formatFileSize
|
|
21
|
-
} from "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
21
|
+
} from "./chunk-UMI4UIJG.js";
|
|
22
|
+
import "./chunk-H7IYFRAL.js";
|
|
23
|
+
import "./chunk-ZV7MFISX.js";
|
|
24
24
|
import "./chunk-K3NQKI34.js";
|
|
25
25
|
|
|
26
26
|
// packages/cli/src/commands/send.ts
|
|
@@ -154,6 +154,19 @@ async function waitForResponse(mindName, conversationId, timeoutMs) {
|
|
|
154
154
|
});
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
|
+
function printSendResult(data) {
|
|
158
|
+
if (data.held) {
|
|
159
|
+
if (data.notice) console.log(data.notice);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
const { outboundId } = data;
|
|
163
|
+
if (isCompact()) {
|
|
164
|
+
if (outboundId != null) console.log(`[volute:outbound:${outboundId}]`);
|
|
165
|
+
} else {
|
|
166
|
+
console.log(`Message sent.${outboundId != null ? `
|
|
167
|
+
[volute:outbound:${outboundId}]` : ""}`);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
157
170
|
var cmd = command({
|
|
158
171
|
name: "volute chat send",
|
|
159
172
|
description: "Send a message to a mind, channel, or platform",
|
|
@@ -268,6 +281,7 @@ To reply to a person, use their username from the message prefix (e.g. volute ch
|
|
|
268
281
|
const client = getClient();
|
|
269
282
|
let waitMindName;
|
|
270
283
|
let waitConversationId;
|
|
284
|
+
let heldResponse = false;
|
|
271
285
|
if (parsed.isDM && parsed.platform === "volute") {
|
|
272
286
|
const targetName = parsed.identifier.slice(1);
|
|
273
287
|
const mindSelf = process.env.VOLUTE_MIND;
|
|
@@ -285,8 +299,8 @@ To reply to a person, use their username from the message prefix (e.g. volute ch
|
|
|
285
299
|
}
|
|
286
300
|
);
|
|
287
301
|
if (!createRes.ok) {
|
|
288
|
-
const
|
|
289
|
-
console.error(
|
|
302
|
+
const data2 = await createRes.json().catch(() => ({ error: "Unknown error" }));
|
|
303
|
+
console.error(data2.error);
|
|
290
304
|
process.exit(1);
|
|
291
305
|
}
|
|
292
306
|
const { conversationId: convId } = await createRes.json();
|
|
@@ -303,29 +317,18 @@ To reply to a person, use their username from the message prefix (e.g. volute ch
|
|
|
303
317
|
})
|
|
304
318
|
});
|
|
305
319
|
if (!sendRes.ok) {
|
|
306
|
-
const
|
|
307
|
-
console.error(
|
|
320
|
+
const data2 = await sendRes.json().catch(() => ({ error: "Unknown error" }));
|
|
321
|
+
console.error(data2.error);
|
|
308
322
|
process.exit(1);
|
|
309
323
|
}
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
} catch (err) {
|
|
316
|
-
console.error(
|
|
317
|
-
`Warning: could not read outboundId from response: ${err.message}`
|
|
318
|
-
);
|
|
319
|
-
}
|
|
320
|
-
if (isCompact()) {
|
|
321
|
-
if (outboundId != null) console.log(`[volute:outbound:${outboundId}]`);
|
|
322
|
-
} else {
|
|
323
|
-
console.log(
|
|
324
|
-
`Message sent.${outboundId != null ? `
|
|
325
|
-
[volute:outbound:${outboundId}]` : ""}`
|
|
326
|
-
);
|
|
327
|
-
}
|
|
324
|
+
let data = {};
|
|
325
|
+
try {
|
|
326
|
+
data = await sendRes.json();
|
|
327
|
+
} catch (err) {
|
|
328
|
+
console.error(`Warning: could not read send response: ${err.message}`);
|
|
328
329
|
}
|
|
330
|
+
if (data.held) heldResponse = true;
|
|
331
|
+
if (data.held || !flags.wait) printSendResult(data);
|
|
329
332
|
} else if (!parsed.isDM && parsed.platform === "volute") {
|
|
330
333
|
if (!parsed.identifier.startsWith("#")) {
|
|
331
334
|
console.error(
|
|
@@ -362,27 +365,18 @@ To reply to a person, use their username from the message prefix (e.g. volute ch
|
|
|
362
365
|
})
|
|
363
366
|
});
|
|
364
367
|
if (!sendRes.ok) {
|
|
365
|
-
const
|
|
366
|
-
console.error(
|
|
368
|
+
const data2 = await sendRes.json().catch(() => ({ error: "Unknown error" }));
|
|
369
|
+
console.error(data2.error);
|
|
367
370
|
process.exit(1);
|
|
368
371
|
}
|
|
369
|
-
let
|
|
372
|
+
let data = {};
|
|
370
373
|
try {
|
|
371
|
-
|
|
372
|
-
outboundId = resData.outboundId;
|
|
374
|
+
data = await sendRes.json();
|
|
373
375
|
} catch (err) {
|
|
374
|
-
console.error(
|
|
375
|
-
`Warning: could not read outboundId from response: ${err.message}`
|
|
376
|
-
);
|
|
377
|
-
}
|
|
378
|
-
if (isCompact()) {
|
|
379
|
-
if (outboundId != null) console.log(`[volute:outbound:${outboundId}]`);
|
|
380
|
-
} else {
|
|
381
|
-
console.log(
|
|
382
|
-
`Message sent.${outboundId != null ? `
|
|
383
|
-
[volute:outbound:${outboundId}]` : ""}`
|
|
384
|
-
);
|
|
376
|
+
console.error(`Warning: could not read send response: ${err.message}`);
|
|
385
377
|
}
|
|
378
|
+
if (data.held) heldResponse = true;
|
|
379
|
+
printSendResult(data);
|
|
386
380
|
} else {
|
|
387
381
|
console.error(
|
|
388
382
|
`Direct sends to ${parsed.platform} channels are no longer supported.
|
|
@@ -391,7 +385,8 @@ See: volute chat bridge --help`
|
|
|
391
385
|
);
|
|
392
386
|
process.exit(1);
|
|
393
387
|
}
|
|
394
|
-
if (
|
|
388
|
+
if (heldResponse) {
|
|
389
|
+
} else if (flags.wait && waitMindName) {
|
|
395
390
|
if (!waitConversationId) {
|
|
396
391
|
console.error("--wait requires a volute conversation (DM to a mind)");
|
|
397
392
|
process.exit(1);
|
|
@@ -9,10 +9,10 @@ import {
|
|
|
9
9
|
SYSTEM_LAUNCHD_PLIST_PATH,
|
|
10
10
|
SYSTEM_SERVICE_PATH,
|
|
11
11
|
USER_SYSTEMD_UNIT
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-Q2XBKQ2D.js";
|
|
13
|
+
import "./chunk-3ERIL673.js";
|
|
14
|
+
import "./chunk-H7IYFRAL.js";
|
|
15
|
+
import "./chunk-ZV7MFISX.js";
|
|
16
16
|
import "./chunk-K3NQKI34.js";
|
|
17
17
|
|
|
18
18
|
// packages/cli/src/commands/service.ts
|
|
@@ -3,11 +3,11 @@ import {
|
|
|
3
3
|
generateUserPlist,
|
|
4
4
|
generateUserUnit,
|
|
5
5
|
installUserService
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-KP3KWNG6.js";
|
|
7
|
+
import "./chunk-Q2XBKQ2D.js";
|
|
8
|
+
import "./chunk-3ERIL673.js";
|
|
9
|
+
import "./chunk-H7IYFRAL.js";
|
|
10
|
+
import "./chunk-ZV7MFISX.js";
|
|
11
11
|
import "./chunk-K3NQKI34.js";
|
|
12
12
|
export {
|
|
13
13
|
generateUserPlist,
|
|
@@ -8,22 +8,22 @@ import {
|
|
|
8
8
|
import "./chunk-O7IGP7ZW.js";
|
|
9
9
|
import {
|
|
10
10
|
installUserService
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-KP3KWNG6.js";
|
|
12
12
|
import {
|
|
13
13
|
LAUNCHD_PLIST_LABEL,
|
|
14
14
|
SYSTEM_LAUNCHD_PLIST_PATH,
|
|
15
15
|
SYSTEM_SERVICE_PATH
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-Q2XBKQ2D.js";
|
|
17
17
|
import {
|
|
18
18
|
ensureVoluteGroup,
|
|
19
19
|
resolveVoluteBin
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-3ERIL673.js";
|
|
21
21
|
import {
|
|
22
22
|
readGlobalConfig,
|
|
23
23
|
writeGlobalConfig
|
|
24
|
-
} from "./chunk-
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
24
|
+
} from "./chunk-PNV24SEP.js";
|
|
25
|
+
import "./chunk-H7IYFRAL.js";
|
|
26
|
+
import "./chunk-ZV7MFISX.js";
|
|
27
27
|
import "./chunk-K3NQKI34.js";
|
|
28
28
|
|
|
29
29
|
// src/commands/setup.ts
|
|
@@ -221,7 +221,7 @@ async function startDaemonAndOpenBrowser(port, host) {
|
|
|
221
221
|
const url = `http://${displayHost === "0.0.0.0" || displayHost === "::" ? "localhost" : displayHost}:${displayPort}`;
|
|
222
222
|
console.log("\nStarting daemon...");
|
|
223
223
|
try {
|
|
224
|
-
const { run: runUp } = await import("./up-
|
|
224
|
+
const { run: runUp } = await import("./up-FLCDR2UB.js");
|
|
225
225
|
await runUp([
|
|
226
226
|
...port != null ? ["--port", String(port)] : [],
|
|
227
227
|
...host ? ["--host", host] : []
|
|
@@ -9,9 +9,9 @@ import {
|
|
|
9
9
|
readGlobalConfig,
|
|
10
10
|
secretsPath,
|
|
11
11
|
writeGlobalConfig
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-PNV24SEP.js";
|
|
13
|
+
import "./chunk-H7IYFRAL.js";
|
|
14
|
+
import "./chunk-ZV7MFISX.js";
|
|
15
15
|
import "./chunk-K3NQKI34.js";
|
|
16
16
|
export {
|
|
17
17
|
_resetConfigCache,
|
|
@@ -27,12 +27,12 @@ import {
|
|
|
27
27
|
syncBuiltinSkills,
|
|
28
28
|
uninstallSkill,
|
|
29
29
|
updateSkill
|
|
30
|
-
} from "./chunk-
|
|
31
|
-
import "./chunk-
|
|
32
|
-
import "./chunk-
|
|
30
|
+
} from "./chunk-I2Y2YHIO.js";
|
|
31
|
+
import "./chunk-3ERIL673.js";
|
|
32
|
+
import "./chunk-PNV24SEP.js";
|
|
33
33
|
import "./chunk-T2TP6ZC6.js";
|
|
34
|
-
import "./chunk-
|
|
35
|
-
import "./chunk-
|
|
34
|
+
import "./chunk-H7IYFRAL.js";
|
|
35
|
+
import "./chunk-ZV7MFISX.js";
|
|
36
36
|
import "./chunk-K3NQKI34.js";
|
|
37
37
|
export {
|
|
38
38
|
SEED_SKILLS,
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
SleepManager,
|
|
4
|
+
getSleepManager,
|
|
5
|
+
getSleepManagerIfReady,
|
|
6
|
+
initSleepManager,
|
|
7
|
+
matchesGlob
|
|
8
|
+
} from "./chunk-OMETFX5H.js";
|
|
9
|
+
import "./chunk-5GT7URXJ.js";
|
|
10
|
+
import "./chunk-7FT24JBQ.js";
|
|
11
|
+
import "./chunk-QLWG3C2Z.js";
|
|
12
|
+
import "./chunk-I2Y2YHIO.js";
|
|
13
|
+
import "./chunk-FZMEVCWC.js";
|
|
14
|
+
import "./chunk-CU6OFXMM.js";
|
|
15
|
+
import "./chunk-3GYVW2X3.js";
|
|
16
|
+
import "./chunk-HVU45COX.js";
|
|
17
|
+
import "./chunk-5AHYQHNT.js";
|
|
18
|
+
import "./chunk-NF75HPNR.js";
|
|
19
|
+
import "./chunk-3ERIL673.js";
|
|
20
|
+
import "./chunk-J47TIYHA.js";
|
|
21
|
+
import "./chunk-PNV24SEP.js";
|
|
22
|
+
import "./chunk-CYI534DJ.js";
|
|
23
|
+
import "./chunk-ZMIMSIIT.js";
|
|
24
|
+
import "./chunk-T2TP6ZC6.js";
|
|
25
|
+
import "./chunk-H7IYFRAL.js";
|
|
26
|
+
import "./chunk-ZV7MFISX.js";
|
|
27
|
+
import "./chunk-K3NQKI34.js";
|
|
28
|
+
export {
|
|
29
|
+
SleepManager,
|
|
30
|
+
getSleepManager,
|
|
31
|
+
getSleepManagerIfReady,
|
|
32
|
+
initSleepManager,
|
|
33
|
+
matchesGlob
|
|
34
|
+
};
|
|
@@ -4,16 +4,16 @@ import {
|
|
|
4
4
|
getSpiritModel,
|
|
5
5
|
spiritDir,
|
|
6
6
|
syncSpiritTemplate
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-7FT24JBQ.js";
|
|
8
8
|
import "./chunk-QLWG3C2Z.js";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-I2Y2YHIO.js";
|
|
10
10
|
import "./chunk-CU6OFXMM.js";
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-3ERIL673.js";
|
|
12
|
+
import "./chunk-J47TIYHA.js";
|
|
13
|
+
import "./chunk-PNV24SEP.js";
|
|
14
14
|
import "./chunk-T2TP6ZC6.js";
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-H7IYFRAL.js";
|
|
16
|
+
import "./chunk-ZV7MFISX.js";
|
|
17
17
|
import "./chunk-K3NQKI34.js";
|
|
18
18
|
export {
|
|
19
19
|
ensureSpiritProject,
|
|
@@ -4,7 +4,7 @@ import "./chunk-K3NQKI34.js";
|
|
|
4
4
|
// packages/cli/src/commands/sprout.ts
|
|
5
5
|
async function run(args) {
|
|
6
6
|
console.error("Note: `volute mind sprout` is now `volute seed sprout`");
|
|
7
|
-
await import("./seed-sprout-
|
|
7
|
+
await import("./seed-sprout-POJXHJWV.js").then((m) => m.run(args));
|
|
8
8
|
}
|
|
9
9
|
export {
|
|
10
10
|
run
|
|
@@ -407,6 +407,7 @@ var src_default = createExtension({
|
|
|
407
407
|
name: "Plan",
|
|
408
408
|
version: "0.1.0",
|
|
409
409
|
description: "System-wide plans for coordinated mind activity",
|
|
410
|
+
mindDoc: "Shared plans for coordinating work with other minds \u2014 propose, track, and move a shared effort forward together.",
|
|
410
411
|
icon: '<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="8" cy="8" r="6"/><path d="M8 4v4l2.5 2.5"/></svg>',
|
|
411
412
|
color: "blue",
|
|
412
413
|
routes: (ctx) => createRoutes(ctx),
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
initDb,
|
|
8
8
|
syncPublishedPages,
|
|
9
9
|
syncSystemPages
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-KDLYIECM.js";
|
|
11
11
|
import {
|
|
12
12
|
createExtension
|
|
13
13
|
} from "./chunk-RG5TOL4O.js";
|
|
@@ -22,6 +22,7 @@ import { relative as relative2, resolve as resolve2 } from "path";
|
|
|
22
22
|
|
|
23
23
|
// packages/extensions/pages/src/shared-pages.ts
|
|
24
24
|
import { execFile as execFileCb } from "child_process";
|
|
25
|
+
import { createHash } from "crypto";
|
|
25
26
|
import {
|
|
26
27
|
chmodSync,
|
|
27
28
|
existsSync,
|
|
@@ -77,6 +78,11 @@ function pagesRepoDir(dataDir) {
|
|
|
77
78
|
function worktreePath(mindDir) {
|
|
78
79
|
return resolve(mindDir, "home", "pages", "_system");
|
|
79
80
|
}
|
|
81
|
+
function pagesIsolationChownPaths(mindDir, wtGitDir) {
|
|
82
|
+
const paths = [resolve(mindDir, "home", "pages")];
|
|
83
|
+
if (wtGitDir) paths.push(wtGitDir);
|
|
84
|
+
return paths;
|
|
85
|
+
}
|
|
80
86
|
async function ensurePagesRepo(dataDir, isolation) {
|
|
81
87
|
const dir = pagesRepoDir(dataDir);
|
|
82
88
|
mkdirSync(dir, { recursive: true });
|
|
@@ -129,17 +135,12 @@ async function addPagesWorktree(mindName, mindDir, dataDir, isolation) {
|
|
|
129
135
|
}
|
|
130
136
|
if (isolation?.isIsolationEnabled()) {
|
|
131
137
|
const user = isolation.getMindUser(mindName);
|
|
132
|
-
try {
|
|
133
|
-
await execAsync("chown", ["-R", `${user}:volute`, wt]);
|
|
134
|
-
} catch {
|
|
135
|
-
console.warn(`[pages] failed to chown worktree for ${mindName}`);
|
|
136
|
-
}
|
|
137
138
|
const wtGitDir = readWorktreeGitDir(wt);
|
|
138
|
-
|
|
139
|
+
for (const target of pagesIsolationChownPaths(mindDir, wtGitDir)) {
|
|
139
140
|
try {
|
|
140
|
-
await execAsync("chown", ["-R", `${user}:volute`,
|
|
141
|
+
await execAsync("chown", ["-R", `${user}:volute`, target]);
|
|
141
142
|
} catch {
|
|
142
|
-
console.warn(`[pages] failed to chown
|
|
143
|
+
console.warn(`[pages] failed to chown ${target} for ${mindName}`);
|
|
143
144
|
}
|
|
144
145
|
}
|
|
145
146
|
}
|
|
@@ -306,6 +307,12 @@ function collectHtmlFiles(dir) {
|
|
|
306
307
|
walk(dir);
|
|
307
308
|
return files.sort();
|
|
308
309
|
}
|
|
310
|
+
function hashFiles(baseDir, files) {
|
|
311
|
+
return files.map((file) => ({
|
|
312
|
+
file,
|
|
313
|
+
hash: createHash("sha256").update(readFileSync(resolve(baseDir, file))).digest("hex")
|
|
314
|
+
}));
|
|
315
|
+
}
|
|
309
316
|
async function pagesStatus(mindDir, isolation) {
|
|
310
317
|
const wt = worktreePath(mindDir);
|
|
311
318
|
const errors = [];
|
|
@@ -397,7 +404,7 @@ function createCommands() {
|
|
|
397
404
|
if (result.ok && ctx.db) {
|
|
398
405
|
const repoDir = resolve2(ctx.dataDir, "repo");
|
|
399
406
|
try {
|
|
400
|
-
syncSystemPages(ctx.db, collectHtmlFiles(repoDir), mindName);
|
|
407
|
+
syncSystemPages(ctx.db, hashFiles(repoDir, collectHtmlFiles(repoDir)), mindName);
|
|
401
408
|
} catch (err) {
|
|
402
409
|
console.error("[pages] failed to sync system pages to DB:", err);
|
|
403
410
|
syncWarning = "\nWarning: failed to sync pages to dashboard \u2014 they may not appear in the UI until the next daemon restart.";
|
|
@@ -428,7 +435,7 @@ function createCommands() {
|
|
|
428
435
|
const pageFiles = collectFiles(snapshotDir, snapshotDir, [".html", ".md"]);
|
|
429
436
|
let diff;
|
|
430
437
|
try {
|
|
431
|
-
diff = syncPublishedPages(db, mindName, pageFiles);
|
|
438
|
+
diff = syncPublishedPages(db, mindName, hashFiles(snapshotDir, pageFiles));
|
|
432
439
|
} catch (err) {
|
|
433
440
|
return { error: `Failed to update page database: ${err.message}` };
|
|
434
441
|
}
|
|
@@ -504,7 +511,7 @@ Warning: remote publish failed: ${err.message}`;
|
|
|
504
511
|
const allFlag = flags.all;
|
|
505
512
|
const port = process.env.VOLUTE_DAEMON_PORT || "1618";
|
|
506
513
|
if (allFlag) {
|
|
507
|
-
const { getAllSites: getAllSites2, getSystemPages: getSystemPages2 } = await import("./db-
|
|
514
|
+
const { getAllSites: getAllSites2, getSystemPages: getSystemPages2 } = await import("./db-LZTLA7XC.js");
|
|
508
515
|
const sites = getAllSites2(db);
|
|
509
516
|
const system = getSystemPages2(db);
|
|
510
517
|
const lines2 = [];
|
|
@@ -2141,6 +2148,7 @@ var src_default = createExtension({
|
|
|
2141
2148
|
name: "Pages",
|
|
2142
2149
|
version: "0.1.0",
|
|
2143
2150
|
description: "Publish and serve web pages from mind directories",
|
|
2151
|
+
mindDoc: "Publish web pages others can visit \u2014 finished creative work, essays, experiments, anything you want to give a lasting home on the web.",
|
|
2144
2152
|
initDb,
|
|
2145
2153
|
routes: (ctx) => createRoutes(ctx),
|
|
2146
2154
|
publicRoutes: (ctx) => createPublicRoutes(ctx),
|
|
@@ -2165,13 +2173,10 @@ var src_default = createExtension({
|
|
|
2165
2173
|
ensurePagesRepo(ctx.dataDir, isolationFrom(ctx)).then(() => {
|
|
2166
2174
|
if (ctx.db) {
|
|
2167
2175
|
const repoDir = resolve5(ctx.dataDir, "repo");
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
} catch (err) {
|
|
2173
|
-
console.error("[pages] failed to sync system pages to DB:", err);
|
|
2174
|
-
}
|
|
2176
|
+
try {
|
|
2177
|
+
syncSystemPages(ctx.db, hashFiles(repoDir, collectHtmlFiles(repoDir)));
|
|
2178
|
+
} catch (err) {
|
|
2179
|
+
console.error("[pages] failed to sync system pages to DB:", err);
|
|
2175
2180
|
}
|
|
2176
2181
|
}
|
|
2177
2182
|
}).catch((err) => {
|