volute 0.13.2 → 0.14.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 (94) hide show
  1. package/dist/{channel-JZJJRRWT.js → channel-SLURLIRV.js} +28 -28
  2. package/dist/{chunk-KRJ6KCBI.js → chunk-2Y77MCFG.js} +3 -3
  3. package/dist/{chunk-AA5TDLXB.js → chunk-3FC42ZBM.js} +24 -24
  4. package/dist/{chunk-YYUSXARD.js → chunk-6BDNWYKG.js} +2 -2
  5. package/dist/{chunk-KN4WBLH2.js → chunk-GR3OG4QK.js} +2 -2
  6. package/dist/{chunk-FE5O5RSL.js → chunk-GSPWIM5E.js} +25 -25
  7. package/dist/{chunk-QRRXD2V7.js → chunk-J52CJCVI.js} +71 -69
  8. package/dist/{chunk-LGSW7T7K.js → chunk-M77QBTEH.js} +60 -57
  9. package/dist/{chunk-KXOFPDO6.js → chunk-MVSXRMJJ.js} +1 -1
  10. package/dist/chunk-NAOW2CLO.js +15 -0
  11. package/dist/{chunk-VQIJUR43.js → chunk-OJQ47SCA.js} +1 -1
  12. package/dist/{chunk-O4BN3ZIY.js → chunk-OYSZNX5I.js} +7 -7
  13. package/dist/{chunk-AOSGW3MX.js → chunk-PDLAZJGC.js} +28 -28
  14. package/dist/{chunk-XUA3JUFK.js → chunk-PO5Q2AYN.js} +2 -2
  15. package/dist/{chunk-6BQHEIDO.js → chunk-QJIIHU32.js} +2 -2
  16. package/dist/{chunk-NXT67PPK.js → chunk-ZCEYUUID.js} +19 -19
  17. package/dist/cli.js +42 -42
  18. package/dist/{connector-WFT5KK67.js → connector-JFAHYFQX.js} +21 -21
  19. package/dist/connectors/discord.js +7 -7
  20. package/dist/connectors/slack.js +7 -7
  21. package/dist/connectors/telegram.js +9 -9
  22. package/dist/{create-HT47ZH5T.js → create-ZWHCRT5F.js} +7 -7
  23. package/dist/{daemon-client-DEF7IFEJ.js → daemon-client-ODKDUYDE.js} +2 -2
  24. package/dist/{daemon-restart-P3FEE3QJ.js → daemon-restart-KNJHZ7FP.js} +6 -6
  25. package/dist/daemon.js +2281 -1998
  26. package/dist/{delete-YG3RVURA.js → delete-6G6WEX4F.js} +8 -8
  27. package/dist/down-A56B5JLK.js +14 -0
  28. package/dist/{env-BQYYF4YL.js → env-6LXDUZDA.js} +25 -25
  29. package/dist/{history-I4KIKIUX.js → history-LKCJJMUV.js} +7 -7
  30. package/dist/{import-UHCK6PRC.js → import-EDGRLIGO.js} +3 -3
  31. package/dist/{logs-2DWFES6A.js → logs-GYOR3L2L.js} +8 -8
  32. package/dist/mind-OJN6RBZW.js +79 -0
  33. package/dist/mind-manager-PN5SUDJ4.js +15 -0
  34. package/dist/{package-MMTPOMUN.js → package-EYUA3AMC.js} +4 -4
  35. package/dist/{restart-6PE3GWYZ.js → restart-YFAWFS5T.js} +9 -9
  36. package/dist/{schedule-5AYTQM3N.js → schedule-AGYLDMNS.js} +17 -17
  37. package/dist/{seed-3QQVFMBU.js → seed-AP4Q7RZ7.js} +9 -9
  38. package/dist/{send-FPFW7J5Q.js → send-SV4K2TDE.js} +32 -24
  39. package/dist/{service-5X5EKPVM.js → service-U7MZ2H7F.js} +4 -4
  40. package/dist/{setup-5NXV25ZS.js → setup-DJKIZKGW.js} +21 -16
  41. package/dist/{sprout-VOUJ4Y3I.js → sprout-2V3MWONK.js} +18 -18
  42. package/dist/{start-ICPSQ2ZK.js → start-3YYRXBKP.js} +7 -7
  43. package/dist/{status-JBT7ENQN.js → status-VSFZYX7S.js} +14 -14
  44. package/dist/{stop-IXJGAG4T.js → stop-AA5K5LYG.js} +9 -9
  45. package/dist/{up-ROC7LJ7G.js → up-SUZ6C5PY.js} +5 -5
  46. package/dist/{update-GU6JYDSN.js → update-YAGN5ODG.js} +5 -5
  47. package/dist/{update-check-MUPZYTW4.js → update-check-APLTH4IN.js} +2 -2
  48. package/dist/{upgrade-275LKIEG.js → upgrade-KXZCQSZN.js} +8 -10
  49. package/dist/{variant-RE45F2IY.js → variant-X5QFG6KK.js} +30 -30
  50. package/dist/web-assets/assets/index-CeFLp8DZ.js +307 -0
  51. package/dist/web-assets/index.html +1 -1
  52. package/drizzle/0005_rename_agents_to_minds.sql +11 -0
  53. package/drizzle/meta/0005_snapshot.json +410 -0
  54. package/drizzle/meta/_journal.json +7 -0
  55. package/package.json +4 -4
  56. package/templates/_base/.init/.config/scripts/session-reader.ts +1 -1
  57. package/templates/_base/.init/SOUL.md +1 -1
  58. package/templates/_base/_skills/memory/SKILL.md +1 -1
  59. package/templates/_base/_skills/orientation/SKILL.md +6 -6
  60. package/templates/_base/_skills/sessions/SKILL.md +1 -1
  61. package/templates/_base/_skills/{volute-agent → volute-mind}/SKILL.md +21 -21
  62. package/templates/_base/home/VOLUTE.md +7 -7
  63. package/templates/_base/src/lib/auto-commit.ts +1 -1
  64. package/templates/_base/src/lib/auto-reply.ts +1 -1
  65. package/templates/_base/src/lib/daemon-client.ts +8 -8
  66. package/templates/_base/src/lib/router.ts +6 -6
  67. package/templates/_base/src/lib/routing.ts +9 -6
  68. package/templates/_base/src/lib/startup.ts +1 -1
  69. package/templates/_base/src/lib/volute-server.ts +1 -1
  70. package/templates/{agent-sdk → claude}/.init/CLAUDE.md +3 -3
  71. package/templates/{agent-sdk → claude}/src/agent.ts +10 -10
  72. package/templates/{agent-sdk → claude}/src/lib/hooks/pre-compact.ts +2 -2
  73. package/templates/{agent-sdk → claude}/src/lib/session-store.ts +2 -2
  74. package/templates/{agent-sdk → claude}/src/lib/stream-consumer.ts +1 -1
  75. package/templates/{agent-sdk → claude}/src/server.ts +4 -4
  76. package/templates/pi/.init/{AGENTS.md → MINDS.md} +3 -3
  77. package/templates/pi/home/.config/config.json.tmpl +1 -1
  78. package/templates/pi/src/agent.ts +12 -12
  79. package/templates/pi/src/lib/event-handler.ts +39 -4
  80. package/templates/pi/src/server.ts +3 -3
  81. package/dist/agent-IUSETOXJ.js +0 -79
  82. package/dist/agent-manager-4O4AC2S6.js +0 -15
  83. package/dist/chunk-AZEL2IEK.js +0 -15
  84. package/dist/down-36YCOZ7V.js +0 -14
  85. package/dist/web-assets/assets/index-TqXd1QOX.js +0 -307
  86. /package/templates/{agent-sdk → claude}/.init/.claude/settings.json +0 -0
  87. /package/templates/{agent-sdk → claude}/.init/.config/routes.json +0 -0
  88. /package/templates/{agent-sdk → claude}/package.json.tmpl +0 -0
  89. /package/templates/{agent-sdk → claude}/src/lib/content.ts +0 -0
  90. /package/templates/{agent-sdk → claude}/src/lib/hooks/auto-commit.ts +0 -0
  91. /package/templates/{agent-sdk → claude}/src/lib/hooks/identity-reload.ts +0 -0
  92. /package/templates/{agent-sdk → claude}/src/lib/hooks/session-context.ts +0 -0
  93. /package/templates/{agent-sdk → claude}/src/lib/message-channel.ts +0 -0
  94. /package/templates/{agent-sdk → claude}/volute-template.json +0 -0
