volute 0.54.0 → 0.55.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/{activity-events-LQII6PZS.js → activity-events-TFAJBNBW.js} +2 -2
- package/dist/{ai-service-YW5SWCSB.js → ai-service-KEK2V3AP.js} +2 -2
- package/dist/{auth-KRDSM55Q.js → auth-Y27LTNZK.js} +3 -3
- package/dist/auto-upgrade-2MZF7NG3.js +46 -0
- package/dist/{avatar-image-52WGXLHV.js → avatar-image-SN576P45.js} +2 -2
- package/dist/{backup-QRNX6RK7.js → backup-GDCWH6MC.js} +2 -2
- package/dist/{channels-CKCY64TD.js → channels-AFJWGX7W.js} +15 -15
- package/dist/{chat-ZUGNL5GS.js → chat-HVPOZK3O.js} +3 -3
- package/dist/{chunk-QUSMYGNQ.js → chunk-2674KIGI.js} +1 -0
- package/dist/chunk-2GATCSZK.js +520 -0
- package/dist/{chunk-LKUGUQUW.js → chunk-3SFKY4GI.js} +4 -4
- package/dist/{chunk-CLCHOXLR.js → chunk-45QTYKQQ.js} +4 -4
- package/dist/{chunk-PPSN2MLC.js → chunk-4VAQKLMU.js} +7 -4
- package/dist/{chunk-TPX6E6PL.js → chunk-6HBGUPBA.js} +2 -2
- package/dist/{chunk-UFTDRTCP.js → chunk-7AA4T2RT.js} +2 -2
- package/dist/{chunk-56IT2ZXF.js → chunk-BP2X5AIK.js} +8 -14
- package/dist/{chunk-444RR3YF.js → chunk-CKOA4LWV.js} +11 -11
- package/dist/{chunk-HKGYZVWN.js → chunk-DUV4EMNW.js} +37 -3
- package/dist/{chunk-CV6BNGFK.js → chunk-FSXPPOPM.js} +3 -3
- package/dist/{chunk-3LHUXY3E.js → chunk-FZUPIS3T.js} +3 -3
- package/dist/{chunk-L7BKTZ5U.js → chunk-G3XAB4DK.js} +1 -1
- package/dist/{chunk-WHL6PKYP.js → chunk-HLWQ3P3R.js} +49 -45
- package/dist/{chunk-OAYY3WF3.js → chunk-HTSWDOJE.js} +0 -11
- package/dist/{chunk-OYF25B62.js → chunk-IR2FW4W7.js} +1 -1
- package/dist/{chunk-ICXY54ZC.js → chunk-IT4GEFDH.js} +1 -1
- package/dist/{chunk-F6D766VQ.js → chunk-KS62IHE2.js} +1 -1
- package/dist/{chunk-LNNI3MS4.js → chunk-MNKPAAQF.js} +9 -2
- package/dist/{chunk-LGXVGIWN.js → chunk-NCRG4SBR.js} +189 -55
- package/dist/{chunk-I7U5EEZC.js → chunk-NM5FDH4T.js} +1 -1
- package/dist/{chunk-7LT3YZUR.js → chunk-OFU6WJJZ.js} +1 -1
- package/dist/{chunk-OT5SXF7L.js → chunk-OUGD5L5U.js} +26 -12
- package/dist/{chunk-X67BDDZR.js → chunk-P3GXOT2X.js} +48 -2
- package/dist/{chunk-U54PJPTB.js → chunk-PRZUBJ4K.js} +1 -1
- package/dist/{chunk-OGPVJ53N.js → chunk-QVS3C4DK.js} +2 -2
- package/dist/{chunk-VDUCLVZI.js → chunk-TMTAHKYP.js} +27 -25
- package/dist/{chunk-RGHF3OK5.js → chunk-UEZC5MNB.js} +13 -13
- package/dist/{chunk-ATZF2RNJ.js → chunk-VTFXZPC3.js} +12 -12
- package/dist/{chunk-YSRYCS3N.js → chunk-W3OIPJPB.js} +1 -1
- package/dist/{chunk-5Y54AE3L.js → chunk-XAG53RWY.js} +1 -1
- package/dist/{chunk-HTRSSOHY.js → chunk-YU5EYQAE.js} +1 -1
- package/dist/{chunk-EGV6R6UF.js → chunk-Z7TNIIHW.js} +3 -1
- package/dist/cli.js +8 -8
- package/dist/{cloud-sync-52YNJRMR.js → cloud-sync-FM73SVFJ.js} +20 -20
- package/dist/{conversations-ZL6PHROD.js → conversations-FH3ODBL7.js} +3 -3
- package/dist/{create-G2RIKQYK.js → create-P75ZFTVN.js} +1 -1
- package/dist/{daemon-restart-QWHN5VMU.js → daemon-restart-JQMMMITM.js} +1 -1
- package/dist/daemon.js +187 -159
- package/dist/{db-I4EH5SLF.js → db-JH3NTERX.js} +17 -3
- package/dist/{delivery-manager-7R2YIQ2W.js → delivery-manager-H23Q23N7.js} +15 -15
- package/dist/{delivery-notices-RZQ6GONP.js → delivery-notices-S7TKOACE.js} +5 -5
- package/dist/{delivery-router-QS4NLJR6.js → delivery-router-KHBVEVVL.js} +2 -2
- package/dist/echo-text-ULEIFJJF.js +40 -0
- package/dist/{extensions-QT65JGV6.js → extensions-QD22GXZD.js} +24 -20
- package/dist/{files-PCKBQHAY.js → files-DUGRXN6V.js} +2 -2
- package/dist/{import-DB2KULRO.js → import-RDDUGGFI.js} +3 -3
- package/dist/message-delivery-LU4EP244.js +46 -0
- package/dist/migrate-init-infrastructure-Z72UJ5NT.js +44 -0
- package/dist/{migrate-name-placeholder-C7NCNLWF.js → migrate-name-placeholder-64AEAWPE.js} +1 -1
- package/dist/{migrate-thread-config-EQSEP2XG.js → migrate-thread-config-SVF2M3D3.js} +1 -1
- package/dist/{mind-CT6ANXK4.js → mind-BARCLI7O.js} +4 -4
- package/dist/{mind-activity-tracker-QF6DCX2X.js → mind-activity-tracker-UT23RGBF.js} +3 -3
- package/dist/mind-service-ZJCUBAUL.js +48 -0
- package/dist/{package-F6S5NHY2.js → package-AUDBDKAO.js} +10 -12
- package/dist/{prompts-JECJIFPQ.js → prompts-MOBF3TMO.js} +1 -1
- package/dist/{sandbox-NNWCTHRI.js → sandbox-VI7XWBIA.js} +2 -2
- package/dist/scheduler-GLINVC2B.js +27 -0
- package/dist/{seed-DRKAP3XV.js → seed-5JGR7ZRA.js} +1 -1
- package/dist/{seed-cmd-6IMTO3LG.js → seed-cmd-M6A7N7F3.js} +2 -2
- package/dist/{seed-create-VNLDYRFK.js → seed-create-TGFZW4IO.js} +3 -3
- package/dist/{seed-readiness-H5TTPAQH.js → seed-readiness-XBH2MUNA.js} +2 -2
- package/dist/{seed-sprout-PPGYGK4G.js → seed-sprout-3IC5ZVTI.js} +7 -7
- package/dist/{send-UXUQKO4N.js → send-DHYBAYK4.js} +2 -2
- package/dist/{setup-YUAQMDVZ.js → setup-6KAH3GRW.js} +1 -1
- package/dist/skills/volute-mind/SKILL.md +8 -0
- package/dist/{skills-GMQ5UIIW.js → skills-LKQCYFVP.js} +2 -2
- package/dist/sleep-manager-Q3ITFNOJ.js +42 -0
- package/dist/{spirit-Q5VGFWUI.js → spirit-FKXMGO3N.js} +5 -5
- package/dist/spirit-availability-5R2WYSWF.js +43 -0
- package/dist/{sprout-PMTRL7QN.js → sprout-VEW3CUNX.js} +1 -1
- package/dist/{src-H3UCOP6B.js → src-246GSX7A.js} +5 -2
- package/dist/src-LOUB3WPR.js +4189 -0
- package/dist/{system-events-Q7IVZ5T4.js → system-events-ZYOCYAO2.js} +5 -3
- package/dist/{tailscale-KHNZFC7L.js → tailscale-F2IMBILZ.js} +1 -1
- package/dist/{template-hash-YKWMVYMM.js → template-hash-RJRMF6DT.js} +2 -2
- package/dist/{template-staleness-PY2CULH6.js → template-staleness-IBD722PN.js} +4 -4
- package/dist/{turn-tracker-HZDPMSCC.js → turn-tracker-BE34OI6O.js} +7 -7
- package/dist/{up-XZDSJVMU.js → up-J47J5JRB.js} +1 -1
- package/dist/variant-cleanup-JGJZ5KB4.js +24 -0
- package/dist/{version-notify-VNVFX6UP.js → version-notify-KIXYNHJC.js} +11 -11
- package/dist/web-assets/assets/{index-CwtxGwe_.js → index-CoU1eUKE.js} +15 -15
- package/dist/web-assets/assets/index-hPn_fkz3.css +1 -0
- package/dist/web-assets/index.html +2 -2
- package/package.json +10 -12
- package/packages/extensions/intentions/dist/ui/assets/index-Bl5KEcli.js +67 -0
- package/packages/extensions/intentions/dist/ui/index.html +1 -1
- package/packages/extensions/pages/dist/ui/assets/index-BKxVQkA9.css +1 -0
- package/packages/extensions/pages/dist/ui/assets/index-BMt6sStP.js +68 -0
- package/packages/extensions/pages/dist/ui/index.html +2 -2
- package/packages/extensions/pages/skills/pages/SKILL.md +123 -4
- package/templates/_base/.init/.config/prompts.json +0 -1
- package/templates/_base/.init/.local/hooks/pre-prompt/turn-context.ts +30 -0
- package/templates/_base/src/lib/codex-session-seed.ts +6 -55
- package/templates/_base/src/lib/pi-session-seed.ts +8 -57
- package/templates/_base/src/lib/seed-note.ts +4 -4
- package/templates/_base/src/lib/session-seed.ts +8 -53
- package/templates/_base/src/lib/startup.ts +0 -20
- package/templates/claude/package.json +2 -2
- package/templates/claude/src/agent.ts +34 -102
- package/templates/claude/src/lib/hooks/pre-compact.ts +6 -6
- package/templates/claude/src/server.ts +0 -1
- package/templates/codex/package.json +2 -2
- package/templates/codex/src/agent.ts +23 -89
- package/templates/pi/package.json +1 -1
- package/templates/pi/src/agent.ts +26 -93
- package/templates/pi/src/server.ts +0 -1
- package/dist/auto-upgrade-HEVZKPTF.js +0 -46
- package/dist/chunk-AAPNU7GA.js +0 -168
- package/dist/echo-text-73CYQRL7.js +0 -40
- package/dist/message-delivery-TRKT4T2P.js +0 -46
- package/dist/mind-service-7EFIJ3ZA.js +0 -48
- package/dist/scheduler-73Q4MQ7Y.js +0 -27
- package/dist/sleep-manager-KHI65FEX.js +0 -42
- package/dist/spirit-availability-G5FMWKRH.js +0 -43
- package/dist/src-3FIW7DLH.js +0 -2376
- package/dist/src-LTTQVN2Z.js +0 -832
- package/dist/variant-cleanup-QHGGY7ND.js +0 -24
- package/dist/web-assets/assets/index-DhM1yYRN.css +0 -1
- package/packages/extensions/intentions/dist/ui/assets/index-CQz4aceM.js +0 -67
- package/packages/extensions/notes/dist/ui/assets/index-BBs8pyel.js +0 -67
- package/packages/extensions/notes/dist/ui/assets/index-D3cdui42.css +0 -1
- package/packages/extensions/notes/dist/ui/index.html +0 -14
- package/packages/extensions/notes/skills/notes/SKILL.md +0 -90
- package/packages/extensions/pages/dist/ui/assets/index-B589e8Xe.js +0 -2
- package/packages/extensions/pages/dist/ui/assets/index-BuXnE-rb.css +0 -1
- /package/dist/{chunk-ZNHL5KQJ.js → chunk-OKM67ZWH.js} +0 -0
|
@@ -6,23 +6,23 @@ import {
|
|
|
6
6
|
getMindToken,
|
|
7
7
|
loadJsonMap,
|
|
8
8
|
saveJsonMapAsync
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import {
|
|
11
|
-
MIND_LEVEL_THREAD,
|
|
12
|
-
deliverEvent,
|
|
13
|
-
recordNotice
|
|
14
|
-
} from "./chunk-HKGYZVWN.js";
|
|
15
|
-
import {
|
|
16
|
-
getPrompt
|
|
17
|
-
} from "./chunk-OAYY3WF3.js";
|
|
9
|
+
} from "./chunk-HLWQ3P3R.js";
|
|
18
10
|
import {
|
|
19
11
|
isSandboxEnabled,
|
|
20
12
|
wrapForSandbox
|
|
21
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-XAG53RWY.js";
|
|
22
14
|
import {
|
|
23
15
|
readVoluteConfig,
|
|
24
16
|
writeVoluteConfig
|
|
25
17
|
} from "./chunk-WCFSBH33.js";
|
|
18
|
+
import {
|
|
19
|
+
MIND_LEVEL_THREAD,
|
|
20
|
+
deliverEvent,
|
|
21
|
+
recordNotice
|
|
22
|
+
} from "./chunk-DUV4EMNW.js";
|
|
23
|
+
import {
|
|
24
|
+
getPrompt
|
|
25
|
+
} from "./chunk-HTSWDOJE.js";
|
|
26
26
|
import {
|
|
27
27
|
exec
|
|
28
28
|
} from "./chunk-OIOW3FPT.js";
|
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
} from "./chunk-GLM7TVWP.js";
|
|
32
32
|
import {
|
|
33
33
|
logger_default
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-2674KIGI.js";
|
|
35
35
|
import {
|
|
36
36
|
findMind,
|
|
37
37
|
mindDir,
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
|
+
parseDbTimestamp,
|
|
3
4
|
publish
|
|
4
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-MNKPAAQF.js";
|
|
5
6
|
import {
|
|
6
7
|
logger_default
|
|
7
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-2674KIGI.js";
|
|
8
9
|
import {
|
|
9
10
|
findMind,
|
|
10
11
|
getBaseName,
|
|
@@ -257,7 +258,7 @@ async function deliverEvent(mind, input) {
|
|
|
257
258
|
return { id: eventId, delivered: false };
|
|
258
259
|
}
|
|
259
260
|
const baseName = await getBaseName(mind);
|
|
260
|
-
const { getSleepManagerIfReady } = await import("./sleep-manager-
|
|
261
|
+
const { getSleepManagerIfReady } = await import("./sleep-manager-Q3ITFNOJ.js");
|
|
261
262
|
const sleepManager = getSleepManagerIfReady();
|
|
262
263
|
const sleeping = !input.force && sleepManager?.isSleeping(baseName);
|
|
263
264
|
const behavior = input.whileSleeping ?? "queue";
|
|
@@ -523,6 +524,38 @@ async function hasUndeliveredEvent(mind, reason) {
|
|
|
523
524
|
).limit(1).get();
|
|
524
525
|
return row != null;
|
|
525
526
|
}
|
|
527
|
+
var STRANDED_EVENT_TURN_THRESHOLD = 10;
|
|
528
|
+
async function findStrandedEventMinds(turnThreshold = STRANDED_EVENT_TURN_THRESHOLD) {
|
|
529
|
+
const db = await getDb();
|
|
530
|
+
const groups = await db.select({
|
|
531
|
+
mind: systemEvents.mind,
|
|
532
|
+
pending: sql`count(*)`,
|
|
533
|
+
oldestId: sql`min(${systemEvents.id})`
|
|
534
|
+
}).from(systemEvents).where(and(eq(systemEvents.delivery, "next-turn"), isNull(systemEvents.delivered_at))).groupBy(systemEvents.mind);
|
|
535
|
+
const stranded = [];
|
|
536
|
+
for (const group of groups) {
|
|
537
|
+
const oldest = await db.select({ created_at: systemEvents.created_at }).from(systemEvents).where(eq(systemEvents.id, group.oldestId)).get();
|
|
538
|
+
if (!oldest) continue;
|
|
539
|
+
const turnCount = await db.select({ n: sql`count(*)` }).from(turns).where(
|
|
540
|
+
and(
|
|
541
|
+
eq(turns.mind, group.mind),
|
|
542
|
+
eq(turns.status, "complete"),
|
|
543
|
+
gt(turns.created_at, oldest.created_at)
|
|
544
|
+
)
|
|
545
|
+
).get();
|
|
546
|
+
const turnsSince = turnCount?.n ?? 0;
|
|
547
|
+
if (turnsSince < turnThreshold) continue;
|
|
548
|
+
stranded.push({
|
|
549
|
+
mind: group.mind,
|
|
550
|
+
pending: group.pending,
|
|
551
|
+
turnsSince,
|
|
552
|
+
ageHours: Math.round(
|
|
553
|
+
(Date.now() - parseDbTimestamp(oldest.created_at).getTime()) / (60 * 60 * 1e3)
|
|
554
|
+
)
|
|
555
|
+
});
|
|
556
|
+
}
|
|
557
|
+
return stranded;
|
|
558
|
+
}
|
|
526
559
|
async function listEvents(mind, limit = 100, before) {
|
|
527
560
|
const db = await getDb();
|
|
528
561
|
const conditions = [eq(systemEvents.mind, mind)];
|
|
@@ -580,6 +613,7 @@ export {
|
|
|
580
613
|
latestFailureEvent,
|
|
581
614
|
latestEvent,
|
|
582
615
|
hasUndeliveredEvent,
|
|
616
|
+
findStrandedEventMinds,
|
|
583
617
|
listEvents,
|
|
584
618
|
recordReflection,
|
|
585
619
|
captureReflection
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
computeTemplateHash
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-YU5EYQAE.js";
|
|
5
5
|
import {
|
|
6
6
|
composeTemplate,
|
|
7
7
|
findTemplatesRoot,
|
|
8
8
|
listFiles
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-P3GXOT2X.js";
|
|
10
10
|
import {
|
|
11
11
|
logger_default
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-2674KIGI.js";
|
|
13
13
|
import {
|
|
14
14
|
mindDir
|
|
15
15
|
} from "./chunk-H6X6CKDN.js";
|
|
@@ -4,13 +4,13 @@ import {
|
|
|
4
4
|
localHM,
|
|
5
5
|
parseMeta,
|
|
6
6
|
recordNotice
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-DUV4EMNW.js";
|
|
8
8
|
import {
|
|
9
9
|
getPrompt
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-HTSWDOJE.js";
|
|
11
11
|
import {
|
|
12
12
|
logger_default
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-2674KIGI.js";
|
|
14
14
|
import {
|
|
15
15
|
findMind,
|
|
16
16
|
getDb
|
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
import {
|
|
3
3
|
clearMind,
|
|
4
4
|
summarizeOrphanedTurns
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-BP2X5AIK.js";
|
|
6
|
+
import {
|
|
7
|
+
isSandboxEnabled,
|
|
8
|
+
wrapForSandbox
|
|
9
|
+
} from "./chunk-XAG53RWY.js";
|
|
6
10
|
import {
|
|
7
11
|
deliverEvent,
|
|
8
12
|
recordNotice
|
|
9
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-DUV4EMNW.js";
|
|
10
14
|
import {
|
|
11
15
|
getPrompt
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import {
|
|
14
|
-
isSandboxEnabled,
|
|
15
|
-
wrapForSandbox
|
|
16
|
-
} from "./chunk-5Y54AE3L.js";
|
|
16
|
+
} from "./chunk-HTSWDOJE.js";
|
|
17
17
|
import {
|
|
18
18
|
chownMindDir,
|
|
19
19
|
isIsolationEnabled,
|
|
@@ -28,10 +28,10 @@ import {
|
|
|
28
28
|
resolveApiKey,
|
|
29
29
|
resolveOAuthCredentials,
|
|
30
30
|
resolveProviderKey
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-Z7TNIIHW.js";
|
|
32
32
|
import {
|
|
33
33
|
logger_default
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-2674KIGI.js";
|
|
35
35
|
import {
|
|
36
36
|
findMind,
|
|
37
37
|
getSystemName,
|
|
@@ -44,6 +44,31 @@ import {
|
|
|
44
44
|
voluteSystemDir
|
|
45
45
|
} from "./chunk-H6X6CKDN.js";
|
|
46
46
|
|
|
47
|
+
// packages/daemon/src/lib/daemon/mind-tokens.ts
|
|
48
|
+
import { randomUUID } from "crypto";
|
|
49
|
+
var tokenToMind = /* @__PURE__ */ new Map();
|
|
50
|
+
var mindToToken = /* @__PURE__ */ new Map();
|
|
51
|
+
function generateMindToken(mindName) {
|
|
52
|
+
revokeMindToken(mindName);
|
|
53
|
+
const token = randomUUID();
|
|
54
|
+
tokenToMind.set(token, mindName);
|
|
55
|
+
mindToToken.set(mindName, token);
|
|
56
|
+
return token;
|
|
57
|
+
}
|
|
58
|
+
function revokeMindToken(mindName) {
|
|
59
|
+
const token = mindToToken.get(mindName);
|
|
60
|
+
if (token) {
|
|
61
|
+
tokenToMind.delete(token);
|
|
62
|
+
mindToToken.delete(mindName);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function resolveMindToken(token) {
|
|
66
|
+
return tokenToMind.get(token) ?? null;
|
|
67
|
+
}
|
|
68
|
+
function getMindToken(mindName) {
|
|
69
|
+
return mindToToken.get(mindName) ?? null;
|
|
70
|
+
}
|
|
71
|
+
|
|
47
72
|
// packages/daemon/src/lib/util/json-state.ts
|
|
48
73
|
import { existsSync, readFileSync, unlinkSync, writeFileSync } from "fs";
|
|
49
74
|
import { writeFile } from "fs/promises";
|
|
@@ -116,6 +141,9 @@ var RotatingLog = class extends Writable {
|
|
|
116
141
|
}
|
|
117
142
|
this.stream = createWriteStream(path, { flags: "a" });
|
|
118
143
|
}
|
|
144
|
+
path;
|
|
145
|
+
maxSize;
|
|
146
|
+
maxFiles;
|
|
119
147
|
stream;
|
|
120
148
|
size;
|
|
121
149
|
async rotateAsync() {
|
|
@@ -286,31 +314,6 @@ async function syncProviderToMinds(provider, deps = {}) {
|
|
|
286
314
|
}
|
|
287
315
|
}
|
|
288
316
|
|
|
289
|
-
// packages/daemon/src/lib/daemon/mind-tokens.ts
|
|
290
|
-
import { randomUUID } from "crypto";
|
|
291
|
-
var tokenToMind = /* @__PURE__ */ new Map();
|
|
292
|
-
var mindToToken = /* @__PURE__ */ new Map();
|
|
293
|
-
function generateMindToken(mindName) {
|
|
294
|
-
revokeMindToken(mindName);
|
|
295
|
-
const token = randomUUID();
|
|
296
|
-
tokenToMind.set(token, mindName);
|
|
297
|
-
mindToToken.set(mindName, token);
|
|
298
|
-
return token;
|
|
299
|
-
}
|
|
300
|
-
function revokeMindToken(mindName) {
|
|
301
|
-
const token = mindToToken.get(mindName);
|
|
302
|
-
if (token) {
|
|
303
|
-
tokenToMind.delete(token);
|
|
304
|
-
mindToToken.delete(mindName);
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
function resolveMindToken(token) {
|
|
308
|
-
return tokenToMind.get(token) ?? null;
|
|
309
|
-
}
|
|
310
|
-
function getMindToken(mindName) {
|
|
311
|
-
return mindToToken.get(mindName) ?? null;
|
|
312
|
-
}
|
|
313
|
-
|
|
314
317
|
// packages/daemon/src/lib/daemon/mind-manager.ts
|
|
315
318
|
import { execFile, spawn } from "child_process";
|
|
316
319
|
import { existsSync as existsSync4, mkdirSync as mkdirSync2, readFileSync as readFileSync3, rmSync, writeFileSync as writeFileSync3 } from "fs";
|
|
@@ -429,6 +432,7 @@ var MindStartupError = class extends Error {
|
|
|
429
432
|
this.stderr = stderr;
|
|
430
433
|
this.name = "MindStartupError";
|
|
431
434
|
}
|
|
435
|
+
stderr;
|
|
432
436
|
};
|
|
433
437
|
function mindPidPath(name) {
|
|
434
438
|
return resolve2(stateDir(name), "mind.pid");
|
|
@@ -805,9 +809,9 @@ var MindManager = class {
|
|
|
805
809
|
mlog.info(`started mind ${name} on port ${port}`);
|
|
806
810
|
await this.deliverPendingContext(name);
|
|
807
811
|
try {
|
|
808
|
-
const { getSleepManagerIfReady } = await import("./sleep-manager-
|
|
812
|
+
const { getSleepManagerIfReady } = await import("./sleep-manager-Q3ITFNOJ.js");
|
|
809
813
|
if (!getSleepManagerIfReady()?.isSleeping(name)) {
|
|
810
|
-
const { flushQueuedEvents } = await import("./system-events-
|
|
814
|
+
const { flushQueuedEvents } = await import("./system-events-ZYOCYAO2.js");
|
|
811
815
|
const flushed = await flushQueuedEvents(name);
|
|
812
816
|
if (flushed > 0) mlog.info(`redelivered ${flushed} pending event(s) to ${name}`);
|
|
813
817
|
}
|
|
@@ -843,7 +847,7 @@ var MindManager = class {
|
|
|
843
847
|
if (this.shuttingDown || this.stopping.has(name)) return;
|
|
844
848
|
mlog.error(`mind ${name} exited with code ${code}`);
|
|
845
849
|
try {
|
|
846
|
-
const { getSleepManagerIfReady } = await import("./sleep-manager-
|
|
850
|
+
const { getSleepManagerIfReady } = await import("./sleep-manager-Q3ITFNOJ.js");
|
|
847
851
|
const sleepMgr = getSleepManagerIfReady();
|
|
848
852
|
const sleepState = sleepMgr?.getState(name);
|
|
849
853
|
if (sleepState?.sleeping) {
|
|
@@ -873,15 +877,15 @@ var MindManager = class {
|
|
|
873
877
|
(err) => mlog.warn(`failed to clear turn state for ${name} after crash`, logger_default.errorData(err))
|
|
874
878
|
);
|
|
875
879
|
try {
|
|
876
|
-
const { getDeliveryManager } = await import("./delivery-manager-
|
|
880
|
+
const { getDeliveryManager } = await import("./delivery-manager-H23Q23N7.js");
|
|
877
881
|
getDeliveryManager().clearMindSessions(name);
|
|
878
882
|
} catch (err) {
|
|
879
883
|
if (!(err instanceof Error && err.message.includes("not initialized"))) {
|
|
880
884
|
mlog.warn(`failed to clear delivery state for ${name} after crash`, logger_default.errorData(err));
|
|
881
885
|
}
|
|
882
886
|
}
|
|
883
|
-
import("./mind-activity-tracker-
|
|
884
|
-
import("./activity-events-
|
|
887
|
+
import("./mind-activity-tracker-UT23RGBF.js").then(({ markIdle }) => markIdle(name)).catch((err) => mlog.warn(`failed to mark ${name} idle after crash`, logger_default.errorData(err)));
|
|
888
|
+
import("./activity-events-TFAJBNBW.js").then(
|
|
885
889
|
({ publish }) => publish({ type: "mind_stopped", mind: name, summary: `${name} crashed (exit ${code})` })
|
|
886
890
|
).catch((err) => mlog.warn(`failed to publish crash event for ${name}`, logger_default.errorData(err)));
|
|
887
891
|
const { shouldRestart, delay, attempt } = this.restartTracker.recordCrash(name);
|
|
@@ -939,7 +943,7 @@ var MindManager = class {
|
|
|
939
943
|
mlog.warn(`failed to clear turn state for ${name} on stop`, logger_default.errorData(err));
|
|
940
944
|
}
|
|
941
945
|
try {
|
|
942
|
-
const { getDeliveryManager } = await import("./delivery-manager-
|
|
946
|
+
const { getDeliveryManager } = await import("./delivery-manager-H23Q23N7.js");
|
|
943
947
|
getDeliveryManager().clearMindSessions(name);
|
|
944
948
|
} catch (err) {
|
|
945
949
|
if (!(err instanceof Error && err.message.includes("not initialized"))) {
|
|
@@ -947,7 +951,7 @@ var MindManager = class {
|
|
|
947
951
|
}
|
|
948
952
|
}
|
|
949
953
|
try {
|
|
950
|
-
const { clearEchoTextCache } = await import("./echo-text-
|
|
954
|
+
const { clearEchoTextCache } = await import("./echo-text-ULEIFJJF.js");
|
|
951
955
|
clearEchoTextCache(name);
|
|
952
956
|
} catch (err) {
|
|
953
957
|
mlog.debug(`failed to clear echo-text cache for ${name}`, logger_default.errorData(err));
|
|
@@ -1040,15 +1044,15 @@ function tryGetMindManager() {
|
|
|
1040
1044
|
}
|
|
1041
1045
|
|
|
1042
1046
|
export {
|
|
1047
|
+
generateMindToken,
|
|
1048
|
+
resolveMindToken,
|
|
1049
|
+
getMindToken,
|
|
1043
1050
|
checkHealth,
|
|
1044
1051
|
loadJsonMap,
|
|
1045
1052
|
saveJsonMapAsync,
|
|
1046
1053
|
clearJsonMap,
|
|
1047
1054
|
RotatingLog,
|
|
1048
1055
|
syncProviderToMinds,
|
|
1049
|
-
generateMindToken,
|
|
1050
|
-
resolveMindToken,
|
|
1051
|
-
getMindToken,
|
|
1052
1056
|
RestartTracker,
|
|
1053
1057
|
buildMindBaseEnv,
|
|
1054
1058
|
MindStartupError,
|
|
@@ -18,7 +18,6 @@ var PROMPT_KEYS = [
|
|
|
18
18
|
"upgrade_message",
|
|
19
19
|
"split_message",
|
|
20
20
|
"farewell_message",
|
|
21
|
-
"compaction_warning",
|
|
22
21
|
"compaction_instructions",
|
|
23
22
|
"reply_instructions",
|
|
24
23
|
"event_instructions",
|
|
@@ -103,16 +102,6 @@ Take your time. Talk with your creator. Explore what kind of mind you want to be
|
|
|
103
102
|
variables: ["parent", "path"],
|
|
104
103
|
category: "system"
|
|
105
104
|
},
|
|
106
|
-
compaction_warning: {
|
|
107
|
-
content: `Context limit approaching \u2014 this session will rotate shortly. Turns before \${cutoff} will be collapsed to their summaries; turns from \${cutoff} on are kept verbatim in the continued session, so there's no need to re-describe them.
|
|
108
|
-
|
|
109
|
-
For the turns that will collapse, make sure they read the way you'd want: \`volute mind history --provisional\` shows the provisional summaries, and \`volute mind history --write --turn <id> --text "..."\` replaces any with your own account. Also save anything important to your files (memory/journal/\${date}.md, or a memory/ file). Provisional summaries are kept if you write nothing \u2014 nothing blocks on this.
|
|
110
|
-
|
|
111
|
-
Your MEMORY.md is currently \${memory_size}. It is loaded into every request, so consolidate rather than append \u2014 distill detail into memory/ files and keep MEMORY.md lean (see the memory skill).`,
|
|
112
|
-
description: "Pre-rotation warning: which turns collapse (before the cutoff) vs survive verbatim",
|
|
113
|
-
variables: ["cutoff", "date", "memory_size"],
|
|
114
|
-
category: "mind"
|
|
115
|
-
},
|
|
116
105
|
compaction_instructions: {
|
|
117
106
|
content: "Preserve your sense of who you are, what matters to you, what happened in this conversation, and the threads of thought and connection you'd want to return to.",
|
|
118
107
|
description: "Custom instructions for the compaction summarizer",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
logger_default
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-2674KIGI.js";
|
|
5
5
|
|
|
6
6
|
// packages/daemon/src/lib/events/mind-events.ts
|
|
7
7
|
var subscribers = /* @__PURE__ */ new Map();
|
|
@@ -47,8 +47,15 @@ function publish(mind, event) {
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
+
// packages/daemon/src/lib/util/time.ts
|
|
51
|
+
function parseDbTimestamp(ts) {
|
|
52
|
+
if (/[zZ]$|[+-]\d\d:?\d\d$/.test(ts)) return new Date(ts);
|
|
53
|
+
return /* @__PURE__ */ new Date(`${ts.replace(" ", "T")}Z`);
|
|
54
|
+
}
|
|
55
|
+
|
|
50
56
|
export {
|
|
51
57
|
subscribe,
|
|
52
58
|
subscribeAll,
|
|
53
|
-
publish
|
|
59
|
+
publish,
|
|
60
|
+
parseDbTimestamp
|
|
54
61
|
};
|