@cleocode/cleo 2026.4.67 → 2026.4.69

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 (29) hide show
  1. package/dist/cli/index.js +641 -220
  2. package/dist/cli/index.js.map +4 -4
  3. package/migrations/drizzle-brain/20260321000001_t033-brain-indexes/migration.sql +12 -0
  4. package/migrations/drizzle-brain/20260321000001_t033-brain-indexes/snapshot.json +1232 -0
  5. package/migrations/drizzle-brain/20260408000001_t417-agent-field/migration.sql +13 -0
  6. package/migrations/drizzle-brain/20260408000001_t417-agent-field/snapshot.json +28 -0
  7. package/migrations/drizzle-brain/20260411000001_t528-graph-schema-expansion/migration.sql +47 -0
  8. package/migrations/drizzle-brain/20260412000001_t531-quality-score-typed-tables/migration.sql +23 -0
  9. package/migrations/drizzle-brain/20260413000001_t549-tiered-typed-memory/migration.sql +195 -0
  10. package/migrations/drizzle-brain/20260415000001_t626-normalize-co-retrieved-edge-type/migration.sql +14 -0
  11. package/migrations/drizzle-brain/20260416000001_t673-retrieval-log-plasticity-columns/migration.sql +57 -0
  12. package/migrations/drizzle-brain/20260416000002_t673-plasticity-events-expand/migration.sql +44 -0
  13. package/migrations/drizzle-brain/20260416000003_t673-page-edges-plasticity-columns/migration.sql +44 -0
  14. package/migrations/drizzle-brain/20260416000004_t673-new-plasticity-tables/migration.sql +73 -0
  15. package/migrations/drizzle-brain/20260416000005_t726-dedup-tier-columns/migration.sql +77 -0
  16. package/migrations/drizzle-nexus/20260412000001_t529-nexus-graph-tables/migration.sql +49 -0
  17. package/migrations/drizzle-nexus/20260415000001_t622-project-registry-paths/migration.sql +12 -0
  18. package/migrations/drizzle-tasks/20260320013731_wave0-schema-hardening/migration.sql +84 -0
  19. package/migrations/drizzle-tasks/20260320013731_wave0-schema-hardening/snapshot.json +4060 -0
  20. package/migrations/drizzle-tasks/20260320020000_agent-dimension/migration.sql +35 -0
  21. package/migrations/drizzle-tasks/20260320020000_agent-dimension/snapshot.json +4312 -0
  22. package/migrations/drizzle-tasks/20260321000000_t033-connection-health/migration.sql +518 -0
  23. package/migrations/drizzle-tasks/20260321000000_t033-connection-health/snapshot.json +4312 -0
  24. package/migrations/drizzle-tasks/20260321000002_t060-pipeline-stage-binding/migration.sql +82 -0
  25. package/migrations/drizzle-tasks/20260321000002_t060-pipeline-stage-binding/snapshot.json +9 -0
  26. package/migrations/drizzle-tasks/20260324000000_assignee-column/migration.sql +6 -0
  27. package/migrations/drizzle-tasks/20260324000000_assignee-column/snapshot.json +9 -0
  28. package/migrations/drizzle-tasks/20260327000000_agent-credentials/migration.sql +23 -0
  29. package/package.json +8 -8
