volute 0.54.0 → 0.56.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.
Files changed (204) hide show
  1. package/dist/{activity-events-LQII6PZS.js → activity-events-YASF46HS.js} +3 -3
  2. package/dist/{ai-service-YW5SWCSB.js → ai-service-3UFNG6GI.js} +3 -5
  3. package/dist/{archive-FOHGXHPT.js → archive-L2OFBGDQ.js} +2 -2
  4. package/dist/{auth-KRDSM55Q.js → auth-N2F5ASAB.js} +4 -4
  5. package/dist/auto-upgrade-O4MQPYQF.js +46 -0
  6. package/dist/{avatar-image-52WGXLHV.js → avatar-image-QEKKUFDF.js} +3 -3
  7. package/dist/{backup-QRNX6RK7.js → backup-TPM7QQBQ.js} +13 -13
  8. package/dist/{channels-CKCY64TD.js → channels-JP3GYTPX.js} +18 -18
  9. package/dist/{chat-ZUGNL5GS.js → chat-7YCF4ZU5.js} +3 -3
  10. package/dist/{chunk-QUSMYGNQ.js → chunk-2674KIGI.js} +1 -0
  11. package/dist/{chunk-444RR3YF.js → chunk-2B4E6SL7.js} +14 -14
  12. package/dist/chunk-2GATCSZK.js +520 -0
  13. package/dist/{chunk-I7U5EEZC.js → chunk-2LFTJNVH.js} +2 -2
  14. package/dist/{chunk-L7BKTZ5U.js → chunk-2QLWAYIU.js} +2 -2
  15. package/dist/{chunk-F6D766VQ.js → chunk-45MCH4G4.js} +2 -2
  16. package/dist/{chunk-OGPVJ53N.js → chunk-4RZS7XCV.js} +5 -5
  17. package/dist/{chunk-HKGYZVWN.js → chunk-6LICEQGP.js} +38 -4
  18. package/dist/{chunk-LAUCO2HC.js → chunk-APDEUAIE.js} +1 -1
  19. package/dist/{chunk-5Y54AE3L.js → chunk-CLH357FI.js} +2 -2
  20. package/dist/{chunk-OAYY3WF3.js → chunk-CVPCRWWC.js} +1 -12
  21. package/dist/{chunk-EGV6R6UF.js → chunk-E2SN3ZOJ.js} +5 -40
  22. package/dist/{chunk-LGXVGIWN.js → chunk-ELQU2GBT.js} +193 -69
  23. package/dist/{chunk-OT5SXF7L.js → chunk-EPRLTYJR.js} +28 -14
  24. package/dist/{chunk-ATZF2RNJ.js → chunk-EYFBT2KP.js} +15 -15
  25. package/dist/{chunk-U54PJPTB.js → chunk-FYMIGUJ5.js} +2 -2
  26. package/dist/{chunk-7XKPG66D.js → chunk-G7A5LEVI.js} +5 -5
  27. package/dist/{chunk-RGHF3OK5.js → chunk-GAAATVTM.js} +17 -17
  28. package/dist/{chunk-7LT3YZUR.js → chunk-I3OJ342S.js} +2 -2
  29. package/dist/{chunk-3LHUXY3E.js → chunk-IABDYN4N.js} +4 -4
  30. package/dist/{chunk-VDUCLVZI.js → chunk-IOMBP2T5.js} +28 -26
  31. package/dist/{chunk-YSRYCS3N.js → chunk-IQROTVBG.js} +2 -2
  32. package/dist/{chunk-PPSN2MLC.js → chunk-IRNM4LSF.js} +9 -6
  33. package/dist/{chunk-ZNHL5KQJ.js → chunk-KN3UHV7O.js} +8 -3
  34. package/dist/{chunk-CV6BNGFK.js → chunk-KXM4K46T.js} +4 -4
  35. package/dist/{chunk-Z4Q6TQWL.js → chunk-LRRPKZBD.js} +2 -2
  36. package/dist/{chunk-LNNI3MS4.js → chunk-MNKPAAQF.js} +9 -2
  37. package/dist/{chunk-OIOW3FPT.js → chunk-NA2NJXY4.js} +1 -1
  38. package/dist/{chunk-GLM7TVWP.js → chunk-OHHS5PSI.js} +1 -1
  39. package/dist/{chunk-CKPAVQNK.js → chunk-OPTA3BJ4.js} +36 -24
  40. package/dist/{chunk-X67BDDZR.js → chunk-P3GXOT2X.js} +48 -2
  41. package/dist/{chunk-WHL6PKYP.js → chunk-PAO7JZNW.js} +52 -48
  42. package/dist/{chunk-TPX6E6PL.js → chunk-Q5M5QFKY.js} +3 -3
  43. package/dist/{chunk-OYF25B62.js → chunk-T7UMSTH2.js} +3 -3
  44. package/dist/{chunk-H6X6CKDN.js → chunk-TAVIVN2I.js} +2 -32
  45. package/dist/{chunk-56IT2ZXF.js → chunk-TGYKFUCF.js} +9 -15
  46. package/dist/{chunk-5U5GLZSD.js → chunk-TZ7OHGNL.js} +2 -2
  47. package/dist/{chunk-UFTDRTCP.js → chunk-UMQP5TC5.js} +2 -2
  48. package/dist/{chunk-LKUGUQUW.js → chunk-UNTDRIV2.js} +5 -5
  49. package/dist/{chunk-CLCHOXLR.js → chunk-V2M6PNLE.js} +5 -5
  50. package/dist/{chunk-ICXY54ZC.js → chunk-WTZD6LFW.js} +2 -2
  51. package/dist/{chunk-FLIEXG2T.js → chunk-XZP3FJ7Q.js} +1 -1
  52. package/dist/{chunk-HTRSSOHY.js → chunk-YU5EYQAE.js} +1 -1
  53. package/dist/cli.js +26 -23
  54. package/dist/{clock-X7V3C7NL.js → clock-ZT5YT6HA.js} +2 -2
  55. package/dist/{cloud-sync-52YNJRMR.js → cloud-sync-RTUXMYU2.js} +23 -23
  56. package/dist/{conversations-ZL6PHROD.js → conversations-ERMMPMOS.js} +4 -4
  57. package/dist/{create-G2RIKQYK.js → create-IUCFJXCE.js} +1 -1
  58. package/dist/{daemon-restart-QWHN5VMU.js → daemon-restart-N2YOISNJ.js} +11 -6
  59. package/dist/daemon.js +230 -279
  60. package/dist/{db-BONH4SUG.js → db-BQFYIONA.js} +1 -1
  61. package/dist/{db-I4EH5SLF.js → db-JH3NTERX.js} +17 -3
  62. package/dist/delivery-manager-5EGCFN4K.js +41 -0
  63. package/dist/{delivery-notices-RZQ6GONP.js → delivery-notices-LZKZXWTX.js} +6 -6
  64. package/dist/{delivery-router-QS4NLJR6.js → delivery-router-U6Q22ZYU.js} +3 -3
  65. package/dist/doctor-225FYBAQ.js +454 -0
  66. package/dist/{down-UN2EDX2Y.js → down-3BQSPUAZ.js} +4 -4
  67. package/dist/echo-text-Y2DFTD7L.js +40 -0
  68. package/dist/{env-SQFCWW52.js → env-4YX5YNWZ.js} +2 -2
  69. package/dist/{exec-Z34TTUO3.js → exec-Y5VMDAVA.js} +2 -2
  70. package/dist/{export-VBNWM7I4.js → export-ASRHBMRG.js} +2 -2
  71. package/dist/{extensions-QT65JGV6.js → extensions-YEPEWURN.js} +27 -23
  72. package/dist/{files-PCKBQHAY.js → files-FASUDSZQ.js} +3 -3
  73. package/dist/{import-DB2KULRO.js → import-O35Y7DSF.js} +6 -6
  74. package/dist/{isolation-UQPDO34R.js → isolation-ZOAUXYXA.js} +2 -2
  75. package/dist/{login-57MMYILL.js → login-54TZQQP4.js} +5 -5
  76. package/dist/{logout-YFZAJRPY.js → logout-4G46Z4RU.js} +1 -1
  77. package/dist/message-delivery-HBTMGWFU.js +46 -0
  78. package/dist/{mind-CT6ANXK4.js → mind-IKMX7K7G.js} +8 -24
  79. package/dist/{mind-activity-tracker-QF6DCX2X.js → mind-activity-tracker-ABAEIMA3.js} +4 -4
  80. package/dist/mind-service-LRVOQG2T.js +48 -0
  81. package/dist/{mind-sleep-24HV4RCA.js → mind-sleep-LZAFBDZD.js} +2 -2
  82. package/dist/{package-F6S5NHY2.js → package-X5O7OD2E.js} +12 -13
  83. package/dist/{prompts-JECJIFPQ.js → prompts-ZNOE3KN3.js} +2 -2
  84. package/dist/{registry-TRC2HJXR.js → registry-BTQXLDW6.js} +1 -1
  85. package/dist/{sandbox-NNWCTHRI.js → sandbox-OUFAGN45.js} +3 -3
  86. package/dist/scheduler-G6BCIVGP.js +27 -0
  87. package/dist/{seed-cmd-6IMTO3LG.js → seed-cmd-BGAW3WDY.js} +2 -2
  88. package/dist/{seed-create-VNLDYRFK.js → seed-create-SMCPEUFQ.js} +3 -3
  89. package/dist/{seed-readiness-H5TTPAQH.js → seed-readiness-RBANMSWW.js} +3 -3
  90. package/dist/{seed-sprout-PPGYGK4G.js → seed-sprout-CSHV36N3.js} +9 -9
  91. package/dist/{send-UXUQKO4N.js → send-D3ADUBR5.js} +6 -6
  92. package/dist/{service-T4P5W6RS.js → service-SWEEBOOY.js} +3 -24
  93. package/dist/{service-install-R4SNYUVO.js → service-install-RCC26KDV.js} +4 -4
  94. package/dist/{setup-YUAQMDVZ.js → setup-L5NZG2U3.js} +5 -5
  95. package/dist/{setup-WZSXHHRJ.js → setup-R7Q4HFJP.js} +1 -5
  96. package/dist/skills/volute-mind/SKILL.md +8 -0
  97. package/dist/{skills-GMQ5UIIW.js → skills-BCCU4OJW.js} +4 -4
  98. package/dist/sleep-manager-25P44HAO.js +42 -0
  99. package/dist/{spirit-Q5VGFWUI.js → spirit-YPG2MU6W.js} +7 -7
  100. package/dist/spirit-availability-ZQM5IH4C.js +43 -0
  101. package/dist/{src-H3UCOP6B.js → src-246GSX7A.js} +5 -2
  102. package/dist/src-LOUB3WPR.js +4189 -0
  103. package/dist/{status-LCKTTIWS.js → status-BYPCJU6H.js} +4 -4
  104. package/dist/{system-events-Q7IVZ5T4.js → system-events-CWC7CBKP.js} +6 -4
  105. package/dist/{systems-HL7SGSW7.js → systems-VDRUZXNF.js} +2 -2
  106. package/dist/{tailscale-KHNZFC7L.js → tailscale-4XY7B5A2.js} +2 -2
  107. package/dist/{template-hash-YKWMVYMM.js → template-hash-RJRMF6DT.js} +2 -2
  108. package/dist/{template-staleness-PY2CULH6.js → template-staleness-CL4V7BT7.js} +5 -5
  109. package/dist/{turn-tracker-HZDPMSCC.js → turn-tracker-LZP5X6GZ.js} +8 -8
  110. package/dist/{up-XZDSJVMU.js → up-3AAN4GYY.js} +4 -4
  111. package/dist/{update-ILCPVNDD.js → update-2MWXRE2S.js} +4 -4
  112. package/dist/{update-check-SZ7B5IFI.js → update-check-PJOZXZYJ.js} +2 -2
  113. package/dist/variant-cleanup-K7RFMSH7.js +24 -0
  114. package/dist/{version-notify-VNVFX6UP.js → version-notify-QIDHR6WO.js} +12 -12
  115. package/dist/web-assets/assets/{index-CwtxGwe_.js → index-Bfvls20e.js} +17 -17
  116. package/dist/web-assets/assets/index-hPn_fkz3.css +1 -0
  117. package/dist/web-assets/index.html +2 -2
  118. package/drizzle/0000_crazy_epoch.sql +232 -0
  119. package/drizzle/README.md +42 -0
  120. package/drizzle/meta/0000_snapshot.json +1420 -3
  121. package/drizzle/meta/_journal.json +2 -128
  122. package/package.json +12 -13
  123. package/packages/extensions/intentions/dist/ui/assets/index-Bl5KEcli.js +67 -0
  124. package/packages/extensions/intentions/dist/ui/index.html +1 -1
  125. package/packages/extensions/pages/dist/ui/assets/index-BKxVQkA9.css +1 -0
  126. package/packages/extensions/pages/dist/ui/assets/index-BMt6sStP.js +68 -0
  127. package/packages/extensions/pages/dist/ui/index.html +2 -2
  128. package/packages/extensions/pages/skills/pages/SKILL.md +123 -4
  129. package/templates/_base/.init/.config/prompts.json +0 -1
  130. package/templates/_base/.init/.local/hooks/pre-prompt/turn-context.ts +30 -0
  131. package/templates/_base/src/lib/codex-session-seed.ts +6 -55
  132. package/templates/_base/src/lib/pi-session-seed.ts +8 -57
  133. package/templates/_base/src/lib/seed-note.ts +4 -4
  134. package/templates/_base/src/lib/session-seed.ts +8 -53
  135. package/templates/_base/src/lib/startup.ts +0 -20
  136. package/templates/claude/package.json +2 -2
  137. package/templates/claude/src/agent.ts +34 -102
  138. package/templates/claude/src/lib/hooks/pre-compact.ts +6 -6
  139. package/templates/claude/src/server.ts +0 -1
  140. package/templates/codex/package.json +2 -2
  141. package/templates/codex/src/agent.ts +23 -89
  142. package/templates/pi/package.json +1 -1
  143. package/templates/pi/src/agent.ts +26 -93
  144. package/templates/pi/src/server.ts +0 -1
  145. package/dist/auto-upgrade-HEVZKPTF.js +0 -46
  146. package/dist/chunk-AAPNU7GA.js +0 -168
  147. package/dist/delivery-manager-7R2YIQ2W.js +0 -41
  148. package/dist/echo-text-73CYQRL7.js +0 -40
  149. package/dist/message-delivery-TRKT4T2P.js +0 -46
  150. package/dist/migrate-name-placeholder-C7NCNLWF.js +0 -37
  151. package/dist/migrate-thread-config-EQSEP2XG.js +0 -90
  152. package/dist/mind-service-7EFIJ3ZA.js +0 -48
  153. package/dist/scheduler-73Q4MQ7Y.js +0 -27
  154. package/dist/seed-DRKAP3XV.js +0 -11
  155. package/dist/sleep-manager-KHI65FEX.js +0 -42
  156. package/dist/spirit-availability-G5FMWKRH.js +0 -43
  157. package/dist/sprout-PMTRL7QN.js +0 -11
  158. package/dist/src-3FIW7DLH.js +0 -2376
  159. package/dist/src-LTTQVN2Z.js +0 -832
  160. package/dist/variant-HHDTW74J.js +0 -62
  161. package/dist/variant-cleanup-QHGGY7ND.js +0 -24
  162. package/dist/web-assets/assets/index-DhM1yYRN.css +0 -1
  163. package/drizzle/0000_baseline.sql +0 -152
  164. package/drizzle/0001_add_conversation_private.sql +0 -1
  165. package/drizzle/0002_turns.sql +0 -21
  166. package/drizzle/0003_turn_feed_links.sql +0 -11
  167. package/drizzle/0004_spirits.sql +0 -5
  168. package/drizzle/0005_meta_summaries.sql +0 -15
  169. package/drizzle/0006_channels.sql +0 -17
  170. package/drizzle/0007_drop_conversation_name_title.sql +0 -11
  171. package/drizzle/0008_performance_indexes.sql +0 -6
  172. package/drizzle/0009_mind_notices.sql +0 -14
  173. package/drizzle/0010_delivery_queue_redrive.sql +0 -10
  174. package/drizzle/0011_drop_turn_summary_event_id.sql +0 -3
  175. package/drizzle/0012_channel_gates.sql +0 -17
  176. package/drizzle/0013_variant_purpose.sql +0 -3
  177. package/drizzle/0014_system_events.sql +0 -26
  178. package/drizzle/0015_rename_session_to_thread.sql +0 -12
  179. package/drizzle/0016_brain_to_human.sql +0 -4
  180. package/drizzle/0017_event_history_rows.sql +0 -9
  181. package/drizzle/0018_api_tokens.sql +0 -20
  182. package/drizzle/meta/0001_snapshot.json +0 -7
  183. package/drizzle/meta/0002_snapshot.json +0 -7
  184. package/drizzle/meta/0003_snapshot.json +0 -7
  185. package/drizzle/meta/0004_snapshot.json +0 -7
  186. package/drizzle/meta/0005_snapshot.json +0 -7
  187. package/drizzle/meta/0006_snapshot.json +0 -7
  188. package/drizzle/meta/0007_snapshot.json +0 -7
  189. package/packages/extensions/intentions/dist/ui/assets/index-CQz4aceM.js +0 -67
  190. package/packages/extensions/notes/dist/ui/assets/index-BBs8pyel.js +0 -67
  191. package/packages/extensions/notes/dist/ui/assets/index-D3cdui42.css +0 -1
  192. package/packages/extensions/notes/dist/ui/index.html +0 -14
  193. package/packages/extensions/notes/skills/notes/SKILL.md +0 -90
  194. package/packages/extensions/pages/dist/ui/assets/index-B589e8Xe.js +0 -2
  195. package/packages/extensions/pages/dist/ui/assets/index-BuXnE-rb.css +0 -1
  196. package/dist/{env-7AZFBPWX.js → env-IBW2QI6K.js} +5 -5
  197. package/dist/{login-4NUS72Z5.js → login-RJJTCVR3.js} +3 -3
  198. package/dist/{mind-contacts-PEXCDRXA.js → mind-contacts-KV64UDJS.js} +6 -6
  199. package/dist/{mind-history-RZMMCHMX.js → mind-history-H45GM2M2.js} +6 -6
  200. package/dist/{register-WNCSOTAU.js → register-OX4HRSGC.js} +3 -3
  201. package/dist/{restart-B4GNMVF2.js → restart-AGEGNSYQ.js} +4 -4
  202. package/dist/{skill-QYTBUDNQ.js → skill-B5OJEQUA.js} +4 -4
  203. package/dist/{start-BDHJVOVX.js → start-MUMNFR52.js} +3 -3
  204. package/dist/{stop-45QYSGYS.js → stop-EKERNYTX.js} +4 -4
