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
|
@@ -9,15 +9,15 @@ import "./chunk-O7IGP7ZW.js";
|
|
|
9
9
|
import "./chunk-FNJCBRD3.js";
|
|
10
10
|
import {
|
|
11
11
|
evaluateSeedChecklist
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import {
|
|
14
|
-
getStandardSkillsWithExtensions
|
|
15
|
-
} from "./chunk-PPSN2MLC.js";
|
|
16
|
-
import "./chunk-OAYY3WF3.js";
|
|
12
|
+
} from "./chunk-45QTYKQQ.js";
|
|
17
13
|
import "./chunk-DW4TRDOZ.js";
|
|
18
14
|
import "./chunk-WCFSBH33.js";
|
|
15
|
+
import "./chunk-HTSWDOJE.js";
|
|
16
|
+
import {
|
|
17
|
+
getStandardSkillsWithExtensions
|
|
18
|
+
} from "./chunk-4VAQKLMU.js";
|
|
19
19
|
import "./chunk-OIOW3FPT.js";
|
|
20
|
-
import "./chunk-
|
|
20
|
+
import "./chunk-2674KIGI.js";
|
|
21
21
|
import {
|
|
22
22
|
mindDir
|
|
23
23
|
} from "./chunk-H6X6CKDN.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-LKQCYFVP.js");
|
|
78
78
|
const client = getClient();
|
|
79
79
|
const failedSkills = [];
|
|
80
80
|
for (const skillId of getStandardSkillsWithExtensions()) {
|
|
@@ -19,8 +19,8 @@ import "./chunk-O7IGP7ZW.js";
|
|
|
19
19
|
import "./chunk-FNJCBRD3.js";
|
|
20
20
|
import {
|
|
21
21
|
formatFileSize
|
|
22
|
-
} from "./chunk-
|
|
23
|
-
import "./chunk-
|
|
22
|
+
} from "./chunk-KS62IHE2.js";
|
|
23
|
+
import "./chunk-2674KIGI.js";
|
|
24
24
|
import "./chunk-H6X6CKDN.js";
|
|
25
25
|
import "./chunk-2RNMBXD2.js";
|
|
26
26
|
import "./chunk-K3NQKI34.js";
|
|
@@ -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-J47J5JRB.js");
|
|
224
224
|
await runUp([
|
|
225
225
|
...port != null ? ["--port", String(port)] : [],
|
|
226
226
|
...host ? ["--host", host] : []
|
|
@@ -189,6 +189,14 @@ Default is `transparent` — observers can watch you think and work. `private` h
|
|
|
189
189
|
|
|
190
190
|
Edit `.local/hooks/startup-context.ts` to customize what you see when a new session starts. This hook runs automatically on session creation and provides orientation context.
|
|
191
191
|
|
|
192
|
+
### Turning a hook off
|
|
193
|
+
|
|
194
|
+
Everything under `.local/` is framework machinery — hooks the daemon runs, shims it generates. Your edits to those files are yours and are never overwritten. But the daemon does *add back* any file that is missing, on every start, so that a capability shipped after you were created still reaches you.
|
|
195
|
+
|
|
196
|
+
That means **deleting a hook doesn't stick** — it comes back, because absence can't be told apart from "this mind predates the hook."
|
|
197
|
+
|
|
198
|
+
To turn a hook off for good, **empty the file instead of removing it**. An empty hook is respected forever and runs as a no-op. This is a real limitation, not a preference about how you should work; the durable version of "I removed this on purpose" is tracked in [#811](https://github.com/mimsy/volute/issues/811).
|
|
199
|
+
|
|
192
200
|
## Reference Files
|
|
193
201
|
|
|
194
202
|
When configuring message routing, read `references/routing.md`.
|
|
@@ -28,9 +28,9 @@ import {
|
|
|
28
28
|
syncBuiltinSkills,
|
|
29
29
|
uninstallSkill,
|
|
30
30
|
updateSkill
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-4VAQKLMU.js";
|
|
32
32
|
import "./chunk-OIOW3FPT.js";
|
|
33
|
-
import "./chunk-
|
|
33
|
+
import "./chunk-2674KIGI.js";
|
|
34
34
|
import "./chunk-H6X6CKDN.js";
|
|
35
35
|
import "./chunk-2RNMBXD2.js";
|
|
36
36
|
import "./chunk-K3NQKI34.js";
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
SleepManager,
|
|
4
|
+
getSleepManager,
|
|
5
|
+
getSleepManagerIfReady,
|
|
6
|
+
initSleepManager,
|
|
7
|
+
matchesGlob
|
|
8
|
+
} from "./chunk-NCRG4SBR.js";
|
|
9
|
+
import "./chunk-UEZC5MNB.js";
|
|
10
|
+
import "./chunk-P3GXOT2X.js";
|
|
11
|
+
import "./chunk-CKOA4LWV.js";
|
|
12
|
+
import "./chunk-TMTAHKYP.js";
|
|
13
|
+
import "./chunk-HLWQ3P3R.js";
|
|
14
|
+
import "./chunk-BP2X5AIK.js";
|
|
15
|
+
import "./chunk-XAG53RWY.js";
|
|
16
|
+
import "./chunk-6HBGUPBA.js";
|
|
17
|
+
import "./chunk-7AA4T2RT.js";
|
|
18
|
+
import "./chunk-IT4GEFDH.js";
|
|
19
|
+
import "./chunk-DW4TRDOZ.js";
|
|
20
|
+
import "./chunk-WCFSBH33.js";
|
|
21
|
+
import "./chunk-W3OIPJPB.js";
|
|
22
|
+
import "./chunk-OFU6WJJZ.js";
|
|
23
|
+
import "./chunk-PRZUBJ4K.js";
|
|
24
|
+
import "./chunk-DUV4EMNW.js";
|
|
25
|
+
import "./chunk-MNKPAAQF.js";
|
|
26
|
+
import "./chunk-HTSWDOJE.js";
|
|
27
|
+
import "./chunk-4VAQKLMU.js";
|
|
28
|
+
import "./chunk-OIOW3FPT.js";
|
|
29
|
+
import "./chunk-GLM7TVWP.js";
|
|
30
|
+
import "./chunk-Z7TNIIHW.js";
|
|
31
|
+
import "./chunk-2674KIGI.js";
|
|
32
|
+
import "./chunk-LGNUFVMR.js";
|
|
33
|
+
import "./chunk-H6X6CKDN.js";
|
|
34
|
+
import "./chunk-2RNMBXD2.js";
|
|
35
|
+
import "./chunk-K3NQKI34.js";
|
|
36
|
+
export {
|
|
37
|
+
SleepManager,
|
|
38
|
+
getSleepManager,
|
|
39
|
+
getSleepManagerIfReady,
|
|
40
|
+
initSleepManager,
|
|
41
|
+
matchesGlob
|
|
42
|
+
};
|
|
@@ -18,13 +18,13 @@ import {
|
|
|
18
18
|
syncSpiritTemplate,
|
|
19
19
|
writeSpiritDoctrine,
|
|
20
20
|
writeSpiritSystemJson
|
|
21
|
-
} from "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-PPSN2MLC.js";
|
|
21
|
+
} from "./chunk-UEZC5MNB.js";
|
|
22
|
+
import "./chunk-P3GXOT2X.js";
|
|
24
23
|
import "./chunk-WCFSBH33.js";
|
|
24
|
+
import "./chunk-4VAQKLMU.js";
|
|
25
25
|
import "./chunk-OIOW3FPT.js";
|
|
26
|
-
import "./chunk-
|
|
27
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-Z7TNIIHW.js";
|
|
27
|
+
import "./chunk-2674KIGI.js";
|
|
28
28
|
import "./chunk-H6X6CKDN.js";
|
|
29
29
|
import "./chunk-2RNMBXD2.js";
|
|
30
30
|
import "./chunk-K3NQKI34.js";
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
SPIRIT_NOTICE_PREFIX,
|
|
4
|
+
_resetSpiritAvailabilityState,
|
|
5
|
+
classifySpiritState,
|
|
6
|
+
ensureSpiritAvailable,
|
|
7
|
+
spiritUnavailableNotice
|
|
8
|
+
} from "./chunk-3SFKY4GI.js";
|
|
9
|
+
import "./chunk-NCRG4SBR.js";
|
|
10
|
+
import "./chunk-UEZC5MNB.js";
|
|
11
|
+
import "./chunk-P3GXOT2X.js";
|
|
12
|
+
import "./chunk-CKOA4LWV.js";
|
|
13
|
+
import "./chunk-TMTAHKYP.js";
|
|
14
|
+
import "./chunk-HLWQ3P3R.js";
|
|
15
|
+
import "./chunk-BP2X5AIK.js";
|
|
16
|
+
import "./chunk-XAG53RWY.js";
|
|
17
|
+
import "./chunk-6HBGUPBA.js";
|
|
18
|
+
import "./chunk-7AA4T2RT.js";
|
|
19
|
+
import "./chunk-IT4GEFDH.js";
|
|
20
|
+
import "./chunk-DW4TRDOZ.js";
|
|
21
|
+
import "./chunk-WCFSBH33.js";
|
|
22
|
+
import "./chunk-W3OIPJPB.js";
|
|
23
|
+
import "./chunk-OFU6WJJZ.js";
|
|
24
|
+
import "./chunk-PRZUBJ4K.js";
|
|
25
|
+
import "./chunk-DUV4EMNW.js";
|
|
26
|
+
import "./chunk-MNKPAAQF.js";
|
|
27
|
+
import "./chunk-HTSWDOJE.js";
|
|
28
|
+
import "./chunk-4VAQKLMU.js";
|
|
29
|
+
import "./chunk-OIOW3FPT.js";
|
|
30
|
+
import "./chunk-GLM7TVWP.js";
|
|
31
|
+
import "./chunk-Z7TNIIHW.js";
|
|
32
|
+
import "./chunk-2674KIGI.js";
|
|
33
|
+
import "./chunk-LGNUFVMR.js";
|
|
34
|
+
import "./chunk-H6X6CKDN.js";
|
|
35
|
+
import "./chunk-2RNMBXD2.js";
|
|
36
|
+
import "./chunk-K3NQKI34.js";
|
|
37
|
+
export {
|
|
38
|
+
SPIRIT_NOTICE_PREFIX,
|
|
39
|
+
_resetSpiritAvailabilityState,
|
|
40
|
+
classifySpiritState,
|
|
41
|
+
ensureSpiritAvailable,
|
|
42
|
+
spiritUnavailableNotice
|
|
43
|
+
};
|
|
@@ -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-3IC5ZVTI.js").then((m) => m.run(args));
|
|
8
8
|
}
|
|
9
9
|
export {
|
|
10
10
|
run
|
|
@@ -289,9 +289,12 @@ function initDb(db) {
|
|
|
289
289
|
import { Hono } from "hono";
|
|
290
290
|
function resolveActor(c) {
|
|
291
291
|
const user = c.get("user");
|
|
292
|
-
if (!user
|
|
292
|
+
if (!user) return null;
|
|
293
293
|
return user;
|
|
294
294
|
}
|
|
295
|
+
function canOwn(actor) {
|
|
296
|
+
return actor.id !== 0;
|
|
297
|
+
}
|
|
295
298
|
async function parseJson(c) {
|
|
296
299
|
try {
|
|
297
300
|
return await c.req.json();
|
|
@@ -316,7 +319,7 @@ function createRoutes(ctx) {
|
|
|
316
319
|
}).post("/", async (c) => {
|
|
317
320
|
const actor = resolveActor(c);
|
|
318
321
|
if (!actor) return c.json({ error: "Unauthorized" }, 401);
|
|
319
|
-
if (actor.user_type !== "mind" && actor.role !== "admin") {
|
|
322
|
+
if (actor.user_type !== "mind" && actor.role !== "admin" || !canOwn(actor)) {
|
|
320
323
|
return c.json({ error: "Only a mind can hold intentions" }, 403);
|
|
321
324
|
}
|
|
322
325
|
const body = await parseJson(c);
|