volute 0.46.0 → 0.48.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/README.md +10 -10
- package/dist/{accept-N5XULCXK.js → accept-KYNC5X3U.js} +1 -1
- package/dist/{activity-events-NF6VWTJQ.js → activity-events-MIOK3IOU.js} +3 -3
- package/dist/{ai-service-UODCCE4O.js → ai-service-643TNFPH.js} +8 -4
- package/dist/{archive-WS2L2VIQ.js → archive-6Z4GFQPH.js} +3 -3
- package/dist/{auth-CCFAU4GQ.js → auth-A4VGHADI.js} +4 -4
- package/dist/avatar-image-Y45R7LW5.js +23 -0
- package/dist/{backup-TST5C2YN.js → backup-UDH4GMSW.js} +15 -15
- package/dist/{bridge-2PO3AI5D.js → bridge-3FNSWLNQ.js} +1 -1
- package/dist/channels-SGQZHNQJ.js +89 -0
- package/dist/{chat-ZIQQS25U.js → chat-X43VYHH2.js} +12 -8
- package/dist/{chunk-ZV7MFISX.js → chunk-2MJ7EOMT.js} +20 -2
- package/dist/{chunk-R77O2WMK.js → chunk-2OIYNHWO.js} +1 -1
- package/dist/{chunk-QCN24XEN.js → chunk-3YUBFTDN.js} +1 -1
- package/dist/chunk-4FCL4DVZ.js +48 -0
- package/dist/{chunk-F7H6ATM4.js → chunk-5KXCM5AW.js} +18 -2
- package/dist/chunk-7KRIHYLR.js +124 -0
- package/dist/{chunk-RBNMDAKB.js → chunk-BCG45AQB.js} +15 -1
- package/dist/{chunk-QMJCNZ6C.js → chunk-C3KLHJDB.js} +1 -1
- package/dist/{chunk-H2X54EHC.js → chunk-DGGZVZTM.js} +1 -1
- package/dist/chunk-DW4TRDOZ.js +29 -0
- package/dist/{chunk-4JOQZPCE.js → chunk-EIQDZC43.js} +1 -1
- package/dist/{chunk-TQJ6ZYVY.js → chunk-FJ2MZ5PH.js} +41 -5
- package/dist/{chunk-BJZ4PV7R.js → chunk-HNGFKPNS.js} +26 -10
- package/dist/{chunk-5ZQZDDIK.js → chunk-HPGN6XRT.js} +3 -3
- package/dist/{chunk-KGIXX4NM.js → chunk-HUNDXZBZ.js} +5 -5
- package/dist/{chunk-ZDZISKCL.js → chunk-IJPMIEVE.js} +1 -1
- package/dist/chunk-IYCV34IU.js +158 -0
- package/dist/{chunk-ZNMCCHCP.js → chunk-LTLFOSA4.js} +2 -2
- package/dist/{chunk-K6T43YBD.js → chunk-MJRXFUMS.js} +26 -6
- package/dist/{chunk-4YU7HF4L.js → chunk-MOERAQXH.js} +6 -4
- package/dist/{chunk-KQSFTPIM.js → chunk-MTRMQFCQ.js} +1 -1
- package/dist/{chunk-OV7ZQ2GH.js → chunk-ODDGGLM6.js} +3 -3
- package/dist/{chunk-A7WQZKOU.js → chunk-OQJMTHEH.js} +2 -2
- package/dist/{chunk-RRNXJOKB.js → chunk-PJVPDY2Z.js} +2 -2
- package/dist/{chunk-FXORA5JG.js → chunk-Q7HOAVFR.js} +3 -3
- package/dist/{chunk-KDLYIECM.js → chunk-R772ET2M.js} +18 -4
- package/dist/{chunk-QLWG3C2Z.js → chunk-RRZ4RQQU.js} +2 -2
- package/dist/{mind-list-4D7J4CHD.js → chunk-SHKM5RGD.js} +18 -4
- package/dist/{chunk-RXEEYDIB.js → chunk-SZJCJVXV.js} +1 -1
- package/dist/{chunk-E3DA4HYV.js → chunk-T4VS7UDW.js} +15 -15
- package/dist/{chunk-YXSUMLTC.js → chunk-USD45JKR.js} +322 -76
- package/dist/{chunk-JO5IO4FH.js → chunk-VB2QXUJQ.js} +391 -294
- package/dist/{chunk-JZ62SYWR.js → chunk-VZRA5TYO.js} +1 -1
- package/dist/{chunk-PJ45FQPT.js → chunk-WARH6GIV.js} +8 -8
- package/dist/{chunk-PFZBNKUH.js → chunk-WCFSBH33.js} +0 -1
- package/dist/{chunk-DRJ24GXK.js → chunk-WQ46E33M.js} +59 -39
- package/dist/{chunk-ALKYQULU.js → chunk-WW6C3PLV.js} +1 -1
- package/dist/{chunk-CDPBTTZO.js → chunk-XVBSFLM7.js} +2 -2
- package/dist/{chunk-6EMWJZBK.js → chunk-YKA7DCVW.js} +1 -1
- package/dist/{chunk-IHKGWTGT.js → chunk-YNBXEQAP.js} +31 -1
- package/dist/cli.js +34 -26
- package/dist/{clock-RHS2JEDL.js → clock-CNRF6F7T.js} +3 -3
- package/dist/{cloud-sync-46RS4SDA.js → cloud-sync-WHKCB4CD.js} +22 -19
- package/dist/{config-TJLYUV3U.js → config-RPSLA2HX.js} +3 -3
- package/dist/{conversations-CJOOCGNW.js → conversations-C7IKYSHD.js} +4 -4
- package/dist/{create-IOV4GCRX.js → create-GJKHABJB.js} +16 -5
- package/dist/{create-DF3KISTW.js → create-VIQVP3QB.js} +1 -1
- package/dist/{daemon-client-IYR4KCPU.js → daemon-client-ZFY5MOAL.js} +5 -3
- package/dist/{daemon-restart-VFEI57UO.js → daemon-restart-7KUHVZIN.js} +7 -7
- package/dist/daemon.js +829 -496
- package/dist/{db-MF2JNRUW.js → db-FO6LXYCW.js} +2 -2
- package/dist/{db-LZTLA7XC.js → db-IPXRJUI7.js} +1 -1
- package/dist/{delete-HPLC7ETU.js → delete-ESEP7NGQ.js} +1 -1
- package/dist/delivery-manager-HZTT5SJR.js +36 -0
- package/dist/{delivery-router-N4A7ZC5T.js → delivery-router-3QFG2ZEX.js} +3 -3
- package/dist/{down-U2CZ23M4.js → down-G6IADJXV.js} +5 -5
- package/dist/echo-text-H3SH337Q.js +36 -0
- package/dist/env-6TGPO5WG.js +18 -0
- package/dist/{env-VZ4MLFQW.js → env-C7Z55QCJ.js} +6 -6
- package/dist/{exec-G3ZRST4Z.js → exec-QIFYZG4C.js} +3 -3
- package/dist/{export-LY723I3Z.js → export-C2K3NIRD.js} +4 -4
- package/dist/{extension-SEID47SR.js → extension-J4ZQ2GHV.js} +1 -1
- package/dist/{extensions-ZELQLTSR.js → extensions-GEKF47A4.js} +24 -19
- package/dist/{files-4LN3EN7Q.js → files-LXQSQOFG.js} +4 -4
- package/dist/{import-42YNQBF4.js → import-SX3ZXHB4.js} +8 -8
- package/dist/{isolation-YMGZZ4E5.js → isolation-MCT4ZYLT.js} +3 -3
- package/dist/{join-ZJV7W6MO.js → join-34TR2GXQ.js} +1 -1
- package/dist/{list-OXIAY3W7.js → list-PMUXZNAM.js} +1 -1
- package/dist/{login-MY6ETFYB.js → login-ARRZ4ORJ.js} +3 -3
- package/dist/{login-M6OJUPQ2.js → login-CL4IT2ED.js} +14 -5
- package/dist/{logout-WQBWO77G.js → logout-HZYJCYCA.js} +3 -3
- package/dist/{logout-NCG3TMDL.js → logout-YZRMZ3O2.js} +1 -1
- package/dist/message-delivery-GPQ5SE5N.js +40 -0
- package/dist/{mind-LHKS55DI.js → mind-46AOK373.js} +23 -19
- package/dist/{mind-activity-tracker-3QRNJVR4.js → mind-activity-tracker-YVZPC4A5.js} +4 -4
- package/dist/mind-contacts-GV7XYL5D.js +64 -0
- package/dist/{mind-history-VRO5A76U.js → mind-history-TTGA5BHZ.js} +5 -5
- package/dist/mind-list-OTHV4ZO4.js +13 -0
- package/dist/{mind-profile-PEQYASQX.js → mind-profile-LUG353ZT.js} +1 -1
- package/dist/mind-service-2ARGJNKP.js +44 -0
- package/dist/{mind-sleep-74TGOQBC.js → mind-sleep-DV7KP255.js} +3 -3
- package/dist/{mind-status-UO34ASXZ.js → mind-status-BJNPGXKC.js} +23 -1
- package/dist/{mind-wake-LCLGTXA2.js → mind-wake-LVTZ55EZ.js} +1 -1
- package/dist/notices-2KU5NTRY.js +25 -0
- package/dist/{package-DOD6CPO6.js → package-RTN2PS7O.js} +5 -3
- package/dist/{read-QVAXMTPV.js → read-YSWUXYL7.js} +1 -1
- package/dist/{register-Y2H4PY5R.js → register-42VBJKTP.js} +3 -3
- package/dist/{registry-OUZBZ3Q4.js → registry-UMMDRPRM.js} +2 -2
- package/dist/{reject-EV35X64Y.js → reject-SXGCYN4A.js} +1 -1
- package/dist/{restart-FJQ662XJ.js → restart-YYEGZJDD.js} +5 -5
- package/dist/{sandbox-ZJ7QA6Z6.js → sandbox-5VQ454XP.js} +4 -4
- package/dist/scheduler-I7JZCT47.js +34 -0
- package/dist/{schema-PVNG3PQM.js → schema-VEVO7HG6.js} +3 -1
- package/dist/{seed-CNYIHPOH.js → seed-F2HXZQU4.js} +1 -1
- package/dist/{seed-check-VLTVILOV.js → seed-check-TYD7RRZY.js} +1 -1
- package/dist/{seed-cmd-AVNUNLZV.js → seed-cmd-MLCTGSX5.js} +3 -3
- package/dist/{seed-create-ANXGYSCC.js → seed-create-KQ7OILWB.js} +6 -4
- package/dist/seed-readiness-RBPGOLSZ.js +18 -0
- package/dist/{seed-sprout-NIUFTX32.js → seed-sprout-HVYCFJLA.js} +30 -31
- package/dist/{send-SPE6DVNJ.js → send-TD2X5U3K.js} +6 -6
- package/dist/{service-UOCLXDWR.js → service-CVZMQYK6.js} +4 -4
- package/dist/{service-install-4HHFDDWY.js → service-install-VCRMFWX5.js} +5 -5
- package/dist/{setup-Y2EJI3GG.js → setup-5ECWTYKG.js} +7 -3
- package/dist/{setup-QT2A25SY.js → setup-AE4CVUC4.js} +7 -7
- package/dist/{skill-FKFHIJRR.js → skill-UUM4JZRF.js} +5 -5
- package/dist/skills/dreaming/SKILL.md +5 -1
- package/dist/skills/dreaming/scripts/dream.ts +5 -1
- package/dist/skills/orientation/SKILL.md +8 -7
- package/dist/skills/tending/SKILL.md +51 -2
- package/dist/skills/volute-mind/SKILL.md +2 -0
- package/dist/{skills-AKCFA7BN.js → skills-B3SVDCEB.js} +5 -5
- package/dist/sleep-manager-Z27R3WTW.js +38 -0
- package/dist/spirit-WXS3HCLN.js +25 -0
- package/dist/{split-WBMZXBHF.js → split-SKZ4Y2D6.js} +1 -1
- package/dist/{sprout-SMX42ZBP.js → sprout-KQ43BWZJ.js} +1 -1
- package/dist/{src-OJHARHTF.js → src-WLJE73NP.js} +14 -5
- package/dist/{start-5JE3TV66.js → start-O6UKK7BG.js} +3 -3
- package/dist/{status-SWRVGXBI.js → status-F4PGREUU.js} +19 -7
- package/dist/{stop-AAMTG3TU.js → stop-UBX6X5RA.js} +5 -5
- package/dist/system-chat-63ABFF6V.js +40 -0
- package/dist/{systems-VNB5WKSS.js → systems-JJNGQHAO.js} +4 -4
- package/dist/{tailscale-3XOKOW7T.js → tailscale-MCLY5GYE.js} +2 -2
- package/dist/{template-hash-446HHH5V.js → template-hash-GSOUARW4.js} +2 -2
- package/dist/template-staleness-EMQORSGG.js +15 -0
- package/dist/{turn-tracker-FOIBNUUA.js → turn-tracker-KLPV3PAU.js} +6 -6
- package/dist/up-RVGDE6CQ.js +20 -0
- package/dist/{update-SWAYZRWJ.js → update-OXQEGGXD.js} +5 -5
- package/dist/{update-check-PQ2MZ47K.js → update-check-266R4ZSY.js} +3 -3
- package/dist/{upgrade-NWAZ7MLD.js → upgrade-K5FIQPQD.js} +1 -1
- package/dist/{version-notify-C5CH7CVP.js → version-notify-73YURTFR.js} +41 -25
- package/dist/web-assets/assets/index-WdZ60R6c.css +1 -0
- package/dist/web-assets/assets/index-taX6Ezfa.js +92 -0
- package/dist/web-assets/index.html +2 -2
- package/drizzle/0011_drop_turn_summary_event_id.sql +3 -0
- package/drizzle/0012_channel_gates.sql +17 -0
- package/drizzle/meta/_journal.json +14 -0
- package/package.json +5 -3
- package/packages/extensions/pages/dist/ui/assets/index-BuXnE-rb.css +1 -0
- package/packages/extensions/pages/dist/ui/assets/index-DtzftuPA.js +2 -0
- package/packages/extensions/pages/dist/ui/index.html +2 -2
- package/templates/_base/src/lib/startup.ts +59 -3
- package/templates/claude/src/agent.ts +37 -4
- package/templates/claude/src/lib/session-reaper.ts +32 -0
- package/templates/claude/src/server.ts +14 -3
- package/templates/pi/src/agent.ts +7 -10
- package/templates/pi/src/lib/dispatch.ts +65 -0
- package/dist/avatar-image-6KY6UU4D.js +0 -16
- package/dist/delivery-manager-JINZRG2W.js +0 -33
- package/dist/echo-text-VQPB5L2X.js +0 -33
- package/dist/message-delivery-R7JSQGYX.js +0 -37
- package/dist/mind-service-NB2JMWQZ.js +0 -39
- package/dist/scheduler-WVKII3LA.js +0 -31
- package/dist/sleep-manager-G6TXSDP7.js +0 -35
- package/dist/spirit-RPBLLUQ5.js +0 -23
- package/dist/system-chat-NDAW6YP7.js +0 -37
- package/dist/up-PS6PFS75.js +0 -18
- package/dist/volute-config-A52FHWKM.js +0 -14
- package/dist/web-assets/assets/index-B1JBQv2m.css +0 -1
- package/dist/web-assets/assets/index-CU6XWICM.js +0 -86
- package/packages/extensions/pages/dist/ui/assets/index-BcY6lnq4.css +0 -1
- package/packages/extensions/pages/dist/ui/assets/index-CQjEQg1r.js +0 -2
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
getClient,
|
|
4
|
+
urlOf
|
|
5
|
+
} from "./chunk-LOPXTW6H.js";
|
|
6
|
+
import {
|
|
7
|
+
resolveMindName
|
|
8
|
+
} from "./chunk-BTY4WNFE.js";
|
|
9
|
+
import {
|
|
10
|
+
relativeAge
|
|
11
|
+
} from "./chunk-SHKM5RGD.js";
|
|
12
|
+
import {
|
|
13
|
+
daemonFetch
|
|
14
|
+
} from "./chunk-BCG45AQB.js";
|
|
15
|
+
import {
|
|
16
|
+
command
|
|
17
|
+
} from "./chunk-TXSA4Q3V.js";
|
|
18
|
+
import "./chunk-O7IGP7ZW.js";
|
|
19
|
+
import "./chunk-K3NQKI34.js";
|
|
20
|
+
|
|
21
|
+
// packages/cli/src/commands/mind-contacts.ts
|
|
22
|
+
var cmd = command({
|
|
23
|
+
name: "volute mind contacts",
|
|
24
|
+
description: "Who a mind has recently been in contact with (freshness-independent)",
|
|
25
|
+
flags: {
|
|
26
|
+
mind: { type: "string", description: "Mind name" },
|
|
27
|
+
hours: { type: "string", description: "Lookback window in hours (default 48)" }
|
|
28
|
+
},
|
|
29
|
+
examples: ["volute mind contacts --mind atlas", "volute mind contacts atlas --hours 24"],
|
|
30
|
+
run: async ({ flags }) => {
|
|
31
|
+
const name = resolveMindName(flags);
|
|
32
|
+
const client = getClient();
|
|
33
|
+
const url = client.api.minds[":name"].history.contacts.$url({ param: { name } });
|
|
34
|
+
if (flags.hours) url.searchParams.set("hours", flags.hours);
|
|
35
|
+
const res = await daemonFetch(urlOf(url));
|
|
36
|
+
if (!res.ok) {
|
|
37
|
+
let errorMsg = `Failed to get contacts: ${res.status}`;
|
|
38
|
+
try {
|
|
39
|
+
const data = await res.json();
|
|
40
|
+
if (data.error) errorMsg = data.error;
|
|
41
|
+
} catch {
|
|
42
|
+
}
|
|
43
|
+
console.error(errorMsg);
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
const { hours, contacts } = await res.json();
|
|
47
|
+
if (contacts.length === 0) {
|
|
48
|
+
console.log(`No contacts for ${name} in the last ${hours}h.`);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
console.log(`Recent contacts for ${name} (last ${hours}h):`);
|
|
52
|
+
for (const row of contacts) {
|
|
53
|
+
const channel = row.channel ?? "(unknown)";
|
|
54
|
+
const ago = relativeAge(row.last_at);
|
|
55
|
+
const last = ago ? `${ago} ago` : row.last_at;
|
|
56
|
+
const who = row.last_sender ? `, with ${row.last_sender}` : "";
|
|
57
|
+
console.log(` ${channel} \u2014 last ${last}, ${row.message_count} msg${who}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
var run = cmd.execute;
|
|
62
|
+
export {
|
|
63
|
+
run
|
|
64
|
+
};
|
|
@@ -3,16 +3,16 @@ import {
|
|
|
3
3
|
compactTime,
|
|
4
4
|
isCompact
|
|
5
5
|
} from "./chunk-5T5YMX6S.js";
|
|
6
|
+
import {
|
|
7
|
+
getClient,
|
|
8
|
+
urlOf
|
|
9
|
+
} from "./chunk-LOPXTW6H.js";
|
|
6
10
|
import {
|
|
7
11
|
resolveMindName
|
|
8
12
|
} from "./chunk-BTY4WNFE.js";
|
|
9
13
|
import {
|
|
10
14
|
daemonFetch
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import {
|
|
13
|
-
getClient,
|
|
14
|
-
urlOf
|
|
15
|
-
} from "./chunk-LOPXTW6H.js";
|
|
15
|
+
} from "./chunk-BCG45AQB.js";
|
|
16
16
|
import {
|
|
17
17
|
command
|
|
18
18
|
} from "./chunk-TXSA4Q3V.js";
|
|
@@ -29,7 +29,7 @@ var cmd = command({
|
|
|
29
29
|
);
|
|
30
30
|
process.exit(1);
|
|
31
31
|
}
|
|
32
|
-
const { daemonFetch } = await import("./daemon-client-
|
|
32
|
+
const { daemonFetch } = await import("./daemon-client-ZFY5MOAL.js");
|
|
33
33
|
const body = {};
|
|
34
34
|
if (displayName) body.displayName = displayName;
|
|
35
35
|
if (description) body.description = description;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
buildSeedOrientation,
|
|
4
|
+
recordMissingCredentialsNotice,
|
|
5
|
+
sleepMind,
|
|
6
|
+
startMindFull,
|
|
7
|
+
startSpiritFull,
|
|
8
|
+
stopMindFull,
|
|
9
|
+
stopSpiritFull,
|
|
10
|
+
wakeMind
|
|
11
|
+
} from "./chunk-VB2QXUJQ.js";
|
|
12
|
+
import "./chunk-HNGFKPNS.js";
|
|
13
|
+
import "./chunk-RRZ4RQQU.js";
|
|
14
|
+
import "./chunk-USD45JKR.js";
|
|
15
|
+
import "./chunk-MOERAQXH.js";
|
|
16
|
+
import "./chunk-HUNDXZBZ.js";
|
|
17
|
+
import "./chunk-ODDGGLM6.js";
|
|
18
|
+
import "./chunk-HPGN6XRT.js";
|
|
19
|
+
import "./chunk-VZRA5TYO.js";
|
|
20
|
+
import "./chunk-IYCV34IU.js";
|
|
21
|
+
import "./chunk-MTRMQFCQ.js";
|
|
22
|
+
import "./chunk-WQ46E33M.js";
|
|
23
|
+
import "./chunk-DW4TRDOZ.js";
|
|
24
|
+
import "./chunk-WCFSBH33.js";
|
|
25
|
+
import "./chunk-EIQDZC43.js";
|
|
26
|
+
import "./chunk-DGGZVZTM.js";
|
|
27
|
+
import "./chunk-IJPMIEVE.js";
|
|
28
|
+
import "./chunk-YNBXEQAP.js";
|
|
29
|
+
import "./chunk-5KXCM5AW.js";
|
|
30
|
+
import "./chunk-LTLFOSA4.js";
|
|
31
|
+
import "./chunk-T2TP6ZC6.js";
|
|
32
|
+
import "./chunk-WW6C3PLV.js";
|
|
33
|
+
import "./chunk-2MJ7EOMT.js";
|
|
34
|
+
import "./chunk-K3NQKI34.js";
|
|
35
|
+
export {
|
|
36
|
+
buildSeedOrientation,
|
|
37
|
+
recordMissingCredentialsNotice,
|
|
38
|
+
sleepMind,
|
|
39
|
+
startMindFull,
|
|
40
|
+
startSpiritFull,
|
|
41
|
+
stopMindFull,
|
|
42
|
+
stopSpiritFull,
|
|
43
|
+
wakeMind
|
|
44
|
+
};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
parseDuration
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-WARH6GIV.js";
|
|
5
5
|
import "./chunk-5T5YMX6S.js";
|
|
6
|
+
import "./chunk-LOPXTW6H.js";
|
|
6
7
|
import {
|
|
7
8
|
resolveMindName
|
|
8
9
|
} from "./chunk-BTY4WNFE.js";
|
|
9
10
|
import {
|
|
10
11
|
daemonFetch
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-LOPXTW6H.js";
|
|
12
|
+
} from "./chunk-BCG45AQB.js";
|
|
13
13
|
import {
|
|
14
14
|
command
|
|
15
15
|
} from "./chunk-TXSA4Q3V.js";
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-BTY4WNFE.js";
|
|
5
5
|
import {
|
|
6
6
|
daemonFetch
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-BCG45AQB.js";
|
|
8
8
|
import {
|
|
9
9
|
command
|
|
10
10
|
} from "./chunk-TXSA4Q3V.js";
|
|
@@ -41,6 +41,14 @@ var cmd = command({
|
|
|
41
41
|
if (mind.stage) console.log(`Stage: ${mind.stage}`);
|
|
42
42
|
if (mind.parent) console.log(`Parent: ${mind.parent}`);
|
|
43
43
|
if (mind.model) console.log(`Model: ${mind.model}`);
|
|
44
|
+
if (mind.templateStale) {
|
|
45
|
+
console.log(`Template: outdated \u2014 run 'volute mind upgrade ${mind.name}'`);
|
|
46
|
+
}
|
|
47
|
+
if (mind.lastNotice) {
|
|
48
|
+
const label = mind.lastNotice.kind === "turn_error" ? "Last turn failed" : "Last issue";
|
|
49
|
+
console.log(`
|
|
50
|
+
${label}: ${mind.lastNotice.detail}`);
|
|
51
|
+
}
|
|
44
52
|
if (mind.channels && mind.channels.length > 0) {
|
|
45
53
|
console.log(`
|
|
46
54
|
Channels:`);
|
|
@@ -57,6 +65,20 @@ Variants:`);
|
|
|
57
65
|
}
|
|
58
66
|
if (mind.hasPages) console.log(`
|
|
59
67
|
Pages: published`);
|
|
68
|
+
const pendingRes = await daemonFetch(
|
|
69
|
+
`/api/minds/${encodeURIComponent(name)}/delivery/pending`
|
|
70
|
+
).catch(() => null);
|
|
71
|
+
if (pendingRes?.ok) {
|
|
72
|
+
const pending = await pendingRes.json().catch(() => []);
|
|
73
|
+
if (pending.length > 0) {
|
|
74
|
+
const total = pending.reduce((sum, p) => sum + p.count, 0);
|
|
75
|
+
console.log(`
|
|
76
|
+
Gated channels (held, unrouted): ${total} message(s)`);
|
|
77
|
+
for (const p of pending) {
|
|
78
|
+
console.log(` ${p.channel ?? "unknown"}: ${p.count}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
60
82
|
}
|
|
61
83
|
});
|
|
62
84
|
var run = cmd.execute;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
MIND_LEVEL_SESSION,
|
|
4
|
+
clearDeliveredNotices,
|
|
5
|
+
drainNotices,
|
|
6
|
+
formatNotices,
|
|
7
|
+
hasUndeliveredNotice,
|
|
8
|
+
latestFailureNotice,
|
|
9
|
+
latestNotice,
|
|
10
|
+
recordNotice
|
|
11
|
+
} from "./chunk-IYCV34IU.js";
|
|
12
|
+
import "./chunk-T2TP6ZC6.js";
|
|
13
|
+
import "./chunk-WW6C3PLV.js";
|
|
14
|
+
import "./chunk-2MJ7EOMT.js";
|
|
15
|
+
import "./chunk-K3NQKI34.js";
|
|
16
|
+
export {
|
|
17
|
+
MIND_LEVEL_SESSION,
|
|
18
|
+
clearDeliveredNotices,
|
|
19
|
+
drainNotices,
|
|
20
|
+
formatNotices,
|
|
21
|
+
hasUndeliveredNotice,
|
|
22
|
+
latestFailureNotice,
|
|
23
|
+
latestNotice,
|
|
24
|
+
recordNotice
|
|
25
|
+
};
|
|
@@ -4,7 +4,7 @@ import "./chunk-K3NQKI34.js";
|
|
|
4
4
|
// package.json
|
|
5
5
|
var package_default = {
|
|
6
6
|
name: "volute",
|
|
7
|
-
version: "0.
|
|
7
|
+
version: "0.48.0",
|
|
8
8
|
description: "CLI for creating and managing self-modifying AI minds powered by the Claude Agent SDK",
|
|
9
9
|
type: "module",
|
|
10
10
|
license: "MIT",
|
|
@@ -62,6 +62,7 @@ var package_default = {
|
|
|
62
62
|
"typecheck:templates": "tsx scripts/typecheck-templates.ts",
|
|
63
63
|
"lint:templates": "biome check templates/",
|
|
64
64
|
"typecheck:web": "svelte-check --tsconfig packages/web/tsconfig.json",
|
|
65
|
+
knip: "knip --workspace packages/web --include files",
|
|
65
66
|
prepare: "lefthook install",
|
|
66
67
|
prepublishOnly: "npm run build",
|
|
67
68
|
"db:generate": "drizzle-kit generate",
|
|
@@ -69,10 +70,10 @@ var package_default = {
|
|
|
69
70
|
},
|
|
70
71
|
dependencies: {
|
|
71
72
|
"@anthropic-ai/sandbox-runtime": "^0.0.56",
|
|
73
|
+
"@earendil-works/pi-ai": "^0.80.3",
|
|
72
74
|
"@hono/node-server": "^2.0.6",
|
|
73
75
|
"@hono/zod-validator": "^0.8.0",
|
|
74
76
|
"@libsql/client": "^0.17.4",
|
|
75
|
-
"@earendil-works/pi-ai": "^0.80.3",
|
|
76
77
|
"@slack/bolt": "^4.7.3",
|
|
77
78
|
"adm-zip": "^0.5.17",
|
|
78
79
|
bcryptjs: "^3.0.3",
|
|
@@ -83,6 +84,7 @@ var package_default = {
|
|
|
83
84
|
"isomorphic-dompurify": "^2.36.0",
|
|
84
85
|
libsql: "^0.5.29",
|
|
85
86
|
replicate: "^1.4.0",
|
|
87
|
+
sharp: "^0.35.2",
|
|
86
88
|
telegraf: "^4.16.3",
|
|
87
89
|
undici: "^6.24.1",
|
|
88
90
|
zod: "^4.4.3"
|
|
@@ -96,9 +98,9 @@ var package_default = {
|
|
|
96
98
|
"@types/node": "^26.0.0",
|
|
97
99
|
dompurify: "^3.4.11",
|
|
98
100
|
"drizzle-kit": "^0.31.10",
|
|
101
|
+
knip: "^6.26.0",
|
|
99
102
|
lefthook: "^2.1.9",
|
|
100
103
|
marked: "^18.0.5",
|
|
101
|
-
sharp: "^0.35.2",
|
|
102
104
|
svelte: "^5.56.3",
|
|
103
105
|
"svelte-check": "4.7.1",
|
|
104
106
|
tsup: "^8.5.1",
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
getClient,
|
|
4
|
+
urlOf
|
|
5
|
+
} from "./chunk-LOPXTW6H.js";
|
|
2
6
|
import {
|
|
3
7
|
resolveMindName
|
|
4
8
|
} from "./chunk-BTY4WNFE.js";
|
|
5
9
|
import {
|
|
6
10
|
daemonFetch
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import {
|
|
9
|
-
getClient,
|
|
10
|
-
urlOf
|
|
11
|
-
} from "./chunk-LOPXTW6H.js";
|
|
11
|
+
} from "./chunk-BCG45AQB.js";
|
|
12
12
|
import {
|
|
13
13
|
command
|
|
14
14
|
} from "./chunk-TXSA4Q3V.js";
|
|
@@ -7,11 +7,11 @@ import {
|
|
|
7
7
|
isSandboxOptional,
|
|
8
8
|
shellEscape,
|
|
9
9
|
wrapForSandbox
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
10
|
+
} from "./chunk-VZRA5TYO.js";
|
|
11
|
+
import "./chunk-5KXCM5AW.js";
|
|
12
12
|
import "./chunk-T2TP6ZC6.js";
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-WW6C3PLV.js";
|
|
14
|
+
import "./chunk-2MJ7EOMT.js";
|
|
15
15
|
import "./chunk-K3NQKI34.js";
|
|
16
16
|
export {
|
|
17
17
|
SandboxUnavailableError,
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
Scheduler,
|
|
4
|
+
getScheduler,
|
|
5
|
+
initScheduler
|
|
6
|
+
} from "./chunk-VB2QXUJQ.js";
|
|
7
|
+
import "./chunk-HNGFKPNS.js";
|
|
8
|
+
import "./chunk-RRZ4RQQU.js";
|
|
9
|
+
import "./chunk-USD45JKR.js";
|
|
10
|
+
import "./chunk-MOERAQXH.js";
|
|
11
|
+
import "./chunk-HUNDXZBZ.js";
|
|
12
|
+
import "./chunk-ODDGGLM6.js";
|
|
13
|
+
import "./chunk-HPGN6XRT.js";
|
|
14
|
+
import "./chunk-VZRA5TYO.js";
|
|
15
|
+
import "./chunk-IYCV34IU.js";
|
|
16
|
+
import "./chunk-MTRMQFCQ.js";
|
|
17
|
+
import "./chunk-WQ46E33M.js";
|
|
18
|
+
import "./chunk-DW4TRDOZ.js";
|
|
19
|
+
import "./chunk-WCFSBH33.js";
|
|
20
|
+
import "./chunk-EIQDZC43.js";
|
|
21
|
+
import "./chunk-DGGZVZTM.js";
|
|
22
|
+
import "./chunk-IJPMIEVE.js";
|
|
23
|
+
import "./chunk-YNBXEQAP.js";
|
|
24
|
+
import "./chunk-5KXCM5AW.js";
|
|
25
|
+
import "./chunk-LTLFOSA4.js";
|
|
26
|
+
import "./chunk-T2TP6ZC6.js";
|
|
27
|
+
import "./chunk-WW6C3PLV.js";
|
|
28
|
+
import "./chunk-2MJ7EOMT.js";
|
|
29
|
+
import "./chunk-K3NQKI34.js";
|
|
30
|
+
export {
|
|
31
|
+
Scheduler,
|
|
32
|
+
getScheduler,
|
|
33
|
+
initScheduler
|
|
34
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
activity,
|
|
4
|
+
channelGates,
|
|
4
5
|
channels,
|
|
5
6
|
conversationParticipants,
|
|
6
7
|
conversationReads,
|
|
@@ -16,10 +17,11 @@ import {
|
|
|
16
17
|
systemPrompts,
|
|
17
18
|
turns,
|
|
18
19
|
users
|
|
19
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-2MJ7EOMT.js";
|
|
20
21
|
import "./chunk-K3NQKI34.js";
|
|
21
22
|
export {
|
|
22
23
|
activity,
|
|
24
|
+
channelGates,
|
|
23
25
|
channels,
|
|
24
26
|
conversationParticipants,
|
|
25
27
|
conversationReads,
|
|
@@ -4,7 +4,7 @@ import "./chunk-K3NQKI34.js";
|
|
|
4
4
|
// packages/cli/src/commands/seed.ts
|
|
5
5
|
async function run(args) {
|
|
6
6
|
console.error("Note: `volute mind seed` is now `volute seed create`");
|
|
7
|
-
await import("./seed-create-
|
|
7
|
+
await import("./seed-create-KQ7OILWB.js").then((m) => m.run(args));
|
|
8
8
|
}
|
|
9
9
|
export {
|
|
10
10
|
run
|
|
@@ -13,7 +13,7 @@ var cmd = command({
|
|
|
13
13
|
flags: {},
|
|
14
14
|
run: async ({ args }) => {
|
|
15
15
|
const name = args.name;
|
|
16
|
-
const { daemonFetch } = await import("./daemon-client-
|
|
16
|
+
const { daemonFetch } = await import("./daemon-client-ZFY5MOAL.js");
|
|
17
17
|
const res = await daemonFetch(`/api/minds/${encodeURIComponent(name)}/seed-check`);
|
|
18
18
|
if (!res.ok) {
|
|
19
19
|
if (res.status === 404) {
|
|
@@ -12,15 +12,15 @@ var cmd = subcommands({
|
|
|
12
12
|
commands: {
|
|
13
13
|
create: {
|
|
14
14
|
description: "Plant a new seed",
|
|
15
|
-
run: (args) => import("./seed-create-
|
|
15
|
+
run: (args) => import("./seed-create-KQ7OILWB.js").then((m) => m.run(args))
|
|
16
16
|
},
|
|
17
17
|
sprout: {
|
|
18
18
|
description: "Complete orientation and become a full mind",
|
|
19
|
-
run: (args) => import("./seed-sprout-
|
|
19
|
+
run: (args) => import("./seed-sprout-HVYCFJLA.js").then((m) => m.run(args))
|
|
20
20
|
},
|
|
21
21
|
check: {
|
|
22
22
|
description: "Check seed readiness",
|
|
23
|
-
run: (args) => import("./seed-check-
|
|
23
|
+
run: (args) => import("./seed-check-TYD7RRZY.js").then((m) => m.run(args))
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
});
|
|
@@ -47,19 +47,19 @@ var cmd = command({
|
|
|
47
47
|
const name = args.name;
|
|
48
48
|
const skills = flags.skills === "none" ? [] : flags.skills ? flags.skills.split(",") : void 0;
|
|
49
49
|
const createdBy = flags["created-by"];
|
|
50
|
-
const { daemonFetch } = await import("./daemon-client-
|
|
50
|
+
const { daemonFetch } = await import("./daemon-client-ZFY5MOAL.js");
|
|
51
51
|
const { getClient, urlOf } = await import("./api-client-LC5YRA32.js");
|
|
52
52
|
const client = getClient();
|
|
53
53
|
let model = flags.model;
|
|
54
54
|
let template = flags.template;
|
|
55
55
|
if (!template) {
|
|
56
|
-
const { resolveTemplate } = await import("./ai-service-
|
|
56
|
+
const { resolveTemplate } = await import("./ai-service-643TNFPH.js");
|
|
57
57
|
template = await resolveTemplate(model);
|
|
58
58
|
}
|
|
59
59
|
if (template !== "claude" && !model) {
|
|
60
60
|
if (process.env.VOLUTE_MIND || !process.stdin.isTTY) {
|
|
61
|
-
const { getSpiritModel } = await import("./spirit-
|
|
62
|
-
const { qualifyModelId } = await import("./ai-service-
|
|
61
|
+
const { getSpiritModel } = await import("./spirit-WXS3HCLN.js");
|
|
62
|
+
const { qualifyModelId } = await import("./ai-service-643TNFPH.js");
|
|
63
63
|
const spiritModel = getSpiritModel();
|
|
64
64
|
if (spiritModel) {
|
|
65
65
|
model = template === "pi" ? qualifyModelId(spiritModel) : spiritModel;
|
|
@@ -91,6 +91,8 @@ var cmd = command({
|
|
|
91
91
|
console.error(createData.error ?? "Failed to create mind");
|
|
92
92
|
process.exit(1);
|
|
93
93
|
}
|
|
94
|
+
if (createData.credentialWarning) console.warn(`
|
|
95
|
+
\u26A0 ${createData.credentialWarning}`);
|
|
94
96
|
const startRes = await daemonFetch(
|
|
95
97
|
urlOf(client.api.minds[":name"].start.$url({ param: { name } })),
|
|
96
98
|
{ method: "POST" }
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
evaluateSeedChecklist,
|
|
4
|
+
isMemoryWritten,
|
|
5
|
+
isSoulWritten
|
|
6
|
+
} from "./chunk-4FCL4DVZ.js";
|
|
7
|
+
import "./chunk-MOERAQXH.js";
|
|
8
|
+
import "./chunk-DW4TRDOZ.js";
|
|
9
|
+
import "./chunk-WCFSBH33.js";
|
|
10
|
+
import "./chunk-5KXCM5AW.js";
|
|
11
|
+
import "./chunk-WW6C3PLV.js";
|
|
12
|
+
import "./chunk-2MJ7EOMT.js";
|
|
13
|
+
import "./chunk-K3NQKI34.js";
|
|
14
|
+
export {
|
|
15
|
+
evaluateSeedChecklist,
|
|
16
|
+
isMemoryWritten,
|
|
17
|
+
isSoulWritten
|
|
18
|
+
};
|
|
@@ -1,28 +1,31 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
daemonFetch
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-BCG45AQB.js";
|
|
5
|
+
import {
|
|
6
|
+
evaluateSeedChecklist
|
|
7
|
+
} from "./chunk-4FCL4DVZ.js";
|
|
5
8
|
import {
|
|
6
9
|
command
|
|
7
10
|
} from "./chunk-TXSA4Q3V.js";
|
|
8
11
|
import "./chunk-O7IGP7ZW.js";
|
|
12
|
+
import "./chunk-MOERAQXH.js";
|
|
9
13
|
import {
|
|
10
14
|
getStandardSkillsWithExtensions
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-F7H6ATM4.js";
|
|
15
|
+
} from "./chunk-HUNDXZBZ.js";
|
|
16
|
+
import "./chunk-DW4TRDOZ.js";
|
|
17
|
+
import "./chunk-WCFSBH33.js";
|
|
18
|
+
import "./chunk-DGGZVZTM.js";
|
|
19
|
+
import "./chunk-5KXCM5AW.js";
|
|
17
20
|
import "./chunk-T2TP6ZC6.js";
|
|
18
21
|
import {
|
|
19
22
|
mindDir
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
23
|
+
} from "./chunk-WW6C3PLV.js";
|
|
24
|
+
import "./chunk-2MJ7EOMT.js";
|
|
22
25
|
import "./chunk-K3NQKI34.js";
|
|
23
26
|
|
|
24
27
|
// packages/cli/src/commands/seed-sprout.ts
|
|
25
|
-
import { existsSync
|
|
28
|
+
import { existsSync } from "fs";
|
|
26
29
|
import { resolve } from "path";
|
|
27
30
|
var cmd = command({
|
|
28
31
|
name: "volute seed sprout",
|
|
@@ -45,37 +48,33 @@ var cmd = command({
|
|
|
45
48
|
process.exit(1);
|
|
46
49
|
}
|
|
47
50
|
const dir = mindDir(mindName);
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
const checklist = evaluateSeedChecklist(dir);
|
|
52
|
+
if (!checklist.soulWritten) {
|
|
53
|
+
console.error(
|
|
54
|
+
"Your SOUL.md is still the orientation template (or unwritten). Write your own identity first."
|
|
55
|
+
);
|
|
52
56
|
process.exit(1);
|
|
53
57
|
}
|
|
54
|
-
|
|
55
|
-
if (soul.includes(ORIENTATION_MARKER)) {
|
|
58
|
+
if (!checklist.memoryWritten) {
|
|
56
59
|
console.error(
|
|
57
|
-
"Your
|
|
60
|
+
"Your MEMORY.md is still empty or the starter placeholder. Write your own memory first."
|
|
58
61
|
);
|
|
59
62
|
process.exit(1);
|
|
60
63
|
}
|
|
61
|
-
if (!
|
|
62
|
-
console.error(
|
|
64
|
+
if (!checklist.displayNameSet) {
|
|
65
|
+
console.error(
|
|
66
|
+
'Set your display name before sprouting: volute mind profile --display-name "Your Name"'
|
|
67
|
+
);
|
|
63
68
|
process.exit(1);
|
|
64
69
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
if (!avatarPath || !existsSync(resolve(dir, "home", avatarPath))) {
|
|
71
|
-
console.error(
|
|
72
|
-
"Generate an avatar before sprouting. Use `imagegen generate` to create one, then `volute mind profile --avatar <path>` to set it."
|
|
73
|
-
);
|
|
74
|
-
process.exit(1);
|
|
75
|
-
}
|
|
70
|
+
if (checklist.imagegenEnabled && !checklist.avatarSet) {
|
|
71
|
+
console.error(
|
|
72
|
+
"Generate an avatar before sprouting. Use `imagegen generate` to create one, then `volute mind profile --avatar <path>` to set it."
|
|
73
|
+
);
|
|
74
|
+
process.exit(1);
|
|
76
75
|
}
|
|
77
76
|
const { getClient, urlOf } = await import("./api-client-LC5YRA32.js");
|
|
78
|
-
const { mindSkillsDir } = await import("./skills-
|
|
77
|
+
const { mindSkillsDir } = await import("./skills-B3SVDCEB.js");
|
|
79
78
|
const client = getClient();
|
|
80
79
|
const failedSkills = [];
|
|
81
80
|
for (const skillId of getStandardSkillsWithExtensions()) {
|
|
@@ -5,22 +5,22 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
isCompact
|
|
7
7
|
} from "./chunk-5T5YMX6S.js";
|
|
8
|
-
import {
|
|
9
|
-
daemonFetch
|
|
10
|
-
} from "./chunk-RBNMDAKB.js";
|
|
11
8
|
import {
|
|
12
9
|
getClient,
|
|
13
10
|
urlOf
|
|
14
11
|
} from "./chunk-LOPXTW6H.js";
|
|
12
|
+
import {
|
|
13
|
+
daemonFetch
|
|
14
|
+
} from "./chunk-BCG45AQB.js";
|
|
15
15
|
import {
|
|
16
16
|
command
|
|
17
17
|
} from "./chunk-TXSA4Q3V.js";
|
|
18
18
|
import "./chunk-O7IGP7ZW.js";
|
|
19
19
|
import {
|
|
20
20
|
formatFileSize
|
|
21
|
-
} from "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
21
|
+
} from "./chunk-2OIYNHWO.js";
|
|
22
|
+
import "./chunk-WW6C3PLV.js";
|
|
23
|
+
import "./chunk-2MJ7EOMT.js";
|
|
24
24
|
import "./chunk-K3NQKI34.js";
|
|
25
25
|
|
|
26
26
|
// packages/cli/src/commands/send.ts
|