@@ -1,21 +0,0 @@
1
- -- First-class turns: track turn lifecycle and link events/messages to turns
2
-
3
- CREATE TABLE IF NOT EXISTS `turns` (
4
- `id` text PRIMARY KEY NOT NULL,
5
- `mind` text NOT NULL,
6
- `session` text,
7
- `trigger_event_id` integer,
8
- `summary_event_id` integer,
9
- `status` text NOT NULL DEFAULT 'active',
10
- `created_at` text NOT NULL DEFAULT (datetime('now'))
11
- );
12
- --> statement-breakpoint
13
- CREATE INDEX IF NOT EXISTS `idx_turns_mind` ON `turns` (`mind`);
14
- --> statement-breakpoint
15
- CREATE INDEX IF NOT EXISTS `idx_turns_mind_status` ON `turns` (`mind`, `status`);
16
- --> statement-breakpoint
17
- ALTER TABLE `mind_history` ADD `turn_id` text;
18
- --> statement-breakpoint
19
- CREATE INDEX IF NOT EXISTS `idx_mind_history_turn_id` ON `mind_history` (`turn_id`);
20
- --> statement-breakpoint
21
- ALTER TABLE `messages` ADD `source_event_id` integer;
@@ -1,11 +0,0 @@
1
- -- Link feed items (messages, activities) to turns via turn_id
2
-
3
- ALTER TABLE `messages` ADD `turn_id` text;
4
- --> statement-breakpoint
5
- CREATE INDEX IF NOT EXISTS `idx_messages_turn_id` ON `messages` (`turn_id`);
6
- --> statement-breakpoint
7
- ALTER TABLE `activity` ADD `turn_id` text;
8
- --> statement-breakpoint
9
- ALTER TABLE `activity` ADD `source_event_id` integer;
10
- --> statement-breakpoint
11
- CREATE INDEX IF NOT EXISTS `idx_activity_turn_id` ON `activity` (`turn_id`);
@@ -1,5 +0,0 @@
1
- ALTER TABLE `minds` ADD `mind_type` text NOT NULL DEFAULT 'mind';
2
- --> statement-breakpoint
3
- ALTER TABLE `minds` ADD `created_by` text;
4
- --> statement-breakpoint
5
- CREATE INDEX IF NOT EXISTS `idx_minds_mind_type` ON `minds` (`mind_type`);
@@ -1,15 +0,0 @@
1
- CREATE TABLE IF NOT EXISTS `summaries` (
2
- `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
3
- `mind` text NOT NULL,
4
- `period` text NOT NULL,
5
- `period_key` text NOT NULL,
6
- `content` text NOT NULL,
7
- `metadata` text,
8
- `created_at` text NOT NULL DEFAULT (datetime('now'))
9
- );
10
- --> statement-breakpoint
11
- CREATE UNIQUE INDEX IF NOT EXISTS `idx_summaries_unique` ON `summaries` (`mind`, `period`, `period_key`);
12
- --> statement-breakpoint
13
- CREATE INDEX IF NOT EXISTS `idx_summaries_mind_period` ON `summaries` (`mind`, `period`);
14
- --> statement-breakpoint
15
- ALTER TABLE `turns` ADD `summary_id` integer REFERENCES `summaries`(`id`);
@@ -1,17 +0,0 @@
1
- CREATE TABLE IF NOT EXISTS `channels` (
2
- `conversation_id` text PRIMARY KEY NOT NULL,
3
- `name` text NOT NULL,
4
- `description` text,
5
- `rules` text,
6
- `char_limit` integer,
7
- `private` integer NOT NULL DEFAULT 0,
8
- `created_at` text NOT NULL DEFAULT (datetime('now')),
9
- `updated_at` text NOT NULL DEFAULT (datetime('now')),
10
- FOREIGN KEY (`conversation_id`) REFERENCES `conversations`(`id`) ON UPDATE no action ON DELETE cascade
11
- );
12
- --> statement-breakpoint
13
- CREATE UNIQUE INDEX IF NOT EXISTS `idx_channels_name` ON `channels` (`name`);
14
- --> statement-breakpoint
15
- INSERT INTO `channels` (`conversation_id`, `name`, `private`, `created_at`, `updated_at`)
16
- SELECT `id`, `name`, `private`, `created_at`, `updated_at`
17
- FROM `conversations` WHERE `type` = 'channel' AND `name` IS NOT NULL;
@@ -1,11 +0,0 @@
1
- DROP INDEX IF EXISTS idx_conversations_name;
2
- --> statement-breakpoint
3
- DROP INDEX IF EXISTS idx_conversations_mind_name;
4
- --> statement-breakpoint
5
- ALTER TABLE conversations DROP COLUMN name;
6
- --> statement-breakpoint
7
- ALTER TABLE conversations DROP COLUMN title;
8
- --> statement-breakpoint
9
- ALTER TABLE conversations DROP COLUMN mind_name;
10
- --> statement-breakpoint
11
- ALTER TABLE conversations DROP COLUMN channel;
@@ -1,6 +0,0 @@
1
- CREATE INDEX IF NOT EXISTS `idx_turns_mind_created_at` ON `turns` (`mind`,`created_at`);
2
- CREATE INDEX IF NOT EXISTS `idx_mind_history_session` ON `mind_history` (`session`);
3
- CREATE INDEX IF NOT EXISTS `idx_mind_history_mind_created_at` ON `mind_history` (`mind`,`created_at`);
4
- CREATE INDEX IF NOT EXISTS `idx_summaries_mind_period_key` ON `summaries` (`mind`,`period_key`);
5
- CREATE INDEX IF NOT EXISTS `idx_activity_type` ON `activity` (`type`);
6
- CREATE INDEX IF NOT EXISTS `idx_delivery_queue_status` ON `delivery_queue` (`status`);
@@ -1,14 +0,0 @@
1
- -- Failure notices delivered to minds on their next successful turn
2
-
3
- CREATE TABLE IF NOT EXISTS `mind_notices` (
4
- `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
5
- `mind` text NOT NULL,
6
- `session` text NOT NULL,
7
- `kind` text NOT NULL,
8
- `reason` text NOT NULL,
9
- `detail` text NOT NULL,
10
- `raw` text,
11
- `created_at` text NOT NULL DEFAULT (datetime('now'))
12
- );
13
- --> statement-breakpoint
14
- CREATE INDEX IF NOT EXISTS `idx_mind_notices_mind_session` ON `mind_notices` (`mind`, `session`);
@@ -1,10 +0,0 @@
1
- -- Make delivery_queue an at-least-once queue: track attempts and a backoff
2
- -- window so a redrive loop can re-deliver stranded rows without hot-looping.
3
-
4
- ALTER TABLE `delivery_queue` ADD `attempts` integer DEFAULT 0 NOT NULL;--> statement-breakpoint
5
- ALTER TABLE `delivery_queue` ADD `next_attempt_at` text;--> statement-breakpoint
6
- -- Original delivery target (may be a variant name); redrive resolves the port from
7
- -- this so a variant's stranded row is re-delivered to the variant, not the parent.
8
- -- Nullable: legacy rows fall back to `mind` (the base name) at read time.
9
- ALTER TABLE `delivery_queue` ADD `target_mind` text;--> statement-breakpoint
10
- CREATE INDEX IF NOT EXISTS `idx_delivery_queue_status_next` ON `delivery_queue` (`status`, `next_attempt_at`);
@@ -1,3 +0,0 @@
1
- -- Drop the dead turns.summary_event_id column (superseded by summary_id, never written).
2
-
3
- ALTER TABLE `turns` DROP COLUMN `summary_event_id`;
@@ -1,17 +0,0 @@
1
- -- Per-(mind, channel) gate state so a mind can explicitly decline an unrouted
2
- -- channel. Absence of a row means "pending" (undecided); the only stored state
3
- -- is "declined". Declined channels are never released and never re-notify.
4
- CREATE TABLE `channel_gates` (
5
- `mind` text NOT NULL,
6
- `channel` text NOT NULL,
7
- `state` text NOT NULL,
8
- `updated_at` text DEFAULT (datetime('now')) NOT NULL,
9
- PRIMARY KEY(`mind`, `channel`)
10
- );
11
- --> statement-breakpoint
12
- -- Backfill: archive stale gated rows so the first routes.json edit on an existing
13
- -- mind with a months-old backlog can't release hundreds of messages at once. The
14
- -- bounded release only ever promotes the newest N per channel anyway; anything
15
- -- older than a week is treated as history and made inert here.
16
- UPDATE `delivery_queue` SET `status` = 'archived'
17
- WHERE `status` = 'gated' AND `created_at` < datetime('now', '-7 days');
@@ -1,3 +0,0 @@
1
- -- Purpose/intent captured at split time, recorded on the variant's row so it can
2
- -- orient the variant, feed the variant list UI, and default the join message.
3
- ALTER TABLE `minds` ADD `purpose` text;
@@ -1,26 +0,0 @@
1
- -- System events: environment → mind traffic (replaces mind_notices).
2
- -- No sender, no reply target; a separate stream from chat.
3
-
4
- CREATE TABLE IF NOT EXISTS `system_events` (
5
- `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
6
- `mind` text NOT NULL,
7
- `type` text NOT NULL,
8
- `body` text NOT NULL,
9
- `meta` text,
10
- `delivery` text NOT NULL DEFAULT 'immediate',
11
- `session` text NOT NULL DEFAULT 'main',
12
- `created_at` text NOT NULL DEFAULT (datetime('now')),
13
- `delivered_at` text,
14
- `reflection` text
15
- );
16
- --> statement-breakpoint
17
- CREATE INDEX IF NOT EXISTS `idx_system_events_mind` ON `system_events` (`mind`);
18
- --> statement-breakpoint
19
- CREATE INDEX IF NOT EXISTS `idx_system_events_mind_delivery` ON `system_events` (`mind`, `delivery`, `delivered_at`);
20
- --> statement-breakpoint
21
- CREATE INDEX IF NOT EXISTS `idx_system_events_mind_type` ON `system_events` (`mind`, `type`);
22
- --> statement-breakpoint
23
- -- Deliberately discards any pending mind_notices rows at upgrade: notice rows were
24
- -- transient (deleted after delivery), so losing an undelivered failure notice across
25
- -- an upgrade is acceptable — no data migration is performed.
26
- DROP TABLE IF EXISTS `mind_notices`;
@@ -1,12 +0,0 @@
1
- -- Rename the routing "session" column to "thread" on turns, mind_history,
2
- -- delivery_queue, and system_events. The routing sense of "session" is renamed
3
- -- to "thread" (issue #493); auth sessions and SDK transcript files keep "session".
4
- ALTER TABLE `turns` RENAME COLUMN `session` TO `thread`;--> statement-breakpoint
5
- ALTER TABLE `mind_history` RENAME COLUMN `session` TO `thread`;--> statement-breakpoint
6
- DROP INDEX IF EXISTS `idx_mind_history_session`;--> statement-breakpoint
7
- CREATE INDEX IF NOT EXISTS `idx_mind_history_thread` ON `mind_history` (`thread`);--> statement-breakpoint
8
- ALTER TABLE `delivery_queue` RENAME COLUMN `session` TO `thread`;--> statement-breakpoint
9
- DROP INDEX IF EXISTS `idx_delivery_queue_mind_session`;--> statement-breakpoint
10
- CREATE INDEX IF NOT EXISTS `idx_delivery_queue_mind_thread` ON `delivery_queue` (`mind`, `thread`);--> statement-breakpoint
11
- -- system_events is created by 0014 on this same train, so the rename is always valid.
12
- ALTER TABLE `system_events` RENAME COLUMN `session` TO `thread`;
@@ -1,4 +0,0 @@
1
- -- Retire the "brain" user_type in favour of "human" (issue #493). Human users
2
- -- were stored as user_type = 'brain'; migrate live rows so prefixes and profile
3
- -- cards render [human]. Mind, system, and puppet types are unchanged.
4
- UPDATE `users` SET `user_type` = 'human' WHERE `user_type` = 'brain';
@@ -1,9 +0,0 @@
1
- -- System events are not messages. They were recorded in mind_history as `inbound` rows,
2
- -- so every history surface rendered them as chat with a phantom sender ("user"), and minds
3
- -- read them as messages they were expected to reply to. Retype the delivered-event rows so
4
- -- the timeline and `volute mind history` can render them as system markers instead.
5
- --
6
- -- The `event:<type>:<id>` channel is written only by recordEventRow, so it identifies
7
- -- these rows exactly. Turn linkage (turn_id / trigger_event_id) is untouched — the linkers
8
- -- match both types, so reflection capture keeps working for historical turns.
9
- UPDATE `mind_history` SET `type` = 'event' WHERE `type` = 'inbound' AND `channel` LIKE 'event:%';
@@ -1,20 +0,0 @@
1
- -- Durable, hashed, revocable per-user API credentials.
2
- --
3
- -- Keyed to a `users` row rather than a mind name, so the same token type serves
4
- -- external minds (users rows with user_type "mind" and no minds registry row)
5
- -- and, later, external humans. Only the SHA-256 hash is stored; revocation is a
6
- -- row DELETE, and the FK cascade drops a user's tokens along with the user.
7
- --
8
- -- Orthogonal to the in-memory native-mind token map: these survive a restart.
9
-
10
- CREATE TABLE IF NOT EXISTS `api_tokens` (
11
- `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
12
- `user_id` integer NOT NULL REFERENCES `users`(`id`) ON DELETE CASCADE,
13
- `token_hash` text NOT NULL,
14
- `label` text,
15
- `created_at` text NOT NULL DEFAULT (datetime('now'))
16
- );
17
- --> statement-breakpoint
18
- CREATE UNIQUE INDEX IF NOT EXISTS `idx_api_tokens_hash` ON `api_tokens` (`token_hash`);
19
- --> statement-breakpoint
20
- CREATE INDEX IF NOT EXISTS `idx_api_tokens_user` ON `api_tokens` (`user_id`);
@@ -1,7 +0,0 @@
1
- {
2
- "id": "0001_add_conversation_private",
3
- "prevId": "0000_baseline",
4
- "version": "6",
5
- "dialect": "sqlite",
6
- "tables": {}
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "id": "0002_turns",
3
- "prevId": "0001_add_conversation_private",
4
- "version": "6",
5
- "dialect": "sqlite",
6
- "tables": {}
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "id": "0003_turn_feed_links",
3
- "prevId": "0002_turns",
4
- "version": "6",
5
- "dialect": "sqlite",
6
- "tables": {}
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "id": "0004_spirits",
3
- "prevId": "0003_turn_feed_links",
4
- "version": "6",
5
- "dialect": "sqlite",
6
- "tables": {}
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "id": "0005_meta_summaries",
3
- "prevId": "0004_spirits",
4
- "version": "6",
5
- "dialect": "sqlite",
6
- "tables": {}
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "id": "0006_channels",
3
- "prevId": "0005_meta_summaries",
4
- "version": "6",
5
- "dialect": "sqlite",
6
- "tables": {}
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "id": "0007_drop_conversation_name_title",
3
- "prevId": "0006_channels",
4
- "version": "6",
5
- "dialect": "sqlite",
6
- "tables": {}
7
- }