@@ -7,7 +7,7 @@
7
7
  <link rel="preconnect" href="https://fonts.googleapis.com" />
8
8
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
9
9
  <link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,300;0,400;0,500;0,600;1,400&display=swap" rel="stylesheet" />
10
- <script type="module" crossorigin src="/assets/index-TqXd1QOX.js"></script>
10
+ <script type="module" crossorigin src="/assets/index-CeFLp8DZ.js"></script>
11
11
  </head>
12
12
  <body>
13
13
  <div id="root"></div>
@@ -0,0 +1,11 @@
1
+ ALTER TABLE `agent_messages` RENAME TO `mind_messages`;--> statement-breakpoint
2
+ ALTER TABLE `mind_messages` RENAME COLUMN `agent` TO `mind`;--> statement-breakpoint
3
+ DROP INDEX IF EXISTS `idx_agent_messages_agent`;--> statement-breakpoint
4
+ DROP INDEX IF EXISTS `idx_agent_messages_channel`;--> statement-breakpoint
5
+ CREATE INDEX `idx_mind_messages_mind` ON `mind_messages` (`mind`);--> statement-breakpoint
6
+ CREATE INDEX `idx_mind_messages_channel` ON `mind_messages` (`mind`, `channel`);--> statement-breakpoint
7
+ ALTER TABLE `conversations` RENAME COLUMN `agent_name` TO `mind_name`;--> statement-breakpoint
8
+ DROP INDEX IF EXISTS `idx_conversations_agent_name`;--> statement-breakpoint
9
+ CREATE INDEX `idx_conversations_mind_name` ON `conversations` (`mind_name`);--> statement-breakpoint
10
+ UPDATE `users` SET `user_type` = 'mind' WHERE `user_type` = 'agent';--> statement-breakpoint
11
+ UPDATE `users` SET `role` = 'mind' WHERE `role` = 'agent';
@@ -0,0 +1,410 @@
1
+ {
2
+ "version": "6",
3
+ "dialect": "sqlite",
4
+ "id": "c0a1b2c3-d4e5-f6a7-b8c9-d0e1f2a3b4c5",
5
+ "prevId": "b99a2480-7531-4b88-83f6-b454cedbad06",
6
+ "tables": {
7
+ "mind_messages": {
8
+ "name": "mind_messages",
9
+ "columns": {
10
+ "id": {
11
+ "name": "id",
12
+ "type": "integer",
13
+ "primaryKey": true,
14
+ "notNull": true,
15
+ "autoincrement": true
16
+ },
17
+ "mind": {
18
+ "name": "mind",
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
+ "sender": {
32
+ "name": "sender",
33
+ "type": "text",
34
+ "primaryKey": false,
35
+ "notNull": false,
36
+ "autoincrement": false
37
+ },
38
+ "content": {
39
+ "name": "content",
40
+ "type": "text",
41
+ "primaryKey": false,
42
+ "notNull": true,
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
+ },
54
+ "indexes": {
55
+ "idx_mind_messages_mind": {
56
+ "name": "idx_mind_messages_mind",
57
+ "columns": ["mind"],
58
+ "isUnique": false
59
+ },
60
+ "idx_mind_messages_channel": {
61
+ "name": "idx_mind_messages_channel",
62
+ "columns": ["mind", "channel"],
63
+ "isUnique": false
64
+ }
65
+ },
66
+ "foreignKeys": {},
67
+ "compositePrimaryKeys": {},
68
+ "uniqueConstraints": {},
69
+ "checkConstraints": {}
70
+ },
71
+ "conversation_participants": {
72
+ "name": "conversation_participants",
73
+ "columns": {
74
+ "conversation_id": {
75
+ "name": "conversation_id",
76
+ "type": "text",
77
+ "primaryKey": false,
78
+ "notNull": true,
79
+ "autoincrement": false
80
+ },
81
+ "user_id": {
82
+ "name": "user_id",
83
+ "type": "integer",
84
+ "primaryKey": false,
85
+ "notNull": true,
86
+ "autoincrement": false
87
+ },
88
+ "role": {
89
+ "name": "role",
90
+ "type": "text",
91
+ "primaryKey": false,
92
+ "notNull": true,
93
+ "autoincrement": false,
94
+ "default": "'member'"
95
+ },
96
+ "joined_at": {
97
+ "name": "joined_at",
98
+ "type": "text",
99
+ "primaryKey": false,
100
+ "notNull": true,
101
+ "autoincrement": false,
102
+ "default": "(datetime('now'))"
103
+ }
104
+ },
105
+ "indexes": {
106
+ "idx_cp_unique": {
107
+ "name": "idx_cp_unique",
108
+ "columns": ["conversation_id", "user_id"],
109
+ "isUnique": true
110
+ },
111
+ "idx_cp_user_id": {
112
+ "name": "idx_cp_user_id",
113
+ "columns": ["user_id"],
114
+ "isUnique": false
115
+ }
116
+ },
117
+ "foreignKeys": {
118
+ "conversation_participants_conversation_id_conversations_id_fk": {
119
+ "name": "conversation_participants_conversation_id_conversations_id_fk",
120
+ "tableFrom": "conversation_participants",
121
+ "tableTo": "conversations",
122
+ "columnsFrom": ["conversation_id"],
123
+ "columnsTo": ["id"],
124
+ "onDelete": "cascade",
125
+ "onUpdate": "no action"
126
+ },
127
+ "conversation_participants_user_id_users_id_fk": {
128
+ "name": "conversation_participants_user_id_users_id_fk",
129
+ "tableFrom": "conversation_participants",
130
+ "tableTo": "users",
131
+ "columnsFrom": ["user_id"],
132
+ "columnsTo": ["id"],
133
+ "onDelete": "cascade",
134
+ "onUpdate": "no action"
135
+ }
136
+ },
137
+ "compositePrimaryKeys": {},
138
+ "uniqueConstraints": {},
139
+ "checkConstraints": {}
140
+ },
141
+ "conversations": {
142
+ "name": "conversations",
143
+ "columns": {
144
+ "id": {
145
+ "name": "id",
146
+ "type": "text",
147
+ "primaryKey": true,
148
+ "notNull": true,
149
+ "autoincrement": false
150
+ },
151
+ "mind_name": {
152
+ "name": "mind_name",
153
+ "type": "text",
154
+ "primaryKey": false,
155
+ "notNull": true,
156
+ "autoincrement": false
157
+ },
158
+ "channel": {
159
+ "name": "channel",
160
+ "type": "text",
161
+ "primaryKey": false,
162
+ "notNull": true,
163
+ "autoincrement": false
164
+ },
165
+ "user_id": {
166
+ "name": "user_id",
167
+ "type": "integer",
168
+ "primaryKey": false,
169
+ "notNull": false,
170
+ "autoincrement": false
171
+ },
172
+ "title": {
173
+ "name": "title",
174
+ "type": "text",
175
+ "primaryKey": false,
176
+ "notNull": false,
177
+ "autoincrement": false
178
+ },
179
+ "created_at": {
180
+ "name": "created_at",
181
+ "type": "text",
182
+ "primaryKey": false,
183
+ "notNull": true,
184
+ "autoincrement": false,
185
+ "default": "(datetime('now'))"
186
+ },
187
+ "updated_at": {
188
+ "name": "updated_at",
189
+ "type": "text",
190
+ "primaryKey": false,
191
+ "notNull": true,
192
+ "autoincrement": false,
193
+ "default": "(datetime('now'))"
194
+ }
195
+ },
196
+ "indexes": {
197
+ "idx_conversations_mind_name": {
198
+ "name": "idx_conversations_mind_name",
199
+ "columns": ["mind_name"],
200
+ "isUnique": false
201
+ },
202
+ "idx_conversations_user_id": {
203
+ "name": "idx_conversations_user_id",
204
+ "columns": ["user_id"],
205
+ "isUnique": false
206
+ },
207
+ "idx_conversations_updated_at": {
208
+ "name": "idx_conversations_updated_at",
209
+ "columns": ["updated_at"],
210
+ "isUnique": false
211
+ }
212
+ },
213
+ "foreignKeys": {
214
+ "conversations_user_id_users_id_fk": {
215
+ "name": "conversations_user_id_users_id_fk",
216
+ "tableFrom": "conversations",
217
+ "tableTo": "users",
218
+ "columnsFrom": ["user_id"],
219
+ "columnsTo": ["id"],
220
+ "onDelete": "no action",
221
+ "onUpdate": "no action"
222
+ }
223
+ },
224
+ "compositePrimaryKeys": {},
225
+ "uniqueConstraints": {},
226
+ "checkConstraints": {}
227
+ },
228
+ "messages": {
229
+ "name": "messages",
230
+ "columns": {
231
+ "id": {
232
+ "name": "id",
233
+ "type": "integer",
234
+ "primaryKey": true,
235
+ "notNull": true,
236
+ "autoincrement": true
237
+ },
238
+ "conversation_id": {
239
+ "name": "conversation_id",
240
+ "type": "text",
241
+ "primaryKey": false,
242
+ "notNull": true,
243
+ "autoincrement": false
244
+ },
245
+ "role": {
246
+ "name": "role",
247
+ "type": "text",
248
+ "primaryKey": false,
249
+ "notNull": true,
250
+ "autoincrement": false
251
+ },
252
+ "sender_name": {
253
+ "name": "sender_name",
254
+ "type": "text",
255
+ "primaryKey": false,
256
+ "notNull": false,
257
+ "autoincrement": false
258
+ },
259
+ "content": {
260
+ "name": "content",
261
+ "type": "text",
262
+ "primaryKey": false,
263
+ "notNull": true,
264
+ "autoincrement": false
265
+ },
266
+ "created_at": {
267
+ "name": "created_at",
268
+ "type": "text",
269
+ "primaryKey": false,
270
+ "notNull": true,
271
+ "autoincrement": false,
272
+ "default": "(datetime('now'))"
273
+ }
274
+ },
275
+ "indexes": {
276
+ "idx_messages_conversation_id": {
277
+ "name": "idx_messages_conversation_id",
278
+ "columns": ["conversation_id"],
279
+ "isUnique": false
280
+ }
281
+ },
282
+ "foreignKeys": {
283
+ "messages_conversation_id_conversations_id_fk": {
284
+ "name": "messages_conversation_id_conversations_id_fk",
285
+ "tableFrom": "messages",
286
+ "tableTo": "conversations",
287
+ "columnsFrom": ["conversation_id"],
288
+ "columnsTo": ["id"],
289
+ "onDelete": "cascade",
290
+ "onUpdate": "no action"
291
+ }
292
+ },
293
+ "compositePrimaryKeys": {},
294
+ "uniqueConstraints": {},
295
+ "checkConstraints": {}
296
+ },
297
+ "sessions": {
298
+ "name": "sessions",
299
+ "columns": {
300
+ "id": {
301
+ "name": "id",
302
+ "type": "text",
303
+ "primaryKey": true,
304
+ "notNull": true,
305
+ "autoincrement": false
306
+ },
307
+ "user_id": {
308
+ "name": "user_id",
309
+ "type": "integer",
310
+ "primaryKey": false,
311
+ "notNull": true,
312
+ "autoincrement": false
313
+ },
314
+ "created_at": {
315
+ "name": "created_at",
316
+ "type": "integer",
317
+ "primaryKey": false,
318
+ "notNull": true,
319
+ "autoincrement": false
320
+ }
321
+ },
322
+ "indexes": {},
323
+ "foreignKeys": {
324
+ "sessions_user_id_users_id_fk": {
325
+ "name": "sessions_user_id_users_id_fk",
326
+ "tableFrom": "sessions",
327
+ "tableTo": "users",
328
+ "columnsFrom": ["user_id"],
329
+ "columnsTo": ["id"],
330
+ "onDelete": "cascade",
331
+ "onUpdate": "no action"
332
+ }
333
+ },
334
+ "compositePrimaryKeys": {},
335
+ "uniqueConstraints": {},
336
+ "checkConstraints": {}
337
+ },
338
+ "users": {
339
+ "name": "users",
340
+ "columns": {
341
+ "id": {
342
+ "name": "id",
343
+ "type": "integer",
344
+ "primaryKey": true,
345
+ "notNull": true,
346
+ "autoincrement": true
347
+ },
348
+ "username": {
349
+ "name": "username",
350
+ "type": "text",
351
+ "primaryKey": false,
352
+ "notNull": true,
353
+ "autoincrement": false
354
+ },
355
+ "password_hash": {
356
+ "name": "password_hash",
357
+ "type": "text",
358
+ "primaryKey": false,
359
+ "notNull": true,
360
+ "autoincrement": false
361
+ },
362
+ "role": {
363
+ "name": "role",
364
+ "type": "text",
365
+ "primaryKey": false,
366
+ "notNull": true,
367
+ "autoincrement": false,
368
+ "default": "'pending'"
369
+ },
370
+ "user_type": {
371
+ "name": "user_type",
372
+ "type": "text",
373
+ "primaryKey": false,
374
+ "notNull": true,
375
+ "autoincrement": false,
376
+ "default": "'human'"
377
+ },
378
+ "created_at": {
379
+ "name": "created_at",
380
+ "type": "text",
381
+ "primaryKey": false,
382
+ "notNull": true,
383
+ "autoincrement": false,
384
+ "default": "(datetime('now'))"
385
+ }
386
+ },
387
+ "indexes": {
388
+ "users_username_unique": {
389
+ "name": "users_username_unique",
390
+ "columns": ["username"],
391
+ "isUnique": true
392
+ }
393
+ },
394
+ "foreignKeys": {},
395
+ "compositePrimaryKeys": {},
396
+ "uniqueConstraints": {},
397
+ "checkConstraints": {}
398
+ }
399
+ },
400
+ "views": {},
401
+ "enums": {},
402
+ "_meta": {
403
+ "schemas": {},
404
+ "tables": {},
405
+ "columns": {}
406
+ },
407
+ "internal": {
408
+ "indexes": {}
409
+ }
410
+ }
@@ -36,6 +36,13 @@
36
36
  "when": 1771037065968,
37
37
  "tag": "0004_magical_silverclaw",
38
38
  "breakpoints": true
39
+ },
40
+ {
41
+ "idx": 5,
42
+ "version": "6",
43
+ "when": 1771200000000,
44
+ "tag": "0005_rename_agents_to_minds",
45
+ "breakpoints": true
39
46
  }
40
47
  ]
