volute 0.41.0 → 0.42.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/dist/{accept-AHAOUFBK.js → accept-7YVHZKRD.js} +1 -1
- package/dist/{activity-events-EQGBUEZ7.js → activity-events-KFKVRZE3.js} +2 -2
- package/dist/{ai-service-ZHEPFC3U.js → ai-service-3GBOJGUA.js} +11 -3
- package/dist/{archive-LJAXDDEY.js → archive-4PPYF7LL.js} +2 -2
- package/dist/{auth-VYW2ECCE.js → auth-EAASQPTN.js} +3 -3
- package/dist/{bridge-F3ZJEKDN.js → bridge-WPYSOQKR.js} +1 -1
- package/dist/{chat-FO722GU2.js → chat-7DOENBY2.js} +8 -8
- package/dist/{chunk-AXNAK3HT.js → chunk-2YRTSK5K.js} +7 -7
- package/dist/{chunk-VK2YD7VJ.js → chunk-4ZSUUBG5.js} +97 -2
- package/dist/{chunk-W5Z2H3LU.js → chunk-52NMCDBS.js} +290 -71
- package/dist/{chunk-6TPRURK5.js → chunk-5QG36RV7.js} +2 -2
- package/dist/{chunk-GMFCSXWB.js → chunk-62ICA2FF.js} +1 -1
- package/dist/{chunk-6ZAT5PYV.js → chunk-BLOAJLGI.js} +1 -1
- package/dist/{chunk-2I7OKOYV.js → chunk-CGPESELY.js} +2 -2
- package/dist/{chunk-FEQPNCXB.js → chunk-E7XWFDZL.js} +1 -1
- package/dist/{chunk-V67XMNGP.js → chunk-G777ME4L.js} +2 -2
- package/dist/{chunk-Y2XLASFJ.js → chunk-GN52E2DP.js} +1 -1
- package/dist/{chunk-ZX7EAV5J.js → chunk-IFNSAOA4.js} +9 -2
- package/dist/{chunk-VDODEQSJ.js → chunk-IUZ3EV2D.js} +4 -0
- package/dist/{chunk-JIGVTFIR.js → chunk-JLX3GC7T.js} +43 -14
- package/dist/{chunk-2RQIIKFC.js → chunk-K547QOCM.js} +1 -1
- package/dist/{chunk-OQ7UEW67.js → chunk-KUJVCDWT.js} +2 -2
- package/dist/chunk-KZAL7HEQ.js +141 -0
- package/dist/{chunk-GSOEUMVO.js → chunk-M2YMNTHK.js} +1 -1
- package/dist/{chunk-MU2B7A3L.js → chunk-OEJFZHZZ.js} +1 -1
- package/dist/{chunk-SWY4DJ67.js → chunk-OSUF75I7.js} +2 -2
- package/dist/{chunk-WSRGS4XP.js → chunk-QLWG3C2Z.js} +10 -0
- package/dist/{chunk-UU3Q65US.js → chunk-QMJCNZ6C.js} +1 -1
- package/dist/{chunk-CYUNO4BM.js → chunk-QPTQKGGF.js} +1 -1
- package/dist/{chunk-FU5YDH6Q.js → chunk-RKBYFLOR.js} +3 -3
- package/dist/{chunk-4ED2DBNC.js → chunk-TFBQESH7.js} +1 -1
- package/dist/{chunk-YATR5BXD.js → chunk-TKOWXAHG.js} +4 -4
- package/dist/{chunk-PP5CGT2P.js → chunk-VBKRZCR7.js} +1 -1
- package/dist/{chunk-YN6ISG7A.js → chunk-VSUZE2PD.js} +14 -13
- package/dist/{chunk-U7UASV36.js → chunk-WR7CSHQ4.js} +43 -10
- package/dist/{chunk-2R4JIZCB.js → chunk-YLTIEEVL.js} +2 -2
- package/dist/cli.js +22 -22
- package/dist/{clock-BMLJ2TR6.js → clock-HP2TGMG5.js} +3 -3
- package/dist/{cloud-sync-GV6O2HN2.js → cloud-sync-3OPHFOYQ.js} +17 -17
- package/dist/{config-QB7W3Z7P.js → config-W7MS3PWY.js} +3 -3
- package/dist/{conversations-KW7IYESK.js → conversations-FSZCUUYO.js} +3 -3
- package/dist/{create-C3BBFYV7.js → create-CJ2SR4EU.js} +1 -1
- package/dist/{create-CTPXWFTL.js → create-YNBZWD34.js} +2 -2
- package/dist/{daemon-client-2MIPKY3E.js → daemon-client-EWDPOOHC.js} +3 -1
- package/dist/{daemon-restart-W47YDE5E.js → daemon-restart-RAKGR56L.js} +7 -7
- package/dist/daemon.js +258 -302
- package/dist/{db-D4FVCA5I.js → db-ZJJJYJBU.js} +1 -1
- package/dist/{delete-NLXES2C7.js → delete-4ND5PLE7.js} +1 -1
- package/dist/delivery-manager-5Y35DOX3.js +33 -0
- package/dist/{delivery-router-Y66OXJPM.js → delivery-router-FDBZJQOY.js} +2 -2
- package/dist/{down-JVHNXOFU.js → down-DS6WCT34.js} +5 -5
- package/dist/echo-text-YP3JVLNA.js +32 -0
- package/dist/{env-IQ6Q2333.js → env-XX2MBZCZ.js} +1 -1
- package/dist/{exec-R2WWZ6FH.js → exec-ZDD7NEB4.js} +3 -3
- package/dist/{export-ZZ5WWBUH.js → export-5DOQV2WM.js} +3 -3
- package/dist/{extension-LZYHBNLV.js → extension-BCFYXI7A.js} +4 -1
- package/dist/{extensions-AGANCIQA.js → extensions-BTNIUS5J.js} +17 -17
- package/dist/{files-Q2Z4LQZP.js → files-K2MEMV3W.js} +3 -3
- package/dist/{import-MFYCBS4K.js → import-V6QEHMPQ.js} +7 -7
- package/dist/{isolation-7F3MA4G7.js → isolation-F7ABZMDA.js} +2 -2
- package/dist/{join-6SZCA5FX.js → join-4S3KT7NE.js} +1 -1
- package/dist/{list-KHJZJPEJ.js → list-XJB5WII6.js} +1 -1
- package/dist/{login-WY3DADVB.js → login-PHMTLNUF.js} +2 -2
- package/dist/{login-GYTH67ES.js → login-YWD6PUOT.js} +1 -1
- package/dist/{logout-TFZHWNVL.js → logout-BP3R3CAA.js} +2 -2
- package/dist/{logout-YHQLOFLR.js → logout-Q2WICH4V.js} +1 -1
- package/dist/message-delivery-FPIL26WV.js +41 -0
- package/dist/{mind-XIKEPJNS.js → mind-VXV6ZYZY.js} +18 -18
- package/dist/{mind-activity-tracker-RSIWUUJK.js → mind-activity-tracker-HWVFE533.js} +3 -3
- package/dist/{mind-history-WHCNZ6I5.js → mind-history-TDUQFYAG.js} +1 -1
- package/dist/{mind-list-H3HC2ZRG.js → mind-list-2T353Q5G.js} +1 -1
- package/dist/mind-manager-OYOIBGK6.js +33 -0
- package/dist/{mind-profile-7VYRJGFZ.js → mind-profile-2HHR7LZ7.js} +1 -1
- package/dist/mind-service-PR4PR4XI.js +37 -0
- package/dist/{mind-sleep-ZL5ZXFTM.js → mind-sleep-4NXV4J4U.js} +1 -1
- package/dist/{mind-status-ZWULKOUO.js → mind-status-CG66OXDK.js} +1 -1
- package/dist/{mind-wake-HK5ORGUK.js → mind-wake-TNB54DBR.js} +1 -1
- package/dist/{package-2X7UNSTQ.js → package-UWH5IM76.js} +2 -1
- package/dist/{read-CP7MYMJQ.js → read-JLR4NQXU.js} +1 -1
- package/dist/{register-XOBFEMI4.js → register-IQ2M4UO6.js} +1 -1
- package/dist/{registry-RAXNFN7K.js → registry-MDLNPTTI.js} +3 -1
- package/dist/{reject-43AGXB6B.js → reject-N2D4CZND.js} +1 -1
- package/dist/{restart-O5QIYQJT.js → restart-43A5MBGV.js} +1 -1
- package/dist/{sandbox-O3GZTS7J.js → sandbox-E7RWZDVG.js} +7 -3
- package/dist/scheduler-KXUY2I7W.js +31 -0
- package/dist/{seed-I4CNKTKZ.js → seed-YQAOIXIY.js} +1 -1
- package/dist/{seed-check-HZPVFJKZ.js → seed-check-N5ALJBT6.js} +1 -1
- package/dist/{seed-cmd-YTQYWCZF.js → seed-cmd-7KJS4LCA.js} +3 -3
- package/dist/{seed-create-MDBTVADS.js → seed-create-Z7NDRRGP.js} +4 -4
- package/dist/{seed-sprout-N6O5FBPY.js → seed-sprout-PYDMVVUL.js} +8 -8
- package/dist/{send-5XA7LRNB.js → send-KQECN2EL.js} +3 -3
- package/dist/{service-AY5TGWJX.js → service-Q5OVY5AK.js} +4 -4
- package/dist/{service-install-NLGAVTQS.js → service-install-GTDUHP6R.js} +5 -5
- package/dist/{setup-3434PQ5Q.js → setup-IYOUPCIK.js} +6 -2
- package/dist/{setup-47NBOCZL.js → setup-VARJ7N6Z.js} +7 -7
- package/dist/{skill-ICN6Y2ZF.js → skill-E43BI34Y.js} +1 -1
- package/dist/skills/imagegen/scripts/imagegen.ts +1 -1
- package/dist/{skills-YTLBAF32.js → skills-YBCYVOPQ.js} +5 -5
- package/dist/sleep-manager-FJLASHHW.js +35 -0
- package/dist/{spirit-KTBHLULO.js → spirit-NJFAY5CZ.js} +8 -8
- package/dist/{split-5YBEQTBF.js → split-5IBUODEE.js} +1 -1
- package/dist/{sprout-4ZUJUNDQ.js → sprout-B27C2WGE.js} +1 -1
- package/dist/{src-OYWRPLC6.js → src-L2Z7X5UT.js} +5 -8
- package/dist/{src-4LFGGNW7.js → src-TJ7RBU5H.js} +2 -12
- package/dist/{start-LMXXRR3X.js → start-5AYFGNS7.js} +1 -1
- package/dist/{status-VMOZUIZ2.js → status-ECZHHSY5.js} +5 -5
- package/dist/{stop-TWDKVEUX.js → stop-WJ6IG6OK.js} +1 -1
- package/dist/system-chat-P6KVGW4T.js +35 -0
- package/dist/{systems-Y2WZV2K4.js → systems-5MA57Q7G.js} +4 -4
- package/dist/{tailscale-PK3AI5EV.js → tailscale-TIRTGM6E.js} +1 -1
- package/dist/{template-hash-JARTCRGS.js → template-hash-446HHH5V.js} +2 -2
- package/dist/{turn-tracker-SZBSL7LK.js → turn-tracker-W4TASMR7.js} +4 -4
- package/dist/{up-VGVPOB6J.js → up-POJX6S5Y.js} +6 -6
- package/dist/{update-3ANTQO54.js → update-OPR4KU4M.js} +5 -5
- package/dist/{update-check-4O6DKUOF.js → update-check-OG27AL4Z.js} +2 -2
- package/dist/{upgrade-RXFZR5FI.js → upgrade-QB7AHIKX.js} +1 -1
- package/dist/{version-notify-SSNAWZMX.js → version-notify-TCKAX7ZA.js} +19 -19
- package/dist/web-assets/assets/{index-DaUp9iE2.js → index-CrFAsfiE.js} +10 -10
- package/dist/web-assets/assets/{index-DqHSW9Fr.css → index-D7udpBCx.css} +1 -1
- package/dist/web-assets/index.html +2 -2
- package/package.json +2 -1
- package/packages/extensions/plan/skills/plan/scripts/plan-hook.sh +2 -2
- package/templates/_base/.init/.config/hooks/pre-prompt/session-activity.ts +3 -3
- package/templates/_base/.init/.local/hooks/pre-prompt/notices.ts +3 -3
- package/templates/_base/.init/.local/hooks/pre-prompt/session-activity.ts +3 -3
- package/templates/_base/src/lib/daemon-client.ts +1 -1
- package/templates/_base/src/lib/volute-server.ts +1 -1
- package/templates/codex/src/server.ts +8 -2
- package/templates/pi/src/lib/resolve-model.ts +50 -12
- package/dist/chunk-N64Q7FMP.js +0 -70
- package/dist/delivery-manager-EB52CQ5X.js +0 -33
- package/dist/echo-text-QVPS6QDM.js +0 -32
- package/dist/message-delivery-X4CZE2L6.js +0 -41
- package/dist/mind-manager-VU3RGCXD.js +0 -31
- package/dist/mind-service-L7LMMDYJ.js +0 -37
- package/dist/scheduler-SXELVRWO.js +0 -31
- package/dist/sleep-manager-T3AXQB3R.js +0 -35
- package/dist/system-chat-HCPHUQGI.js +0 -35
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
9
9
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
10
10
|
<link href="https://fonts.googleapis.com/css2?family=Averia+Serif+Libre:wght@300;400;700&family=Fira+Code:wght@300;400;500;600&family=Averia+Sans+Libre:ital,wght@0,300;0,400;0,500;0,600;1,400&display=swap" rel="stylesheet" />
|
|
11
|
-
<script type="module" crossorigin src="/assets/index-
|
|
12
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-CrFAsfiE.js"></script>
|
|
12
|
+
<link rel="stylesheet" crossorigin href="/assets/index-D7udpBCx.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body>
|
|
15
15
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "volute",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.42.0",
|
|
4
4
|
"description": "CLI for creating and managing self-modifying AI minds powered by the Claude Agent SDK",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -80,6 +80,7 @@
|
|
|
80
80
|
"libsql": "^0.5.29",
|
|
81
81
|
"replicate": "^1.4.0",
|
|
82
82
|
"telegraf": "^4.16.3",
|
|
83
|
+
"undici": "^6.24.1",
|
|
83
84
|
"zod": "^4.4.3"
|
|
84
85
|
},
|
|
85
86
|
"devDependencies": {
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
# Pre-prompt hook: injects current system plan as session context
|
|
3
3
|
# Queries the daemon API via node's built-in fetch and outputs JSON with additionalContext
|
|
4
4
|
|
|
5
|
-
if [ -z "$VOLUTE_DAEMON_PORT" ] || [ -z "$
|
|
5
|
+
if [ -z "$VOLUTE_DAEMON_PORT" ] || [ -z "$VOLUTE_MIND_TOKEN" ]; then
|
|
6
6
|
echo '{}'
|
|
7
7
|
exit 0
|
|
8
8
|
fi
|
|
9
9
|
|
|
10
10
|
exec node --input-type=module -e '
|
|
11
11
|
const port = process.env.VOLUTE_DAEMON_PORT;
|
|
12
|
-
const token = process.env.
|
|
12
|
+
const token = process.env.VOLUTE_MIND_TOKEN;
|
|
13
13
|
try {
|
|
14
14
|
const res = await fetch(
|
|
15
15
|
`http://localhost:${port}/api/ext/plan/current`,
|
|
@@ -9,8 +9,8 @@ const input = await new Promise<string>((resolve) => {
|
|
|
9
9
|
process.stdin.on("end", () => resolve(data));
|
|
10
10
|
});
|
|
11
11
|
|
|
12
|
-
const { VOLUTE_DAEMON_PORT,
|
|
13
|
-
if (!VOLUTE_DAEMON_PORT || !
|
|
12
|
+
const { VOLUTE_DAEMON_PORT, VOLUTE_MIND_TOKEN, VOLUTE_MIND } = process.env;
|
|
13
|
+
if (!VOLUTE_DAEMON_PORT || !VOLUTE_MIND_TOKEN || !VOLUTE_MIND) {
|
|
14
14
|
console.log("{}");
|
|
15
15
|
process.exit(0);
|
|
16
16
|
}
|
|
@@ -23,7 +23,7 @@ try {
|
|
|
23
23
|
try {
|
|
24
24
|
const res = await fetch(
|
|
25
25
|
`http://127.0.0.1:${VOLUTE_DAEMON_PORT}/api/minds/${VOLUTE_MIND}/history/cross-session?session=${encodeURIComponent(session)}`,
|
|
26
|
-
{ headers: { Authorization: `Bearer ${
|
|
26
|
+
{ headers: { Authorization: `Bearer ${VOLUTE_MIND_TOKEN}` } },
|
|
27
27
|
);
|
|
28
28
|
if (!res.ok) {
|
|
29
29
|
console.log("{}");
|
|
@@ -10,8 +10,8 @@ const input = await new Promise<string>((resolve) => {
|
|
|
10
10
|
process.stdin.on("end", () => resolve(data));
|
|
11
11
|
});
|
|
12
12
|
|
|
13
|
-
const { VOLUTE_DAEMON_PORT,
|
|
14
|
-
if (!VOLUTE_DAEMON_PORT || !
|
|
13
|
+
const { VOLUTE_DAEMON_PORT, VOLUTE_MIND_TOKEN, VOLUTE_MIND } = process.env;
|
|
14
|
+
if (!VOLUTE_DAEMON_PORT || !VOLUTE_MIND_TOKEN || !VOLUTE_MIND) {
|
|
15
15
|
console.log("{}");
|
|
16
16
|
process.exit(0);
|
|
17
17
|
}
|
|
@@ -29,7 +29,7 @@ if (!session) {
|
|
|
29
29
|
try {
|
|
30
30
|
const res = await fetch(
|
|
31
31
|
`http://127.0.0.1:${VOLUTE_DAEMON_PORT}/api/minds/${VOLUTE_MIND}/history/notices?session=${encodeURIComponent(session)}`,
|
|
32
|
-
{ headers: { Authorization: `Bearer ${
|
|
32
|
+
{ headers: { Authorization: `Bearer ${VOLUTE_MIND_TOKEN}` } },
|
|
33
33
|
);
|
|
34
34
|
if (!res.ok) {
|
|
35
35
|
console.log("{}");
|
|
@@ -9,8 +9,8 @@ const input = await new Promise<string>((resolve) => {
|
|
|
9
9
|
process.stdin.on("end", () => resolve(data));
|
|
10
10
|
});
|
|
11
11
|
|
|
12
|
-
const { VOLUTE_DAEMON_PORT,
|
|
13
|
-
if (!VOLUTE_DAEMON_PORT || !
|
|
12
|
+
const { VOLUTE_DAEMON_PORT, VOLUTE_MIND_TOKEN, VOLUTE_MIND } = process.env;
|
|
13
|
+
if (!VOLUTE_DAEMON_PORT || !VOLUTE_MIND_TOKEN || !VOLUTE_MIND) {
|
|
14
14
|
console.log("{}");
|
|
15
15
|
process.exit(0);
|
|
16
16
|
}
|
|
@@ -23,7 +23,7 @@ try {
|
|
|
23
23
|
try {
|
|
24
24
|
const res = await fetch(
|
|
25
25
|
`http://127.0.0.1:${VOLUTE_DAEMON_PORT}/api/minds/${VOLUTE_MIND}/history/cross-session?session=${encodeURIComponent(session)}`,
|
|
26
|
-
{ headers: { Authorization: `Bearer ${
|
|
26
|
+
{ headers: { Authorization: `Bearer ${VOLUTE_MIND_TOKEN}` } },
|
|
27
27
|
);
|
|
28
28
|
if (!res.ok) {
|
|
29
29
|
console.log("{}");
|
|
@@ -3,7 +3,7 @@ import { resolve } from "node:path";
|
|
|
3
3
|
|
|
4
4
|
const port = process.env.VOLUTE_DAEMON_PORT;
|
|
5
5
|
const mind = process.env.VOLUTE_MIND;
|
|
6
|
-
const token = process.env.
|
|
6
|
+
const token = process.env.VOLUTE_MIND_TOKEN;
|
|
7
7
|
|
|
8
8
|
/** Read session from file (fallback for sandbox where env vars don't propagate). */
|
|
9
9
|
function readSessionFile(): string | undefined {
|
|
@@ -63,7 +63,7 @@ function verifySignature(
|
|
|
63
63
|
/** Look up a mind's public key via the daemon API */
|
|
64
64
|
async function fetchPublicKey(fingerprint: string): Promise<string | null> {
|
|
65
65
|
const daemonPort = process.env.VOLUTE_DAEMON_PORT;
|
|
66
|
-
const daemonToken = process.env.
|
|
66
|
+
const daemonToken = process.env.VOLUTE_MIND_TOKEN;
|
|
67
67
|
if (!daemonPort || !daemonToken) return null;
|
|
68
68
|
|
|
69
69
|
try {
|
|
@@ -15,7 +15,13 @@ import { createVoluteServer } from "./lib/volute-server.js";
|
|
|
15
15
|
const { port } = parseArgs();
|
|
16
16
|
const config = loadConfig();
|
|
17
17
|
if (config.logLevel) setLevel(config.logLevel);
|
|
18
|
-
|
|
18
|
+
// The Codex SDK wants a bare model slug, but config.model may carry a pi-style
|
|
19
|
+
// "provider:model" prefix (e.g. "openai-codex:gpt-5.5") when the spirit's model
|
|
20
|
+
// is provider-qualified. Strip the prefix so the SDK gets just the model.
|
|
21
|
+
const model = config.model?.includes(":")
|
|
22
|
+
? config.model.slice(config.model.indexOf(":") + 1)
|
|
23
|
+
: config.model;
|
|
24
|
+
if (config.model) log("server", `using model: ${model}`);
|
|
19
25
|
if (config.reasoningEffort) log("server", `reasoning effort: ${config.reasoningEffort}`);
|
|
20
26
|
|
|
21
27
|
const systemPrompt = loadSystemPrompt();
|
|
@@ -28,7 +34,7 @@ const mind = createMind({
|
|
|
28
34
|
systemPrompt,
|
|
29
35
|
cwd,
|
|
30
36
|
mindDir,
|
|
31
|
-
model
|
|
37
|
+
model,
|
|
32
38
|
reasoningEffort: config.reasoningEffort,
|
|
33
39
|
maxContextTokens: config.compaction?.maxContextTokens,
|
|
34
40
|
});
|
|
@@ -1,21 +1,59 @@
|
|
|
1
1
|
import { getBuiltinModel, getBuiltinModels } from "@earendil-works/pi-ai/providers/all";
|
|
2
2
|
|
|
3
|
+
/** Length of the shared leading prefix of two strings. */
|
|
4
|
+
function sharedPrefixLength(a: string, b: string): number {
|
|
5
|
+
let i = 0;
|
|
6
|
+
while (i < a.length && i < b.length && a[i] === b[i]) i++;
|
|
7
|
+
return i;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Build a usable model for a custom id not in the built-in catalog by cloning a
|
|
12
|
+
* sibling built-in model of the same provider (inherits api/baseUrl/compat/caps)
|
|
13
|
+
* and overriding id/name. Picks the sibling sharing the longest id prefix (same
|
|
14
|
+
* family), breaking ties toward the largest context window. Returns undefined
|
|
15
|
+
* when the provider has no built-in models at all.
|
|
16
|
+
*
|
|
17
|
+
* NOTE: mirrors pickSibling/buildCustomModel in the daemon's
|
|
18
|
+
* packages/daemon/src/lib/ai-service.ts (kept as a copy since the template can't
|
|
19
|
+
* import daemon code); keep the two in sync.
|
|
20
|
+
*/
|
|
21
|
+
function buildCustomModel(provider: string, id: string) {
|
|
22
|
+
const siblings = getBuiltinModels(provider as any);
|
|
23
|
+
if (siblings.length === 0) return undefined;
|
|
24
|
+
let best = siblings[0];
|
|
25
|
+
let bestPrefix = -1;
|
|
26
|
+
for (const s of siblings) {
|
|
27
|
+
const prefix = sharedPrefixLength(s.id, id);
|
|
28
|
+
if (prefix > bestPrefix || (prefix === bestPrefix && s.contextWindow > best.contextWindow)) {
|
|
29
|
+
bestPrefix = prefix;
|
|
30
|
+
best = s;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return { ...best, id, name: id, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 } };
|
|
34
|
+
}
|
|
35
|
+
|
|
3
36
|
export function resolveModel(modelStr: string) {
|
|
4
37
|
const [provider, ...rest] = modelStr.split(":");
|
|
5
38
|
const modelId = rest.join(":");
|
|
6
39
|
|
|
7
|
-
//
|
|
8
|
-
|
|
9
|
-
if (
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
40
|
+
// Exact catalog match wins.
|
|
41
|
+
const exact = getBuiltinModel(provider as any, modelId as any);
|
|
42
|
+
if (exact) return exact;
|
|
43
|
+
|
|
44
|
+
// Not in the catalog: treat the id as authoritative and clone a sibling of the
|
|
45
|
+
// same provider. The daemon only ever writes exact ids here (built-in or an
|
|
46
|
+
// admin-registered custom id), so we deliberately do NOT prefix-match — doing so
|
|
47
|
+
// could silently resolve a selected custom id (e.g. "gpt-5") to a different
|
|
48
|
+
// catalog model that starts with it (e.g. "gpt-5-codex"). Mirrors the daemon's
|
|
49
|
+
// exact→custom ordering in ai-service.ts findModel().
|
|
50
|
+
const custom = buildCustomModel(provider, modelId);
|
|
51
|
+
if (custom) {
|
|
52
|
+
console.warn(
|
|
53
|
+
`[resolve-model] "${modelStr}" is not in the built-in catalog; cloning provider defaults from a sibling model. If this id is a typo it will fail at request time.`,
|
|
18
54
|
);
|
|
55
|
+
return custom;
|
|
19
56
|
}
|
|
20
|
-
|
|
57
|
+
|
|
58
|
+
throw new Error(`Model not found: ${modelStr}\nUnknown provider: ${provider}`);
|
|
21
59
|
}
|
package/dist/chunk-N64Q7FMP.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
voluteSystemDir
|
|
4
|
-
} from "./chunk-VDODEQSJ.js";
|
|
5
|
-
|
|
6
|
-
// packages/daemon/src/lib/config/setup.ts
|
|
7
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs";
|
|
8
|
-
import { resolve } from "path";
|
|
9
|
-
function configPath() {
|
|
10
|
-
return resolve(voluteSystemDir(), "config.json");
|
|
11
|
-
}
|
|
12
|
-
var _cachedConfig = null;
|
|
13
|
-
var CONFIG_CACHE_TTL = 2e3;
|
|
14
|
-
function _resetConfigCache() {
|
|
15
|
-
_cachedConfig = null;
|
|
16
|
-
}
|
|
17
|
-
function readGlobalConfig() {
|
|
18
|
-
if (_cachedConfig && Date.now() - _cachedConfig.ts < CONFIG_CACHE_TTL) {
|
|
19
|
-
return { ..._cachedConfig.config };
|
|
20
|
-
}
|
|
21
|
-
const path = configPath();
|
|
22
|
-
if (!existsSync(path)) {
|
|
23
|
-
_cachedConfig = null;
|
|
24
|
-
return {};
|
|
25
|
-
}
|
|
26
|
-
try {
|
|
27
|
-
const config = JSON.parse(readFileSync(path, "utf-8"));
|
|
28
|
-
_cachedConfig = { config, ts: Date.now() };
|
|
29
|
-
return config;
|
|
30
|
-
} catch (err) {
|
|
31
|
-
console.error(`Failed to parse ${path}: ${err instanceof Error ? err.message : err}`);
|
|
32
|
-
return {};
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
function writeGlobalConfig(config) {
|
|
36
|
-
const path = configPath();
|
|
37
|
-
mkdirSync(voluteSystemDir(), { recursive: true });
|
|
38
|
-
writeFileSync(path, `${JSON.stringify(config, null, 2)}
|
|
39
|
-
`);
|
|
40
|
-
_cachedConfig = { config, ts: Date.now() };
|
|
41
|
-
}
|
|
42
|
-
function isSetupComplete() {
|
|
43
|
-
const config = readGlobalConfig();
|
|
44
|
-
return config.setupCompleted === true;
|
|
45
|
-
}
|
|
46
|
-
function isImagegenEnabled() {
|
|
47
|
-
const config = readGlobalConfig();
|
|
48
|
-
const ig = config.imagegen;
|
|
49
|
-
if (!ig) return false;
|
|
50
|
-
if (ig.enabled === true) return true;
|
|
51
|
-
if (ig.providers && Object.keys(ig.providers).length > 0) return true;
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
54
|
-
function migrateSetupCompleted() {
|
|
55
|
-
const config = readGlobalConfig();
|
|
56
|
-
if (config.setup != null && config.setupCompleted == null) {
|
|
57
|
-
config.setupCompleted = true;
|
|
58
|
-
writeGlobalConfig(config);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export {
|
|
63
|
-
configPath,
|
|
64
|
-
_resetConfigCache,
|
|
65
|
-
readGlobalConfig,
|
|
66
|
-
writeGlobalConfig,
|
|
67
|
-
isSetupComplete,
|
|
68
|
-
isImagegenEnabled,
|
|
69
|
-
migrateSetupCompleted
|
|
70
|
-
};
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
DeliveryManager,
|
|
4
|
-
getDeliveryManager,
|
|
5
|
-
initDeliveryManager,
|
|
6
|
-
tryGetDeliveryManager
|
|
7
|
-
} from "./chunk-W5Z2H3LU.js";
|
|
8
|
-
import "./chunk-6ZAT5PYV.js";
|
|
9
|
-
import "./chunk-YN6ISG7A.js";
|
|
10
|
-
import "./chunk-WSRGS4XP.js";
|
|
11
|
-
import "./chunk-JIGVTFIR.js";
|
|
12
|
-
import "./chunk-2R4JIZCB.js";
|
|
13
|
-
import "./chunk-CU6OFXMM.js";
|
|
14
|
-
import "./chunk-U7UASV36.js";
|
|
15
|
-
import "./chunk-PP5CGT2P.js";
|
|
16
|
-
import "./chunk-GMFCSXWB.js";
|
|
17
|
-
import "./chunk-YATR5BXD.js";
|
|
18
|
-
import "./chunk-Y2XLASFJ.js";
|
|
19
|
-
import "./chunk-4ED2DBNC.js";
|
|
20
|
-
import "./chunk-VK2YD7VJ.js";
|
|
21
|
-
import "./chunk-N64Q7FMP.js";
|
|
22
|
-
import "./chunk-6TPRURK5.js";
|
|
23
|
-
import "./chunk-2RQIIKFC.js";
|
|
24
|
-
import "./chunk-T2TP6ZC6.js";
|
|
25
|
-
import "./chunk-VDODEQSJ.js";
|
|
26
|
-
import "./chunk-MHFAWJCC.js";
|
|
27
|
-
import "./chunk-K3NQKI34.js";
|
|
28
|
-
export {
|
|
29
|
-
DeliveryManager,
|
|
30
|
-
getDeliveryManager,
|
|
31
|
-
initDeliveryManager,
|
|
32
|
-
tryGetDeliveryManager
|
|
33
|
-
};
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
clearEchoTextCache,
|
|
4
|
-
echoTextToChannel
|
|
5
|
-
} from "./chunk-AXNAK3HT.js";
|
|
6
|
-
import "./chunk-CYUNO4BM.js";
|
|
7
|
-
import "./chunk-W5Z2H3LU.js";
|
|
8
|
-
import "./chunk-6ZAT5PYV.js";
|
|
9
|
-
import "./chunk-YN6ISG7A.js";
|
|
10
|
-
import "./chunk-WSRGS4XP.js";
|
|
11
|
-
import "./chunk-JIGVTFIR.js";
|
|
12
|
-
import "./chunk-2R4JIZCB.js";
|
|
13
|
-
import "./chunk-CU6OFXMM.js";
|
|
14
|
-
import "./chunk-U7UASV36.js";
|
|
15
|
-
import "./chunk-PP5CGT2P.js";
|
|
16
|
-
import "./chunk-GMFCSXWB.js";
|
|
17
|
-
import "./chunk-YATR5BXD.js";
|
|
18
|
-
import "./chunk-Y2XLASFJ.js";
|
|
19
|
-
import "./chunk-4ED2DBNC.js";
|
|
20
|
-
import "./chunk-VK2YD7VJ.js";
|
|
21
|
-
import "./chunk-N64Q7FMP.js";
|
|
22
|
-
import "./chunk-6TPRURK5.js";
|
|
23
|
-
import "./chunk-2RQIIKFC.js";
|
|
24
|
-
import "./chunk-T2TP6ZC6.js";
|
|
25
|
-
import "./chunk-LGNUFVMR.js";
|
|
26
|
-
import "./chunk-VDODEQSJ.js";
|
|
27
|
-
import "./chunk-MHFAWJCC.js";
|
|
28
|
-
import "./chunk-K3NQKI34.js";
|
|
29
|
-
export {
|
|
30
|
-
clearEchoTextCache,
|
|
31
|
-
echoTextToChannel
|
|
32
|
-
};
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
deliverMessage,
|
|
4
|
-
linkToolResultToTurn,
|
|
5
|
-
recordInbound,
|
|
6
|
-
recordOutbound,
|
|
7
|
-
resolveSleepAction,
|
|
8
|
-
tagRecentInbound,
|
|
9
|
-
tagUntaggedInbound,
|
|
10
|
-
tagUntaggedOutbound
|
|
11
|
-
} from "./chunk-W5Z2H3LU.js";
|
|
12
|
-
import "./chunk-6ZAT5PYV.js";
|
|
13
|
-
import "./chunk-YN6ISG7A.js";
|
|
14
|
-
import "./chunk-WSRGS4XP.js";
|
|
15
|
-
import "./chunk-JIGVTFIR.js";
|
|
16
|
-
import "./chunk-2R4JIZCB.js";
|
|
17
|
-
import "./chunk-CU6OFXMM.js";
|
|
18
|
-
import "./chunk-U7UASV36.js";
|
|
19
|
-
import "./chunk-PP5CGT2P.js";
|
|
20
|
-
import "./chunk-GMFCSXWB.js";
|
|
21
|
-
import "./chunk-YATR5BXD.js";
|
|
22
|
-
import "./chunk-Y2XLASFJ.js";
|
|
23
|
-
import "./chunk-4ED2DBNC.js";
|
|
24
|
-
import "./chunk-VK2YD7VJ.js";
|
|
25
|
-
import "./chunk-N64Q7FMP.js";
|
|
26
|
-
import "./chunk-6TPRURK5.js";
|
|
27
|
-
import "./chunk-2RQIIKFC.js";
|
|
28
|
-
import "./chunk-T2TP6ZC6.js";
|
|
29
|
-
import "./chunk-VDODEQSJ.js";
|
|
30
|
-
import "./chunk-MHFAWJCC.js";
|
|
31
|
-
import "./chunk-K3NQKI34.js";
|
|
32
|
-
export {
|
|
33
|
-
deliverMessage,
|
|
34
|
-
linkToolResultToTurn,
|
|
35
|
-
recordInbound,
|
|
36
|
-
recordOutbound,
|
|
37
|
-
resolveSleepAction,
|
|
38
|
-
tagRecentInbound,
|
|
39
|
-
tagUntaggedInbound,
|
|
40
|
-
tagUntaggedOutbound
|
|
41
|
-
};
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
MindManager,
|
|
4
|
-
getMindManager,
|
|
5
|
-
initMindManager
|
|
6
|
-
} from "./chunk-W5Z2H3LU.js";
|
|
7
|
-
import "./chunk-6ZAT5PYV.js";
|
|
8
|
-
import "./chunk-YN6ISG7A.js";
|
|
9
|
-
import "./chunk-WSRGS4XP.js";
|
|
10
|
-
import "./chunk-JIGVTFIR.js";
|
|
11
|
-
import "./chunk-2R4JIZCB.js";
|
|
12
|
-
import "./chunk-CU6OFXMM.js";
|
|
13
|
-
import "./chunk-U7UASV36.js";
|
|
14
|
-
import "./chunk-PP5CGT2P.js";
|
|
15
|
-
import "./chunk-GMFCSXWB.js";
|
|
16
|
-
import "./chunk-YATR5BXD.js";
|
|
17
|
-
import "./chunk-Y2XLASFJ.js";
|
|
18
|
-
import "./chunk-4ED2DBNC.js";
|
|
19
|
-
import "./chunk-VK2YD7VJ.js";
|
|
20
|
-
import "./chunk-N64Q7FMP.js";
|
|
21
|
-
import "./chunk-6TPRURK5.js";
|
|
22
|
-
import "./chunk-2RQIIKFC.js";
|
|
23
|
-
import "./chunk-T2TP6ZC6.js";
|
|
24
|
-
import "./chunk-VDODEQSJ.js";
|
|
25
|
-
import "./chunk-MHFAWJCC.js";
|
|
26
|
-
import "./chunk-K3NQKI34.js";
|
|
27
|
-
export {
|
|
28
|
-
MindManager,
|
|
29
|
-
getMindManager,
|
|
30
|
-
initMindManager
|
|
31
|
-
};
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
sleepMind,
|
|
4
|
-
startMindFull,
|
|
5
|
-
startSpiritFull,
|
|
6
|
-
stopMindFull,
|
|
7
|
-
stopSpiritFull,
|
|
8
|
-
wakeMind
|
|
9
|
-
} from "./chunk-W5Z2H3LU.js";
|
|
10
|
-
import "./chunk-6ZAT5PYV.js";
|
|
11
|
-
import "./chunk-YN6ISG7A.js";
|
|
12
|
-
import "./chunk-WSRGS4XP.js";
|
|
13
|
-
import "./chunk-JIGVTFIR.js";
|
|
14
|
-
import "./chunk-2R4JIZCB.js";
|
|
15
|
-
import "./chunk-CU6OFXMM.js";
|
|
16
|
-
import "./chunk-U7UASV36.js";
|
|
17
|
-
import "./chunk-PP5CGT2P.js";
|
|
18
|
-
import "./chunk-GMFCSXWB.js";
|
|
19
|
-
import "./chunk-YATR5BXD.js";
|
|
20
|
-
import "./chunk-Y2XLASFJ.js";
|
|
21
|
-
import "./chunk-4ED2DBNC.js";
|
|
22
|
-
import "./chunk-VK2YD7VJ.js";
|
|
23
|
-
import "./chunk-N64Q7FMP.js";
|
|
24
|
-
import "./chunk-6TPRURK5.js";
|
|
25
|
-
import "./chunk-2RQIIKFC.js";
|
|
26
|
-
import "./chunk-T2TP6ZC6.js";
|
|
27
|
-
import "./chunk-VDODEQSJ.js";
|
|
28
|
-
import "./chunk-MHFAWJCC.js";
|
|
29
|
-
import "./chunk-K3NQKI34.js";
|
|
30
|
-
export {
|
|
31
|
-
sleepMind,
|
|
32
|
-
startMindFull,
|
|
33
|
-
startSpiritFull,
|
|
34
|
-
stopMindFull,
|
|
35
|
-
stopSpiritFull,
|
|
36
|
-
wakeMind
|
|
37
|
-
};
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
Scheduler,
|
|
4
|
-
getScheduler,
|
|
5
|
-
initScheduler
|
|
6
|
-
} from "./chunk-W5Z2H3LU.js";
|
|
7
|
-
import "./chunk-6ZAT5PYV.js";
|
|
8
|
-
import "./chunk-YN6ISG7A.js";
|
|
9
|
-
import "./chunk-WSRGS4XP.js";
|
|
10
|
-
import "./chunk-JIGVTFIR.js";
|
|
11
|
-
import "./chunk-2R4JIZCB.js";
|
|
12
|
-
import "./chunk-CU6OFXMM.js";
|
|
13
|
-
import "./chunk-U7UASV36.js";
|
|
14
|
-
import "./chunk-PP5CGT2P.js";
|
|
15
|
-
import "./chunk-GMFCSXWB.js";
|
|
16
|
-
import "./chunk-YATR5BXD.js";
|
|
17
|
-
import "./chunk-Y2XLASFJ.js";
|
|
18
|
-
import "./chunk-4ED2DBNC.js";
|
|
19
|
-
import "./chunk-VK2YD7VJ.js";
|
|
20
|
-
import "./chunk-N64Q7FMP.js";
|
|
21
|
-
import "./chunk-6TPRURK5.js";
|
|
22
|
-
import "./chunk-2RQIIKFC.js";
|
|
23
|
-
import "./chunk-T2TP6ZC6.js";
|
|
24
|
-
import "./chunk-VDODEQSJ.js";
|
|
25
|
-
import "./chunk-MHFAWJCC.js";
|
|
26
|
-
import "./chunk-K3NQKI34.js";
|
|
27
|
-
export {
|
|
28
|
-
Scheduler,
|
|
29
|
-
getScheduler,
|
|
30
|
-
initScheduler
|
|
31
|
-
};
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
SleepManager,
|
|
4
|
-
getSleepManager,
|
|
5
|
-
getSleepManagerIfReady,
|
|
6
|
-
initSleepManager,
|
|
7
|
-
matchesGlob
|
|
8
|
-
} from "./chunk-W5Z2H3LU.js";
|
|
9
|
-
import "./chunk-6ZAT5PYV.js";
|
|
10
|
-
import "./chunk-YN6ISG7A.js";
|
|
11
|
-
import "./chunk-WSRGS4XP.js";
|
|
12
|
-
import "./chunk-JIGVTFIR.js";
|
|
13
|
-
import "./chunk-2R4JIZCB.js";
|
|
14
|
-
import "./chunk-CU6OFXMM.js";
|
|
15
|
-
import "./chunk-U7UASV36.js";
|
|
16
|
-
import "./chunk-PP5CGT2P.js";
|
|
17
|
-
import "./chunk-GMFCSXWB.js";
|
|
18
|
-
import "./chunk-YATR5BXD.js";
|
|
19
|
-
import "./chunk-Y2XLASFJ.js";
|
|
20
|
-
import "./chunk-4ED2DBNC.js";
|
|
21
|
-
import "./chunk-VK2YD7VJ.js";
|
|
22
|
-
import "./chunk-N64Q7FMP.js";
|
|
23
|
-
import "./chunk-6TPRURK5.js";
|
|
24
|
-
import "./chunk-2RQIIKFC.js";
|
|
25
|
-
import "./chunk-T2TP6ZC6.js";
|
|
26
|
-
import "./chunk-VDODEQSJ.js";
|
|
27
|
-
import "./chunk-MHFAWJCC.js";
|
|
28
|
-
import "./chunk-K3NQKI34.js";
|
|
29
|
-
export {
|
|
30
|
-
SleepManager,
|
|
31
|
-
getSleepManager,
|
|
32
|
-
getSleepManagerIfReady,
|
|
33
|
-
initSleepManager,
|
|
34
|
-
matchesGlob
|
|
35
|
-
};
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
ensureSystemDM,
|
|
4
|
-
generateSystemReply,
|
|
5
|
-
resetSystemDMCache,
|
|
6
|
-
sendSystemMessage,
|
|
7
|
-
sendSystemMessageDirect
|
|
8
|
-
} from "./chunk-W5Z2H3LU.js";
|
|
9
|
-
import "./chunk-6ZAT5PYV.js";
|
|
10
|
-
import "./chunk-YN6ISG7A.js";
|
|
11
|
-
import "./chunk-WSRGS4XP.js";
|
|
12
|
-
import "./chunk-JIGVTFIR.js";
|
|
13
|
-
import "./chunk-2R4JIZCB.js";
|
|
14
|
-
import "./chunk-CU6OFXMM.js";
|
|
15
|
-
import "./chunk-U7UASV36.js";
|
|
16
|
-
import "./chunk-PP5CGT2P.js";
|
|
17
|
-
import "./chunk-GMFCSXWB.js";
|
|
18
|
-
import "./chunk-YATR5BXD.js";
|
|
19
|
-
import "./chunk-Y2XLASFJ.js";
|
|
20
|
-
import "./chunk-4ED2DBNC.js";
|
|
21
|
-
import "./chunk-VK2YD7VJ.js";
|
|
22
|
-
import "./chunk-N64Q7FMP.js";
|
|
23
|
-
import "./chunk-6TPRURK5.js";
|
|
24
|
-
import "./chunk-2RQIIKFC.js";
|
|
25
|
-
import "./chunk-T2TP6ZC6.js";
|
|
26
|
-
import "./chunk-VDODEQSJ.js";
|
|
27
|
-
import "./chunk-MHFAWJCC.js";
|
|
28
|
-
import "./chunk-K3NQKI34.js";
|
|
29
|
-
export {
|
|
30
|
-
ensureSystemDM,
|
|
31
|
-
generateSystemReply,
|
|
32
|
-
resetSystemDMCache,
|
|
33
|
-
sendSystemMessage,
|
|
34
|
-
sendSystemMessageDirect
|
|
35
|
-
};
|