volute 0.18.0 → 0.19.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 +1 -1
- package/dist/archive-ZCFOSTKB.js +15 -0
- package/dist/{channel-SLURLIRV.js → channel-PUQKGSQM.js} +60 -7
- package/dist/{chunk-AYB7XAWO.js → chunk-2TJGRJ4O.js} +114 -279
- package/dist/{chunk-6BDNWYKG.js → chunk-32VR2EOH.js} +2 -2
- package/dist/chunk-4KPUF5JD.js +214 -0
- package/dist/{chunk-QJIIHU32.js → chunk-7NO7EV5Z.js} +2 -2
- package/dist/chunk-AW7P4EVV.js +159 -0
- package/dist/{chunk-2Y77MCFG.js → chunk-DYZGP3EW.js} +2 -2
- package/dist/{chunk-M77QBTEH.js → chunk-EBGCNDMM.js} +24 -14
- package/dist/{chunk-GSPWIM5E.js → chunk-EMQSAY3B.js} +77 -6
- package/dist/{chunk-37X7ECMF.js → chunk-FCDU5BFX.js} +1 -1
- package/dist/chunk-FGV2H4TX.js +803 -0
- package/dist/{chunk-ZCEYUUID.js → chunk-OGXOMR65.js} +2 -1
- package/dist/chunk-OTWLI7F4.js +375 -0
- package/dist/{chunk-GK4E7LM7.js → chunk-RHEGSQFJ.js} +1 -1
- package/dist/{chunk-MVSXRMJJ.js → chunk-SCUDS4US.js} +1 -1
- package/dist/{chunk-FW5API7X.js → chunk-UJ6GHNR7.js} +2 -2
- package/dist/{chunk-OYSZNX5I.js → chunk-VDWCHYTS.js} +1 -1
- package/dist/{chunk-6DVBMLVN.js → chunk-VE4D3GOP.js} +2 -2
- package/dist/chunk-VQWDC6UK.js +142 -0
- package/dist/{chunk-OJQ47SCA.js → chunk-WC6ZHVRL.js} +1 -1
- package/dist/chunk-YUIHSKR6.js +72 -0
- package/dist/chunk-Z524RFCJ.js +36 -0
- package/dist/cli.js +33 -25
- package/dist/{connector-3ELFMI2R.js → connector-JBVNZ7VK.js} +6 -6
- package/dist/connectors/discord.js +2 -2
- package/dist/connectors/slack.js +2 -2
- package/dist/connectors/telegram.js +2 -2
- package/dist/{create-ZWHCRT5F.js → create-HP4OVVHF.js} +6 -4
- package/dist/{daemon-client-ODKDUYDE.js → daemon-client-ITWUCNFO.js} +2 -2
- package/dist/{daemon-restart-2HVTHZAT.js → daemon-restart-JMZM3QY4.js} +8 -8
- package/dist/daemon.js +1144 -1108
- package/dist/db-5ZVC6MQF.js +10 -0
- package/dist/{delete-6G6WEX4F.js → delete-BSU7K3RY.js} +1 -1
- package/dist/delivery-manager-ISTJMZDW.js +16 -0
- package/dist/down-ZY35KMHR.js +14 -0
- package/dist/{env-6IDWGBUH.js → env-A3LMO777.js} +6 -6
- package/dist/export-GCDNQCF3.js +100 -0
- package/dist/{history-YUEKTJ2N.js → history-WNK3DFUM.js} +6 -6
- package/dist/{import-EDGRLIGO.js → import-M63VIUJ5.js} +3 -3
- package/dist/log-PPPZDVEF.js +39 -0
- package/dist/{login-ORQDXLBM.js → login-HNH3EUQV.js} +2 -2
- package/dist/{logout-XC5AUO5I.js → logout-I5CB5UZS.js} +2 -2
- package/dist/{logs-GYOR3L2L.js → logs-SF2IMJN4.js} +6 -6
- package/dist/merge-33C237A4.js +46 -0
- package/dist/{mind-OJN6RBZW.js → mind-PQ5NCPSU.js} +14 -10
- package/dist/mind-manager-RVCFROAY.js +18 -0
- package/dist/{package-OKLFO7UY.js → package-MYE2ZJLV.js} +5 -3
- package/dist/{pages-6IV4VQTU.js → pages-AXCOSY3P.js} +2 -2
- package/dist/{publish-Q4RPSJLL.js → publish-YB377JB7.js} +18 -4
- package/dist/pull-XAEWQJ47.js +39 -0
- package/dist/{register-LDE6LRXY.js → register-VSPCMHKX.js} +2 -2
- package/dist/{restart-YFAWFS5T.js → restart-IQKMCK5M.js} +6 -6
- package/dist/{schedule-AGYLDMNS.js → schedule-LMX7GAQZ.js} +6 -6
- package/dist/schema-5BW7DFZI.js +24 -0
- package/dist/{seed-AP4Q7RZ7.js → seed-J43YDKXG.js} +7 -4
- package/dist/{send-BNDTLUPM.js → send-KVIZIGCE.js} +8 -8
- package/dist/{service-U7MZ2H7F.js → service-LUR7WDO7.js} +6 -6
- package/dist/{setup-DJKIZKGW.js → setup-OH3PJUJO.js} +7 -7
- package/dist/shared-KO35ZM44.js +39 -0
- package/dist/{skill-2Y42P4JY.js → skill-BCVNI6TV.js} +6 -6
- package/{templates/_base/_skills → dist/skills}/orientation/SKILL.md +1 -1
- package/{templates/_base/_skills → dist/skills}/sessions/SKILL.md +2 -2
- package/{templates/_base/_skills → dist/skills}/volute-mind/SKILL.md +19 -1
- package/dist/{sprout-TJ3BHVOG.js → sprout-VBEX63LX.js} +38 -20
- package/dist/{start-3YYRXBKP.js → start-I5JYB65M.js} +6 -6
- package/dist/{status-VSFZYX7S.js → status-4ESFLGH4.js} +5 -5
- package/dist/status-D7E5HHBV.js +35 -0
- package/dist/{status-OKNA6AR3.js → status-JCJAOXTW.js} +2 -2
- package/dist/{stop-AA5K5LYG.js → stop-NBVKEFQQ.js} +6 -6
- package/dist/{up-7B3BWF2U.js → up-WG65SWJU.js} +5 -5
- package/dist/{update-YAGN5ODG.js → update-FJIHDJKM.js} +5 -5
- package/dist/{update-check-APLTH4IN.js → update-check-MWE5AH4U.js} +2 -2
- package/dist/{upgrade-KXZCQSZN.js → upgrade-AIT24B5I.js} +1 -1
- package/dist/{variant-X5QFG6KK.js → variant-63ZWO2W7.js} +4 -4
- package/dist/variants-JAGWGBXG.js +26 -0
- package/dist/web-assets/assets/index-BAbuRsVF.css +1 -0
- package/dist/web-assets/assets/index-CiQhSKi_.js +63 -0
- package/dist/web-assets/index.html +2 -2
- package/drizzle/0010_delivery_queue.sql +12 -0
- package/drizzle/0011_rename_human_to_brain.sql +1 -0
- package/drizzle/meta/0010_snapshot.json +7 -0
- package/drizzle/meta/0011_snapshot.json +7 -0
- package/drizzle/meta/_journal.json +14 -0
- package/package.json +5 -3
- package/templates/_base/.init/.config/hooks/startup-context.sh +1 -1
- package/templates/_base/.init/.config/scripts/session-reader.ts +3 -3
- package/templates/_base/home/VOLUTE.md +16 -1
- package/templates/_base/src/lib/auto-commit.ts +51 -14
- package/templates/_base/src/lib/router.ts +123 -1
- package/templates/_base/src/lib/types.ts +4 -0
- package/templates/_base/src/lib/volute-server.ts +91 -2
- package/templates/claude/src/server.ts +2 -2
- package/templates/claude/volute-template.json +1 -2
- package/templates/pi/src/agent.ts +1 -1
- package/templates/pi/src/lib/session-context-extension.ts +2 -2
- package/templates/pi/volute-template.json +1 -2
- package/dist/chunk-PO5Q2AYN.js +0 -121
- package/dist/down-A56B5JLK.js +0 -14
- package/dist/mind-manager-Z7O7PN2O.js +0 -15
- package/dist/web-assets/assets/index-CtiimdWK.css +0 -1
- package/dist/web-assets/assets/index-kt1_EcuO.js +0 -63
- /package/{templates/_base/_skills → dist/skills}/memory/SKILL.md +0 -0
package/README.md
CHANGED
|
@@ -74,7 +74,7 @@ The agent knows which channel each message came from — CLI, web, Discord, or s
|
|
|
74
74
|
│ ├── VOLUTE.md # channel routing docs
|
|
75
75
|
│ └── memory/ # daily logs (YYYY-MM-DD.md)
|
|
76
76
|
├── src/ # agent server code
|
|
77
|
-
└── .
|
|
77
|
+
└── .mind/ # runtime state, session, logs
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
**`SOUL.md`** is the identity. This is the core of the system prompt. Edit it to change how the agent thinks and speaks.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
addHistoryToArchive,
|
|
4
|
+
createExportArchive,
|
|
5
|
+
extractArchive,
|
|
6
|
+
readManifest
|
|
7
|
+
} from "./chunk-AW7P4EVV.js";
|
|
8
|
+
import "./chunk-EBGCNDMM.js";
|
|
9
|
+
import "./chunk-K3NQKI34.js";
|
|
10
|
+
export {
|
|
11
|
+
addHistoryToArchive,
|
|
12
|
+
createExportArchive,
|
|
13
|
+
extractArchive,
|
|
14
|
+
readManifest
|
|
15
|
+
};
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
getClient,
|
|
4
|
+
urlOf
|
|
5
|
+
} from "./chunk-4RQBJWQX.js";
|
|
2
6
|
import {
|
|
3
7
|
resolveMindName
|
|
4
8
|
} from "./chunk-NAOW2CLO.js";
|
|
@@ -7,12 +11,8 @@ import {
|
|
|
7
11
|
} from "./chunk-D424ZQGI.js";
|
|
8
12
|
import {
|
|
9
13
|
daemonFetch
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import {
|
|
13
|
-
getClient,
|
|
14
|
-
urlOf
|
|
15
|
-
} from "./chunk-4RQBJWQX.js";
|
|
14
|
+
} from "./chunk-WC6ZHVRL.js";
|
|
15
|
+
import "./chunk-EBGCNDMM.js";
|
|
16
16
|
import "./chunk-K3NQKI34.js";
|
|
17
17
|
|
|
18
18
|
// src/commands/channel.ts
|
|
@@ -34,6 +34,12 @@ async function run(args) {
|
|
|
34
34
|
case "typing":
|
|
35
35
|
await typingChannel(args.slice(1));
|
|
36
36
|
break;
|
|
37
|
+
case "invite":
|
|
38
|
+
await inviteChannel(args.slice(1));
|
|
39
|
+
break;
|
|
40
|
+
case "pending":
|
|
41
|
+
await pendingChannel(args.slice(1));
|
|
42
|
+
break;
|
|
37
43
|
case "--help":
|
|
38
44
|
case "-h":
|
|
39
45
|
case void 0:
|
|
@@ -50,7 +56,9 @@ function printUsage() {
|
|
|
50
56
|
volute channel list [<platform>] [--mind <name>]
|
|
51
57
|
volute channel users <platform> [--mind <name>]
|
|
52
58
|
volute channel create <platform> --participants user1,user2 [--name "..."] [--mind <name>]
|
|
53
|
-
volute channel typing <channel-uri> [--mind <name>]
|
|
59
|
+
volute channel typing <channel-uri> [--mind <name>]
|
|
60
|
+
volute channel invite <channel-name> <username>
|
|
61
|
+
volute channel pending [--mind <name>]`);
|
|
54
62
|
}
|
|
55
63
|
async function readChannel(args) {
|
|
56
64
|
const { positional, flags } = parseArgs(args, {
|
|
@@ -194,6 +202,51 @@ async function typingChannel(args) {
|
|
|
194
202
|
process.exit(1);
|
|
195
203
|
}
|
|
196
204
|
}
|
|
205
|
+
async function inviteChannel(args) {
|
|
206
|
+
const { positional } = parseArgs(args, {});
|
|
207
|
+
const channelName = positional[0];
|
|
208
|
+
const username = positional[1];
|
|
209
|
+
if (!channelName || !username) {
|
|
210
|
+
console.error("Usage: volute channel invite <channel-name> <username>");
|
|
211
|
+
process.exit(1);
|
|
212
|
+
}
|
|
213
|
+
const res = await daemonFetch(`/api/volute/channels/${encodeURIComponent(channelName)}/invite`, {
|
|
214
|
+
method: "POST",
|
|
215
|
+
headers: { "Content-Type": "application/json" },
|
|
216
|
+
body: JSON.stringify({ username })
|
|
217
|
+
});
|
|
218
|
+
if (!res.ok) {
|
|
219
|
+
const body = await res.json().catch(() => ({}));
|
|
220
|
+
console.error(body.error ?? `Server responded with ${res.status}`);
|
|
221
|
+
process.exit(1);
|
|
222
|
+
}
|
|
223
|
+
console.log(`Invited ${username} to #${channelName}`);
|
|
224
|
+
}
|
|
225
|
+
async function pendingChannel(args) {
|
|
226
|
+
const { flags } = parseArgs(args, {
|
|
227
|
+
mind: { type: "string" }
|
|
228
|
+
});
|
|
229
|
+
const mindName = resolveMindName(flags);
|
|
230
|
+
const res = await daemonFetch(`/api/minds/${encodeURIComponent(mindName)}/delivery/pending`);
|
|
231
|
+
if (!res.ok) {
|
|
232
|
+
const body = await res.json().catch(() => ({}));
|
|
233
|
+
console.error(body.error ?? `Server responded with ${res.status}`);
|
|
234
|
+
process.exit(1);
|
|
235
|
+
}
|
|
236
|
+
const pending = await res.json();
|
|
237
|
+
if (pending.length === 0) {
|
|
238
|
+
console.log("No pending messages.");
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
for (const entry of pending) {
|
|
242
|
+
console.log(
|
|
243
|
+
`${(entry.channel ?? "unknown").padEnd(30)} ${String(entry.count).padEnd(6)} ${entry.sender ?? "unknown"}`
|
|
244
|
+
);
|
|
245
|
+
console.log(` First seen: ${entry.firstSeen}`);
|
|
246
|
+
console.log(` Preview: ${entry.preview}`);
|
|
247
|
+
console.log();
|
|
248
|
+
}
|
|
249
|
+
}
|
|
197
250
|
function parseUri(uri) {
|
|
198
251
|
const colonIdx = uri.indexOf(":");
|
|
199
252
|
if (colonIdx === -1) {
|