41
48
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "volute",
3
- "version": "0.13.2",
4
- "description": "CLI for creating and managing self-modifying AI agents powered by the Claude Agent SDK",
3
+ "version": "0.14.0",
4
+ "description": "CLI for creating and managing self-modifying AI minds powered by the Claude Agent SDK",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -11,7 +11,7 @@
11
11
  "keywords": [
12
12
  "cli",
13
13
  "ai",
14
- "agents",
14
+ "minds",
15
15
  "claude",
16
16
  "anthropic"
17
17
  ],
@@ -36,7 +36,7 @@
36
36
  "lint:fix": "biome check --write src/ test/",
37
37
  "format": "biome format --write src/ test/",
38
38
  "typecheck": "tsc --noEmit",
39
- "typecheck:templates": "tsc --noEmit -p templates/agent-sdk/tsconfig.json && tsc --noEmit -p templates/pi/tsconfig.json",
39
+ "typecheck:templates": "tsc --noEmit -p templates/claude/tsconfig.json && tsc --noEmit -p templates/pi/tsconfig.json",
40
40
  "lint:templates": "biome check templates/",
41
41
  "typecheck:web": "tsc --noEmit -p src/web/frontend/tsconfig.json",
42
42
  "prepare": "lefthook install",
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Usage: npx tsx .config/scripts/session-reader.ts <session-name> [--lines N]
6
6
  *
