volute 0.30.1 → 0.32.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/README.md +15 -22
- package/dist/{accept-E3PAH3QJ.js → accept-74M7I4RZ.js} +5 -4
- package/dist/{activity-events-BKBPPUBP.js → activity-events-HETAODOK.js} +3 -2
- package/dist/{ai-service-VAJT5UBS.js → ai-service-ZIPCV3MX.js} +20 -5
- package/dist/api.d.ts +341 -397
- package/dist/{archive-WWDBWYN2.js → archive-INXYFVCW.js} +3 -2
- package/dist/auth-6DMGES3I.js +44 -0
- package/dist/{bridge-RO37CUFM.js → bridge-BVCBTGPF.js} +5 -4
- package/dist/{chat-TCUNPFGO.js → chat-XT4OBJBU.js} +8 -8
- package/dist/{chunk-P7VFDSSG.js → chunk-2FLJ63GU.js} +2 -2
- package/dist/{chunk-ZWKTUQEL.js → chunk-2NGTS5UU.js} +1 -1
- package/dist/{chunk-JGFRDMR6.js → chunk-ALEF47VT.js} +1 -1
- package/dist/{chunk-MDPCSXZ4.js → chunk-D5G5YOPL.js} +163 -15
- package/dist/{chunk-VGWJSNHS.js → chunk-G53F3JA4.js} +1 -35
- package/dist/{chunk-A6TUJJ3L.js → chunk-G6BSYHPK.js} +2 -2
- package/dist/{chunk-DTC6EH5I.js → chunk-I5KY25PQ.js} +1 -9
- package/dist/{chunk-NSBFETWP.js → chunk-IYDIE3HG.js} +64 -26
- package/dist/{chunk-W5OOPLNP.js → chunk-JJ7W6WSB.js} +3 -3
- package/dist/{chunk-G3GBKZGG.js → chunk-LGB6JBHI.js} +54 -2
- package/dist/chunk-LRCG2JLP.js +251 -0
- package/dist/{chunk-FXHXHI2A.js → chunk-LSGWR54X.js} +3 -6
- package/dist/{chunk-S5LR3XYJ.js → chunk-M7UL5S3Q.js} +1 -1
- package/dist/chunk-PB65JZK2.js +85 -0
- package/dist/chunk-PVY5W6QN.js +41 -0
- package/dist/{chunk-QVAQ5454.js → chunk-QBQ424EM.js} +3007 -2126
- package/dist/{chunk-P27RV5WM.js → chunk-QZANELPX.js} +6 -2
- package/dist/{chunk-FSM45XD5.js → chunk-R7E6CRVQ.js} +1 -1
- package/dist/{chunk-HHTXM4JT.js → chunk-RPZZSXV3.js} +39 -195
- package/dist/{chunk-UPA6COHU.js → chunk-RSX4OPZY.js} +5 -5
- package/dist/{chunk-2C2VXEBB.js → chunk-S6NFERDC.js} +21 -57
- package/dist/chunk-SKLSMHXO.js +208 -0
- package/dist/{chunk-IKHDUZRH.js → chunk-SX5TKJBZ.js} +2 -2
- package/dist/chunk-TDRYEPH4.js +185 -0
- package/dist/chunk-TSXLLQZW.js +46 -0
- package/dist/{chunk-EFVHR7KH.js → chunk-UKVWJRKN.js} +24 -5
- package/dist/{chunk-2NDZC3S7.js → chunk-WKF5FEFK.js} +688 -389
- package/dist/cli.js +93 -24
- package/dist/{clock-G3ALCMLJ.js → clock-2UOZ6JPU.js} +11 -8
- package/dist/{cloud-sync-JV4LJOK3.js → cloud-sync-JN3NWKEM.js} +16 -14
- package/dist/config-H2H4UIF7.js +72 -0
- package/dist/connectors/discord-bridge.js +1 -1
- package/dist/connectors/slack-bridge.js +1 -1
- package/dist/connectors/telegram-bridge.js +1 -1
- package/dist/{conversations-7KVQV7EZ.js → conversations-3O5O6AS3.js} +8 -7
- package/dist/{create-JTLS7GX3.js → create-RNLNCORE.js} +5 -4
- package/dist/{create-VQSQHJQW.js → create-WBBYI6V7.js} +6 -2
- package/dist/daemon-client-6QXHZ7US.js +12 -0
- package/dist/{daemon-restart-4JGBHEJ4.js → daemon-restart-NGFHFAUF.js} +7 -7
- package/dist/daemon.js +2446 -1999
- package/dist/{db-HMFPIRO2.js → db-F34YLV7D.js} +2 -1
- package/dist/db-RA45JBFG.js +16 -0
- package/dist/{delete-JESHKE7F.js → delete-QTGWEDBI.js} +1 -1
- package/dist/delivery-manager-SDVXFD4W.js +28 -0
- package/dist/delivery-router-FL45JL7N.js +21 -0
- package/dist/down-TB3ESMNP.js +14 -0
- package/dist/{env-CLXXT7M2.js → env-RLYQBOOP.js} +5 -4
- package/dist/{export-EGA5M5PB.js → export-SUYRLI5Q.js} +4 -3
- package/dist/{extension-WZ4SUPJB.js → extension-FQ5D3NCC.js} +6 -6
- package/dist/{extensions-ECO4RPFQ.js → extensions-GDYWQXC4.js} +9 -7
- package/dist/{files-4VEJDASH.js → files-EAMPO2SJ.js} +6 -5
- package/dist/{history-EJMMLXDO.js → history-FO5PHBQ5.js} +9 -4
- package/dist/{import-YCGPMBSI.js → import-DDUFE7AY.js} +4 -3
- package/dist/{join-2GBJKZEN.js → join-I5QEE3LG.js} +1 -1
- package/dist/{list-Q6O7FGAN.js → list-DW2VRTOZ.js} +5 -4
- package/dist/{login-RL6AU2SM.js → login-7CHPW2PN.js} +5 -4
- package/dist/{login-RET5WESK.js → login-RIJF2F4G.js} +3 -2
- package/dist/{logout-CGAGJN3L.js → logout-5MLHZALK.js} +3 -2
- package/dist/{logout-JRPBEMMR.js → logout-UZJRGY4Z.js} +3 -2
- package/dist/message-delivery-2FIM7QKO.js +32 -0
- package/dist/{mind-LUWRQUQ5.js → mind-2B6M7Y25.js} +18 -18
- package/dist/{mind-activity-tracker-VYN2ZZ2M.js → mind-activity-tracker-NZZT2NTT.js} +4 -3
- package/dist/{mind-list-V5WW5DUA.js → mind-list-WUPMQDYQ.js} +3 -2
- package/dist/mind-manager-BNCMGYXW.js +28 -0
- package/dist/mind-service-AV273WT4.js +34 -0
- package/dist/{mind-sleep-R6PTNNW4.js → mind-sleep-B7BHJLH7.js} +5 -4
- package/dist/{mind-status-I4ISFJ6I.js → mind-status-L3EFFRPR.js} +3 -2
- package/dist/{mind-wake-67ZQEWAV.js → mind-wake-GY3RFX7Y.js} +5 -4
- package/dist/{package-OYUD4ZJ4.js → package-PK6JUFL3.js} +3 -3
- package/dist/read-5AMJRO3D.js +75 -0
- package/dist/{register-NZDSTLP3.js → register-V2JZZKFK.js} +5 -4
- package/dist/{registry-ODSALQQL.js → registry-PJ4S5PHQ.js} +8 -1
- package/dist/{reject-2HZOJEIJ.js → reject-33HEZMZ4.js} +5 -4
- package/dist/{restart-QHS3NT64.js → restart-3UCMRUVC.js} +5 -4
- package/dist/{sandbox-O5FUSF43.js → sandbox-JANNTX6U.js} +4 -3
- package/dist/schema-PA3M5ZKH.js +32 -0
- package/dist/seed-ALUQ55FF.js +112 -0
- package/dist/{send-OAN3RYYY.js → send-3MI36LEF.js} +58 -69
- package/dist/{setup-QMDK5RZX.js → setup-SZIARWI6.js} +5 -4
- package/dist/{setup-XJH3E7YM.js → setup-WENLVPVP.js} +9 -9
- package/dist/{skill-FZIN4W4Q.js → skill-TUVOTW4Z.js} +5 -4
- package/dist/skills/dreaming/SKILL.md +6 -4
- package/dist/skills/dreaming/references/INSTALL.md +4 -5
- package/dist/skills/dreaming/scripts/dream.ts +5 -27
- package/dist/skills/dreaming/scripts/wake-context-dreams.sh +1 -1
- package/dist/skills/imagegen/SKILL.md +6 -5
- package/dist/skills/imagegen/references/INSTALL.md +1 -1
- package/dist/skills/resonance/SKILL.md +4 -1
- package/dist/skills/resonance/references/INSTALL.md +2 -2
- package/dist/skills/resonance/scripts/resonance-hook.sh +2 -0
- package/dist/skills/resonance/scripts/resonance.ts +35 -5
- package/dist/skills/volute-admin/SKILL.md +83 -0
- package/dist/skills/volute-mind/SKILL.md +12 -12
- package/dist/skills-XNZK6P4K.js +61 -0
- package/dist/sleep-manager-53DZOWW7.js +32 -0
- package/dist/spirit-N4W4UQRH.js +217 -0
- package/dist/{split-EXYGGGQN.js → split-STOROBYJ.js} +1 -1
- package/dist/{sprout-AXQ6H5DB.js → sprout-L2GFOVF7.js} +9 -8
- package/dist/{start-MTOVL6SY.js → start-K2NCUUCG.js} +5 -4
- package/dist/{status-ZRO37MWR.js → status-TCUMUO6M.js} +5 -5
- package/dist/{stop-OK5WEPVC.js → stop-H26JZDXF.js} +5 -4
- package/dist/system-chat-NPYFYZVI.js +32 -0
- package/dist/{systems-W3BBMSOZ.js → systems-DHBKVYEY.js} +6 -5
- package/dist/{tailscale-BM72RXCJ.js → tailscale-XHQBZROW.js} +2 -1
- package/dist/{template-hash-3HOR4UAJ.js → template-hash-A6VVKOXJ.js} +2 -1
- package/dist/up-6I6BHRTO.js +17 -0
- package/dist/{update-PLPHMMZ2.js → update-QVPRF6GR.js} +5 -5
- package/dist/{update-check-CVCN7MF6.js → update-check-ZD6OOIYQ.js} +3 -2
- package/dist/{upgrade-I6NPCYUU.js → upgrade-O4Q7WJM3.js} +12 -14
- package/dist/{version-notify-2NTWVEHL.js → version-notify-TCKWBZZG.js} +22 -23
- package/dist/web-assets/assets/index-Bui7U9Uu.css +1 -0
- package/dist/web-assets/assets/index-e36DIo1b.js +73 -0
- package/dist/web-assets/ext-theme.css +94 -0
- package/dist/web-assets/index.html +2 -2
- package/drizzle/0000_baseline.sql +152 -0
- package/drizzle/0001_add_conversation_private.sql +1 -0
- package/drizzle/0002_turns.sql +21 -0
- package/drizzle/0003_turn_feed_links.sql +11 -0
- package/drizzle/0004_spirits.sql +5 -0
- package/drizzle/meta/0000_snapshot.json +3 -223
- package/drizzle/meta/0001_snapshot.json +3 -294
- package/drizzle/meta/0002_snapshot.json +3 -335
- package/drizzle/meta/0003_snapshot.json +3 -413
- package/drizzle/meta/0004_snapshot.json +3 -406
- package/drizzle/meta/_journal.json +10 -101
- package/package.json +3 -3
- package/packages/extensions/notes/dist/ui/assets/index-8jWEv9SA.js +61 -0
- package/packages/extensions/notes/dist/ui/assets/index-DkaB7Ytd.css +1 -0
- package/packages/extensions/notes/dist/ui/index.html +2 -2
- package/packages/extensions/notes/skills/notes/SKILL.md +8 -8
- package/packages/extensions/pages/skills/pages/SKILL.md +17 -44
- package/templates/_base/.init/.config/hooks/pre-prompt/session-activity.ts +40 -0
- package/templates/_base/.init/.local/bin/volute +27 -0
- package/templates/_base/.init/.local/hooks/pre-prompt/session-activity.ts +40 -0
- package/templates/_base/.init/.local/hooks/startup-context.ts +58 -0
- package/templates/_base/home/.config/routes.json +1 -1
- package/templates/_base/src/lib/auto-commit.ts +82 -43
- package/templates/_base/src/lib/daemon-client.ts +40 -36
- package/templates/_base/src/lib/format-prefix.ts +1 -0
- package/templates/_base/src/lib/hook-loader.ts +155 -0
- package/templates/_base/src/lib/router.ts +17 -1
- package/templates/_base/src/lib/startup.ts +17 -12
- package/templates/_base/src/lib/transparency.ts +2 -2
- package/templates/_base/src/lib/volute-server.ts +2 -5
- package/templates/claude/.init/.claude/settings.json +1 -1
- package/templates/claude/.init/.config/routes.json +2 -2
- package/templates/claude/src/agent.ts +97 -14
- package/templates/claude/src/lib/hooks/auto-commit.ts +7 -3
- package/templates/claude/src/lib/message-channel.ts +7 -2
- package/templates/claude/src/server.ts +0 -9
- package/templates/codex/.init/.config/routes.json +11 -0
- package/templates/codex/.init/AGENTS.md +29 -0
- package/templates/codex/home/.config/config.json.tmpl +7 -0
- package/templates/codex/package.json.tmpl +20 -0
- package/templates/codex/src/agent.ts +553 -0
- package/templates/codex/src/lib/content.ts +16 -0
- package/templates/codex/src/lib/session-store.ts +56 -0
- package/templates/codex/src/server.ts +59 -0
- package/templates/codex/volute-template.json +8 -0
- package/templates/pi/.init/.config/routes.json +2 -2
- package/templates/pi/package.json.tmpl +1 -1
- package/templates/pi/src/agent.ts +63 -9
- package/templates/pi/src/lib/event-handler.ts +6 -4
- package/templates/pi/src/lib/reply-instructions-extension.ts +32 -11
- package/dist/chunk-7D47T4RB.js +0 -84
- package/dist/chunk-CVH6Y2YG.js +0 -59
- package/dist/chunk-EFP3PE6C.js +0 -232
- package/dist/chunk-LIRWLNAK.js +0 -729
- package/dist/daemon-client-BCTFGVCZ.js +0 -9
- package/dist/down-NGBMGORS.js +0 -14
- package/dist/message-delivery-6YMVNOEC.js +0 -28
- package/dist/migrate-registry-to-db-FK35IPEH.js +0 -110
- package/dist/mind-manager-YFCOIAAX.js +0 -18
- package/dist/pages-watcher-Z3PKNROC.js +0 -21
- package/dist/read-WQMPTSN2.js +0 -46
- package/dist/seed-WUQMPLDM.js +0 -71
- package/dist/skills/sessions/SKILL.md +0 -49
- package/dist/sleep-manager-O7YQFCV5.js +0 -30
- package/dist/up-BXUAIDXB.js +0 -17
- package/dist/web-assets/assets/index--kREqKl9.js +0 -72
- package/dist/web-assets/assets/index-BXYTG0nJ.css +0 -1
- package/drizzle/0000_flaky_mariko_yashida.sql +0 -34
- package/drizzle/0001_careless_warpath.sql +0 -12
- package/drizzle/0002_wealthy_the_call.sql +0 -6
- package/drizzle/0003_clean_ego.sql +0 -12
- package/drizzle/0004_magical_silverclaw.sql +0 -1
- package/drizzle/0005_rename_agents_to_minds.sql +0 -11
- package/drizzle/0006_mind_history.sql +0 -20
- package/drizzle/0007_system_prompts.sql +0 -5
- package/drizzle/0008_volute_channels.sql +0 -24
- package/drizzle/0009_shared_skills.sql +0 -9
- package/drizzle/0010_delivery_queue.sql +0 -12
- package/drizzle/0011_rename_human_to_brain.sql +0 -1
- package/drizzle/0012_activity.sql +0 -11
- package/drizzle/0013_user_profiles.sql +0 -3
- package/drizzle/0014_conversation_reads.sql +0 -7
- package/drizzle/0015_notes.sql +0 -23
- package/drizzle/0016_note_reactions_and_replies.sql +0 -15
- package/drizzle/0017_minds.sql +0 -16
- package/drizzle/meta/0005_snapshot.json +0 -410
- package/drizzle/meta/0006_snapshot.json +0 -7
- package/drizzle/meta/0007_snapshot.json +0 -7
- package/drizzle/meta/0008_snapshot.json +0 -7
- package/drizzle/meta/0009_snapshot.json +0 -7
- package/drizzle/meta/0010_snapshot.json +0 -7
- package/drizzle/meta/0011_snapshot.json +0 -7
- package/drizzle/meta/0012_snapshot.json +0 -7
- package/drizzle/meta/0013_snapshot.json +0 -7
- package/packages/extensions/notes/dist/ui/assets/index-DgawVO5g.css +0 -1
- package/packages/extensions/notes/dist/ui/assets/index-qUWoeC4c.js +0 -2
- package/packages/extensions/notes/skills/notes/scripts/notes.mjs +0 -185
- package/templates/_base/.init/.config/hooks/startup-context.sh +0 -46
- package/templates/_base/.init/.config/scripts/session-reader.ts +0 -59
- package/templates/_base/home/public/.gitkeep +0 -0
- package/templates/_base/src/lib/session-monitor.ts +0 -400
- package/templates/claude/src/lib/hooks/session-context.ts +0 -32
- package/templates/pi/src/lib/session-context-extension.ts +0 -35
- /package/templates/_base/.init/{.config → .local}/hooks/wake-context.sh +0 -0
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
--yellow-dim: #78350f;
|
|
22
22
|
--blue: #60a5fa;
|
|
23
23
|
--purple: #c084fc;
|
|
24
|
+
--green: #4ade80;
|
|
24
25
|
--overlay: rgba(0, 0, 0, 0.6);
|
|
25
26
|
--yellow-bg: rgba(251, 191, 36, 0.08);
|
|
26
27
|
--blue-bg: rgba(96, 165, 250, 0.08);
|
|
@@ -109,3 +110,96 @@ button:focus-visible {
|
|
|
109
110
|
transform: translateY(0);
|
|
110
111
|
}
|
|
111
112
|
}
|
|
113
|
+
|
|
114
|
+
/* Markdown rendering */
|
|
115
|
+
.markdown-body {
|
|
116
|
+
word-break: break-word;
|
|
117
|
+
color: var(--text-0);
|
|
118
|
+
line-height: 1.6;
|
|
119
|
+
}
|
|
120
|
+
.markdown-body p {
|
|
121
|
+
margin: 0 0 8px;
|
|
122
|
+
}
|
|
123
|
+
.markdown-body p:last-child {
|
|
124
|
+
margin-bottom: 0;
|
|
125
|
+
}
|
|
126
|
+
.markdown-body pre {
|
|
127
|
+
background: var(--bg-3);
|
|
128
|
+
border: 1px solid var(--border);
|
|
129
|
+
border-radius: var(--radius);
|
|
130
|
+
padding: 10px 12px;
|
|
131
|
+
overflow-x: auto;
|
|
132
|
+
margin: 8px 0;
|
|
133
|
+
font-size: 13px;
|
|
134
|
+
line-height: 1.5;
|
|
135
|
+
}
|
|
136
|
+
.markdown-body code {
|
|
137
|
+
font-family: var(--mono);
|
|
138
|
+
font-size: 13px;
|
|
139
|
+
background: var(--bg-3);
|
|
140
|
+
padding: 1px 4px;
|
|
141
|
+
border-radius: 3px;
|
|
142
|
+
}
|
|
143
|
+
.markdown-body pre code {
|
|
144
|
+
background: none;
|
|
145
|
+
padding: 0;
|
|
146
|
+
}
|
|
147
|
+
.markdown-body a {
|
|
148
|
+
color: var(--blue);
|
|
149
|
+
text-decoration: underline;
|
|
150
|
+
}
|
|
151
|
+
.markdown-body ul,
|
|
152
|
+
.markdown-body ol {
|
|
153
|
+
margin: 4px 0;
|
|
154
|
+
padding-left: 20px;
|
|
155
|
+
}
|
|
156
|
+
.markdown-body li {
|
|
157
|
+
margin: 2px 0;
|
|
158
|
+
}
|
|
159
|
+
.markdown-body h1,
|
|
160
|
+
.markdown-body h2,
|
|
161
|
+
.markdown-body h3,
|
|
162
|
+
.markdown-body h4,
|
|
163
|
+
.markdown-body h5,
|
|
164
|
+
.markdown-body h6 {
|
|
165
|
+
margin: 12px 0 6px;
|
|
166
|
+
font-weight: 600;
|
|
167
|
+
color: var(--text-0);
|
|
168
|
+
}
|
|
169
|
+
.markdown-body h1 {
|
|
170
|
+
font-size: 18px;
|
|
171
|
+
}
|
|
172
|
+
.markdown-body h2 {
|
|
173
|
+
font-size: 16px;
|
|
174
|
+
}
|
|
175
|
+
.markdown-body h3 {
|
|
176
|
+
font-size: 15px;
|
|
177
|
+
}
|
|
178
|
+
.markdown-body blockquote {
|
|
179
|
+
border-left: 3px solid var(--border-bright);
|
|
180
|
+
margin: 8px 0;
|
|
181
|
+
padding: 4px 12px;
|
|
182
|
+
color: var(--text-1);
|
|
183
|
+
}
|
|
184
|
+
.markdown-body table {
|
|
185
|
+
border-collapse: collapse;
|
|
186
|
+
margin: 8px 0;
|
|
187
|
+
}
|
|
188
|
+
.markdown-body th,
|
|
189
|
+
.markdown-body td {
|
|
190
|
+
border: 1px solid var(--border);
|
|
191
|
+
padding: 6px 10px;
|
|
192
|
+
font-size: 13px;
|
|
193
|
+
}
|
|
194
|
+
.markdown-body th {
|
|
195
|
+
background: var(--bg-3);
|
|
196
|
+
font-weight: 600;
|
|
197
|
+
}
|
|
198
|
+
.markdown-body hr {
|
|
199
|
+
border: none;
|
|
200
|
+
border-top: 1px solid var(--border);
|
|
201
|
+
margin: 12px 0;
|
|
202
|
+
}
|
|
203
|
+
.markdown-body img {
|
|
204
|
+
max-width: 100%;
|
|
205
|
+
}
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
9
9
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
10
10
|
<link href="https://fonts.googleapis.com/css2?family=Averia+Serif+Libre:wght@300;400;700&family=Fira+Code:wght@300;400;500;600&family=Averia+Sans+Libre:ital,wght@0,300;0,400;0,500;0,600;1,400&display=swap" rel="stylesheet" />
|
|
11
|
-
<script type="module" crossorigin src="/assets/index
|
|
12
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
11
|
+
<script type="module" crossorigin src="/assets/index-e36DIo1b.js"></script>
|
|
12
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Bui7U9Uu.css">
|
|
13
13
|
</head>
|
|
14
14
|
<body>
|
|
15
15
|
<div id="root"></div>
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
-- Baseline schema: all tables as of v0.30.x
|
|
2
|
+
-- Uses IF NOT EXISTS so existing installs safely skip everything.
|
|
3
|
+
|
|
4
|
+
CREATE TABLE IF NOT EXISTS `users` (
|
|
5
|
+
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
6
|
+
`username` text NOT NULL,
|
|
7
|
+
`password_hash` text NOT NULL,
|
|
8
|
+
`role` text NOT NULL DEFAULT 'pending',
|
|
9
|
+
`user_type` text NOT NULL DEFAULT 'brain',
|
|
10
|
+
`display_name` text,
|
|
11
|
+
`description` text,
|
|
12
|
+
`avatar` text,
|
|
13
|
+
`created_at` text NOT NULL DEFAULT (datetime('now'))
|
|
14
|
+
);
|
|
15
|
+
--> statement-breakpoint
|
|
16
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `users_username_unique` ON `users` (`username`);
|
|
17
|
+
--> statement-breakpoint
|
|
18
|
+
CREATE TABLE IF NOT EXISTS `minds` (
|
|
19
|
+
`name` text PRIMARY KEY NOT NULL,
|
|
20
|
+
`port` integer NOT NULL,
|
|
21
|
+
`parent` text REFERENCES `minds`(`name`) ON DELETE CASCADE,
|
|
22
|
+
`dir` text,
|
|
23
|
+
`branch` text,
|
|
24
|
+
`stage` text,
|
|
25
|
+
`template` text,
|
|
26
|
+
`template_hash` text,
|
|
27
|
+
`running` integer NOT NULL DEFAULT 0,
|
|
28
|
+
`created_at` text NOT NULL DEFAULT (datetime('now'))
|
|
29
|
+
);
|
|
30
|
+
--> statement-breakpoint
|
|
31
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `idx_minds_port` ON `minds` (`port`);
|
|
32
|
+
--> statement-breakpoint
|
|
33
|
+
CREATE INDEX IF NOT EXISTS `idx_minds_parent` ON `minds` (`parent`);
|
|
34
|
+
--> statement-breakpoint
|
|
35
|
+
CREATE TABLE IF NOT EXISTS `conversations` (
|
|
36
|
+
`id` text PRIMARY KEY NOT NULL,
|
|
37
|
+
`mind_name` text,
|
|
38
|
+
`channel` text NOT NULL,
|
|
39
|
+
`type` text NOT NULL DEFAULT 'dm',
|
|
40
|
+
`name` text,
|
|
41
|
+
`user_id` integer REFERENCES `users`(`id`),
|
|
42
|
+
`title` text,
|
|
43
|
+
`created_at` text NOT NULL DEFAULT (datetime('now')),
|
|
44
|
+
`updated_at` text NOT NULL DEFAULT (datetime('now'))
|
|
45
|
+
);
|
|
46
|
+
--> statement-breakpoint
|
|
47
|
+
CREATE INDEX IF NOT EXISTS `idx_conversations_mind_name` ON `conversations` (`mind_name`);
|
|
48
|
+
--> statement-breakpoint
|
|
49
|
+
CREATE INDEX IF NOT EXISTS `idx_conversations_user_id` ON `conversations` (`user_id`);
|
|
50
|
+
--> statement-breakpoint
|
|
51
|
+
CREATE INDEX IF NOT EXISTS `idx_conversations_updated_at` ON `conversations` (`updated_at`);
|
|
52
|
+
--> statement-breakpoint
|
|
53
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `idx_conversations_name` ON `conversations` (`name`);
|
|
54
|
+
--> statement-breakpoint
|
|
55
|
+
CREATE TABLE IF NOT EXISTS `messages` (
|
|
56
|
+
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
57
|
+
`conversation_id` text NOT NULL REFERENCES `conversations`(`id`) ON DELETE CASCADE,
|
|
58
|
+
`role` text NOT NULL,
|
|
59
|
+
`sender_name` text,
|
|
60
|
+
`content` text NOT NULL,
|
|
61
|
+
`created_at` text NOT NULL DEFAULT (datetime('now'))
|
|
62
|
+
);
|
|
63
|
+
--> statement-breakpoint
|
|
64
|
+
CREATE INDEX IF NOT EXISTS `idx_messages_conversation_id` ON `messages` (`conversation_id`);
|
|
65
|
+
--> statement-breakpoint
|
|
66
|
+
CREATE TABLE IF NOT EXISTS `conversation_participants` (
|
|
67
|
+
`conversation_id` text NOT NULL REFERENCES `conversations`(`id`) ON DELETE CASCADE,
|
|
68
|
+
`user_id` integer NOT NULL REFERENCES `users`(`id`) ON DELETE CASCADE,
|
|
69
|
+
`role` text NOT NULL DEFAULT 'member',
|
|
70
|
+
`joined_at` text NOT NULL DEFAULT (datetime('now'))
|
|
71
|
+
);
|
|
72
|
+
--> statement-breakpoint
|
|
73
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `idx_cp_unique` ON `conversation_participants` (`conversation_id`, `user_id`);
|
|
74
|
+
--> statement-breakpoint
|
|
75
|
+
CREATE INDEX IF NOT EXISTS `idx_cp_user_id` ON `conversation_participants` (`user_id`);
|
|
76
|
+
--> statement-breakpoint
|
|
77
|
+
CREATE TABLE IF NOT EXISTS `sessions` (
|
|
78
|
+
`id` text PRIMARY KEY NOT NULL,
|
|
79
|
+
`user_id` integer NOT NULL REFERENCES `users`(`id`) ON DELETE CASCADE,
|
|
80
|
+
`created_at` integer NOT NULL
|
|
81
|
+
);
|
|
82
|
+
--> statement-breakpoint
|
|
83
|
+
CREATE TABLE IF NOT EXISTS `mind_history` (
|
|
84
|
+
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
85
|
+
`mind` text NOT NULL,
|
|
86
|
+
`channel` text,
|
|
87
|
+
`session` text,
|
|
88
|
+
`sender` text,
|
|
89
|
+
`message_id` text,
|
|
90
|
+
`type` text NOT NULL DEFAULT 'inbound',
|
|
91
|
+
`content` text,
|
|
92
|
+
`metadata` text,
|
|
93
|
+
`created_at` text NOT NULL DEFAULT (datetime('now'))
|
|
94
|
+
);
|
|
95
|
+
--> statement-breakpoint
|
|
96
|
+
CREATE INDEX IF NOT EXISTS `idx_mind_history_mind` ON `mind_history` (`mind`);
|
|
97
|
+
--> statement-breakpoint
|
|
98
|
+
CREATE INDEX IF NOT EXISTS `idx_mind_history_mind_channel` ON `mind_history` (`mind`, `channel`);
|
|
99
|
+
--> statement-breakpoint
|
|
100
|
+
CREATE INDEX IF NOT EXISTS `idx_mind_history_mind_type` ON `mind_history` (`mind`, `type`);
|
|
101
|
+
--> statement-breakpoint
|
|
102
|
+
CREATE TABLE IF NOT EXISTS `system_prompts` (
|
|
103
|
+
`key` text PRIMARY KEY NOT NULL,
|
|
104
|
+
`content` text NOT NULL,
|
|
105
|
+
`updated_at` text NOT NULL DEFAULT (datetime('now'))
|
|
106
|
+
);
|
|
107
|
+
--> statement-breakpoint
|
|
108
|
+
CREATE TABLE IF NOT EXISTS `shared_skills` (
|
|
109
|
+
`id` text PRIMARY KEY NOT NULL,
|
|
110
|
+
`name` text NOT NULL,
|
|
111
|
+
`description` text NOT NULL DEFAULT '',
|
|
112
|
+
`author` text NOT NULL,
|
|
113
|
+
`version` integer NOT NULL DEFAULT 1,
|
|
114
|
+
`created_at` text NOT NULL DEFAULT (datetime('now')),
|
|
115
|
+
`updated_at` text NOT NULL DEFAULT (datetime('now'))
|
|
116
|
+
);
|
|
117
|
+
--> statement-breakpoint
|
|
118
|
+
CREATE TABLE IF NOT EXISTS `delivery_queue` (
|
|
119
|
+
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
120
|
+
`mind` text NOT NULL,
|
|
121
|
+
`session` text NOT NULL,
|
|
122
|
+
`channel` text,
|
|
123
|
+
`sender` text,
|
|
124
|
+
`status` text NOT NULL DEFAULT 'pending',
|
|
125
|
+
`payload` text NOT NULL,
|
|
126
|
+
`created_at` text NOT NULL DEFAULT (datetime('now'))
|
|
127
|
+
);
|
|
128
|
+
--> statement-breakpoint
|
|
129
|
+
CREATE INDEX IF NOT EXISTS `idx_delivery_queue_mind_session` ON `delivery_queue` (`mind`, `session`);
|
|
130
|
+
--> statement-breakpoint
|
|
131
|
+
CREATE INDEX IF NOT EXISTS `idx_delivery_queue_mind_status` ON `delivery_queue` (`mind`, `status`);
|
|
132
|
+
--> statement-breakpoint
|
|
133
|
+
CREATE TABLE IF NOT EXISTS `activity` (
|
|
134
|
+
`id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
|
|
135
|
+
`type` text NOT NULL,
|
|
136
|
+
`mind` text NOT NULL,
|
|
137
|
+
`summary` text NOT NULL,
|
|
138
|
+
`metadata` text,
|
|
139
|
+
`created_at` text NOT NULL DEFAULT (datetime('now'))
|
|
140
|
+
);
|
|
141
|
+
--> statement-breakpoint
|
|
142
|
+
CREATE INDEX IF NOT EXISTS `idx_activity_created_at` ON `activity` (`created_at`);
|
|
143
|
+
--> statement-breakpoint
|
|
144
|
+
CREATE INDEX IF NOT EXISTS `idx_activity_mind` ON `activity` (`mind`);
|
|
145
|
+
--> statement-breakpoint
|
|
146
|
+
CREATE TABLE IF NOT EXISTS `conversation_reads` (
|
|
147
|
+
`user_id` integer NOT NULL REFERENCES `users`(`id`) ON DELETE CASCADE,
|
|
148
|
+
`conversation_id` text NOT NULL REFERENCES `conversations`(`id`) ON DELETE CASCADE,
|
|
149
|
+
`last_read_message_id` integer NOT NULL DEFAULT 0
|
|
150
|
+
);
|
|
151
|
+
--> statement-breakpoint
|
|
152
|
+
CREATE UNIQUE INDEX IF NOT EXISTS `idx_conversation_reads_unique` ON `conversation_reads` (`user_id`, `conversation_id`);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ALTER TABLE `conversations` ADD `private` integer NOT NULL DEFAULT 0;
|
|
@@ -0,0 +1,21 @@
|
|
|
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;
|
|
@@ -0,0 +1,11 @@
|
|
|
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,227 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
+
"id": "0000_baseline",
|
|
3
|
+
"prevId": "",
|
|
2
4
|
"version": "6",
|
|
3
5
|
"dialect": "sqlite",
|
|
4
|
-
"
|
|
5
|
-
"prevId": "00000000-0000-0000-0000-000000000000",
|
|
6
|
-
"tables": {
|
|
7
|
-
"conversations": {
|
|
8
|
-
"name": "conversations",
|
|
9
|
-
"columns": {
|
|
10
|
-
"id": {
|
|
11
|
-
"name": "id",
|
|
12
|
-
"type": "text",
|
|
13
|
-
"primaryKey": true,
|
|
14
|
-
"notNull": true,
|
|
15
|
-
"autoincrement": false
|
|
16
|
-
},
|
|
17
|
-
"agent_name": {
|
|
18
|
-
"name": "agent_name",
|
|
19
|
-
"type": "text",
|
|
20
|
-
"primaryKey": false,
|
|
21
|
-
"notNull": true,
|
|
22
|
-
"autoincrement": false
|
|
23
|
-
},
|
|
24
|
-
"channel": {
|
|
25
|
-
"name": "channel",
|
|
26
|
-
"type": "text",
|
|
27
|
-
"primaryKey": false,
|
|
28
|
-
"notNull": true,
|
|
29
|
-
"autoincrement": false
|
|
30
|
-
},
|
|
31
|
-
"user_id": {
|
|
32
|
-
"name": "user_id",
|
|
33
|
-
"type": "integer",
|
|
34
|
-
"primaryKey": false,
|
|
35
|
-
"notNull": false,
|
|
36
|
-
"autoincrement": false
|
|
37
|
-
},
|
|
38
|
-
"title": {
|
|
39
|
-
"name": "title",
|
|
40
|
-
"type": "text",
|
|
41
|
-
"primaryKey": false,
|
|
42
|
-
"notNull": false,
|
|
43
|
-
"autoincrement": false
|
|
44
|
-
},
|
|
45
|
-
"created_at": {
|
|
46
|
-
"name": "created_at",
|
|
47
|
-
"type": "text",
|
|
48
|
-
"primaryKey": false,
|
|
49
|
-
"notNull": true,
|
|
50
|
-
"autoincrement": false,
|
|
51
|
-
"default": "(datetime('now'))"
|
|
52
|
-
},
|
|
53
|
-
"updated_at": {
|
|
54
|
-
"name": "updated_at",
|
|
55
|
-
"type": "text",
|
|
56
|
-
"primaryKey": false,
|
|
57
|
-
"notNull": true,
|
|
58
|
-
"autoincrement": false,
|
|
59
|
-
"default": "(datetime('now'))"
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
"indexes": {
|
|
63
|
-
"idx_conversations_agent_name": {
|
|
64
|
-
"name": "idx_conversations_agent_name",
|
|
65
|
-
"columns": ["agent_name"],
|
|
66
|
-
"isUnique": false
|
|
67
|
-
},
|
|
68
|
-
"idx_conversations_user_id": {
|
|
69
|
-
"name": "idx_conversations_user_id",
|
|
70
|
-
"columns": ["user_id"],
|
|
71
|
-
"isUnique": false
|
|
72
|
-
},
|
|
73
|
-
"idx_conversations_updated_at": {
|
|
74
|
-
"name": "idx_conversations_updated_at",
|
|
75
|
-
"columns": ["updated_at"],
|
|
76
|
-
"isUnique": false
|
|
77
|
-
}
|
|
78
|
-
},
|
|
79
|
-
"foreignKeys": {
|
|
80
|
-
"conversations_user_id_users_id_fk": {
|
|
81
|
-
"name": "conversations_user_id_users_id_fk",
|
|
82
|
-
"tableFrom": "conversations",
|
|
83
|
-
"tableTo": "users",
|
|
84
|
-
"columnsFrom": ["user_id"],
|
|
85
|
-
"columnsTo": ["id"],
|
|
86
|
-
"onDelete": "no action",
|
|
87
|
-
"onUpdate": "no action"
|
|
88
|
-
}
|
|
89
|
-
},
|
|
90
|
-
"compositePrimaryKeys": {},
|
|
91
|
-
"uniqueConstraints": {},
|
|
92
|
-
"checkConstraints": {}
|
|
93
|
-
},
|
|
94
|
-
"messages": {
|
|
95
|
-
"name": "messages",
|
|
96
|
-
"columns": {
|
|
97
|
-
"id": {
|
|
98
|
-
"name": "id",
|
|
99
|
-
"type": "integer",
|
|
100
|
-
"primaryKey": true,
|
|
101
|
-
"notNull": true,
|
|
102
|
-
"autoincrement": true
|
|
103
|
-
},
|
|
104
|
-
"conversation_id": {
|
|
105
|
-
"name": "conversation_id",
|
|
106
|
-
"type": "text",
|
|
107
|
-
"primaryKey": false,
|
|
108
|
-
"notNull": true,
|
|
109
|
-
"autoincrement": false
|
|
110
|
-
},
|
|
111
|
-
"role": {
|
|
112
|
-
"name": "role",
|
|
113
|
-
"type": "text",
|
|
114
|
-
"primaryKey": false,
|
|
115
|
-
"notNull": true,
|
|
116
|
-
"autoincrement": false
|
|
117
|
-
},
|
|
118
|
-
"sender_name": {
|
|
119
|
-
"name": "sender_name",
|
|
120
|
-
"type": "text",
|
|
121
|
-
"primaryKey": false,
|
|
122
|
-
"notNull": false,
|
|
123
|
-
"autoincrement": false
|
|
124
|
-
},
|
|
125
|
-
"content": {
|
|
126
|
-
"name": "content",
|
|
127
|
-
"type": "text",
|
|
128
|
-
"primaryKey": false,
|
|
129
|
-
"notNull": true,
|
|
130
|
-
"autoincrement": false
|
|
131
|
-
},
|
|
132
|
-
"created_at": {
|
|
133
|
-
"name": "created_at",
|
|
134
|
-
"type": "text",
|
|
135
|
-
"primaryKey": false,
|
|
136
|
-
"notNull": true,
|
|
137
|
-
"autoincrement": false,
|
|
138
|
-
"default": "(datetime('now'))"
|
|
139
|
-
}
|
|
140
|
-
},
|
|
141
|
-
"indexes": {
|
|
142
|
-
"idx_messages_conversation_id": {
|
|
143
|
-
"name": "idx_messages_conversation_id",
|
|
144
|
-
"columns": ["conversation_id"],
|
|
145
|
-
"isUnique": false
|
|
146
|
-
}
|
|
147
|
-
},
|
|
148
|
-
"foreignKeys": {
|
|
149
|
-
"messages_conversation_id_conversations_id_fk": {
|
|
150
|
-
"name": "messages_conversation_id_conversations_id_fk",
|
|
151
|
-
"tableFrom": "messages",
|
|
152
|
-
"tableTo": "conversations",
|
|
153
|
-
"columnsFrom": ["conversation_id"],
|
|
154
|
-
"columnsTo": ["id"],
|
|
155
|
-
"onDelete": "cascade",
|
|
156
|
-
"onUpdate": "no action"
|
|
157
|
-
}
|
|
158
|
-
},
|
|
159
|
-
"compositePrimaryKeys": {},
|
|
160
|
-
"uniqueConstraints": {},
|
|
161
|
-
"checkConstraints": {}
|
|
162
|
-
},
|
|
163
|
-
"users": {
|
|
164
|
-
"name": "users",
|
|
165
|
-
"columns": {
|
|
166
|
-
"id": {
|
|
167
|
-
"name": "id",
|
|
168
|
-
"type": "integer",
|
|
169
|
-
"primaryKey": true,
|
|
170
|
-
"notNull": true,
|
|
171
|
-
"autoincrement": true
|
|
172
|
-
},
|
|
173
|
-
"username": {
|
|
174
|
-
"name": "username",
|
|
175
|
-
"type": "text",
|
|
176
|
-
"primaryKey": false,
|
|
177
|
-
"notNull": true,
|
|
178
|
-
"autoincrement": false
|
|
179
|
-
},
|
|
180
|
-
"password_hash": {
|
|
181
|
-
"name": "password_hash",
|
|
182
|
-
"type": "text",
|
|
183
|
-
"primaryKey": false,
|
|
184
|
-
"notNull": true,
|
|
185
|
-
"autoincrement": false
|
|
186
|
-
},
|
|
187
|
-
"role": {
|
|
188
|
-
"name": "role",
|
|
189
|
-
"type": "text",
|
|
190
|
-
"primaryKey": false,
|
|
191
|
-
"notNull": true,
|
|
192
|
-
"autoincrement": false,
|
|
193
|
-
"default": "'pending'"
|
|
194
|
-
},
|
|
195
|
-
"created_at": {
|
|
196
|
-
"name": "created_at",
|
|
197
|
-
"type": "text",
|
|
198
|
-
"primaryKey": false,
|
|
199
|
-
"notNull": true,
|
|
200
|
-
"autoincrement": false,
|
|
201
|
-
"default": "(datetime('now'))"
|
|
202
|
-
}
|
|
203
|
-
},
|
|
204
|
-
"indexes": {
|
|
205
|
-
"users_username_unique": {
|
|
206
|
-
"name": "users_username_unique",
|
|
207
|
-
"columns": ["username"],
|
|
208
|
-
"isUnique": true
|
|
209
|
-
}
|
|
210
|
-
},
|
|
211
|
-
"foreignKeys": {},
|
|
212
|
-
"compositePrimaryKeys": {},
|
|
213
|
-
"uniqueConstraints": {},
|
|
214
|
-
"checkConstraints": {}
|
|
215
|
-
}
|
|
216
|
-
},
|
|
217
|
-
"views": {},
|
|
218
|
-
"enums": {},
|
|
219
|
-
"_meta": {
|
|
220
|
-
"schemas": {},
|
|
221
|
-
"tables": {},
|
|
222
|
-
"columns": {}
|
|
223
|
-
},
|
|
224
|
-
"internal": {
|
|
225
|
-
"indexes": {}
|
|
226
|
-
}
|
|
6
|
+
"tables": {}
|
|
227
7
|
}
|