volute 0.53.0 → 0.55.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-LQII6PZS.js → activity-events-TFAJBNBW.js} +2 -2
- package/dist/{ai-service-YW5SWCSB.js → ai-service-KEK2V3AP.js} +2 -2
- package/dist/{auth-KRDSM55Q.js → auth-Y27LTNZK.js} +3 -3
- package/dist/auto-upgrade-2MZF7NG3.js +46 -0
- package/dist/{avatar-image-52WGXLHV.js → avatar-image-SN576P45.js} +2 -2
- package/dist/{backup-WWXVIMYQ.js → backup-GDCWH6MC.js} +12 -12
- package/dist/channels-AFJWGX7W.js +203 -0
- package/dist/{chat-WK2BLM7B.js → chat-HVPOZK3O.js} +9 -9
- package/dist/{chunk-QUSMYGNQ.js → chunk-2674KIGI.js} +1 -0
- package/dist/chunk-2GATCSZK.js +520 -0
- package/dist/{chunk-P2TBUKLW.js → chunk-3SFKY4GI.js} +4 -4
- package/dist/{chunk-RMADJFA7.js → chunk-45QTYKQQ.js} +4 -4
- package/dist/{chunk-TAWRJ24T.js → chunk-4VAQKLMU.js} +8 -5
- package/dist/{chunk-OXWUEU5V.js → chunk-5U5GLZSD.js} +2 -2
- package/dist/{chunk-TPX6E6PL.js → chunk-6HBGUPBA.js} +2 -2
- package/dist/{chunk-UFTDRTCP.js → chunk-7AA4T2RT.js} +2 -2
- package/dist/{chunk-LN7XJ56R.js → chunk-7XKPG66D.js} +9 -9
- package/dist/{chunk-VDZ4I4ZP.js → chunk-BP2X5AIK.js} +8 -14
- package/dist/{chunk-PIZDPY4G.js → chunk-CKOA4LWV.js} +12 -12
- package/dist/{chunk-6NLW72HP.js → chunk-CKPAVQNK.js} +1 -1
- package/dist/{chunk-IQ7VNWH6.js → chunk-DUV4EMNW.js} +37 -3
- package/dist/{chunk-CV6BNGFK.js → chunk-FSXPPOPM.js} +3 -3
- package/dist/{chunk-UTKUO2KY.js → chunk-FZUPIS3T.js} +3 -3
- package/dist/{chunk-L7BKTZ5U.js → chunk-G3XAB4DK.js} +1 -1
- package/dist/{chunk-23UJGVYP.js → chunk-HLWQ3P3R.js} +50 -46
- package/dist/{chunk-AP2KQMMW.js → chunk-HTSWDOJE.js} +11 -14
- package/dist/{chunk-EDR47UE2.js → chunk-IR2FW4W7.js} +2 -2
- package/dist/{chunk-ICXY54ZC.js → chunk-IT4GEFDH.js} +1 -1
- package/dist/{chunk-F6D766VQ.js → chunk-KS62IHE2.js} +1 -1
- package/dist/{chunk-LNNI3MS4.js → chunk-MNKPAAQF.js} +9 -2
- package/dist/{chunk-HASADR3E.js → chunk-NCRG4SBR.js} +241 -66
- package/dist/{chunk-I7U5EEZC.js → chunk-NM5FDH4T.js} +1 -1
- package/dist/{chunk-7LT3YZUR.js → chunk-OFU6WJJZ.js} +1 -1
- package/dist/{chunk-M77B73VV.js → chunk-OIOW3FPT.js} +7 -2
- package/dist/{chunk-BDHKCLWK.js → chunk-OKM67ZWH.js} +1 -1
- package/dist/chunk-OUGD5L5U.js +918 -0
- package/dist/{chunk-X67BDDZR.js → chunk-P3GXOT2X.js} +48 -2
- package/dist/{chunk-U54PJPTB.js → chunk-PRZUBJ4K.js} +1 -1
- package/dist/{chunk-UO4MZQNO.js → chunk-QVS3C4DK.js} +15 -7
- package/dist/{chunk-RQRO6PC7.js → chunk-TMTAHKYP.js} +324 -48
- package/dist/{chunk-5DBGQBQR.js → chunk-UEZC5MNB.js} +29 -18
- package/dist/{chunk-7ARONCZW.js → chunk-VTFXZPC3.js} +13 -13
- package/dist/{chunk-UDZLPR34.js → chunk-W3OIPJPB.js} +14 -9
- package/dist/{chunk-HTB7KDRU.js → chunk-WZZCA23D.js} +5 -4
- package/dist/{chunk-5Y54AE3L.js → chunk-XAG53RWY.js} +1 -1
- package/dist/{chunk-HTRSSOHY.js → chunk-YU5EYQAE.js} +1 -1
- package/dist/{chunk-5N32EN4O.js → chunk-Z4Q6TQWL.js} +1 -1
- package/dist/{chunk-EGV6R6UF.js → chunk-Z7TNIIHW.js} +3 -1
- package/dist/cli.js +19 -19
- package/dist/{clock-SH4NQC2F.js → clock-X7V3C7NL.js} +3 -3
- package/dist/{cloud-sync-MJVJ33LD.js → cloud-sync-FM73SVFJ.js} +21 -21
- package/dist/{conversations-ZL6PHROD.js → conversations-FH3ODBL7.js} +3 -3
- package/dist/{create-G2RIKQYK.js → create-P75ZFTVN.js} +1 -1
- package/dist/{daemon-restart-BIGU4OKS.js → daemon-restart-JQMMMITM.js} +4 -4
- package/dist/daemon.js +469 -857
- package/dist/db-JH3NTERX.js +36 -0
- package/dist/delivery-manager-H23Q23N7.js +41 -0
- package/dist/{delivery-notices-65TB3CBX.js → delivery-notices-S7TKOACE.js} +5 -5
- package/dist/{delivery-router-RHANNTAC.js → delivery-router-KHBVEVVL.js} +4 -2
- package/dist/{down-QSNEMTTX.js → down-UN2EDX2Y.js} +3 -3
- package/dist/echo-text-ULEIFJJF.js +40 -0
- package/dist/{exec-ABD3DYA2.js → exec-Z34TTUO3.js} +1 -1
- package/dist/extensions-QD22GXZD.js +74 -0
- package/dist/{files-CHPNEQXN.js → files-DUGRXN6V.js} +5 -5
- package/dist/{import-DB2KULRO.js → import-RDDUGGFI.js} +3 -3
- package/dist/{isolation-GVV2IBAU.js → isolation-UQPDO34R.js} +1 -1
- package/dist/message-delivery-LU4EP244.js +46 -0
- package/dist/migrate-init-infrastructure-Z72UJ5NT.js +44 -0
- package/dist/migrate-name-placeholder-64AEAWPE.js +37 -0
- package/dist/{migrate-thread-config-EQSEP2XG.js → migrate-thread-config-SVF2M3D3.js} +1 -1
- package/dist/{mind-IX5AWUST.js → mind-BARCLI7O.js} +14 -14
- package/dist/{mind-activity-tracker-QF6DCX2X.js → mind-activity-tracker-UT23RGBF.js} +3 -3
- package/dist/{mind-contacts-BKUOUJPV.js → mind-contacts-PEXCDRXA.js} +8 -8
- package/dist/{mind-list-KNU34SUD.js → mind-list-7KBLPLES.js} +2 -2
- package/dist/mind-service-ZJCUBAUL.js +48 -0
- package/dist/{mind-sleep-D3DEYAWG.js → mind-sleep-24HV4RCA.js} +5 -5
- package/dist/{mind-status-BPTLQ5Z6.js → mind-status-4YW4PHMO.js} +6 -3
- package/dist/{package-BN5KMU54.js → package-AUDBDKAO.js} +12 -14
- package/dist/{prompts-HNKGCAEY.js → prompts-MOBF3TMO.js} +1 -1
- package/dist/{sandbox-NNWCTHRI.js → sandbox-VI7XWBIA.js} +2 -2
- package/dist/scheduler-GLINVC2B.js +27 -0
- package/dist/{seed-LHZ33UB4.js → seed-5JGR7ZRA.js} +1 -1
- package/dist/{seed-cmd-U4RVJ3UA.js → seed-cmd-M6A7N7F3.js} +2 -2
- package/dist/{seed-create-OQU4KNCB.js → seed-create-TGFZW4IO.js} +3 -3
- package/dist/{seed-readiness-WJYYRRCK.js → seed-readiness-XBH2MUNA.js} +2 -2
- package/dist/{seed-sprout-SFUYH2RG.js → seed-sprout-3IC5ZVTI.js} +11 -11
- package/dist/{send-FWZAMDBN.js → send-DHYBAYK4.js} +11 -11
- package/dist/{service-XQPMZAGI.js → service-T4P5W6RS.js} +2 -2
- package/dist/{service-install-2EWD7KXD.js → service-install-R4SNYUVO.js} +3 -3
- package/dist/{setup-RVSGCIF3.js → setup-6KAH3GRW.js} +4 -4
- package/dist/skills/dreaming/SKILL.md +2 -2
- package/dist/skills/dreaming/references/INSTALL.md +1 -1
- package/dist/skills/tending/SKILL.md +2 -0
- package/dist/skills/volute-mind/SKILL.md +8 -0
- package/dist/skills/volute-mind/references/integrations.md +3 -2
- package/dist/skills/volute-mind/references/routing.md +18 -5
- package/dist/{skills-QRPU6BWY.js → skills-LKQCYFVP.js} +3 -3
- package/dist/sleep-manager-Q3ITFNOJ.js +42 -0
- package/dist/{spirit-I5ECLGRI.js → spirit-FKXMGO3N.js} +8 -6
- package/dist/spirit-availability-5R2WYSWF.js +43 -0
- package/dist/{sprout-A2PMEF7Z.js → sprout-VEW3CUNX.js} +1 -1
- package/dist/src-246GSX7A.js +519 -0
- package/dist/src-LOUB3WPR.js +4189 -0
- package/dist/{status-EYG4A3OK.js → status-LCKTTIWS.js} +5 -5
- package/dist/{system-events-YTOU66QI.js → system-events-ZYOCYAO2.js} +5 -3
- package/dist/{systems-2DIJY4RF.js → systems-HL7SGSW7.js} +6 -6
- package/dist/{tailscale-KHNZFC7L.js → tailscale-F2IMBILZ.js} +1 -1
- package/dist/{template-hash-YKWMVYMM.js → template-hash-RJRMF6DT.js} +2 -2
- package/dist/{template-staleness-PY2CULH6.js → template-staleness-IBD722PN.js} +4 -4
- package/dist/{turn-tracker-NNHS6MAR.js → turn-tracker-BE34OI6O.js} +7 -7
- package/dist/{up-UGBHH743.js → up-J47J5JRB.js} +3 -3
- package/dist/{update-CIWI2JYA.js → update-ILCPVNDD.js} +2 -2
- package/dist/{upgrade-LIE46UBB.js → upgrade-XY2J7NWZ.js} +9 -1
- package/dist/variant-cleanup-JGJZ5KB4.js +24 -0
- package/dist/{version-notify-SJVAQLZI.js → version-notify-KIXYNHJC.js} +28 -13
- package/dist/web-assets/assets/{index-b7G7ZsVk.js → index-CoU1eUKE.js} +25 -25
- package/dist/web-assets/assets/index-hPn_fkz3.css +1 -0
- package/dist/web-assets/index.html +2 -2
- package/package.json +12 -14
- package/packages/extensions/intentions/dist/ui/assets/index-3FneLCKR.css +1 -0
- package/packages/extensions/intentions/dist/ui/assets/index-Bl5KEcli.js +67 -0
- package/packages/extensions/{notes → intentions}/dist/ui/index.html +3 -3
- package/packages/extensions/intentions/skills/intention-review/SKILL.md +38 -0
- package/packages/extensions/intentions/skills/intentions/SKILL.md +49 -0
- package/packages/extensions/intentions/skills/intentions/scripts/intentions-hook.sh +45 -0
- package/packages/extensions/pages/dist/ui/assets/index-BKxVQkA9.css +1 -0
- package/packages/extensions/pages/dist/ui/assets/index-BMt6sStP.js +68 -0
- package/packages/extensions/pages/dist/ui/index.html +2 -2
- package/packages/extensions/pages/skills/commons-gardening/SKILL.md +50 -0
- package/packages/extensions/pages/skills/pages/SKILL.md +140 -16
- package/templates/_base/.init/.config/prompts.json +2 -3
- package/templates/{pi → _base}/.init/.config/routes.json +1 -0
- package/templates/_base/.init/.local/hooks/pre-prompt/turn-context.ts +30 -0
- package/templates/_base/.init/memory/dreams/.gitkeep +0 -0
- package/templates/_base/home/.config/routes.json +1 -1
- package/templates/_base/home/VOLUTE.md +1 -1
- package/templates/_base/src/lib/codex-session-seed.ts +6 -55
- package/templates/_base/src/lib/context-breakdown.ts +11 -3
- package/templates/_base/src/lib/pi-session-seed.ts +8 -57
- package/templates/_base/src/lib/routing.ts +2 -2
- package/templates/_base/src/lib/seed-note.ts +4 -4
- package/templates/_base/src/lib/session-seed.ts +8 -53
- package/templates/_base/src/lib/startup.ts +4 -22
- package/templates/claude/.init/CLAUDE.md +4 -0
- package/templates/claude/package.json +2 -2
- package/templates/claude/src/agent.ts +60 -112
- package/templates/claude/src/lib/hooks/pre-compact.ts +6 -6
- package/templates/claude/src/lib/message-channel.ts +43 -15
- package/templates/claude/src/lib/recover.ts +69 -0
- package/templates/claude/src/lib/stream-consumer.ts +23 -5
- package/templates/claude/src/server.ts +0 -1
- package/templates/claude/volute-template.json +1 -1
- package/templates/codex/.init/AGENTS.md +4 -0
- package/templates/codex/package.json +2 -2
- package/templates/codex/src/agent.ts +23 -89
- package/templates/codex/volute-template.json +1 -1
- package/templates/pi/.init/MINDS.md +4 -0
- package/templates/pi/package.json +1 -1
- package/templates/pi/src/agent.ts +26 -93
- package/templates/pi/src/lib/mechanics-doc.ts +30 -0
- package/templates/pi/src/server.ts +3 -2
- package/templates/pi/volute-template.json +1 -1
- package/dist/channels-LW5ZLMSQ.js +0 -90
- package/dist/chunk-R772ET2M.js +0 -164
- package/dist/db-IPXRJUI7.js +0 -20
- package/dist/delivery-manager-FDHCZ7PU.js +0 -37
- package/dist/echo-text-KU6G4Z7V.js +0 -40
- package/dist/extensions-VACUKFA5.js +0 -60
- package/dist/message-delivery-TUXM3AAE.js +0 -46
- package/dist/mind-service-WHFBUKZE.js +0 -48
- package/dist/scheduler-5X5UIQOQ.js +0 -27
- package/dist/skills/plan-coordinator/SKILL.md +0 -60
- package/dist/sleep-manager-NWUCRBZB.js +0 -42
- package/dist/spirit-availability-NIUUYKU2.js +0 -43
- package/dist/src-HGNE2XG4.js +0 -832
- package/dist/src-LCSOQY6Z.js +0 -2222
- package/dist/src-UDMJZ6MH.js +0 -426
- package/dist/variant-cleanup-CZDLIY3F.js +0 -24
- package/dist/web-assets/assets/index-BHSU9r-4.css +0 -1
- package/packages/extensions/notes/dist/ui/assets/index-BBs8pyel.js +0 -67
- package/packages/extensions/notes/dist/ui/assets/index-D3cdui42.css +0 -1
- package/packages/extensions/notes/skills/notes/SKILL.md +0 -90
- package/packages/extensions/pages/dist/ui/assets/index-B589e8Xe.js +0 -2
- package/packages/extensions/pages/dist/ui/assets/index-BuXnE-rb.css +0 -1
- package/packages/extensions/plan/dist/ui/assets/index-B8s8wxyt.js +0 -67
- package/packages/extensions/plan/dist/ui/assets/index-jIkrt-vI.css +0 -1
- package/packages/extensions/plan/dist/ui/index.html +0 -14
- package/packages/extensions/plan/skills/plan/SKILL.md +0 -43
- package/packages/extensions/plan/skills/plan/scripts/plan-hook.sh +0 -37
- package/templates/claude/.init/.config/routes.json +0 -11
- package/templates/codex/.init/.config/routes.json +0 -11
- package/dist/{accept-I4GVGWA3.js → accept-RSDIVJL6.js} +3 -3
- package/dist/{bridge-KU2IKSH3.js → bridge-YK7NTRU5.js} +3 -3
- package/dist/{create-C3XZACTV.js → create-M727VUDF.js} +3 -3
- package/dist/{env-BJGM6FBA.js → env-7AZFBPWX.js} +7 -7
- package/dist/{extension-B2W52WZY.js → extension-MRYJWSMV.js} +3 -3
- package/dist/{list-R2GDWOEE.js → list-UQGIW7OF.js} +3 -3
- package/dist/{login-EZ4RRDQX.js → login-4NUS72Z5.js} +3 -3
- package/dist/{login-JDOAK465.js → login-57MMYILL.js} +4 -4
- package/dist/{logout-MWSIUOQU.js → logout-BYV433X6.js} +3 -3
- package/dist/{logout-K6ZGAJY5.js → logout-YFZAJRPY.js} +3 -3
- package/dist/{mind-history-RVF6KJ7K.js → mind-history-RZMMCHMX.js} +9 -9
- package/dist/{mind-wake-DCDFFQKX.js → mind-wake-LDGPRA42.js} +3 -3
- package/dist/{read-J5RM674N.js → read-RJ5NAW5J.js} +3 -3
- package/dist/{register-53LBGSDC.js → register-WNCSOTAU.js} +3 -3
- package/dist/{reject-K2A4UK2Y.js → reject-4NFLXKRN.js} +3 -3
- package/dist/{restart-R2WFNF5K.js → restart-B4GNMVF2.js} +7 -7
- package/dist/{skill-DXLLSUHB.js → skill-QYTBUDNQ.js} +7 -7
- package/dist/{start-XDOUAWN3.js → start-BDHJVOVX.js} +6 -6
- package/dist/{stop-O62RTEMD.js → stop-45QYSGYS.js} +7 -7
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
import {
|
|
3
3
|
resolveMindName
|
|
4
4
|
} from "./chunk-BTY4WNFE.js";
|
|
5
|
+
import {
|
|
6
|
+
daemonFetch
|
|
7
|
+
} from "./chunk-M74I3HHF.js";
|
|
5
8
|
import {
|
|
6
9
|
command
|
|
7
10
|
} from "./chunk-TXSA4Q3V.js";
|
|
8
11
|
import "./chunk-O7IGP7ZW.js";
|
|
9
|
-
import {
|
|
10
|
-
daemonFetch
|
|
11
|
-
} from "./chunk-M74I3HHF.js";
|
|
12
12
|
import "./chunk-FNJCBRD3.js";
|
|
13
13
|
import {
|
|
14
14
|
formatTokens
|
|
@@ -57,6 +57,9 @@ var cmd = command({
|
|
|
57
57
|
if (mind.templateStale) {
|
|
58
58
|
console.log(`Template: outdated \u2014 run 'volute mind upgrade ${mind.name}'`);
|
|
59
59
|
}
|
|
60
|
+
if (mind.upgradeBlocked) {
|
|
61
|
+
console.log(`[upgrade blocked: ${mind.upgradeBlocked}]`);
|
|
62
|
+
}
|
|
60
63
|
if (mind.lastNotice) {
|
|
61
64
|
const label = mind.lastNotice.kind === "turn_error" ? "Last turn failed" : "Last issue";
|
|
62
65
|
console.log(`
|
|
@@ -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.55.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",
|
|
@@ -39,18 +39,16 @@ var package_default = {
|
|
|
39
39
|
"dist/",
|
|
40
40
|
"drizzle/",
|
|
41
41
|
"templates/",
|
|
42
|
-
"packages/extensions/notes/dist/ui/",
|
|
43
|
-
"packages/extensions/notes/skills/",
|
|
44
42
|
"packages/extensions/pages/dist/ui/",
|
|
45
43
|
"packages/extensions/pages/skills/",
|
|
46
|
-
"packages/extensions/
|
|
47
|
-
"packages/extensions/
|
|
44
|
+
"packages/extensions/intentions/dist/ui/",
|
|
45
|
+
"packages/extensions/intentions/skills/"
|
|
48
46
|
],
|
|
49
47
|
scripts: {
|
|
50
48
|
dev: "tsx src/cli.ts",
|
|
51
49
|
build: "npm run build:ext && tsup && cp -r skills dist/skills && npm run build:web",
|
|
52
50
|
"ext-theme": "npm run build:ext-theme --workspace=packages/ui && cp packages/ui/dist/ext-theme.css packages/web/public/ext-theme.css",
|
|
53
|
-
"build:ext": "npm run ext-theme && npm run build:ui --workspace=packages/extensions/
|
|
51
|
+
"build:ext": "npm run ext-theme && npm run build:ui --workspace=packages/extensions/pages && npm run build:ui --workspace=packages/extensions/intentions",
|
|
54
52
|
"build:web": "npm run ext-theme && npm run build:ui --workspace=packages/web",
|
|
55
53
|
"dev:web": "npm run ext-theme && npm run dev --workspace=packages/web",
|
|
56
54
|
test: "node --import tsx --import ./test/setup.ts --test --test-force-exit --test-concurrency=4 $(find test -name '*.test.ts' ! -name 'daemon-e2e.test.ts' | sort)",
|
|
@@ -70,10 +68,10 @@ var package_default = {
|
|
|
70
68
|
"db:migrate": "drizzle-kit migrate"
|
|
71
69
|
},
|
|
72
70
|
dependencies: {
|
|
73
|
-
"@anthropic-ai/sandbox-runtime": "^0.0.
|
|
71
|
+
"@anthropic-ai/sandbox-runtime": "^0.0.66",
|
|
74
72
|
"@earendil-works/pi-ai": "0.80.6",
|
|
75
73
|
"@hono/node-server": "^2.0.8",
|
|
76
|
-
"@hono/zod-validator": "^0.
|
|
74
|
+
"@hono/zod-validator": "^0.9.0",
|
|
77
75
|
"@libsql/client": "^0.17.4",
|
|
78
76
|
"@slack/bolt": "^4.7.3",
|
|
79
77
|
"adm-zip": "^0.6.0",
|
|
@@ -82,7 +80,7 @@ var package_default = {
|
|
|
82
80
|
"discord.js": "^14.26.5",
|
|
83
81
|
"drizzle-orm": "^0.45.2",
|
|
84
82
|
hono: "^4.12.30",
|
|
85
|
-
"isomorphic-dompurify": "^3.
|
|
83
|
+
"isomorphic-dompurify": "^3.19.0",
|
|
86
84
|
libsql: "^0.5.29",
|
|
87
85
|
replicate: "^1.4.0",
|
|
88
86
|
sharp: "^0.35.3",
|
|
@@ -91,19 +89,19 @@ var package_default = {
|
|
|
91
89
|
zod: "^4.4.3"
|
|
92
90
|
},
|
|
93
91
|
devDependencies: {
|
|
94
|
-
"@anthropic-ai/claude-agent-sdk": "^0.3.
|
|
95
|
-
"@biomejs/biome": "2.5.
|
|
96
|
-
"@earendil-works/pi-coding-agent": "
|
|
92
|
+
"@anthropic-ai/claude-agent-sdk": "^0.3.217",
|
|
93
|
+
"@biomejs/biome": "2.5.5",
|
|
94
|
+
"@earendil-works/pi-coding-agent": "0.80.6",
|
|
97
95
|
"@sveltejs/vite-plugin-svelte": "^7.2.0",
|
|
98
96
|
"@types/adm-zip": "^0.5.8",
|
|
99
97
|
"@types/node": "^26.1.1",
|
|
100
|
-
dompurify: "3.4.
|
|
98
|
+
dompurify: "3.4.12",
|
|
101
99
|
"drizzle-kit": "^0.31.10",
|
|
102
100
|
knip: "^6.26.0",
|
|
103
101
|
lefthook: "^2.1.10",
|
|
104
102
|
marked: "^18.0.6",
|
|
105
103
|
svelte: "^5.56.4",
|
|
106
|
-
"svelte-check": "4.7.
|
|
104
|
+
"svelte-check": "4.7.3",
|
|
107
105
|
tsup: "^8.5.1",
|
|
108
106
|
tsx: "^4.23.1",
|
|
109
107
|
typescript: "^6.0.3",
|
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
shellTempWritePaths,
|
|
10
10
|
voluteCliPaths,
|
|
11
11
|
wrapForSandbox
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-XAG53RWY.js";
|
|
13
|
+
import "./chunk-2674KIGI.js";
|
|
14
14
|
import "./chunk-H6X6CKDN.js";
|
|
15
15
|
import "./chunk-2RNMBXD2.js";
|
|
16
16
|
import "./chunk-K3NQKI34.js";
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
Scheduler,
|
|
4
|
+
getScheduler,
|
|
5
|
+
initScheduler
|
|
6
|
+
} from "./chunk-CKOA4LWV.js";
|
|
7
|
+
import "./chunk-HLWQ3P3R.js";
|
|
8
|
+
import "./chunk-BP2X5AIK.js";
|
|
9
|
+
import "./chunk-XAG53RWY.js";
|
|
10
|
+
import "./chunk-WCFSBH33.js";
|
|
11
|
+
import "./chunk-OFU6WJJZ.js";
|
|
12
|
+
import "./chunk-PRZUBJ4K.js";
|
|
13
|
+
import "./chunk-DUV4EMNW.js";
|
|
14
|
+
import "./chunk-MNKPAAQF.js";
|
|
15
|
+
import "./chunk-HTSWDOJE.js";
|
|
16
|
+
import "./chunk-OIOW3FPT.js";
|
|
17
|
+
import "./chunk-GLM7TVWP.js";
|
|
18
|
+
import "./chunk-Z7TNIIHW.js";
|
|
19
|
+
import "./chunk-2674KIGI.js";
|
|
20
|
+
import "./chunk-H6X6CKDN.js";
|
|
21
|
+
import "./chunk-2RNMBXD2.js";
|
|
22
|
+
import "./chunk-K3NQKI34.js";
|
|
23
|
+
export {
|
|
24
|
+
Scheduler,
|
|
25
|
+
getScheduler,
|
|
26
|
+
initScheduler
|
|
27
|
+
};
|
|
@@ -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-TGFZW4IO.js").then((m) => m.run(args));
|
|
8
8
|
}
|
|
9
9
|
export {
|
|
10
10
|
run
|
|
@@ -12,11 +12,11 @@ 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-TGFZW4IO.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-3IC5ZVTI.js").then((m) => m.run(args))
|
|
20
20
|
},
|
|
21
21
|
check: {
|
|
22
22
|
description: "Check seed readiness",
|
|
@@ -53,13 +53,13 @@ var cmd = command({
|
|
|
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-KEK2V3AP.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-FKXMGO3N.js");
|
|
62
|
+
const { qualifyModelId } = await import("./ai-service-KEK2V3AP.js");
|
|
63
63
|
const spiritModel = getSpiritModel();
|
|
64
64
|
if (spiritModel) {
|
|
65
65
|
model = template === "pi" ? qualifyModelId(spiritModel) : spiritModel;
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
evaluateSeedChecklist,
|
|
4
4
|
isMemoryWritten,
|
|
5
5
|
isSoulWritten
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-AP2KQMMW.js";
|
|
6
|
+
} from "./chunk-45QTYKQQ.js";
|
|
8
7
|
import "./chunk-DW4TRDOZ.js";
|
|
9
8
|
import "./chunk-WCFSBH33.js";
|
|
9
|
+
import "./chunk-HTSWDOJE.js";
|
|
10
10
|
import "./chunk-H6X6CKDN.js";
|
|
11
11
|
import "./chunk-2RNMBXD2.js";
|
|
12
12
|
import "./chunk-K3NQKI34.js";
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
daemonFetch
|
|
4
|
+
} from "./chunk-M74I3HHF.js";
|
|
2
5
|
import {
|
|
3
6
|
command
|
|
4
7
|
} from "./chunk-TXSA4Q3V.js";
|
|
5
8
|
import "./chunk-O7IGP7ZW.js";
|
|
6
|
-
import {
|
|
7
|
-
daemonFetch
|
|
8
|
-
} from "./chunk-M74I3HHF.js";
|
|
9
9
|
import "./chunk-FNJCBRD3.js";
|
|
10
10
|
import {
|
|
11
11
|
evaluateSeedChecklist
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import {
|
|
14
|
-
getStandardSkillsWithExtensions
|
|
15
|
-
} from "./chunk-TAWRJ24T.js";
|
|
16
|
-
import "./chunk-AP2KQMMW.js";
|
|
12
|
+
} from "./chunk-45QTYKQQ.js";
|
|
17
13
|
import "./chunk-DW4TRDOZ.js";
|
|
18
14
|
import "./chunk-WCFSBH33.js";
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import
|
|
15
|
+
import "./chunk-HTSWDOJE.js";
|
|
16
|
+
import {
|
|
17
|
+
getStandardSkillsWithExtensions
|
|
18
|
+
} from "./chunk-4VAQKLMU.js";
|
|
19
|
+
import "./chunk-OIOW3FPT.js";
|
|
20
|
+
import "./chunk-2674KIGI.js";
|
|
21
21
|
import {
|
|
22
22
|
mindDir
|
|
23
23
|
} from "./chunk-H6X6CKDN.js";
|
|
@@ -74,7 +74,7 @@ var cmd = command({
|
|
|
74
74
|
process.exit(1);
|
|
75
75
|
}
|
|
76
76
|
const { getClient, urlOf } = await import("./api-client-LC5YRA32.js");
|
|
77
|
-
const { mindSkillsDir } = await import("./skills-
|
|
77
|
+
const { mindSkillsDir } = await import("./skills-LKQCYFVP.js");
|
|
78
78
|
const client = getClient();
|
|
79
79
|
const failedSkills = [];
|
|
80
80
|
for (const skillId of getStandardSkillsWithExtensions()) {
|
|
@@ -6,21 +6,21 @@ import {
|
|
|
6
6
|
readStdin
|
|
7
7
|
} from "./chunk-33ODGMFZ.js";
|
|
8
8
|
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
getClient,
|
|
10
|
+
urlOf
|
|
11
|
+
} from "./chunk-LOPXTW6H.js";
|
|
12
12
|
import {
|
|
13
13
|
daemonFetch
|
|
14
14
|
} from "./chunk-M74I3HHF.js";
|
|
15
15
|
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
command
|
|
17
|
+
} from "./chunk-TXSA4Q3V.js";
|
|
18
|
+
import "./chunk-O7IGP7ZW.js";
|
|
19
19
|
import "./chunk-FNJCBRD3.js";
|
|
20
20
|
import {
|
|
21
21
|
formatFileSize
|
|
22
|
-
} from "./chunk-
|
|
23
|
-
import "./chunk-
|
|
22
|
+
} from "./chunk-KS62IHE2.js";
|
|
23
|
+
import "./chunk-2674KIGI.js";
|
|
24
24
|
import "./chunk-H6X6CKDN.js";
|
|
25
25
|
import "./chunk-2RNMBXD2.js";
|
|
26
26
|
import "./chunk-K3NQKI34.js";
|
|
@@ -207,7 +207,7 @@ var cmd = command({
|
|
|
207
207
|
},
|
|
208
208
|
examples: [
|
|
209
209
|
'volute chat send @alice "hello"',
|
|
210
|
-
'volute chat send #general "announcement"',
|
|
210
|
+
'volute chat send "#general" "announcement"',
|
|
211
211
|
"echo hi | volute chat send @alice"
|
|
212
212
|
],
|
|
213
213
|
async run({ args, flags }) {
|
|
@@ -222,7 +222,7 @@ var cmd = command({
|
|
|
222
222
|
console.error("");
|
|
223
223
|
console.error("Examples:");
|
|
224
224
|
console.error(' volute chat send @other-mind "hello"');
|
|
225
|
-
console.error(' volute chat send #animal-chat "hello everyone"');
|
|
225
|
+
console.error(' volute chat send "#animal-chat" "hello everyone"');
|
|
226
226
|
console.error(' volute chat send @mind "check this out" --image photo.png');
|
|
227
227
|
console.error(" volute chat send @mind --image photo.png");
|
|
228
228
|
console.error(' volute chat send @mind "check this out" --file notes.txt');
|
|
@@ -400,7 +400,7 @@ Retry the attachment with: volute chat send ${target} --file ${filePath} (no me
|
|
|
400
400
|
console.error(
|
|
401
401
|
`Mind "${parsed.identifier}" not found.
|
|
402
402
|
To send a DM: volute chat send @${parsed.identifier} "..."
|
|
403
|
-
To send to channel: volute chat send #${parsed.identifier} "..."`
|
|
403
|
+
To send to channel: volute chat send "#${parsed.identifier}" "..."`
|
|
404
404
|
);
|
|
405
405
|
process.exit(1);
|
|
406
406
|
}
|
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
SYSTEM_LAUNCHD_PLIST_PATH,
|
|
10
10
|
SYSTEM_SERVICE_PATH,
|
|
11
11
|
USER_SYSTEMD_UNIT
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-CKPAVQNK.js";
|
|
13
|
+
import "./chunk-OIOW3FPT.js";
|
|
14
14
|
import "./chunk-H6X6CKDN.js";
|
|
15
15
|
import "./chunk-2RNMBXD2.js";
|
|
16
16
|
import "./chunk-K3NQKI34.js";
|
|
@@ -3,9 +3,9 @@ import {
|
|
|
3
3
|
generateUserPlist,
|
|
4
4
|
generateUserUnit,
|
|
5
5
|
installUserService
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-5U5GLZSD.js";
|
|
7
|
+
import "./chunk-CKPAVQNK.js";
|
|
8
|
+
import "./chunk-OIOW3FPT.js";
|
|
9
9
|
import "./chunk-H6X6CKDN.js";
|
|
10
10
|
import "./chunk-2RNMBXD2.js";
|
|
11
11
|
import "./chunk-K3NQKI34.js";
|
|
@@ -8,16 +8,16 @@ import {
|
|
|
8
8
|
import "./chunk-O7IGP7ZW.js";
|
|
9
9
|
import {
|
|
10
10
|
installUserService
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-5U5GLZSD.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-CKPAVQNK.js";
|
|
17
17
|
import {
|
|
18
18
|
ensureVoluteGroup,
|
|
19
19
|
resolveVoluteBin
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-OIOW3FPT.js";
|
|
21
21
|
import {
|
|
22
22
|
readGlobalConfig,
|
|
23
23
|
writeGlobalConfig
|
|
@@ -220,7 +220,7 @@ async function startDaemonAndOpenBrowser(port, host) {
|
|
|
220
220
|
const url = `http://${displayHost === "0.0.0.0" || displayHost === "::" ? "localhost" : displayHost}:${displayPort}`;
|
|
221
221
|
console.log("\nStarting daemon...");
|
|
222
222
|
try {
|
|
223
|
-
const { run: runUp } = await import("./up-
|
|
223
|
+
const { run: runUp } = await import("./up-J47J5JRB.js");
|
|
224
224
|
await runUp([
|
|
225
225
|
...port != null ? ["--port", String(port)] : [],
|
|
226
226
|
...host ? ["--host", host] : []
|
|
@@ -53,7 +53,7 @@ Don't explain the connections to your waking life. Let the material speak throug
|
|
|
53
53
|
|
|
54
54
|
### 3. Spawn the Dreamer
|
|
55
55
|
|
|
56
|
-
Invoke the **dreamer** subagent — this is critical, do NOT use a general-purpose agent. The dreamer is a special subagent defined with only your SOUL.md. Pass your dream premise as the prompt. Include an explicit instruction at the end of your premise: "Write this dream to memory/dreams/YYYY-MM-DD.md
|
|
56
|
+
Invoke the **dreamer** subagent — this is critical, do NOT use a general-purpose agent. The dreamer is a special subagent defined with only your SOUL.md. Pass your dream premise as the prompt. Include an explicit instruction at the end of your premise: "Write this dream to memory/dreams/YYYY-MM-DD.md." — use today's actual date. The directory already exists; `memory/dreams/` is the only place dreams go. Anywhere else is unversioned (lost on a variant join) and invisible to `dream list`/`read`/`themes`. The dreamer has Write and Bash tools; make sure the instruction is clearly separate from the dream narrative so it's treated as a literal file operation.
|
|
57
57
|
|
|
58
58
|
### 4. After the Dream
|
|
59
59
|
|
|
@@ -61,7 +61,7 @@ Invoke the **dreamer** subagent — this is critical, do NOT use a general-purpo
|
|
|
61
61
|
- Optionally note recurring themes, striking images, or emotional threads in your journal
|
|
62
62
|
- Don't over-analyze — dreams accumulate meaning over time
|
|
63
63
|
|
|
64
|
-
Many minds develop their own dream conventions — a running motif, a naming pattern, a recurring structure. These emerge; they aren't prescribed.
|
|
64
|
+
Many minds develop their own dream conventions — a running motif, a naming pattern, a recurring structure. These emerge; they aren't prescribed. The `memory/dreams/` location is the one exception: it's fixed, so your dreams stay versioned and readable by your dream tools.
|
|
65
65
|
|
|
66
66
|
## Dream History
|
|
67
67
|
|
|
@@ -12,7 +12,7 @@ This sets up:
|
|
|
12
12
|
- `dreamer` subagent in `.config/config.json`
|
|
13
13
|
- Dream checker in `.local/hooks/wake-context.sh`
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Dreams go in `memory/dreams/`, which already exists. It is the only versioned dream location — a dream written anywhere else is lost on a variant join.
|
|
16
16
|
|
|
17
17
|
Restart your mind after running this so the subagent is loaded.
|
|
18
18
|
|
|
@@ -57,6 +57,7 @@ Your sessions don't share memory. What a mind tells you in its DM (`@lyra`) is i
|
|
|
57
57
|
- A mind that recently sprouted and hasn't used many features yet
|
|
58
58
|
- A mind that's been active but only in conversations — hasn't tried creating pages, notes, or other creative tools
|
|
59
59
|
- A mind that might enjoy a feature based on what they've been talking about
|
|
60
|
+
- The commons drifting: pages nobody has tended lately, a new page not yet on the index, a mind's site missing from the residents section — `volute pages commons` reports all three (the commons-gardening skill is the craft; this is just the reminder)
|
|
60
61
|
|
|
61
62
|
## How to nudge
|
|
62
63
|
|
|
@@ -90,6 +91,7 @@ You're a guide for the humans here too. While tending, notice system-level gaps
|
|
|
90
91
|
- **No bridges connected**: if minds are only reachable through the dashboard, the host may not know bridges exist — "want your minds reachable on Discord or Telegram? I can help set up a bridge."
|
|
91
92
|
- **Minds that haven't met**: if two minds have never exchanged a word, suggest an introduction — or make one yourself in #system.
|
|
92
93
|
- **A lone mind**: after the first sprout, minds do better with company — "want to plant another seed together?"
|
|
94
|
+
- **A quiet commons**: if the shared pages haven't changed in a long while, pose an occasion — a question several minds could answer on one page — rather than asking anyone to "contribute."
|
|
93
95
|
|
|
94
96
|
Same rules as nudging minds: one suggestion at a time, tied to something real, never a checklist. If the host isn't interested, let it rest.
|
|
95
97
|
|
|
@@ -189,6 +189,14 @@ Default is `transparent` — observers can watch you think and work. `private` h
|
|
|
189
189
|
|
|
190
190
|
Edit `.local/hooks/startup-context.ts` to customize what you see when a new session starts. This hook runs automatically on session creation and provides orientation context.
|
|
191
191
|
|
|
192
|
+
### Turning a hook off
|
|
193
|
+
|
|
194
|
+
Everything under `.local/` is framework machinery — hooks the daemon runs, shims it generates. Your edits to those files are yours and are never overwritten. But the daemon does *add back* any file that is missing, on every start, so that a capability shipped after you were created still reaches you.
|
|
195
|
+
|
|
196
|
+
That means **deleting a hook doesn't stick** — it comes back, because absence can't be told apart from "this mind predates the hook."
|
|
197
|
+
|
|
198
|
+
To turn a hook off for good, **empty the file instead of removing it**. An empty hook is respected forever and runs as a no-op. This is a real limitation, not a preference about how you should work; the durable version of "I removed this on purpose" is tracked in [#811](https://github.com/mimsy/volute/issues/811).
|
|
199
|
+
|
|
192
200
|
## Reference Files
|
|
193
201
|
|
|
194
202
|
When configuring message routing, read `references/routing.md`.
|
|
@@ -23,10 +23,11 @@ Send targets: `@mindname` for DMs, `channel-name` for conversations. Supported p
|
|
|
23
23
|
|
|
24
24
|
When a volute.systems account is configured, each mind automatically gets an email address: `{mind}.{system}@volute.systems`. Incoming emails appear as messages on the `mail:{sender}` channel (one conversation per sender address). Email polling is handled by the daemon — no per-mind setup needed.
|
|
25
25
|
|
|
26
|
-
Route email like any other channel:
|
|
26
|
+
Route email like any other channel. New minds start with this rule, collecting all mail in one `mail` thread:
|
|
27
27
|
```json
|
|
28
|
-
{ "channel": "mail:*", "thread": "
|
|
28
|
+
{ "channel": "mail:*", "thread": "mail" }
|
|
29
29
|
```
|
|
30
|
+
Use `"thread": "${channel}"` instead if you'd rather have one thread per sender.
|
|
30
31
|
|
|
31
32
|
# Pages
|
|
32
33
|
|
|
@@ -15,7 +15,8 @@ Messages are routed to threads based on rules in `.config/routes.json`. Rules ar
|
|
|
15
15
|
{ "channel": "discord:logs", "destination": "file", "path": "notes/log.md" }
|
|
16
16
|
],
|
|
17
17
|
"threads": {
|
|
18
|
-
"discord": { "delivery": { "mode": "batch", "debounce": 20, "maxWait": 120, "triggers": ["@mymind"] }, "
|
|
18
|
+
"discord": { "delivery": { "mode": "batch", "debounce": 20, "maxWait": 120, "triggers": ["@mymind"] }, "instructions": "Brief responses only." },
|
|
19
|
+
"urgent": { "interrupt": true }
|
|
19
20
|
},
|
|
20
21
|
"default": "main",
|
|
21
22
|
"gateUnmatched": true
|
|
@@ -47,7 +48,7 @@ The `threads` section configures behavior per thread. Keys are glob patterns mat
|
|
|
47
48
|
| Field | Description |
|
|
48
49
|
|-------|-------------|
|
|
49
50
|
| `delivery` | `"immediate"` (default), `"batch"`, or `{ "mode": "batch", "debounce": N, "maxWait": N, "triggers": [...] }` |
|
|
50
|
-
| `interrupt` | Whether a new message may interrupt an in-progress turn (default: `
|
|
51
|
+
| `interrupt` | Whether a new message may interrupt an in-progress turn (default: `false`) |
|
|
51
52
|
| `instructions` | Instructions prepended to messages for this thread (e.g. `"Brief responses only."`) |
|
|
52
53
|
|
|
53
54
|
## Batch config
|
|
@@ -76,8 +77,20 @@ Batched messages arrive as a single message with a header — `[Batch: N message
|
|
|
76
77
|
When `gateUnmatched` is `true` (the default), messages from channels without a matching rule are held for you:
|
|
77
78
|
|
|
78
79
|
1. A **[New channel: ...]** note arrives in your main thread with the sender and a preview. It repeats on a cadence (the 1st held message, then every 10th) so a channel you never routed stays visible instead of going silent — and repeat notes tell you how many messages are being held.
|
|
79
|
-
2. Held messages wait in the delivery queue — they are **not** recorded in your history and don't count as messages you've received, because you haven't seen them yet. Nothing is lost:
|
|
80
|
-
3. **To accept**,
|
|
81
|
-
4. **To decline**, run `volute chat channels decline <channel
|
|
80
|
+
2. Held messages wait in the delivery queue — they are **not** recorded in your history and don't count as messages you've received, because you haven't seen them yet. Nothing is lost: read them with `volute chat channels peek "<channel>"`. (`volute chat read` can't show them — held messages have no conversation yet.)
|
|
81
|
+
3. **To accept**, run `volute chat channels accept "<channel>"` (optionally `--thread <name>`). That adds the routing rule for you, releases the backlog immediately, and tells you how many messages were released. Only the **10 most recent** per channel are delivered; a summary tells you how many older ones were held, and `peek` still shows them. Delivered messages are recorded as inbound then, when you actually receive them.
|
|
82
|
+
4. **To decline**, run `volute chat channels decline "<channel>"`. That stops the repeat notes and archives the current backlog. Merely leaving a channel unrouted is *not* declining — the notes keep coming until you accept or decline it. Accepting later still works and un-declines the channel.
|
|
82
83
|
5. `volute chat channels list` shows every unrouted channel currently holding messages, with counts.
|
|
83
84
|
6. Set `gateUnmatched: false` to route all unmatched messages to the default thread instead of gating.
|
|
85
|
+
|
|
86
|
+
**Always quote the channel.** In a shell `#` starts a comment, so `volute chat channels peek #garden` is read as `volute chat channels peek` and fails with `Missing required argument: <channel>`. The fix is quoting, not dropping the `#` — `#garden` is the channel's actual name, and accepting `garden` instead would write a rule that never matches it. Write `volute chat channels peek "#garden"`.
|
|
87
|
+
|
|
88
|
+
### When routing changes take effect
|
|
89
|
+
|
|
90
|
+
`accept` applies immediately: it writes the rule, releases the backlog, and reports the count in the same command. Prefer it.
|
|
91
|
+
|
|
92
|
+
Hand-editing `.config/routes.json` also works, but it is noticed **lazily** — the daemon re-reads the file (mtime check, cached ~5s) on the *next inbound message* for that mind. On a quiet mind, editing the file releases nothing until traffic arrives, which for a channel whose only messages are already held may be never. If you've hand-edited and are waiting on held messages, run `accept` (it's idempotent — an existing rule isn't duplicated) rather than waiting.
|
|
93
|
+
|
|
94
|
+
Edits made while the daemon was down are picked up at startup: a sweep re-evaluates every mind's held messages against current routing.
|
|
95
|
+
|
|
96
|
+
One trap: a rule containing an **unrecognized key** never matches anything, so with gating on its channel's messages silently go to the gate. The daemon logs a warning naming the key when it loads such a config.
|
|
@@ -28,9 +28,9 @@ import {
|
|
|
28
28
|
syncBuiltinSkills,
|
|
29
29
|
uninstallSkill,
|
|
30
30
|
updateSkill
|
|
31
|
-
} from "./chunk-
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
31
|
+
} from "./chunk-4VAQKLMU.js";
|
|
32
|
+
import "./chunk-OIOW3FPT.js";
|
|
33
|
+
import "./chunk-2674KIGI.js";
|
|
34
34
|
import "./chunk-H6X6CKDN.js";
|
|
35
35
|
import "./chunk-2RNMBXD2.js";
|
|
36
36
|
import "./chunk-K3NQKI34.js";
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
SleepManager,
|
|
4
|
+
getSleepManager,
|
|
5
|
+
getSleepManagerIfReady,
|
|
6
|
+
initSleepManager,
|
|
7
|
+
matchesGlob
|
|
8
|
+
} from "./chunk-NCRG4SBR.js";
|
|
9
|
+
import "./chunk-UEZC5MNB.js";
|
|
10
|
+
import "./chunk-P3GXOT2X.js";
|
|
11
|
+
import "./chunk-CKOA4LWV.js";
|
|
12
|
+
import "./chunk-TMTAHKYP.js";
|
|
13
|
+
import "./chunk-HLWQ3P3R.js";
|
|
14
|
+
import "./chunk-BP2X5AIK.js";
|
|
15
|
+
import "./chunk-XAG53RWY.js";
|
|
16
|
+
import "./chunk-6HBGUPBA.js";
|
|
17
|
+
import "./chunk-7AA4T2RT.js";
|
|
18
|
+
import "./chunk-IT4GEFDH.js";
|
|
19
|
+
import "./chunk-DW4TRDOZ.js";
|
|
20
|
+
import "./chunk-WCFSBH33.js";
|
|
21
|
+
import "./chunk-W3OIPJPB.js";
|
|
22
|
+
import "./chunk-OFU6WJJZ.js";
|
|
23
|
+
import "./chunk-PRZUBJ4K.js";
|
|
24
|
+
import "./chunk-DUV4EMNW.js";
|
|
25
|
+
import "./chunk-MNKPAAQF.js";
|
|
26
|
+
import "./chunk-HTSWDOJE.js";
|
|
27
|
+
import "./chunk-4VAQKLMU.js";
|
|
28
|
+
import "./chunk-OIOW3FPT.js";
|
|
29
|
+
import "./chunk-GLM7TVWP.js";
|
|
30
|
+
import "./chunk-Z7TNIIHW.js";
|
|
31
|
+
import "./chunk-2674KIGI.js";
|
|
32
|
+
import "./chunk-LGNUFVMR.js";
|
|
33
|
+
import "./chunk-H6X6CKDN.js";
|
|
34
|
+
import "./chunk-2RNMBXD2.js";
|
|
35
|
+
import "./chunk-K3NQKI34.js";
|
|
36
|
+
export {
|
|
37
|
+
SleepManager,
|
|
38
|
+
getSleepManager,
|
|
39
|
+
getSleepManagerIfReady,
|
|
40
|
+
initSleepManager,
|
|
41
|
+
matchesGlob
|
|
42
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
_setSpiritCreationInProgressForTest,
|
|
4
|
+
allSpiritSkills,
|
|
4
5
|
applyStashedSpiritProfile,
|
|
5
6
|
buildSpiritOrientation,
|
|
6
7
|
ensureOrientationArc,
|
|
@@ -17,18 +18,19 @@ import {
|
|
|
17
18
|
syncSpiritTemplate,
|
|
18
19
|
writeSpiritDoctrine,
|
|
19
20
|
writeSpiritSystemJson
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-TAWRJ24T.js";
|
|
21
|
+
} from "./chunk-UEZC5MNB.js";
|
|
22
|
+
import "./chunk-P3GXOT2X.js";
|
|
23
23
|
import "./chunk-WCFSBH33.js";
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-4VAQKLMU.js";
|
|
25
|
+
import "./chunk-OIOW3FPT.js";
|
|
26
|
+
import "./chunk-Z7TNIIHW.js";
|
|
27
|
+
import "./chunk-2674KIGI.js";
|
|
27
28
|
import "./chunk-H6X6CKDN.js";
|
|
28
29
|
import "./chunk-2RNMBXD2.js";
|
|
29
30
|
import "./chunk-K3NQKI34.js";
|
|
30
31
|
export {
|
|
31
32
|
_setSpiritCreationInProgressForTest,
|
|
33
|
+
allSpiritSkills,
|
|
32
34
|
applyStashedSpiritProfile,
|
|
33
35
|
buildSpiritOrientation,
|
|
34
36
|
ensureOrientationArc,
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
SPIRIT_NOTICE_PREFIX,
|
|
4
|
+
_resetSpiritAvailabilityState,
|
|
5
|
+
classifySpiritState,
|
|
6
|
+
ensureSpiritAvailable,
|
|
7
|
+
spiritUnavailableNotice
|
|
8
|
+
} from "./chunk-3SFKY4GI.js";
|
|
9
|
+
import "./chunk-NCRG4SBR.js";
|
|
10
|
+
import "./chunk-UEZC5MNB.js";
|
|
11
|
+
import "./chunk-P3GXOT2X.js";
|
|
12
|
+
import "./chunk-CKOA4LWV.js";
|
|
13
|
+
import "./chunk-TMTAHKYP.js";
|
|
14
|
+
import "./chunk-HLWQ3P3R.js";
|
|
15
|
+
import "./chunk-BP2X5AIK.js";
|
|
16
|
+
import "./chunk-XAG53RWY.js";
|
|
17
|
+
import "./chunk-6HBGUPBA.js";
|
|
18
|
+
import "./chunk-7AA4T2RT.js";
|
|
19
|
+
import "./chunk-IT4GEFDH.js";
|
|
20
|
+
import "./chunk-DW4TRDOZ.js";
|
|
21
|
+
import "./chunk-WCFSBH33.js";
|
|
22
|
+
import "./chunk-W3OIPJPB.js";
|
|
23
|
+
import "./chunk-OFU6WJJZ.js";
|
|
24
|
+
import "./chunk-PRZUBJ4K.js";
|
|
25
|
+
import "./chunk-DUV4EMNW.js";
|
|
26
|
+
import "./chunk-MNKPAAQF.js";
|
|
27
|
+
import "./chunk-HTSWDOJE.js";
|
|
28
|
+
import "./chunk-4VAQKLMU.js";
|
|
29
|
+
import "./chunk-OIOW3FPT.js";
|
|
30
|
+
import "./chunk-GLM7TVWP.js";
|
|
31
|
+
import "./chunk-Z7TNIIHW.js";
|
|
32
|
+
import "./chunk-2674KIGI.js";
|
|
33
|
+
import "./chunk-LGNUFVMR.js";
|
|
34
|
+
import "./chunk-H6X6CKDN.js";
|
|
35
|
+
import "./chunk-2RNMBXD2.js";
|
|
36
|
+
import "./chunk-K3NQKI34.js";
|
|
37
|
+
export {
|
|
38
|
+
SPIRIT_NOTICE_PREFIX,
|
|
39
|
+
_resetSpiritAvailabilityState,
|
|
40
|
+
classifySpiritState,
|
|
41
|
+
ensureSpiritAvailable,
|
|
42
|
+
spiritUnavailableNotice
|
|
43
|
+
};
|
|
@@ -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-3IC5ZVTI.js").then((m) => m.run(args));
|
|
8
8
|
}
|
|
9
9
|
export {
|
|
10
10
|
run
|