volute 0.26.0 → 0.27.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 +13 -13
- package/dist/{activity-events-ZMBAKLUF.js → activity-events-BBIEA2F4.js} +2 -3
- package/dist/api.d.ts +363 -168
- package/dist/{archive-4ZQYK5MN.js → archive-UA4BDFXQ.js} +2 -2
- package/dist/{auth-4TV573WE.js → auth-D3OT2ARB.js} +3 -3
- package/dist/bridge-FQHZL3MC.js +206 -0
- package/dist/chat-MHJ3L6JQ.js +58 -0
- package/dist/{chunk-PHU4DEAJ.js → chunk-2WPW7OT6.js} +3 -3
- package/dist/{chunk-5Y3PBKW6.js → chunk-2YP2TVDT.js} +138 -56
- package/dist/{chunk-USNBKHYG.js → chunk-4WXYUOAK.js} +4 -6
- package/dist/{chunk-YJA7P64S.js → chunk-AW7PFDVN.js} +5 -5
- package/dist/{chunk-OZFKBXD6.js → chunk-EHYDTZTF.js} +6 -6
- package/dist/{chunk-LX22GRG7.js → chunk-GIE6CSN5.js} +11 -8
- package/dist/{chunk-WBHMQ5OZ.js → chunk-H7OZRFJB.js} +192 -12
- package/dist/{chunk-ON3FF5JA.js → chunk-HDN7MNGD.js} +3 -3
- package/dist/chunk-IAYBDWVG.js +477 -0
- package/dist/{chunk-TZKJLDQN.js → chunk-IKRVFPWU.js} +14 -9
- package/dist/{chunk-WGOGUMPO.js → chunk-JGFVMROS.js} +13 -6
- package/dist/{chunk-3TV4GLFO.js → chunk-JKOWNZ4P.js} +3 -3
- package/dist/{chunk-NWI2425I.js → chunk-K5NAC55T.js} +1 -1
- package/dist/{chunk-HFCBO2GL.js → chunk-KDGS53OS.js} +4 -4
- package/dist/chunk-KTLFDYPT.js +61 -0
- package/dist/{chunk-V63B7DX3.js → chunk-LAC664WU.js} +7 -4
- package/dist/{chunk-3CFRE2VC.js → chunk-OQZH4PBB.js} +337 -1061
- package/dist/{chunk-2VO7453N.js → chunk-PHSAT7YL.js} +30 -54
- package/dist/{chunk-XOXLRRR2.js → chunk-RKQEHRBB.js} +4 -3
- package/dist/chunk-T6HKBWXZ.js +23 -0
- package/dist/{chunk-UTL75LP6.js → chunk-USUXRNVD.js} +22 -22
- package/dist/{chunk-J2CO4WEV.js → chunk-VIVMW2H2.js} +4 -4
- package/dist/{chunk-KTJGZ7M7.js → chunk-XBLSAVJF.js} +1 -1
- package/dist/cli.js +31 -36
- package/dist/{cloud-sync-NI2K3C7G.js → cloud-sync-T7M3ESC3.js} +15 -14
- package/dist/connectors/discord-bridge.js +158 -0
- package/dist/connectors/slack-bridge.js +119 -0
- package/dist/connectors/telegram-bridge.js +133 -0
- package/dist/conversations-M2K4253F.js +55 -0
- package/dist/create-D7J73A6H.js +45 -0
- package/dist/{create-4YBRTTJS.js → create-QWV73WXD.js} +1 -1
- package/dist/{daemon-client-Z7FAJ6JW.js → daemon-client-I42FK2BF.js} +2 -2
- package/dist/{daemon-restart-BJZ3O4U4.js → daemon-restart-M2QTYMEG.js} +7 -7
- package/dist/daemon.js +1758 -1024
- package/dist/db-IC4J52XQ.js +8 -0
- package/dist/{delete-27OYNK25.js → delete-4JYGD4VN.js} +1 -1
- package/dist/down-LVBXEULC.js +14 -0
- package/dist/{env-M336ONDP.js → env-YJMUMFIY.js} +2 -2
- package/dist/{export-HP4G5DQC.js → export-BOJQWBMA.js} +4 -4
- package/dist/{file-HUDKTRAS.js → file-CR36YUPD.js} +4 -4
- package/dist/{history-B64GTFTD.js → history-XKRTAFS2.js} +5 -5
- package/dist/{import-XIB7UV4S.js → import-SRTQXBGH.js} +4 -4
- package/dist/join-J4QU42DL.js +66 -0
- package/dist/list-R73GENNL.js +40 -0
- package/dist/{log-PBFNILJ4.js → log-ABYNVYJ3.js} +4 -4
- package/dist/{login-B5E7N7MY.js → login-3QZNR2DF.js} +4 -4
- package/dist/{login-6U7U6BNG.js → login-XX37I52P.js} +2 -2
- package/dist/{logout-XSJRYS3U.js → logout-T53VKCPU.js} +4 -4
- package/dist/{logout-UKD5LA37.js → logout-W4KOOBIT.js} +2 -2
- package/dist/{logs-3CART7O7.js → logs-U35JR2KE.js} +5 -5
- package/dist/{merge-VK2HSKMA.js → merge-LNSMSAOF.js} +4 -4
- package/dist/message-delivery-LDXLGERA.js +25 -0
- package/dist/migrate-registry-to-db-XC7T5B7P.js +110 -0
- package/dist/{mind-HZ3QSDDJ.js → mind-DI33C74K.js} +25 -25
- package/dist/{mind-activity-tracker-4G6FURY2.js → mind-activity-tracker-EN6XNXPF.js} +3 -4
- package/dist/mind-manager-M6EMUW5I.js +18 -0
- package/dist/{mind-sleep-DTV7L44D.js → mind-sleep-BTSWQNAC.js} +4 -4
- package/dist/{mind-wake-PFN4FN3T.js → mind-wake-SBAKIDVP.js} +4 -4
- package/dist/{notes-37FW2UR2.js → notes-XCER3I7M.js} +11 -21
- package/dist/{package-VZWLXPHV.js → package-7WY6VKU3.js} +1 -1
- package/dist/{pages-DIIT5HMQ.js → pages-6EBS6CBR.js} +2 -2
- package/dist/{publish-HQV7YREB.js → publish-66UB2ZFY.js} +5 -5
- package/dist/{pull-2MB4SK3C.js → pull-XCHJTM5M.js} +4 -4
- package/dist/read-36UFXN3G.js +46 -0
- package/dist/{register-EFND67FQ.js → register-6B2CXTYM.js} +2 -2
- package/dist/{registry-D2BSQ2X5.js → registry-NDNOOYG4.js} +15 -9
- package/dist/{restart-CCK7D6TV.js → restart-6ESL3NBO.js} +5 -5
- package/dist/{sandbox-EHGFF52K.js → sandbox-TGBX22DS.js} +3 -3
- package/dist/{schedule-6F7ELB2M.js → schedule-QTJMFATP.js} +5 -5
- package/dist/{seed-E5OQGWX3.js → seed-SSUCYYDF.js} +2 -2
- package/dist/{send-IH6XZKPC.js → send-ZNCJDSRP.js} +25 -19
- package/dist/{service-LLBV3R7M.js → service-6LIN3F3K.js} +4 -4
- package/dist/{setup-F6TWFYGQ.js → setup-JG4QAEBV.js} +12 -12
- package/dist/{setup-YGAAIKKZ.js → setup-JHL5ZEST.js} +2 -2
- package/dist/{shared-UMO4S7CC.js → shared-ML5I4Q2A.js} +4 -4
- package/dist/{skill-42LGFBQC.js → skill-AUAQTSP5.js} +5 -5
- package/dist/skills/dreaming/references/INSTALL.md +2 -2
- package/dist/skills/orientation/SKILL.md +3 -3
- package/dist/skills/volute-mind/SKILL.md +32 -30
- package/dist/sleep-manager-MWYHM5HV.js +29 -0
- package/dist/split-TKJ5OT3P.js +63 -0
- package/dist/{sprout-QL74KR2X.js → sprout-IJVVKSJ2.js} +6 -7
- package/dist/{start-O5JQASRC.js → start-EUJSS5R4.js} +2 -2
- package/dist/{status-FZBEBM7Q.js → status-77YEPHMW.js} +5 -5
- package/dist/{status-WXD4HXRL.js → status-7GA4SM4Y.js} +4 -4
- package/dist/{status-LV34BG6G.js → status-THLOBLWG.js} +2 -2
- package/dist/{stop-2SOG5NYF.js → stop-3XAITBBF.js} +5 -5
- package/dist/{tailscale-AJ4VL5XK.js → tailscale-NY5MUMY3.js} +1 -1
- package/dist/up-NKSMXBWR.js +17 -0
- package/dist/{update-5VUDAI3D.js → update-PTSH22AZ.js} +9 -9
- package/dist/{update-check-F5Z3ALXX.js → update-check-64FWC4Y2.js} +2 -2
- package/dist/{upgrade-QCCO33BK.js → upgrade-HA47CS4C.js} +12 -5
- package/dist/variant-7TGZHOU3.js +41 -0
- package/dist/{version-notify-USFZBWMG.js → version-notify-5Z4MNR6M.js} +26 -30
- package/dist/web-assets/assets/index-CI5wgghI.css +1 -0
- package/dist/web-assets/assets/index-is5CvJWH.js +75 -0
- package/dist/web-assets/favicon.png +0 -0
- package/dist/web-assets/index.html +2 -2
- package/drizzle/0017_minds.sql +16 -0
- package/drizzle/meta/_journal.json +7 -0
- package/package.json +1 -1
- package/templates/_base/.init/.config/prompts.json +2 -2
- package/templates/_base/home/VOLUTE.md +5 -5
- package/templates/_base/src/lib/startup.ts +2 -2
- package/dist/channel-ZVZV42UD.js +0 -260
- package/dist/chunk-B2CPS4QU.js +0 -283
- package/dist/chunk-SIAG3QMM.js +0 -42
- package/dist/chunk-WSLPZF72.js +0 -173
- package/dist/connector-G722WXAU.js +0 -147
- package/dist/connectors/discord.js +0 -177
- package/dist/connectors/slack.js +0 -181
- package/dist/connectors/telegram.js +0 -187
- package/dist/down-7UKFMJJZ.js +0 -14
- package/dist/message-delivery-MS5JYPZX.js +0 -25
- package/dist/mind-manager-VVK67AY3.js +0 -19
- package/dist/sleep-manager-EE4NRN2Q.js +0 -29
- package/dist/up-SDMCSVI3.js +0 -17
- package/dist/variant-WWLDY6D5.js +0 -207
- package/dist/web-assets/assets/index-CUQ31ieL.js +0 -69
- package/dist/web-assets/assets/index-CW8NSl1o.css +0 -1
|
@@ -13,7 +13,7 @@ async function run(args) {
|
|
|
13
13
|
force: { type: "boolean" }
|
|
14
14
|
});
|
|
15
15
|
const name = resolveMindName({ mind: positional[0] });
|
|
16
|
-
const { daemonFetch } = await import("./daemon-client-
|
|
16
|
+
const { daemonFetch } = await import("./daemon-client-I42FK2BF.js");
|
|
17
17
|
const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
|
|
18
18
|
const client = getClient();
|
|
19
19
|
const url = urlOf(client.api.minds[":name"].$url({ param: { name } })) + (flags.force ? "?force=true" : "");
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
run,
|
|
4
|
+
stopDaemon
|
|
5
|
+
} from "./chunk-EHYDTZTF.js";
|
|
6
|
+
import "./chunk-LAC664WU.js";
|
|
7
|
+
import "./chunk-AW7PFDVN.js";
|
|
8
|
+
import "./chunk-RKQEHRBB.js";
|
|
9
|
+
import "./chunk-H7OZRFJB.js";
|
|
10
|
+
import "./chunk-K3NQKI34.js";
|
|
11
|
+
export {
|
|
12
|
+
run,
|
|
13
|
+
stopDaemon
|
|
14
|
+
};
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-SSI47XP2.js";
|
|
5
5
|
import {
|
|
6
6
|
daemonFetch
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-JGFVMROS.js";
|
|
8
8
|
import {
|
|
9
9
|
getClient,
|
|
10
10
|
urlOf
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
import {
|
|
13
13
|
parseArgs
|
|
14
14
|
} from "./chunk-D424ZQGI.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-H7OZRFJB.js";
|
|
16
16
|
import "./chunk-K3NQKI34.js";
|
|
17
17
|
|
|
18
18
|
// src/commands/env.ts
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
import {
|
|
3
3
|
addHistoryToArchive,
|
|
4
4
|
createExportArchive
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-XBLSAVJF.js";
|
|
6
6
|
import {
|
|
7
7
|
parseArgs
|
|
8
8
|
} from "./chunk-D424ZQGI.js";
|
|
9
9
|
import {
|
|
10
10
|
findMind,
|
|
11
11
|
mindDir
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-H7OZRFJB.js";
|
|
13
13
|
import "./chunk-K3NQKI34.js";
|
|
14
14
|
|
|
15
15
|
// src/commands/export.ts
|
|
@@ -33,7 +33,7 @@ async function run(args) {
|
|
|
33
33
|
);
|
|
34
34
|
process.exit(1);
|
|
35
35
|
}
|
|
36
|
-
const entry = findMind(name);
|
|
36
|
+
const entry = await findMind(name);
|
|
37
37
|
if (!entry) {
|
|
38
38
|
console.error(`Unknown mind: ${name}`);
|
|
39
39
|
process.exit(1);
|
|
@@ -63,7 +63,7 @@ async function run(args) {
|
|
|
63
63
|
});
|
|
64
64
|
if (includeHistory) {
|
|
65
65
|
try {
|
|
66
|
-
const { daemonFetch } = await import("./daemon-client-
|
|
66
|
+
const { daemonFetch } = await import("./daemon-client-I42FK2BF.js");
|
|
67
67
|
const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
|
|
68
68
|
const client = getClient();
|
|
69
69
|
const res = await daemonFetch(
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
daemonFetch
|
|
4
|
-
} from "./chunk-WGOGUMPO.js";
|
|
5
2
|
import {
|
|
6
3
|
resolveMindName
|
|
7
4
|
} from "./chunk-NAOW2CLO.js";
|
|
5
|
+
import {
|
|
6
|
+
daemonFetch
|
|
7
|
+
} from "./chunk-JGFVMROS.js";
|
|
8
8
|
import {
|
|
9
9
|
parseArgs
|
|
10
10
|
} from "./chunk-D424ZQGI.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-H7OZRFJB.js";
|
|
12
12
|
import "./chunk-K3NQKI34.js";
|
|
13
13
|
|
|
14
14
|
// src/commands/file.ts
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
resolveMindName
|
|
4
|
+
} from "./chunk-NAOW2CLO.js";
|
|
2
5
|
import {
|
|
3
6
|
daemonFetch
|
|
4
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-JGFVMROS.js";
|
|
5
8
|
import {
|
|
6
9
|
getClient,
|
|
7
10
|
urlOf
|
|
8
11
|
} from "./chunk-4RQBJWQX.js";
|
|
9
|
-
import {
|
|
10
|
-
resolveMindName
|
|
11
|
-
} from "./chunk-NAOW2CLO.js";
|
|
12
12
|
import {
|
|
13
13
|
parseArgs
|
|
14
14
|
} from "./chunk-D424ZQGI.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-H7OZRFJB.js";
|
|
16
16
|
import "./chunk-K3NQKI34.js";
|
|
17
17
|
|
|
18
18
|
// src/commands/history.ts
|
|
@@ -6,11 +6,11 @@ import {
|
|
|
6
6
|
parseNameFromIdentity,
|
|
7
7
|
run,
|
|
8
8
|
sessionMatchesWorkspace
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-2YP2TVDT.js";
|
|
10
|
+
import "./chunk-2WPW7OT6.js";
|
|
11
|
+
import "./chunk-YUIHSKR6.js";
|
|
12
12
|
import "./chunk-D424ZQGI.js";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-H7OZRFJB.js";
|
|
14
14
|
import "./chunk-K3NQKI34.js";
|
|
15
15
|
export {
|
|
16
16
|
findOpenClawSession,
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
parseArgs
|
|
4
|
+
} from "./chunk-D424ZQGI.js";
|
|
5
|
+
import "./chunk-K3NQKI34.js";
|
|
6
|
+
|
|
7
|
+
// src/commands/join.ts
|
|
8
|
+
async function run(args) {
|
|
9
|
+
const { positional, flags } = parseArgs(args, {
|
|
10
|
+
summary: { type: "string" },
|
|
11
|
+
justification: { type: "string" },
|
|
12
|
+
memory: { type: "string" },
|
|
13
|
+
"skip-verify": { type: "boolean" }
|
|
14
|
+
});
|
|
15
|
+
const variantName = positional[0];
|
|
16
|
+
if (!variantName) {
|
|
17
|
+
console.error(
|
|
18
|
+
"Usage: volute mind join <variant-name> [--summary '...'] [--justification '...'] [--memory '...'] [--skip-verify]"
|
|
19
|
+
);
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
console.log(`Joining variant ${variantName}...`);
|
|
23
|
+
const { daemonFetch } = await import("./daemon-client-I42FK2BF.js");
|
|
24
|
+
const { getClient, urlOf } = await import("./api-client-YPKOZP2O.js");
|
|
25
|
+
const client = getClient();
|
|
26
|
+
const statusRes = await daemonFetch(
|
|
27
|
+
urlOf(client.api.minds[":name"].$url({ param: { name: variantName } }))
|
|
28
|
+
);
|
|
29
|
+
if (!statusRes.ok) {
|
|
30
|
+
const data2 = await statusRes.json().catch(() => ({}));
|
|
31
|
+
console.error(data2.error ?? `Variant '${variantName}' not found (HTTP ${statusRes.status})`);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
const statusData = await statusRes.json();
|
|
35
|
+
const parentName = statusData.parent;
|
|
36
|
+
if (!parentName) {
|
|
37
|
+
console.error(`'${variantName}' is not a variant \u2014 it has no parent mind`);
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
const res = await daemonFetch(
|
|
41
|
+
urlOf(
|
|
42
|
+
client.api.minds[":name"].variants[":variant"].merge.$url({
|
|
43
|
+
param: { name: parentName, variant: variantName }
|
|
44
|
+
})
|
|
45
|
+
),
|
|
46
|
+
{
|
|
47
|
+
method: "POST",
|
|
48
|
+
headers: { "Content-Type": "application/json" },
|
|
49
|
+
body: JSON.stringify({
|
|
50
|
+
...flags.summary && { summary: flags.summary },
|
|
51
|
+
...flags.justification && { justification: flags.justification },
|
|
52
|
+
...flags.memory && { memory: flags.memory },
|
|
53
|
+
...flags["skip-verify"] && { skipVerify: true }
|
|
54
|
+
})
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
const data = await res.json();
|
|
58
|
+
if (!res.ok) {
|
|
59
|
+
console.error(data.error ?? "Failed to join variant");
|
|
60
|
+
process.exit(1);
|
|
61
|
+
}
|
|
62
|
+
console.log(`Variant ${variantName} joined and cleaned up.`);
|
|
63
|
+
}
|
|
64
|
+
export {
|
|
65
|
+
run
|
|
66
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
resolveMindName
|
|
4
|
+
} from "./chunk-NAOW2CLO.js";
|
|
5
|
+
import {
|
|
6
|
+
daemonFetch
|
|
7
|
+
} from "./chunk-JGFVMROS.js";
|
|
8
|
+
import {
|
|
9
|
+
parseArgs
|
|
10
|
+
} from "./chunk-D424ZQGI.js";
|
|
11
|
+
import "./chunk-H7OZRFJB.js";
|
|
12
|
+
import "./chunk-K3NQKI34.js";
|
|
13
|
+
|
|
14
|
+
// src/commands/chat/list.ts
|
|
15
|
+
async function run(args) {
|
|
16
|
+
const { flags } = parseArgs(args, {
|
|
17
|
+
mind: { type: "string" }
|
|
18
|
+
});
|
|
19
|
+
const mindName = resolveMindName(flags);
|
|
20
|
+
const res = await daemonFetch(`/api/minds/${encodeURIComponent(mindName)}/conversations`);
|
|
21
|
+
if (!res.ok) {
|
|
22
|
+
console.error(`Failed to list conversations: ${res.status}`);
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
const convs = await res.json();
|
|
26
|
+
if (convs.length === 0) {
|
|
27
|
+
console.log("No conversations.");
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
for (const conv of convs) {
|
|
31
|
+
const label = conv.type === "channel" ? `#${conv.name}` : conv.title ?? conv.id.slice(0, 8);
|
|
32
|
+
const time = new Date(
|
|
33
|
+
conv.updated_at.endsWith("Z") ? conv.updated_at : `${conv.updated_at}Z`
|
|
34
|
+
).toLocaleString();
|
|
35
|
+
console.log(` ${label} (${conv.type}) ${time}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export {
|
|
39
|
+
run
|
|
40
|
+
};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
daemonFetch
|
|
4
|
-
} from "./chunk-WGOGUMPO.js";
|
|
5
2
|
import {
|
|
6
3
|
resolveMindName
|
|
7
4
|
} from "./chunk-NAOW2CLO.js";
|
|
5
|
+
import {
|
|
6
|
+
daemonFetch
|
|
7
|
+
} from "./chunk-JGFVMROS.js";
|
|
8
8
|
import {
|
|
9
9
|
parseArgs
|
|
10
10
|
} from "./chunk-D424ZQGI.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-H7OZRFJB.js";
|
|
12
12
|
import "./chunk-K3NQKI34.js";
|
|
13
13
|
|
|
14
14
|
// src/commands/shared/log.ts
|
|
@@ -5,10 +5,10 @@ import {
|
|
|
5
5
|
} from "./chunk-SSI47XP2.js";
|
|
6
6
|
import {
|
|
7
7
|
daemonFetch
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-JGFVMROS.js";
|
|
9
9
|
import {
|
|
10
|
-
|
|
11
|
-
} from "./chunk-
|
|
10
|
+
voluteUserHome
|
|
11
|
+
} from "./chunk-H7OZRFJB.js";
|
|
12
12
|
import "./chunk-K3NQKI34.js";
|
|
13
13
|
|
|
14
14
|
// src/commands/login.ts
|
|
@@ -32,7 +32,7 @@ async function run(_args) {
|
|
|
32
32
|
role,
|
|
33
33
|
sessionId
|
|
34
34
|
} = await res.json();
|
|
35
|
-
const sessionPath = resolve(
|
|
35
|
+
const sessionPath = resolve(voluteUserHome(), "cli-session.json");
|
|
36
36
|
try {
|
|
37
37
|
writeFileSync(sessionPath, JSON.stringify({ sessionId, username: name }), { mode: 384 });
|
|
38
38
|
} catch (err) {
|
|
@@ -8,11 +8,11 @@ import {
|
|
|
8
8
|
import {
|
|
9
9
|
readSystemsConfig,
|
|
10
10
|
writeSystemsConfig
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-KDGS53OS.js";
|
|
12
12
|
import {
|
|
13
13
|
parseArgs
|
|
14
14
|
} from "./chunk-D424ZQGI.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-H7OZRFJB.js";
|
|
16
16
|
import "./chunk-K3NQKI34.js";
|
|
17
17
|
|
|
18
18
|
// src/commands/pages/login.ts
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
daemonFetch
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-JGFVMROS.js";
|
|
5
5
|
import {
|
|
6
|
-
|
|
7
|
-
} from "./chunk-
|
|
6
|
+
voluteUserHome
|
|
7
|
+
} from "./chunk-H7OZRFJB.js";
|
|
8
8
|
import "./chunk-K3NQKI34.js";
|
|
9
9
|
|
|
10
10
|
// src/commands/logout.ts
|
|
11
11
|
import { existsSync, readFileSync, unlinkSync } from "fs";
|
|
12
12
|
import { resolve } from "path";
|
|
13
13
|
async function run(_args) {
|
|
14
|
-
const sessionPath = resolve(
|
|
14
|
+
const sessionPath = resolve(voluteUserHome(), "cli-session.json");
|
|
15
15
|
if (!existsSync(sessionPath)) {
|
|
16
16
|
console.log("Not logged in");
|
|
17
17
|
return;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
resolveMindName
|
|
4
|
+
} from "./chunk-NAOW2CLO.js";
|
|
2
5
|
import {
|
|
3
6
|
daemonFetch
|
|
4
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-JGFVMROS.js";
|
|
5
8
|
import {
|
|
6
9
|
getClient,
|
|
7
10
|
urlOf
|
|
8
11
|
} from "./chunk-4RQBJWQX.js";
|
|
9
|
-
import {
|
|
10
|
-
resolveMindName
|
|
11
|
-
} from "./chunk-NAOW2CLO.js";
|
|
12
12
|
import {
|
|
13
13
|
parseArgs
|
|
14
14
|
} from "./chunk-D424ZQGI.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-H7OZRFJB.js";
|
|
16
16
|
import "./chunk-K3NQKI34.js";
|
|
17
17
|
|
|
18
18
|
// src/commands/logs.ts
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
daemonFetch
|
|
4
|
-
} from "./chunk-WGOGUMPO.js";
|
|
5
2
|
import {
|
|
6
3
|
resolveMindName
|
|
7
4
|
} from "./chunk-NAOW2CLO.js";
|
|
5
|
+
import {
|
|
6
|
+
daemonFetch
|
|
7
|
+
} from "./chunk-JGFVMROS.js";
|
|
8
8
|
import {
|
|
9
9
|
parseArgs
|
|
10
10
|
} from "./chunk-D424ZQGI.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-H7OZRFJB.js";
|
|
12
12
|
import "./chunk-K3NQKI34.js";
|
|
13
13
|
|
|
14
14
|
// src/commands/shared/merge.ts
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
deliverMessage,
|
|
4
|
+
extractTextContent,
|
|
5
|
+
recordInbound
|
|
6
|
+
} from "./chunk-OQZH4PBB.js";
|
|
7
|
+
import "./chunk-KDGS53OS.js";
|
|
8
|
+
import "./chunk-K5NAC55T.js";
|
|
9
|
+
import "./chunk-PHSAT7YL.js";
|
|
10
|
+
import "./chunk-USUXRNVD.js";
|
|
11
|
+
import "./chunk-IAYBDWVG.js";
|
|
12
|
+
import "./chunk-VIVMW2H2.js";
|
|
13
|
+
import "./chunk-2WPW7OT6.js";
|
|
14
|
+
import "./chunk-YUIHSKR6.js";
|
|
15
|
+
import "./chunk-AW7PFDVN.js";
|
|
16
|
+
import "./chunk-RKQEHRBB.js";
|
|
17
|
+
import "./chunk-IKRVFPWU.js";
|
|
18
|
+
import "./chunk-T6HKBWXZ.js";
|
|
19
|
+
import "./chunk-H7OZRFJB.js";
|
|
20
|
+
import "./chunk-K3NQKI34.js";
|
|
21
|
+
export {
|
|
22
|
+
deliverMessage,
|
|
23
|
+
extractTextContent,
|
|
24
|
+
recordInbound
|
|
25
|
+
};
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
logger_default
|
|
4
|
+
} from "./chunk-YUIHSKR6.js";
|
|
5
|
+
import {
|
|
6
|
+
getDb,
|
|
7
|
+
minds,
|
|
8
|
+
voluteSystemDir
|
|
9
|
+
} from "./chunk-H7OZRFJB.js";
|
|
10
|
+
import "./chunk-K3NQKI34.js";
|
|
11
|
+
|
|
12
|
+
// src/lib/migrate-registry-to-db.ts
|
|
13
|
+
import { existsSync, readFileSync, renameSync } from "fs";
|
|
14
|
+
import { resolve } from "path";
|
|
15
|
+
async function migrateRegistryToDb() {
|
|
16
|
+
const systemDir = voluteSystemDir();
|
|
17
|
+
const mindsJsonPath = resolve(systemDir, "minds.json");
|
|
18
|
+
const variantsJsonPath = resolve(systemDir, "variants.json");
|
|
19
|
+
if (!existsSync(mindsJsonPath) && !existsSync(variantsJsonPath)) return;
|
|
20
|
+
const db = await getDb();
|
|
21
|
+
let mindEntries = [];
|
|
22
|
+
let mindsParseOk = true;
|
|
23
|
+
if (existsSync(mindsJsonPath)) {
|
|
24
|
+
try {
|
|
25
|
+
mindEntries = JSON.parse(readFileSync(mindsJsonPath, "utf-8"));
|
|
26
|
+
} catch (err) {
|
|
27
|
+
mindsParseOk = false;
|
|
28
|
+
logger_default.error("failed to parse minds.json during migration", { error: err });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
let allVariants = {};
|
|
32
|
+
let variantsParseOk = true;
|
|
33
|
+
if (existsSync(variantsJsonPath)) {
|
|
34
|
+
try {
|
|
35
|
+
allVariants = JSON.parse(readFileSync(variantsJsonPath, "utf-8"));
|
|
36
|
+
} catch (err) {
|
|
37
|
+
variantsParseOk = false;
|
|
38
|
+
logger_default.error("failed to parse variants.json during migration", { error: err });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
let mindFailCount = 0;
|
|
42
|
+
for (const entry of mindEntries) {
|
|
43
|
+
try {
|
|
44
|
+
await db.insert(minds).values({
|
|
45
|
+
name: entry.name,
|
|
46
|
+
port: entry.port,
|
|
47
|
+
stage: entry.stage ?? "sprouted",
|
|
48
|
+
template: entry.template ?? null,
|
|
49
|
+
template_hash: entry.templateHash ?? null,
|
|
50
|
+
running: entry.running ? 1 : 0,
|
|
51
|
+
created_at: entry.created
|
|
52
|
+
}).onConflictDoNothing();
|
|
53
|
+
} catch (err) {
|
|
54
|
+
mindFailCount++;
|
|
55
|
+
logger_default.warn(`failed to migrate mind ${entry.name} to DB`, { error: err });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
let variantFailCount = 0;
|
|
59
|
+
for (const [mindName, variants] of Object.entries(allVariants)) {
|
|
60
|
+
for (const v of variants) {
|
|
61
|
+
try {
|
|
62
|
+
await db.insert(minds).values({
|
|
63
|
+
name: `${mindName}@${v.name}`,
|
|
64
|
+
port: v.port,
|
|
65
|
+
parent: mindName,
|
|
66
|
+
dir: v.path,
|
|
67
|
+
branch: v.branch,
|
|
68
|
+
running: v.running ? 1 : 0,
|
|
69
|
+
created_at: v.created
|
|
70
|
+
}).onConflictDoNothing();
|
|
71
|
+
} catch (err) {
|
|
72
|
+
variantFailCount++;
|
|
73
|
+
logger_default.warn(`failed to migrate variant ${mindName}@${v.name} to DB`, { error: err });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (mindFailCount > 0) {
|
|
78
|
+
logger_default.error(`${mindFailCount} mind(s) failed to migrate \u2014 minds.json will not be renamed`);
|
|
79
|
+
}
|
|
80
|
+
if (variantFailCount > 0) {
|
|
81
|
+
logger_default.error(
|
|
82
|
+
`${variantFailCount} variant(s) failed to migrate \u2014 variants.json will not be renamed`
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
if (mindsParseOk && mindFailCount === 0) {
|
|
86
|
+
try {
|
|
87
|
+
if (existsSync(mindsJsonPath)) {
|
|
88
|
+
renameSync(mindsJsonPath, `${mindsJsonPath}.bak`);
|
|
89
|
+
}
|
|
90
|
+
} catch (err) {
|
|
91
|
+
logger_default.warn("failed to rename minds.json to .bak", { error: err });
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (variantsParseOk && variantFailCount === 0) {
|
|
95
|
+
try {
|
|
96
|
+
if (existsSync(variantsJsonPath)) {
|
|
97
|
+
renameSync(variantsJsonPath, `${variantsJsonPath}.bak`);
|
|
98
|
+
}
|
|
99
|
+
} catch (err) {
|
|
100
|
+
logger_default.warn("failed to rename variants.json to .bak", { error: err });
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const count = mindEntries.length + Object.values(allVariants).flat().length;
|
|
104
|
+
if (count > 0) {
|
|
105
|
+
logger_default.info(`migrated ${count} entries from JSON to DB`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
export {
|
|
109
|
+
migrateRegistryToDb
|
|
110
|
+
};
|
|
@@ -6,63 +6,63 @@ async function run(args) {
|
|
|
6
6
|
const subcommand = args[0];
|
|
7
7
|
switch (subcommand) {
|
|
8
8
|
case "create":
|
|
9
|
-
await import("./create-
|
|
9
|
+
await import("./create-QWV73WXD.js").then((m) => m.run(args.slice(1)));
|
|
10
10
|
break;
|
|
11
11
|
case "start":
|
|
12
|
-
await import("./start-
|
|
12
|
+
await import("./start-EUJSS5R4.js").then((m) => m.run(args.slice(1)));
|
|
13
13
|
break;
|
|
14
14
|
case "stop":
|
|
15
|
-
await import("./stop-
|
|
15
|
+
await import("./stop-3XAITBBF.js").then((m) => m.run(args.slice(1)));
|
|
16
16
|
break;
|
|
17
17
|
case "restart":
|
|
18
|
-
await import("./restart-
|
|
18
|
+
await import("./restart-6ESL3NBO.js").then((m) => m.run(args.slice(1)));
|
|
19
19
|
break;
|
|
20
20
|
case "delete":
|
|
21
|
-
await import("./delete-
|
|
21
|
+
await import("./delete-4JYGD4VN.js").then((m) => m.run(args.slice(1)));
|
|
22
22
|
break;
|
|
23
23
|
case "list":
|
|
24
|
-
await import("./status-
|
|
24
|
+
await import("./status-77YEPHMW.js").then((m) => m.run(args.slice(1)));
|
|
25
25
|
break;
|
|
26
26
|
case "status": {
|
|
27
27
|
const rest = args.slice(1);
|
|
28
28
|
if (!rest[0] && process.env.VOLUTE_MIND) {
|
|
29
29
|
rest.unshift(process.env.VOLUTE_MIND);
|
|
30
30
|
}
|
|
31
|
-
await import("./status-
|
|
31
|
+
await import("./status-77YEPHMW.js").then((m) => m.run(rest));
|
|
32
32
|
break;
|
|
33
33
|
}
|
|
34
34
|
case "logs": {
|
|
35
35
|
const rest = args.slice(1);
|
|
36
36
|
const logsArgs = transformMindFlag(rest);
|
|
37
|
-
await import("./logs-
|
|
37
|
+
await import("./logs-U35JR2KE.js").then((m) => m.run(logsArgs));
|
|
38
38
|
break;
|
|
39
39
|
}
|
|
40
40
|
case "upgrade":
|
|
41
|
-
await import("./upgrade-
|
|
41
|
+
await import("./upgrade-HA47CS4C.js").then((m) => m.run(args.slice(1)));
|
|
42
42
|
break;
|
|
43
43
|
case "import":
|
|
44
|
-
await import("./import-
|
|
44
|
+
await import("./import-SRTQXBGH.js").then((m) => m.run(args.slice(1)));
|
|
45
45
|
break;
|
|
46
46
|
case "export":
|
|
47
|
-
await import("./export-
|
|
48
|
-
break;
|
|
49
|
-
case "connect":
|
|
50
|
-
await import("./connector-G722WXAU.js").then((m) => m.run(["connect", ...args.slice(1)]));
|
|
51
|
-
break;
|
|
52
|
-
case "disconnect":
|
|
53
|
-
await import("./connector-G722WXAU.js").then((m) => m.run(["disconnect", ...args.slice(1)]));
|
|
47
|
+
await import("./export-BOJQWBMA.js").then((m) => m.run(args.slice(1)));
|
|
54
48
|
break;
|
|
55
49
|
case "seed":
|
|
56
|
-
await import("./seed-
|
|
50
|
+
await import("./seed-SSUCYYDF.js").then((m) => m.run(args.slice(1)));
|
|
57
51
|
break;
|
|
58
52
|
case "sprout":
|
|
59
|
-
await import("./sprout-
|
|
53
|
+
await import("./sprout-IJVVKSJ2.js").then((m) => m.run(args.slice(1)));
|
|
60
54
|
break;
|
|
61
55
|
case "sleep":
|
|
62
|
-
await import("./mind-sleep-
|
|
56
|
+
await import("./mind-sleep-BTSWQNAC.js").then((m) => m.run(args.slice(1)));
|
|
63
57
|
break;
|
|
64
58
|
case "wake":
|
|
65
|
-
await import("./mind-wake-
|
|
59
|
+
await import("./mind-wake-SBAKIDVP.js").then((m) => m.run(args.slice(1)));
|
|
60
|
+
break;
|
|
61
|
+
case "split":
|
|
62
|
+
await import("./split-TKJ5OT3P.js").then((m) => m.run(args.slice(1)));
|
|
63
|
+
break;
|
|
64
|
+
case "join":
|
|
65
|
+
await import("./join-J4QU42DL.js").then((m) => m.run(args.slice(1)));
|
|
66
66
|
break;
|
|
67
67
|
case "--help":
|
|
68
68
|
case "-h":
|
|
@@ -91,14 +91,14 @@ function printUsage() {
|
|
|
91
91
|
volute mind list
|
|
92
92
|
volute mind status [name]
|
|
93
93
|
volute mind logs [name] [--follow] [-n N]
|
|
94
|
-
volute mind connect <type> [--mind <name>]
|
|
95
|
-
volute mind disconnect <type> [--mind <name>]
|
|
96
94
|
volute mind sprout
|
|
97
95
|
volute mind sleep [name] [--wake-at <time>]
|
|
98
96
|
volute mind wake [name]
|
|
99
|
-
volute mind
|
|
97
|
+
volute mind split <name> [--from <mind>] [--soul "..."] [--port N] [--no-start] [--json]
|
|
98
|
+
volute mind join <variant-name> [--summary "..." --justification "..." --memory "..."] [--skip-verify]
|
|
99
|
+
volute mind upgrade [name] [--template <name>] [--continue] [--accept]
|
|
100
100
|
volute mind import <path> [--name <name>] [--session <path>] [--template <name>]
|
|
101
|
-
volute mind export <name> [--include-env] [--include-identity] [--include-
|
|
101
|
+
volute mind export <name> [--include-env] [--include-identity] [--include-history] [--include-sessions] [--all] [--output <path>]
|
|
102
102
|
|
|
103
103
|
Mind name can be omitted (where shown as [name]) if VOLUTE_MIND is set.`);
|
|
104
104
|
}
|
|
@@ -4,11 +4,10 @@ import {
|
|
|
4
4
|
markIdle,
|
|
5
5
|
onMindEvent,
|
|
6
6
|
stopAll
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-WBHMQ5OZ.js";
|
|
7
|
+
} from "./chunk-K5NAC55T.js";
|
|
8
|
+
import "./chunk-VIVMW2H2.js";
|
|
10
9
|
import "./chunk-YUIHSKR6.js";
|
|
11
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-H7OZRFJB.js";
|
|
12
11
|
import "./chunk-K3NQKI34.js";
|
|
13
12
|
export {
|
|
14
13
|
getActiveMinds,
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
MindManager,
|
|
4
|
+
getMindManager,
|
|
5
|
+
initMindManager
|
|
6
|
+
} from "./chunk-PHSAT7YL.js";
|
|
7
|
+
import "./chunk-USUXRNVD.js";
|
|
8
|
+
import "./chunk-2WPW7OT6.js";
|
|
9
|
+
import "./chunk-YUIHSKR6.js";
|
|
10
|
+
import "./chunk-RKQEHRBB.js";
|
|
11
|
+
import "./chunk-IKRVFPWU.js";
|
|
12
|
+
import "./chunk-H7OZRFJB.js";
|
|
13
|
+
import "./chunk-K3NQKI34.js";
|
|
14
|
+
export {
|
|
15
|
+
MindManager,
|
|
16
|
+
getMindManager,
|
|
17
|
+
initMindManager
|
|
18
|
+
};
|