@deeplake/hivemind 0.7.50 → 0.7.52

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 (38) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +17 -35
  4. package/bundle/cli.js +10120 -21928
  5. package/codex/bundle/capture.js +3 -74
  6. package/codex/bundle/commands/auth-login.js +3 -74
  7. package/codex/bundle/graph-pull-worker.js +3 -74
  8. package/codex/bundle/pre-tool-use.js +3 -74
  9. package/codex/bundle/session-start-setup.js +3 -74
  10. package/codex/bundle/session-start.js +3 -74
  11. package/codex/bundle/shell/deeplake-shell.js +3 -74
  12. package/codex/bundle/skillify-worker.js +0 -28
  13. package/codex/bundle/stop.js +3 -74
  14. package/codex/skills/hivemind-goals/SKILL.md +2 -2
  15. package/cursor/bundle/capture.js +3 -74
  16. package/cursor/bundle/commands/auth-login.js +3 -74
  17. package/cursor/bundle/graph-pull-worker.js +3 -74
  18. package/cursor/bundle/pre-tool-use.js +3 -74
  19. package/cursor/bundle/session-end.js +3 -6
  20. package/cursor/bundle/session-start.js +68 -338
  21. package/cursor/bundle/shell/deeplake-shell.js +3 -74
  22. package/cursor/bundle/skillify-worker.js +0 -28
  23. package/hermes/bundle/capture.js +3 -74
  24. package/hermes/bundle/commands/auth-login.js +3 -74
  25. package/hermes/bundle/graph-pull-worker.js +3 -74
  26. package/hermes/bundle/pre-tool-use.js +3 -74
  27. package/hermes/bundle/session-end.js +3 -6
  28. package/hermes/bundle/session-start.js +68 -338
  29. package/hermes/bundle/shell/deeplake-shell.js +3 -74
  30. package/hermes/bundle/skillify-worker.js +0 -28
  31. package/mcp/bundle/server.js +3 -74
  32. package/openclaw/dist/chunks/{config-FH6JYSJW.js → config-3D3X7JQH.js} +3 -6
  33. package/openclaw/dist/index.js +2 -68
  34. package/openclaw/dist/skillify-worker.js +0 -28
  35. package/openclaw/openclaw.plugin.json +1 -1
  36. package/openclaw/package.json +1 -1
  37. package/openclaw/skills/hivemind-goals/SKILL.md +1 -1
  38. package/package.json +1 -1