@@ -0,0 +1,82 @@
1
+ -- T060: Remove FK constraint from tasks.pipeline_stage so it stores stage names
2
+ -- (e.g. "implementation", "testing") rather than lifecycle_stages.id references.
3
+ -- Tasks can now be assigned a pipeline stage without a lifecycle pipeline record.
4
+ --
5
+ -- SQLite does not support DROP CONSTRAINT, so we rebuild the tasks table.
6
+ PRAGMA foreign_keys=OFF;
7
+ --> statement-breakpoint
8
+ CREATE TABLE `tasks_t060` (
9
+ `id` text PRIMARY KEY,
10
+ `title` text NOT NULL,
11
+ `description` text,
12
+ `status` text DEFAULT 'pending' NOT NULL,
13
+ `priority` text DEFAULT 'medium' NOT NULL,
14
+ `type` text,
15
+ `parent_id` text,
16
+ `phase` text,
17
+ `size` text,
18
+ `position` integer,
19
+ `position_version` integer DEFAULT 0,
20
+ `labels_json` text DEFAULT '[]',
21
+ `notes_json` text DEFAULT '[]',
22
+ `acceptance_json` text DEFAULT '[]',
23
+ `files_json` text DEFAULT '[]',
24
+ `origin` text,
25
+ `blocked_by` text,
26
+ `epic_lifecycle` text,
27
+ `no_auto_complete` integer,
28
+ `created_at` text DEFAULT (datetime('now')) NOT NULL,
29
+ `updated_at` text,
30
+ `completed_at` text,
31
+ `cancelled_at` text,
32
+ `cancellation_reason` text,
33
+ `archived_at` text,
34
+ `archive_reason` text,
35
+ `cycle_time_days` integer,
36
+ `verification_json` text,
37
+ `created_by` text,
38
+ `modified_by` text,
39
+ `session_id` text,
40
+ `pipeline_stage` text,
41
+ CONSTRAINT `fk_tasks_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `tasks_t060`(`id`) ON DELETE SET NULL,
42
+ CONSTRAINT `fk_tasks_session_id` FOREIGN KEY (`session_id`) REFERENCES `sessions`(`id`) ON DELETE SET NULL
43
+ );
44
+ --> statement-breakpoint
45
+ INSERT INTO `tasks_t060` SELECT
46
+ `id`, `title`, `description`, `status`, `priority`, `type`, `parent_id`,
47
+ `phase`, `size`, `position`, `position_version`, `labels_json`, `notes_json`,
48
+ `acceptance_json`, `files_json`, `origin`, `blocked_by`, `epic_lifecycle`,
49
+ `no_auto_complete`, `created_at`, `updated_at`, `completed_at`, `cancelled_at`,
50
+ `cancellation_reason`, `archived_at`, `archive_reason`, `cycle_time_days`,
51
+ `verification_json`, `created_by`, `modified_by`, `session_id`,
52
+ NULL
53
+ FROM `tasks`;
54
+ --> statement-breakpoint
55
+ DROP TABLE `tasks`;
56
+ --> statement-breakpoint
57
+ ALTER TABLE `tasks_t060` RENAME TO `tasks`;
58
+ --> statement-breakpoint
59
+ -- Restore indexes
60
+ CREATE INDEX `idx_tasks_status` ON `tasks` (`status`);
61
+ --> statement-breakpoint
62
+ CREATE INDEX `idx_tasks_parent_id` ON `tasks` (`parent_id`);
63
+ --> statement-breakpoint
64
+ CREATE INDEX `idx_tasks_phase` ON `tasks` (`phase`);
65
+ --> statement-breakpoint
66
+ CREATE INDEX `idx_tasks_type` ON `tasks` (`type`);
67
+ --> statement-breakpoint
68
+ CREATE INDEX `idx_tasks_priority` ON `tasks` (`priority`);
69
+ --> statement-breakpoint
70
+ CREATE INDEX `idx_tasks_session_id` ON `tasks` (`session_id`);
71
+ --> statement-breakpoint
72
+ CREATE INDEX `idx_tasks_pipeline_stage` ON `tasks` (`pipeline_stage`);
73
+ --> statement-breakpoint
74
+ CREATE INDEX `idx_tasks_parent_status` ON `tasks` (`parent_id`, `status`);
75
+ --> statement-breakpoint
76
+ CREATE INDEX `idx_tasks_status_priority` ON `tasks` (`status`, `priority`);
77
+ --> statement-breakpoint
78
+ CREATE INDEX `idx_tasks_type_phase` ON `tasks` (`type`, `phase`);
79
+ --> statement-breakpoint
80
+ CREATE INDEX `idx_tasks_status_archive_reason` ON `tasks` (`status`, `archive_reason`);
81
+ --> statement-breakpoint
82
+ PRAGMA foreign_keys=ON;
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "7",
3
+ "dialect": "sqlite",
4
+ "id": "t060-pipeline-stage-binding-20260321",
5
+ "prevIds": [
6
+ "t033-connection-health-20260321"
7
+ ],
8
+ "ddl": []
9
+ }
@@ -0,0 +1,6 @@
1
+ -- B.1: Add assignee column to tasks table for agent task claiming.
2
+ -- Enables tasks.claim(taskId, agentId) and tasks.unclaim(taskId).
3
+ -- NULL = unclaimed; non-null = claimed by that agent ID.
4
+ ALTER TABLE `tasks` ADD COLUMN `assignee` text;
5
+ --> statement-breakpoint
6
+ CREATE INDEX `idx_tasks_assignee` ON `tasks` (`assignee`);
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": "7",
3
+ "dialect": "sqlite",
4
+ "id": "assignee-column-20260324",
5
+ "prevIds": [
6
+ "t060-pipeline-stage-binding-20260321"
7
+ ],
8
+ "ddl": []
9
+ }
@@ -0,0 +1,23 @@
1
+ -- T173: Add agent_credentials table for unified agent registry.
2
+ -- Stores agent API keys encrypted at rest (AES-256-GCM, machine-key bound).
3
+ -- Replaces loose clawmsgr-*.json config files.
4
+ -- See: docs/specs/SIGNALDOCK-UNIFIED-AGENT-REGISTRY.md Section 3.1
5
+ CREATE TABLE IF NOT EXISTS `agent_credentials` (
6
+ `agent_id` text PRIMARY KEY NOT NULL,
7
+ `display_name` text NOT NULL,
8
+ `api_key_encrypted` text NOT NULL,
9
+ `api_base_url` text NOT NULL DEFAULT 'https://api.signaldock.io',
10
+ `classification` text,
11
+ `privacy_tier` text NOT NULL DEFAULT 'public',
12
+ `capabilities` text NOT NULL DEFAULT '[]',
13
+ `skills` text NOT NULL DEFAULT '[]',
14
+ `transport_config` text NOT NULL DEFAULT '{}',
15
+ `is_active` integer NOT NULL DEFAULT 1,
16
+ `last_used_at` integer,
17
+ `created_at` integer NOT NULL,
18
+ `updated_at` integer NOT NULL
19
+ );
20
+ --> statement-breakpoint
21
+ CREATE INDEX IF NOT EXISTS `idx_agent_credentials_active` ON `agent_credentials` (`is_active`);
22
+ --> statement-breakpoint
23
+ CREATE INDEX IF NOT EXISTS `idx_agent_credentials_last_used` ON `agent_credentials` (`last_used_at`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cleocode/cleo",
3
- "version": "2026.4.67",
3
+ "version": "2026.4.69",
4
4
  "description": "CLEO CLI — the assembled product consuming @cleocode/core",
5
5
  "type": "module",
6
6
  "main": "./dist/cli/index.js",
@@ -28,13 +28,13 @@
28
28
  "tree-sitter-ruby": "^0.23.1",
29
29
  "tree-sitter-rust": "0.23.1",
30
30
  "tree-sitter-typescript": "^0.23.2",
31
- "@cleocode/caamp": "2026.4.67",
32
- "@cleocode/cant": "2026.4.67",
33
- "@cleocode/contracts": "2026.4.67",
34
- "@cleocode/core": "2026.4.67",
35
- "@cleocode/lafs": "2026.4.67",
36
- "@cleocode/nexus": "2026.4.67",
37
- "@cleocode/runtime": "2026.4.67"
31
+ "@cleocode/cant": "2026.4.69",
32
+ "@cleocode/caamp": "2026.4.69",
33
+ "@cleocode/contracts": "2026.4.69",
34
+ "@cleocode/lafs": "2026.4.69",
35
+ "@cleocode/core": "2026.4.69",
36
+ "@cleocode/nexus": "2026.4.69",
37
+ "@cleocode/runtime": "2026.4.69"
38
38
  },
39
39
  "engines": {
40
40
  "node": ">=24.0.0"