volute 0.17.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-CE7WMOVW.js → chunk-2TJGRJ4O.js} +236 -103
- 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-3FC42ZBM.js → chunk-RHEGSQFJ.js} +4 -1
- package/dist/{chunk-MVSXRMJJ.js → chunk-SCUDS4US.js} +1 -1
- package/dist/{chunk-MIJIAGGG.js → chunk-UJ6GHNR7.js} +8 -6
- package/dist/{chunk-OYSZNX5I.js → chunk-VDWCHYTS.js} +1 -1
- package/dist/{chunk-77ISBIKI.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 +44 -24
- 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-VRQMZLBK.js → daemon-restart-JMZM3QY4.js} +8 -8
- package/dist/daemon.js +1624 -940
- 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-5F4WQW7S.js → history-WNK3DFUM.js} +10 -7
- 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-4GTJGUXI.js → package-MYE2ZJLV.js} +7 -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-4GKDO26C.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-BCVNI6TV.js +287 -0
- 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 +35 -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-LT3X5Q26.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/0007_system_prompts.sql +5 -0
- package/drizzle/0008_volute_channels.sql +24 -0
- package/drizzle/0009_shared_skills.sql +9 -0
- package/drizzle/0010_delivery_queue.sql +12 -0
- package/drizzle/0011_rename_human_to_brain.sql +1 -0
- package/drizzle/meta/0007_snapshot.json +7 -0
- package/drizzle/meta/0008_snapshot.json +7 -0
- package/drizzle/meta/0009_snapshot.json +7 -0
- package/drizzle/meta/0010_snapshot.json +7 -0
- package/drizzle/meta/0011_snapshot.json +7 -0
- package/drizzle/meta/_journal.json +35 -0
- package/package.json +7 -3
- package/templates/_base/.init/.config/hooks/startup-context.sh +1 -1
- package/templates/_base/.init/.config/prompts.json +5 -0
- 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 +168 -29
- package/templates/_base/src/lib/routing.ts +4 -1
- package/templates/_base/src/lib/startup.ts +43 -0
- package/templates/_base/src/lib/types.ts +4 -0
- package/templates/_base/src/lib/volute-server.ts +91 -2
- package/templates/claude/src/agent.ts +4 -3
- package/templates/claude/src/lib/hooks/reply-instructions.ts +3 -1
- package/templates/claude/src/server.ts +2 -2
- package/templates/claude/volute-template.json +1 -2
- package/templates/pi/src/agent.ts +6 -7
- package/templates/pi/src/lib/reply-instructions-extension.ts +3 -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-ETNCPQJN.js +0 -15
- package/dist/web-assets/assets/index-BcmT7Qxo.js +0 -63
- package/dist/web-assets/assets/index-DG01TyLb.css +0 -1
- /package/{templates/_base/_skills → dist/skills}/memory/SKILL.md +0 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
// src/lib/log-buffer.ts
|
|
4
|
+
var LogBuffer = class {
|
|
5
|
+
entries = [];
|
|
6
|
+
maxSize = 1e3;
|
|
7
|
+
subscribers = /* @__PURE__ */ new Set();
|
|
8
|
+
append(entry) {
|
|
9
|
+
this.entries.push(entry);
|
|
10
|
+
if (this.entries.length > this.maxSize) {
|
|
11
|
+
this.entries.shift();
|
|
12
|
+
}
|
|
13
|
+
for (const sub of this.subscribers) {
|
|
14
|
+
sub(entry);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
getEntries() {
|
|
18
|
+
return [...this.entries];
|
|
19
|
+
}
|
|
20
|
+
subscribe(fn) {
|
|
21
|
+
this.subscribers.add(fn);
|
|
22
|
+
return () => this.subscribers.delete(fn);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
var logBuffer = new LogBuffer();
|
|
26
|
+
|
|
27
|
+
// src/lib/logger.ts
|
|
28
|
+
var LEVELS = { debug: 0, info: 1, warn: 2, error: 3 };
|
|
29
|
+
var minLevel = LEVELS[process.env.VOLUTE_LOG_LEVEL || "info"] ?? LEVELS.info;
|
|
30
|
+
var output = (line) => process.stderr.write(`${line}
|
|
31
|
+
`);
|
|
32
|
+
function write(level, cat, msg, data) {
|
|
33
|
+
if (LEVELS[level] < minLevel) return;
|
|
34
|
+
const entry = {
|
|
35
|
+
level,
|
|
36
|
+
cat,
|
|
37
|
+
msg,
|
|
38
|
+
ts: (/* @__PURE__ */ new Date()).toISOString(),
|
|
39
|
+
...data ? { data } : {}
|
|
40
|
+
};
|
|
41
|
+
output(JSON.stringify(entry));
|
|
42
|
+
logBuffer.append(entry);
|
|
43
|
+
}
|
|
44
|
+
function child(cat) {
|
|
45
|
+
return {
|
|
46
|
+
debug: (msg, data) => write("debug", cat, msg, data),
|
|
47
|
+
info: (msg, data) => write("info", cat, msg, data),
|
|
48
|
+
warn: (msg, data) => write("warn", cat, msg, data),
|
|
49
|
+
error: (msg, data) => write("error", cat, msg, data)
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function errorData(err) {
|
|
53
|
+
if (err instanceof Error) return { error: err.stack ?? err.message };
|
|
54
|
+
return { error: String(err) };
|
|
55
|
+
}
|
|
56
|
+
var log = {
|
|
57
|
+
...child("system"),
|
|
58
|
+
child,
|
|
59
|
+
errorData,
|
|
60
|
+
setLevel(level) {
|
|
61
|
+
minLevel = LEVELS[level];
|
|
62
|
+
},
|
|
63
|
+
setOutput(fn) {
|
|
64
|
+
output = fn;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
var logger_default = log;
|
|
68
|
+
|
|
69
|
+
export {
|
|
70
|
+
logBuffer,
|
|
71
|
+
logger_default
|
|
72
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
schema_exports
|
|
4
|
+
} from "./chunk-VQWDC6UK.js";
|
|
5
|
+
import {
|
|
6
|
+
voluteHome
|
|
7
|
+
} from "./chunk-EBGCNDMM.js";
|
|
8
|
+
|
|
9
|
+
// src/lib/db.ts
|
|
10
|
+
import { chmodSync, existsSync } from "fs";
|
|
11
|
+
import { dirname, resolve } from "path";
|
|
12
|
+
import { fileURLToPath } from "url";
|
|
13
|
+
import { drizzle } from "drizzle-orm/libsql";
|
|
14
|
+
import { migrate } from "drizzle-orm/libsql/migrator";
|
|
15
|
+
var __dirname = dirname(fileURLToPath(import.meta.url));
|
|
16
|
+
var migrationsFolder = existsSync(resolve(__dirname, "../drizzle")) ? resolve(__dirname, "../drizzle") : resolve(__dirname, "../../drizzle");
|
|
17
|
+
var db = null;
|
|
18
|
+
async function getDb() {
|
|
19
|
+
if (db) return db;
|
|
20
|
+
const dbPath = process.env.VOLUTE_DB_PATH || resolve(voluteHome(), "volute.db");
|
|
21
|
+
db = drizzle({ connection: { url: `file:${dbPath}` }, schema: schema_exports });
|
|
22
|
+
await migrate(db, { migrationsFolder });
|
|
23
|
+
try {
|
|
24
|
+
chmodSync(dbPath, 384);
|
|
25
|
+
} catch (err) {
|
|
26
|
+
console.error(
|
|
27
|
+
`[volute] WARNING: Failed to restrict database file permissions on ${dbPath}:`,
|
|
28
|
+
err
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
return db;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export {
|
|
35
|
+
getDb
|
|
36
|
+
};
|
package/dist/cli.js
CHANGED
|
@@ -9,73 +9,79 @@ if (!process.env.VOLUTE_HOME) {
|
|
|
9
9
|
var command = process.argv[2];
|
|
10
10
|
var args = process.argv.slice(3);
|
|
11
11
|
if (command === "--version" || command === "-v") {
|
|
12
|
-
const { default: pkg } = await import("./package-
|
|
12
|
+
const { default: pkg } = await import("./package-MYE2ZJLV.js");
|
|
13
13
|
console.log(pkg.version);
|
|
14
14
|
process.exit(0);
|
|
15
15
|
}
|
|
16
16
|
switch (command) {
|
|
17
17
|
case "mind":
|
|
18
|
-
await import("./mind-
|
|
18
|
+
await import("./mind-PQ5NCPSU.js").then((m) => m.run(args));
|
|
19
19
|
break;
|
|
20
20
|
case "send":
|
|
21
|
-
await import("./send-
|
|
21
|
+
await import("./send-KVIZIGCE.js").then((m) => m.run(args));
|
|
22
22
|
break;
|
|
23
23
|
case "history":
|
|
24
|
-
await import("./history-
|
|
24
|
+
await import("./history-WNK3DFUM.js").then((m) => m.run(args));
|
|
25
25
|
break;
|
|
26
26
|
case "variant":
|
|
27
|
-
await import("./variant-
|
|
27
|
+
await import("./variant-63ZWO2W7.js").then((m) => m.run(args));
|
|
28
28
|
break;
|
|
29
29
|
case "connector":
|
|
30
|
-
await import("./connector-
|
|
30
|
+
await import("./connector-JBVNZ7VK.js").then((m) => m.run(args));
|
|
31
31
|
break;
|
|
32
32
|
case "channel":
|
|
33
|
-
await import("./channel-
|
|
33
|
+
await import("./channel-PUQKGSQM.js").then((m) => m.run(args));
|
|
34
34
|
break;
|
|
35
35
|
case "schedule":
|
|
36
|
-
await import("./schedule-
|
|
36
|
+
await import("./schedule-LMX7GAQZ.js").then((m) => m.run(args));
|
|
37
|
+
break;
|
|
38
|
+
case "skill":
|
|
39
|
+
await import("./skill-BCVNI6TV.js").then((m) => m.run(args));
|
|
40
|
+
break;
|
|
41
|
+
case "shared":
|
|
42
|
+
await import("./shared-KO35ZM44.js").then((m) => m.run(args));
|
|
37
43
|
break;
|
|
38
44
|
case "env":
|
|
39
|
-
await import("./env-
|
|
45
|
+
await import("./env-A3LMO777.js").then((m) => m.run(args));
|
|
40
46
|
break;
|
|
41
47
|
case "up":
|
|
42
|
-
await import("./up-
|
|
48
|
+
await import("./up-WG65SWJU.js").then((m) => m.run(args));
|
|
43
49
|
break;
|
|
44
50
|
case "down":
|
|
45
|
-
await import("./down-
|
|
51
|
+
await import("./down-ZY35KMHR.js").then((m) => m.run(args));
|
|
46
52
|
break;
|
|
47
53
|
case "restart":
|
|
48
|
-
await import("./daemon-restart-
|
|
54
|
+
await import("./daemon-restart-JMZM3QY4.js").then((m) => m.run(args));
|
|
49
55
|
break;
|
|
50
56
|
case "setup":
|
|
51
|
-
await import("./setup-
|
|
57
|
+
await import("./setup-OH3PJUJO.js").then((m) => m.run(args));
|
|
52
58
|
break;
|
|
53
59
|
case "service":
|
|
54
|
-
await import("./service-
|
|
60
|
+
await import("./service-LUR7WDO7.js").then((m) => m.run(args));
|
|
55
61
|
break;
|
|
56
62
|
case "update":
|
|
57
|
-
await import("./update-
|
|
63
|
+
await import("./update-FJIHDJKM.js").then((m) => m.run(args));
|
|
58
64
|
break;
|
|
59
65
|
case "status":
|
|
60
|
-
await import("./status-
|
|
66
|
+
await import("./status-4ESFLGH4.js").then((m) => m.run(args));
|
|
61
67
|
break;
|
|
62
68
|
case "seed":
|
|
63
|
-
await import("./seed-
|
|
69
|
+
await import("./seed-J43YDKXG.js").then((m) => m.run(args));
|
|
64
70
|
break;
|
|
65
71
|
case "sprout":
|
|
66
|
-
await import("./sprout-
|
|
72
|
+
await import("./sprout-VBEX63LX.js").then((m) => m.run(args));
|
|
67
73
|
break;
|
|
68
74
|
case "pages":
|
|
69
|
-
await import("./pages-
|
|
75
|
+
await import("./pages-AXCOSY3P.js").then((m) => m.run(args));
|
|
70
76
|
break;
|
|
71
77
|
case "register":
|
|
72
|
-
await import("./register-
|
|
78
|
+
await import("./register-VSPCMHKX.js").then((m) => m.run(args));
|
|
73
79
|
break;
|
|
74
80
|
case "login":
|
|
75
|
-
await import("./login-
|
|
81
|
+
await import("./login-HNH3EUQV.js").then((m) => m.run(args));
|
|
76
82
|
break;
|
|
77
83
|
case "logout":
|
|
78
|
-
await import("./logout-
|
|
84
|
+
await import("./logout-I5CB5UZS.js").then((m) => m.run());
|
|
79
85
|
break;
|
|
80
86
|
case "--help":
|
|
81
87
|
case "-h":
|
|
@@ -114,6 +120,20 @@ Commands:
|
|
|
114
120
|
volute schedule add ... Add a cron schedule
|
|
115
121
|
volute schedule remove ... Remove a schedule
|
|
116
122
|
|
|
123
|
+
volute skill list List shared skills
|
|
124
|
+
volute skill list --mind <name> List installed skills for a mind
|
|
125
|
+
volute skill info <name> Show details of a shared skill
|
|
126
|
+
volute skill install <name> --mind Install a shared skill into a mind
|
|
127
|
+
volute skill update <name> --mind Update an installed skill
|
|
128
|
+
volute skill publish <name> --mind Publish a mind's skill to shared repo
|
|
129
|
+
volute skill remove <name> Remove a shared skill
|
|
130
|
+
volute skill uninstall <name> --mind Uninstall a skill from a mind
|
|
131
|
+
|
|
132
|
+
volute shared merge "<msg>" Merge shared changes to main
|
|
133
|
+
volute shared pull Pull latest shared changes
|
|
134
|
+
volute shared log Show shared repo history
|
|
135
|
+
volute shared status Show pending changes diff
|
|
136
|
+
|
|
117
137
|
volute env <set|get|list|remove> Manage environment variables
|
|
118
138
|
|
|
119
139
|
volute up [--port N] Start the daemon (default: 4200)
|
|
@@ -143,7 +163,7 @@ Options:
|
|
|
143
163
|
--version, -v Show version number
|
|
144
164
|
--help, -h Show this help message
|
|
145
165
|
|
|
146
|
-
Mind-scoped commands (send, history, variant, connector, schedule, channel, pages)
|
|
166
|
+
Mind-scoped commands (send, history, variant, connector, schedule, channel, skill, shared, pages)
|
|
147
167
|
use --mind <name> or VOLUTE_MIND env var to identify the mind.`);
|
|
148
168
|
break;
|
|
149
169
|
default:
|
|
@@ -152,7 +172,7 @@ Run 'volute --help' for usage.`);
|
|
|
152
172
|
process.exit(1);
|
|
153
173
|
}
|
|
154
174
|
if (command !== "update") {
|
|
155
|
-
import("./update-check-
|
|
175
|
+
import("./update-check-MWE5AH4U.js").then((m) => m.checkForUpdate()).then((result) => {
|
|
156
176
|
if (result.updateAvailable) {
|
|
157
177
|
console.error(`
|
|
158
178
|
Update available: ${result.current} \u2192 ${result.latest}`);
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
import {
|
|
3
3
|
promptLine
|
|
4
4
|
} from "./chunk-RVKR2R7F.js";
|
|
5
|
+
import {
|
|
6
|
+
getClient,
|
|
7
|
+
urlOf
|
|
8
|
+
} from "./chunk-4RQBJWQX.js";
|
|
5
9
|
import {
|
|
6
10
|
resolveMindName
|
|
7
11
|
} from "./chunk-NAOW2CLO.js";
|
|
@@ -10,12 +14,8 @@ import {
|
|
|
10
14
|
} from "./chunk-D424ZQGI.js";
|
|
11
15
|
import {
|
|
12
16
|
daemonFetch
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import {
|
|
16
|
-
getClient,
|
|
17
|
-
urlOf
|
|
18
|
-
} from "./chunk-4RQBJWQX.js";
|
|
17
|
+
} from "./chunk-WC6ZHVRL.js";
|
|
18
|
+
import "./chunk-EBGCNDMM.js";
|
|
19
19
|
import "./chunk-K3NQKI34.js";
|
|
20
20
|
|
|
21
21
|
// src/commands/connector.ts
|
package/dist/connectors/slack.js
CHANGED
|
@@ -5,8 +5,8 @@ import {
|
|
|
5
5
|
loadFollowedChannels,
|
|
6
6
|
sendToMind,
|
|
7
7
|
writeChannelEntry
|
|
8
|
-
} from "../chunk-
|
|
9
|
-
import "../chunk-
|
|
8
|
+
} from "../chunk-RHEGSQFJ.js";
|
|
9
|
+
import "../chunk-EBGCNDMM.js";
|
|
10
10
|
import "../chunk-K3NQKI34.js";
|
|
11
11
|
|
|
12
12
|
// src/connectors/telegram.ts
|
|
@@ -7,21 +7,23 @@ import "./chunk-K3NQKI34.js";
|
|
|
7
7
|
// src/commands/create.ts
|
|
8
8
|
async function run(args) {
|
|
9
9
|
const { positional, flags } = parseArgs(args, {
|
|
10
|
-
template: { type: "string" }
|
|
10
|
+
template: { type: "string" },
|
|
11
|
+
skills: { type: "string" }
|
|
11
12
|
});
|
|
12
13
|
const name = positional[0];
|
|
13
14
|
const template = flags.template ?? "claude";
|
|
14
15
|
if (!name) {
|
|
15
|
-
console.error("Usage: volute mind create <name> [--template <name>]");
|
|
16
|
+
console.error("Usage: volute mind create <name> [--template <name>] [--skills <list|none>]");
|
|
16
17
|
process.exit(1);
|
|
17
18
|
}
|
|
18
|
-
const
|
|
19
|
+
const skills = flags.skills === "none" ? [] : flags.skills ? flags.skills.split(",") : void 0;
|
|
20
|
+
const { daemonFetch } = await import("./daemon-client-ITWUCNFO.js");
|
|
19
21
|
const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
|
|
20
22
|
const client = getClient();
|
|
21
23
|
const res = await daemonFetch(urlOf(client.api.minds.$url()), {
|
|
22
24
|
method: "POST",
|
|
23
25
|
headers: { "Content-Type": "application/json" },
|
|
24
|
-
body: JSON.stringify({ name, template })
|
|
26
|
+
body: JSON.stringify({ name, template, skills })
|
|
25
27
|
});
|
|
26
28
|
const data = await res.json();
|
|
27
29
|
if (!res.ok) {
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
run
|
|
4
|
-
} from "./chunk-77ISBIKI.js";
|
|
5
2
|
import {
|
|
6
3
|
stopDaemon
|
|
7
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-7NO7EV5Z.js";
|
|
5
|
+
import {
|
|
6
|
+
run
|
|
7
|
+
} from "./chunk-VE4D3GOP.js";
|
|
8
8
|
import {
|
|
9
9
|
getServiceMode,
|
|
10
10
|
modeLabel,
|
|
11
11
|
pollHealth,
|
|
12
12
|
readDaemonConfig,
|
|
13
13
|
restartService
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-2Y77MCFG.js";
|
|
16
|
-
import "./chunk-ZCEYUUID.js";
|
|
14
|
+
} from "./chunk-32VR2EOH.js";
|
|
17
15
|
import "./chunk-D424ZQGI.js";
|
|
18
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-DYZGP3EW.js";
|
|
17
|
+
import "./chunk-OGXOMR65.js";
|
|
18
|
+
import "./chunk-EBGCNDMM.js";
|
|
19
19
|
import "./chunk-K3NQKI34.js";
|
|
20
20
|
|
|
21
21
|
// src/commands/daemon-restart.ts
|