volute 0.19.0 → 0.21.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 +68 -68
- package/dist/activity-events-3WHHCOBB.js +15 -0
- package/dist/{archive-ZCFOSTKB.js → archive-4ZQYK5MN.js} +4 -2
- package/dist/auth-HM2RSPY7.js +37 -0
- package/dist/{channel-PUQKGSQM.js → channel-BOOMFULW.js} +2 -2
- package/dist/{chunk-OTWLI7F4.js → chunk-5462YKWP.js} +12 -9
- package/dist/{chunk-2TJGRJ4O.js → chunk-7LPTHFIL.js} +64 -59
- package/dist/chunk-A4S7H6G6.js +56 -0
- package/dist/chunk-AKPFNL7L.js +148 -0
- package/dist/{chunk-EBGCNDMM.js → chunk-B2CPS4QU.js} +128 -114
- package/dist/{chunk-FCDU5BFX.js → chunk-HFCBO2GL.js} +2 -2
- package/dist/chunk-HGCDWKSP.js +97 -0
- package/dist/{chunk-DYZGP3EW.js → chunk-IPJXU366.js} +1 -1
- package/dist/{chunk-VE4D3GOP.js → chunk-J5A3DF2U.js} +2 -2
- package/dist/{chunk-WC6ZHVRL.js → chunk-KFI7TQJ6.js} +2 -2
- package/dist/{chunk-AW7P4EVV.js → chunk-KTJGZ7M7.js} +55 -7
- package/dist/{chunk-4KPUF5JD.js → chunk-L3LHXZD7.js} +18 -5
- package/dist/{chunk-OGXOMR65.js → chunk-NWPT4ASZ.js} +1 -1
- package/dist/{chunk-FGV2H4TX.js → chunk-OGZYB5GL.js} +312 -268
- package/dist/{chunk-SCUDS4US.js → chunk-ON3FF5JA.js} +1 -1
- package/dist/{chunk-EMQSAY3B.js → chunk-PC6R6UUW.js} +6 -5
- package/dist/{chunk-VDWCHYTS.js → chunk-PHU4DEAJ.js} +1 -1
- package/dist/{chunk-7NO7EV5Z.js → chunk-Q7AITQ44.js} +2 -2
- package/dist/{chunk-32VR2EOH.js → chunk-QUJUKM4U.js} +2 -2
- package/dist/{chunk-VQWDC6UK.js → chunk-SGPEZ32F.js} +46 -1
- package/dist/{chunk-RHEGSQFJ.js → chunk-WSLPZF72.js} +1 -1
- package/dist/cli.js +59 -111
- package/dist/{connector-JBVNZ7VK.js → connector-PYT5UOTZ.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-HP4OVVHF.js → create-WIDA3M4C.js} +1 -1
- package/dist/{daemon-client-ITWUCNFO.js → daemon-client-ZHCDL4RS.js} +2 -2
- package/dist/{daemon-restart-JMZM3QY4.js → daemon-restart-BH67ZOTE.js} +8 -8
- package/dist/daemon.js +2872 -1301
- package/dist/{delete-BSU7K3RY.js → delete-LOIANQGD.js} +1 -1
- package/dist/down-LIOQ5JDH.js +14 -0
- package/dist/{env-A3LMO777.js → env-4PHIHTF4.js} +2 -2
- package/dist/{export-GCDNQCF3.js → export-XD6PJBQP.js} +19 -8
- package/dist/file-X4L5TTOL.js +204 -0
- package/dist/{history-WNK3DFUM.js → history-HTEKRNID.js} +2 -2
- package/dist/{import-M63VIUJ5.js → import-E433B4KG.js} +3 -3
- package/dist/{log-PPPZDVEF.js → log-SRO5Q6AD.js} +2 -2
- package/dist/{login-HNH3EUQV.js → login-UO6AOVEA.js} +4 -4
- package/dist/{logout-I5CB5UZS.js → logout-UKD5LA37.js} +2 -2
- package/dist/{logs-SF2IMJN4.js → logs-HNTNNBDW.js} +2 -2
- package/dist/{merge-33C237A4.js → merge-B6SYTGI7.js} +2 -2
- package/dist/{mind-PQ5NCPSU.js → mind-BIDOF65R.js} +27 -11
- package/dist/mind-activity-tracker-PGC3DBJ7.js +18 -0
- package/dist/{mind-manager-RVCFROAY.js → mind-manager-3V2NXX4I.js} +5 -6
- package/dist/{package-MYE2ZJLV.js → package-HQR52XSG.js} +1 -1
- package/dist/{pages-AXCOSY3P.js → pages-KQBR5TAZ.js} +6 -6
- package/dist/{publish-YB377JB7.js → publish-OJ4QMXVZ.js} +12 -9
- package/dist/{pull-XAEWQJ47.js → pull-GRQAXM2E.js} +2 -2
- package/dist/{register-VSPCMHKX.js → register-U2UO6TC4.js} +5 -5
- package/dist/registry-D2BSQ2X5.js +42 -0
- package/dist/{restart-IQKMCK5M.js → restart-CIDAKGG2.js} +3 -6
- package/dist/{schedule-LMX7GAQZ.js → schedule-NLR3LZLY.js} +27 -7
- package/dist/{seed-J43YDKXG.js → seed-3H2MRREW.js} +2 -2
- package/dist/{send-KVIZIGCE.js → send-RP2TA7SG.js} +132 -36
- package/dist/{service-LUR7WDO7.js → service-TVNEORO7.js} +31 -13
- package/dist/{setup-OH3PJUJO.js → setup-OZDYCKDI.js} +25 -34
- package/dist/{shared-KO35ZM44.js → shared-DCQ2UXOM.js} +4 -4
- package/dist/{skill-BCVNI6TV.js → skill-Q2Y6PQ3L.js} +2 -2
- package/dist/skills/orientation/SKILL.md +2 -2
- package/dist/skills/volute-mind/SKILL.md +38 -8
- package/dist/{sprout-VBEX63LX.js → sprout-6Z6C42YM.js} +34 -30
- package/dist/{start-I5JYB65M.js → start-JR6CUUWF.js} +3 -6
- package/dist/{status-D7E5HHBV.js → status-5XDGYHKP.js} +2 -2
- package/dist/{status-JCJAOXTW.js → status-LV34BG6G.js} +6 -5
- package/dist/{status-4ESFLGH4.js → status-Z7NAFMBI.js} +5 -5
- package/dist/{stop-NBVKEFQQ.js → stop-VKPGK25U.js} +2 -5
- package/dist/template-hash-BIMA4ILT.js +8 -0
- package/dist/{up-WG65SWJU.js → up-7BGDMFRT.js} +5 -5
- package/dist/{update-FJIHDJKM.js → update-4WT7VWHW.js} +5 -5
- package/dist/{update-check-MWE5AH4U.js → update-check-F5Z3ALXX.js} +2 -2
- package/dist/{upgrade-AIT24B5I.js → upgrade-ZEC2GGFO.js} +1 -1
- package/dist/{variant-63ZWO2W7.js → variant-A4I7PHXS.js} +16 -24
- package/dist/version-notify-TFS2U5CF.js +173 -0
- package/dist/web-assets/assets/index-BR3gtK3E.css +1 -0
- package/dist/web-assets/assets/index-CWmrZRQd.js +64 -0
- package/dist/web-assets/index.html +2 -2
- package/drizzle/0012_activity.sql +11 -0
- package/drizzle/meta/0012_snapshot.json +7 -0
- package/drizzle/meta/_journal.json +7 -0
- package/package.json +1 -1
- package/templates/_base/home/.config/routes.json +2 -2
- package/templates/_base/home/VOLUTE.md +1 -1
- package/templates/_base/src/lib/daemon-client.ts +22 -0
- package/templates/_base/src/lib/transparency.ts +1 -1
- package/templates/claude/.init/.config/routes.json +7 -1
- package/templates/pi/.init/.config/routes.json +7 -1
- package/templates/pi/src/agent.ts +11 -5
- package/templates/pi/src/lib/session-context-extension.ts +6 -4
- package/templates/pi/src/server.ts +2 -0
- package/dist/chunk-UJ6GHNR7.js +0 -675
- package/dist/chunk-Z524RFCJ.js +0 -36
- package/dist/db-5ZVC6MQF.js +0 -10
- package/dist/delivery-manager-ISTJMZDW.js +0 -16
- package/dist/down-ZY35KMHR.js +0 -14
- package/dist/schema-5BW7DFZI.js +0 -24
- package/dist/variants-JAGWGBXG.js +0 -26
- package/dist/web-assets/assets/index-BAbuRsVF.css +0 -1
- package/dist/web-assets/assets/index-CiQhSKi_.js +0 -63
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
mindEnvPath,
|
|
4
4
|
readEnv,
|
|
5
5
|
writeEnv
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-PHU4DEAJ.js";
|
|
7
7
|
import {
|
|
8
8
|
parseArgs
|
|
9
9
|
} from "./chunk-D424ZQGI.js";
|
|
@@ -31,7 +31,8 @@ function readJson(path) {
|
|
|
31
31
|
if (!existsSync(path)) return null;
|
|
32
32
|
try {
|
|
33
33
|
return JSON.parse(readFileSync(path, "utf-8"));
|
|
34
|
-
} catch {
|
|
34
|
+
} catch (err) {
|
|
35
|
+
console.error(`[volute-config] failed to parse ${path}: ${err}`);
|
|
35
36
|
return null;
|
|
36
37
|
}
|
|
37
38
|
}
|
|
@@ -59,7 +60,7 @@ async function run(args) {
|
|
|
59
60
|
return;
|
|
60
61
|
}
|
|
61
62
|
const wsDir = resolveWorkspace(inputPath);
|
|
62
|
-
const { daemonFetch } = await import("./daemon-client-
|
|
63
|
+
const { daemonFetch } = await import("./daemon-client-ZHCDL4RS.js");
|
|
63
64
|
const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
|
|
64
65
|
const client = getClient();
|
|
65
66
|
const res = await daemonFetch(urlOf(client.api.minds.import.$url()), {
|
|
@@ -99,7 +100,7 @@ async function importArchive(archivePath, nameOverride) {
|
|
|
99
100
|
console.error(`File not found: ${archivePath}`);
|
|
100
101
|
process.exit(1);
|
|
101
102
|
}
|
|
102
|
-
const { extractArchive } = await import("./archive-
|
|
103
|
+
const { extractArchive } = await import("./archive-4ZQYK5MN.js");
|
|
103
104
|
const tempDir = resolve2(tmpdir(), `volute-import-${Date.now()}`);
|
|
104
105
|
mkdirSync2(tempDir, { recursive: true });
|
|
105
106
|
let extracted;
|
|
@@ -111,7 +112,7 @@ async function importArchive(archivePath, nameOverride) {
|
|
|
111
112
|
process.exit(1);
|
|
112
113
|
}
|
|
113
114
|
try {
|
|
114
|
-
const { daemonFetch } = await import("./daemon-client-
|
|
115
|
+
const { daemonFetch } = await import("./daemon-client-ZHCDL4RS.js");
|
|
115
116
|
const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
|
|
116
117
|
const client = getClient();
|
|
117
118
|
const res = await daemonFetch(urlOf(client.api.minds.import.$url()), {
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
pollHealthDown,
|
|
6
6
|
readDaemonConfig,
|
|
7
7
|
stopService
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-QUJUKM4U.js";
|
|
9
9
|
import {
|
|
10
10
|
voluteHome
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-B2CPS4QU.js";
|
|
12
12
|
|
|
13
13
|
// src/commands/down.ts
|
|
14
14
|
import { existsSync, readFileSync, unlinkSync } from "fs";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
execInherit
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-IPJXU366.js";
|
|
5
5
|
import {
|
|
6
6
|
voluteHome
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-B2CPS4QU.js";
|
|
8
8
|
|
|
9
9
|
// src/lib/service-mode.ts
|
|
10
10
|
import { execFileSync } from "child_process";
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
voluteHome
|
|
4
|
+
} from "./chunk-B2CPS4QU.js";
|
|
2
5
|
import {
|
|
3
6
|
__export
|
|
4
7
|
} from "./chunk-K3NQKI34.js";
|
|
@@ -6,6 +9,7 @@ import {
|
|
|
6
9
|
// src/lib/schema.ts
|
|
7
10
|
var schema_exports = {};
|
|
8
11
|
__export(schema_exports, {
|
|
12
|
+
activity: () => activity,
|
|
9
13
|
conversationParticipants: () => conversationParticipants,
|
|
10
14
|
conversations: () => conversations,
|
|
11
15
|
deliveryQueue: () => deliveryQueue,
|
|
@@ -115,6 +119,21 @@ var deliveryQueue = sqliteTable(
|
|
|
115
119
|
index("idx_delivery_queue_mind_status").on(table.mind, table.status)
|
|
116
120
|
]
|
|
117
121
|
);
|
|
122
|
+
var activity = sqliteTable(
|
|
123
|
+
"activity",
|
|
124
|
+
{
|
|
125
|
+
id: integer("id").primaryKey({ autoIncrement: true }),
|
|
126
|
+
type: text("type").notNull(),
|
|
127
|
+
mind: text("mind").notNull(),
|
|
128
|
+
summary: text("summary").notNull(),
|
|
129
|
+
metadata: text("metadata"),
|
|
130
|
+
created_at: text("created_at").notNull().default(sql`(datetime('now'))`)
|
|
131
|
+
},
|
|
132
|
+
(table) => [
|
|
133
|
+
index("idx_activity_created_at").on(table.created_at),
|
|
134
|
+
index("idx_activity_mind").on(table.mind)
|
|
135
|
+
]
|
|
136
|
+
);
|
|
118
137
|
var messages = sqliteTable(
|
|
119
138
|
"messages",
|
|
120
139
|
{
|
|
@@ -128,6 +147,31 @@ var messages = sqliteTable(
|
|
|
128
147
|
(table) => [index("idx_messages_conversation_id").on(table.conversation_id)]
|
|
129
148
|
);
|
|
130
149
|
|
|
150
|
+
// src/lib/db.ts
|
|
151
|
+
import { chmodSync, existsSync } from "fs";
|
|
152
|
+
import { dirname, resolve } from "path";
|
|
153
|
+
import { fileURLToPath } from "url";
|
|
154
|
+
import { drizzle } from "drizzle-orm/libsql";
|
|
155
|
+
import { migrate } from "drizzle-orm/libsql/migrator";
|
|
156
|
+
var __dirname = dirname(fileURLToPath(import.meta.url));
|
|
157
|
+
var migrationsFolder = existsSync(resolve(__dirname, "../drizzle")) ? resolve(__dirname, "../drizzle") : resolve(__dirname, "../../drizzle");
|
|
158
|
+
var db = null;
|
|
159
|
+
async function getDb() {
|
|
160
|
+
if (db) return db;
|
|
161
|
+
const dbPath = process.env.VOLUTE_DB_PATH || resolve(voluteHome(), "volute.db");
|
|
162
|
+
db = drizzle({ connection: { url: `file:${dbPath}` }, schema: schema_exports });
|
|
163
|
+
await migrate(db, { migrationsFolder });
|
|
164
|
+
try {
|
|
165
|
+
chmodSync(dbPath, 384);
|
|
166
|
+
} catch (err) {
|
|
167
|
+
console.error(
|
|
168
|
+
`[volute] WARNING: Failed to restrict database file permissions on ${dbPath}:`,
|
|
169
|
+
err
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
return db;
|
|
173
|
+
}
|
|
174
|
+
|
|
131
175
|
export {
|
|
132
176
|
users,
|
|
133
177
|
conversations,
|
|
@@ -137,6 +181,7 @@ export {
|
|
|
137
181
|
systemPrompts,
|
|
138
182
|
sharedSkills,
|
|
139
183
|
deliveryQueue,
|
|
184
|
+
activity,
|
|
140
185
|
messages,
|
|
141
|
-
|
|
186
|
+
getDb
|
|
142
187
|
};
|
package/dist/cli.js
CHANGED
|
@@ -9,161 +9,109 @@ 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-HQR52XSG.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-BIDOF65R.js").then((m) => m.run(args));
|
|
19
19
|
break;
|
|
20
20
|
case "send":
|
|
21
|
-
await import("./send-
|
|
21
|
+
await import("./send-RP2TA7SG.js").then((m) => m.run(args));
|
|
22
22
|
break;
|
|
23
23
|
case "history":
|
|
24
|
-
await import("./history-
|
|
24
|
+
await import("./history-HTEKRNID.js").then((m) => m.run(args));
|
|
25
25
|
break;
|
|
26
26
|
case "variant":
|
|
27
|
-
await import("./variant-
|
|
28
|
-
break;
|
|
29
|
-
case "connector":
|
|
30
|
-
await import("./connector-JBVNZ7VK.js").then((m) => m.run(args));
|
|
27
|
+
await import("./variant-A4I7PHXS.js").then((m) => m.run(args));
|
|
31
28
|
break;
|
|
32
29
|
case "channel":
|
|
33
|
-
await import("./channel-
|
|
30
|
+
await import("./channel-BOOMFULW.js").then((m) => m.run(args));
|
|
34
31
|
break;
|
|
35
32
|
case "schedule":
|
|
36
|
-
await import("./schedule-
|
|
33
|
+
await import("./schedule-NLR3LZLY.js").then((m) => m.run(args));
|
|
37
34
|
break;
|
|
38
35
|
case "skill":
|
|
39
|
-
await import("./skill-
|
|
36
|
+
await import("./skill-Q2Y6PQ3L.js").then((m) => m.run(args));
|
|
40
37
|
break;
|
|
41
38
|
case "shared":
|
|
42
|
-
await import("./shared-
|
|
39
|
+
await import("./shared-DCQ2UXOM.js").then((m) => m.run(args));
|
|
40
|
+
break;
|
|
41
|
+
case "file":
|
|
42
|
+
await import("./file-X4L5TTOL.js").then((m) => m.run(args));
|
|
43
43
|
break;
|
|
44
44
|
case "env":
|
|
45
|
-
await import("./env-
|
|
45
|
+
await import("./env-4PHIHTF4.js").then((m) => m.run(args));
|
|
46
46
|
break;
|
|
47
47
|
case "up":
|
|
48
|
-
await import("./up-
|
|
48
|
+
await import("./up-7BGDMFRT.js").then((m) => m.run(args));
|
|
49
49
|
break;
|
|
50
50
|
case "down":
|
|
51
|
-
await import("./down-
|
|
51
|
+
await import("./down-LIOQ5JDH.js").then((m) => m.run(args));
|
|
52
52
|
break;
|
|
53
53
|
case "restart":
|
|
54
|
-
await import("./daemon-restart-
|
|
55
|
-
break;
|
|
56
|
-
case "setup":
|
|
57
|
-
await import("./setup-OH3PJUJO.js").then((m) => m.run(args));
|
|
54
|
+
await import("./daemon-restart-BH67ZOTE.js").then((m) => m.run(args));
|
|
58
55
|
break;
|
|
59
56
|
case "service":
|
|
60
|
-
await import("./service-
|
|
57
|
+
await import("./service-TVNEORO7.js").then((m) => m.run(args));
|
|
61
58
|
break;
|
|
62
59
|
case "update":
|
|
63
|
-
await import("./update-
|
|
60
|
+
await import("./update-4WT7VWHW.js").then((m) => m.run(args));
|
|
64
61
|
break;
|
|
65
62
|
case "status":
|
|
66
|
-
await import("./status-
|
|
67
|
-
break;
|
|
68
|
-
case "seed":
|
|
69
|
-
await import("./seed-J43YDKXG.js").then((m) => m.run(args));
|
|
70
|
-
break;
|
|
71
|
-
case "sprout":
|
|
72
|
-
await import("./sprout-VBEX63LX.js").then((m) => m.run(args));
|
|
63
|
+
await import("./status-Z7NAFMBI.js").then((m) => m.run(args));
|
|
73
64
|
break;
|
|
74
65
|
case "pages":
|
|
75
|
-
await import("./pages-
|
|
76
|
-
break;
|
|
77
|
-
case "register":
|
|
78
|
-
await import("./register-VSPCMHKX.js").then((m) => m.run(args));
|
|
66
|
+
await import("./pages-KQBR5TAZ.js").then((m) => m.run(args));
|
|
79
67
|
break;
|
|
80
|
-
case "
|
|
81
|
-
await import("./
|
|
82
|
-
break;
|
|
83
|
-
case "logout":
|
|
84
|
-
await import("./logout-I5CB5UZS.js").then((m) => m.run());
|
|
68
|
+
case "auth":
|
|
69
|
+
await import("./auth-HM2RSPY7.js").then((m) => m.run(args));
|
|
85
70
|
break;
|
|
86
71
|
case "--help":
|
|
87
72
|
case "-h":
|
|
88
73
|
case void 0:
|
|
89
74
|
console.log(`volute \u2014 create and manage AI minds
|
|
90
75
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
volute
|
|
120
|
-
|
|
121
|
-
volute
|
|
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
|
-
|
|
137
|
-
volute env <set|get|list|remove> Manage environment variables
|
|
138
|
-
|
|
139
|
-
volute up [--port N] Start the daemon (default: 4200)
|
|
140
|
-
volute down Stop the daemon
|
|
141
|
-
volute restart [--port N] Restart the daemon
|
|
142
|
-
|
|
143
|
-
volute service install [--port N] Install as system service (auto-start)
|
|
144
|
-
volute service uninstall Remove system service
|
|
145
|
-
volute service status Check service status
|
|
146
|
-
volute setup [--port N] [--host H] Install system service with user isolation
|
|
147
|
-
volute setup uninstall [--force] Remove system service + isolation
|
|
148
|
-
|
|
149
|
-
volute register [--name <name>] Register a system on volute.systems
|
|
150
|
-
volute login [--key <key>] Log in with an existing API key
|
|
151
|
-
volute logout Remove stored credentials
|
|
152
|
-
|
|
153
|
-
volute pages publish [--mind <name>] Publish mind's pages/ directory
|
|
154
|
-
volute pages status [--mind <name>] Show publish status
|
|
155
|
-
|
|
156
|
-
volute seed <name> Plant a seed mind (orientation mode)
|
|
157
|
-
volute sprout Complete orientation, become a full mind
|
|
158
|
-
|
|
159
|
-
volute update Update to latest version
|
|
160
|
-
volute status Show daemon status and minds
|
|
76
|
+
Common:
|
|
77
|
+
send <target> "<msg>" Send a message
|
|
78
|
+
history [--channel <ch>] View activity history
|
|
79
|
+
status Show system status
|
|
80
|
+
|
|
81
|
+
Mind:
|
|
82
|
+
mind create <name> Create a new mind
|
|
83
|
+
mind seed <name> Plant a seed mind (orientation mode)
|
|
84
|
+
mind start/stop/restart [name] Control a mind
|
|
85
|
+
mind list List all minds
|
|
86
|
+
mind status [name] Check a mind's status
|
|
87
|
+
mind connect/disconnect <type> Manage connectors
|
|
88
|
+
mind logs [name] [--follow] Tail mind logs
|
|
89
|
+
mind sprout Complete orientation
|
|
90
|
+
mind upgrade/import/export Lifecycle operations
|
|
91
|
+
|
|
92
|
+
Configuration:
|
|
93
|
+
channel Read, list, and manage channels
|
|
94
|
+
variant Create and merge experimental variants
|
|
95
|
+
schedule Manage cron schedules
|
|
96
|
+
skill Browse and install skills
|
|
97
|
+
env Manage environment variables
|
|
98
|
+
file Mind-to-mind file sharing
|
|
99
|
+
shared Collaborative shared repository
|
|
100
|
+
pages Publish web pages
|
|
101
|
+
|
|
102
|
+
System:
|
|
103
|
+
up / down / restart Daemon control
|
|
104
|
+
update Update volute
|
|
105
|
+
service install/uninstall Auto-start service
|
|
106
|
+
auth register/login/logout volute.systems account
|
|
161
107
|
|
|
162
108
|
Options:
|
|
163
|
-
--version, -v
|
|
164
|
-
--help, -h
|
|
109
|
+
--version, -v Show version number
|
|
110
|
+
--help, -h Show this help message
|
|
111
|
+
|
|
112
|
+
Run 'volute <command> --help' for details.
|
|
165
113
|
|
|
166
|
-
Mind-scoped commands (send, history, variant,
|
|
114
|
+
Mind-scoped commands (send, history, variant, schedule, channel, file, skill, shared, pages)
|
|
167
115
|
use --mind <name> or VOLUTE_MIND env var to identify the mind.`);
|
|
168
116
|
break;
|
|
169
117
|
default:
|
|
@@ -172,7 +120,7 @@ Run 'volute --help' for usage.`);
|
|
|
172
120
|
process.exit(1);
|
|
173
121
|
}
|
|
174
122
|
if (command !== "update") {
|
|
175
|
-
import("./update-check-
|
|
123
|
+
import("./update-check-F5Z3ALXX.js").then((m) => m.checkForUpdate()).then((result) => {
|
|
176
124
|
if (result.updateAvailable) {
|
|
177
125
|
console.error(`
|
|
178
126
|
Update available: ${result.current} \u2192 ${result.latest}`);
|
|
@@ -14,8 +14,8 @@ import {
|
|
|
14
14
|
} from "./chunk-D424ZQGI.js";
|
|
15
15
|
import {
|
|
16
16
|
daemonFetch
|
|
17
|
-
} from "./chunk-
|
|
18
|
-
import "./chunk-
|
|
17
|
+
} from "./chunk-KFI7TQJ6.js";
|
|
18
|
+
import "./chunk-B2CPS4QU.js";
|
|
19
19
|
import "./chunk-K3NQKI34.js";
|
|
20
20
|
|
|
21
21
|
// src/commands/connector.ts
|
|
@@ -40,8 +40,8 @@ async function run(args) {
|
|
|
40
40
|
}
|
|
41
41
|
function printUsage() {
|
|
42
42
|
console.log(`Usage:
|
|
43
|
-
volute
|
|
44
|
-
volute
|
|
43
|
+
volute mind connect <type> [--mind <name>]
|
|
44
|
+
volute mind disconnect <type> [--mind <name>]`);
|
|
45
45
|
}
|
|
46
46
|
async function connectConnector(args) {
|
|
47
47
|
const { positional, flags } = parseArgs(args, {
|
|
@@ -50,7 +50,7 @@ async function connectConnector(args) {
|
|
|
50
50
|
const mindName = resolveMindName(flags);
|
|
51
51
|
const type = positional[0];
|
|
52
52
|
if (!type) {
|
|
53
|
-
console.error("Usage: volute
|
|
53
|
+
console.error("Usage: volute mind connect <type> [--mind <name>]");
|
|
54
54
|
process.exit(1);
|
|
55
55
|
}
|
|
56
56
|
const client = getClient();
|
|
@@ -123,7 +123,7 @@ async function disconnectConnector(args) {
|
|
|
123
123
|
const mindName = resolveMindName(flags);
|
|
124
124
|
const type = positional[0];
|
|
125
125
|
if (!type) {
|
|
126
|
-
console.error("Usage: volute
|
|
126
|
+
console.error("Usage: volute mind disconnect <type> [--mind <name>]");
|
|
127
127
|
process.exit(1);
|
|
128
128
|
}
|
|
129
129
|
const client = getClient();
|
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-WSLPZF72.js";
|
|
9
|
+
import "../chunk-B2CPS4QU.js";
|
|
10
10
|
import "../chunk-K3NQKI34.js";
|
|
11
11
|
|
|
12
12
|
// src/connectors/telegram.ts
|
|
@@ -17,7 +17,7 @@ async function run(args) {
|
|
|
17
17
|
process.exit(1);
|
|
18
18
|
}
|
|
19
19
|
const skills = flags.skills === "none" ? [] : flags.skills ? flags.skills.split(",") : void 0;
|
|
20
|
-
const { daemonFetch } = await import("./daemon-client-
|
|
20
|
+
const { daemonFetch } = await import("./daemon-client-ZHCDL4RS.js");
|
|
21
21
|
const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
|
|
22
22
|
const client = getClient();
|
|
23
23
|
const res = await daemonFetch(urlOf(client.api.minds.$url()), {
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
stopDaemon
|
|
4
|
-
} from "./chunk-7NO7EV5Z.js";
|
|
5
2
|
import {
|
|
6
3
|
run
|
|
7
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-J5A3DF2U.js";
|
|
5
|
+
import {
|
|
6
|
+
stopDaemon
|
|
7
|
+
} from "./chunk-Q7AITQ44.js";
|
|
8
8
|
import {
|
|
9
9
|
getServiceMode,
|
|
10
10
|
modeLabel,
|
|
11
11
|
pollHealth,
|
|
12
12
|
readDaemonConfig,
|
|
13
13
|
restartService
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-QUJUKM4U.js";
|
|
15
15
|
import "./chunk-D424ZQGI.js";
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-IPJXU366.js";
|
|
17
|
+
import "./chunk-NWPT4ASZ.js";
|
|
18
|
+
import "./chunk-B2CPS4QU.js";
|
|
19
19
|
import "./chunk-K3NQKI34.js";
|
|
20
20
|
|
|
21
21
|
// src/commands/daemon-restart.ts
|