volute 0.18.0 → 0.20.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 +67 -67
- package/dist/activity-events-OMXKXD5N.js +16 -0
- package/dist/archive-ZCFOSTKB.js +15 -0
- package/dist/{channel-SLURLIRV.js → channel-PUQKGSQM.js} +60 -7
- package/dist/{chunk-6BDNWYKG.js → chunk-32VR2EOH.js} +2 -2
- package/dist/chunk-5XNT2472.js +36 -0
- package/dist/{chunk-QJIIHU32.js → chunk-7NO7EV5Z.js} +2 -2
- package/dist/{chunk-6DVBMLVN.js → chunk-7UFKREVW.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-37X7ECMF.js → chunk-FCDU5BFX.js} +1 -1
- package/dist/chunk-FGSYHIS3.js +891 -0
- package/dist/chunk-GZ7DW4YL.js +97 -0
- package/dist/chunk-IKMY5X76.js +375 -0
- package/dist/chunk-NSE7VJQA.js +159 -0
- package/dist/{chunk-GSPWIM5E.js → chunk-O6ASDHFO.js} +79 -7
- package/dist/{chunk-ZCEYUUID.js → chunk-OGXOMR65.js} +2 -1
- package/dist/{chunk-AYB7XAWO.js → chunk-PUVXOZ6T.js} +120 -279
- package/dist/{chunk-GK4E7LM7.js → chunk-RHEGSQFJ.js} +1 -1
- package/dist/{chunk-MVSXRMJJ.js → chunk-SCUDS4US.js} +1 -1
- package/dist/chunk-TIWH32HP.js +227 -0
- package/dist/{chunk-FW5API7X.js → chunk-UJ6GHNR7.js} +2 -2
- package/dist/chunk-UU7A7KLB.js +58 -0
- package/dist/{chunk-OYSZNX5I.js → chunk-VDWCHYTS.js} +1 -1
- package/dist/{chunk-OJQ47SCA.js → chunk-WC6ZHVRL.js} +1 -1
- package/dist/chunk-YUIHSKR6.js +72 -0
- package/dist/cli.js +43 -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-KPSWNYTH.js} +6 -6
- package/dist/daemon.js +2463 -1707
- package/dist/db-C2CJ46ZU.js +10 -0
- package/dist/{delete-6G6WEX4F.js → delete-BSU7K3RY.js} +1 -1
- package/dist/delivery-manager-CSG7LXA4.js +16 -0
- package/dist/down-ZY35KMHR.js +14 -0
- package/dist/{env-6IDWGBUH.js → env-A3LMO777.js} +6 -6
- package/dist/export-6QBUOQGC.js +100 -0
- package/dist/file-C57SK5DK.js +204 -0
- package/dist/{history-YUEKTJ2N.js → history-WNK3DFUM.js} +6 -6
- package/dist/{import-EDGRLIGO.js → import-XEC34Y4Z.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-Z7CKD6DG.js} +14 -10
- package/dist/mind-activity-tracker-624QLQLC.js +19 -0
- package/dist/mind-manager-3DMYKZPB.js +18 -0
- package/dist/{package-OKLFO7UY.js → package-4NHAVUUI.js} +5 -3
- package/dist/{pages-6IV4VQTU.js → pages-4DGQT7ZA.js} +2 -2
- package/dist/{publish-Q4RPSJLL.js → publish-TAJUET4I.js} +22 -5
- 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-FFZG23IW.js} +31 -11
- package/dist/schema-GFH6RV3W.js +26 -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-52YRV7VP.js} +23 -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 +51 -3
- package/dist/{sprout-TJ3BHVOG.js → sprout-QN7Y4VVO.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-FU2PFVVF.js} +5 -4
- package/dist/{stop-AA5K5LYG.js → stop-NBVKEFQQ.js} +6 -6
- package/dist/{up-7B3BWF2U.js → up-FS7CKM6V.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-CUZTZzaW.js +64 -0
- package/dist/web-assets/assets/index-adVuCkqy.css +1 -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/0012_activity.sql +11 -0
- package/drizzle/meta/0010_snapshot.json +7 -0
- package/drizzle/meta/0011_snapshot.json +7 -0
- package/drizzle/meta/0012_snapshot.json +7 -0
- package/drizzle/meta/_journal.json +21 -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/.config/routes.json +2 -2
- package/templates/_base/home/VOLUTE.md +16 -1
- package/templates/_base/src/lib/auto-commit.ts +51 -14
- package/templates/_base/src/lib/daemon-client.ts +22 -0
- package/templates/_base/src/lib/router.ts +123 -1
- package/templates/_base/src/lib/transparency.ts +1 -1
- package/templates/_base/src/lib/types.ts +4 -0
- package/templates/_base/src/lib/volute-server.ts +91 -2
- package/templates/claude/.init/.config/routes.json +7 -1
- package/templates/claude/src/server.ts +2 -2
- package/templates/claude/volute-template.json +1 -2
- package/templates/pi/.init/.config/routes.json +7 -1
- package/templates/pi/src/agent.ts +12 -6
- package/templates/pi/src/lib/session-context-extension.ts +6 -4
- package/templates/pi/src/server.ts +2 -0
- 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
|
@@ -3,14 +3,25 @@ import {
|
|
|
3
3
|
mindEnvPath,
|
|
4
4
|
readEnv,
|
|
5
5
|
writeEnv
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-VDWCHYTS.js";
|
|
7
7
|
import {
|
|
8
8
|
parseArgs
|
|
9
9
|
} from "./chunk-D424ZQGI.js";
|
|
10
10
|
|
|
11
11
|
// src/commands/import.ts
|
|
12
|
-
import {
|
|
13
|
-
|
|
12
|
+
import {
|
|
13
|
+
closeSync,
|
|
14
|
+
existsSync as existsSync2,
|
|
15
|
+
mkdirSync as mkdirSync2,
|
|
16
|
+
openSync,
|
|
17
|
+
readdirSync,
|
|
18
|
+
readFileSync as readFileSync2,
|
|
19
|
+
readSync,
|
|
20
|
+
rmSync,
|
|
21
|
+
statSync,
|
|
22
|
+
writeFileSync as writeFileSync2
|
|
23
|
+
} from "fs";
|
|
24
|
+
import { homedir, tmpdir } from "os";
|
|
14
25
|
import { basename, resolve as resolve2 } from "path";
|
|
15
26
|
|
|
16
27
|
// src/lib/volute-config.ts
|
|
@@ -20,7 +31,8 @@ function readJson(path) {
|
|
|
20
31
|
if (!existsSync(path)) return null;
|
|
21
32
|
try {
|
|
22
33
|
return JSON.parse(readFileSync(path, "utf-8"));
|
|
23
|
-
} catch {
|
|
34
|
+
} catch (err) {
|
|
35
|
+
console.error(`[volute-config] failed to parse ${path}: ${err}`);
|
|
24
36
|
return null;
|
|
25
37
|
}
|
|
26
38
|
}
|
|
@@ -42,8 +54,13 @@ async function run(args) {
|
|
|
42
54
|
session: { type: "string" },
|
|
43
55
|
template: { type: "string" }
|
|
44
56
|
});
|
|
45
|
-
const
|
|
46
|
-
|
|
57
|
+
const inputPath = positional[0];
|
|
58
|
+
if (inputPath && (inputPath.endsWith(".volute") || isZipFile(inputPath))) {
|
|
59
|
+
await importArchive(resolve2(inputPath), flags.name);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const wsDir = resolveWorkspace(inputPath);
|
|
63
|
+
const { daemonFetch } = await import("./daemon-client-ITWUCNFO.js");
|
|
47
64
|
const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
|
|
48
65
|
const client = getClient();
|
|
49
66
|
const res = await daemonFetch(urlOf(client.api.minds.import.$url()), {
|
|
@@ -66,6 +83,61 @@ ${data.message ?? `Imported mind: ${data.name} (port ${data.port})`}`);
|
|
|
66
83
|
console.log(`
|
|
67
84
|
volute mind start ${data.name}`);
|
|
68
85
|
}
|
|
86
|
+
function isZipFile(path) {
|
|
87
|
+
const resolved = resolve2(path);
|
|
88
|
+
if (!existsSync2(resolved)) return false;
|
|
89
|
+
const fd = openSync(resolved, "r");
|
|
90
|
+
try {
|
|
91
|
+
const buf = Buffer.alloc(4);
|
|
92
|
+
const bytesRead = readSync(fd, buf, 0, 4, 0);
|
|
93
|
+
return bytesRead === 4 && buf[0] === 80 && buf[1] === 75 && buf[2] === 3 && buf[3] === 4;
|
|
94
|
+
} finally {
|
|
95
|
+
closeSync(fd);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
async function importArchive(archivePath, nameOverride) {
|
|
99
|
+
if (!existsSync2(archivePath)) {
|
|
100
|
+
console.error(`File not found: ${archivePath}`);
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
const { extractArchive } = await import("./archive-ZCFOSTKB.js");
|
|
104
|
+
const tempDir = resolve2(tmpdir(), `volute-import-${Date.now()}`);
|
|
105
|
+
mkdirSync2(tempDir, { recursive: true });
|
|
106
|
+
let extracted;
|
|
107
|
+
try {
|
|
108
|
+
extracted = extractArchive(archivePath, tempDir);
|
|
109
|
+
} catch (err) {
|
|
110
|
+
rmSync(tempDir, { recursive: true, force: true });
|
|
111
|
+
console.error(`Failed to extract archive: ${err.message}`);
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
const { daemonFetch } = await import("./daemon-client-ITWUCNFO.js");
|
|
116
|
+
const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
|
|
117
|
+
const client = getClient();
|
|
118
|
+
const res = await daemonFetch(urlOf(client.api.minds.import.$url()), {
|
|
119
|
+
method: "POST",
|
|
120
|
+
headers: { "Content-Type": "application/json" },
|
|
121
|
+
body: JSON.stringify({
|
|
122
|
+
archivePath: tempDir,
|
|
123
|
+
name: nameOverride,
|
|
124
|
+
manifest: extracted.manifest
|
|
125
|
+
})
|
|
126
|
+
});
|
|
127
|
+
const data = await res.json();
|
|
128
|
+
if (!res.ok) {
|
|
129
|
+
console.error(data.error ?? "Failed to import mind");
|
|
130
|
+
process.exit(1);
|
|
131
|
+
}
|
|
132
|
+
console.log(`
|
|
133
|
+
${data.message ?? `Imported mind: ${data.name} (port ${data.port})`}`);
|
|
134
|
+
console.log(`
|
|
135
|
+
volute mind start ${data.name}`);
|
|
136
|
+
} catch (err) {
|
|
137
|
+
rmSync(tempDir, { recursive: true, force: true });
|
|
138
|
+
throw err;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
69
141
|
function resolveWorkspace(explicitPath) {
|
|
70
142
|
if (explicitPath) {
|
|
71
143
|
const wsDir = resolve2(explicitPath);
|
|
@@ -127,7 +199,7 @@ function sessionMatchesWorkspace(sessionPath, workspaceDir) {
|
|
|
127
199
|
}
|
|
128
200
|
function importPiSession(sessionFile, mindDirPath) {
|
|
129
201
|
const homeDir = resolve2(mindDirPath, "home");
|
|
130
|
-
const piSessionDir = resolve2(mindDirPath, ".
|
|
202
|
+
const piSessionDir = resolve2(mindDirPath, ".mind/pi-sessions/main");
|
|
131
203
|
mkdirSync2(piSessionDir, { recursive: true });
|
|
132
204
|
const content = readFileSync2(sessionFile, "utf-8");
|
|
133
205
|
const lines = content.trim().split("\n");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
validateMindName
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-EBGCNDMM.js";
|
|
5
5
|
|
|
6
6
|
// src/lib/isolation.ts
|
|
7
7
|
import { execFileSync } from "child_process";
|
|
@@ -80,6 +80,7 @@ function chownMindDir(dir, name) {
|
|
|
80
80
|
|
|
81
81
|
export {
|
|
82
82
|
isIsolationEnabled,
|
|
83
|
+
mindUserName,
|
|
83
84
|
ensureVoluteGroup,
|
|
84
85
|
createMindUser,
|
|
85
86
|
deleteMindUser,
|