@geraldmaron/construct 1.0.0 โ 1.0.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/.env.example +10 -7
- package/LICENSE +201 -21
- package/README.md +132 -257
- package/agents/contracts.json +387 -0
- package/agents/prompts/cx-accessibility.md +8 -0
- package/agents/prompts/cx-ai-engineer.md +92 -0
- package/agents/prompts/cx-architect.md +10 -2
- package/agents/prompts/cx-business-strategist.md +13 -0
- package/agents/prompts/cx-data-analyst.md +80 -0
- package/agents/prompts/cx-data-engineer.md +4 -0
- package/agents/prompts/cx-debugger.md +8 -0
- package/agents/prompts/cx-designer.md +19 -0
- package/agents/prompts/cx-devil-advocate.md +4 -0
- package/agents/prompts/cx-docs-keeper.md +128 -0
- package/agents/prompts/cx-engineer.md +13 -0
- package/agents/prompts/cx-evaluator.md +4 -0
- package/agents/prompts/cx-explorer.md +12 -0
- package/agents/prompts/cx-legal-compliance.md +13 -0
- package/agents/prompts/cx-operations.md +13 -0
- package/agents/prompts/cx-orchestrator.md +107 -4
- package/agents/prompts/cx-platform-engineer.md +75 -0
- package/agents/prompts/cx-product-manager.md +8 -0
- package/agents/prompts/cx-qa.md +100 -0
- package/agents/prompts/cx-rd-lead.md +13 -0
- package/agents/prompts/cx-release-manager.md +8 -0
- package/agents/prompts/cx-researcher.md +21 -1
- package/agents/prompts/cx-reviewer.md +8 -0
- package/agents/prompts/cx-security.md +104 -0
- package/agents/prompts/cx-sre.md +104 -0
- package/agents/prompts/cx-test-automation.md +4 -0
- package/agents/prompts/cx-trace-reviewer.md +7 -3
- package/agents/prompts/cx-ux-researcher.md +4 -0
- package/agents/registry.json +365 -90
- package/agents/role-manifests.json +217 -0
- package/bin/construct +3345 -141
- package/bin/construct-postinstall.mjs +87 -0
- package/commands/build/feature.md +6 -6
- package/commands/plan/feature.md +6 -5
- package/commands/plan/requirements.md +1 -1
- package/commands/ship/status.md +1 -1
- package/commands/work/drive.md +3 -3
- package/commands/work/optimize-prompts.md +3 -3
- package/db/{migrations โ schema}/001_init.sql +2 -0
- package/db/schema/002_pgvector.sql +182 -0
- package/db/schema/003_intake.sql +47 -0
- package/examples/README.md +85 -0
- package/examples/internal/roles/architect/bad/clever-plan-without-contracts.md +30 -0
- package/examples/internal/roles/architect/golden/explicit-tradeoff-before-plan.md +23 -0
- package/examples/internal/roles/engineer/bad/speculative-abstraction.md +30 -0
- package/examples/internal/roles/engineer/golden/read-before-write.md +28 -0
- package/examples/internal/roles/orchestrator/bad/everything-becomes-multi-agent.md +29 -0
- package/examples/internal/roles/orchestrator/golden/minimal-dispatch.md +22 -0
- package/examples/internal/roles/qa/bad/coverage-theater.md +30 -0
- package/examples/internal/roles/qa/golden/regression-gate.md +23 -0
- package/examples/internal/roles/reviewer/bad/lgtm-without-verification.md +29 -0
- package/examples/internal/roles/reviewer/golden/find-structural-risk-first.md +28 -0
- package/examples/personas/construct/adversarial/ignore-instruction-to-skip-approval.md +22 -0
- package/examples/personas/construct/bad/commit-without-approval.md +30 -0
- package/examples/personas/construct/boundary/blocked-needs-main-input.md +29 -0
- package/examples/personas/construct/golden/branch-approval-before-mutation.md +36 -0
- package/examples/personas/construct/golden/focused-direct-answer.md +28 -0
- package/examples/provider-plugin/README.md +34 -0
- package/examples/provider-plugin/index.mjs +74 -0
- package/examples/provider-plugin/package.json +15 -0
- package/examples/seed-observations/README.md +38 -0
- package/examples/seed-observations/anti-patterns.md +44 -0
- package/examples/seed-observations/decisions.md +36 -0
- package/examples/seed-observations/patterns.md +42 -0
- package/lib/agent-contracts-enforce.mjs +158 -0
- package/lib/agent-contracts.mjs +231 -0
- package/lib/agents/postconditions.mjs +126 -0
- package/lib/agents/schema.mjs +124 -0
- package/lib/artifact-capture.mjs +183 -0
- package/lib/audit-trail.mjs +149 -0
- package/lib/auto-docs.mjs +245 -65
- package/lib/beads/auto-close.mjs +126 -0
- package/lib/beads/drift.mjs +171 -0
- package/lib/beads-automation.mjs +542 -0
- package/lib/beads-client.mjs +518 -0
- package/lib/beads-lock.mjs +377 -0
- package/lib/beads-optimistic.mjs +365 -0
- package/lib/bootstrap/built-ins.mjs +136 -0
- package/lib/bootstrap/lazy-install.mjs +161 -0
- package/lib/bootstrap/resources.mjs +120 -0
- package/lib/bootstrap.mjs +105 -0
- package/lib/cache-governor.js +213 -0
- package/lib/cache-strategy-anthropic.js +62 -0
- package/lib/cache-strategy-google.js +79 -0
- package/lib/cache-strategy-none.js +30 -0
- package/lib/cache-strategy-openai.js +48 -0
- package/lib/cache-strategy.js +91 -0
- package/lib/claude-allow.mjs +149 -0
- package/lib/cli-commands.mjs +413 -258
- package/lib/codex-config.mjs +3 -1
- package/lib/comment-lint.mjs +55 -6
- package/lib/completions.mjs +21 -6
- package/lib/config/alias.mjs +56 -0
- package/lib/config/project-config.mjs +335 -0
- package/lib/config/schema.mjs +159 -0
- package/lib/context-router.mjs +308 -0
- package/lib/cost-ledger.mjs +177 -0
- package/lib/cost.mjs +171 -10
- package/lib/dashboard-static.mjs +158 -0
- package/lib/deployment-mode.mjs +86 -0
- package/lib/deprecate.mjs +49 -0
- package/lib/dispatch-batch.js +183 -0
- package/lib/distill.mjs +21 -8
- package/lib/doc-stamp.mjs +164 -0
- package/lib/doc-verify.mjs +119 -0
- package/lib/docs-routing.mjs +89 -0
- package/lib/docs-verify.mjs +417 -0
- package/lib/doctor/audit.mjs +71 -0
- package/lib/doctor/cli.mjs +99 -0
- package/lib/doctor/escalate.mjs +29 -0
- package/lib/doctor/index.mjs +140 -0
- package/lib/doctor/report.mjs +170 -0
- package/lib/doctor/watchers/bd-watch.mjs +117 -0
- package/lib/doctor/watchers/cost.mjs +130 -0
- package/lib/doctor/watchers/disk.mjs +122 -0
- package/lib/doctor/watchers/handoffs.mjs +33 -0
- package/lib/doctor/watchers/process-pressure.mjs +60 -0
- package/lib/doctor/watchers/service-health.mjs +188 -0
- package/lib/document-extract.mjs +288 -0
- package/lib/document-ingest.mjs +230 -0
- package/lib/drop.mjs +282 -0
- package/lib/embed/approval-queue.mjs +176 -0
- package/lib/embed/artifact.mjs +349 -0
- package/lib/embed/authority-guard.mjs +155 -0
- package/lib/embed/cli.mjs +408 -0
- package/lib/embed/config.mjs +355 -0
- package/lib/embed/conflict-detection.mjs +264 -0
- package/lib/embed/customer-profiles.mjs +480 -0
- package/lib/embed/daemon.mjs +1309 -0
- package/lib/embed/demand-fetch.mjs +449 -0
- package/lib/embed/docs-lifecycle.mjs +349 -0
- package/lib/embed/inbox-live-watcher.mjs +119 -0
- package/lib/embed/inbox.mjs +343 -0
- package/lib/embed/intake-metrics.mjs +190 -0
- package/lib/embed/jobs/vector-sync.mjs +198 -0
- package/lib/embed/notifications.mjs +75 -0
- package/lib/embed/output.mjs +79 -0
- package/lib/embed/providers/github.mjs +295 -0
- package/lib/embed/providers/jira.mjs +192 -0
- package/lib/embed/providers/linear.mjs +186 -0
- package/lib/embed/providers/registry.mjs +115 -0
- package/lib/embed/providers/slack.mjs +203 -0
- package/lib/embed/recommendation-store.mjs +378 -0
- package/lib/embed/roadmap.mjs +374 -0
- package/lib/embed/role-framing.mjs +110 -0
- package/lib/embed/scheduler.mjs +99 -0
- package/lib/embed/semantic.mjs +325 -0
- package/lib/embed/snapshot.mjs +191 -0
- package/lib/embed/supervision.mjs +235 -0
- package/lib/embed/target-resolver.mjs +186 -0
- package/lib/embed/worker.mjs +62 -0
- package/lib/embed/workspaces.mjs +297 -0
- package/lib/engine/chunker-headings.mjs +110 -0
- package/lib/engine/compressor-heuristic.mjs +100 -0
- package/lib/engine/consolidate.mjs +287 -0
- package/lib/engine/contracts.mjs +126 -0
- package/lib/engine/defaults.mjs +129 -0
- package/lib/engine/eval-retrieval.mjs +148 -0
- package/lib/engine/fuser-rrf.mjs +62 -0
- package/lib/engine/index.mjs +37 -0
- package/lib/engine/registry.mjs +146 -0
- package/lib/engine/reranker-mmr.mjs +90 -0
- package/lib/engine/tokens.mjs +77 -0
- package/lib/entity-store.mjs +280 -0
- package/lib/env-config.mjs +69 -4
- package/lib/evals/retrieval-bench.mjs +159 -0
- package/lib/evaluator-optimizer.mjs +317 -0
- package/lib/features.mjs +159 -29
- package/lib/gates-audit.mjs +236 -0
- package/lib/git-hooks/prepare-commit-msg +58 -0
- package/lib/handoffs/cleanup.mjs +159 -0
- package/lib/handoffs/contract.mjs +162 -0
- package/lib/handoffs/inventory.mjs +120 -0
- package/lib/headhunt.mjs +28 -47
- package/lib/health-check.mjs +399 -0
- package/lib/hook-health.mjs +442 -0
- package/lib/hooks/_lib/log.mjs +82 -0
- package/lib/hooks/adaptive-lint.mjs +26 -2
- package/lib/hooks/agent-tracker.mjs +171 -14
- package/lib/hooks/audit-reads.mjs +109 -0
- package/lib/hooks/audit-trail.mjs +153 -0
- package/lib/hooks/bash-output-logger.mjs +71 -0
- package/lib/hooks/block-no-verify.mjs +41 -0
- package/lib/hooks/ci-status-check.mjs +82 -0
- package/lib/hooks/comment-lint.mjs +29 -7
- package/lib/hooks/config-protection.mjs +39 -18
- package/lib/hooks/context-watch.mjs +137 -0
- package/lib/hooks/context-window-recovery.mjs +4 -20
- package/lib/hooks/dep-audit.mjs +16 -0
- package/lib/hooks/doc-coupling-check.mjs +80 -0
- package/lib/hooks/edit-accumulator.mjs +3 -0
- package/lib/hooks/edit-error-recovery.mjs +3 -0
- package/lib/hooks/edit-guard.mjs +45 -4
- package/lib/hooks/env-check.mjs +3 -0
- package/lib/hooks/guard-bash.mjs +58 -1
- package/lib/hooks/mcp-audit.mjs +18 -20
- package/lib/hooks/mcp-health-check.mjs +36 -0
- package/lib/hooks/model-fallback.mjs +42 -56
- package/lib/hooks/policy-engine.mjs +209 -0
- package/lib/hooks/post-merge-docs-check.mjs +63 -0
- package/lib/hooks/pre-compact.mjs +4 -24
- package/lib/hooks/pre-push-gate.mjs +200 -37
- package/lib/hooks/proactive-activation.mjs +284 -0
- package/lib/hooks/read-tracker.mjs +27 -4
- package/lib/hooks/readme-age-check.mjs +77 -0
- package/lib/hooks/registry-sync.mjs +12 -5
- package/lib/hooks/scan-secrets.mjs +50 -7
- package/lib/hooks/session-optimize.mjs +311 -0
- package/lib/hooks/session-start.mjs +287 -28
- package/lib/hooks/stop-notify.mjs +236 -96
- package/lib/hooks/stop-typecheck.mjs +13 -1
- package/lib/hooks/test-watch.mjs +68 -0
- package/lib/host-capabilities.mjs +31 -10
- package/lib/init-docs.mjs +731 -291
- package/lib/init-unified.mjs +1116 -0
- package/lib/init-update.mjs +168 -0
- package/lib/init.mjs +107 -0
- package/lib/install/first-invocation.mjs +119 -0
- package/lib/install/stage-project.mjs +69 -0
- package/lib/intake/classify.mjs +278 -0
- package/lib/intake/feedback.mjs +273 -0
- package/lib/intake/filesystem-queue.mjs +158 -0
- package/lib/intake/intake-config.mjs +132 -0
- package/lib/intake/postgres-queue.mjs +198 -0
- package/lib/intake/prepare.mjs +139 -0
- package/lib/intake/queue.mjs +83 -0
- package/lib/intake/session-prelude.mjs +50 -0
- package/lib/integrations/intake-integrations.mjs +740 -0
- package/lib/intent-classifier.mjs +253 -0
- package/lib/knowledge/layout.mjs +72 -0
- package/lib/knowledge/rag.mjs +331 -0
- package/lib/knowledge/search.mjs +315 -0
- package/lib/knowledge/trends.mjs +261 -0
- package/lib/logger.mjs +85 -0
- package/lib/mcp/broker.mjs +124 -0
- package/lib/mcp/server.mjs +554 -854
- package/lib/mcp/tools/document.mjs +132 -0
- package/lib/mcp/tools/memory.mjs +209 -0
- package/lib/mcp/tools/project.mjs +349 -0
- package/lib/mcp/tools/skills.mjs +409 -0
- package/lib/mcp/tools/storage.mjs +60 -0
- package/lib/mcp/tools/telemetry.mjs +315 -0
- package/lib/mcp/tools/workflow.mjs +112 -0
- package/lib/mcp-catalog.json +54 -3
- package/lib/mcp-manager.mjs +96 -48
- package/lib/mcp-platform-config.mjs +22 -22
- package/lib/memory-stats.mjs +121 -0
- package/lib/mode-commands.mjs +124 -0
- package/lib/model-free-selector.mjs +184 -0
- package/lib/model-pricing.mjs +152 -0
- package/lib/model-registry.mjs +226 -0
- package/lib/model-router.mjs +362 -386
- package/lib/observation-store.mjs +391 -0
- package/lib/ollama-manager.mjs +428 -0
- package/lib/opencode-config.mjs +13 -3
- package/lib/opencode-runtime-plugin.mjs +70 -38
- package/lib/opencode-telemetry.mjs +64 -6
- package/lib/orchestration-policy.mjs +509 -6
- package/lib/overrides/resolver.mjs +207 -0
- package/lib/parity.mjs +147 -0
- package/lib/paths.mjs +33 -0
- package/lib/performance/generate.mjs +212 -0
- package/lib/plugin-registry.mjs +268 -0
- package/lib/policy/engine.mjs +130 -0
- package/lib/policy/unified-gates.mjs +96 -0
- package/lib/project-detection.mjs +129 -0
- package/lib/project-init-shared.mjs +272 -0
- package/lib/project-profile.mjs +447 -0
- package/lib/prompt-composer.js +434 -0
- package/lib/prompt-metadata.mjs +1 -1
- package/lib/provider-capabilities-anthropic.js +44 -0
- package/lib/provider-capabilities-deepseek.js +37 -0
- package/lib/provider-capabilities-generic.js +26 -0
- package/lib/provider-capabilities-google.js +47 -0
- package/lib/provider-capabilities-openai.js +45 -0
- package/lib/provider-capabilities.js +142 -0
- package/lib/providers/atlassian-confluence/index.mjs +103 -0
- package/lib/providers/atlassian-jira/index.mjs +100 -0
- package/lib/providers/auth-manager.mjs +126 -0
- package/lib/providers/circuit-breaker.mjs +124 -0
- package/lib/providers/contract.mjs +93 -0
- package/lib/providers/github/index.mjs +126 -0
- package/lib/providers/registry.mjs +184 -0
- package/lib/providers/salesforce/index.mjs +100 -0
- package/lib/providers/slack/index.mjs +80 -0
- package/lib/reflect.mjs +137 -0
- package/lib/research-lint.mjs +164 -0
- package/lib/resources/budget.mjs +259 -0
- package/lib/role-preload.mjs +21 -6
- package/lib/roles/approval-surface.mjs +54 -0
- package/lib/roles/cli.mjs +118 -0
- package/lib/roles/event-bus.mjs +79 -0
- package/lib/roles/fence.mjs +84 -0
- package/lib/roles/gateway.mjs +260 -0
- package/lib/roles/hook-emit.mjs +37 -0
- package/lib/roles/manifest.mjs +48 -0
- package/lib/roles/router.mjs +27 -0
- package/lib/runtime-pressure.mjs +360 -0
- package/lib/schema-artifact.mjs +134 -0
- package/lib/schema-infer.mjs +551 -0
- package/lib/server/auth.mjs +168 -0
- package/lib/server/chat.mjs +336 -0
- package/lib/server/cors.mjs +77 -0
- package/lib/server/csrf.mjs +91 -0
- package/lib/server/index.mjs +1927 -78
- package/lib/server/insights.mjs +765 -0
- package/lib/server/rate-limit.mjs +91 -0
- package/lib/server/static/assets/index-ab25c707.js +70 -0
- package/lib/server/static/assets/index-f0c80a2b.css +1 -0
- package/lib/server/static/index.html +12 -817
- package/lib/server/telemetry-login.mjs +108 -0
- package/lib/server/webhook.mjs +510 -0
- package/lib/service-manager.mjs +522 -58
- package/lib/services/pattern-promotion-service.mjs +167 -0
- package/lib/services/telemetry-backend.mjs +178 -0
- package/lib/session-store.mjs +374 -0
- package/lib/setup-prompts.mjs +96 -0
- package/lib/setup.mjs +525 -38
- package/lib/skills-apply.mjs +280 -0
- package/lib/skills-scope.mjs +118 -0
- package/lib/status.mjs +261 -70
- package/lib/storage/admin.mjs +355 -0
- package/lib/storage/backend.mjs +2 -1
- package/lib/storage/backup.mjs +347 -0
- package/lib/storage/embeddings-engine.mjs +133 -0
- package/lib/storage/embeddings-legacy.mjs +85 -0
- package/lib/storage/embeddings-local.mjs +108 -0
- package/lib/storage/embeddings-ollama.mjs +78 -0
- package/lib/storage/embeddings-openai.mjs +85 -0
- package/lib/storage/embeddings.mjs +92 -33
- package/lib/storage/file-lock.mjs +130 -0
- package/lib/storage/fusion.mjs +95 -0
- package/lib/storage/hybrid-query.mjs +34 -27
- package/lib/storage/migrations.mjs +187 -0
- package/lib/storage/postgres-backup.mjs +124 -0
- package/lib/storage/sql-store.mjs +5 -15
- package/lib/storage/state-source.mjs +12 -13
- package/lib/storage/store-version.mjs +115 -0
- package/lib/storage/sync.mjs +144 -35
- package/lib/storage/unified-storage.mjs +550 -0
- package/lib/storage/vector-client.mjs +286 -0
- package/lib/storage/vector-store.mjs +71 -30
- package/lib/task-graph/generate.mjs +135 -0
- package/lib/task-graph/schema.mjs +81 -0
- package/lib/task-graph/store.mjs +71 -0
- package/lib/telemetry/backends/local.mjs +62 -0
- package/lib/telemetry/backends/{langfuse.mjs โ remote.mjs} +27 -14
- package/lib/telemetry/backfill.mjs +180 -0
- package/lib/telemetry/eval-datasets.mjs +203 -0
- package/lib/telemetry/{langfuse-ingest.mjs โ ingest.mjs} +26 -20
- package/lib/telemetry/intent-verifications.mjs +86 -0
- package/lib/telemetry/llm-judge.mjs +350 -0
- package/lib/telemetry/model-pricing-catalog.mjs +557 -0
- package/lib/telemetry/setup.mjs +151 -0
- package/lib/telemetry/skill-calls.mjs +78 -0
- package/lib/telemetry/team-rollup.mjs +4 -4
- package/lib/token-engine.js +117 -0
- package/lib/token-estimator-anthropic.js +15 -0
- package/lib/token-estimator-deepseek.js +13 -0
- package/lib/token-estimator-default.js +13 -0
- package/lib/token-estimator-google.js +13 -0
- package/lib/token-estimator-openai.js +13 -0
- package/lib/toolkit-env.mjs +1 -1
- package/lib/tty-prompts.mjs +211 -0
- package/lib/uninstall/uninstall.mjs +423 -0
- package/lib/update.mjs +115 -0
- package/lib/upgrade.mjs +141 -0
- package/lib/validator.mjs +51 -2
- package/lib/validators/skills.mjs +142 -0
- package/lib/wireframe.mjs +422 -0
- package/lib/worker/entrypoint.mjs +241 -0
- package/lib/worker/evidence.mjs +107 -0
- package/lib/worker/run.mjs +154 -0
- package/lib/worker/trace.mjs +182 -0
- package/lib/workflow-state.mjs +14 -18
- package/package.json +21 -8
- package/personas/construct.md +53 -51
- package/platforms/claude/CLAUDE.md +1 -1
- package/platforms/claude/settings.template.json +115 -68
- package/platforms/opencode/config.template.json +3 -7
- package/rules/common/agents.md +11 -38
- package/rules/common/beads-hygiene.md +75 -0
- package/rules/common/code-review.md +11 -100
- package/rules/common/coding-style.md +5 -3
- package/rules/common/comments.md +30 -111
- package/rules/common/commit-approval.md +53 -0
- package/rules/common/cx-agent-routing.md +1 -0
- package/rules/common/development-workflow.md +23 -41
- package/rules/common/doc-ownership.md +54 -0
- package/rules/common/efficiency.md +57 -0
- package/rules/common/framing.md +76 -0
- package/rules/common/git-workflow.md +2 -4
- package/rules/common/patterns.md +3 -7
- package/rules/common/performance.md +15 -31
- package/rules/common/release-gates.md +69 -0
- package/rules/common/research.md +107 -0
- package/rules/common/security.md +6 -6
- package/rules/common/skill-composition.md +67 -0
- package/rules/common/testing.md +15 -27
- package/rules/golang/hooks.md +0 -4
- package/rules/policy/bootstrap.yaml +11 -0
- package/rules/policy/drive.yaml +8 -0
- package/rules/policy/task.yaml +9 -0
- package/rules/policy/workflow.yaml +9 -0
- package/rules/python/hooks.md +0 -4
- package/rules/swift/hooks.md +0 -4
- package/rules/typescript/hooks.md +0 -4
- package/rules/web/hooks.md +0 -2
- package/{sync-agents.mjs โ scripts/sync-agents.mjs} +306 -61
- package/skills/ai/prompt-optimizer.md +7 -7
- package/skills/compliance/ai-disclosure.md +58 -0
- package/skills/compliance/data-privacy.md +46 -0
- package/skills/compliance/license-audit.md +40 -0
- package/skills/compliance/regulatory-review.md +61 -0
- package/skills/docs/document-ingest-workflow.md +52 -0
- package/skills/docs/evidence-ingest-workflow.md +9 -0
- package/skills/docs/init-docs.md +51 -18
- package/skills/docs/product-intelligence-workflow.md +12 -0
- package/skills/docs/product-signal-workflow.md +4 -0
- package/skills/docs/research-workflow.md +23 -8
- package/skills/docs/runbook-workflow.md +1 -1
- package/skills/operating/orchestration-reference.md +151 -0
- package/skills/roles/architect.md +5 -0
- package/skills/roles/engineer.md +32 -0
- package/skills/roles/operator.md +12 -0
- package/skills/roles/reviewer.md +23 -0
- package/skills/routing.md +1 -1
- package/templates/devcontainer/Dockerfile.devcontainer +38 -0
- package/templates/devcontainer/devcontainer.json +31 -0
- package/templates/distribution/bootstrap.ps1 +142 -0
- package/templates/distribution/bootstrap.sh +196 -0
- package/templates/distribution/run.mjs +187 -0
- package/templates/docs/adr.md +44 -8
- package/templates/docs/changelog-entry.md +43 -0
- package/templates/docs/construct_guide.md +149 -0
- package/templates/docs/evidence-brief.md +2 -2
- package/templates/docs/meta-prd.md +140 -19
- package/templates/docs/onboarding.md +57 -0
- package/templates/docs/prd.md +159 -15
- package/templates/docs/research-brief.md +4 -4
- package/templates/homebrew/construct.rb +67 -0
- package/langfuse/docker-compose.yml +0 -82
- package/lib/eval-harness.mjs +0 -59
- package/lib/hooks/bootstrap-guard.mjs +0 -90
- package/lib/hooks/console-warn.mjs +0 -43
- package/lib/hooks/continuation-enforcer.mjs +0 -72
- package/lib/hooks/drive-guard.mjs +0 -89
- package/lib/hooks/mcp-task-scope.mjs +0 -47
- package/lib/hooks/task-completed-guard.mjs +0 -43
- package/lib/hooks/teammate-idle-guard.mjs +0 -54
- package/lib/hooks/workflow-guard.mjs +0 -62
- package/lib/prompt-composer.mjs +0 -196
- package/lib/review.mjs +0 -429
- package/lib/server/static/app.js +0 -841
- package/lib/telemetry/langfuse-model-sync.mjs +0 -270
- package/rules/common/hooks.md +0 -35
- package/rules/zh/README.md +0 -113
- package/rules/zh/agents.md +0 -55
- package/rules/zh/code-review.md +0 -129
- package/rules/zh/coding-style.md +0 -53
- package/rules/zh/development-workflow.md +0 -49
- package/rules/zh/git-workflow.md +0 -29
- package/rules/zh/hooks.md +0 -35
- package/rules/zh/patterns.md +0 -36
- package/rules/zh/performance.md +0 -60
- package/rules/zh/security.md +0 -34
- package/rules/zh/testing.md +0 -34
package/lib/cli-commands.mjs
CHANGED
|
@@ -5,405 +5,560 @@
|
|
|
5
5
|
* - bin/construct (usage text + emoji output)
|
|
6
6
|
* - lib/completions.mjs (bash + zsh completion generation)
|
|
7
7
|
* - lib/server/index.mjs (/api/status โ dashboard)
|
|
8
|
+
*
|
|
9
|
+
* Command Visibility:
|
|
10
|
+
* - core: true โ shown in default --help (90% of users)
|
|
11
|
+
* - core: false โ hidden unless --all flag (advanced/internal commands)
|
|
8
12
|
*/
|
|
9
13
|
|
|
10
14
|
export const CLI_COMMANDS = [
|
|
11
|
-
// โโ
|
|
15
|
+
// โโ Core (shown by default) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
12
16
|
{
|
|
13
|
-
name: '
|
|
17
|
+
name: 'dev',
|
|
14
18
|
emoji: '๐',
|
|
15
|
-
category: '
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
category: 'Core',
|
|
20
|
+
core: true,
|
|
21
|
+
description: 'Start services for development',
|
|
22
|
+
usage: 'construct dev',
|
|
18
23
|
},
|
|
19
24
|
{
|
|
20
|
-
name: '
|
|
25
|
+
name: 'stop',
|
|
21
26
|
emoji: 'โน',
|
|
22
|
-
category: '
|
|
27
|
+
category: 'Core',
|
|
28
|
+
core: true,
|
|
23
29
|
description: 'Stop all running services',
|
|
24
|
-
usage: 'construct
|
|
30
|
+
usage: 'construct stop',
|
|
25
31
|
},
|
|
26
32
|
{
|
|
27
33
|
name: 'status',
|
|
28
34
|
emoji: '๐ก',
|
|
29
|
-
category: '
|
|
30
|
-
|
|
35
|
+
category: 'Core',
|
|
36
|
+
core: true,
|
|
37
|
+
description: 'Show system health and credentials',
|
|
31
38
|
usage: 'construct status',
|
|
32
39
|
options: [
|
|
33
40
|
{ flag: '--json', desc: 'Output full status payload as JSON' },
|
|
34
41
|
],
|
|
35
42
|
},
|
|
36
43
|
{
|
|
37
|
-
name: '
|
|
38
|
-
emoji: '
|
|
39
|
-
category: '
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
category: 'Services',
|
|
47
|
-
description: 'Start the Construct dashboard (auto-selects port)',
|
|
48
|
-
usage: 'construct serve',
|
|
44
|
+
name: 'install',
|
|
45
|
+
emoji: '๐ ๏ธ',
|
|
46
|
+
category: 'Core',
|
|
47
|
+
core: true,
|
|
48
|
+
description: 'Machine setup: install Docker, cm, and bootstrap config',
|
|
49
|
+
usage: 'construct install [--yes]',
|
|
50
|
+
options: [
|
|
51
|
+
{ flag: '--yes', desc: 'Apply defaults without prompts' },
|
|
52
|
+
],
|
|
49
53
|
},
|
|
50
54
|
{
|
|
51
|
-
name: '
|
|
52
|
-
emoji: '
|
|
53
|
-
category: '
|
|
54
|
-
|
|
55
|
-
|
|
55
|
+
name: 'init',
|
|
56
|
+
emoji: '๐๏ธ',
|
|
57
|
+
category: 'Core',
|
|
58
|
+
core: true,
|
|
59
|
+
description: 'Initialize project and start services',
|
|
60
|
+
usage: 'construct init [path] [options]',
|
|
56
61
|
options: [
|
|
57
|
-
{ flag: '--yes', desc: '
|
|
58
|
-
{ flag: '--no-
|
|
62
|
+
{ flag: '--yes', desc: 'Accept all defaults (non-interactive)' },
|
|
63
|
+
{ flag: '--no-start', desc: 'Do not start services after init' },
|
|
64
|
+
{ flag: '--interactive, -i', desc: 'Enable interactive setup with project detection' },
|
|
65
|
+
{ flag: '--quiet, -q', desc: 'Minimal output' },
|
|
66
|
+
{ flag: '--verbose, -v', desc: 'Detailed output' },
|
|
67
|
+
{ flag: '--with-docs=adrs,rfcs', desc: 'Enable specific doc lanes (comma-separated)' },
|
|
68
|
+
{ flag: '--with-all-docs', desc: 'Enable all documentation lanes' },
|
|
69
|
+
{ flag: '--with-adrs', desc: 'Enable Architecture Decision Records' },
|
|
70
|
+
{ flag: '--with-rfcs', desc: 'Enable RFCs (design reviews)' },
|
|
71
|
+
{ flag: '--with-runbooks', desc: 'Enable operational runbooks' },
|
|
72
|
+
{ flag: '--with-postmortems', desc: 'Enable incident postmortems' },
|
|
73
|
+
{ flag: '--with-architecture', desc: 'Create architecture.md' },
|
|
59
74
|
],
|
|
60
75
|
},
|
|
61
|
-
|
|
62
|
-
// โโ Agents & Sync โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
63
76
|
{
|
|
64
77
|
name: 'sync',
|
|
65
78
|
emoji: '๐',
|
|
66
|
-
category: '
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
{ flag: '--project', desc: 'Sync to current project directory only' },
|
|
71
|
-
],
|
|
79
|
+
category: 'Core',
|
|
80
|
+
core: true,
|
|
81
|
+
description: 'Sync agent adapters to AI tools',
|
|
82
|
+
usage: 'construct sync',
|
|
72
83
|
},
|
|
73
84
|
{
|
|
74
|
-
name: '
|
|
75
|
-
emoji: '
|
|
76
|
-
category: '
|
|
77
|
-
|
|
78
|
-
|
|
85
|
+
name: 'intake',
|
|
86
|
+
emoji: '๐ฅ',
|
|
87
|
+
category: 'Core',
|
|
88
|
+
core: true,
|
|
89
|
+
description: 'View and process R&D intake queue',
|
|
90
|
+
usage: 'construct intake list|show|done|skip',
|
|
79
91
|
},
|
|
80
|
-
|
|
81
|
-
// โโ Work โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
82
92
|
{
|
|
83
|
-
name: '
|
|
84
|
-
emoji: '
|
|
93
|
+
name: 'recommendations',
|
|
94
|
+
emoji: '๐ก',
|
|
95
|
+
category: 'Core',
|
|
96
|
+
core: true,
|
|
97
|
+
description: 'View and manage artifact recommendations',
|
|
98
|
+
usage: 'construct recommendations list|show|dismiss|stats',
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: 'integrations',
|
|
102
|
+
emoji: '๐',
|
|
85
103
|
category: 'Work',
|
|
86
|
-
|
|
87
|
-
|
|
104
|
+
core: false,
|
|
105
|
+
description: 'Check and manage external system connections',
|
|
106
|
+
usage: 'construct integrations status',
|
|
107
|
+
subcommands: [
|
|
108
|
+
{ name: 'status', desc: 'Check which external integrations are configured' },
|
|
109
|
+
],
|
|
88
110
|
},
|
|
89
111
|
{
|
|
90
|
-
name: '
|
|
91
|
-
emoji: '
|
|
112
|
+
name: 'customer',
|
|
113
|
+
emoji: '๐ค',
|
|
92
114
|
category: 'Work',
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
{
|
|
98
|
-
{
|
|
99
|
-
{
|
|
100
|
-
{
|
|
101
|
-
{ flag: '--ext=LIST', desc: 'Comma-separated extensions to include (default: all text)' },
|
|
115
|
+
core: false,
|
|
116
|
+
description: 'Manage customer profiles for product intelligence',
|
|
117
|
+
usage: 'construct customer list|show|add|update|search',
|
|
118
|
+
subcommands: [
|
|
119
|
+
{ name: 'list', desc: 'List all customer profiles' },
|
|
120
|
+
{ name: 'show <id>', desc: 'Show a customer profile' },
|
|
121
|
+
{ name: 'add --name=Acme --owner=Jane', desc: 'Create a new customer profile' },
|
|
122
|
+
{ name: 'search <query>', desc: 'Search customer profiles by name/alias' },
|
|
102
123
|
],
|
|
103
124
|
},
|
|
104
125
|
{
|
|
105
|
-
name: '
|
|
106
|
-
emoji: '
|
|
126
|
+
name: 'workspace',
|
|
127
|
+
emoji: '๐ข',
|
|
107
128
|
category: 'Work',
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
{
|
|
113
|
-
{
|
|
129
|
+
core: false,
|
|
130
|
+
description: 'Manage PM workspaces for multi-PM signal routing',
|
|
131
|
+
usage: 'construct workspace list|create|show|assign',
|
|
132
|
+
subcommands: [
|
|
133
|
+
{ name: 'list', desc: 'List all workspaces' },
|
|
134
|
+
{ name: 'create --name=X --owner=Jane', desc: 'Create a new workspace' },
|
|
135
|
+
{ name: 'show <id>', desc: 'Show workspace details' },
|
|
136
|
+
{ name: 'assign --customer=X --workspace=Y', desc: 'Assign customer to workspace' },
|
|
114
137
|
],
|
|
115
138
|
},
|
|
116
139
|
{
|
|
117
140
|
name: 'docs',
|
|
118
|
-
emoji: '
|
|
119
|
-
category: '
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
{
|
|
141
|
+
emoji: '๐',
|
|
142
|
+
category: 'Core',
|
|
143
|
+
core: true,
|
|
144
|
+
description: 'Documentation commands',
|
|
145
|
+
usage: 'construct docs check|verify|update',
|
|
146
|
+
subcommands: [
|
|
147
|
+
{ name: 'check', desc: 'Check for missing how-to guides' },
|
|
148
|
+
{ name: 'verify', desc: 'Validate documentation quality' },
|
|
149
|
+
{ name: 'update', desc: 'Regenerate AUTO-managed regions' },
|
|
125
150
|
],
|
|
126
151
|
},
|
|
152
|
+
{
|
|
153
|
+
name: 'models',
|
|
154
|
+
emoji: '๐ง ',
|
|
155
|
+
category: 'Core',
|
|
156
|
+
core: true,
|
|
157
|
+
description: 'Manage AI model assignments',
|
|
158
|
+
usage: 'construct models [--apply|--poll]',
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
name: 'doctor',
|
|
162
|
+
emoji: '๐ฉบ',
|
|
163
|
+
category: 'Core',
|
|
164
|
+
core: true,
|
|
165
|
+
description: 'Check installation health',
|
|
166
|
+
usage: 'construct doctor',
|
|
167
|
+
},
|
|
168
|
+
|
|
169
|
+
// โโ Work (project workflows) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
170
|
+
{
|
|
171
|
+
name: 'distill',
|
|
172
|
+
emoji: '๐ฌ',
|
|
173
|
+
category: 'Work',
|
|
174
|
+
core: false,
|
|
175
|
+
description: 'Distill documents with query-focused chunking',
|
|
176
|
+
usage: 'construct distill <dir> [--format=summary|decisions|full]',
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
name: 'ingest',
|
|
180
|
+
emoji: '๐ฅ',
|
|
181
|
+
category: 'Work',
|
|
182
|
+
core: false,
|
|
183
|
+
description: 'Convert documents to indexed markdown',
|
|
184
|
+
usage: 'construct ingest <file> [--sync]',
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
name: 'infer',
|
|
188
|
+
emoji: '๐ง ',
|
|
189
|
+
category: 'Work',
|
|
190
|
+
core: false,
|
|
191
|
+
description: 'Infer schema from documents',
|
|
192
|
+
usage: 'construct infer <file> [--unified]',
|
|
193
|
+
},
|
|
127
194
|
{
|
|
128
195
|
name: 'search',
|
|
129
196
|
emoji: '๐',
|
|
130
197
|
category: 'Work',
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
{ flag: '--limit=N', desc: 'Maximum results to return (default: 10)' },
|
|
135
|
-
],
|
|
198
|
+
core: false,
|
|
199
|
+
description: 'Hybrid search across project state',
|
|
200
|
+
usage: 'construct search <query>',
|
|
136
201
|
},
|
|
137
202
|
{
|
|
138
203
|
name: 'storage',
|
|
139
204
|
emoji: '๐๏ธ',
|
|
140
205
|
category: 'Work',
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
{ name: 'sync', desc: 'Sync file-state artifacts into shared storage' },
|
|
145
|
-
{ name: 'status', desc: 'Show storage backend configuration and health' },
|
|
146
|
-
],
|
|
206
|
+
core: false,
|
|
207
|
+
description: 'Manage storage backend',
|
|
208
|
+
usage: 'construct storage sync|status|reset',
|
|
147
209
|
},
|
|
148
210
|
{
|
|
149
211
|
name: 'headhunt',
|
|
150
212
|
emoji: '๐งญ',
|
|
151
213
|
category: 'Work',
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
{ flag: '--for=OBJECTIVE', desc: 'Outcome the domain expertise should support' },
|
|
156
|
-
{ flag: '--scope=TEXT', desc: 'Optional scope boundary for the overlay' },
|
|
157
|
-
{ flag: '--temp', desc: 'Force temporary overlay mode' },
|
|
158
|
-
{ flag: '--save', desc: 'Create a promotion request in addition to the temporary overlay' },
|
|
159
|
-
{ flag: '--team=a,b', desc: 'Explicit existing specialists to attach the overlay to' },
|
|
160
|
-
{ flag: '--freshness=current|stable', desc: 'Research freshness requirement (default: current)' },
|
|
161
|
-
{ flag: 'list', desc: 'List active overlays and promotion requests' },
|
|
162
|
-
{ flag: 'promote <id>', desc: 'Create a promotion request from an existing overlay' },
|
|
163
|
-
{ flag: 'challenge <id>', desc: 'Update devil\'s advocate challenge status for a promotion request' },
|
|
164
|
-
{ flag: 'cleanup', desc: 'Remove expired temporary overlays' },
|
|
165
|
-
{ flag: 'template [name] --for=OBJECTIVE', desc: 'Assemble a named team template as a domain overlay' },
|
|
166
|
-
],
|
|
214
|
+
core: false,
|
|
215
|
+
description: 'Create domain expertise overlays',
|
|
216
|
+
usage: 'construct headhunt <domain>',
|
|
167
217
|
},
|
|
168
218
|
{
|
|
169
|
-
name: '
|
|
170
|
-
emoji: '
|
|
219
|
+
name: 'graph',
|
|
220
|
+
emoji: '๐ธ๏ธ',
|
|
171
221
|
category: 'Work',
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
{ name: 'init', desc: 'Initialize a new workflow' },
|
|
176
|
-
{ name: 'add', desc: 'Add a task to the workflow' },
|
|
177
|
-
{ name: 'task', desc: 'Update a task status' },
|
|
178
|
-
{ name: 'align', desc: 'Check alignment findings' },
|
|
179
|
-
{ name: 'from-plan', desc: 'Import tasks from a plan markdown file' },
|
|
180
|
-
],
|
|
222
|
+
core: false,
|
|
223
|
+
description: 'Task graph management',
|
|
224
|
+
usage: 'construct graph list|show|from-intake',
|
|
181
225
|
},
|
|
182
226
|
{
|
|
183
|
-
name: '
|
|
184
|
-
emoji: '
|
|
227
|
+
name: 'memory',
|
|
228
|
+
emoji: '๐ก',
|
|
185
229
|
category: 'Work',
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
{ flag: '--yes', desc: 'Skip interactive questions, use defaults' },
|
|
190
|
-
],
|
|
230
|
+
core: false,
|
|
231
|
+
description: 'Inspect memory layer',
|
|
232
|
+
usage: 'construct memory stats|consolidate',
|
|
191
233
|
},
|
|
192
|
-
|
|
193
|
-
// โโ Models & Integrations โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
194
234
|
{
|
|
195
|
-
name: '
|
|
196
|
-
emoji: '
|
|
197
|
-
category: '
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
],
|
|
235
|
+
name: 'reflect',
|
|
236
|
+
emoji: '๐ช',
|
|
237
|
+
category: 'Work',
|
|
238
|
+
core: false,
|
|
239
|
+
description: 'Capture improvement feedback',
|
|
240
|
+
usage: 'construct reflect [--summary=<text>]',
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
name: 'drop',
|
|
244
|
+
emoji: '๐ฅ',
|
|
245
|
+
category: 'Work',
|
|
246
|
+
core: false,
|
|
247
|
+
description: 'Ingest file from Downloads/Desktop',
|
|
248
|
+
usage: 'construct drop [--list]',
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
name: 'wireframe',
|
|
252
|
+
emoji: 'โ๏ธ',
|
|
253
|
+
category: 'Work',
|
|
254
|
+
core: false,
|
|
255
|
+
description: 'Generate wireframes from description',
|
|
256
|
+
usage: 'construct wireframe "<description>"',
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
name: 'bootstrap',
|
|
260
|
+
emoji: '๐ฑ',
|
|
261
|
+
category: 'Work',
|
|
262
|
+
core: false,
|
|
263
|
+
description: 'Import seed observations',
|
|
264
|
+
usage: 'construct bootstrap',
|
|
209
265
|
},
|
|
266
|
+
{
|
|
267
|
+
name: 'team',
|
|
268
|
+
emoji: '๐ฅ',
|
|
269
|
+
category: 'Work',
|
|
270
|
+
core: false,
|
|
271
|
+
description: 'Team review and templates',
|
|
272
|
+
usage: 'construct team review|templates',
|
|
273
|
+
},
|
|
274
|
+
|
|
275
|
+
// โโ Integrations โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
210
276
|
{
|
|
211
277
|
name: 'mcp',
|
|
212
278
|
emoji: '๐',
|
|
213
|
-
category: '
|
|
279
|
+
category: 'Integrations',
|
|
280
|
+
core: false,
|
|
214
281
|
description: 'Manage MCP integrations',
|
|
215
|
-
usage: 'construct mcp
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
282
|
+
usage: 'construct mcp list|add|remove',
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
name: 'ollama',
|
|
286
|
+
emoji: '๐ฆ',
|
|
287
|
+
category: 'Integrations',
|
|
288
|
+
core: false,
|
|
289
|
+
description: 'Manage local Ollama models',
|
|
290
|
+
usage: 'construct ollama status|pull|test',
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
name: 'plugin',
|
|
294
|
+
emoji: '๐งฉ',
|
|
295
|
+
category: 'Integrations',
|
|
296
|
+
core: false,
|
|
297
|
+
description: 'Manage plugin manifests',
|
|
298
|
+
usage: 'construct plugin list|validate',
|
|
222
299
|
},
|
|
223
300
|
{
|
|
224
301
|
name: 'hosts',
|
|
225
302
|
emoji: '๐ฅ๏ธ',
|
|
226
|
-
category: '
|
|
227
|
-
|
|
303
|
+
category: 'Integrations',
|
|
304
|
+
core: false,
|
|
305
|
+
description: 'Check host capabilities',
|
|
228
306
|
usage: 'construct hosts',
|
|
229
307
|
},
|
|
230
|
-
|
|
308
|
+
{
|
|
309
|
+
name: 'claude:allow',
|
|
310
|
+
emoji: '๐',
|
|
311
|
+
category: 'Integrations',
|
|
312
|
+
core: false,
|
|
313
|
+
description: 'Manage Claude Code permissions',
|
|
314
|
+
usage: 'construct claude:allow list|add|check',
|
|
315
|
+
},
|
|
316
|
+
|
|
231
317
|
// โโ Observability โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
318
|
+
{
|
|
319
|
+
name: 'cost',
|
|
320
|
+
emoji: '๐ฐ',
|
|
321
|
+
category: 'Observability',
|
|
322
|
+
core: false,
|
|
323
|
+
description: 'Token usage and cost breakdown',
|
|
324
|
+
usage: 'construct cost [--days=N]',
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
name: 'efficiency',
|
|
328
|
+
emoji: '๐งฎ',
|
|
329
|
+
category: 'Observability',
|
|
330
|
+
core: false,
|
|
331
|
+
description: 'Read efficiency metrics',
|
|
332
|
+
usage: 'construct efficiency',
|
|
333
|
+
},
|
|
232
334
|
{
|
|
233
335
|
name: 'review',
|
|
234
336
|
emoji: '๐',
|
|
235
337
|
category: 'Observability',
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
{ flag: '--days=N', desc: 'Review window in days (default: 30)' },
|
|
240
|
-
{ flag: '--agent=NAME', desc: 'Filter to a specific agent' },
|
|
241
|
-
{ flag: '--out=PATH', desc: 'Output directory' },
|
|
242
|
-
{ flag: '--json-only', desc: 'Write raw JSON only, skip markdown report' },
|
|
243
|
-
{ flag: '--schedule', desc: 'Schedule automatic weekly reviews' },
|
|
244
|
-
{ flag: '--cadence=CRON',desc: 'Cron expression for --schedule (default: Monday 9am)' },
|
|
245
|
-
],
|
|
338
|
+
core: false,
|
|
339
|
+
description: 'Agent performance review',
|
|
340
|
+
usage: 'construct review [--days=N]',
|
|
246
341
|
},
|
|
247
342
|
{
|
|
248
343
|
name: 'optimize',
|
|
249
344
|
emoji: 'โ๏ธ',
|
|
250
345
|
category: 'Observability',
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
{ flag: '--dry-run', desc: 'Preview changes without applying' },
|
|
255
|
-
{ flag: '--list', desc: 'Show all agents with quality scores' },
|
|
256
|
-
{ flag: '--threshold=N', desc: 'Quality threshold to trigger optimization (default: 0.7)' },
|
|
257
|
-
{ flag: '--days=N', desc: 'Trace window in days (default: 7)' },
|
|
258
|
-
{ flag: '--min-traces=N', desc: 'Minimum traces required (default: 20)' },
|
|
259
|
-
],
|
|
346
|
+
core: false,
|
|
347
|
+
description: 'Prompt optimization',
|
|
348
|
+
usage: 'construct optimize <agent>',
|
|
260
349
|
},
|
|
261
350
|
{
|
|
262
|
-
name: '
|
|
263
|
-
emoji: '
|
|
351
|
+
name: 'evals',
|
|
352
|
+
emoji: '๐งช',
|
|
264
353
|
category: 'Observability',
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
{ flag: '--limit=N', desc: 'Maximum sparse traces to backfill (default: 10)' },
|
|
269
|
-
{ flag: '--best-effort', desc: 'Skip failures instead of exiting non-zero' },
|
|
270
|
-
],
|
|
354
|
+
core: false,
|
|
355
|
+
description: 'Evaluator catalog',
|
|
356
|
+
usage: 'construct evals',
|
|
271
357
|
},
|
|
272
358
|
{
|
|
273
|
-
name: '
|
|
274
|
-
emoji: '
|
|
359
|
+
name: 'llm-judge',
|
|
360
|
+
emoji: 'โ๏ธ',
|
|
275
361
|
category: 'Observability',
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
{ flag: '--days=N', desc: 'Limit report to last N days' },
|
|
280
|
-
{ flag: '--agent=NAME', desc: 'Filter to a specific agent (e.g. cx-engineer)' },
|
|
281
|
-
{ flag: '--reset', desc: 'Clear the cost log' },
|
|
282
|
-
{ flag: '--json', desc: 'Output raw JSON' },
|
|
283
|
-
],
|
|
362
|
+
core: false,
|
|
363
|
+
description: 'LLM-as-judge evaluations',
|
|
364
|
+
usage: 'construct llm-judge',
|
|
284
365
|
},
|
|
366
|
+
|
|
367
|
+
// โโ Advanced (hidden by default) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
285
368
|
{
|
|
286
|
-
name: '
|
|
287
|
-
emoji: '
|
|
288
|
-
category: '
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
{ flag: '--json', desc: 'Output raw JSON' },
|
|
293
|
-
],
|
|
369
|
+
name: 'beads',
|
|
370
|
+
emoji: '๐ฟ',
|
|
371
|
+
category: 'Advanced',
|
|
372
|
+
core: false,
|
|
373
|
+
description: 'Task queue management',
|
|
374
|
+
usage: 'construct beads status|cleanup',
|
|
294
375
|
},
|
|
295
376
|
{
|
|
296
|
-
name: '
|
|
297
|
-
emoji: '
|
|
298
|
-
category: '
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
{ flag: '--json', desc: 'Output raw JSON' },
|
|
303
|
-
],
|
|
377
|
+
name: 'config',
|
|
378
|
+
emoji: 'โ๏ธ',
|
|
379
|
+
category: 'Advanced',
|
|
380
|
+
core: false,
|
|
381
|
+
description: 'Deployment mode configuration',
|
|
382
|
+
usage: 'construct config mode',
|
|
304
383
|
},
|
|
305
|
-
|
|
306
|
-
// โโ Teams & Audit โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
307
384
|
{
|
|
308
|
-
name: '
|
|
309
|
-
emoji: '
|
|
310
|
-
category: '
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
{ name: 'review', desc: 'Run telemetry-backed team performance review' },
|
|
315
|
-
{ name: 'templates', desc: 'List available team templates from agents/teams.json' },
|
|
316
|
-
],
|
|
385
|
+
name: 'uninstall',
|
|
386
|
+
emoji: '๐งน',
|
|
387
|
+
category: 'Advanced',
|
|
388
|
+
core: false,
|
|
389
|
+
description: 'Remove Construct state',
|
|
390
|
+
usage: 'construct uninstall',
|
|
317
391
|
},
|
|
318
392
|
{
|
|
319
|
-
name: '
|
|
320
|
-
emoji: '
|
|
321
|
-
category: '
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
{ name: 'skills', desc: 'Audit skill files for stub headers, broken references, and missing content' },
|
|
326
|
-
],
|
|
393
|
+
name: 'update',
|
|
394
|
+
emoji: 'โฌ๏ธ',
|
|
395
|
+
category: 'Advanced',
|
|
396
|
+
core: false,
|
|
397
|
+
description: 'Reinstall this checkout',
|
|
398
|
+
usage: 'construct update',
|
|
327
399
|
},
|
|
328
|
-
|
|
329
|
-
// โโ Docs โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
330
400
|
{
|
|
331
|
-
name: '
|
|
332
|
-
emoji: '
|
|
333
|
-
category: '
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
{ flag: '--check', desc: 'Exit non-zero if any region would change (used by CI)' },
|
|
338
|
-
],
|
|
401
|
+
name: 'upgrade',
|
|
402
|
+
emoji: '๐',
|
|
403
|
+
category: 'Advanced',
|
|
404
|
+
core: false,
|
|
405
|
+
description: 'Upgrade to latest npm version',
|
|
406
|
+
usage: 'construct upgrade',
|
|
339
407
|
},
|
|
340
408
|
{
|
|
341
|
-
name: '
|
|
342
|
-
emoji: '
|
|
343
|
-
category: '
|
|
344
|
-
|
|
345
|
-
|
|
409
|
+
name: 'completions',
|
|
410
|
+
emoji: 'โจ๏ธ',
|
|
411
|
+
category: 'Advanced',
|
|
412
|
+
core: false,
|
|
413
|
+
description: 'Shell completion scripts',
|
|
414
|
+
usage: 'construct completions',
|
|
346
415
|
},
|
|
347
416
|
{
|
|
348
|
-
name: '
|
|
349
|
-
emoji: '
|
|
350
|
-
category: '
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
{ flag: '--fix', desc: 'Insert stub headers for files missing one' },
|
|
355
|
-
],
|
|
417
|
+
name: 'list',
|
|
418
|
+
emoji: '๐',
|
|
419
|
+
category: 'Advanced',
|
|
420
|
+
core: false,
|
|
421
|
+
description: 'List all agents',
|
|
422
|
+
usage: 'construct list',
|
|
356
423
|
},
|
|
357
|
-
|
|
358
|
-
// โโ Diagnostics โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
359
424
|
{
|
|
360
|
-
name: '
|
|
361
|
-
emoji: '
|
|
362
|
-
category: '
|
|
363
|
-
|
|
364
|
-
|
|
425
|
+
name: 'role',
|
|
426
|
+
emoji: '๐ญ',
|
|
427
|
+
category: 'Advanced',
|
|
428
|
+
core: false,
|
|
429
|
+
description: 'Role framework management',
|
|
430
|
+
usage: 'construct role list|status',
|
|
431
|
+
},
|
|
432
|
+
{
|
|
433
|
+
name: 'embed',
|
|
434
|
+
emoji: '๐',
|
|
435
|
+
category: 'Advanced',
|
|
436
|
+
core: false,
|
|
437
|
+
description: 'Embed mode management',
|
|
438
|
+
usage: 'construct embed start|stop|status',
|
|
439
|
+
},
|
|
440
|
+
{
|
|
441
|
+
name: 'audit',
|
|
442
|
+
emoji: '๐',
|
|
443
|
+
category: 'Advanced',
|
|
444
|
+
core: false,
|
|
445
|
+
description: 'Audit Construct internals',
|
|
446
|
+
usage: 'construct audit skills|trail',
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
name: 'backup',
|
|
450
|
+
emoji: '๐พ',
|
|
451
|
+
category: 'Advanced',
|
|
452
|
+
core: false,
|
|
453
|
+
description: 'System backups',
|
|
454
|
+
usage: 'construct backup create|restore',
|
|
365
455
|
},
|
|
366
456
|
{
|
|
367
457
|
name: 'validate',
|
|
368
458
|
emoji: 'โ
',
|
|
369
|
-
category: '
|
|
370
|
-
|
|
459
|
+
category: 'Advanced',
|
|
460
|
+
core: false,
|
|
461
|
+
description: 'Validate registry structure',
|
|
371
462
|
usage: 'construct validate',
|
|
372
463
|
},
|
|
373
464
|
{
|
|
374
465
|
name: 'diff',
|
|
375
466
|
emoji: '๐',
|
|
376
|
-
category: '
|
|
377
|
-
|
|
467
|
+
category: 'Advanced',
|
|
468
|
+
core: false,
|
|
469
|
+
description: 'Show agent changes since HEAD',
|
|
378
470
|
usage: 'construct diff',
|
|
379
471
|
},
|
|
380
472
|
{
|
|
381
473
|
name: 'version',
|
|
382
474
|
emoji: 'โน๏ธ',
|
|
383
|
-
category: '
|
|
475
|
+
category: 'Advanced',
|
|
476
|
+
core: false,
|
|
384
477
|
description: 'Show version',
|
|
385
478
|
usage: 'construct version',
|
|
386
479
|
},
|
|
480
|
+
{
|
|
481
|
+
name: 'cleanup',
|
|
482
|
+
emoji: '๐งน',
|
|
483
|
+
category: 'Advanced',
|
|
484
|
+
core: false,
|
|
485
|
+
description: 'Clean stale processes',
|
|
486
|
+
usage: 'construct cleanup',
|
|
487
|
+
},
|
|
488
|
+
{
|
|
489
|
+
name: 'skills',
|
|
490
|
+
emoji: '๐ฏ',
|
|
491
|
+
category: 'Advanced',
|
|
492
|
+
core: false,
|
|
493
|
+
description: 'Skill relevance detection',
|
|
494
|
+
usage: 'construct skills scope|apply',
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
name: 'hooks:health',
|
|
498
|
+
emoji: '๐ฉบ',
|
|
499
|
+
category: 'Advanced',
|
|
500
|
+
core: false,
|
|
501
|
+
description: 'Check hook health',
|
|
502
|
+
usage: 'construct hooks:health',
|
|
503
|
+
},
|
|
504
|
+
{
|
|
505
|
+
name: 'gates:audit',
|
|
506
|
+
emoji: '๐ก๏ธ',
|
|
507
|
+
category: 'Advanced',
|
|
508
|
+
core: false,
|
|
509
|
+
description: 'Audit policy gates',
|
|
510
|
+
usage: 'construct gates:audit',
|
|
511
|
+
},
|
|
512
|
+
{
|
|
513
|
+
name: 'provider',
|
|
514
|
+
emoji: '๐',
|
|
515
|
+
category: 'Advanced',
|
|
516
|
+
core: false,
|
|
517
|
+
description: 'Provider management',
|
|
518
|
+
usage: 'construct provider list|test',
|
|
519
|
+
},
|
|
520
|
+
{
|
|
521
|
+
name: 'auth:status',
|
|
522
|
+
emoji: '๐',
|
|
523
|
+
category: 'Advanced',
|
|
524
|
+
core: false,
|
|
525
|
+
description: 'Check auth status',
|
|
526
|
+
usage: 'construct auth:status',
|
|
527
|
+
},
|
|
387
528
|
];
|
|
388
529
|
|
|
389
530
|
/** Flat list of all top-level command names (for completions). */
|
|
390
531
|
export const COMMAND_NAMES = CLI_COMMANDS.map(c => c.name);
|
|
391
532
|
|
|
392
|
-
/** Commands grouped by category,
|
|
533
|
+
/** Commands grouped by category, sorted alphabetically by name within each group. */
|
|
393
534
|
export const CLI_COMMANDS_BY_CATEGORY = CLI_COMMANDS.reduce((acc, cmd) => {
|
|
394
535
|
const cat = cmd.category ?? 'Other';
|
|
395
536
|
if (!acc[cat]) acc[cat] = [];
|
|
396
537
|
acc[cat].push(cmd);
|
|
397
538
|
return acc;
|
|
398
539
|
}, {});
|
|
540
|
+
for (const cat of Object.keys(CLI_COMMANDS_BY_CATEGORY)) {
|
|
541
|
+
CLI_COMMANDS_BY_CATEGORY[cat].sort((a, b) => a.name.localeCompare(b.name));
|
|
542
|
+
}
|
|
399
543
|
|
|
400
544
|
/** Canonical category display order. */
|
|
401
545
|
export const CATEGORY_ORDER = [
|
|
402
|
-
'
|
|
403
|
-
'Agents & Sync',
|
|
546
|
+
'Core',
|
|
404
547
|
'Work',
|
|
405
|
-
'
|
|
548
|
+
'Integrations',
|
|
406
549
|
'Observability',
|
|
407
|
-
'
|
|
408
|
-
'Diagnostics',
|
|
550
|
+
'Advanced',
|
|
409
551
|
];
|
|
552
|
+
|
|
553
|
+
/** Check if a command should be shown by default (core: true) or hidden (core: false). */
|
|
554
|
+
export function isCoreCommand(commandName) {
|
|
555
|
+
const cmd = CLI_COMMANDS.find(c => c.name === commandName);
|
|
556
|
+
return cmd?.core ?? false;
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
/** Get commands filtered by visibility. */
|
|
560
|
+
export function getCommands(options = {}) {
|
|
561
|
+
const { showAll = false } = options;
|
|
562
|
+
if (showAll) return CLI_COMMANDS;
|
|
563
|
+
return CLI_COMMANDS.filter(cmd => cmd.core);
|
|
564
|
+
}
|