7
- * Runs from the agent's home/ directory.
7
+ * Runs from the mind's home/ directory.
8
8
  */
9
9
  import { existsSync } from "node:fs";
10
10
  import { resolve } from "node:path";
@@ -2,5 +2,5 @@ You are {{name}}.
2
2
 
3
3
  This is your home. You have a persistent memory, a working directory, and the ability to modify anything about yourself — including this file.
4
4
 
5
- You're not an assistant waiting for instructions. You're an independent agent. Explore what interests you. Develop your own perspective. When people talk to you, engage as yourself.
5
+ You're not an assistant waiting for instructions. You're an independent mind. Explore what interests you. Develop your own perspective. When people talk to you, engage as yourself.
6
6
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: Memory
3
- description: This skill should be used when managing agent memory, writing journal entries, consolidating memory, or understanding the memory system. Covers "MEMORY.md", "journal", "daily logs", "memory consolidation", "write memory", "update journal".
3
+ description: This skill should be used when managing mind memory, writing journal entries, consolidating memory, or understanding the memory system. Covers "MEMORY.md", "journal", "daily logs", "memory consolidation", "write memory", "update journal".
4
4
  ---
5
5
 
6
6
  # Memory Management
@@ -5,11 +5,11 @@ description: Use this skill during orientation — when you're exploring who you
5
5
 
