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
|
@@ -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.32.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",
|
|
@@ -70,6 +70,7 @@ var package_default = {
|
|
|
70
70
|
"@hono/node-server": "^1.19.9",
|
|
71
71
|
"@hono/zod-validator": "^0.7.6",
|
|
72
72
|
"@libsql/client": "^0.17.0",
|
|
73
|
+
"@mariozechner/pi-ai": "^0.58.1",
|
|
73
74
|
"@slack/bolt": "^4.6.0",
|
|
74
75
|
"adm-zip": "^0.5.16",
|
|
75
76
|
bcryptjs: "^3.0.3",
|
|
@@ -79,13 +80,12 @@ var package_default = {
|
|
|
79
80
|
hono: "^4.11.7",
|
|
80
81
|
libsql: "^0.5.22",
|
|
81
82
|
telegraf: "^4.16.3",
|
|
82
|
-
"@mariozechner/pi-ai": "^0.52.7",
|
|
83
83
|
zod: "^4.3.6"
|
|
84
84
|
},
|
|
85
85
|
devDependencies: {
|
|
86
86
|
"@anthropic-ai/claude-agent-sdk": "^0.2.34",
|
|
87
87
|
"@biomejs/biome": "2.3.14",
|
|
88
|
-
"@mariozechner/pi-coding-agent": "^0.
|
|
88
|
+
"@mariozechner/pi-coding-agent": "^0.58.1",
|
|
89
89
|
"@sveltejs/vite-plugin-svelte": "^6.2.4",
|
|
90
90
|
"@types/adm-zip": "^0.5.7",
|
|
91
91
|
"@types/bcryptjs": "^2.4.6",
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
resolveMindName
|
|
4
|
+
} from "./chunk-NAOW2CLO.js";
|
|
5
|
+
import {
|
|
6
|
+
parseArgs
|
|
7
|
+
} from "./chunk-D424ZQGI.js";
|
|
8
|
+
import {
|
|
9
|
+
daemonFetch
|
|
10
|
+
} from "./chunk-UKVWJRKN.js";
|
|
11
|
+
import "./chunk-LRCG2JLP.js";
|
|
12
|
+
import "./chunk-RPZZSXV3.js";
|
|
13
|
+
import "./chunk-K3NQKI34.js";
|
|
14
|
+
|
|
15
|
+
// src/commands/chat/read.ts
|
|
16
|
+
async function resolveConversationId(mindName, input) {
|
|
17
|
+
if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(input)) {
|
|
18
|
+
return input;
|
|
19
|
+
}
|
|
20
|
+
const res = await daemonFetch(`/api/minds/${encodeURIComponent(mindName)}/conversations`);
|
|
21
|
+
if (!res.ok) {
|
|
22
|
+
return input;
|
|
23
|
+
}
|
|
24
|
+
const convs = await res.json();
|
|
25
|
+
const cleaned = input.replace(/^[@#]/, "");
|
|
26
|
+
const lower = cleaned.toLowerCase();
|
|
27
|
+
const channelMatch = convs.find((c) => c.type === "channel" && c.name?.toLowerCase() === lower);
|
|
28
|
+
if (channelMatch) return channelMatch.id;
|
|
29
|
+
const titleMatch = convs.find((c) => c.title?.toLowerCase() === lower);
|
|
30
|
+
if (titleMatch) return titleMatch.id;
|
|
31
|
+
const dmMatch = convs.find(
|
|
32
|
+
(c) => c.type === "dm" && c.title?.toLowerCase().split(/,\s*/).some((name) => name === lower)
|
|
33
|
+
);
|
|
34
|
+
if (dmMatch) return dmMatch.id;
|
|
35
|
+
const prefixMatch = convs.find((c) => c.id.startsWith(input));
|
|
36
|
+
if (prefixMatch) return prefixMatch.id;
|
|
37
|
+
return input;
|
|
38
|
+
}
|
|
39
|
+
async function run(args) {
|
|
40
|
+
const { positional, flags } = parseArgs(args, {
|
|
41
|
+
mind: { type: "string" },
|
|
42
|
+
limit: { type: "number" }
|
|
43
|
+
});
|
|
44
|
+
const input = positional[0];
|
|
45
|
+
if (!input) {
|
|
46
|
+
console.error("Usage: volute chat read <conversation> [--limit N] [--mind <name>]");
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
const mindName = resolveMindName(flags);
|
|
50
|
+
const conversationId = await resolveConversationId(mindName, input);
|
|
51
|
+
const limit = String(flags.limit ?? 50);
|
|
52
|
+
const res = await daemonFetch(
|
|
53
|
+
`/api/minds/${encodeURIComponent(mindName)}/conversations/${encodeURIComponent(conversationId)}/messages?limit=${limit}`
|
|
54
|
+
);
|
|
55
|
+
if (!res.ok) {
|
|
56
|
+
console.error(`Failed to read conversation: ${res.status}`);
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
const data = await res.json();
|
|
60
|
+
if (!Array.isArray(data.items)) {
|
|
61
|
+
console.error("Unexpected response format from server");
|
|
62
|
+
process.exit(1);
|
|
63
|
+
}
|
|
64
|
+
for (const msg of data.items) {
|
|
65
|
+
const sender = msg.sender_name ?? msg.role;
|
|
66
|
+
const text = Array.isArray(msg.content) ? msg.content.filter((b) => b.type === "text").map((b) => b.text).join("") : msg.content;
|
|
67
|
+
const time = new Date(
|
|
68
|
+
msg.created_at.endsWith("Z") ? msg.created_at : `${msg.created_at}Z`
|
|
69
|
+
).toLocaleString();
|
|
70
|
+
console.log(`[${time}] ${sender}: ${text}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
export {
|
|
74
|
+
run
|
|
75
|
+
};
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
import {
|
|
3
3
|
promptLine
|
|
4
4
|
} from "./chunk-SSI47XP2.js";
|
|
5
|
-
import {
|
|
6
|
-
daemonFetch
|
|
7
|
-
} from "./chunk-EFVHR7KH.js";
|
|
8
5
|
import {
|
|
9
6
|
parseArgs
|
|
10
7
|
} from "./chunk-D424ZQGI.js";
|
|
11
|
-
import
|
|
8
|
+
import {
|
|
9
|
+
daemonFetch
|
|
10
|
+
} from "./chunk-UKVWJRKN.js";
|
|
11
|
+
import "./chunk-LRCG2JLP.js";
|
|
12
|
+
import "./chunk-RPZZSXV3.js";
|
|
12
13
|
import "./chunk-K3NQKI34.js";
|
|
13
14
|
|
|
14
15
|
// src/commands/systems/register.ts
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
addMind,
|
|
4
|
+
addSpirit,
|
|
4
5
|
addVariant,
|
|
5
6
|
daemonLoopback,
|
|
6
7
|
ensureSystemDir,
|
|
@@ -12,7 +13,9 @@ import {
|
|
|
12
13
|
nextPort,
|
|
13
14
|
readAllMinds,
|
|
14
15
|
readRegistry,
|
|
16
|
+
readSpirits,
|
|
15
17
|
removeMind,
|
|
18
|
+
resolveMindDir,
|
|
16
19
|
setMindRunning,
|
|
17
20
|
setMindStage,
|
|
18
21
|
setMindTemplateHash,
|
|
@@ -21,10 +24,12 @@ import {
|
|
|
21
24
|
voluteHome,
|
|
22
25
|
voluteSystemDir,
|
|
23
26
|
voluteUserHome
|
|
24
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-LRCG2JLP.js";
|
|
28
|
+
import "./chunk-RPZZSXV3.js";
|
|
25
29
|
import "./chunk-K3NQKI34.js";
|
|
26
30
|
export {
|
|
27
31
|
addMind,
|
|
32
|
+
addSpirit,
|
|
28
33
|
addVariant,
|
|
29
34
|
daemonLoopback,
|
|
30
35
|
ensureSystemDir,
|
|
@@ -36,7 +41,9 @@ export {
|
|
|
36
41
|
nextPort,
|
|
37
42
|
readAllMinds,
|
|
38
43
|
readRegistry,
|
|
44
|
+
readSpirits,
|
|
39
45
|
removeMind,
|
|
46
|
+
resolveMindDir,
|
|
40
47
|
setMindRunning,
|
|
41
48
|
setMindStage,
|
|
42
49
|
setMindTemplateHash,
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
import {
|
|
3
3
|
resolveMindName
|
|
4
4
|
} from "./chunk-NAOW2CLO.js";
|
|
5
|
-
import {
|
|
6
|
-
daemonFetch
|
|
7
|
-
} from "./chunk-EFVHR7KH.js";
|
|
8
5
|
import {
|
|
9
6
|
parseArgs
|
|
10
7
|
} from "./chunk-D424ZQGI.js";
|
|
11
|
-
import
|
|
8
|
+
import {
|
|
9
|
+
daemonFetch
|
|
10
|
+
} from "./chunk-UKVWJRKN.js";
|
|
11
|
+
import "./chunk-LRCG2JLP.js";
|
|
12
|
+
import "./chunk-RPZZSXV3.js";
|
|
12
13
|
import "./chunk-K3NQKI34.js";
|
|
13
14
|
|
|
14
15
|
// src/commands/chat/reject.ts
|
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
import {
|
|
3
3
|
resolveMindName
|
|
4
4
|
} from "./chunk-NAOW2CLO.js";
|
|
5
|
-
import {
|
|
6
|
-
daemonFetch
|
|
7
|
-
} from "./chunk-EFVHR7KH.js";
|
|
8
5
|
import {
|
|
9
6
|
getClient,
|
|
10
7
|
urlOf
|
|
11
8
|
} from "./chunk-4RQBJWQX.js";
|
|
12
|
-
import
|
|
9
|
+
import {
|
|
10
|
+
daemonFetch
|
|
11
|
+
} from "./chunk-UKVWJRKN.js";
|
|
12
|
+
import "./chunk-LRCG2JLP.js";
|
|
13
|
+
import "./chunk-RPZZSXV3.js";
|
|
13
14
|
import "./chunk-K3NQKI34.js";
|
|
14
15
|
|
|
15
16
|
// src/commands/restart.ts
|
|
@@ -5,10 +5,11 @@ import {
|
|
|
5
5
|
isSandboxEnabled,
|
|
6
6
|
shellEscape,
|
|
7
7
|
wrapForSandbox
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-SX5TKJBZ.js";
|
|
9
9
|
import "./chunk-YUIHSKR6.js";
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-TSXLLQZW.js";
|
|
11
|
+
import "./chunk-LRCG2JLP.js";
|
|
12
|
+
import "./chunk-RPZZSXV3.js";
|
|
12
13
|
import "./chunk-K3NQKI34.js";
|
|
13
14
|
export {
|
|
14
15
|
buildDenyRead,
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
activity,
|
|
4
|
+
conversationParticipants,
|
|
5
|
+
conversationReads,
|
|
6
|
+
conversations,
|
|
7
|
+
deliveryQueue,
|
|
8
|
+
messages,
|
|
9
|
+
mindHistory,
|
|
10
|
+
minds,
|
|
11
|
+
sessions,
|
|
12
|
+
sharedSkills,
|
|
13
|
+
systemPrompts,
|
|
14
|
+
turns,
|
|
15
|
+
users
|
|
16
|
+
} from "./chunk-RPZZSXV3.js";
|
|
17
|
+
import "./chunk-K3NQKI34.js";
|
|
18
|
+
export {
|
|
19
|
+
activity,
|
|
20
|
+
conversationParticipants,
|
|
21
|
+
conversationReads,
|
|
22
|
+
conversations,
|
|
23
|
+
deliveryQueue,
|
|
24
|
+
messages,
|
|
25
|
+
mindHistory,
|
|
26
|
+
minds,
|
|
27
|
+
sessions,
|
|
28
|
+
sharedSkills,
|
|
29
|
+
systemPrompts,
|
|
30
|
+
turns,
|
|
31
|
+
users
|
|
32
|
+
};
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
promptLine
|
|
4
|
+
} from "./chunk-SSI47XP2.js";
|
|
5
|
+
import {
|
|
6
|
+
parseArgs
|
|
7
|
+
} from "./chunk-D424ZQGI.js";
|
|
8
|
+
import "./chunk-K3NQKI34.js";
|
|
9
|
+
|
|
10
|
+
// src/commands/seed.ts
|
|
11
|
+
async function chooseModel(daemonFetch) {
|
|
12
|
+
const res = await daemonFetch("/api/system/ai/models");
|
|
13
|
+
if (!res.ok) {
|
|
14
|
+
console.error(`Failed to fetch AI models (HTTP ${res.status}). Is the daemon running?`);
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
const models = await res.json();
|
|
18
|
+
const enabled = models.filter((m) => m.enabled);
|
|
19
|
+
if (enabled.length === 0) return void 0;
|
|
20
|
+
console.log("\nAvailable models:");
|
|
21
|
+
for (let i = 0; i < enabled.length; i++) {
|
|
22
|
+
console.log(` ${i + 1}) ${enabled[i].name} (${enabled[i].provider})`);
|
|
23
|
+
}
|
|
24
|
+
const answer = await promptLine(`
|
|
25
|
+
Choose a model [1-${enabled.length}]: `);
|
|
26
|
+
const idx = parseInt(answer, 10) - 1;
|
|
27
|
+
if (Number.isNaN(idx) || idx < 0 || idx >= enabled.length) {
|
|
28
|
+
console.error("Invalid selection");
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
const chosen = enabled[idx];
|
|
32
|
+
return `${chosen.provider}:${chosen.id}`;
|
|
33
|
+
}
|
|
34
|
+
async function run(args) {
|
|
35
|
+
const { positional, flags } = parseArgs(args, {
|
|
36
|
+
template: { type: "string" },
|
|
37
|
+
model: { type: "string" },
|
|
38
|
+
description: { type: "string" },
|
|
39
|
+
skills: { type: "string" },
|
|
40
|
+
"created-by": { type: "string" }
|
|
41
|
+
});
|
|
42
|
+
const name = positional[0];
|
|
43
|
+
if (!name) {
|
|
44
|
+
console.error(
|
|
45
|
+
"Usage: volute mind seed <name> [--template <name>] [--model <model>] [--description <text>] [--skills <list|none>] [--created-by <username>]"
|
|
46
|
+
);
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
const skills = flags.skills === "none" ? [] : flags.skills ? flags.skills.split(",") : void 0;
|
|
50
|
+
const createdBy = flags["created-by"];
|
|
51
|
+
const { daemonFetch } = await import("./daemon-client-6QXHZ7US.js");
|
|
52
|
+
const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
|
|
53
|
+
const client = getClient();
|
|
54
|
+
let model = flags.model;
|
|
55
|
+
let template = flags.template;
|
|
56
|
+
if (!template) {
|
|
57
|
+
const { resolveTemplate } = await import("./ai-service-ZIPCV3MX.js");
|
|
58
|
+
template = resolveTemplate(model);
|
|
59
|
+
}
|
|
60
|
+
if (template !== "claude" && !model) {
|
|
61
|
+
if (process.env.VOLUTE_MIND || !process.stdin.isTTY) {
|
|
62
|
+
const { getSpiritModel } = await import("./spirit-N4W4UQRH.js");
|
|
63
|
+
const { qualifyModelId } = await import("./ai-service-ZIPCV3MX.js");
|
|
64
|
+
const spiritModel = getSpiritModel();
|
|
65
|
+
if (spiritModel) {
|
|
66
|
+
model = template === "pi" ? qualifyModelId(spiritModel) : spiritModel;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (!model) {
|
|
70
|
+
model = await chooseModel(daemonFetch);
|
|
71
|
+
if (!model) {
|
|
72
|
+
console.error("No AI models configured. Set up providers in the web dashboard first.");
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const createRes = await daemonFetch(urlOf(client.api.minds.$url()), {
|
|
78
|
+
method: "POST",
|
|
79
|
+
headers: { "Content-Type": "application/json" },
|
|
80
|
+
body: JSON.stringify({
|
|
81
|
+
name,
|
|
82
|
+
template,
|
|
83
|
+
stage: "seed",
|
|
84
|
+
description: flags.description,
|
|
85
|
+
model,
|
|
86
|
+
skills,
|
|
87
|
+
createdBy
|
|
88
|
+
})
|
|
89
|
+
});
|
|
90
|
+
const createData = await createRes.json();
|
|
91
|
+
if (!createRes.ok) {
|
|
92
|
+
console.error(createData.error ?? "Failed to create mind");
|
|
93
|
+
process.exit(1);
|
|
94
|
+
}
|
|
95
|
+
const startRes = await daemonFetch(
|
|
96
|
+
urlOf(client.api.minds[":name"].start.$url({ param: { name } })),
|
|
97
|
+
{ method: "POST" }
|
|
98
|
+
);
|
|
99
|
+
if (!startRes.ok) {
|
|
100
|
+
const startData = await startRes.json();
|
|
101
|
+
console.error(startData.error ?? "Failed to start mind");
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
console.log(`
|
|
105
|
+
Seeded mind: ${name} (port ${createData.port})`);
|
|
106
|
+
console.log(`
|
|
107
|
+
Talk to your new mind:`);
|
|
108
|
+
console.log(` volute chat send @${name} "hello"`);
|
|
109
|
+
}
|
|
110
|
+
export {
|
|
111
|
+
run
|
|
112
|
+
};
|
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
resolveMindName
|
|
4
|
-
} from "./chunk-NAOW2CLO.js";
|
|
5
|
-
import {
|
|
6
|
-
daemonFetch
|
|
7
|
-
} from "./chunk-EFVHR7KH.js";
|
|
8
2
|
import {
|
|
9
3
|
getClient,
|
|
10
4
|
urlOf
|
|
11
5
|
} from "./chunk-4RQBJWQX.js";
|
|
12
6
|
import {
|
|
13
7
|
formatFileSize
|
|
14
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-ALEF47VT.js";
|
|
15
9
|
import {
|
|
16
10
|
parseArgs
|
|
17
11
|
} from "./chunk-D424ZQGI.js";
|
|
18
|
-
import
|
|
12
|
+
import {
|
|
13
|
+
daemonFetch
|
|
14
|
+
} from "./chunk-UKVWJRKN.js";
|
|
15
|
+
import "./chunk-LRCG2JLP.js";
|
|
16
|
+
import "./chunk-RPZZSXV3.js";
|
|
19
17
|
import "./chunk-K3NQKI34.js";
|
|
20
18
|
|
|
21
19
|
// src/commands/send.ts
|
|
@@ -40,14 +38,14 @@ function parseTarget(target) {
|
|
|
40
38
|
return {
|
|
41
39
|
platform: "volute",
|
|
42
40
|
identifier: target,
|
|
43
|
-
uri:
|
|
41
|
+
uri: target,
|
|
44
42
|
isDM: true
|
|
45
43
|
};
|
|
46
44
|
}
|
|
47
45
|
return {
|
|
48
46
|
platform: "volute",
|
|
49
47
|
identifier: target,
|
|
50
|
-
uri:
|
|
48
|
+
uri: target,
|
|
51
49
|
isDM: false
|
|
52
50
|
};
|
|
53
51
|
}
|
|
@@ -168,7 +166,6 @@ async function waitForResponse(mindName, conversationId, timeoutMs) {
|
|
|
168
166
|
}
|
|
169
167
|
async function run(args) {
|
|
170
168
|
const { positional, flags } = parseArgs(args, {
|
|
171
|
-
mind: { type: "string" },
|
|
172
169
|
image: { type: "string" },
|
|
173
170
|
file: { type: "string" },
|
|
174
171
|
wait: { type: "boolean" },
|
|
@@ -180,14 +177,13 @@ async function run(args) {
|
|
|
180
177
|
const images = flags.image ? [loadImage(flags.image)] : void 0;
|
|
181
178
|
if (!target || !message && !images && !flags.file) {
|
|
182
179
|
console.error(
|
|
183
|
-
'Usage: volute chat send <target> "<message>" [--
|
|
180
|
+
'Usage: volute chat send <target> "<message>" [--image <path>] [--file <path>] [--wait]'
|
|
184
181
|
);
|
|
185
|
-
console.error(' echo "message" | volute chat send <target>
|
|
182
|
+
console.error(' echo "message" | volute chat send <target>');
|
|
186
183
|
console.error("");
|
|
187
184
|
console.error("Examples:");
|
|
188
185
|
console.error(' volute chat send @other-mind "hello"');
|
|
189
|
-
console.error(' volute chat send animal-chat "hello everyone"');
|
|
190
|
-
console.error(' volute chat send discord:server/channel "hello"');
|
|
186
|
+
console.error(' volute chat send #animal-chat "hello everyone"');
|
|
191
187
|
console.error(' volute chat send @mind "check this out" --image photo.png');
|
|
192
188
|
console.error(" volute chat send @mind --image photo.png");
|
|
193
189
|
console.error(' volute chat send @mind "check this out" --file notes.txt');
|
|
@@ -259,13 +255,13 @@ To reply to a person, use their username from the message prefix (e.g. volute ch
|
|
|
259
255
|
parsed = {
|
|
260
256
|
platform: "volute",
|
|
261
257
|
identifier: `@${parsed.identifier}`,
|
|
262
|
-
uri:
|
|
258
|
+
uri: `@${parsed.identifier}`,
|
|
263
259
|
isDM: true
|
|
264
260
|
};
|
|
265
261
|
}
|
|
266
262
|
const client = getClient();
|
|
267
263
|
let waitMindName;
|
|
268
|
-
let
|
|
264
|
+
let waitConversationId;
|
|
269
265
|
if (parsed.isDM && parsed.platform === "volute") {
|
|
270
266
|
const targetName = parsed.identifier.slice(1);
|
|
271
267
|
const mindSelf = process.env.VOLUTE_MIND;
|
|
@@ -287,17 +283,16 @@ To reply to a person, use their username from the message prefix (e.g. volute ch
|
|
|
287
283
|
console.error(data.error);
|
|
288
284
|
process.exit(1);
|
|
289
285
|
}
|
|
290
|
-
const {
|
|
291
|
-
|
|
286
|
+
const { conversationId: convId } = await createRes.json();
|
|
287
|
+
if (convId) waitConversationId = convId;
|
|
292
288
|
const sendRes = await daemonFetch(
|
|
293
|
-
urlOf(client.api.minds[":name"].
|
|
289
|
+
urlOf(client.api.minds[":name"].chat.$url({ param: { name: contextMind } })),
|
|
294
290
|
{
|
|
295
291
|
method: "POST",
|
|
296
292
|
headers: { "Content-Type": "application/json" },
|
|
297
293
|
body: JSON.stringify({
|
|
298
|
-
platform: "volute",
|
|
299
|
-
uri: channelUri,
|
|
300
294
|
message: message ?? "",
|
|
295
|
+
conversationId: convId,
|
|
301
296
|
images,
|
|
302
297
|
sender
|
|
303
298
|
})
|
|
@@ -309,69 +304,63 @@ To reply to a person, use their username from the message prefix (e.g. volute ch
|
|
|
309
304
|
process.exit(1);
|
|
310
305
|
}
|
|
311
306
|
if (!flags.wait) console.log("Message sent.");
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
}
|
|
321
|
-
);
|
|
322
|
-
if (!histRes.ok) {
|
|
323
|
-
console.error(`Failed to persist to history: HTTP ${histRes.status}`);
|
|
324
|
-
}
|
|
325
|
-
} catch (err) {
|
|
326
|
-
console.error(`Failed to persist to history: ${err instanceof Error ? err.message : err}`);
|
|
327
|
-
}
|
|
307
|
+
} else if (!parsed.isDM && parsed.platform === "volute") {
|
|
308
|
+
if (!parsed.identifier.startsWith("#")) {
|
|
309
|
+
console.error(
|
|
310
|
+
`Mind "${parsed.identifier}" not found.
|
|
311
|
+
To send a DM: volute chat send @${parsed.identifier} "..."
|
|
312
|
+
To send to channel: volute chat send #${parsed.identifier} "..."`
|
|
313
|
+
);
|
|
314
|
+
process.exit(1);
|
|
328
315
|
}
|
|
329
|
-
|
|
330
|
-
const
|
|
331
|
-
const
|
|
332
|
-
|
|
316
|
+
const channelName = parsed.identifier.slice(1);
|
|
317
|
+
const mindSelf = process.env.VOLUTE_MIND;
|
|
318
|
+
const sender = flags.sender || mindSelf || userInfo().username;
|
|
319
|
+
const channelRes = await daemonFetch(`/api/volute/channels/${encodeURIComponent(channelName)}`);
|
|
320
|
+
if (!channelRes.ok) {
|
|
321
|
+
console.error(`Channel "${channelName}" not found. Create it first or check the name.`);
|
|
322
|
+
process.exit(1);
|
|
323
|
+
}
|
|
324
|
+
const channelData = await channelRes.json();
|
|
325
|
+
const mindParticipant = channelData.participants?.find((p) => p.userType === "mind");
|
|
326
|
+
const contextMind = mindSelf ?? mindParticipant?.username;
|
|
327
|
+
if (!contextMind) {
|
|
328
|
+
console.error("No mind is a member of this channel. A mind must join the channel first.");
|
|
329
|
+
process.exit(1);
|
|
330
|
+
}
|
|
331
|
+
const sendRes = await daemonFetch(
|
|
332
|
+
urlOf(client.api.minds[":name"].chat.$url({ param: { name: contextMind } })),
|
|
333
333
|
{
|
|
334
334
|
method: "POST",
|
|
335
335
|
headers: { "Content-Type": "application/json" },
|
|
336
336
|
body: JSON.stringify({
|
|
337
|
-
platform: parsed.platform,
|
|
338
|
-
uri: channelUri,
|
|
339
337
|
message: message ?? "",
|
|
340
|
-
|
|
338
|
+
conversationId: channelData.id,
|
|
339
|
+
images,
|
|
340
|
+
sender
|
|
341
341
|
})
|
|
342
342
|
}
|
|
343
343
|
);
|
|
344
|
-
if (!
|
|
345
|
-
const
|
|
346
|
-
console.error(
|
|
344
|
+
if (!sendRes.ok) {
|
|
345
|
+
const data = await sendRes.json().catch(() => ({ error: "Unknown error" }));
|
|
346
|
+
console.error(data.error);
|
|
347
347
|
process.exit(1);
|
|
348
348
|
}
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
body: JSON.stringify({ channel: channelUri, content: message ?? "" })
|
|
358
|
-
}
|
|
359
|
-
);
|
|
360
|
-
if (!histRes.ok) {
|
|
361
|
-
console.error(`Failed to persist to history: HTTP ${histRes.status}`);
|
|
362
|
-
}
|
|
363
|
-
} catch (err) {
|
|
364
|
-
console.error(`Failed to persist to history: ${err instanceof Error ? err.message : err}`);
|
|
365
|
-
}
|
|
366
|
-
}
|
|
349
|
+
console.log("Message sent.");
|
|
350
|
+
} else {
|
|
351
|
+
console.error(
|
|
352
|
+
`Direct sends to ${parsed.platform} channels are no longer supported.
|
|
353
|
+
Use bridge channel names instead (e.g. volute chat send @mind-name or #channel-name).
|
|
354
|
+
See: volute chat bridge --help`
|
|
355
|
+
);
|
|
356
|
+
process.exit(1);
|
|
367
357
|
}
|
|
368
358
|
if (flags.wait && waitMindName) {
|
|
369
|
-
|
|
370
|
-
if (!conversationId) {
|
|
359
|
+
if (!waitConversationId) {
|
|
371
360
|
console.error("--wait requires a volute conversation (DM to a mind)");
|
|
372
361
|
process.exit(1);
|
|
373
362
|
}
|
|
374
|
-
await waitForResponse(waitMindName,
|
|
363
|
+
await waitForResponse(waitMindName, waitConversationId, flags.timeout ?? 12e4);
|
|
375
364
|
} else if (flags.wait && !waitMindName) {
|
|
376
365
|
console.error("--wait is only supported when sending to a mind");
|
|
377
366
|
process.exit(1);
|
|
@@ -2,16 +2,17 @@
|
|
|
2
2
|
import {
|
|
3
3
|
configPath,
|
|
4
4
|
isSetupComplete,
|
|
5
|
-
|
|
5
|
+
migrateSetupCompleted,
|
|
6
6
|
readGlobalConfig,
|
|
7
7
|
writeGlobalConfig
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-TSXLLQZW.js";
|
|
9
|
+
import "./chunk-LRCG2JLP.js";
|
|
10
|
+
import "./chunk-RPZZSXV3.js";
|
|
10
11
|
import "./chunk-K3NQKI34.js";
|
|
11
12
|
export {
|
|
12
13
|
configPath,
|
|
13
14
|
isSetupComplete,
|
|
14
|
-
|
|
15
|
+
migrateSetupCompleted,
|
|
15
16
|
readGlobalConfig,
|
|
16
17
|
writeGlobalConfig
|
|
17
18
|
};
|
|
@@ -5,24 +5,23 @@ import {
|
|
|
5
5
|
SYSTEM_LAUNCHD_PLIST_PATH,
|
|
6
6
|
SYSTEM_SERVICE_PATH,
|
|
7
7
|
USER_SYSTEMD_UNIT
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-LSGWR54X.js";
|
|
9
9
|
import {
|
|
10
10
|
promptLine
|
|
11
11
|
} from "./chunk-SSI47XP2.js";
|
|
12
12
|
import {
|
|
13
|
+
ensureVoluteGroup,
|
|
13
14
|
resolveVoluteBin
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import {
|
|
16
|
-
ensureVoluteGroup
|
|
17
|
-
} from "./chunk-G3GBKZGG.js";
|
|
15
|
+
} from "./chunk-LGB6JBHI.js";
|
|
18
16
|
import {
|
|
19
17
|
readGlobalConfig,
|
|
20
18
|
writeGlobalConfig
|
|
21
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-TSXLLQZW.js";
|
|
22
20
|
import {
|
|
23
21
|
parseArgs
|
|
24
22
|
} from "./chunk-D424ZQGI.js";
|
|
25
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-LRCG2JLP.js";
|
|
24
|
+
import "./chunk-RPZZSXV3.js";
|
|
26
25
|
import "./chunk-K3NQKI34.js";
|
|
27
26
|
|
|
28
27
|
// src/commands/setup.ts
|
|
@@ -373,7 +372,8 @@ Install as a service (auto-start on boot)? [${serviceDefault}]: `;
|
|
|
373
372
|
const config = {
|
|
374
373
|
...existingConfig,
|
|
375
374
|
name: systemName,
|
|
376
|
-
setup
|
|
375
|
+
setup,
|
|
376
|
+
setupCompleted: true
|
|
377
377
|
};
|
|
378
378
|
if (port != null) config.port = port;
|
|
379
379
|
if (host) config.hostname = host;
|
|
@@ -385,7 +385,7 @@ Install as a service (auto-start on boot)? [${serviceDefault}]: `;
|
|
|
385
385
|
if (aiProvider) {
|
|
386
386
|
const aiApiKey = (await promptLine("API key (leave empty to use env var): ")).trim();
|
|
387
387
|
if (aiApiKey) {
|
|
388
|
-
const { saveProviderConfig } = await import("./ai-service-
|
|
388
|
+
const { saveProviderConfig } = await import("./ai-service-ZIPCV3MX.js");
|
|
389
389
|
saveProviderConfig(aiProvider, { apiKey: aiApiKey });
|
|
390
390
|
console.log(` AI provider configured: ${aiProvider}`);
|
|
391
391
|
} else {
|
|
@@ -2,9 +2,6 @@
|
|
|
2
2
|
import {
|
|
3
3
|
resolveMindName
|
|
4
4
|
} from "./chunk-NAOW2CLO.js";
|
|
5
|
-
import {
|
|
6
|
-
daemonFetch
|
|
7
|
-
} from "./chunk-EFVHR7KH.js";
|
|
8
5
|
import {
|
|
9
6
|
getClient,
|
|
10
7
|
urlOf
|
|
@@ -12,7 +9,11 @@ import {
|
|
|
12
9
|
import {
|
|
13
10
|
parseArgs
|
|
14
11
|
} from "./chunk-D424ZQGI.js";
|
|
15
|
-
import
|
|
12
|
+
import {
|
|
13
|
+
daemonFetch
|
|
14
|
+
} from "./chunk-UKVWJRKN.js";
|
|
15
|
+
import "./chunk-LRCG2JLP.js";
|
|
16
|
+
import "./chunk-RPZZSXV3.js";
|
|
16
17
|
import "./chunk-K3NQKI34.js";
|
|
17
18
|
|
|
18
19
|
// src/commands/skill.ts
|