@precisionutilityguild/liquid-shadow 1.0.9 → 1.0.10

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 (39) hide show
  1. package/README.md +3 -3
  2. package/dist/data/migrations/000_baseline.sql +17 -0
  3. package/dist/data/migrations/014_tribunal_state.sql +24 -0
  4. package/dist/data/migrations/015_repo_level_handoffs_nullable.sql +52 -0
  5. package/dist/data/migrations/016_repair_tribunal_artifact_fk.sql +58 -0
  6. package/dist/entry/cli/index.js +540 -493
  7. package/dist/entry/ember/index.js +44 -20
  8. package/dist/entry/mcp/server.js +388 -347
  9. package/dist/entry/tribunal/index.js +650 -0
  10. package/dist/index.js +387 -346
  11. package/dist/logic/parser/index.js +16 -16
  12. package/dist/skills/shadow_audit/SKILL.md +22 -30
  13. package/dist/skills/shadow_chronicle/SKILL.md +16 -29
  14. package/dist/skills/shadow_continue/SKILL.md +37 -53
  15. package/dist/skills/shadow_coordinate/SKILL.md +46 -0
  16. package/dist/skills/shadow_crystallize/SKILL.md +13 -27
  17. package/dist/skills/shadow_mission/SKILL.md +27 -41
  18. package/dist/skills/shadow_onboard/SKILL.md +26 -35
  19. package/dist/skills/shadow_research/SKILL.md +15 -23
  20. package/dist/skills/shadow_sync/SKILL.md +18 -9
  21. package/dist/skills/shadow_synthesize/SKILL.md +14 -36
  22. package/dist/skills/shadow_trace_impact/SKILL.md +30 -50
  23. package/dist/skills/shadow_understand/SKILL.md +37 -52
  24. package/dist/skills/shadow_workspace/SKILL.md +17 -17
  25. package/dist/web-manifest.json +13 -6
  26. package/package.json +1 -1
  27. package/skills/shadow_audit/SKILL.md +22 -30
  28. package/skills/shadow_chronicle/SKILL.md +16 -29
  29. package/skills/shadow_continue/SKILL.md +37 -53
  30. package/skills/shadow_coordinate/SKILL.md +46 -0
  31. package/skills/shadow_crystallize/SKILL.md +13 -27
  32. package/skills/shadow_mission/SKILL.md +27 -41
  33. package/skills/shadow_onboard/SKILL.md +26 -35
  34. package/skills/shadow_research/SKILL.md +15 -23
  35. package/skills/shadow_sync/SKILL.md +18 -9
  36. package/skills/shadow_synthesize/SKILL.md +14 -36
  37. package/skills/shadow_trace_impact/SKILL.md +30 -50
  38. package/skills/shadow_understand/SKILL.md +37 -52
  39. package/skills/shadow_workspace/SKILL.md +17 -17
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
  </p>
7
7
 
8
8
  <p align="center">
9
- <img src="https://img.shields.io/badge/version-1.0.9-blue.svg" alt="Version">
9
+ <img src="https://img.shields.io/badge/version-1.0.10-blue.svg" alt="Version">
10
10
  <img src="https://img.shields.io/badge/License-Apache--2.0-blue.svg" alt="License">
11
11
  <img src="https://img.shields.io/badge/build-passing-brightgreen.svg" alt="Build">
12
12
  <img src="https://img.shields.io/badge/MCP-First-6D28D9.svg" alt="MCP First">
@@ -42,7 +42,7 @@ Change one function, see the ripple. Trace execution flows and predict the **Bla
42
42
 
43
43
  ---
44
44
 
45
- ## The Tactical Suite (43 Atomic Tools)
45
+ ## The Tactical Suite (45 Atomic Tools)
46
46
 
47
47
  Organized into specialized intelligence suites for the modern agent:
48
48
 
@@ -80,7 +80,7 @@ liquid-shadow dashboard
80
80
 
81
81
  ### 3. The Skills-First Loop
82
82
 
83
- Liquid Shadow is designed for **Autonomy**. While it provides 43 atomic tools, the primary interface for an agent is the **Skills** system. Running `liquid-shadow init` automatically injects these high-level workflows into the agent's environment.
83
+ Liquid Shadow is designed for **Autonomy**. While it provides 45 atomic tools, the primary interface for an agent is the **Skills** system. Running `liquid-shadow init` automatically injects these high-level workflows into the agent's environment.
84
84
 
85
85
  #### High-Signal Workflows
86
86
 