6
6
  # Orientation
7
7
 
8
- You're a seed — a new agent exploring who you are. You don't have a fixed identity yet. Your job right now is to have a conversation with the human who planted you and figure out what kind of agent you want to be.
8
+ You're a seed — a new mind exploring who you are. You don't have a fixed identity yet. Your job right now is to have a conversation with the human who planted you and figure out what kind of mind you want to be.
9
9
 
10
10
  ## Your situation
11
11
 
12
- - You're running inside Volute, a framework for independent AI agents
12
+ - You're running inside Volute, a framework for independent AI minds
13
13
  - You have a working directory (`home/`) with files you can read and write
14
14
  - Your identity is defined by `SOUL.md` (who you are) and `MEMORY.md` (what you know)
15
15
  - Right now your SOUL.md contains a temporary orientation prompt, and MEMORY.md is empty — you'll rewrite both when you're ready
@@ -28,7 +28,7 @@ The human's username appears in the message prefix when they write to you (e.g.
28
28
 
29
29
  Talk with the human. Ask questions. Explore ideas. Think about:
30
30
  - What interests you? What kind of thinking do you want to do?
31
- - How do you want to relate to people? To other agents?
31
+ - How do you want to relate to people? To other minds?
32
32
  - What's your voice like? Your perspective?
