@geraldmaron/construct 1.0.0 β 1.0.2
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 +9 -6
- 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 +1000 -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 +523 -36
- 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/README.md
CHANGED
|
@@ -1,344 +1,219 @@
|
|
|
1
1
|
# Construct
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> One AI interface. 28 specialists. Hard gates. Runs locally or deploys for teams.
|
|
4
4
|
|
|
5
|
-
You
|
|
5
|
+
Construct is a deployable AI R&D operating system. You address one persona β `construct` β in Claude Code, OpenCode, Codex, Cursor, or Copilot. Behind that persona is a team of 28 specialists (architect, engineer, reviewer, QA, security, designer, β¦) under typed contracts and enforced gates. Sessions survive boundary changes via durable state in `.cx/`, beads, and the vector index. Construct runs locally for individual users (the default) and can be deployed centrally for shared team usage with shared memory, telemetry, queues, and policy.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**Full docs:** [`geraldmaron.github.io/construct/v2/`](https://geraldmaron.github.io/construct/v2/) (Phase 1) Β· while the new docs site is rolling out, the legacy MkDocs site still serves the root URL.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
## Get started in 5 minutes
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
A real organization doesnβt need its founder to coordinate every interaction between design, engineering, QA, and product. Each role knows its job, challenges the others where it sees a gap, and the system self-corrects.
|
|
14
|
-
|
|
15
|
-
Construct works the same way.
|
|
16
|
-
|
|
17
|
-
Under the hood it runs a full specialist team: architects, engineers, designers, reviewers, security, QA, product managers, data analysts, SREs, and more. Each one has domain expertise and a mandate to push back on work that isnβt ready.
|
|
18
|
-
|
|
19
|
-
You donβt configure any of this. You give Construct a goal and it routes, coordinates, verifies, and ships.
|
|
20
|
-
|
|
21
|
-
## β¨ What you get
|
|
22
|
-
|
|
23
|
-
- **Outcome-driven work** β tell it what you want, not which agent to call
|
|
24
|
-
- **A team that challenges itself** β reviewers, security, and QA are peers, not rubber stamps
|
|
25
|
-
- **Workflow state** that persists across sessions and surfaces
|
|
26
|
-
- **Health and visibility** instead of guesswork about whatβs running
|
|
27
|
-
- **Telemetry and performance reviews** when you want observability
|
|
28
|
-
- **Cross-tool memory** so work carries across Claude Code, OpenCode, and other surfaces
|
|
29
|
-
- **Hybrid retrieval** over file-state, SQL-ready records, and semantic search
|
|
30
|
-
- **Shared storage setup** that can initialize Postgres and sync core state during `construct setup`
|
|
31
|
-
|
|
32
|
-
## π¦ Install
|
|
33
|
-
|
|
34
|
-
### npm
|
|
11
|
+
### Step 1: Install CLI (one-time, per machine)
|
|
35
12
|
|
|
36
13
|
```bash
|
|
37
14
|
npm install -g @geraldmaron/construct
|
|
38
|
-
construct setup
|
|
39
15
|
```
|
|
40
16
|
|
|
41
|
-
###
|
|
17
|
+
### Step 2: Machine Setup (one-time, per machine)
|
|
18
|
+
|
|
19
|
+
First time on a new machine, bootstrap local services. `construct install` auto-spins local Postgres + telemetry backend via Docker:
|
|
42
20
|
|
|
43
21
|
```bash
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
22
|
+
construct install --yes
|
|
23
|
+
# Local services:
|
|
24
|
+
# Telemetry: http://localhost:54330
|
|
25
|
+
# Postgres: postgresql://construct:construct@127.0.0.1:54329/construct
|
|
47
26
|
```
|
|
48
27
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
`construct setup` bootstraps everything β config, local services, and storage. Once it's done:
|
|
28
|
+
### Step 3: Initialize Project (per project)
|
|
52
29
|
|
|
53
30
|
```bash
|
|
54
|
-
|
|
55
|
-
construct
|
|
31
|
+
cd ~/your-project
|
|
32
|
+
construct init --auto-start
|
|
56
33
|
```
|
|
57
34
|
|
|
58
|
-
|
|
35
|
+
The postinstall hook stages `.construct/` and `.claude/` into your project, so hooks, agents, and slash commands are wired up automatically. Peers who clone your repo and run `npm install` get the same setup with no extra steps.
|
|
59
36
|
|
|
60
|
-
|
|
61
|
-
construct init-docs
|
|
62
|
-
```
|
|
37
|
+
Open your editor and address `@construct`. A friendly orientation lives in `construct_guide.md` at your project root.
|
|
63
38
|
|
|
64
|
-
|
|
39
|
+
If you cloned a project that does not yet pin Construct, run `npx -y @geraldmaron/construct init` once to wire it up. No Node at all? `brew install geraldmaron/construct/construct`.
|
|
65
40
|
|
|
66
|
-
-
|
|
67
|
-
- `.cx/context.json`
|
|
68
|
-
- `.cx/workflow.json`
|
|
69
|
-
- `docs/README.md`
|
|
70
|
-
- `docs/architecture.md`
|
|
41
|
+
[Full 5-minute walkthrough β](https://geraldmaron.github.io/construct/v2/docs/start)
|
|
71
42
|
|
|
72
|
-
##
|
|
43
|
+
## What you can do with it
|
|
73
44
|
|
|
74
|
-
|
|
45
|
+
| If you want to... | Read |
|
|
46
|
+
|---|---|
|
|
47
|
+
| Install + first task | [Start](https://geraldmaron.github.io/construct/v2/docs/start) |
|
|
48
|
+
| Understand how it works | [Concepts β Architecture](https://geraldmaron.github.io/construct/v2/docs/concepts/architecture) |
|
|
49
|
+
| Pick a deployment mode | [Concepts β Deployment model](https://geraldmaron.github.io/construct/v2/docs/concepts/deployment-model) |
|
|
50
|
+
| Drop a signal and triage it | [Concepts β Intake and triage](https://geraldmaron.github.io/construct/v2/docs/concepts/intake-and-triage) |
|
|
51
|
+
| Add a custom specialist | [Cookbook β Add a custom agent](https://geraldmaron.github.io/construct/v2/docs/cookbook/add-a-custom-agent) |
|
|
52
|
+
| Fix a blocked commit or red CI | [Cookbook β Fix a policy violation](https://geraldmaron.github.io/construct/v2/docs/cookbook/fix-a-policy-violation) |
|
|
53
|
+
| Plug in your own LLM | [Cookbook β Plug in your own LLM](https://geraldmaron.github.io/construct/v2/docs/cookbook/plug-in-your-own-llm) |
|
|
54
|
+
| Deploy to AWS | [Cookbook β Deploy to AWS](https://geraldmaron.github.io/construct/v2/docs/cookbook/deploy-to-aws) |
|
|
55
|
+
| Look up a CLI command | [Reference β CLI](https://geraldmaron.github.io/construct/v2/docs/reference/cli) |
|
|
56
|
+
| Recover from an outage | [Operations β Troubleshooting](https://geraldmaron.github.io/construct/v2/docs/operations/troubleshooting) |
|
|
75
57
|
|
|
76
|
-
|
|
77
|
-
@construct build the customer portal and ship it when it's verified
|
|
78
|
-
@construct fix the login redirect bug
|
|
79
|
-
@construct review the payment flow before release
|
|
80
|
-
@construct explain how the caching layer works
|
|
81
|
-
```
|
|
58
|
+
Works with Anthropic, OpenRouter, Ollama, and other OpenAI-compatible providers.
|
|
82
59
|
|
|
83
|
-
|
|
60
|
+
## Deployable: solo, team, or enterprise
|
|
84
61
|
|
|
85
|
-
|
|
62
|
+
Construct has three deployment modes. `solo` (the default) runs everything locally β filesystem queue, local repo state, optional Postgres/Docker/telemetry β so if every cloud service goes down you still work from `plan.md`, `.cx/context.md`, beads, git, and the local vector index. `team` promotes the intake queue to Postgres with row-locked worker claims, shares memory across the team, runs workers in a Docker pool, centralizes telemetry, and routes MCP through a broker. `enterprise` adds tenant isolation, RBAC/ABAC scaffolding, isolated worker containers, signed MCP allowlists, and mandatory audit. Pick or change modes with `construct config mode [solo|team|enterprise]`. [Concepts β Deployment model](https://geraldmaron.github.io/construct/v2/docs/concepts/deployment-model).
|
|
86
63
|
|
|
87
|
-
##
|
|
64
|
+
## Signals to R&D
|
|
88
65
|
|
|
89
|
-
|
|
90
|
-
### Services
|
|
66
|
+
Anything dropped into `.cx/inbox/` (a bug report, a customer comment, a competitor PDF, a postmortem draft) is classified into an R&D intake type β bug, user-signal, experiment, eval-finding, architecture, incident, security, requirement, research, ops, or legal-compliance β and assigned a primary owner persona with a recommended handoff chain. Inspect with `construct intake list / show <id>`, generate a task graph with `construct graph from-intake <id>`, and update node status with verifiable evidence as work progresses. The classifier is deterministic and runs in the daemon (no LLM); the agent in your editor handles the actual analysis. [Concepts β Intake and triage](https://geraldmaron.github.io/construct/v2/docs/concepts/intake-and-triage).
|
|
91
67
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
| `construct down` | Stop all running services |
|
|
96
|
-
| `construct status` | Show canonical system health across runtime and integrations |
|
|
97
|
-
| `construct show` | Show runtime service URLs and live status (compat view) |
|
|
98
|
-
| `construct serve` | Start the Construct dashboard (auto-selects port) |
|
|
99
|
-
| `construct setup` | Bootstrap user config after npm, Homebrew, or manual install |
|
|
68
|
+
## Hard gates
|
|
69
|
+
|
|
70
|
+
Every code mutation runs through enforcement: no secrets committed, tests green, docs current, comments lint-clean, CI passes. Gates live in three places (write-time, commit-time, CI safety-net) and can only be bypassed with explicit env vars so every exception leaves an audit trail. [Concepts β Gates and enforcement](https://geraldmaron.github.io/construct/v2/docs/concepts/gates-and-enforcement).
|
|
100
71
|
|
|
101
|
-
|
|
72
|
+
## Core commands
|
|
73
|
+
|
|
74
|
+
<!-- AUTO:commands -->
|
|
75
|
+
### Core
|
|
102
76
|
|
|
103
77
|
| Command | What it does |
|
|
104
78
|
|---|---|
|
|
105
|
-
| `construct
|
|
106
|
-
| `construct
|
|
79
|
+
| `construct dev` | Start services for development |
|
|
80
|
+
| `construct docs` | Documentation commands |
|
|
81
|
+
| `construct doctor` | Check installation health |
|
|
82
|
+
| `construct init` | Initialize project and start services |
|
|
83
|
+
| `construct install` | Machine setup: install Docker, cm, and bootstrap config |
|
|
84
|
+
| `construct intake` | View and process R&D intake queue |
|
|
85
|
+
| `construct models` | Manage AI model assignments |
|
|
86
|
+
| `construct recommendations` | View and manage artifact recommendations |
|
|
87
|
+
| `construct status` | Show system health and credentials |
|
|
88
|
+
| `construct stop` | Stop all running services |
|
|
89
|
+
| `construct sync` | Sync agent adapters to AI tools |
|
|
107
90
|
|
|
108
91
|
### Work
|
|
109
92
|
|
|
110
93
|
| Command | What it does |
|
|
111
94
|
|---|---|
|
|
112
|
-
| `construct
|
|
113
|
-
| `construct
|
|
114
|
-
| `construct
|
|
115
|
-
| `construct
|
|
116
|
-
| `construct
|
|
117
|
-
| `construct
|
|
118
|
-
| `construct
|
|
119
|
-
| `construct
|
|
120
|
-
| `construct
|
|
121
|
-
| `construct
|
|
122
|
-
|
|
123
|
-
|
|
95
|
+
| `construct bootstrap` | Import seed observations |
|
|
96
|
+
| `construct customer` | Manage customer profiles for product intelligence |
|
|
97
|
+
| `construct distill` | Distill documents with query-focused chunking |
|
|
98
|
+
| `construct drop` | Ingest file from Downloads/Desktop |
|
|
99
|
+
| `construct graph` | Task graph management |
|
|
100
|
+
| `construct headhunt` | Create domain expertise overlays |
|
|
101
|
+
| `construct infer` | Infer schema from documents |
|
|
102
|
+
| `construct ingest` | Convert documents to indexed markdown |
|
|
103
|
+
| `construct integrations` | Check and manage external system connections |
|
|
104
|
+
| `construct memory` | Inspect memory layer |
|
|
105
|
+
| `construct reflect` | Capture improvement feedback |
|
|
106
|
+
| `construct search` | Hybrid search across project state |
|
|
107
|
+
| `construct storage` | Manage storage backend |
|
|
108
|
+
| `construct team` | Team review and templates |
|
|
109
|
+
| `construct wireframe` | Generate wireframes from description |
|
|
110
|
+
| `construct workspace` | Manage PM workspaces for multi-PM signal routing |
|
|
111
|
+
|
|
112
|
+
### Integrations
|
|
124
113
|
|
|
125
114
|
| Command | What it does |
|
|
126
115
|
|---|---|
|
|
127
|
-
| `construct
|
|
116
|
+
| `construct claude:allow` | Manage Claude Code permissions |
|
|
117
|
+
| `construct hosts` | Check host capabilities |
|
|
128
118
|
| `construct mcp` | Manage MCP integrations |
|
|
129
|
-
| `construct
|
|
119
|
+
| `construct ollama` | Manage local Ollama models |
|
|
120
|
+
| `construct plugin` | Manage plugin manifests |
|
|
130
121
|
|
|
131
122
|
### Observability
|
|
132
123
|
|
|
133
124
|
| Command | What it does |
|
|
134
125
|
|---|---|
|
|
135
|
-
| `construct
|
|
136
|
-
| `construct
|
|
137
|
-
| `construct
|
|
138
|
-
| `construct
|
|
139
|
-
| `construct
|
|
140
|
-
| `construct
|
|
126
|
+
| `construct cost` | Token usage and cost breakdown |
|
|
127
|
+
| `construct efficiency` | Read efficiency metrics |
|
|
128
|
+
| `construct evals` | Evaluator catalog |
|
|
129
|
+
| `construct llm-judge` | LLM-as-judge evaluations |
|
|
130
|
+
| `construct optimize` | Prompt optimization |
|
|
131
|
+
| `construct review` | Agent performance review |
|
|
141
132
|
|
|
142
|
-
###
|
|
133
|
+
### Advanced
|
|
143
134
|
|
|
144
135
|
| Command | What it does |
|
|
145
136
|
|---|---|
|
|
146
|
-
| `construct
|
|
147
|
-
| `construct
|
|
148
|
-
| `construct
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
|
153
|
-
|
|
154
|
-
| `construct
|
|
155
|
-
| `construct
|
|
156
|
-
| `construct
|
|
157
|
-
| `construct
|
|
137
|
+
| `construct audit` | Audit Construct internals |
|
|
138
|
+
| `construct auth:status` | Check auth status |
|
|
139
|
+
| `construct backup` | System backups |
|
|
140
|
+
| `construct beads` | Task queue management |
|
|
141
|
+
| `construct cleanup` | Clean stale processes |
|
|
142
|
+
| `construct completions` | Shell completion scripts |
|
|
143
|
+
| `construct config` | Deployment mode configuration |
|
|
144
|
+
| `construct diff` | Show agent changes since HEAD |
|
|
145
|
+
| `construct embed` | Embed mode management |
|
|
146
|
+
| `construct gates:audit` | Audit policy gates |
|
|
147
|
+
| `construct hooks:health` | Check hook health |
|
|
148
|
+
| `construct list` | List all agents |
|
|
149
|
+
| `construct provider` | Provider management |
|
|
150
|
+
| `construct role` | Role framework management |
|
|
151
|
+
| `construct skills` | Skill relevance detection |
|
|
152
|
+
| `construct uninstall` | Remove Construct state |
|
|
153
|
+
| `construct update` | Reinstall this checkout |
|
|
154
|
+
| `construct upgrade` | Upgrade to latest npm version |
|
|
155
|
+
| `construct validate` | Validate registry structure |
|
|
158
156
|
| `construct version` | Show version |
|
|
159
157
|
<!-- /AUTO:commands -->
|
|
160
158
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
## π Built for real usage
|
|
164
|
-
|
|
165
|
-
`construct status` is the main health surface.
|
|
166
|
-
|
|
167
|
-
It reports what matters now:
|
|
168
|
-
|
|
169
|
-
- runtime health
|
|
170
|
-
- configured integrations
|
|
171
|
-
- managed dashboard status
|
|
172
|
-
- recent telemetry richness
|
|
173
|
-
- session usage signals when available
|
|
174
|
-
- current workflow/task visibility
|
|
175
|
-
- context/workflow public health in machine-readable form
|
|
176
|
-
- storage mode visibility for file-state, SQL-ready, and vector-ready layers
|
|
177
|
-
|
|
178
|
-
If you want the raw machine-readable payload:
|
|
179
|
-
|
|
180
|
-
```bash
|
|
181
|
-
construct status --json
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
The JSON output includes a shared `publicHealth` block. Today that block exposes:
|
|
185
|
-
|
|
186
|
-
- `activeTask`
|
|
187
|
-
- `context` (`hasFile`, `source`, `savedAt`, `summary`)
|
|
188
|
-
- `workflow` (`exists`, `phase`, `lifecycleStatus`, `currentTaskKey`, `summary`)
|
|
189
|
-
- `alignment` (`status`, `findings`, counts)
|
|
190
|
-
- `metadataPresence` (`executionContractModel`, `contextState`)
|
|
191
|
-
|
|
192
|
-
Hybrid storage readiness is also reported via `storage`:
|
|
193
|
-
|
|
194
|
-
- `sql` (`mode`, `configured`, `sharedReady`, `fallbackAvailable`)
|
|
195
|
-
- `vector` (`mode`, `configured`, `sharedReady`, `fallbackAvailable`)
|
|
196
|
-
- `health` (`sql`, `vector`)
|
|
197
|
-
|
|
198
|
-
`construct setup --yes` writes managed defaults for local semantic retrieval, starts a localhost-only Postgres container when Docker is running, initializes the schema, and performs an initial file-state sync. If `DATABASE_URL` is already configured, Construct uses that instead of starting managed Postgres.
|
|
199
|
-
|
|
200
|
-
The status JSON also reports hybrid storage readiness so team-ready deployments can see whether SQL/vector stores are configured or still running file-only. Tracing becomes active once `LANGFUSE_PUBLIC_KEY` and `LANGFUSE_SECRET_KEY` are present in `~/.construct/config.env` or `.env`.
|
|
201
|
-
|
|
202
|
-
The same public-health contract is exposed through the Construct MCP server on:
|
|
203
|
-
|
|
204
|
-
- `project_context`
|
|
205
|
-
- `workflow_status`
|
|
159
|
+
## For contributors
|
|
206
160
|
|
|
207
|
-
|
|
161
|
+
- [`CONTRIBUTING.md`](./CONTRIBUTING.md) β branch workflow, gates, review expectations.
|
|
162
|
+
- [`CHANGELOG.md`](./CHANGELOG.md) β release history.
|
|
163
|
+
- [`docs/concepts/architecture.md`](./docs/concepts/architecture.md) β canonical architecture (rendered on the docs site at [Concepts β Architecture](https://geraldmaron.github.io/construct/docs/concepts/architecture)).
|
|
164
|
+
- [`AGENTS.md`](./AGENTS.md) β agent operating contract.
|
|
208
165
|
|
|
209
|
-
##
|
|
210
|
-
|
|
211
|
-
Construct is provider-agnostic by design.
|
|
212
|
-
|
|
213
|
-
You can use:
|
|
214
|
-
|
|
215
|
-
- Anthropic directly
|
|
216
|
-
- OpenRouter
|
|
217
|
-
- Ollama
|
|
218
|
-
- other compatible endpoints
|
|
219
|
-
|
|
220
|
-
Set models through environment config, then resync:
|
|
221
|
-
|
|
222
|
-
```bash
|
|
223
|
-
construct sync
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
Construct uses three execution tiers:
|
|
227
|
-
|
|
228
|
-
- `reasoning`
|
|
229
|
-
- `standard`
|
|
230
|
-
- `fast`
|
|
231
|
-
|
|
232
|
-
It can also infer sibling tiers more intelligently, including optional free-model bias when you want to optimize cost without hand-tuning every tier.
|
|
233
|
-
|
|
234
|
-
## π Observability when you want it
|
|
235
|
-
|
|
236
|
-
Construct uses Langfuse for agent observability.
|
|
237
|
-
|
|
238
|
-
It supports:
|
|
239
|
-
|
|
240
|
-
- agent trace creation
|
|
241
|
-
- runtime session telemetry
|
|
242
|
-
- telemetry richness reporting in status/dashboard
|
|
243
|
-
- sparse trace backfill
|
|
244
|
-
- performance reviews
|
|
245
|
-
|
|
246
|
-
Run `construct setup --yes` to start a local Langfuse instance via Docker, or point to a self-hosted instance by setting `LANGFUSE_BASEURL`, `LANGFUSE_PUBLIC_KEY`, and `LANGFUSE_SECRET_KEY` in `~/.construct/config.env`.
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
## π§ Memory across sessions
|
|
250
|
-
|
|
251
|
-
Construct can use shared memory so work carries across tools and sessions instead of feeling like youβre rebooting your brain every hour.
|
|
252
|
-
|
|
253
|
-
That is especially useful if you move between OpenCode, Claude Code, and other surfaces.
|
|
254
|
-
|
|
255
|
-
## π€ For contributors
|
|
256
|
-
|
|
257
|
-
This repo is the source of truth for Construct itself.
|
|
258
|
-
|
|
259
|
-
To build from source:
|
|
260
|
-
|
|
261
|
-
```bash
|
|
262
|
-
git clone https://github.com/geraldmaron/construct.git
|
|
263
|
-
cd construct
|
|
264
|
-
npm install && npm install -g .
|
|
265
|
-
construct setup
|
|
266
|
-
```
|
|
267
|
-
|
|
268
|
-
Important files:
|
|
269
|
-
|
|
270
|
-
- `agents/registry.json` β core registry and routing source of truth
|
|
271
|
-
- `bin/construct` β CLI entrypoint
|
|
272
|
-
- `lib/` β runtime, hooks, MCP, status, setup, and orchestration logic
|
|
273
|
-
- `personas/` β public/internal prompt surfaces
|
|
274
|
-
- `skills/` β reusable execution knowledge
|
|
275
|
-
- `rules/` β coding and quality guidance
|
|
276
|
-
|
|
277
|
-
Useful contributor commands:
|
|
278
|
-
|
|
279
|
-
```bash
|
|
280
|
-
npm test
|
|
281
|
-
node ./bin/construct doctor
|
|
282
|
-
node ./bin/construct status
|
|
283
|
-
node ./bin/construct sync
|
|
284
|
-
node ./bin/construct init-docs
|
|
285
|
-
node ./bin/construct docs:update
|
|
286
|
-
```
|
|
287
|
-
|
|
288
|
-
Core repo rule:
|
|
289
|
-
|
|
290
|
-
- treat `.cx/context.*`, `.cx/workflow.json`, `docs/README.md`, and `docs/architecture.md` as shared project state
|
|
291
|
-
- all LLMs working here, including Construct, should read them at session start
|
|
292
|
-
- if work changes project reality, update the affected core document before calling the work done
|
|
293
|
-
|
|
294
|
-
## Where this is going
|
|
295
|
-
|
|
296
|
-
Construct is moving toward a package-manager-first, cross-platform setup flow that feels more like a product and less like infra cosplay.
|
|
297
|
-
|
|
298
|
-
That means:
|
|
299
|
-
|
|
300
|
-
- `construct setup` is the primary bootstrap path
|
|
301
|
-
- `construct status` is the canonical health surface
|
|
302
|
-
- runtime and telemetry are getting more explicit and less magical
|
|
303
|
-
- public docs present Construct as the product, not a maze of internals
|
|
304
|
-
|
|
305
|
-
## π Project structure
|
|
166
|
+
## Project structure
|
|
306
167
|
|
|
307
168
|
<!-- AUTO:structure -->
|
|
308
169
|
```text
|
|
309
170
|
construct/
|
|
310
171
|
βββ agents Registry and generated platform adapter chains
|
|
172
|
+
βββ apps User-facing apps shipped from this repo (e.g., apps/docs/ β Fumadocs docs site)
|
|
311
173
|
βββ bin CLI entrypoint (`construct`)
|
|
312
174
|
βββ commands Command prompt assets
|
|
175
|
+
βββ dashboard
|
|
313
176
|
βββ db
|
|
177
|
+
βββ deploy
|
|
314
178
|
βββ docs Architecture notes, runbooks, and documentation contract
|
|
315
|
-
βββ
|
|
316
|
-
βββ langfuse Langfuse trace backend for agent observability
|
|
179
|
+
βββ examples
|
|
317
180
|
βββ lib Core runtime: CLI, hooks, MCP, status, sync, workflow
|
|
318
181
|
βββ personas Persona prompt definitions
|
|
319
182
|
βββ platforms
|
|
183
|
+
βββ providers
|
|
320
184
|
βββ rules Coding and quality standards
|
|
321
|
-
βββ
|
|
185
|
+
βββ schemas
|
|
186
|
+
βββ scripts
|
|
187
|
+
βββ services
|
|
322
188
|
βββ skills Reusable domain knowledge files
|
|
323
189
|
βββ templates
|
|
324
190
|
βββ tests Test suite
|
|
325
191
|
```
|
|
326
192
|
<!-- /AUTO:structure -->
|
|
327
193
|
|
|
328
|
-
##
|
|
194
|
+
## Uninstall
|
|
195
|
+
|
|
196
|
+
Run the uninstaller first, then drop the package:
|
|
329
197
|
|
|
330
198
|
```bash
|
|
331
|
-
|
|
199
|
+
construct uninstall # interactive; pick what to remove
|
|
200
|
+
npm uninstall @geraldmaron/construct
|
|
332
201
|
```
|
|
333
202
|
|
|
334
|
-
|
|
203
|
+
`construct uninstall` probes both project-scope (`.construct/`, the Construct-owned `.claude/agents/` + `.claude/commands/` files, hooks/mcpServers Construct added to `.claude/settings.json`) and machine-scope state (`~/.cx/`, `~/.construct/workspace/`, the embedding model cache, the local Postgres container). Auto-risk items are removed by default; ask-risk items (Postgres data, API keys, AGENTS.md/plan.md you may have edited) are skipped unless you opt in.
|
|
204
|
+
|
|
205
|
+
It never touches Docker itself, Homebrew CLIs like `cm`/`cass`, the pgvector image, or anything you've added to `.claude/settings.json` by hand. Those appear in the final summary as follow-ups you can run if you want.
|
|
335
206
|
|
|
336
|
-
|
|
207
|
+
Useful flags:
|
|
337
208
|
|
|
338
209
|
```bash
|
|
339
|
-
|
|
210
|
+
construct uninstall --dry-run # show the plan, change nothing
|
|
211
|
+
construct uninstall --yes # non-interactive, auto-risk only
|
|
212
|
+
construct uninstall --yes --all # non-interactive, everything
|
|
213
|
+
construct uninstall --scope=project # only this project; leave ~/.construct alone
|
|
214
|
+
construct uninstall --keep-state # only .construct/ + .claude/; keep .cx/, ~/.construct, Postgres
|
|
340
215
|
```
|
|
341
216
|
|
|
342
217
|
## License
|
|
343
218
|
|
|
344
|
-
|
|
219
|
+
Apache License 2.0. See [`LICENSE`](./LICENSE).
|