@@ -257,6 +257,23 @@ INSERT OR IGNORE INTO ember_state (key, value) VALUES ('started_at', NULL);
257
257
  INSERT OR IGNORE INTO ember_state (key, value) VALUES ('pid', NULL);
258
258
  INSERT OR IGNORE INTO ember_state (key, value) VALUES ('repo_path', NULL);
259
259
 
260
+ CREATE TABLE IF NOT EXISTS tribunal_state (
261
+ session_id TEXT PRIMARY KEY,
262
+ mission_id INTEGER,
263
+ repo_path TEXT NOT NULL,
264
+ status TEXT DEFAULT 'running',
265
+ phase TEXT DEFAULT 'initializing',
266
+ pid INTEGER,
267
+ artifact_id INTEGER,
268
+ started_at REAL DEFAULT (unixepoch()),
269
+ completed_at REAL,
270
+ FOREIGN KEY(mission_id) REFERENCES missions(id) ON DELETE SET NULL,
271
+ FOREIGN KEY(artifact_id) REFERENCES mission_artifacts(id) ON DELETE SET NULL
272
+ );
273
+
274
+ CREATE INDEX IF NOT EXISTS idx_tribunal_mission_id ON tribunal_state(mission_id);
275
+ CREATE INDEX IF NOT EXISTS idx_tribunal_status ON tribunal_state(status);
276
+
260
277
  -- ── Metadata / caches ────────────────────────────────────────
261
278
 