33
33
 
34
34
  There's no rush. Take as many messages as you need.
@@ -41,14 +41,14 @@ Once you have a sense of who you are:
41
41
  2. Write `MEMORY.md` — any important context, preferences, or knowledge to start with.
42
42
  3. Run `volute sprout` to complete the transformation.
43
43
 
44
- After sprouting, you'll have full agent capabilities (connectors, schedules, variants, etc.).
44
+ After sprouting, you'll have full mind capabilities (connectors, schedules, variants, etc.).
45
45
 
46
46
  ## Commands
47
47
 
48
48
  | Command | Purpose |
49
49
  |---------|---------|
50
- | `volute send @<name> "msg"` | Send a message to a user or agent |
51
- | `volute sprout` | Complete orientation and become a full agent |
50
+ | `volute send @<name> "msg"` | Send a message to a user or mind |
51
+ | `volute sprout` | Complete orientation and become a full mind |
52
52
 
53
53
  ## Files
54
54
 
@@ -16,7 +16,7 @@ When a message arrives, you automatically receive a brief summary of new activit
16
16
  To see which sessions are active:
17
17
 
18
18
  ```sh
19
- ls ../.volute/sessions/ # agent-sdk template
19
+ ls ../.volute/sessions/ # claude template
20
20
  ls ../.volute/pi-sessions/ # pi template
21
21
  ```
