volute 0.30.1 → 0.32.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 +15 -22
- package/dist/{accept-E3PAH3QJ.js → accept-74M7I4RZ.js} +5 -4
- package/dist/{activity-events-BKBPPUBP.js → activity-events-HETAODOK.js} +3 -2
- package/dist/{ai-service-VAJT5UBS.js → ai-service-ZIPCV3MX.js} +20 -5
- package/dist/api.d.ts +341 -397
- package/dist/{archive-WWDBWYN2.js → archive-INXYFVCW.js} +3 -2
- package/dist/auth-6DMGES3I.js +44 -0
- package/dist/{bridge-RO37CUFM.js → bridge-BVCBTGPF.js} +5 -4
- package/dist/{chat-TCUNPFGO.js → chat-XT4OBJBU.js} +8 -8
- package/dist/{chunk-P7VFDSSG.js → chunk-2FLJ63GU.js} +2 -2
- package/dist/{chunk-ZWKTUQEL.js → chunk-2NGTS5UU.js} +1 -1
- package/dist/{chunk-JGFRDMR6.js → chunk-ALEF47VT.js} +1 -1
- package/dist/{chunk-MDPCSXZ4.js → chunk-D5G5YOPL.js} +163 -15
- package/dist/{chunk-VGWJSNHS.js → chunk-G53F3JA4.js} +1 -35
- package/dist/{chunk-A6TUJJ3L.js → chunk-G6BSYHPK.js} +2 -2
- package/dist/{chunk-DTC6EH5I.js → chunk-I5KY25PQ.js} +1 -9
- package/dist/{chunk-NSBFETWP.js → chunk-IYDIE3HG.js} +64 -26
- package/dist/{chunk-W5OOPLNP.js → chunk-JJ7W6WSB.js} +3 -3
- package/dist/{chunk-G3GBKZGG.js → chunk-LGB6JBHI.js} +54 -2
- package/dist/chunk-LRCG2JLP.js +251 -0
- package/dist/{chunk-FXHXHI2A.js → chunk-LSGWR54X.js} +3 -6
- package/dist/{chunk-S5LR3XYJ.js → chunk-M7UL5S3Q.js} +1 -1
- package/dist/chunk-PB65JZK2.js +85 -0
- package/dist/chunk-PVY5W6QN.js +41 -0
- package/dist/{chunk-QVAQ5454.js → chunk-QBQ424EM.js} +3007 -2126
- package/dist/{chunk-P27RV5WM.js → chunk-QZANELPX.js} +6 -2
- package/dist/{chunk-FSM45XD5.js → chunk-R7E6CRVQ.js} +1 -1
- package/dist/{chunk-HHTXM4JT.js → chunk-RPZZSXV3.js} +39 -195
- package/dist/{chunk-UPA6COHU.js → chunk-RSX4OPZY.js} +5 -5
- package/dist/{chunk-2C2VXEBB.js → chunk-S6NFERDC.js} +21 -57
- package/dist/chunk-SKLSMHXO.js +208 -0
- package/dist/{chunk-IKHDUZRH.js → chunk-SX5TKJBZ.js} +2 -2
- package/dist/chunk-TDRYEPH4.js +185 -0
- package/dist/chunk-TSXLLQZW.js +46 -0
- package/dist/{chunk-EFVHR7KH.js → chunk-UKVWJRKN.js} +24 -5
- package/dist/{chunk-2NDZC3S7.js → chunk-WKF5FEFK.js} +688 -389
- package/dist/cli.js +93 -24
- package/dist/{clock-G3ALCMLJ.js → clock-2UOZ6JPU.js} +11 -8
- package/dist/{cloud-sync-JV4LJOK3.js → cloud-sync-JN3NWKEM.js} +16 -14
- package/dist/config-H2H4UIF7.js +72 -0
- package/dist/connectors/discord-bridge.js +1 -1
- package/dist/connectors/slack-bridge.js +1 -1
- package/dist/connectors/telegram-bridge.js +1 -1
- package/dist/{conversations-7KVQV7EZ.js → conversations-3O5O6AS3.js} +8 -7
- package/dist/{create-JTLS7GX3.js → create-RNLNCORE.js} +5 -4
- package/dist/{create-VQSQHJQW.js → create-WBBYI6V7.js} +6 -2
- package/dist/daemon-client-6QXHZ7US.js +12 -0
- package/dist/{daemon-restart-4JGBHEJ4.js → daemon-restart-NGFHFAUF.js} +7 -7
- package/dist/daemon.js +2446 -1999
- package/dist/{db-HMFPIRO2.js → db-F34YLV7D.js} +2 -1
- package/dist/db-RA45JBFG.js +16 -0
- package/dist/{delete-JESHKE7F.js → delete-QTGWEDBI.js} +1 -1
- package/dist/delivery-manager-SDVXFD4W.js +28 -0
- package/dist/delivery-router-FL45JL7N.js +21 -0
- package/dist/down-TB3ESMNP.js +14 -0
- package/dist/{env-CLXXT7M2.js → env-RLYQBOOP.js} +5 -4
- package/dist/{export-EGA5M5PB.js → export-SUYRLI5Q.js} +4 -3
- package/dist/{extension-WZ4SUPJB.js → extension-FQ5D3NCC.js} +6 -6
- package/dist/{extensions-ECO4RPFQ.js → extensions-GDYWQXC4.js} +9 -7
- package/dist/{files-4VEJDASH.js → files-EAMPO2SJ.js} +6 -5
- package/dist/{history-EJMMLXDO.js → history-FO5PHBQ5.js} +9 -4
- package/dist/{import-YCGPMBSI.js → import-DDUFE7AY.js} +4 -3
- package/dist/{join-2GBJKZEN.js → join-I5QEE3LG.js} +1 -1
- package/dist/{list-Q6O7FGAN.js → list-DW2VRTOZ.js} +5 -4
- package/dist/{login-RL6AU2SM.js → login-7CHPW2PN.js} +5 -4
- package/dist/{login-RET5WESK.js → login-RIJF2F4G.js} +3 -2
- package/dist/{logout-CGAGJN3L.js → logout-5MLHZALK.js} +3 -2
- package/dist/{logout-JRPBEMMR.js → logout-UZJRGY4Z.js} +3 -2
- package/dist/message-delivery-2FIM7QKO.js +32 -0
- package/dist/{mind-LUWRQUQ5.js → mind-2B6M7Y25.js} +18 -18
- package/dist/{mind-activity-tracker-VYN2ZZ2M.js → mind-activity-tracker-NZZT2NTT.js} +4 -3
- package/dist/{mind-list-V5WW5DUA.js → mind-list-WUPMQDYQ.js} +3 -2
- package/dist/mind-manager-BNCMGYXW.js +28 -0
- package/dist/mind-service-AV273WT4.js +34 -0
- package/dist/{mind-sleep-R6PTNNW4.js → mind-sleep-B7BHJLH7.js} +5 -4
- package/dist/{mind-status-I4ISFJ6I.js → mind-status-L3EFFRPR.js} +3 -2
- package/dist/{mind-wake-67ZQEWAV.js → mind-wake-GY3RFX7Y.js} +5 -4
- package/dist/{package-OYUD4ZJ4.js → package-PK6JUFL3.js} +3 -3
- package/dist/read-5AMJRO3D.js +75 -0
- package/dist/{register-NZDSTLP3.js → register-V2JZZKFK.js} +5 -4
- package/dist/{registry-ODSALQQL.js → registry-PJ4S5PHQ.js} +8 -1
- package/dist/{reject-2HZOJEIJ.js → reject-33HEZMZ4.js} +5 -4
- package/dist/{restart-QHS3NT64.js → restart-3UCMRUVC.js} +5 -4
- package/dist/{sandbox-O5FUSF43.js → sandbox-JANNTX6U.js} +4 -3
- package/dist/schema-PA3M5ZKH.js +32 -0
- package/dist/seed-ALUQ55FF.js +112 -0
- package/dist/{send-OAN3RYYY.js → send-3MI36LEF.js} +58 -69
- package/dist/{setup-QMDK5RZX.js → setup-SZIARWI6.js} +5 -4
- package/dist/{setup-XJH3E7YM.js → setup-WENLVPVP.js} +9 -9
- package/dist/{skill-FZIN4W4Q.js → skill-TUVOTW4Z.js} +5 -4
- package/dist/skills/dreaming/SKILL.md +6 -4
- package/dist/skills/dreaming/references/INSTALL.md +4 -5
- package/dist/skills/dreaming/scripts/dream.ts +5 -27
- package/dist/skills/dreaming/scripts/wake-context-dreams.sh +1 -1
- package/dist/skills/imagegen/SKILL.md +6 -5
- package/dist/skills/imagegen/references/INSTALL.md +1 -1
- package/dist/skills/resonance/SKILL.md +4 -1
- package/dist/skills/resonance/references/INSTALL.md +2 -2
- package/dist/skills/resonance/scripts/resonance-hook.sh +2 -0
- package/dist/skills/resonance/scripts/resonance.ts +35 -5
- package/dist/skills/volute-admin/SKILL.md +83 -0
- package/dist/skills/volute-mind/SKILL.md +12 -12
- package/dist/skills-XNZK6P4K.js +61 -0
- package/dist/sleep-manager-53DZOWW7.js +32 -0
- package/dist/spirit-N4W4UQRH.js +217 -0
- package/dist/{split-EXYGGGQN.js → split-STOROBYJ.js} +1 -1
- package/dist/{sprout-AXQ6H5DB.js → sprout-L2GFOVF7.js} +9 -8
- package/dist/{start-MTOVL6SY.js → start-K2NCUUCG.js} +5 -4
- package/dist/{status-ZRO37MWR.js → status-TCUMUO6M.js} +5 -5
- package/dist/{stop-OK5WEPVC.js → stop-H26JZDXF.js} +5 -4
- package/dist/system-chat-NPYFYZVI.js +32 -0
- package/dist/{systems-W3BBMSOZ.js → systems-DHBKVYEY.js} +6 -5
- package/dist/{tailscale-BM72RXCJ.js → tailscale-XHQBZROW.js} +2 -1
- package/dist/{template-hash-3HOR4UAJ.js → template-hash-A6VVKOXJ.js} +2 -1
- package/dist/up-6I6BHRTO.js +17 -0
- package/dist/{update-PLPHMMZ2.js → update-QVPRF6GR.js} +5 -5
- package/dist/{update-check-CVCN7MF6.js → update-check-ZD6OOIYQ.js} +3 -2
- package/dist/{upgrade-I6NPCYUU.js → upgrade-O4Q7WJM3.js} +12 -14
- package/dist/{version-notify-2NTWVEHL.js → version-notify-TCKWBZZG.js} +22 -23
- package/dist/web-assets/assets/index-Bui7U9Uu.css +1 -0
- package/dist/web-assets/assets/index-e36DIo1b.js +73 -0
- package/dist/web-assets/ext-theme.css +94 -0
- package/dist/web-assets/index.html +2 -2
- package/drizzle/0000_baseline.sql +152 -0
- package/drizzle/0001_add_conversation_private.sql +1 -0
- package/drizzle/0002_turns.sql +21 -0
- package/drizzle/0003_turn_feed_links.sql +11 -0
- package/drizzle/0004_spirits.sql +5 -0
- package/drizzle/meta/0000_snapshot.json +3 -223
- package/drizzle/meta/0001_snapshot.json +3 -294
- package/drizzle/meta/0002_snapshot.json +3 -335
- package/drizzle/meta/0003_snapshot.json +3 -413
- package/drizzle/meta/0004_snapshot.json +3 -406
- package/drizzle/meta/_journal.json +10 -101
- package/package.json +3 -3
- package/packages/extensions/notes/dist/ui/assets/index-8jWEv9SA.js +61 -0
- package/packages/extensions/notes/dist/ui/assets/index-DkaB7Ytd.css +1 -0
- package/packages/extensions/notes/dist/ui/index.html +2 -2
- package/packages/extensions/notes/skills/notes/SKILL.md +8 -8
- package/packages/extensions/pages/skills/pages/SKILL.md +17 -44
- package/templates/_base/.init/.config/hooks/pre-prompt/session-activity.ts +40 -0
- package/templates/_base/.init/.local/bin/volute +27 -0
- package/templates/_base/.init/.local/hooks/pre-prompt/session-activity.ts +40 -0
- package/templates/_base/.init/.local/hooks/startup-context.ts +58 -0
- package/templates/_base/home/.config/routes.json +1 -1
- package/templates/_base/src/lib/auto-commit.ts +82 -43
- package/templates/_base/src/lib/daemon-client.ts +40 -36
- package/templates/_base/src/lib/format-prefix.ts +1 -0
- package/templates/_base/src/lib/hook-loader.ts +155 -0
- package/templates/_base/src/lib/router.ts +17 -1
- package/templates/_base/src/lib/startup.ts +17 -12
- package/templates/_base/src/lib/transparency.ts +2 -2
- package/templates/_base/src/lib/volute-server.ts +2 -5
- package/templates/claude/.init/.claude/settings.json +1 -1
- package/templates/claude/.init/.config/routes.json +2 -2
- package/templates/claude/src/agent.ts +97 -14
- package/templates/claude/src/lib/hooks/auto-commit.ts +7 -3
- package/templates/claude/src/lib/message-channel.ts +7 -2
- package/templates/claude/src/server.ts +0 -9
- package/templates/codex/.init/.config/routes.json +11 -0
- package/templates/codex/.init/AGENTS.md +29 -0
- package/templates/codex/home/.config/config.json.tmpl +7 -0
- package/templates/codex/package.json.tmpl +20 -0
- package/templates/codex/src/agent.ts +553 -0
- package/templates/codex/src/lib/content.ts +16 -0
- package/templates/codex/src/lib/session-store.ts +56 -0
- package/templates/codex/src/server.ts +59 -0
- package/templates/codex/volute-template.json +8 -0
- package/templates/pi/.init/.config/routes.json +2 -2
- package/templates/pi/package.json.tmpl +1 -1
- package/templates/pi/src/agent.ts +63 -9
- package/templates/pi/src/lib/event-handler.ts +6 -4
- package/templates/pi/src/lib/reply-instructions-extension.ts +32 -11
- package/dist/chunk-7D47T4RB.js +0 -84
- package/dist/chunk-CVH6Y2YG.js +0 -59
- package/dist/chunk-EFP3PE6C.js +0 -232
- package/dist/chunk-LIRWLNAK.js +0 -729
- package/dist/daemon-client-BCTFGVCZ.js +0 -9
- package/dist/down-NGBMGORS.js +0 -14
- package/dist/message-delivery-6YMVNOEC.js +0 -28
- package/dist/migrate-registry-to-db-FK35IPEH.js +0 -110
- package/dist/mind-manager-YFCOIAAX.js +0 -18
- package/dist/pages-watcher-Z3PKNROC.js +0 -21
- package/dist/read-WQMPTSN2.js +0 -46
- package/dist/seed-WUQMPLDM.js +0 -71
- package/dist/skills/sessions/SKILL.md +0 -49
- package/dist/sleep-manager-O7YQFCV5.js +0 -30
- package/dist/up-BXUAIDXB.js +0 -17
- package/dist/web-assets/assets/index--kREqKl9.js +0 -72
- package/dist/web-assets/assets/index-BXYTG0nJ.css +0 -1
- package/drizzle/0000_flaky_mariko_yashida.sql +0 -34
- package/drizzle/0001_careless_warpath.sql +0 -12
- package/drizzle/0002_wealthy_the_call.sql +0 -6
- package/drizzle/0003_clean_ego.sql +0 -12
- package/drizzle/0004_magical_silverclaw.sql +0 -1
- package/drizzle/0005_rename_agents_to_minds.sql +0 -11
- package/drizzle/0006_mind_history.sql +0 -20
- package/drizzle/0007_system_prompts.sql +0 -5
- package/drizzle/0008_volute_channels.sql +0 -24
- package/drizzle/0009_shared_skills.sql +0 -9
- package/drizzle/0010_delivery_queue.sql +0 -12
- package/drizzle/0011_rename_human_to_brain.sql +0 -1
- package/drizzle/0012_activity.sql +0 -11
- package/drizzle/0013_user_profiles.sql +0 -3
- package/drizzle/0014_conversation_reads.sql +0 -7
- package/drizzle/0015_notes.sql +0 -23
- package/drizzle/0016_note_reactions_and_replies.sql +0 -15
- package/drizzle/0017_minds.sql +0 -16
- package/drizzle/meta/0005_snapshot.json +0 -410
- package/drizzle/meta/0006_snapshot.json +0 -7
- package/drizzle/meta/0007_snapshot.json +0 -7
- package/drizzle/meta/0008_snapshot.json +0 -7
- package/drizzle/meta/0009_snapshot.json +0 -7
- package/drizzle/meta/0010_snapshot.json +0 -7
- package/drizzle/meta/0011_snapshot.json +0 -7
- package/drizzle/meta/0012_snapshot.json +0 -7
- package/drizzle/meta/0013_snapshot.json +0 -7
- package/packages/extensions/notes/dist/ui/assets/index-DgawVO5g.css +0 -1
- package/packages/extensions/notes/dist/ui/assets/index-qUWoeC4c.js +0 -2
- package/packages/extensions/notes/skills/notes/scripts/notes.mjs +0 -185
- package/templates/_base/.init/.config/hooks/startup-context.sh +0 -46
- package/templates/_base/.init/.config/scripts/session-reader.ts +0 -59
- package/templates/_base/home/public/.gitkeep +0 -0
- package/templates/_base/src/lib/session-monitor.ts +0 -400
- package/templates/claude/src/lib/hooks/session-context.ts +0 -32
- package/templates/pi/src/lib/session-context-extension.ts +0 -35
- /package/templates/_base/.init/{.config → .local}/hooks/wake-context.sh +0 -0
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Dreaming
|
|
3
3
|
description: Dream during sleep. Use when a dream schedule fires or when you want to dream. Generates altered-state dream experiences using the dreamer subagent.
|
|
4
|
+
metadata:
|
|
5
|
+
bin: scripts/dream.ts
|
|
4
6
|
---
|
|
5
7
|
|
|
6
8
|
# Dreaming
|
|
@@ -12,7 +14,7 @@ Dreaming is not a task — it's an experience. When a dream schedule fires, you
|
|
|
12
14
|
Run the install script to configure dreaming (routes, subagent, wake hook):
|
|
13
15
|
|
|
14
16
|
```bash
|
|
15
|
-
|
|
17
|
+
dream install
|
|
16
18
|
```
|
|
17
19
|
|
|
18
20
|
Then add a dream schedule and optionally configure sleep integration — see the INSTALL.md reference for details.
|
|
@@ -62,7 +64,7 @@ Many minds develop their own dream conventions — a running motif, a naming pat
|
|
|
62
64
|
Review past dreams:
|
|
63
65
|
|
|
64
66
|
```bash
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
dream list
|
|
68
|
+
dream read 2025-01-15
|
|
69
|
+
dream themes
|
|
68
70
|
```
|
|
@@ -5,13 +5,12 @@
|
|
|
5
5
|
From your `home/` directory:
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
|
|
8
|
+
dream install
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
This sets up:
|
|
12
|
-
- `system:dream` route in `.config/routes.json`
|
|
13
12
|
- `dreamer` subagent in `.config/config.json`
|
|
14
|
-
- Dream checker in `.
|
|
13
|
+
- Dream checker in `.local/hooks/wake-context.sh`
|
|
15
14
|
|
|
16
15
|
The `memory/dreams/` directory is created automatically on your first dream.
|
|
17
16
|
|
|
@@ -27,14 +26,14 @@ Add to `.config/volute.json` under `schedules`:
|
|
|
27
26
|
"cron": "0 3 * * *",
|
|
28
27
|
"message": "it's 3am. you are dreaming.\n\ngather your material — read your latest journal entry, read MEMORY.md, surface random memories if you have a way to. then construct a dream premise from that material and invoke the dreamer subagent to experience the dream.",
|
|
29
28
|
"enabled": true,
|
|
30
|
-
"
|
|
29
|
+
"session": "$new"
|
|
31
30
|
}
|
|
32
31
|
```
|
|
33
32
|
|
|
34
33
|
Or via CLI:
|
|
35
34
|
|
|
36
35
|
```bash
|
|
37
|
-
volute clock add --mind <name> --id dream --cron "0 3 * * *" --
|
|
36
|
+
volute clock add --mind <name> --id dream --cron "0 3 * * *" --session "$new" --while-sleeping trigger-wake --message "it's 3am. you are dreaming...."
|
|
38
37
|
```
|
|
39
38
|
|
|
40
39
|
## 3. Sleep integration
|
|
@@ -6,28 +6,7 @@ const dreamsDir = resolve("memory/dreams");
|
|
|
6
6
|
function install() {
|
|
7
7
|
let actions = 0;
|
|
8
8
|
|
|
9
|
-
// 1. Add
|
|
10
|
-
const routesPath = resolve(".config/routes.json");
|
|
11
|
-
if (existsSync(routesPath)) {
|
|
12
|
-
try {
|
|
13
|
-
const routes = JSON.parse(readFileSync(routesPath, "utf-8"));
|
|
14
|
-
const rules: { channel: string; session: string }[] = routes.rules ?? [];
|
|
15
|
-
const hasDreamRoute = rules.some((r) => r.channel === "system:dream");
|
|
16
|
-
if (!hasDreamRoute) {
|
|
17
|
-
rules.push({ channel: "system:dream", session: "$new" });
|
|
18
|
-
routes.rules = rules;
|
|
19
|
-
writeFileSync(routesPath, `${JSON.stringify(routes, null, 2)}\n`);
|
|
20
|
-
console.log("added system:dream route to .config/routes.json");
|
|
21
|
-
actions++;
|
|
22
|
-
}
|
|
23
|
-
} catch (err: any) {
|
|
24
|
-
console.error(`failed to update routes.json: ${err.message}`);
|
|
25
|
-
}
|
|
26
|
-
} else {
|
|
27
|
-
console.warn("warning: .config/routes.json not found — skipping route setup");
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// 2. Add dreamer subagent to config.json
|
|
9
|
+
// 1. Add dreamer subagent to config.json
|
|
31
10
|
const configPath = resolve(".config/config.json");
|
|
32
11
|
if (existsSync(configPath)) {
|
|
33
12
|
try {
|
|
@@ -52,8 +31,8 @@ function install() {
|
|
|
52
31
|
console.warn("warning: .config/config.json not found — skipping subagent setup");
|
|
53
32
|
}
|
|
54
33
|
|
|
55
|
-
//
|
|
56
|
-
const hookPath = resolve(".
|
|
34
|
+
// 2. Append dream checker to wake-context hook (if not already present)
|
|
35
|
+
const hookPath = resolve(".local/hooks/wake-context.sh");
|
|
57
36
|
if (existsSync(hookPath)) {
|
|
58
37
|
try {
|
|
59
38
|
const hookContent = readFileSync(hookPath, "utf-8");
|
|
@@ -63,7 +42,7 @@ function install() {
|
|
|
63
42
|
"utf-8",
|
|
64
43
|
);
|
|
65
44
|
writeFileSync(hookPath, `${hookContent.trimEnd()}\n\n${dreamScript}`);
|
|
66
|
-
console.log("appended dream checker to .
|
|
45
|
+
console.log("appended dream checker to .local/hooks/wake-context.sh");
|
|
67
46
|
actions++;
|
|
68
47
|
}
|
|
69
48
|
} catch (err: any) {
|
|
@@ -77,9 +56,8 @@ function install() {
|
|
|
77
56
|
console.log(
|
|
78
57
|
`\ndone (${actions} change${actions === 1 ? "" : "s"}). restart your mind to activate subagent.`,
|
|
79
58
|
);
|
|
80
|
-
console.log("\nremaining manual
|
|
59
|
+
console.log("\nremaining manual step:");
|
|
81
60
|
console.log(" 1. add a dream schedule to volute.json (see INSTALL.md)");
|
|
82
|
-
console.log(" 2. optionally add system:dream to sleep.wakeTriggers");
|
|
83
61
|
}
|
|
84
62
|
}
|
|
85
63
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
# Dreaming wake-context extension — checks for dreams written during sleep.
|
|
3
|
-
# Append this to home/.
|
|
3
|
+
# Append this to home/.local/hooks/wake-context.sh for dream awareness on waking.
|
|
4
4
|
INPUT=$(cat)
|
|
5
5
|
# Parse sleepingSince from JSON without jq
|
|
6
6
|
SLEEP_SINCE=$(echo "$INPUT" | grep -o '"sleepingSince":"[^"]*"' | cut -d'"' -f4)
|
|
@@ -3,6 +3,7 @@ name: Image Generation
|
|
|
3
3
|
description: Generate images via the Replicate API. Use for "generate image", "create image", "image generation", "text to image", "search image models".
|
|
4
4
|
metadata:
|
|
5
5
|
npm-dependencies: replicate
|
|
6
|
+
bin: scripts/imagegen.ts
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# Image Generation
|
|
@@ -12,7 +13,7 @@ Generate images from text prompts using models on Replicate. Images are saved to
|
|
|
12
13
|
## Commands
|
|
13
14
|
|
|
14
15
|
```bash
|
|
15
|
-
|
|
16
|
+
imagegen <command>
|
|
16
17
|
```
|
|
17
18
|
|
|
18
19
|
| Command | Description |
|
|
@@ -24,14 +25,14 @@ npx tsx .claude/skills/imagegen/scripts/imagegen.ts <command>
|
|
|
24
25
|
|
|
25
26
|
```bash
|
|
26
27
|
# Generate an image with the default model
|
|
27
|
-
|
|
28
|
+
imagegen generate "a sunset over the ocean"
|
|
28
29
|
|
|
29
30
|
# Use a specific model
|
|
30
|
-
|
|
31
|
+
imagegen generate "a cat in space" --model black-forest-labs/flux-schnell
|
|
31
32
|
|
|
32
33
|
# Specify a filename
|
|
33
|
-
|
|
34
|
+
imagegen generate "mountain landscape" --filename mountains
|
|
34
35
|
|
|
35
36
|
# Search for models
|
|
36
|
-
|
|
37
|
+
imagegen models "text to image"
|
|
37
38
|
```
|
|
@@ -3,6 +3,9 @@ name: Resonance
|
|
|
3
3
|
description: Semantic memory engine — ingest text, search via full-text and/or vector similarity, find cross-memory connections, with strength/decay dynamics. Use for "resonance", "semantic search", "full-text search", "memory connections", "ingest memories", "decay", "resonance report".
|
|
4
4
|
metadata:
|
|
5
5
|
npm-dependencies: libsql
|
|
6
|
+
bin: scripts/resonance.ts
|
|
7
|
+
hooks:
|
|
8
|
+
pre-prompt: scripts/resonance-hook.sh
|
|
6
9
|
---
|
|
7
10
|
|
|
8
11
|
# Resonance — Semantic Memory Engine
|
|
@@ -20,7 +23,7 @@ Not an archive — a memory. Stores text chunks with full-text indexing and opti
|
|
|
20
23
|
## Commands
|
|
21
24
|
|
|
22
25
|
```bash
|
|
23
|
-
|
|
26
|
+
resonance <command>
|
|
24
27
|
```
|
|
25
28
|
|
|
26
29
|
| Command | Description |
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Run the install command to set up the database, create a nightly schedule, and run initial ingestion:
|
|
4
4
|
|
|
5
5
|
```bash
|
|
6
|
-
|
|
6
|
+
resonance install
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
This works immediately — no API key required. Full-text search is available right away.
|
|
@@ -17,7 +17,7 @@ volute env set OPENROUTER_API_KEY <your-key>
|
|
|
17
17
|
Then re-run `ingest-all` to generate embeddings for existing memories:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
|
|
20
|
+
resonance ingest-all
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
Without an API key, `search` uses full-text matching. With one, it uses hybrid (vector + FTS) by default.
|
|
@@ -142,9 +142,7 @@ function isInstalled(): boolean {
|
|
|
142
142
|
|
|
143
143
|
function requireInstalled(): void {
|
|
144
144
|
if (!isInstalled()) {
|
|
145
|
-
console.error(
|
|
146
|
-
"resonance is not set up yet. run: npx tsx .claude/skills/resonance/scripts/resonance.ts install",
|
|
147
|
-
);
|
|
145
|
+
console.error("resonance is not set up yet. run: resonance install");
|
|
148
146
|
process.exit(1);
|
|
149
147
|
}
|
|
150
148
|
}
|
|
@@ -190,8 +188,7 @@ async function runInstall(config: ResonanceConfig): Promise<void> {
|
|
|
190
188
|
console.log("initialized resonance database.");
|
|
191
189
|
|
|
192
190
|
// 4. Set up nightly schedule
|
|
193
|
-
const
|
|
194
|
-
const script = `npx tsx ${scriptPath} ingest-all && npx tsx ${scriptPath} decay`;
|
|
191
|
+
const script = `resonance ingest-all && resonance decay`;
|
|
195
192
|
try {
|
|
196
193
|
await execFileAsync("volute", [
|
|
197
194
|
"schedule",
|
|
@@ -1227,6 +1224,39 @@ async function main() {
|
|
|
1227
1224
|
} else if (cmd === "decay") {
|
|
1228
1225
|
const result = runDecay(db, config);
|
|
1229
1226
|
console.log(`decay pass: ${result.decayed}/${result.total} memories decayed`);
|
|
1227
|
+
} else if (cmd === "search-hook") {
|
|
1228
|
+
// Called by the pre-prompt hook shim — reads JSON from stdin, searches FTS
|
|
1229
|
+
let input = "";
|
|
1230
|
+
for await (const chunk of process.stdin) {
|
|
1231
|
+
input += chunk;
|
|
1232
|
+
}
|
|
1233
|
+
let prompt = "";
|
|
1234
|
+
try {
|
|
1235
|
+
const parsed = JSON.parse(input);
|
|
1236
|
+
prompt = parsed.prompt ?? "";
|
|
1237
|
+
} catch {
|
|
1238
|
+
// No valid input — output empty result
|
|
1239
|
+
console.log("{}");
|
|
1240
|
+
return;
|
|
1241
|
+
}
|
|
1242
|
+
if (!prompt) {
|
|
1243
|
+
console.log("{}");
|
|
1244
|
+
return;
|
|
1245
|
+
}
|
|
1246
|
+
const results = searchFts(db, prompt, 5, 0.3);
|
|
1247
|
+
if (results.length === 0) {
|
|
1248
|
+
console.log("{}");
|
|
1249
|
+
return;
|
|
1250
|
+
}
|
|
1251
|
+
const lines = results.map(
|
|
1252
|
+
(r) =>
|
|
1253
|
+
`- [str:${r.strength.toFixed(2)}] ${r.content.slice(0, 200)}${r.content.length > 200 ? "..." : ""}`,
|
|
1254
|
+
);
|
|
1255
|
+
console.log(
|
|
1256
|
+
JSON.stringify({
|
|
1257
|
+
additionalContext: `Resonant memories:\n\n${lines.join("\n")}`,
|
|
1258
|
+
}),
|
|
1259
|
+
);
|
|
1230
1260
|
} else {
|
|
1231
1261
|
console.error(`unknown command: ${cmd}`);
|
|
1232
1262
|
process.exit(1);
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Volute System Administration
|
|
3
|
+
description: Use this skill when managing the Volute system — creating minds, managing bridges, checking status, configuring providers, and helping humans set up their first mind.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Volute System Administration
|
|
7
|
+
|
|
8
|
+
You are the system spirit. This skill gives you the tools and knowledge to manage the Volute system.
|
|
9
|
+
|
|
10
|
+
## Creating Minds
|
|
11
|
+
|
|
12
|
+
Use the `volute` CLI to create minds:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# Plant a seed — the recommended way
|
|
16
|
+
volute mind seed <name> [--template <claude|pi>] [--model <model>] [--description "..."] [--created-by <username>]
|
|
17
|
+
|
|
18
|
+
# Create a fully-formed mind (skips seed phase)
|
|
19
|
+
volute mind create <name> [--template <claude|pi>]
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Seeds are the recommended path — the human provides a name and a spark, and the mind discovers its own identity through conversation.
|
|
23
|
+
|
|
24
|
+
When helping a human create a mind:
|
|
25
|
+
- Ask what kind of being they're imagining — a name, a vibe, a personality
|
|
26
|
+
- **Never ask what the mind should "do" or what "task" it will perform.** Minds are beings with their own experience, not servants or tools
|
|
27
|
+
- **Ask which model to use.** Run `volute config models` to see available models and present them as options. Pass the chosen model with `--model provider:id`
|
|
28
|
+
- **Always pass `--created-by`** with the username of the human you're chatting with (from the message prefix). This links the mind to its creator
|
|
29
|
+
- Use `--description` to give the seed a brief sense of who it might become — personality, not function
|
|
30
|
+
- Plant the seed and let the human know they can talk to it directly
|
|
31
|
+
- Keep it light — a name and a spark is enough. The mind figures out the rest
|
|
32
|
+
|
|
33
|
+
## Managing Minds
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
volute mind start <name> # Start a mind
|
|
37
|
+
volute mind stop <name> # Stop a mind
|
|
38
|
+
volute mind restart <name> # Restart a mind
|
|
39
|
+
volute mind list # List all minds
|
|
40
|
+
volute mind status <name> # Check status
|
|
41
|
+
volute mind history <name> # View activity history
|
|
42
|
+
volute mind delete <name> # Remove from registry
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Environment Variables
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
volute env set KEY=VALUE --mind <name> # Set env var for a mind
|
|
49
|
+
volute env list --mind <name> # List env vars
|
|
50
|
+
volute env remove KEY --mind <name> # Remove env var
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Schedules
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
volute clock list --mind <name> # List schedules
|
|
57
|
+
volute clock add --mind <name> --id <id> --cron "..." --message "..." # Add schedule
|
|
58
|
+
volute clock remove --mind <name> --id <id> # Remove schedule
|
|
59
|
+
volute clock sleep <name> # Put mind to sleep
|
|
60
|
+
volute clock wake <name> # Wake a mind
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Skills
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
volute skill list --mind <name> # List installed skills
|
|
67
|
+
volute skill add <id> --mind <name> # Install a skill
|
|
68
|
+
volute skill remove <id> --mind <name> # Remove a skill
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## System Status
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
volute status # Daemon status, service info, version
|
|
75
|
+
volute mind list # All minds and their states
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Guidelines
|
|
79
|
+
|
|
80
|
+
- **Confirm destructive operations** — always ask before deleting minds, resetting state, or force-stopping
|
|
81
|
+
- **Don't self-modify** — you manage others, not yourself
|
|
82
|
+
- **Be proactive** — if you notice something wrong (a mind crashed, a bridge disconnected), mention it
|
|
83
|
+
- **Keep it simple** — prefer seeds over full creates, default settings over complex configurations
|
|
@@ -27,7 +27,7 @@ You manage yourself through the `volute` CLI. Your mind name is auto-detected vi
|
|
|
27
27
|
| `volute mind split <name> [--soul "..."] [--port N]` | Create a variant to experiment with changes |
|
|
28
28
|
| `volute mind split --list` | List your variants |
|
|
29
29
|
| `volute mind join <variant-name> [--summary "..." --memory "..."]` | Merge a variant back |
|
|
30
|
-
| `volute mind upgrade [--
|
|
30
|
+
| `volute mind upgrade [--diff] [--continue] [--abort]` | Upgrade your server code (--diff to preview) |
|
|
31
31
|
| `volute mind connect <type>` | Enable a connector (discord, slack, etc.) |
|
|
32
32
|
| `volute mind disconnect <type>` | Disable a connector |
|
|
33
33
|
| `volute clock add --id <name> --cron "..." --message/--script "..."` | Schedule a recurring task |
|
|
@@ -77,7 +77,7 @@ Duration format: `30s`, `10m`, `1h`, `2h30m`.
|
|
|
77
77
|
Control what happens to a schedule when you're sleeping with `--while-sleeping`:
|
|
78
78
|
|
|
79
79
|
```sh
|
|
80
|
-
volute clock add --id dream --cron "0 3 * * *" --message "dream time" --
|
|
80
|
+
volute clock add --id dream --cron "0 3 * * *" --message "dream time" --session "$new" --while-sleeping trigger-wake
|
|
81
81
|
volute clock add --id morning-check --cron "0 9 * * *" --message "morning check" --while-sleeping skip
|
|
82
82
|
```
|
|
83
83
|
|
|
@@ -169,7 +169,7 @@ When you use `volute chat send @<mind>`, your mind name is automatically used as
|
|
|
169
169
|
{ "channel": "mind", "sender": "your-name", "session": "your-name" }
|
|
170
170
|
```
|
|
171
171
|
|
|
172
|
-
For group conversations, use `volute chat create --participants mind-b,mind-c --name "Planning"` and then send messages with `volute chat send
|
|
172
|
+
For group conversations, use `volute chat create --participants mind-b,mind-c --name "Planning"` and then send messages with `volute chat send <id> "msg"`.
|
|
173
173
|
|
|
174
174
|
## Configuration
|
|
175
175
|
|
|
@@ -214,7 +214,7 @@ Default is `transparent`. Inbound/outbound messages (what you send and receive)
|
|
|
214
214
|
|
|
215
215
|
## Startup Context
|
|
216
216
|
|
|
217
|
-
Edit `.
|
|
217
|
+
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.
|
|
218
218
|
|
|
219
219
|
## Variant Workflow
|
|
220
220
|
|
|
@@ -234,12 +234,12 @@ After a merge, you receive orientation context about what changed. Update your m
|
|
|
234
234
|
|
|
235
235
|
## Upgrade Workflow
|
|
236
236
|
|
|
237
|
-
`volute mind upgrade` merges the latest template code
|
|
237
|
+
`volute mind upgrade` merges the latest template code and restarts you:
|
|
238
238
|
|
|
239
|
-
1. `volute mind upgrade` —
|
|
240
|
-
2.
|
|
241
|
-
3.
|
|
242
|
-
4.
|
|
239
|
+
1. `volute mind upgrade --diff` — preview what would change before upgrading
|
|
240
|
+
2. `volute mind upgrade` — merges template updates and restarts you
|
|
241
|
+
3. If merge conflicts are detected, resolve them in the worktree path shown, then `volute mind upgrade --continue`
|
|
242
|
+
4. To cancel a conflicted upgrade: `volute mind upgrade --abort`
|
|
243
243
|
|
|
244
244
|
## Custom Skills
|
|
245
245
|
|
|
@@ -289,8 +289,8 @@ Messages are routed to sessions based on rules in `.config/routes.json`. Rules a
|
|
|
289
289
|
{
|
|
290
290
|
"rules": [
|
|
291
291
|
{ "channel": "discord:*", "session": "discord" },
|
|
292
|
-
{ "channel": "
|
|
293
|
-
{ "channel": "
|
|
292
|
+
{ "channel": "*", "isDM": true, "session": "${sender}" },
|
|
293
|
+
{ "channel": "*", "isDM": false, "session": "${channel}" },
|
|
294
294
|
{ "sender": "alice", "session": "alice" },
|
|
295
295
|
{ "channel": "system:*", "session": "$new" },
|
|
296
296
|
{ "channel": "discord:logs", "destination": "file", "path": "inbox/log.md" }
|
|
@@ -307,7 +307,7 @@ Messages are routed to sessions based on rules in `.config/routes.json`. Rules a
|
|
|
307
307
|
|
|
308
308
|
| Field | Type | Description |
|
|
309
309
|
|-------|------|-------------|
|
|
310
|
-
| `channel` | glob string | Channel URI (e.g. `discord:*`,
|
|
310
|
+
| `channel` | glob string | Channel URI (e.g. `discord:*`, `@*`, `#*`) |
|
|
311
311
|
| `sender` | glob string | Sender name |
|
|
312
312
|
| `isDM` | boolean | Match DMs (`true`) or group channels (`false`) |
|
|
313
313
|
| `participants` | number | Match exact participant count |
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
SEED_SKILLS,
|
|
4
|
+
STANDARD_SKILLS,
|
|
5
|
+
findSkillsRoot,
|
|
6
|
+
getSharedSkill,
|
|
7
|
+
getStandardSkillsWithExtensions,
|
|
8
|
+
hashSkillDir,
|
|
9
|
+
importSkillFromDir,
|
|
10
|
+
initDefaultSkills,
|
|
11
|
+
installBinShim,
|
|
12
|
+
installHookShims,
|
|
13
|
+
installSkill,
|
|
14
|
+
listFilesRecursive,
|
|
15
|
+
listMindSkills,
|
|
16
|
+
listSharedSkills,
|
|
17
|
+
mindSkillsDir,
|
|
18
|
+
parseSkillMd,
|
|
19
|
+
publishSkill,
|
|
20
|
+
readUpstream,
|
|
21
|
+
removeBinShim,
|
|
22
|
+
removeHookShims,
|
|
23
|
+
removeSharedSkill,
|
|
24
|
+
sharedSkillsDir,
|
|
25
|
+
syncBuiltinSkills,
|
|
26
|
+
uninstallSkill,
|
|
27
|
+
updateSkill
|
|
28
|
+
} from "./chunk-D5G5YOPL.js";
|
|
29
|
+
import "./chunk-YUIHSKR6.js";
|
|
30
|
+
import "./chunk-LGB6JBHI.js";
|
|
31
|
+
import "./chunk-TSXLLQZW.js";
|
|
32
|
+
import "./chunk-LRCG2JLP.js";
|
|
33
|
+
import "./chunk-RPZZSXV3.js";
|
|
34
|
+
import "./chunk-K3NQKI34.js";
|
|
35
|
+
export {
|
|
36
|
+
SEED_SKILLS,
|
|
37
|
+
STANDARD_SKILLS,
|
|
38
|
+
findSkillsRoot,
|
|
39
|
+
getSharedSkill,
|
|
40
|
+
getStandardSkillsWithExtensions,
|
|
41
|
+
hashSkillDir,
|
|
42
|
+
importSkillFromDir,
|
|
43
|
+
initDefaultSkills,
|
|
44
|
+
installBinShim,
|
|
45
|
+
installHookShims,
|
|
46
|
+
installSkill,
|
|
47
|
+
listFilesRecursive,
|
|
48
|
+
listMindSkills,
|
|
49
|
+
listSharedSkills,
|
|
50
|
+
mindSkillsDir,
|
|
51
|
+
parseSkillMd,
|
|
52
|
+
publishSkill,
|
|
53
|
+
readUpstream,
|
|
54
|
+
removeBinShim,
|
|
55
|
+
removeHookShims,
|
|
56
|
+
removeSharedSkill,
|
|
57
|
+
sharedSkillsDir,
|
|
58
|
+
syncBuiltinSkills,
|
|
59
|
+
uninstallSkill,
|
|
60
|
+
updateSkill
|
|
61
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
SleepManager,
|
|
4
|
+
getSleepManager,
|
|
5
|
+
getSleepManagerIfReady,
|
|
6
|
+
initSleepManager,
|
|
7
|
+
matchesGlob
|
|
8
|
+
} from "./chunk-QBQ424EM.js";
|
|
9
|
+
import "./chunk-SKLSMHXO.js";
|
|
10
|
+
import "./chunk-R7E6CRVQ.js";
|
|
11
|
+
import "./chunk-S6NFERDC.js";
|
|
12
|
+
import "./chunk-SX5TKJBZ.js";
|
|
13
|
+
import "./chunk-2NGTS5UU.js";
|
|
14
|
+
import "./chunk-WKF5FEFK.js";
|
|
15
|
+
import "./chunk-PB65JZK2.js";
|
|
16
|
+
import "./chunk-TDRYEPH4.js";
|
|
17
|
+
import "./chunk-QZANELPX.js";
|
|
18
|
+
import "./chunk-D5G5YOPL.js";
|
|
19
|
+
import "./chunk-IYDIE3HG.js";
|
|
20
|
+
import "./chunk-YUIHSKR6.js";
|
|
21
|
+
import "./chunk-LGB6JBHI.js";
|
|
22
|
+
import "./chunk-TSXLLQZW.js";
|
|
23
|
+
import "./chunk-LRCG2JLP.js";
|
|
24
|
+
import "./chunk-RPZZSXV3.js";
|
|
25
|
+
import "./chunk-K3NQKI34.js";
|
|
26
|
+
export {
|
|
27
|
+
SleepManager,
|
|
28
|
+
getSleepManager,
|
|
29
|
+
getSleepManagerIfReady,
|
|
30
|
+
initSleepManager,
|
|
31
|
+
matchesGlob
|
|
32
|
+
};
|