ultra-builder-pro-cli 0.23.0 → 0.24.1
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/.ultra-template/tasks/tasks.json +4 -2
- package/CHANGELOG.md +72 -0
- package/README.md +55 -39
- package/adapters/_shared/codex-assets.cjs +121 -65
- package/adapters/_shared/interaction-contract.cjs +7 -1
- package/adapters/_shared/provenance.cjs +7 -2
- package/adapters/_shared/runtime-assets.cjs +3 -2
- package/adapters/_shared/runtime-native.cjs +132 -0
- package/adapters/claude.js +60 -30
- package/adapters/codex.js +178 -81
- package/adapters/grok.js +372 -0
- package/adapters/kimi.js +7 -3
- package/adapters/opencode.js +210 -32
- 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 +143 -229
- package/docs/ARCHITECTURE.md +205 -494
- package/docs/ARTIFACT-AUTHORITY.md +35 -28
- package/docs/LEGACY-CLI-CROSSWALK.md +1 -1
- package/docs/PLUGIN-ISOLATION-CONTRACT.md +12 -9
- package/docs/ROADMAP.md +85 -110
- package/docs/RUNTIME-COMPAT-MATRIX.md +139 -175
- package/docs/SKILL-AUTHORING.md +3 -3
- package/docs/STATE-DB-ACCESS-POLICY.md +13 -8
- package/docs/WORKFLOW-LIFECYCLE.md +189 -448
- 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 +29 -34
- 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/baseline-workflow.cjs +108 -82
- package/mcp-server/lib/canonical-json.cjs +19 -0
- package/mcp-server/lib/change-authority.cjs +26 -0
- package/mcp-server/lib/change-workflow.cjs +630 -45
- 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/state-ops.cjs +21 -3
- package/mcp-server/lib/task-ledger.cjs +522 -13
- package/mcp-server/lib/ultra-facade.cjs +757 -442
- package/mcp-server/lib/worker-packet.cjs +358 -0
- package/mcp-server/server.cjs +200 -1103
- 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 +10 -8
- package/skills/ultra-deliver/SKILL.md +17 -19
- package/skills/ultra-dev/SKILL.md +20 -11
- package/skills/ultra-doctor/SKILL.md +4 -4
- package/skills/ultra-init/SKILL.md +6 -5
- package/skills/ultra-init/references/brownfield-adoption.md +20 -14
- package/skills/ultra-plan/SKILL.md +13 -9
- package/skills/ultra-research/SKILL.md +18 -9
- package/skills/ultra-review/SKILL.md +14 -9
- 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 +2 -2
- package/skills/ultra-test/SKILL.md +10 -6
- package/skills/ultra-think/SKILL.md +8 -7
- package/skills/ultra-think/references/interaction-boundary.md +56 -0
- package/spec/cli-protocol.md +80 -199
- package/spec/mcp-tools.yaml +43 -2806
- 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 -3129
- package/skills/ultra-think/references/decision-dialogue.md +0 -155
|
@@ -21,7 +21,7 @@ const STATUS_TRANSITIONS = Object.freeze({
|
|
|
21
21
|
in_progress: new Set(['completed', 'blocked', 'pending']),
|
|
22
22
|
blocked: new Set(['pending', 'in_progress']),
|
|
23
23
|
expanded: new Set(['completed']),
|
|
24
|
-
completed: new Set(),
|
|
24
|
+
completed: new Set(['in_progress']),
|
|
25
25
|
});
|
|
26
26
|
|
|
27
27
|
const TASK_FIELDS = Object.freeze([
|
|
@@ -529,6 +529,16 @@ function patchTask(db, id, patch = {}) {
|
|
|
529
529
|
`cannot transition task ${id} from ${current.status} to ${nextStatus}`,
|
|
530
530
|
);
|
|
531
531
|
}
|
|
532
|
+
if (current.status === 'completed' && nextStatus === 'in_progress') {
|
|
533
|
+
if (!Object.prototype.hasOwnProperty.call(patch, 'completion_commit')) {
|
|
534
|
+
sets.push('completion_commit = ?');
|
|
535
|
+
params.push(null);
|
|
536
|
+
}
|
|
537
|
+
if (!Object.prototype.hasOwnProperty.call(patch, 'session_id')) {
|
|
538
|
+
sets.push('session_id = ?');
|
|
539
|
+
params.push(null);
|
|
540
|
+
}
|
|
541
|
+
}
|
|
532
542
|
sets.push('status = ?');
|
|
533
543
|
params.push(nextStatus);
|
|
534
544
|
}
|
|
@@ -542,10 +552,18 @@ function patchTask(db, id, patch = {}) {
|
|
|
542
552
|
|
|
543
553
|
if (nextStatus && nextStatus !== current.status) {
|
|
544
554
|
appendEventInTx(db, {
|
|
545
|
-
type:
|
|
555
|
+
type: current.status === 'completed' && nextStatus === 'in_progress'
|
|
556
|
+
? 'task_reopened'
|
|
557
|
+
: statusEventType(nextStatus),
|
|
546
558
|
task_id: id,
|
|
547
559
|
change_id: patch.change_id !== undefined ? patch.change_id : current.change_id,
|
|
548
|
-
payload: {
|
|
560
|
+
payload: {
|
|
561
|
+
from: current.status,
|
|
562
|
+
to: nextStatus,
|
|
563
|
+
...(current.status === 'completed' && nextStatus === 'in_progress'
|
|
564
|
+
? { previous_completion_commit: current.completion_commit }
|
|
565
|
+
: {}),
|
|
566
|
+
},
|
|
549
567
|
});
|
|
550
568
|
}
|
|
551
569
|
const contractFields = Object.keys(patch).filter((field) => TASK_CONTRACT_PATCH_FIELDS.has(field));
|