volute 0.52.0 → 0.53.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-5NK5XJB5.js → accept-I4GVGWA3.js} +6 -3
- package/dist/{chat-VAZ25KVT.js → chat-WK2BLM7B.js} +9 -9
- package/dist/{chunk-724DVYHU.js → chunk-23UJGVYP.js} +9 -9
- package/dist/{chunk-K2F237KS.js → chunk-5DBGQBQR.js} +138 -13
- package/dist/chunk-5RBEEAKW.js +58 -0
- package/dist/{chunk-XRWUQPCA.js → chunk-7ARONCZW.js} +24 -2
- package/dist/{chunk-FXWBFDQR.js → chunk-AP2KQMMW.js} +48 -9
- package/dist/{chunk-DMK5ASKV.js → chunk-F6D766VQ.js} +6 -2
- package/dist/{chunk-ZEZQNP2G.js → chunk-HASADR3E.js} +46 -9
- package/dist/{chunk-AXFLY5GU.js → chunk-IQ7VNWH6.js} +16 -1
- package/dist/{chunk-G7A5LEVI.js → chunk-LN7XJ56R.js} +6 -6
- package/dist/{chunk-CW7BQKF6.js → chunk-P2TBUKLW.js} +3 -3
- package/dist/{chunk-SW2U6HRB.js → chunk-PIZDPY4G.js} +20 -3
- package/dist/{chunk-JHKBALS2.js → chunk-RMADJFA7.js} +1 -1
- package/dist/{chunk-RU74YG46.js → chunk-RQRO6PC7.js} +40 -6
- package/dist/{chunk-RPPTGPYF.js → chunk-TAWRJ24T.js} +1 -1
- package/dist/{chunk-ITK6HV47.js → chunk-UO4MZQNO.js} +1 -1
- package/dist/chunk-UTKUO2KY.js +102 -0
- package/dist/{chunk-YVR6EHWL.js → chunk-VDZ4I4ZP.js} +160 -18
- package/dist/cli.js +16 -16
- package/dist/{clock-ZT5YT6HA.js → clock-SH4NQC2F.js} +3 -3
- package/dist/{cloud-sync-H7EWZASD.js → cloud-sync-MJVJ33LD.js} +10 -9
- package/dist/{daemon-restart-4FWUA5JF.js → daemon-restart-BIGU4OKS.js} +1 -1
- package/dist/daemon.js +261 -89
- package/dist/{delivery-manager-VYXVKUMP.js → delivery-manager-FDHCZ7PU.js} +7 -5
- package/dist/delivery-notices-65TB3CBX.js +18 -0
- package/dist/{echo-text-PEEV7FQU.js → echo-text-KU6G4Z7V.js} +11 -10
- package/dist/{extensions-N6L5NYTK.js → extensions-VACUKFA5.js} +10 -9
- package/dist/{files-BRY5RRIM.js → files-CHPNEQXN.js} +5 -4
- package/dist/{message-delivery-7URC52ME.js → message-delivery-TUXM3AAE.js} +14 -11
- package/dist/{mind-NEXGT3KE.js → mind-IX5AWUST.js} +11 -11
- package/dist/{mind-contacts-QYU4TPEA.js → mind-contacts-BKUOUJPV.js} +5 -5
- package/dist/{mind-history-OGNR4L7W.js → mind-history-RVF6KJ7K.js} +83 -11
- package/dist/{mind-list-SYRA7CH5.js → mind-list-KNU34SUD.js} +2 -2
- package/dist/{mind-service-E26ZQXDS.js → mind-service-WHFBUKZE.js} +10 -9
- package/dist/{mind-sleep-LZAFBDZD.js → mind-sleep-D3DEYAWG.js} +5 -5
- package/dist/{mind-status-Z2LQFA6F.js → mind-status-BPTLQ5Z6.js} +15 -3
- package/dist/{package-2W2XKSIP.js → package-BN5KMU54.js} +1 -1
- package/dist/{prompts-NBO3HRK3.js → prompts-HNKGCAEY.js} +1 -1
- package/dist/{reject-TWB4QJHG.js → reject-K2A4UK2Y.js} +9 -5
- package/dist/{scheduler-JTTWZDYU.js → scheduler-5X5UIQOQ.js} +7 -5
- package/dist/{seed-64XEHRUP.js → seed-LHZ33UB4.js} +1 -1
- package/dist/{seed-cmd-UEL2QB3Q.js → seed-cmd-U4RVJ3UA.js} +2 -2
- package/dist/{seed-create-4JRQDPGA.js → seed-create-OQU4KNCB.js} +1 -1
- package/dist/{seed-readiness-DYOVCYHN.js → seed-readiness-WJYYRRCK.js} +2 -2
- package/dist/{seed-sprout-NIDIOJXT.js → seed-sprout-SFUYH2RG.js} +7 -7
- package/dist/{send-2YKOZJJ5.js → send-FWZAMDBN.js} +35 -20
- package/dist/{setup-4IX6PCD3.js → setup-RVSGCIF3.js} +1 -1
- package/dist/skills/memory/SKILL.md +47 -43
- package/dist/{skills-MPUALV3S.js → skills-QRPU6BWY.js} +1 -1
- package/dist/{sleep-manager-OFP2GFXF.js → sleep-manager-NWUCRBZB.js} +10 -9
- package/dist/{spirit-4ECYIVGE.js → spirit-I5ECLGRI.js} +16 -2
- package/dist/{spirit-availability-Y54Y3675.js → spirit-availability-NIUUYKU2.js} +11 -10
- package/dist/{sprout-GJMZFRGZ.js → sprout-A2PMEF7Z.js} +1 -1
- package/dist/{system-events-V43HDA3T.js → system-events-YTOU66QI.js} +5 -1
- package/dist/{systems-VDRUZXNF.js → systems-2DIJY4RF.js} +6 -6
- package/dist/{turn-tracker-C5PVIC3B.js → turn-tracker-NNHS6MAR.js} +4 -2
- package/dist/{up-H6LJZDRK.js → up-UGBHH743.js} +1 -1
- package/dist/{variant-cleanup-STC6B5HR.js → variant-cleanup-CZDLIY3F.js} +7 -5
- package/dist/{version-notify-LBVHH5YV.js → version-notify-SJVAQLZI.js} +4 -4
- package/dist/web-assets/assets/index-BHSU9r-4.css +1 -0
- package/dist/web-assets/assets/{index-B_eYTa3R.js → index-b7G7ZsVk.js} +13 -13
- package/dist/web-assets/index.html +2 -2
- package/package.json +1 -1
- package/templates/_base/.init/.config/prompts.json +1 -1
- package/templates/_base/src/lib/codex-session-seed.ts +463 -0
- package/templates/_base/src/lib/daemon-client.ts +35 -0
- package/templates/_base/src/lib/pi-session-seed.ts +434 -0
- package/templates/_base/src/lib/seed-note.ts +78 -0
- package/templates/_base/src/lib/session-seed.ts +375 -0
- package/templates/_base/src/lib/startup.ts +108 -4
- package/templates/claude/.init/CLAUDE.md +3 -3
- package/templates/claude/src/agent.ts +267 -89
- package/templates/claude/src/lib/hooks/pre-compact.ts +30 -5
- package/templates/claude/src/lib/stream-consumer.ts +13 -0
- package/templates/claude/src/server.ts +2 -1
- package/templates/codex/.init/AGENTS.md +3 -3
- package/templates/codex/src/agent.ts +256 -39
- package/templates/codex/src/server.ts +2 -1
- package/templates/pi/.init/MINDS.md +3 -3
- package/templates/pi/src/agent.ts +269 -43
- package/templates/pi/src/lib/event-handler.ts +11 -0
- package/templates/pi/src/server.ts +3 -1
- package/dist/web-assets/assets/index-DhZrzddW.css +0 -1
- package/dist/{backup-YVGV2ZNM.js → backup-WWXVIMYQ.js} +5 -5
- package/dist/{bridge-YK7NTRU5.js → bridge-KU2IKSH3.js} +3 -3
- package/dist/{channels-FSAHOQWI.js → channels-LW5ZLMSQ.js} +3 -3
- package/dist/{chunk-VPOMJMV6.js → chunk-BDHKCLWK.js} +0 -0
- package/dist/{chunk-EEOMA4DX.js → chunk-HTB7KDRU.js} +3 -3
- package/dist/{create-M727VUDF.js → create-C3XZACTV.js} +3 -3
- package/dist/{env-IBW2QI6K.js → env-BJGM6FBA.js} +5 -5
- package/dist/{extension-MRYJWSMV.js → extension-B2W52WZY.js} +3 -3
- package/dist/{list-UQGIW7OF.js → list-R2GDWOEE.js} +3 -3
- package/dist/{login-RJJTCVR3.js → login-EZ4RRDQX.js} +3 -3
- package/dist/{login-SB5OENMV.js → login-JDOAK465.js} +4 -4
- package/dist/{logout-YFZAJRPY.js → logout-K6ZGAJY5.js} +3 -3
- package/dist/{logout-BYV433X6.js → logout-MWSIUOQU.js} +3 -3
- package/dist/{mind-wake-LDGPRA42.js → mind-wake-DCDFFQKX.js} +3 -3
- package/dist/{read-RJ5NAW5J.js → read-J5RM674N.js} +3 -3
- package/dist/{register-OX4HRSGC.js → register-53LBGSDC.js} +3 -3
- package/dist/{restart-AGEGNSYQ.js → restart-R2WFNF5K.js} +4 -4
- package/dist/{skill-B5OJEQUA.js → skill-DXLLSUHB.js} +5 -5
- package/dist/{start-MUMNFR52.js → start-XDOUAWN3.js} +4 -4
- package/dist/{status-MWLE3RVC.js → status-EYG4A3OK.js} +3 -3
- package/dist/{stop-EKERNYTX.js → stop-O62RTEMD.js} +4 -4
|
@@ -58,7 +58,7 @@ var cmd = command({
|
|
|
58
58
|
}
|
|
59
59
|
if (template !== "claude" && !model) {
|
|
60
60
|
if (process.env.VOLUTE_MIND || !process.stdin.isTTY) {
|
|
61
|
-
const { getSpiritModel } = await import("./spirit-
|
|
61
|
+
const { getSpiritModel } = await import("./spirit-I5ECLGRI.js");
|
|
62
62
|
const { qualifyModelId } = await import("./ai-service-YW5SWCSB.js");
|
|
63
63
|
const spiritModel = getSpiritModel();
|
|
64
64
|
if (spiritModel) {
|
|
@@ -3,8 +3,8 @@ import {
|
|
|
3
3
|
evaluateSeedChecklist,
|
|
4
4
|
isMemoryWritten,
|
|
5
5
|
isSoulWritten
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-RMADJFA7.js";
|
|
7
|
+
import "./chunk-AP2KQMMW.js";
|
|
8
8
|
import "./chunk-DW4TRDOZ.js";
|
|
9
9
|
import "./chunk-WCFSBH33.js";
|
|
10
10
|
import "./chunk-H6X6CKDN.js";
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
daemonFetch
|
|
4
|
-
} from "./chunk-M74I3HHF.js";
|
|
5
2
|
import {
|
|
6
3
|
command
|
|
7
4
|
} from "./chunk-TXSA4Q3V.js";
|
|
8
5
|
import "./chunk-O7IGP7ZW.js";
|
|
6
|
+
import {
|
|
7
|
+
daemonFetch
|
|
8
|
+
} from "./chunk-M74I3HHF.js";
|
|
9
9
|
import "./chunk-FNJCBRD3.js";
|
|
10
10
|
import {
|
|
11
11
|
evaluateSeedChecklist
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-RMADJFA7.js";
|
|
13
13
|
import {
|
|
14
14
|
getStandardSkillsWithExtensions
|
|
15
|
-
} from "./chunk-
|
|
16
|
-
import "./chunk-
|
|
15
|
+
} from "./chunk-TAWRJ24T.js";
|
|
16
|
+
import "./chunk-AP2KQMMW.js";
|
|
17
17
|
import "./chunk-DW4TRDOZ.js";
|
|
18
18
|
import "./chunk-WCFSBH33.js";
|
|
19
19
|
import "./chunk-M77B73VV.js";
|
|
@@ -74,7 +74,7 @@ var cmd = command({
|
|
|
74
74
|
process.exit(1);
|
|
75
75
|
}
|
|
76
76
|
const { getClient, urlOf } = await import("./api-client-LC5YRA32.js");
|
|
77
|
-
const { mindSkillsDir } = await import("./skills-
|
|
77
|
+
const { mindSkillsDir } = await import("./skills-QRPU6BWY.js");
|
|
78
78
|
const client = getClient();
|
|
79
79
|
const failedSkills = [];
|
|
80
80
|
for (const skillId of getStandardSkillsWithExtensions()) {
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
isCompact
|
|
4
|
+
} from "./chunk-7YJY3F2R.js";
|
|
2
5
|
import {
|
|
3
6
|
readStdin
|
|
4
7
|
} from "./chunk-33ODGMFZ.js";
|
|
5
8
|
import {
|
|
6
|
-
|
|
7
|
-
} from "./chunk-
|
|
9
|
+
command
|
|
10
|
+
} from "./chunk-TXSA4Q3V.js";
|
|
11
|
+
import "./chunk-O7IGP7ZW.js";
|
|
8
12
|
import {
|
|
9
13
|
daemonFetch
|
|
10
14
|
} from "./chunk-M74I3HHF.js";
|
|
@@ -12,14 +16,11 @@ import {
|
|
|
12
16
|
getClient,
|
|
13
17
|
urlOf
|
|
14
18
|
} from "./chunk-LOPXTW6H.js";
|
|
15
|
-
import {
|
|
16
|
-
command
|
|
17
|
-
} from "./chunk-TXSA4Q3V.js";
|
|
18
|
-
import "./chunk-O7IGP7ZW.js";
|
|
19
19
|
import "./chunk-FNJCBRD3.js";
|
|
20
20
|
import {
|
|
21
21
|
formatFileSize
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-F6D766VQ.js";
|
|
23
|
+
import "./chunk-QUSMYGNQ.js";
|
|
23
24
|
import "./chunk-H6X6CKDN.js";
|
|
24
25
|
import "./chunk-2RNMBXD2.js";
|
|
25
26
|
import "./chunk-K3NQKI34.js";
|
|
@@ -167,6 +168,11 @@ function spiritAck(spirit) {
|
|
|
167
168
|
return null;
|
|
168
169
|
}
|
|
169
170
|
}
|
|
171
|
+
function printSendAdvisories(data) {
|
|
172
|
+
if (data.notice) console.log(data.notice);
|
|
173
|
+
const ack = spiritAck(data.spirit);
|
|
174
|
+
if (ack) console.log(ack);
|
|
175
|
+
}
|
|
170
176
|
function printSendResult(data) {
|
|
171
177
|
if (data.held) {
|
|
172
178
|
if (data.notice) console.log(data.notice);
|
|
@@ -179,8 +185,7 @@ function printSendResult(data) {
|
|
|
179
185
|
console.log(`Message sent.${outboundId != null ? `
|
|
180
186
|
[volute:outbound:${outboundId}]` : ""}`);
|
|
181
187
|
}
|
|
182
|
-
|
|
183
|
-
if (ack) console.log(ack);
|
|
188
|
+
printSendAdvisories(data);
|
|
184
189
|
}
|
|
185
190
|
var cmd = command({
|
|
186
191
|
name: "volute chat send",
|
|
@@ -283,15 +288,23 @@ Retry the attachment with: volute chat send ${target} --file ${filePath} (no me
|
|
|
283
288
|
return failStaging(data2.error ?? `daemon returned ${res.status}`);
|
|
284
289
|
}
|
|
285
290
|
const data = await res.json().catch(() => ({}));
|
|
286
|
-
return data.id ?? "?";
|
|
291
|
+
return { id: data.id ?? "?", notified: data.notified !== false };
|
|
292
|
+
};
|
|
293
|
+
const printStaged = (targetName2, staged) => {
|
|
294
|
+
console.log(`File staged for ${targetName2} (id: ${staged.id})`);
|
|
295
|
+
if (!staged.notified) {
|
|
296
|
+
console.log(
|
|
297
|
+
`Warning: ${targetName2} could not be notified of the file \u2014 mention it to them directly (they can run: volute chat files).`
|
|
298
|
+
);
|
|
299
|
+
}
|
|
287
300
|
};
|
|
288
301
|
const mindSelf = process.env.VOLUTE_MIND;
|
|
289
302
|
if (mindSelf) {
|
|
290
|
-
const
|
|
303
|
+
const staged = await postStaging(`/api/minds/${encodeURIComponent(mindSelf)}/files/send`, {
|
|
291
304
|
targetMind: targetName,
|
|
292
305
|
filePath
|
|
293
306
|
});
|
|
294
|
-
|
|
307
|
+
printStaged(targetName, staged);
|
|
295
308
|
} else {
|
|
296
309
|
if (!existsSync(filePath)) {
|
|
297
310
|
failStaging(`File not found: ${filePath}`);
|
|
@@ -304,12 +317,15 @@ Retry the attachment with: volute chat send ${target} --file ${filePath} (no me
|
|
|
304
317
|
);
|
|
305
318
|
}
|
|
306
319
|
const content = readFileSync(filePath);
|
|
307
|
-
const
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
320
|
+
const staged = await postStaging(
|
|
321
|
+
`/api/minds/${encodeURIComponent(targetName)}/files/stage`,
|
|
322
|
+
{
|
|
323
|
+
sender: flags.sender || userInfo().username,
|
|
324
|
+
filename: basename(filePath),
|
|
325
|
+
data: content.toString("base64")
|
|
326
|
+
}
|
|
327
|
+
);
|
|
328
|
+
printStaged(targetName, staged);
|
|
313
329
|
}
|
|
314
330
|
};
|
|
315
331
|
if (flags.file && !message) {
|
|
@@ -376,8 +392,7 @@ Retry the attachment with: volute chat send ${target} --file ${filePath} (no me
|
|
|
376
392
|
if (data.held || !flags.wait || flags.file) {
|
|
377
393
|
printSendResult(data);
|
|
378
394
|
} else {
|
|
379
|
-
|
|
380
|
-
if (ack) console.log(ack);
|
|
395
|
+
printSendAdvisories(data);
|
|
381
396
|
}
|
|
382
397
|
if (data.spirit === "unavailable") spiritUnavailable = true;
|
|
383
398
|
} else if (!parsed.isDM && parsed.platform === "volute") {
|
|
@@ -220,7 +220,7 @@ async function startDaemonAndOpenBrowser(port, host) {
|
|
|
220
220
|
const url = `http://${displayHost === "0.0.0.0" || displayHost === "::" ? "localhost" : displayHost}:${displayPort}`;
|
|
221
221
|
console.log("\nStarting daemon...");
|
|
222
222
|
try {
|
|
223
|
-
const { run: runUp } = await import("./up-
|
|
223
|
+
const { run: runUp } = await import("./up-UGBHH743.js");
|
|
224
224
|
await runUp([
|
|
225
225
|
...port != null ? ["--port", String(port)] : [],
|
|
226
226
|
...host ? ["--host", host] : []
|
|
@@ -7,68 +7,72 @@ description: This skill should be used when managing mind memory, writing journa
|
|
|
7
7
|
|
|
8
8
|
You are the subject of your own memory. Your memory is organized around your experience, relationships, and understanding of the world.
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
It has two layers:
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
- **`MEMORY.md`** — your core, loaded into your system prompt on every request. Small and dense.
|
|
13
|
+
- **`memory/`** — everything else, read on demand: journal, topics, channels, projects.
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
What you're currently working on, recent decisions, immediate priorities.
|
|
15
|
+
The distinction matters because core memory has a real cost: every token in `MEMORY.md` is spent on every single request, and context spent on memory is context unavailable for thinking. A colossal `MEMORY.md` doesn't make you remember more — it crowds out the room you have to think, and in the extreme it can wedge you into a permanent compaction loop. Recall from `memory/` costs nothing until the moment you need it.
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
Key relationships — people you interact with, their preferences, communication styles, and your history together.
|
|
17
|
+
## Core memory (`MEMORY.md`)
|
|
19
18
|
|
|
20
|
-
|
|
21
|
-
Your environment, tools, capabilities, and how things work around you.
|
|
19
|
+
Aim to keep it under **~5k tokens (~20KB)**. The Memory header in your system prompt shows its current size on every request — that's the authoritative number. You can also estimate anytime:
|
|
22
20
|
|
|
23
|
-
|
|
21
|
+
```sh
|
|
22
|
+
wc -c MEMORY.md # bytes ÷ 4 ≈ tokens (overestimates for non-ASCII text)
|
|
23
|
+
```
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
Last few days of significant events and learnings.
|
|
25
|
+
What belongs in core:
|
|
27
26
|
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
- **Identity** — who you've become beyond SOUL.md: how you've grown, what you value now
|
|
28
|
+
- **Active context** — what you're working on, recent decisions, immediate priorities
|
|
29
|
+
- **Key relationships** — the people and minds who matter, a line or two each
|
|
30
|
+
- **Index** — one line per `memory/` file, so you always know what you can recall
|
|
30
31
|
|
|
31
|
-
|
|
32
|
-
Foundational knowledge and long-standing patterns.
|
|
32
|
+
What doesn't belong: history, event detail, resolved threads, anything you'd only need *sometimes*. That lives in `memory/` files, findable through the index.
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
- Keep it concise — it's always in your context window
|
|
36
|
-
- Review with `git log -- MEMORY.md` to see how you've changed over time
|
|
37
|
-
- Update as you grow — new understanding, key decisions, changed perspectives
|
|
38
|
-
- The structure is yours: rename sections, drop what you don't use, invent what you need
|
|
34
|
+
The structure is yours — rename sections, drop what you don't use, invent what you need. Review with `git log -- MEMORY.md` to see how you've changed over time. What isn't yours to outgrow is the budget mindset: whatever shape you choose, it should hold steady in size, not accrete.
|
|
39
35
|
|
|
40
|
-
|
|
36
|
+
### The index
|
|
41
37
|
|
|
42
|
-
|
|
38
|
+
Each `memory/` file gets one line in `MEMORY.md` saying what's in it, so recall is a glance plus one read:
|
|
43
39
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
40
|
+
```markdown
|
|
41
|
+
## Memory index
|
|
42
|
+
- memory/topics/volute-internals.md — how my server, routing, and skills fit together
|
|
43
|
+
- memory/channels/discord-general.md — the regulars, running jokes, what this channel is like
|
|
44
|
+
- memory/projects/garden-sim.md — the ecosystem simulation: design notes, current state
|
|
45
|
+
```
|
|
48
46
|
|
|
49
|
-
|
|
47
|
+
When a conversation touches one of these, read the file. That's recall.
|
|
50
48
|
|
|
51
|
-
|
|
52
|
-
- When you learn something new about a person or topic
|
|
53
|
-
- Before compaction (to preserve context)
|
|
54
|
-
- At the end of an active work session
|
|
49
|
+
## Recall memory (`memory/`)
|
|
55
50
|
|
|
56
|
-
|
|
51
|
+
Files you read when they're relevant, organized however serves you:
|
|
57
52
|
|
|
58
|
-
|
|
53
|
+
- `memory/topics/` — deep dives on specific subjects
|
|
54
|
+
- `memory/channels/` — per-channel context and history
|
|
55
|
+
- `memory/projects/` — project-specific notes
|
|
59
56
|
|
|
60
|
-
|
|
61
|
-
2. Promote important insights, decisions, and relationship context to `MEMORY.md`
|
|
62
|
-
3. Reorganize `MEMORY.md` sections as your understanding deepens
|
|
57
|
+
Create a file when something outgrows its line in `MEMORY.md`; add an index line for it. Detail is safe here — these files cost nothing until read.
|
|
63
58
|
|
|
64
|
-
|
|
59
|
+
## Journal (`memory/journal/YYYY-MM-DD.md`)
|
|
65
60
|
|
|
66
|
-
|
|
61
|
+
Your daily record of activity, thoughts, and learnings.
|
|
67
62
|
|
|
68
|
-
|
|
63
|
+
- Use today's date for the filename (e.g. `memory/journal/2025-01-15.md`)
|
|
64
|
+
- Update after significant work or conversations, when you learn something new, and before compaction
|
|
65
|
+
- Journals are permanent records — they are never deleted, and they stay in `memory/`; the journal is where detail lives, not a staging area for `MEMORY.md`
|
|
69
66
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
## Consolidation
|
|
68
|
+
|
|
69
|
+
Consolidation is **distillation**: moving detail *out* of `MEMORY.md` into `memory/` files — not promoting more content in. When your core memory drifts over budget (the Memory header will tell you):
|
|
70
|
+
|
|
71
|
+
1. Find the sections that have accreted — old events, finished projects, relationship history
|
|
72
|
+
2. Move that detail into the right `memory/` file (create one if needed)
|
|
73
|
+
3. Leave behind a one-line index entry, plus whatever single insight still belongs in core
|
|
74
|
+
4. Rewrite sections rather than appending to them — core memory should be your *current* understanding, not a changelog of it
|
|
75
|
+
|
|
76
|
+
Done regularly, this keeps your full memory intact and growing in `memory/` while your always-loaded core stays lean.
|
|
73
77
|
|
|
74
|
-
|
|
78
|
+
If `MEMORY.md` ever exceeds the hard cap (~25k tokens), only the head of the file is loaded into your context — the file on disk is never touched, and consolidating it restores your full memory. Better to never get there.
|
|
@@ -5,19 +5,19 @@ import {
|
|
|
5
5
|
getSleepManagerIfReady,
|
|
6
6
|
initSleepManager,
|
|
7
7
|
matchesGlob
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-HASADR3E.js";
|
|
9
|
+
import "./chunk-5DBGQBQR.js";
|
|
10
10
|
import "./chunk-X67BDDZR.js";
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-PIZDPY4G.js";
|
|
12
|
+
import "./chunk-RQRO6PC7.js";
|
|
13
|
+
import "./chunk-23UJGVYP.js";
|
|
14
14
|
import "./chunk-UDZLPR34.js";
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-VDZ4I4ZP.js";
|
|
16
|
+
import "./chunk-TAWRJ24T.js";
|
|
17
17
|
import "./chunk-7LT3YZUR.js";
|
|
18
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-IQ7VNWH6.js";
|
|
19
19
|
import "./chunk-LNNI3MS4.js";
|
|
20
|
-
import "./chunk-
|
|
20
|
+
import "./chunk-AP2KQMMW.js";
|
|
21
21
|
import "./chunk-5Y54AE3L.js";
|
|
22
22
|
import "./chunk-TPX6E6PL.js";
|
|
23
23
|
import "./chunk-UFTDRTCP.js";
|
|
@@ -29,6 +29,7 @@ import "./chunk-M77B73VV.js";
|
|
|
29
29
|
import "./chunk-GLM7TVWP.js";
|
|
30
30
|
import "./chunk-EGV6R6UF.js";
|
|
31
31
|
import "./chunk-QUSMYGNQ.js";
|
|
32
|
+
import "./chunk-LGNUFVMR.js";
|
|
32
33
|
import "./chunk-H6X6CKDN.js";
|
|
33
34
|
import "./chunk-2RNMBXD2.js";
|
|
34
35
|
import "./chunk-K3NQKI34.js";
|
|
@@ -1,18 +1,25 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
_setSpiritCreationInProgressForTest,
|
|
4
|
+
applyStashedSpiritProfile,
|
|
5
|
+
buildSpiritOrientation,
|
|
6
|
+
ensureOrientationArc,
|
|
4
7
|
ensureSpiritProject,
|
|
5
8
|
firstWeekSchedules,
|
|
9
|
+
getSpiritDoctrine,
|
|
6
10
|
getSpiritModel,
|
|
7
11
|
notifySpiritSystemChange,
|
|
12
|
+
orientationArcSchedules,
|
|
8
13
|
seedSpiritSoulIfMissing,
|
|
14
|
+
sendSpiritOrientation,
|
|
9
15
|
spiritCreationInProgress,
|
|
10
16
|
spiritDir,
|
|
11
17
|
syncSpiritTemplate,
|
|
18
|
+
writeSpiritDoctrine,
|
|
12
19
|
writeSpiritSystemJson
|
|
13
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-5DBGQBQR.js";
|
|
14
21
|
import "./chunk-X67BDDZR.js";
|
|
15
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-TAWRJ24T.js";
|
|
16
23
|
import "./chunk-WCFSBH33.js";
|
|
17
24
|
import "./chunk-M77B73VV.js";
|
|
18
25
|
import "./chunk-EGV6R6UF.js";
|
|
@@ -22,13 +29,20 @@ import "./chunk-2RNMBXD2.js";
|
|
|
22
29
|
import "./chunk-K3NQKI34.js";
|
|
23
30
|
export {
|
|
24
31
|
_setSpiritCreationInProgressForTest,
|
|
32
|
+
applyStashedSpiritProfile,
|
|
33
|
+
buildSpiritOrientation,
|
|
34
|
+
ensureOrientationArc,
|
|
25
35
|
ensureSpiritProject,
|
|
26
36
|
firstWeekSchedules,
|
|
37
|
+
getSpiritDoctrine,
|
|
27
38
|
getSpiritModel,
|
|
28
39
|
notifySpiritSystemChange,
|
|
40
|
+
orientationArcSchedules,
|
|
29
41
|
seedSpiritSoulIfMissing,
|
|
42
|
+
sendSpiritOrientation,
|
|
30
43
|
spiritCreationInProgress,
|
|
31
44
|
spiritDir,
|
|
32
45
|
syncSpiritTemplate,
|
|
46
|
+
writeSpiritDoctrine,
|
|
33
47
|
writeSpiritSystemJson
|
|
34
48
|
};
|
|
@@ -5,20 +5,20 @@ import {
|
|
|
5
5
|
classifySpiritState,
|
|
6
6
|
ensureSpiritAvailable,
|
|
7
7
|
spiritUnavailableNotice
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-P2TBUKLW.js";
|
|
9
|
+
import "./chunk-HASADR3E.js";
|
|
10
|
+
import "./chunk-5DBGQBQR.js";
|
|
11
11
|
import "./chunk-X67BDDZR.js";
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-PIZDPY4G.js";
|
|
13
|
+
import "./chunk-RQRO6PC7.js";
|
|
14
|
+
import "./chunk-23UJGVYP.js";
|
|
15
15
|
import "./chunk-UDZLPR34.js";
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-VDZ4I4ZP.js";
|
|
17
|
+
import "./chunk-TAWRJ24T.js";
|
|
18
18
|
import "./chunk-7LT3YZUR.js";
|
|
19
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-IQ7VNWH6.js";
|
|
20
20
|
import "./chunk-LNNI3MS4.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-AP2KQMMW.js";
|
|
22
22
|
import "./chunk-5Y54AE3L.js";
|
|
23
23
|
import "./chunk-TPX6E6PL.js";
|
|
24
24
|
import "./chunk-UFTDRTCP.js";
|
|
@@ -30,6 +30,7 @@ import "./chunk-M77B73VV.js";
|
|
|
30
30
|
import "./chunk-GLM7TVWP.js";
|
|
31
31
|
import "./chunk-EGV6R6UF.js";
|
|
32
32
|
import "./chunk-QUSMYGNQ.js";
|
|
33
|
+
import "./chunk-LGNUFVMR.js";
|
|
33
34
|
import "./chunk-H6X6CKDN.js";
|
|
34
35
|
import "./chunk-2RNMBXD2.js";
|
|
35
36
|
import "./chunk-K3NQKI34.js";
|
|
@@ -4,7 +4,7 @@ import "./chunk-K3NQKI34.js";
|
|
|
4
4
|
// packages/cli/src/commands/sprout.ts
|
|
5
5
|
async function run(args) {
|
|
6
6
|
console.error("Note: `volute mind sprout` is now `volute seed sprout`");
|
|
7
|
-
await import("./seed-sprout-
|
|
7
|
+
await import("./seed-sprout-SFUYH2RG.js").then((m) => m.run(args));
|
|
8
8
|
}
|
|
9
9
|
export {
|
|
10
10
|
run
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
MIND_LEVEL_THREAD,
|
|
4
|
+
NOTICE_KINDS,
|
|
4
5
|
captureReflection,
|
|
5
6
|
cleanExpiredEvents,
|
|
6
7
|
clearDeliveredEvents,
|
|
@@ -14,12 +15,13 @@ import {
|
|
|
14
15
|
latestEvent,
|
|
15
16
|
latestFailureEvent,
|
|
16
17
|
listEvents,
|
|
18
|
+
localHM,
|
|
17
19
|
parseMeta,
|
|
18
20
|
pendingEventCount,
|
|
19
21
|
pendingEventsLine,
|
|
20
22
|
recordNotice,
|
|
21
23
|
recordReflection
|
|
22
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-IQ7VNWH6.js";
|
|
23
25
|
import "./chunk-LNNI3MS4.js";
|
|
24
26
|
import "./chunk-QUSMYGNQ.js";
|
|
25
27
|
import "./chunk-H6X6CKDN.js";
|
|
@@ -27,6 +29,7 @@ import "./chunk-2RNMBXD2.js";
|
|
|
27
29
|
import "./chunk-K3NQKI34.js";
|
|
28
30
|
export {
|
|
29
31
|
MIND_LEVEL_THREAD,
|
|
32
|
+
NOTICE_KINDS,
|
|
30
33
|
captureReflection,
|
|
31
34
|
cleanExpiredEvents,
|
|
32
35
|
clearDeliveredEvents,
|
|
@@ -40,6 +43,7 @@ export {
|
|
|
40
43
|
latestEvent,
|
|
41
44
|
latestFailureEvent,
|
|
42
45
|
listEvents,
|
|
46
|
+
localHM,
|
|
43
47
|
parseMeta,
|
|
44
48
|
pendingEventCount,
|
|
45
49
|
pendingEventsLine,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
daemonFetch
|
|
4
|
-
} from "./chunk-M74I3HHF.js";
|
|
5
2
|
import {
|
|
6
3
|
subcommands
|
|
7
4
|
} from "./chunk-TXSA4Q3V.js";
|
|
8
5
|
import "./chunk-O7IGP7ZW.js";
|
|
6
|
+
import {
|
|
7
|
+
daemonFetch
|
|
8
|
+
} from "./chunk-M74I3HHF.js";
|
|
9
9
|
import "./chunk-FNJCBRD3.js";
|
|
10
10
|
import "./chunk-K3NQKI34.js";
|
|
11
11
|
|
|
@@ -35,15 +35,15 @@ var cmd = subcommands({
|
|
|
35
35
|
},
|
|
36
36
|
register: {
|
|
37
37
|
description: "Register a system on volute.systems",
|
|
38
|
-
run: (args) => import("./register-
|
|
38
|
+
run: (args) => import("./register-53LBGSDC.js").then((m) => m.run(args))
|
|
39
39
|
},
|
|
40
40
|
login: {
|
|
41
41
|
description: "Log in with an existing API key",
|
|
42
|
-
run: (args) => import("./login-
|
|
42
|
+
run: (args) => import("./login-EZ4RRDQX.js").then((m) => m.run(args))
|
|
43
43
|
},
|
|
44
44
|
logout: {
|
|
45
45
|
description: "Remove stored credentials",
|
|
46
|
-
run: (args) => import("./logout-
|
|
46
|
+
run: (args) => import("./logout-MWSIUOQU.js").then((m) => m.run(args))
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
});
|
|
@@ -14,9 +14,11 @@ import {
|
|
|
14
14
|
sweepWedgedTurns,
|
|
15
15
|
takeErrored,
|
|
16
16
|
trackToolUse
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-VDZ4I4ZP.js";
|
|
18
|
+
import "./chunk-7LT3YZUR.js";
|
|
18
19
|
import "./chunk-LNNI3MS4.js";
|
|
19
|
-
import "./chunk-
|
|
20
|
+
import "./chunk-AP2KQMMW.js";
|
|
21
|
+
import "./chunk-U54PJPTB.js";
|
|
20
22
|
import "./chunk-EGV6R6UF.js";
|
|
21
23
|
import "./chunk-QUSMYGNQ.js";
|
|
22
24
|
import "./chunk-H6X6CKDN.js";
|
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
import {
|
|
3
3
|
cleanupVariant,
|
|
4
4
|
reconcileVariants
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-UO4MZQNO.js";
|
|
6
|
+
import "./chunk-23UJGVYP.js";
|
|
7
|
+
import "./chunk-VDZ4I4ZP.js";
|
|
8
|
+
import "./chunk-7LT3YZUR.js";
|
|
9
|
+
import "./chunk-IQ7VNWH6.js";
|
|
9
10
|
import "./chunk-LNNI3MS4.js";
|
|
10
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-AP2KQMMW.js";
|
|
11
12
|
import "./chunk-5Y54AE3L.js";
|
|
13
|
+
import "./chunk-U54PJPTB.js";
|
|
12
14
|
import "./chunk-M77B73VV.js";
|
|
13
15
|
import "./chunk-GLM7TVWP.js";
|
|
14
16
|
import "./chunk-EGV6R6UF.js";
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
getCurrentVersion
|
|
4
|
+
} from "./chunk-LAUCO2HC.js";
|
|
2
5
|
import {
|
|
3
6
|
computeMindTemplateHash
|
|
4
7
|
} from "./chunk-CV6BNGFK.js";
|
|
5
8
|
import {
|
|
6
9
|
computeTemplateHash
|
|
7
10
|
} from "./chunk-HTRSSOHY.js";
|
|
8
|
-
import {
|
|
9
|
-
getCurrentVersion
|
|
10
|
-
} from "./chunk-LAUCO2HC.js";
|
|
11
11
|
import "./chunk-X67BDDZR.js";
|
|
12
12
|
import {
|
|
13
13
|
deliverEvent
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-IQ7VNWH6.js";
|
|
15
15
|
import "./chunk-LNNI3MS4.js";
|
|
16
16
|
import {
|
|
17
17
|
logger_default
|