@@ -99,13 +99,10 @@ function loadConfig() {
99
99
  sessionsTableName: process.env.HIVEMIND_SESSIONS_TABLE ?? "sessions",
100
100
  skillsTableName: process.env.HIVEMIND_SKILLS_TABLE ?? "skills",
101
101
  // Defaults match the table name written into the SQL — keep aligned
102
- // with RULES_COLUMNS / TASKS_COLUMNS / TASK_EVENTS_COLUMNS in
103
- // deeplake-schema.ts and with the e2e test-org override convention
104
- // (memory_test / sessions_test → goals_test, etc.) documented in
105
- // CLAUDE.md.
102
+ // with RULES_COLUMNS in deeplake-schema.ts and with the e2e test-org
103
+ // override convention (memory_test / sessions_test goals_test, etc.)
104
+ // documented in CLAUDE.md.
106
105
  rulesTableName: process.env.HIVEMIND_RULES_TABLE ?? "hivemind_rules",
107
- tasksTableName: process.env.HIVEMIND_TASKS_TABLE ?? "hivemind_tasks",
108
- taskEventsTableName: process.env.HIVEMIND_TASK_EVENTS_TABLE ?? "hivemind_task_events",
109
106
  // Goals + KPIs (refined design — VFS path classifier maps
110
107
  // memory/goal/<user>/<status>/<uuid>.md → hivemind_goals row
111
108
  // memory/kpi/<uuid>/<kpi_id>.md → hivemind_kpis row
@@ -227,32 +224,6 @@ var RULES_COLUMNS = Object.freeze([
227
224
  { name: "agent", sql: "TEXT NOT NULL DEFAULT 'manual'" },
228
225
  { name: "plugin_version", sql: "TEXT NOT NULL DEFAULT ''" }
229
226
  ]);
230
- var TASKS_COLUMNS = Object.freeze([
231
- { name: "id", sql: "TEXT NOT NULL DEFAULT ''" },
232
- { name: "task_id", sql: "TEXT NOT NULL DEFAULT ''" },
233
- { name: "text", sql: "TEXT NOT NULL DEFAULT ''" },
234
- { name: "scope", sql: "TEXT NOT NULL DEFAULT 'me'" },
235
- { name: "status", sql: "TEXT NOT NULL DEFAULT 'active'" },
236
- { name: "assigned_to", sql: "TEXT NOT NULL DEFAULT ''" },
237
- { name: "assigned_by", sql: "TEXT NOT NULL DEFAULT ''" },
238
- { name: "kpis", sql: "JSONB" },
239
- { name: "version", sql: "BIGINT NOT NULL DEFAULT 1" },
240
- { name: "created_at", sql: "TEXT NOT NULL DEFAULT ''" },
241
- { name: "agent", sql: "TEXT NOT NULL DEFAULT 'manual'" },
242
- { name: "plugin_version", sql: "TEXT NOT NULL DEFAULT ''" }
243
- ]);
244
- var TASK_EVENTS_COLUMNS = Object.freeze([
245
- { name: "id", sql: "TEXT NOT NULL DEFAULT ''" },
246
- { name: "task_id", sql: "TEXT NOT NULL DEFAULT ''" },
247
- { name: "task_version", sql: "BIGINT NOT NULL DEFAULT 1" },
248
- { name: "kpi_id", sql: "TEXT NOT NULL DEFAULT ''" },
249
- { name: "value", sql: "BIGINT NOT NULL DEFAULT 0" },
250
- { name: "note", sql: "TEXT NOT NULL DEFAULT ''" },
251
- { name: "source", sql: "TEXT NOT NULL DEFAULT 'user'" },
252
- { name: "agent", sql: "TEXT NOT NULL DEFAULT ''" },
253
- { name: "ts", sql: "TEXT NOT NULL DEFAULT ''" },
254
- { name: "plugin_version", sql: "TEXT NOT NULL DEFAULT ''" }
255
- ]);
256
227
  var GOALS_COLUMNS = Object.freeze([
257
228
  { name: "id", sql: "TEXT NOT NULL DEFAULT ''" },
258
229
  { name: "goal_id", sql: "TEXT NOT NULL DEFAULT ''" },
@@ -318,8 +289,6 @@ validateSchema("MEMORY_COLUMNS", MEMORY_COLUMNS);
318
289
  validateSchema("SESSIONS_COLUMNS", SESSIONS_COLUMNS);
319
290
  validateSchema("SKILLS_COLUMNS", SKILLS_COLUMNS);
320
291
  validateSchema("RULES_COLUMNS", RULES_COLUMNS);
321
- validateSchema("TASKS_COLUMNS", TASKS_COLUMNS);
322
- validateSchema("TASK_EVENTS_COLUMNS", TASK_EVENTS_COLUMNS);
323
292
  validateSchema("GOALS_COLUMNS", GOALS_COLUMNS);
324
293
  validateSchema("KPIS_COLUMNS", KPIS_COLUMNS);
325
294
  validateSchema("CODEBASE_COLUMNS", CODEBASE_COLUMNS);
@@ -939,46 +908,6 @@ var DeeplakeApi = class {
939
908
  await this.healSchema(safe, RULES_COLUMNS);
940
909
  await this.ensureLookupIndex(safe, "rule_id_version", `("rule_id", "version")`);
941
910
  }
942
- /**
943
- * Create the tasks table.
944
- *
945
- * Same write pattern as rules + skills. `kpis` is a nullable JSONB
946
- * column with the agent's KPI metadata; KPI current values come from
947
- * `task_events` (SUM(value)), not this snapshot.
948
- */
949
- async ensureTasksTable(name) {
950
- const safe = sqlIdent(name);
951
- const tables = await this.listTables();
952
- if (!tables.includes(safe)) {
953
- log3(`table "${safe}" not found, creating`);
954
- await this.createTableWithRetry(buildCreateTableSql(safe, TASKS_COLUMNS), safe);
955
- log3(`table "${safe}" created`);
956
- if (!tables.includes(safe))
957
- this._tablesCache = [...tables, safe];
958
- }
959
- await this.healSchema(safe, TASKS_COLUMNS);
960
- await this.ensureLookupIndex(safe, "task_id_version", `("task_id", "version")`);
961
- }
962
- /**
963
- * Create the task-events table.
964
- *
965
- * Append-only. Every INSERT is a fresh row; never UPDATE. KPI current
966
- * value is `SUM(value) WHERE task_id=? AND kpi_id=?`. Index on
967
- * (task_id, kpi_id) is the canonical aggregation key.
968
- */
969
- async ensureTaskEventsTable(name) {
970
- const safe = sqlIdent(name);
971
- const tables = await this.listTables();
972
- if (!tables.includes(safe)) {
973
- log3(`table "${safe}" not found, creating`);
974
- await this.createTableWithRetry(buildCreateTableSql(safe, TASK_EVENTS_COLUMNS), safe);
975
- log3(`table "${safe}" created`);
976
- if (!tables.includes(safe))
977
- this._tablesCache = [...tables, safe];
978
- }
979
- await this.healSchema(safe, TASK_EVENTS_COLUMNS);
980
- await this.ensureLookupIndex(safe, "task_id_kpi_id", `("task_id", "kpi_id")`);
981
- }
982
911
  /**
983
912
  * Create the goals table.
984
913
  *
@@ -385,13 +385,10 @@ function loadConfig() {
385
385
  sessionsTableName: process.env.HIVEMIND_SESSIONS_TABLE ?? "sessions",
386
386
  skillsTableName: process.env.HIVEMIND_SKILLS_TABLE ?? "skills",
387
387
  // Defaults match the table name written into the SQL — keep aligned
388
- // with RULES_COLUMNS / TASKS_COLUMNS / TASK_EVENTS_COLUMNS in
389
- // deeplake-schema.ts and with the e2e test-org override convention
390
- // (memory_test / sessions_test → goals_test, etc.) documented in
391
- // CLAUDE.md.
388
+ // with RULES_COLUMNS in deeplake-schema.ts and with the e2e test-org
389
+ // override convention (memory_test / sessions_test goals_test, etc.)
390
+ // documented in CLAUDE.md.
392
391
  rulesTableName: process.env.HIVEMIND_RULES_TABLE ?? "hivemind_rules",
393
- tasksTableName: process.env.HIVEMIND_TASKS_TABLE ?? "hivemind_tasks",
394
- taskEventsTableName: process.env.HIVEMIND_TASK_EVENTS_TABLE ?? "hivemind_task_events",
395
392
  // Goals + KPIs (refined design — VFS path classifier maps
396
393
  // memory/goal/<user>/<status>/<uuid>.md → hivemind_goals row
397
394
  // memory/kpi/<uuid>/<kpi_id>.md → hivemind_kpis row
@@ -501,32 +498,6 @@ var RULES_COLUMNS = Object.freeze([
501
498
  { name: "agent", sql: "TEXT NOT NULL DEFAULT 'manual'" },
502
499
  { name: "plugin_version", sql: "TEXT NOT NULL DEFAULT ''" }
503
500
  ]);
504
- var TASKS_COLUMNS = Object.freeze([
505
- { name: "id", sql: "TEXT NOT NULL DEFAULT ''" },
506
- { name: "task_id", sql: "TEXT NOT NULL DEFAULT ''" },
507
- { name: "text", sql: "TEXT NOT NULL DEFAULT ''" },
508
- { name: "scope", sql: "TEXT NOT NULL DEFAULT 'me'" },
509
- { name: "status", sql: "TEXT NOT NULL DEFAULT 'active'" },
510
- { name: "assigned_to", sql: "TEXT NOT NULL DEFAULT ''" },
511
- { name: "assigned_by", sql: "TEXT NOT NULL DEFAULT ''" },
512
- { name: "kpis", sql: "JSONB" },
513
- { name: "version", sql: "BIGINT NOT NULL DEFAULT 1" },
514
- { name: "created_at", sql: "TEXT NOT NULL DEFAULT ''" },
515
- { name: "agent", sql: "TEXT NOT NULL DEFAULT 'manual'" },
516
- { name: "plugin_version", sql: "TEXT NOT NULL DEFAULT ''" }
517
- ]);
518
- var TASK_EVENTS_COLUMNS = Object.freeze([
519
- { name: "id", sql: "TEXT NOT NULL DEFAULT ''" },
520
- { name: "task_id", sql: "TEXT NOT NULL DEFAULT ''" },
521
- { name: "task_version", sql: "BIGINT NOT NULL DEFAULT 1" },
522
- { name: "kpi_id", sql: "TEXT NOT NULL DEFAULT ''" },
523
- { name: "value", sql: "BIGINT NOT NULL DEFAULT 0" },
524
- { name: "note", sql: "TEXT NOT NULL DEFAULT ''" },
525
- { name: "source", sql: "TEXT NOT NULL DEFAULT 'user'" },
526
- { name: "agent", sql: "TEXT NOT NULL DEFAULT ''" },
527
- { name: "ts", sql: "TEXT NOT NULL DEFAULT ''" },
528
- { name: "plugin_version", sql: "TEXT NOT NULL DEFAULT ''" }
529
- ]);
530
501
  var GOALS_COLUMNS = Object.freeze([
531
502
  { name: "id", sql: "TEXT NOT NULL DEFAULT ''" },
532
503
  { name: "goal_id", sql: "TEXT NOT NULL DEFAULT ''" },
@@ -592,8 +563,6 @@ validateSchema("MEMORY_COLUMNS", MEMORY_COLUMNS);
592
563
  validateSchema("SESSIONS_COLUMNS", SESSIONS_COLUMNS);
593
564
  validateSchema("SKILLS_COLUMNS", SKILLS_COLUMNS);
594
565
  validateSchema("RULES_COLUMNS", RULES_COLUMNS);
595
- validateSchema("TASKS_COLUMNS", TASKS_COLUMNS);
596
- validateSchema("TASK_EVENTS_COLUMNS", TASK_EVENTS_COLUMNS);
597
566
  validateSchema("GOALS_COLUMNS", GOALS_COLUMNS);
598
567
  validateSchema("KPIS_COLUMNS", KPIS_COLUMNS);
599
568
  validateSchema("CODEBASE_COLUMNS", CODEBASE_COLUMNS);
@@ -1195,46 +1164,6 @@ var DeeplakeApi = class {
1195
1164
  await this.healSchema(safe, RULES_COLUMNS);
1196
1165
  await this.ensureLookupIndex(safe, "rule_id_version", `("rule_id", "version")`);
1197
1166
  }
1198
- /**
1199
- * Create the tasks table.
1200
- *
1201
- * Same write pattern as rules + skills. `kpis` is a nullable JSONB
1202
- * column with the agent's KPI metadata; KPI current values come from
1203
- * `task_events` (SUM(value)), not this snapshot.
1204
- */
1205
- async ensureTasksTable(name) {
1206
- const safe = sqlIdent(name);
1207
- const tables = await this.listTables();
1208
- if (!tables.includes(safe)) {
1209
- log3(`table "${safe}" not found, creating`);
1210
- await this.createTableWithRetry(buildCreateTableSql(safe, TASKS_COLUMNS), safe);
1211
- log3(`table "${safe}" created`);
1212
- if (!tables.includes(safe))
1213
- this._tablesCache = [...tables, safe];
1214
- }
1215
- await this.healSchema(safe, TASKS_COLUMNS);
1216
- await this.ensureLookupIndex(safe, "task_id_version", `("task_id", "version")`);
1217
- }
1218
- /**
1219
- * Create the task-events table.
1220
- *
1221
- * Append-only. Every INSERT is a fresh row; never UPDATE. KPI current
1222
- * value is `SUM(value) WHERE task_id=? AND kpi_id=?`. Index on
1223
- * (task_id, kpi_id) is the canonical aggregation key.
1224
- */
1225
- async ensureTaskEventsTable(name) {
1226
- const safe = sqlIdent(name);
1227
- const tables = await this.listTables();
1228
- if (!tables.includes(safe)) {
1229
- log3(`table "${safe}" not found, creating`);
1230
- await this.createTableWithRetry(buildCreateTableSql(safe, TASK_EVENTS_COLUMNS), safe);
1231
- log3(`table "${safe}" created`);
1232
- if (!tables.includes(safe))
1233
- this._tablesCache = [...tables, safe];
1234
- }
1235
- await this.healSchema(safe, TASK_EVENTS_COLUMNS);
1236
- await this.ensureLookupIndex(safe, "task_id_kpi_id", `("task_id", "kpi_id")`);
1237
- }
1238
1167
  /**
1239
1168
  * Create the goals table.
1240
1169
  *
@@ -92,13 +92,10 @@ function loadConfig() {
92
92
  sessionsTableName: process.env.HIVEMIND_SESSIONS_TABLE ?? "sessions",
93
93
  skillsTableName: process.env.HIVEMIND_SKILLS_TABLE ?? "skills",
94
94
  // Defaults match the table name written into the SQL — keep aligned
95
- // with RULES_COLUMNS / TASKS_COLUMNS / TASK_EVENTS_COLUMNS in
96
- // deeplake-schema.ts and with the e2e test-org override convention
97
- // (memory_test / sessions_test → goals_test, etc.) documented in
98
- // CLAUDE.md.
95
+ // with RULES_COLUMNS in deeplake-schema.ts and with the e2e test-org
96
+ // override convention (memory_test / sessions_test goals_test, etc.)
97
+ // documented in CLAUDE.md.
99
98
  rulesTableName: process.env.HIVEMIND_RULES_TABLE ?? "hivemind_rules",
100
- tasksTableName: process.env.HIVEMIND_TASKS_TABLE ?? "hivemind_tasks",
101
- taskEventsTableName: process.env.HIVEMIND_TASK_EVENTS_TABLE ?? "hivemind_task_events",
102
99
  // Goals + KPIs (refined design — VFS path classifier maps
103
100
  // memory/goal/<user>/<status>/<uuid>.md → hivemind_goals row
104
101
  // memory/kpi/<uuid>/<kpi_id>.md → hivemind_kpis row
@@ -217,32 +214,6 @@ var RULES_COLUMNS = Object.freeze([
217
214
  { name: "agent", sql: "TEXT NOT NULL DEFAULT 'manual'" },
218
215
  { name: "plugin_version", sql: "TEXT NOT NULL DEFAULT ''" }
219
216
  ]);
220
- var TASKS_COLUMNS = Object.freeze([
221
- { name: "id", sql: "TEXT NOT NULL DEFAULT ''" },
222
- { name: "task_id", sql: "TEXT NOT NULL DEFAULT ''" },
223
- { name: "text", sql: "TEXT NOT NULL DEFAULT ''" },
224
- { name: "scope", sql: "TEXT NOT NULL DEFAULT 'me'" },
225
- { name: "status", sql: "TEXT NOT NULL DEFAULT 'active'" },
226
- { name: "assigned_to", sql: "TEXT NOT NULL DEFAULT ''" },
227
- { name: "assigned_by", sql: "TEXT NOT NULL DEFAULT ''" },
228
- { name: "kpis", sql: "JSONB" },
229
- { name: "version", sql: "BIGINT NOT NULL DEFAULT 1" },
230
- { name: "created_at", sql: "TEXT NOT NULL DEFAULT ''" },
231
- { name: "agent", sql: "TEXT NOT NULL DEFAULT 'manual'" },
232
- { name: "plugin_version", sql: "TEXT NOT NULL DEFAULT ''" }
233
- ]);
234
- var TASK_EVENTS_COLUMNS = Object.freeze([
235
- { name: "id", sql: "TEXT NOT NULL DEFAULT ''" },
236
- { name: "task_id", sql: "TEXT NOT NULL DEFAULT ''" },
237
- { name: "task_version", sql: "BIGINT NOT NULL DEFAULT 1" },
238
- { name: "kpi_id", sql: "TEXT NOT NULL DEFAULT ''" },
239
- { name: "value", sql: "BIGINT NOT NULL DEFAULT 0" },
240
- { name: "note", sql: "TEXT NOT NULL DEFAULT ''" },
241
- { name: "source", sql: "TEXT NOT NULL DEFAULT 'user'" },
242
- { name: "agent", sql: "TEXT NOT NULL DEFAULT ''" },
243
- { name: "ts", sql: "TEXT NOT NULL DEFAULT ''" },
244
- { name: "plugin_version", sql: "TEXT NOT NULL DEFAULT ''" }
245
- ]);
246
217
  var GOALS_COLUMNS = Object.freeze([
247
218
  { name: "id", sql: "TEXT NOT NULL DEFAULT ''" },
248
219
  { name: "goal_id", sql: "TEXT NOT NULL DEFAULT ''" },
@@ -308,8 +279,6 @@ validateSchema("MEMORY_COLUMNS", MEMORY_COLUMNS);
308
279
  validateSchema("SESSIONS_COLUMNS", SESSIONS_COLUMNS);
309
280
  validateSchema("SKILLS_COLUMNS", SKILLS_COLUMNS);
310
281
  validateSchema("RULES_COLUMNS", RULES_COLUMNS);
311
- validateSchema("TASKS_COLUMNS", TASKS_COLUMNS);
312
- validateSchema("TASK_EVENTS_COLUMNS", TASK_EVENTS_COLUMNS);
313
282
  validateSchema("GOALS_COLUMNS", GOALS_COLUMNS);
314
283
  validateSchema("KPIS_COLUMNS", KPIS_COLUMNS);
315
284
  validateSchema("CODEBASE_COLUMNS", CODEBASE_COLUMNS);
@@ -929,46 +898,6 @@ var DeeplakeApi = class {
929
898
  await this.healSchema(safe, RULES_COLUMNS);
930
899
  await this.ensureLookupIndex(safe, "rule_id_version", `("rule_id", "version")`);
931
900
  }
932
- /**
933
- * Create the tasks table.
934
- *
935
- * Same write pattern as rules + skills. `kpis` is a nullable JSONB
936
- * column with the agent's KPI metadata; KPI current values come from
937
- * `task_events` (SUM(value)), not this snapshot.
938
- */
939
- async ensureTasksTable(name) {
940
- const safe = sqlIdent(name);
941
- const tables = await this.listTables();
942
- if (!tables.includes(safe)) {
943
- log3(`table "${safe}" not found, creating`);
944
- await this.createTableWithRetry(buildCreateTableSql(safe, TASKS_COLUMNS), safe);
945
- log3(`table "${safe}" created`);
946
- if (!tables.includes(safe))
947
- this._tablesCache = [...tables, safe];
948
- }
949
- await this.healSchema(safe, TASKS_COLUMNS);
950
- await this.ensureLookupIndex(safe, "task_id_version", `("task_id", "version")`);
951
- }
952
- /**
953
- * Create the task-events table.
954
- *
955
- * Append-only. Every INSERT is a fresh row; never UPDATE. KPI current
956
- * value is `SUM(value) WHERE task_id=? AND kpi_id=?`. Index on
957
- * (task_id, kpi_id) is the canonical aggregation key.
958
- */
959
- async ensureTaskEventsTable(name) {
960
- const safe = sqlIdent(name);
961
- const tables = await this.listTables();
962
- if (!tables.includes(safe)) {
963
- log3(`table "${safe}" not found, creating`);
964
- await this.createTableWithRetry(buildCreateTableSql(safe, TASK_EVENTS_COLUMNS), safe);
965
- log3(`table "${safe}" created`);
966
- if (!tables.includes(safe))
967
- this._tablesCache = [...tables, safe];
968
- }
969
- await this.healSchema(safe, TASK_EVENTS_COLUMNS);
970
- await this.ensureLookupIndex(safe, "task_id_kpi_id", `("task_id", "kpi_id")`);
971
- }
972
901
  /**
973
902
  * Create the goals table.
974
903
  *
@@ -105,13 +105,10 @@ function loadConfig() {
105
105
  sessionsTableName: process.env.HIVEMIND_SESSIONS_TABLE ?? "sessions",
106
106
  skillsTableName: process.env.HIVEMIND_SKILLS_TABLE ?? "skills",
107
107
  // Defaults match the table name written into the SQL — keep aligned
108
- // with RULES_COLUMNS / TASKS_COLUMNS / TASK_EVENTS_COLUMNS in
109
- // deeplake-schema.ts and with the e2e test-org override convention
110
- // (memory_test / sessions_test → goals_test, etc.) documented in
111
- // CLAUDE.md.
108
+ // with RULES_COLUMNS in deeplake-schema.ts and with the e2e test-org
109
+ // override convention (memory_test / sessions_test goals_test, etc.)
110
+ // documented in CLAUDE.md.
112
111
  rulesTableName: process.env.HIVEMIND_RULES_TABLE ?? "hivemind_rules",
113
- tasksTableName: process.env.HIVEMIND_TASKS_TABLE ?? "hivemind_tasks",
114
- taskEventsTableName: process.env.HIVEMIND_TASK_EVENTS_TABLE ?? "hivemind_task_events",
115
112
  // Goals + KPIs (refined design — VFS path classifier maps
116
113
  // memory/goal/<user>/<status>/<uuid>.md → hivemind_goals row
117
114
  // memory/kpi/<uuid>/<kpi_id>.md → hivemind_kpis row
@@ -233,32 +230,6 @@ var RULES_COLUMNS = Object.freeze([
233
230
  { name: "agent", sql: "TEXT NOT NULL DEFAULT 'manual'" },
234
231
  { name: "plugin_version", sql: "TEXT NOT NULL DEFAULT ''" }
235
232
  ]);
236
- var TASKS_COLUMNS = Object.freeze([
237
- { name: "id", sql: "TEXT NOT NULL DEFAULT ''" },
238
- { name: "task_id", sql: "TEXT NOT NULL DEFAULT ''" },
239
- { name: "text", sql: "TEXT NOT NULL DEFAULT ''" },
240
- { name: "scope", sql: "TEXT NOT NULL DEFAULT 'me'" },
241
- { name: "status", sql: "TEXT NOT NULL DEFAULT 'active'" },
242
- { name: "assigned_to", sql: "TEXT NOT NULL DEFAULT ''" },
243
- { name: "assigned_by", sql: "TEXT NOT NULL DEFAULT ''" },
244
- { name: "kpis", sql: "JSONB" },
245
- { name: "version", sql: "BIGINT NOT NULL DEFAULT 1" },
246
- { name: "created_at", sql: "TEXT NOT NULL DEFAULT ''" },
247
- { name: "agent", sql: "TEXT NOT NULL DEFAULT 'manual'" },
248
- { name: "plugin_version", sql: "TEXT NOT NULL DEFAULT ''" }
249
- ]);
250
- var TASK_EVENTS_COLUMNS = Object.freeze([
251
- { name: "id", sql: "TEXT NOT NULL DEFAULT ''" },
252
- { name: "task_id", sql: "TEXT NOT NULL DEFAULT ''" },
253
- { name: "task_version", sql: "BIGINT NOT NULL DEFAULT 1" },
254
- { name: "kpi_id", sql: "TEXT NOT NULL DEFAULT ''" },
255
- { name: "value", sql: "BIGINT NOT NULL DEFAULT 0" },
256
- { name: "note", sql: "TEXT NOT NULL DEFAULT ''" },
257
- { name: "source", sql: "TEXT NOT NULL DEFAULT 'user'" },
258
- { name: "agent", sql: "TEXT NOT NULL DEFAULT ''" },
259
- { name: "ts", sql: "TEXT NOT NULL DEFAULT ''" },
260
- { name: "plugin_version", sql: "TEXT NOT NULL DEFAULT ''" }
261
- ]);
262
233
  var GOALS_COLUMNS = Object.freeze([
263
234
  { name: "id", sql: "TEXT NOT NULL DEFAULT ''" },
264
235
  { name: "goal_id", sql: "TEXT NOT NULL DEFAULT ''" },
@@ -324,8 +295,6 @@ validateSchema("MEMORY_COLUMNS", MEMORY_COLUMNS);
324
295
  validateSchema("SESSIONS_COLUMNS", SESSIONS_COLUMNS);
325
296
  validateSchema("SKILLS_COLUMNS", SKILLS_COLUMNS);
326
297
  validateSchema("RULES_COLUMNS", RULES_COLUMNS);
327
- validateSchema("TASKS_COLUMNS", TASKS_COLUMNS);
328
- validateSchema("TASK_EVENTS_COLUMNS", TASK_EVENTS_COLUMNS);
329
298
  validateSchema("GOALS_COLUMNS", GOALS_COLUMNS);
330
299
  validateSchema("KPIS_COLUMNS", KPIS_COLUMNS);
331
300
  validateSchema("CODEBASE_COLUMNS", CODEBASE_COLUMNS);
@@ -945,46 +914,6 @@ var DeeplakeApi = class {
945
914
  await this.healSchema(safe, RULES_COLUMNS);
946
915
  await this.ensureLookupIndex(safe, "rule_id_version", `("rule_id", "version")`);
947
916
  }
948
- /**
949
- * Create the tasks table.
950
- *
951
- * Same write pattern as rules + skills. `kpis` is a nullable JSONB
952
- * column with the agent's KPI metadata; KPI current values come from
953
- * `task_events` (SUM(value)), not this snapshot.
954
- */
955
- async ensureTasksTable(name) {
956
- const safe = sqlIdent(name);
957
- const tables = await this.listTables();
958
- if (!tables.includes(safe)) {
959
- log3(`table "${safe}" not found, creating`);
960
- await this.createTableWithRetry(buildCreateTableSql(safe, TASKS_COLUMNS), safe);
961
- log3(`table "${safe}" created`);
962
- if (!tables.includes(safe))
963
- this._tablesCache = [...tables, safe];
964
- }
965
- await this.healSchema(safe, TASKS_COLUMNS);
966
- await this.ensureLookupIndex(safe, "task_id_version", `("task_id", "version")`);
967
- }
968
- /**
969
- * Create the task-events table.
970
- *
971
- * Append-only. Every INSERT is a fresh row; never UPDATE. KPI current
972
- * value is `SUM(value) WHERE task_id=? AND kpi_id=?`. Index on
973
- * (task_id, kpi_id) is the canonical aggregation key.
974
- */
975
- async ensureTaskEventsTable(name) {
976
- const safe = sqlIdent(name);
977
- const tables = await this.listTables();
978
- if (!tables.includes(safe)) {
979
- log3(`table "${safe}" not found, creating`);
980
- await this.createTableWithRetry(buildCreateTableSql(safe, TASK_EVENTS_COLUMNS), safe);
981
- log3(`table "${safe}" created`);
982
- if (!tables.includes(safe))
983
- this._tablesCache = [...tables, safe];
984
- }
985
- await this.healSchema(safe, TASK_EVENTS_COLUMNS);
986
- await this.ensureLookupIndex(safe, "task_id_kpi_id", `("task_id", "kpi_id")`);
987
- }
988
917
  /**
989
918
  * Create the goals table.
990
919
  *
@@ -127,13 +127,10 @@ function loadConfig() {
127
127
  sessionsTableName: process.env.HIVEMIND_SESSIONS_TABLE ?? "sessions",
128
128
  skillsTableName: process.env.HIVEMIND_SKILLS_TABLE ?? "skills",
129
129
  // Defaults match the table name written into the SQL — keep aligned
130
- // with RULES_COLUMNS / TASKS_COLUMNS / TASK_EVENTS_COLUMNS in
131
- // deeplake-schema.ts and with the e2e test-org override convention
132
- // (memory_test / sessions_test → goals_test, etc.) documented in
133
- // CLAUDE.md.
130
+ // with RULES_COLUMNS in deeplake-schema.ts and with the e2e test-org
131
+ // override convention (memory_test / sessions_test goals_test, etc.)
132
+ // documented in CLAUDE.md.
134
133
  rulesTableName: process.env.HIVEMIND_RULES_TABLE ?? "hivemind_rules",
135
- tasksTableName: process.env.HIVEMIND_TASKS_TABLE ?? "hivemind_tasks",
136
- taskEventsTableName: process.env.HIVEMIND_TASK_EVENTS_TABLE ?? "hivemind_task_events",
137
134
  // Goals + KPIs (refined design — VFS path classifier maps
138
135
  // memory/goal/<user>/<status>/<uuid>.md → hivemind_goals row
139
136
  // memory/kpi/<uuid>/<kpi_id>.md → hivemind_kpis row
@@ -246,32 +243,6 @@ var RULES_COLUMNS = Object.freeze([
246
243
  { name: "agent", sql: "TEXT NOT NULL DEFAULT 'manual'" },
247
244
  { name: "plugin_version", sql: "TEXT NOT NULL DEFAULT ''" }
248
245
  ]);
249
- var TASKS_COLUMNS = Object.freeze([
250
- { name: "id", sql: "TEXT NOT NULL DEFAULT ''" },
251
- { name: "task_id", sql: "TEXT NOT NULL DEFAULT ''" },
252
- { name: "text", sql: "TEXT NOT NULL DEFAULT ''" },
253
- { name: "scope", sql: "TEXT NOT NULL DEFAULT 'me'" },
254
- { name: "status", sql: "TEXT NOT NULL DEFAULT 'active'" },
255
- { name: "assigned_to", sql: "TEXT NOT NULL DEFAULT ''" },
256
- { name: "assigned_by", sql: "TEXT NOT NULL DEFAULT ''" },
257
- { name: "kpis", sql: "JSONB" },
258
- { name: "version", sql: "BIGINT NOT NULL DEFAULT 1" },
259
- { name: "created_at", sql: "TEXT NOT NULL DEFAULT ''" },
260
- { name: "agent", sql: "TEXT NOT NULL DEFAULT 'manual'" },
261
- { name: "plugin_version", sql: "TEXT NOT NULL DEFAULT ''" }
262
- ]);
263
- var TASK_EVENTS_COLUMNS = Object.freeze([
264
- { name: "id", sql: "TEXT NOT NULL DEFAULT ''" },
265
- { name: "task_id", sql: "TEXT NOT NULL DEFAULT ''" },
266
- { name: "task_version", sql: "BIGINT NOT NULL DEFAULT 1" },
267
- { name: "kpi_id", sql: "TEXT NOT NULL DEFAULT ''" },
268
- { name: "value", sql: "BIGINT NOT NULL DEFAULT 0" },
269
- { name: "note", sql: "TEXT NOT NULL DEFAULT ''" },
270
- { name: "source", sql: "TEXT NOT NULL DEFAULT 'user'" },
271
- { name: "agent", sql: "TEXT NOT NULL DEFAULT ''" },
272
- { name: "ts", sql: "TEXT NOT NULL DEFAULT ''" },
273
- { name: "plugin_version", sql: "TEXT NOT NULL DEFAULT ''" }
274
- ]);
275
246
  var GOALS_COLUMNS = Object.freeze([
276
247
  { name: "id", sql: "TEXT NOT NULL DEFAULT ''" },
277
248
  { name: "goal_id", sql: "TEXT NOT NULL DEFAULT ''" },
@@ -337,8 +308,6 @@ validateSchema("MEMORY_COLUMNS", MEMORY_COLUMNS);
337
308
  validateSchema("SESSIONS_COLUMNS", SESSIONS_COLUMNS);
338
309
  validateSchema("SKILLS_COLUMNS", SKILLS_COLUMNS);
339
310
  validateSchema("RULES_COLUMNS", RULES_COLUMNS);
340
- validateSchema("TASKS_COLUMNS", TASKS_COLUMNS);
341
- validateSchema("TASK_EVENTS_COLUMNS", TASK_EVENTS_COLUMNS);
342
311
  validateSchema("GOALS_COLUMNS", GOALS_COLUMNS);
343
312
  validateSchema("KPIS_COLUMNS", KPIS_COLUMNS);
344
313
  validateSchema("CODEBASE_COLUMNS", CODEBASE_COLUMNS);
@@ -940,46 +909,6 @@ var DeeplakeApi = class {
940
909
  await this.healSchema(safe, RULES_COLUMNS);
941
910
  await this.ensureLookupIndex(safe, "rule_id_version", `("rule_id", "version")`);
942
911
  }
943
- /**
944
- * Create the tasks table.
945
- *
946
- * Same write pattern as rules + skills. `kpis` is a nullable JSONB
947
- * column with the agent's KPI metadata; KPI current values come from
948
- * `task_events` (SUM(value)), not this snapshot.
949
- */
950
- async ensureTasksTable(name) {
951
- const safe = sqlIdent(name);
952
- const tables = await this.listTables();
953
- if (!tables.includes(safe)) {
954
- log3(`table "${safe}" not found, creating`);
955
- await this.createTableWithRetry(buildCreateTableSql(safe, TASKS_COLUMNS), safe);
956
- log3(`table "${safe}" created`);
957
- if (!tables.includes(safe))
958
- this._tablesCache = [...tables, safe];
959
- }
960
- await this.healSchema(safe, TASKS_COLUMNS);
961
- await this.ensureLookupIndex(safe, "task_id_version", `("task_id", "version")`);
962
- }
963
- /**
964
- * Create the task-events table.
965
- *
966
- * Append-only. Every INSERT is a fresh row; never UPDATE. KPI current
967
- * value is `SUM(value) WHERE task_id=? AND kpi_id=?`. Index on
968
- * (task_id, kpi_id) is the canonical aggregation key.
969
- */
970
- async ensureTaskEventsTable(name) {
971
- const safe = sqlIdent(name);
972
- const tables = await this.listTables();
973
- if (!tables.includes(safe)) {
974
- log3(`table "${safe}" not found, creating`);
975
- await this.createTableWithRetry(buildCreateTableSql(safe, TASK_EVENTS_COLUMNS), safe);
976
- log3(`table "${safe}" created`);
977
- if (!tables.includes(safe))
978
- this._tablesCache = [...tables, safe];
979
- }
980
- await this.healSchema(safe, TASK_EVENTS_COLUMNS);
981
- await this.ensureLookupIndex(safe, "task_id_kpi_id", `("task_id", "kpi_id")`);
982
- }
983
912
  /**
984
913
  * Create the goals table.
985
914
  *
@@ -325,13 +325,10 @@ function loadConfig() {
325
325
  sessionsTableName: process.env.HIVEMIND_SESSIONS_TABLE ?? "sessions",
326
326
  skillsTableName: process.env.HIVEMIND_SKILLS_TABLE ?? "skills",
327
327
  // Defaults match the table name written into the SQL — keep aligned
328
- // with RULES_COLUMNS / TASKS_COLUMNS / TASK_EVENTS_COLUMNS in
329
- // deeplake-schema.ts and with the e2e test-org override convention
330
- // (memory_test / sessions_test → goals_test, etc.) documented in
331
- // CLAUDE.md.
328
+ // with RULES_COLUMNS in deeplake-schema.ts and with the e2e test-org
329
+ // override convention (memory_test / sessions_test goals_test, etc.)
330
+ // documented in CLAUDE.md.
332
331
  rulesTableName: process.env.HIVEMIND_RULES_TABLE ?? "hivemind_rules",
333
- tasksTableName: process.env.HIVEMIND_TASKS_TABLE ?? "hivemind_tasks",
334
- taskEventsTableName: process.env.HIVEMIND_TASK_EVENTS_TABLE ?? "hivemind_task_events",
335
332
  // Goals + KPIs (refined design — VFS path classifier maps
336
333
  // memory/goal/<user>/<status>/<uuid>.md → hivemind_goals row
337
334
  // memory/kpi/<uuid>/<kpi_id>.md → hivemind_kpis row
@@ -426,32 +423,6 @@ var RULES_COLUMNS = Object.freeze([
426
423
  { name: "agent", sql: "TEXT NOT NULL DEFAULT 'manual'" },
427
424
  { name: "plugin_version", sql: "TEXT NOT NULL DEFAULT ''" }
428
425
  ]);
429
- var TASKS_COLUMNS = Object.freeze([
430
- { name: "id", sql: "TEXT NOT NULL DEFAULT ''" },
431
- { name: "task_id", sql: "TEXT NOT NULL DEFAULT ''" },
432
- { name: "text", sql: "TEXT NOT NULL DEFAULT ''" },
433
- { name: "scope", sql: "TEXT NOT NULL DEFAULT 'me'" },
434
- { name: "status", sql: "TEXT NOT NULL DEFAULT 'active'" },
435
- { name: "assigned_to", sql: "TEXT NOT NULL DEFAULT ''" },
436
- { name: "assigned_by", sql: "TEXT NOT NULL DEFAULT ''" },
437
- { name: "kpis", sql: "JSONB" },
438
- { name: "version", sql: "BIGINT NOT NULL DEFAULT 1" },
439
- { name: "created_at", sql: "TEXT NOT NULL DEFAULT ''" },
440
- { name: "agent", sql: "TEXT NOT NULL DEFAULT 'manual'" },
441
- { name: "plugin_version", sql: "TEXT NOT NULL DEFAULT ''" }
442
- ]);
443
- var TASK_EVENTS_COLUMNS = Object.freeze([
444
- { name: "id", sql: "TEXT NOT NULL DEFAULT ''" },
445
- { name: "task_id", sql: "TEXT NOT NULL DEFAULT ''" },
446
- { name: "task_version", sql: "BIGINT NOT NULL DEFAULT 1" },
447
- { name: "kpi_id", sql: "TEXT NOT NULL DEFAULT ''" },
448
- { name: "value", sql: "BIGINT NOT NULL DEFAULT 0" },
449
- { name: "note", sql: "TEXT NOT NULL DEFAULT ''" },
450
- { name: "source", sql: "TEXT NOT NULL DEFAULT 'user'" },
451
- { name: "agent", sql: "TEXT NOT NULL DEFAULT ''" },
452
- { name: "ts", sql: "TEXT NOT NULL DEFAULT ''" },
453
- { name: "plugin_version", sql: "TEXT NOT NULL DEFAULT ''" }
454
- ]);
455
426
  var GOALS_COLUMNS = Object.freeze([
456
427
  { name: "id", sql: "TEXT NOT NULL DEFAULT ''" },
457
428
  { name: "goal_id", sql: "TEXT NOT NULL DEFAULT ''" },
@@ -517,8 +488,6 @@ validateSchema("MEMORY_COLUMNS", MEMORY_COLUMNS);
517
488
  validateSchema("SESSIONS_COLUMNS", SESSIONS_COLUMNS);
518
489
  validateSchema("SKILLS_COLUMNS", SKILLS_COLUMNS);
519
490
  validateSchema("RULES_COLUMNS", RULES_COLUMNS);
520
- validateSchema("TASKS_COLUMNS", TASKS_COLUMNS);
521
- validateSchema("TASK_EVENTS_COLUMNS", TASK_EVENTS_COLUMNS);
522
491
  validateSchema("GOALS_COLUMNS", GOALS_COLUMNS);
523
492
  validateSchema("KPIS_COLUMNS", KPIS_COLUMNS);
524
493
  validateSchema("CODEBASE_COLUMNS", CODEBASE_COLUMNS);
@@ -1120,46 +1089,6 @@ var DeeplakeApi = class {
1120
1089
  await this.healSchema(safe, RULES_COLUMNS);
1121
1090
  await this.ensureLookupIndex(safe, "rule_id_version", `("rule_id", "version")`);
1122
1091
  }
1123
- /**
1124
- * Create the tasks table.
1125
- *
1126
- * Same write pattern as rules + skills. `kpis` is a nullable JSONB
1127
- * column with the agent's KPI metadata; KPI current values come from
1128
- * `task_events` (SUM(value)), not this snapshot.
1129
- */
1130
- async ensureTasksTable(name) {
1131
- const safe = sqlIdent(name);
1132
- const tables = await this.listTables();
1133
- if (!tables.includes(safe)) {
1134
- log3(`table "${safe}" not found, creating`);
1135
- await this.createTableWithRetry(buildCreateTableSql(safe, TASKS_COLUMNS), safe);
1136
- log3(`table "${safe}" created`);
1137
- if (!tables.includes(safe))
1138
- this._tablesCache = [...tables, safe];
1139
- }
1140
- await this.healSchema(safe, TASKS_COLUMNS);
1141
- await this.ensureLookupIndex(safe, "task_id_version", `("task_id", "version")`);
1142
- }
1143
- /**
1144
- * Create the task-events table.
1145
- *
1146
- * Append-only. Every INSERT is a fresh row; never UPDATE. KPI current
1147
- * value is `SUM(value) WHERE task_id=? AND kpi_id=?`. Index on
1148
- * (task_id, kpi_id) is the canonical aggregation key.
1149
- */
1150
- async ensureTaskEventsTable(name) {
1151
- const safe = sqlIdent(name);
1152
- const tables = await this.listTables();
1153
- if (!tables.includes(safe)) {
1154
- log3(`table "${safe}" not found, creating`);
1155
- await this.createTableWithRetry(buildCreateTableSql(safe, TASK_EVENTS_COLUMNS), safe);
1156
- log3(`table "${safe}" created`);
1157
- if (!tables.includes(safe))
1158
- this._tablesCache = [...tables, safe];
1159
- }
1160
- await this.healSchema(safe, TASK_EVENTS_COLUMNS);
1161
- await this.ensureLookupIndex(safe, "task_id_kpi_id", `("task_id", "kpi_id")`);
1162
- }
1163
1092
  /**
1164
1093
  * Create the goals table.
1165
1094
  *