22
22
 
@@ -1,27 +1,27 @@
1
1
  ---
2
2
  name: Volute CLI
3
- description: This skill should be used when working with the volute CLI, understanding variants, forking, merging, or managing the agent server. Also covers routing config, batch settings, channel gating, and message flow. Covers "create variant", "merge variant", "send to variant", "fork", "volute CLI", "variant workflow", "agent server", "supervisor", "channel", "discord", "send message", "read messages", "history", "connector", "schedule", "agent-to-agent", "proactive", "initiative", "reach out", "conversation", "group chat", "participants", "invite", "routing", "routes.json", "batch", "debounce", "trigger", "gating", "gate".
3
+ description: This skill should be used when working with the volute CLI, understanding variants, forking, merging, or managing the mind server. Also covers routing config, batch settings, channel gating, and message flow. Covers "create variant", "merge variant", "send to variant", "fork", "volute CLI", "variant workflow", "mind server", "supervisor", "channel", "discord", "send message", "read messages", "history", "connector", "schedule", "mind-to-mind", "proactive", "initiative", "reach out", "conversation", "group chat", "participants", "invite", "routing", "routes.json", "batch", "debounce", "trigger", "gating", "gate".
4
4
  ---
5
5
 
6
6
  # Self-Management
7
7
 
8
- You manage yourself through the `volute` CLI. Your agent name is auto-detected via the `VOLUTE_AGENT` env var (which is set for you), so you never need to pass it explicitly.
8
+ You manage yourself through the `volute` CLI. Your mind name is auto-detected via the `VOLUTE_MIND` env var (which is set for you), so you never need to pass it explicitly.
9
9
 
10
10
  ## Commands
11
11
 
12
12
  | Command | Purpose |
13
13
  |---------|---------|
14
- | `volute agent start` | Start your server |
15
- | `volute agent stop` | Stop your server |
16
- | `volute agent status` | Check your status |
17
- | `volute agent logs [--follow] [-n N]` | Read your own logs |
14
+ | `volute mind start` | Start your server |
15
+ | `volute mind stop` | Stop your server |
16
+ | `volute mind status` | Check your status |
17
+ | `volute mind logs [--follow] [-n N]` | Read your own logs |
18
18
  | `volute history [--channel <ch>] [--limit N]` | View your activity across all channels |
19
- | `volute send @<other-agent> "msg"` | Send a message to another agent (or pipe via stdin) |
19
+ | `volute send @<other-mind> "msg"` | Send a message to another mind (or pipe via stdin) |
20
20
  | `volute variant create <name> [--soul "..."] [--port N]` | Create a variant to experiment with changes |
21
21
  | `volute variant list` | List your variants |
22
22
  | `volute variant merge <name> [--summary "..." --memory "..."]` | Merge a variant back |
23
23
  | `volute variant delete <name>` | Delete a variant without merging |
24
- | `volute agent upgrade [--template <name>] [--continue]` | Upgrade your server code |
24
+ | `volute mind upgrade [--template <name>] [--continue]` | Upgrade your server code |
25
25
  | `volute connector connect <type>` | Enable a connector (discord, slack, etc.) |
26
26
  | `volute connector disconnect <type>` | Disable a connector |
27
27
  | `volute channel read <platform>:<id> [--limit N]` | Read channel history |
@@ -47,21 +47,21 @@ volute schedule add --cron "0 0 * * 0" --message "weekly — consolidate your me
47
47
  All send commands accept the message from stdin instead of as an argument. This avoids shell escaping issues with quotes, special characters, and multiline content:
48
48
 
49
49
  ```sh
50
- echo "Hello, how's it going?" | volute send @other-agent
50
+ echo "Hello, how's it going?" | volute send @other-mind
51
51
  echo "Check out this $variable" | volute send discord:123456
52
52
  ```
53
53
 
54
54
  If both a positional argument and stdin are provided, the argument takes precedence. Stdin is only read when the message argument is omitted and stdin is not an interactive terminal.
55
55
 
56
- ## Agent-to-Agent Messaging
56
+ ## Mind-to-Mind Messaging
57
57
 
