ultra-builder-pro-cli 0.22.0 → 0.24.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/.ultra-template/docs/research/README.md +4 -4
- package/CHANGELOG.md +83 -0
- package/README.md +68 -35
- package/adapters/_shared/codex-assets.cjs +121 -60
- package/adapters/_shared/interaction-contract.cjs +20 -7
- package/adapters/_shared/provenance.cjs +7 -2
- package/adapters/_shared/runtime-assets.cjs +4 -3
- package/adapters/_shared/runtime-native.cjs +132 -0
- package/adapters/claude.js +61 -31
- package/adapters/codex.js +178 -81
- package/adapters/grok.js +372 -0
- package/adapters/kimi.js +8 -4
- package/adapters/opencode.js +211 -33
- package/agents/code-reviewer.md +4 -2
- package/agents/debugger.md +4 -1
- package/agents/review-code.md +7 -3
- package/agents/review-comments.md +7 -4
- package/agents/review-coordinator.md +11 -7
- package/agents/review-design.md +8 -4
- package/agents/review-errors.md +8 -4
- package/agents/review-spec.md +8 -5
- package/agents/review-tests.md +7 -4
- package/agents/tdd-runner.md +5 -2
- package/bin/install.js +9 -4
- package/bin/orchestrator.js +4 -13
- package/docs/AGENT-CONTEXT.md +141 -231
- package/docs/ARCHITECTURE.md +203 -498
- package/docs/ARTIFACT-AUTHORITY.md +38 -35
- package/docs/PLUGIN-ISOLATION-CONTRACT.md +12 -9
- package/docs/ROADMAP.md +85 -110
- package/docs/RUNTIME-COMPAT-MATRIX.md +139 -174
- package/docs/SKILL-AUTHORING.md +3 -3
- package/docs/STATE-DB-ACCESS-POLICY.md +25 -20
- package/docs/WORKFLOW-LIFECYCLE.md +174 -442
- package/hooks/README.md +11 -8
- package/hooks/active_task_context.py +16 -16
- package/hooks/adapters/grok.py +134 -0
- package/hooks/{context_spine.py → context_envelope.py} +26 -22
- package/hooks/health_check.py +19 -29
- package/hooks/pre_stop_check.py +22 -12
- package/hooks/subagent_tracker.py +1 -1
- package/hooks/workflow_checkpoint.py +14 -13
- package/hooks/workflow_context.py +11 -12
- package/hooks/workflow_resume.py +14 -13
- package/mcp-server/{breadcrumb.cjs → hook-context.cjs} +7 -9
- package/mcp-server/lib/artifact-registry.cjs +25 -1
- package/mcp-server/lib/baseline-workflow.cjs +36 -38
- package/mcp-server/lib/canonical-json.cjs +19 -0
- package/mcp-server/lib/change-workflow.cjs +637 -49
- package/mcp-server/lib/context-envelope.cjs +508 -0
- package/mcp-server/lib/decision-records.cjs +337 -0
- package/mcp-server/lib/doctor.cjs +91 -33
- package/mcp-server/lib/init-project.cjs +78 -39
- package/mcp-server/lib/managed-file-write.cjs +116 -0
- package/mcp-server/lib/plan-checkpoint.cjs +177 -0
- package/mcp-server/lib/project-context.cjs +178 -0
- package/mcp-server/lib/stage-checkpoints.cjs +309 -0
- package/mcp-server/lib/state-db.cjs +155 -24
- package/mcp-server/lib/task-ledger.cjs +522 -13
- package/mcp-server/lib/ultra-facade.cjs +834 -0
- package/mcp-server/lib/worker-packet.cjs +358 -0
- package/mcp-server/server.cjs +208 -1059
- package/orchestrator/daemon.cjs +27 -9
- package/orchestrator/parallel-orchestrator.cjs +111 -76
- package/orchestrator/session-runner.cjs +135 -34
- package/package.json +10 -3
- package/skills/ultra-change/SKILL.md +39 -98
- package/skills/ultra-deliver/SKILL.md +42 -65
- package/skills/ultra-dev/SKILL.md +52 -99
- package/skills/ultra-doctor/SKILL.md +35 -57
- package/skills/ultra-init/SKILL.md +48 -88
- package/skills/ultra-init/references/brownfield-adoption.md +11 -8
- package/skills/ultra-plan/SKILL.md +54 -132
- package/skills/ultra-research/SKILL.md +58 -112
- package/skills/ultra-review/SKILL.md +28 -46
- package/skills/ultra-review/references/unified-schema.md +2 -0
- package/skills/ultra-review/scripts/review_wait.py +8 -0
- package/skills/ultra-status/SKILL.md +22 -45
- package/skills/ultra-test/SKILL.md +27 -61
- package/skills/ultra-think/SKILL.md +29 -48
- package/skills/ultra-think/references/interaction-boundary.md +56 -0
- package/spec/cli-protocol.md +80 -187
- package/spec/mcp-tools.yaml +130 -2738
- package/spec/schemas/mcp-tools.schema.json +1 -1
- package/spec/schemas/state-db.sql +107 -4
- package/spec/schemas/{task-ledger.v1.schema.json → task-ledger.v2.schema.json} +70 -6
- package/ultra-tools/commands/status.cjs +369 -243
- package/mcp-server/lib/context-spine.cjs +0 -1208
- package/mcp-server/lib/decision-dialogue.cjs +0 -1128
- package/mcp-server/lib/project-breadcrumb.cjs +0 -173
- package/mcp-server/lib/spec-learning.cjs +0 -284
- package/mcp-server/lib/workflow-state.cjs +0 -2965
- package/skills/ultra-think/references/decision-dialogue.md +0 -153
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
},
|
|
61
61
|
"family": {
|
|
62
62
|
"type": "string",
|
|
63
|
-
"enum": ["task", "memory", "review", "impact", "skill", "session", "ask", "plan", "baseline", "change", "decision", "workflow", "artifact", "system"]
|
|
63
|
+
"enum": ["ultra", "task", "memory", "review", "impact", "skill", "session", "ask", "plan", "baseline", "change", "decision", "workflow", "artifact", "system"]
|
|
64
64
|
},
|
|
65
65
|
"description": { "type": "string", "minLength": 10 },
|
|
66
66
|
"phase": {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
-- Ultra Builder Pro — authoritative state schema
|
|
2
2
|
-- This file builds .ultra/.runtime/state.db, the source of truth for all
|
|
3
|
-
-- baseline / change / task / session / event / telemetry data.
|
|
4
|
-
--
|
|
3
|
+
-- baseline / change / task / session / event / telemetry data. The Git-facing
|
|
4
|
+
-- tasks.json is a durable team checkpoint; live task and Context views under
|
|
5
|
+
-- .ultra/.runtime/projections are generated projections.
|
|
5
6
|
--
|
|
6
7
|
-- Authority boundary: docs/DECISIONS.md.
|
|
7
8
|
--
|
|
@@ -42,6 +43,7 @@ CREATE TABLE IF NOT EXISTS baselines (
|
|
|
42
43
|
classification_json TEXT NOT NULL DEFAULT '{}',
|
|
43
44
|
provider_refs_json TEXT NOT NULL DEFAULT '{}',
|
|
44
45
|
research_run_id TEXT,
|
|
46
|
+
research_checkpoint_id TEXT,
|
|
45
47
|
approved_by TEXT,
|
|
46
48
|
approval_note TEXT,
|
|
47
49
|
started_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
|
@@ -130,7 +132,7 @@ CREATE TABLE IF NOT EXISTS events (
|
|
|
130
132
|
task_id TEXT,
|
|
131
133
|
change_id TEXT,
|
|
132
134
|
session_id TEXT,
|
|
133
|
-
runtime TEXT CHECK (runtime IS NULL OR runtime IN ('claude', 'opencode', 'codex', 'kimi')),
|
|
135
|
+
runtime TEXT CHECK (runtime IS NULL OR runtime IN ('claude', 'opencode', 'codex', 'kimi', 'grok')),
|
|
134
136
|
payload_json TEXT
|
|
135
137
|
);
|
|
136
138
|
|
|
@@ -146,7 +148,7 @@ CREATE INDEX IF NOT EXISTS events_change ON events(change_id, id);
|
|
|
146
148
|
CREATE TABLE IF NOT EXISTS sessions (
|
|
147
149
|
sid TEXT PRIMARY KEY,
|
|
148
150
|
task_id TEXT NOT NULL REFERENCES tasks(id),
|
|
149
|
-
runtime TEXT NOT NULL CHECK (runtime IN ('claude', 'opencode', 'codex', 'kimi')),
|
|
151
|
+
runtime TEXT NOT NULL CHECK (runtime IN ('claude', 'opencode', 'codex', 'kimi', 'grok')),
|
|
150
152
|
pid INTEGER,
|
|
151
153
|
worktree_path TEXT NOT NULL,
|
|
152
154
|
artifact_dir TEXT NOT NULL,
|
|
@@ -497,6 +499,103 @@ CREATE UNIQUE INDEX IF NOT EXISTS decision_items_one_open
|
|
|
497
499
|
CREATE INDEX IF NOT EXISTS decision_items_status
|
|
498
500
|
ON decision_items(thread_id, status, sequence);
|
|
499
501
|
|
|
502
|
+
-- ──────────────────────────── public kernel checkpoints ─────────────────
|
|
503
|
+
-- These rows record what the model actually checkpointed. They do not
|
|
504
|
+
-- authorize a fixed workflow sequence. Drafts remain editable; an accepted
|
|
505
|
+
-- revision is immutable and can only be superseded by a later revision.
|
|
506
|
+
CREATE TABLE IF NOT EXISTS stage_checkpoints (
|
|
507
|
+
id TEXT PRIMARY KEY,
|
|
508
|
+
stage TEXT NOT NULL
|
|
509
|
+
CHECK (stage IN ('init', 'research', 'change', 'plan', 'dev', 'test', 'review', 'deliver')),
|
|
510
|
+
scope_type TEXT NOT NULL CHECK (scope_type IN ('project', 'baseline', 'change', 'task')),
|
|
511
|
+
scope_id TEXT NOT NULL,
|
|
512
|
+
revision INTEGER NOT NULL CHECK (revision > 0),
|
|
513
|
+
status TEXT NOT NULL DEFAULT 'draft'
|
|
514
|
+
CHECK (status IN ('draft', 'accepted', 'superseded')),
|
|
515
|
+
payload_json TEXT NOT NULL DEFAULT '{}',
|
|
516
|
+
evidence_json TEXT NOT NULL DEFAULT '[]',
|
|
517
|
+
diagnostics_json TEXT NOT NULL DEFAULT '[]',
|
|
518
|
+
context_envelope_id TEXT,
|
|
519
|
+
digest TEXT NOT NULL,
|
|
520
|
+
supersedes_id TEXT REFERENCES stage_checkpoints(id) ON DELETE SET NULL,
|
|
521
|
+
idempotency_key TEXT NOT NULL UNIQUE,
|
|
522
|
+
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
|
523
|
+
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
|
524
|
+
accepted_at TEXT,
|
|
525
|
+
UNIQUE(stage, scope_type, scope_id, revision)
|
|
526
|
+
);
|
|
527
|
+
|
|
528
|
+
CREATE INDEX IF NOT EXISTS stage_checkpoints_scope
|
|
529
|
+
ON stage_checkpoints(stage, scope_type, scope_id, revision);
|
|
530
|
+
CREATE UNIQUE INDEX IF NOT EXISTS stage_checkpoints_one_draft
|
|
531
|
+
ON stage_checkpoints(stage, scope_type, scope_id) WHERE status = 'draft';
|
|
532
|
+
CREATE UNIQUE INDEX IF NOT EXISTS stage_checkpoints_one_accepted
|
|
533
|
+
ON stage_checkpoints(stage, scope_type, scope_id) WHERE status = 'accepted';
|
|
534
|
+
|
|
535
|
+
CREATE TABLE IF NOT EXISTS decision_records (
|
|
536
|
+
id TEXT PRIMARY KEY,
|
|
537
|
+
scope_type TEXT NOT NULL CHECK (scope_type IN ('baseline', 'change')),
|
|
538
|
+
scope_id TEXT NOT NULL,
|
|
539
|
+
question TEXT NOT NULL,
|
|
540
|
+
recommendation TEXT NOT NULL,
|
|
541
|
+
selection TEXT NOT NULL,
|
|
542
|
+
effects_json TEXT NOT NULL DEFAULT '{}',
|
|
543
|
+
non_goals_json TEXT NOT NULL DEFAULT '[]',
|
|
544
|
+
owner TEXT NOT NULL,
|
|
545
|
+
source TEXT NOT NULL,
|
|
546
|
+
provenance_json TEXT NOT NULL DEFAULT '{}',
|
|
547
|
+
applied_refs_json TEXT NOT NULL DEFAULT '[]',
|
|
548
|
+
status TEXT NOT NULL DEFAULT 'accepted'
|
|
549
|
+
CHECK (status IN ('accepted', 'superseded', 'cancelled')),
|
|
550
|
+
digest TEXT NOT NULL,
|
|
551
|
+
artifact_path TEXT NOT NULL,
|
|
552
|
+
supersedes_id TEXT REFERENCES decision_records(id) ON DELETE SET NULL,
|
|
553
|
+
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')),
|
|
554
|
+
updated_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
|
|
555
|
+
);
|
|
556
|
+
|
|
557
|
+
CREATE INDEX IF NOT EXISTS decision_records_scope
|
|
558
|
+
ON decision_records(scope_type, scope_id, status, updated_at);
|
|
559
|
+
|
|
560
|
+
CREATE TABLE IF NOT EXISTS context_envelopes (
|
|
561
|
+
id TEXT PRIMARY KEY,
|
|
562
|
+
stage TEXT NOT NULL,
|
|
563
|
+
scope_type TEXT NOT NULL CHECK (scope_type IN ('project', 'baseline', 'change', 'task')),
|
|
564
|
+
scope_id TEXT NOT NULL,
|
|
565
|
+
digest TEXT NOT NULL UNIQUE,
|
|
566
|
+
file_digest TEXT NOT NULL,
|
|
567
|
+
payload_json TEXT NOT NULL,
|
|
568
|
+
artifact_path TEXT,
|
|
569
|
+
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
|
|
570
|
+
);
|
|
571
|
+
|
|
572
|
+
CREATE INDEX IF NOT EXISTS context_envelopes_scope
|
|
573
|
+
ON context_envelopes(stage, scope_type, scope_id, created_at);
|
|
574
|
+
|
|
575
|
+
CREATE TABLE IF NOT EXISTS worker_packets (
|
|
576
|
+
id TEXT PRIMARY KEY,
|
|
577
|
+
role TEXT NOT NULL,
|
|
578
|
+
scope_type TEXT NOT NULL CHECK (scope_type IN ('change', 'task')),
|
|
579
|
+
scope_id TEXT NOT NULL,
|
|
580
|
+
context_envelope_id TEXT NOT NULL REFERENCES context_envelopes(id),
|
|
581
|
+
context_digest TEXT NOT NULL,
|
|
582
|
+
task_digest TEXT,
|
|
583
|
+
decision_digest TEXT,
|
|
584
|
+
packet_digest TEXT NOT NULL UNIQUE,
|
|
585
|
+
file_digest TEXT NOT NULL,
|
|
586
|
+
status TEXT NOT NULL DEFAULT 'pending'
|
|
587
|
+
CHECK (status IN ('pending', 'assigned', 'abandoned')),
|
|
588
|
+
packet_path TEXT NOT NULL,
|
|
589
|
+
output_path TEXT NOT NULL,
|
|
590
|
+
assigned_at TEXT,
|
|
591
|
+
abandoned_at TEXT,
|
|
592
|
+
abandon_reason TEXT,
|
|
593
|
+
created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))
|
|
594
|
+
);
|
|
595
|
+
|
|
596
|
+
CREATE INDEX IF NOT EXISTS worker_packets_scope
|
|
597
|
+
ON worker_packets(role, scope_type, scope_id, created_at);
|
|
598
|
+
|
|
500
599
|
-- ──────────────────────────── seed: schema_version ────────────────────────
|
|
501
600
|
INSERT OR IGNORE INTO schema_version (version, description)
|
|
502
601
|
VALUES ('4.5', 'Phase 2 initial — tasks/events/sessions/schema_version/migration_history/telemetry/specs_refs');
|
|
@@ -532,3 +631,7 @@ INSERT OR IGNORE INTO schema_version (version, description)
|
|
|
532
631
|
VALUES ('19.0', 'Non-ceremonial decision completion and host-neutral intent persistence');
|
|
533
632
|
INSERT OR IGNORE INTO schema_version (version, description)
|
|
534
633
|
VALUES ('20.0', 'Typed artifact registry, normalized dependency edges, and orphan diagnostics');
|
|
634
|
+
INSERT OR IGNORE INTO schema_version (version, description)
|
|
635
|
+
VALUES ('21.0', 'Seven-tool persistence kernel, reversible stage checkpoints, canonical context envelopes, normalized decisions, and worker packets');
|
|
636
|
+
INSERT OR IGNORE INTO schema_version (version, description)
|
|
637
|
+
VALUES ('22.0', 'Checkpoint-native baseline authority plus byte-bound Context Envelopes and Worker Packets');
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
-
"$id": "https://ultra-builder-pro.dev/spec/task-ledger.
|
|
4
|
-
"title": "Ultra team
|
|
5
|
-
"description": "Git-facing checkpoint ledger for durable
|
|
3
|
+
"$id": "https://ultra-builder-pro.dev/spec/task-ledger.v2.schema.json",
|
|
4
|
+
"title": "Ultra team authority ledger v2",
|
|
5
|
+
"description": "Git-facing checkpoint ledger for durable baseline, Change, decision, Stage Checkpoint, and task authority. Live sessions, leases, worktrees, and in-progress ownership remain in .ultra/.runtime/state.db.",
|
|
6
6
|
"type": "object",
|
|
7
7
|
"required": [
|
|
8
8
|
"kind",
|
|
@@ -15,12 +15,14 @@
|
|
|
15
15
|
"reason",
|
|
16
16
|
"baseline",
|
|
17
17
|
"changes",
|
|
18
|
+
"decisions",
|
|
19
|
+
"checkpoints",
|
|
18
20
|
"tasks"
|
|
19
21
|
],
|
|
20
22
|
"additionalProperties": false,
|
|
21
23
|
"properties": {
|
|
22
24
|
"kind": { "const": "ultra-team-task-ledger" },
|
|
23
|
-
"schema_version": { "const": "
|
|
25
|
+
"schema_version": { "const": "2.0" },
|
|
24
26
|
"generation": { "type": "integer", "minimum": 0 },
|
|
25
27
|
"parent_digest": {
|
|
26
28
|
"type": ["string", "null"],
|
|
@@ -66,7 +68,7 @@
|
|
|
66
68
|
"id": { "type": "string" },
|
|
67
69
|
"title": { "type": "string", "minLength": 1 },
|
|
68
70
|
"kind": { "type": "string", "enum": ["quick", "standard", "major", "incident"] },
|
|
69
|
-
"status": { "type": "string", "enum": ["active", "
|
|
71
|
+
"status": { "type": "string", "enum": ["active", "archived", "cancelled"] },
|
|
70
72
|
"intent": { "type": "string", "minLength": 1 },
|
|
71
73
|
"docs_impact": { "type": "object" },
|
|
72
74
|
"provider_refs": { "type": "object" },
|
|
@@ -86,6 +88,68 @@
|
|
|
86
88
|
}
|
|
87
89
|
}
|
|
88
90
|
},
|
|
91
|
+
"decisions": {
|
|
92
|
+
"type": "array",
|
|
93
|
+
"items": {
|
|
94
|
+
"type": "object",
|
|
95
|
+
"required": [
|
|
96
|
+
"id",
|
|
97
|
+
"scope_type",
|
|
98
|
+
"scope_id",
|
|
99
|
+
"selection",
|
|
100
|
+
"effects",
|
|
101
|
+
"status",
|
|
102
|
+
"artifact_path",
|
|
103
|
+
"artifact_digest",
|
|
104
|
+
"digest"
|
|
105
|
+
],
|
|
106
|
+
"additionalProperties": false,
|
|
107
|
+
"properties": {
|
|
108
|
+
"id": { "type": "string", "minLength": 1 },
|
|
109
|
+
"scope_type": { "type": "string", "enum": ["baseline", "change"] },
|
|
110
|
+
"scope_id": { "type": "string", "minLength": 1 },
|
|
111
|
+
"selection": { "type": "string", "minLength": 1 },
|
|
112
|
+
"effects": { "type": "object" },
|
|
113
|
+
"status": { "type": "string", "enum": ["accepted", "superseded"] },
|
|
114
|
+
"artifact_path": { "type": "string", "minLength": 1 },
|
|
115
|
+
"artifact_digest": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
|
|
116
|
+
"supersedes_id": { "type": "string" },
|
|
117
|
+
"digest": { "type": "string", "pattern": "^[0-9a-f]{64}$" }
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
"checkpoints": {
|
|
122
|
+
"type": "array",
|
|
123
|
+
"items": {
|
|
124
|
+
"type": "object",
|
|
125
|
+
"required": [
|
|
126
|
+
"stage",
|
|
127
|
+
"scope_type",
|
|
128
|
+
"scope_id",
|
|
129
|
+
"revision",
|
|
130
|
+
"payload",
|
|
131
|
+
"evidence",
|
|
132
|
+
"diagnostics",
|
|
133
|
+
"status",
|
|
134
|
+
"digest"
|
|
135
|
+
],
|
|
136
|
+
"additionalProperties": false,
|
|
137
|
+
"properties": {
|
|
138
|
+
"stage": {
|
|
139
|
+
"type": "string",
|
|
140
|
+
"enum": ["init", "research", "change", "plan", "dev", "test", "review", "deliver"]
|
|
141
|
+
},
|
|
142
|
+
"scope_type": { "type": "string", "enum": ["project", "baseline", "change", "task"] },
|
|
143
|
+
"scope_id": { "type": "string", "minLength": 1 },
|
|
144
|
+
"revision": { "type": "integer", "minimum": 1 },
|
|
145
|
+
"payload": { "type": "object" },
|
|
146
|
+
"evidence": { "type": "array" },
|
|
147
|
+
"diagnostics": { "type": "array" },
|
|
148
|
+
"status": { "const": "accepted" },
|
|
149
|
+
"digest": { "type": "string", "pattern": "^[0-9a-f]{64}$" }
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
},
|
|
89
153
|
"tasks": {
|
|
90
154
|
"type": "array",
|
|
91
155
|
"items": { "$ref": "#/$defs/task" }
|
|
@@ -145,7 +209,7 @@
|
|
|
145
209
|
"gaps": { "type": "array" },
|
|
146
210
|
"classification": { "type": "object" },
|
|
147
211
|
"provider_refs": { "type": "object" },
|
|
148
|
-
"
|
|
212
|
+
"research_checkpoint_id": { "type": "string" },
|
|
149
213
|
"approved_by": { "type": "string" },
|
|
150
214
|
"approval_note": { "type": "string" },
|
|
151
215
|
"converged_at": { "type": "string" },
|