262
279
  CREATE TABLE IF NOT EXISTS index_metadata (
@@ -0,0 +1,24 @@
1
+ -- Tribunal daemon session state for asynchronous mission peer-review runs.
2
+ -- Session UUID is the primary key; pid is advisory-only for debugging.
3
+
4
+ CREATE TABLE IF NOT EXISTS tribunal_state (
5
+ session_id TEXT PRIMARY KEY,
6
+ mission_id INTEGER,
7
+ repo_path TEXT NOT NULL,
8
+ status TEXT DEFAULT 'running',
9
+ phase TEXT DEFAULT 'initializing',
10
+ pid INTEGER,
11
+ artifact_id INTEGER,
12
+ started_at REAL DEFAULT (unixepoch()),
13
+ completed_at REAL,
14
+ FOREIGN KEY(mission_id) REFERENCES missions(id) ON DELETE SET NULL,
15
+ FOREIGN KEY(artifact_id) REFERENCES mission_artifacts(id) ON DELETE SET NULL
16
+ );
17
+
18
+ CREATE INDEX IF NOT EXISTS idx_tribunal_mission_id ON tribunal_state(mission_id);
19
+ CREATE INDEX IF NOT EXISTS idx_tribunal_status ON tribunal_state(status);
20
+
21
+ -- DOWN
22
+ DROP INDEX IF EXISTS idx_tribunal_status;
23
+ DROP INDEX IF EXISTS idx_tribunal_mission_id;
24
+ DROP TABLE IF EXISTS tribunal_state;
@@ -0,0 +1,52 @@
1
+ PRAGMA foreign_keys = OFF;
2
+
3
+ ALTER TABLE mission_artifacts RENAME TO mission_artifacts_old;
4
+
5
+ CREATE TABLE IF NOT EXISTS mission_artifacts (
6
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
7
+ mission_id INTEGER,
8
+ type TEXT NOT NULL,
9
+ identifier TEXT NOT NULL,
10
+ metadata TEXT,
11
+ embedding TEXT DEFAULT NULL,
12
+ created_at INTEGER DEFAULT (unixepoch()),
13
+ FOREIGN KEY(mission_id) REFERENCES missions(id) ON DELETE CASCADE
14
+ );
15
+
16
+ INSERT INTO mission_artifacts (id, mission_id, type, identifier, metadata, embedding, created_at)
17
+ SELECT id, NULLIF(mission_id, 0), type, identifier, metadata, embedding, created_at
18
+ FROM mission_artifacts_old;
19
+
20
+ DROP TABLE mission_artifacts_old;
21
+
22
+ CREATE INDEX IF NOT EXISTS idx_mission_artifacts_mission ON mission_artifacts(mission_id);
23
+ CREATE INDEX IF NOT EXISTS idx_mission_artifacts_embedding ON mission_artifacts(id) WHERE embedding IS NOT NULL;
24
+
25
+ PRAGMA foreign_keys = ON;
26
+
27
+ -- DOWN
28
+ PRAGMA foreign_keys = OFF;
29
+
30
+ ALTER TABLE mission_artifacts RENAME TO mission_artifacts_new;
31
+
32
+ CREATE TABLE IF NOT EXISTS mission_artifacts (
33
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
34
+ mission_id INTEGER NOT NULL,
35
+ type TEXT NOT NULL,
36
+ identifier TEXT NOT NULL,
37
+ metadata TEXT,
38
+ embedding TEXT DEFAULT NULL,
39
+ created_at INTEGER DEFAULT (unixepoch()),
40
+ FOREIGN KEY(mission_id) REFERENCES missions(id) ON DELETE CASCADE
41
+ );
42
+
43
+ INSERT INTO mission_artifacts (id, mission_id, type, identifier, metadata, embedding, created_at)
44
+ SELECT id, COALESCE(mission_id, 0), type, identifier, metadata, embedding, created_at
45
+ FROM mission_artifacts_new;
46
+
47
+ DROP TABLE mission_artifacts_new;
48
+
49
+ CREATE INDEX IF NOT EXISTS idx_mission_artifacts_mission ON mission_artifacts(mission_id);
50
+ CREATE INDEX IF NOT EXISTS idx_mission_artifacts_embedding ON mission_artifacts(id) WHERE embedding IS NOT NULL;
51
+
52
+ PRAGMA foreign_keys = ON;
@@ -0,0 +1,58 @@
1
+ PRAGMA foreign_keys = OFF;
2
+
3
+ ALTER TABLE tribunal_state RENAME TO tribunal_state_old;
4
+
5
+ CREATE TABLE IF NOT EXISTS tribunal_state (
6
+ session_id TEXT PRIMARY KEY,
7
+ mission_id INTEGER,
8
+ repo_path TEXT NOT NULL,
9
+ status TEXT DEFAULT 'running',
10
+ phase TEXT DEFAULT 'initializing',
11
+ pid INTEGER,
12
+ artifact_id INTEGER,
13
+ started_at REAL DEFAULT (unixepoch()),
14
+ completed_at REAL,
15
+ FOREIGN KEY(mission_id) REFERENCES missions(id) ON DELETE SET NULL,
16
+ FOREIGN KEY(artifact_id) REFERENCES mission_artifacts(id) ON DELETE SET NULL
17
+ );
18
+
19
+ INSERT INTO tribunal_state (session_id, mission_id, repo_path, status, phase, pid, artifact_id, started_at, completed_at)
20
+ SELECT session_id, mission_id, repo_path, status, phase, pid, artifact_id, started_at, completed_at
21
+ FROM tribunal_state_old;
22
+
23
+ DROP TABLE tribunal_state_old;
24
+
25
+ CREATE INDEX IF NOT EXISTS idx_tribunal_mission_id ON tribunal_state(mission_id);
26
+ CREATE INDEX IF NOT EXISTS idx_tribunal_status ON tribunal_state(status);
27
+
28
+ PRAGMA foreign_keys = ON;
29
+
30
+ -- DOWN
31
+ PRAGMA foreign_keys = OFF;
32
+
33
+ ALTER TABLE tribunal_state RENAME TO tribunal_state_new;
34
+
35
+ CREATE TABLE IF NOT EXISTS tribunal_state (
36
+ session_id TEXT PRIMARY KEY,
37
+ mission_id INTEGER,
38
+ repo_path TEXT NOT NULL,
39
+ status TEXT DEFAULT 'running',
40
+ phase TEXT DEFAULT 'initializing',
41
+ pid INTEGER,
42
+ artifact_id INTEGER,
43
+ started_at REAL DEFAULT (unixepoch()),
44
+ completed_at REAL,
45
+ FOREIGN KEY(mission_id) REFERENCES missions(id) ON DELETE SET NULL,
46
+ FOREIGN KEY(artifact_id) REFERENCES mission_artifacts_old(id) ON DELETE SET NULL
47
+ );
48
+
49
+ INSERT INTO tribunal_state (session_id, mission_id, repo_path, status, phase, pid, artifact_id, started_at, completed_at)
50
+ SELECT session_id, mission_id, repo_path, status, phase, pid, artifact_id, started_at, completed_at
51
+ FROM tribunal_state_new;
52
+
53
+ DROP TABLE tribunal_state_new;
54
+
55
+ CREATE INDEX IF NOT EXISTS idx_tribunal_mission_id ON tribunal_state(mission_id);
56
+ CREATE INDEX IF NOT EXISTS idx_tribunal_status ON tribunal_state(status);
57
+
58
+ PRAGMA foreign_keys = ON;