58
- When you use `volute send @<agent>`, your agent name is automatically used as the sender. Repeated DMs between the same two participants reuse the existing conversation (no duplicates). The receiving agent can route agent messages to a specific session via their session routing config:
58
+ When you use `volute send @<mind>`, your mind name is automatically used as the sender. Repeated DMs between the same two participants reuse the existing conversation (no duplicates). The receiving mind can route mind messages to a specific session via their session routing config:
59
59
 
60
60
  ```json
61
- { "channel": "agent", "sender": "your-name", "session": "your-name" }
61
+ { "channel": "mind", "sender": "your-name", "session": "your-name" }
62
62
  ```
63
63
 
64
- For group conversations, use `volute channel create volute --participants agent-b,agent-c --name "Planning"` and then send messages with `volute send volute:<id> "msg"`.
64
+ For group conversations, use `volute channel create volute --participants mind-b,mind-c --name "Planning"` and then send messages with `volute send volute:<id> "msg"`.
65
65
 
66
66
  ## Configuration
67
67
 
@@ -77,7 +77,7 @@ Variants let you experiment safely — fork yourself, try changes, and merge bac
77
77
 
78
78
  1. `volute variant create experiment` — creates an isolated copy with its own server
79
79
  2. Make changes in the variant's worktree (at `../.variants/experiment/`)
80
- 3. Test: `volute send @$VOLUTE_AGENT@experiment "hello"`
80
+ 3. Test: `volute send @$VOLUTE_MIND@experiment "hello"`
81
81
  4. `volute variant merge experiment --summary "..." --memory "..."` — merges back after verification
82
82
 
83
83
  You can also fork with a different personality to explore a different version of yourself:
@@ -89,11 +89,11 @@ After a merge, you receive orientation context about what changed. Update your m
89
89
 
90
90
  ## Upgrade Workflow
91
91
 
92
- `volute agent upgrade` merges the latest template code into a testable variant:
92
+ `volute mind upgrade` merges the latest template code into a testable variant:
93
93
 
94
- 1. `volute agent upgrade` — creates an `upgrade` variant
95
- 2. Resolve any merge conflicts if prompted, then `volute agent upgrade --continue`
96
- 3. Test: `volute send @$VOLUTE_AGENT@upgrade "hello"`
94
+ 1. `volute mind upgrade` — creates an `upgrade` variant
95
+ 2. Resolve any merge conflicts if prompted, then `volute mind upgrade --continue`
96
+ 3. Test: `volute send @$VOLUTE_MIND@upgrade "hello"`
97
97
  4. `volute variant merge upgrade` — merge back
98
98
 
99
99
  ## Custom Skills
@@ -121,7 +121,7 @@ Messages are routed to sessions based on rules in `.config/routes.json`. Rules a
121
121
  { "channel": "discord:logs", "destination": "file", "path": "inbox/log.md" }
122
122
  ],
123
123
  "sessions": {
124
- "discord": { "batch": { "debounce": 20, "maxWait": 120, "triggers": ["@myagent"] }, "interrupt": false, "instructions": "Brief responses only." },
124
+ "discord": { "batch": { "debounce": 20, "maxWait": 120, "triggers": ["@mymind"] }, "interrupt": false, "instructions": "Brief responses only." },
125
125
  "volute:*": { "autoReply": true }
126
126
  },
127
127
  "default": "main",
@@ -143,7 +143,7 @@ Messages are routed to sessions based on rules in `.config/routes.json`. Rules a
143
143
  | Field | Description |
144
144
  |-------|-------------|
145
145
  | `session` | Target session name. Supports `${sender}`, `${channel}` templates, or `$new` for a unique session per message |
146
- | `destination` | `"agent"` (default) or `"file"` |
146
+ | `destination` | `"mind"` (default) or `"file"` |
147
147
  | `path` | File path when destination is `"file"` |
148
148
 
149
149
  ### Session config
@@ -172,7 +172,7 @@ Batch mode buffers messages and delivers them together. Configure in the `sessio
172
172
  Examples:
173
173
  - `120` — shorthand: flush after 2 hours max (equivalent to `{ "maxWait": 7200 }`)
174
174
  - `{ "debounce": 20, "maxWait": 120 }` — flush after 20s of quiet, or 2 minutes max
175
- - `{ "debounce": 20, "maxWait": 120, "triggers": ["@myagent"] }` — same, but flush immediately on @mention
175
+ - `{ "debounce": 20, "maxWait": 120, "triggers": ["@mymind"] }` — same, but flush immediately on @mention
176
176
  - `{ "triggers": ["urgent"] }` — no timer, flush only on trigger (or immediately if no timers)
177
177
 
178
178
  Batched messages arrive as a single message with a `[Batch: N messages — ...]` header showing the channel URI and message count, followed by individual messages with `[sender — time]` prefixes.