@karajan-family/code 4.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +661 -0
- package/README.md +98 -0
- package/bin/karajan-mcp.js +2 -0
- package/bin/kj-rag-mcp.js +75 -0
- package/bin/kj-tail +361 -0
- package/bin/kj.js +2 -0
- package/docs/README.es.md +80 -0
- package/docs/karajan-code-logo-small.png +0 -0
- package/library/logical-clocks-lamport.md +40 -0
- package/package.json +140 -0
- package/packages/ai-trash/README.md +37 -0
- package/packages/ai-trash/bin/kj-trash.js +10 -0
- package/packages/ai-trash/package.json +43 -0
- package/packages/ai-trash/src/cli.js +200 -0
- package/packages/ai-trash/src/destructive-parser.js +74 -0
- package/packages/ai-trash/src/git-snapshot.js +128 -0
- package/packages/ai-trash/src/hook.js +137 -0
- package/packages/ai-trash/src/index.js +14 -0
- package/packages/ai-trash/src/install.js +73 -0
- package/packages/ai-trash/src/logger.js +60 -0
- package/packages/ai-trash/src/manifest.js +91 -0
- package/packages/ai-trash/src/permissions.js +26 -0
- package/packages/ai-trash/src/snapshot.js +66 -0
- package/packages/ai-trash/src/ulid.js +66 -0
- package/packages/hu-board/README.md +69 -0
- package/packages/hu-board/package.json +28 -0
- package/packages/hu-board/public/app.js +259 -0
- package/packages/hu-board/public/index.html +77 -0
- package/packages/hu-board/public/pipeline.css +132 -0
- package/packages/hu-board/public/pipeline.html +48 -0
- package/packages/hu-board/public/pipeline.js +200 -0
- package/packages/hu-board/public/rag.html +21 -0
- package/packages/hu-board/public/rag.js +39 -0
- package/packages/hu-board/public/styles.css +973 -0
- package/packages/hu-board/public/utils/api.js +139 -0
- package/packages/hu-board/public/utils/board-view.js +473 -0
- package/packages/hu-board/public/utils/command-launcher.js +213 -0
- package/packages/hu-board/public/utils/config-editor.js +181 -0
- package/packages/hu-board/public/utils/dashboard-view.js +103 -0
- package/packages/hu-board/public/utils/formatters.js +300 -0
- package/packages/hu-board/public/utils/graph-view.js +216 -0
- package/packages/hu-board/public/utils/hu-actions.js +224 -0
- package/packages/hu-board/public/utils/init-listeners.js +180 -0
- package/packages/hu-board/public/utils/log-panel.js +222 -0
- package/packages/hu-board/public/utils/modals.js +309 -0
- package/packages/hu-board/public/utils/plan-rollup-view.js +53 -0
- package/packages/hu-board/public/utils/preflight-view.js +89 -0
- package/packages/hu-board/public/utils/project-actions.js +143 -0
- package/packages/hu-board/public/utils/project-picker-view.js +139 -0
- package/packages/hu-board/public/utils/run-launcher.js +169 -0
- package/packages/hu-board/public/utils/server-push.js +252 -0
- package/packages/hu-board/public/utils/sessions-view.js +199 -0
- package/packages/hu-board/public/utils/story-detail-view.js +324 -0
- package/packages/hu-board/public/utils/story-edit-form.js +271 -0
- package/packages/hu-board/public/wiki.html +32 -0
- package/packages/hu-board/public/wiki.js +53 -0
- package/packages/hu-board/src/auth.js +92 -0
- package/packages/hu-board/src/boot-info.js +16 -0
- package/packages/hu-board/src/cleanup-zombies.js +145 -0
- package/packages/hu-board/src/command-runner.js +133 -0
- package/packages/hu-board/src/config-yaml.js +531 -0
- package/packages/hu-board/src/db.js +963 -0
- package/packages/hu-board/src/ephemeral-cleaner.js +196 -0
- package/packages/hu-board/src/event-bus.js +58 -0
- package/packages/hu-board/src/format.js +207 -0
- package/packages/hu-board/src/hu-zombie-reaper.js +103 -0
- package/packages/hu-board/src/journal-parser.js +180 -0
- package/packages/hu-board/src/plan-mutations.js +424 -0
- package/packages/hu-board/src/preflight.js +286 -0
- package/packages/hu-board/src/routes/api.js +1374 -0
- package/packages/hu-board/src/routes/pipeline.js +45 -0
- package/packages/hu-board/src/routes/rag.js +42 -0
- package/packages/hu-board/src/routes/wiki.js +43 -0
- package/packages/hu-board/src/run-tracker.js +121 -0
- package/packages/hu-board/src/server.js +438 -0
- package/packages/hu-board/src/sync.js +732 -0
- package/packages/hu-board/src/token-store.js +56 -0
- package/packages/hu-board/src/zombie-reaper.js +206 -0
- package/scripts/ai-attribution-guard.yml +84 -0
- package/scripts/audit-test-diet.mjs +151 -0
- package/scripts/build-sea.mjs +150 -0
- package/scripts/diet-baseline.mjs +170 -0
- package/scripts/dual-publish.mjs +67 -0
- package/scripts/esbuild-sea.config.mjs +273 -0
- package/scripts/git-hooks/post-merge +18 -0
- package/scripts/install-binary.ps1 +174 -0
- package/scripts/install-binary.sh +159 -0
- package/scripts/install-guard-all-repos.sh +85 -0
- package/scripts/install-kj.sh +193 -0
- package/scripts/install.js +901 -0
- package/scripts/install.sh +7 -0
- package/scripts/postinstall.js +117 -0
- package/scripts/protect-all-repos.sh +88 -0
- package/scripts/quickstart-gate.mjs +97 -0
- package/scripts/regen-arch-stats.sh +71 -0
- package/scripts/setup-multi-instance.sh +150 -0
- package/scripts/verify-pack.mjs +278 -0
- package/src/activity-log.js +59 -0
- package/src/agents/agy-agent.js +62 -0
- package/src/agents/aider-agent.js +78 -0
- package/src/agents/availability.js +52 -0
- package/src/agents/base-agent.js +134 -0
- package/src/agents/claude-agent.js +413 -0
- package/src/agents/codex-agent.js +112 -0
- package/src/agents/copilot-agent.js +65 -0
- package/src/agents/gemini-agent.js +85 -0
- package/src/agents/host-agent.js +38 -0
- package/src/agents/index.js +59 -0
- package/src/agents/kimi-agent.js +45 -0
- package/src/agents/model-registry.js +137 -0
- package/src/agents/opencode-agent.js +72 -0
- package/src/agents/qwen-agent.js +20 -0
- package/src/agents/resolve-bin.js +73 -0
- package/src/audit/agent-readiness.js +259 -0
- package/src/audit/ai-slop-findings.js +102 -0
- package/src/audit/audit-fallback.js +66 -0
- package/src/audit/audit-history-display.js +61 -0
- package/src/audit/audit-history.js +102 -0
- package/src/audit/basal-cost.js +281 -0
- package/src/audit/circular-deps.js +144 -0
- package/src/audit/dead-exports.js +186 -0
- package/src/audit/deterministic-summary.js +327 -0
- package/src/audit/harness-scorecard.js +100 -0
- package/src/audit/harness-section.js +81 -0
- package/src/audit/infra-findings.js +100 -0
- package/src/audit/injection-findings.js +114 -0
- package/src/audit/issue-filter.js +133 -0
- package/src/audit/osv-findings.js +167 -0
- package/src/audit/plan-adherence.js +224 -0
- package/src/audit/semgrep-findings.js +129 -0
- package/src/audit/sonar-findings.js +93 -0
- package/src/audit/webperf-input.js +133 -0
- package/src/autonomy/arbiter-role.js +71 -0
- package/src/autonomy/arbiter.js +22 -0
- package/src/autonomy/decider.js +18 -0
- package/src/autonomy/decision-resolver.js +58 -0
- package/src/autonomy/outcome-report.js +55 -0
- package/src/autonomy/policy.js +41 -0
- package/src/autonomy/stage-ask.js +30 -0
- package/src/bootstrap.js +276 -0
- package/src/brain/agent-error-classifier.js +116 -0
- package/src/brain/decision-tracker.js +125 -0
- package/src/brain/decisor.js +243 -0
- package/src/brain/solomon-consult.js +171 -0
- package/src/brain/standby-scheduler.js +8 -0
- package/src/brain/standby-store.js +12 -0
- package/src/brain/with-brain-recovery.js +235 -0
- package/src/budget/comparison.js +96 -0
- package/src/canvas/parse-md.js +238 -0
- package/src/canvas/schema.js +101 -0
- package/src/canvas/to-flat.js +85 -0
- package/src/canvas/validate.js +163 -0
- package/src/checks/ai-surface.js +79 -0
- package/src/checks/ai-trash.js +34 -0
- package/src/checks/binaries.js +207 -0
- package/src/checks/ci.js +105 -0
- package/src/checks/config-files.js +217 -0
- package/src/checks/dir-setup.js +103 -0
- package/src/checks/guarantee-level.js +38 -0
- package/src/checks/hardware.js +150 -0
- package/src/checks/harness-scorecard.js +41 -0
- package/src/checks/mcp-health.js +169 -0
- package/src/checks/method.js +73 -0
- package/src/checks/native-build.js +67 -0
- package/src/checks/node.js +70 -0
- package/src/checks/ollama.js +41 -0
- package/src/checks/orphans.js +77 -0
- package/src/checks/ports.js +188 -0
- package/src/checks/project-checks.js +245 -0
- package/src/checks/qmd.js +41 -0
- package/src/checks/rag-hooks.js +54 -0
- package/src/checks/release-check.js +102 -0
- package/src/checks/rtk.js +36 -0
- package/src/checks/runner.js +326 -0
- package/src/checks/skills.js +53 -0
- package/src/checks/sonar.js +67 -0
- package/src/checks/squeezr.js +36 -0
- package/src/checks/system.js +53 -0
- package/src/checks/tokens.js +172 -0
- package/src/checks/types.js +103 -0
- package/src/ci/dispatch.js +99 -0
- package/src/ci/index.js +3 -0
- package/src/ci/pr-diff.js +26 -0
- package/src/ci/repo.js +45 -0
- package/src/cli/_shared.js +30 -0
- package/src/cli/advanced-commands.js +61 -0
- package/src/cli/register-meta.js +772 -0
- package/src/cli/register-pipeline.js +335 -0
- package/src/cli/register-plan.js +224 -0
- package/src/cli/register-roles-skills.js +54 -0
- package/src/cli/register-sonar.js +28 -0
- package/src/cli/register-standby.js +26 -0
- package/src/cli.js +155 -0
- package/src/commands/advanced.js +31 -0
- package/src/commands/agent-run.js +63 -0
- package/src/commands/agents.js +105 -0
- package/src/commands/architect.js +123 -0
- package/src/commands/audit.js +430 -0
- package/src/commands/autorun.js +49 -0
- package/src/commands/board.js +458 -0
- package/src/commands/check.js +40 -0
- package/src/commands/clean.js +145 -0
- package/src/commands/code.js +45 -0
- package/src/commands/config.js +74 -0
- package/src/commands/discover.js +105 -0
- package/src/commands/doctor.js +251 -0
- package/src/commands/env.js +207 -0
- package/src/commands/harden.js +203 -0
- package/src/commands/hu.js +210 -0
- package/src/commands/identity.js +60 -0
- package/src/commands/init.js +950 -0
- package/src/commands/install-tools.js +432 -0
- package/src/commands/mutate.js +94 -0
- package/src/commands/ollama.js +44 -0
- package/src/commands/onboard.js +45 -0
- package/src/commands/plan/_shared.js +55 -0
- package/src/commands/plan/add-hu.js +23 -0
- package/src/commands/plan/delete.js +9 -0
- package/src/commands/plan/fix.js +99 -0
- package/src/commands/plan/generate.js +532 -0
- package/src/commands/plan/index.js +13 -0
- package/src/commands/plan/list.js +21 -0
- package/src/commands/plan/migrate-result.js +41 -0
- package/src/commands/plan/ready.js +46 -0
- package/src/commands/plan/remove-hu.js +17 -0
- package/src/commands/plan/share.js +85 -0
- package/src/commands/plan/show.js +81 -0
- package/src/commands/plan/unshare.js +41 -0
- package/src/commands/plan/validate.js +20 -0
- package/src/commands/plan.js +17 -0
- package/src/commands/policy.js +164 -0
- package/src/commands/privacy.js +45 -0
- package/src/commands/qmd.js +86 -0
- package/src/commands/rag-mcp.js +18 -0
- package/src/commands/rag.js +173 -0
- package/src/commands/report-issue.js +77 -0
- package/src/commands/report.js +469 -0
- package/src/commands/researcher.js +54 -0
- package/src/commands/resume.js +68 -0
- package/src/commands/review-gate.js +355 -0
- package/src/commands/review.js +89 -0
- package/src/commands/roles.js +116 -0
- package/src/commands/run.js +185 -0
- package/src/commands/scan.js +18 -0
- package/src/commands/skills.js +86 -0
- package/src/commands/sonar.js +53 -0
- package/src/commands/standby.js +117 -0
- package/src/commands/start.js +121 -0
- package/src/commands/status.js +36 -0
- package/src/commands/sync.js +103 -0
- package/src/commands/telemetry.js +70 -0
- package/src/commands/tournament.js +85 -0
- package/src/commands/triage.js +78 -0
- package/src/commands/undo.js +62 -0
- package/src/commands/watch.js +46 -0
- package/src/commands/webperf.js +162 -0
- package/src/commands/worktree.js +76 -0
- package/src/config/defaults.js +270 -0
- package/src/config/loader.js +204 -0
- package/src/config/overrides.js +220 -0
- package/src/config/role-resolver.js +171 -0
- package/src/config/schema.js +299 -0
- package/src/config/test-harness.js +78 -0
- package/src/config.js +34 -0
- package/src/domains/domain-loader.js +245 -0
- package/src/domains/domain-registry.js +140 -0
- package/src/domains/domain-synthesizer.js +129 -0
- package/src/environment/adr.js +45 -0
- package/src/environment/board-access.js +97 -0
- package/src/environment/board-select.js +59 -0
- package/src/environment/briefs.js +129 -0
- package/src/environment/issue-report.js +72 -0
- package/src/environment/mcp-wiring.js +44 -0
- package/src/environment/playbook.js +127 -0
- package/src/git/automation.js +334 -0
- package/src/git/hu-automation.js +171 -0
- package/src/git/hu-snapshot.js +10 -0
- package/src/golden/asserter.js +92 -0
- package/src/golden/loader.js +52 -0
- package/src/golden/runner.js +92 -0
- package/src/golden/schema.js +41 -0
- package/src/guards/intent-guard.js +161 -0
- package/src/guards/output-guard.js +149 -0
- package/src/guards/perf-guard.js +126 -0
- package/src/guards/policy-guard.js +90 -0
- package/src/guards/policy-resolver.js +85 -0
- package/src/guards/secret-redactor.js +71 -0
- package/src/harden/advisory.js +203 -0
- package/src/harden/alternatives.js +50 -0
- package/src/harden/check.js +81 -0
- package/src/harden/config-engine.js +128 -0
- package/src/harden/config-templates.js +122 -0
- package/src/harden/guidelines-engine.js +48 -0
- package/src/harden/guidelines-templates.js +36 -0
- package/src/harden/harden-engine.js +80 -0
- package/src/harden/harness-hooks.js +107 -0
- package/src/harden/hook-commands.js +25 -0
- package/src/harden/hook-templates.js +183 -0
- package/src/harden/interactive.js +76 -0
- package/src/harden/sentinel-hooks.js +721 -0
- package/src/harden/stack-roots.js +105 -0
- package/src/harden/test-on-push.js +38 -0
- package/src/harden/workflow-engine.js +116 -0
- package/src/harden/workflow-templates.js +285 -0
- package/src/hu/acceptance-runner.js +138 -0
- package/src/hu/auto-generator.js +358 -0
- package/src/hu/graph.js +71 -0
- package/src/hu/lazy-planner.js +109 -0
- package/src/hu/model-router.js +108 -0
- package/src/hu/parallel-executor.js +94 -0
- package/src/hu/split-validator.js +143 -0
- package/src/hu/splitting-detector.js +158 -0
- package/src/hu/splitting-generator.js +175 -0
- package/src/hu/store.js +392 -0
- package/src/hu/worktree-bootstrap.js +59 -0
- package/src/identity/bootstrap.js +48 -0
- package/src/identity/compare.js +38 -0
- package/src/identity/detect.js +51 -0
- package/src/identity/store.js +66 -0
- package/src/infrastructure/command-runner.js +44 -0
- package/src/infrastructure/environment.js +38 -0
- package/src/infrastructure/file-system-service.js +63 -0
- package/src/infrastructure/mocks.js +182 -0
- package/src/lang/chunk-go.js +94 -0
- package/src/lang/chunk-java.js +90 -0
- package/src/lang/chunk-python.js +88 -0
- package/src/lang/chunk-rust.js +102 -0
- package/src/lang/go.js +14 -0
- package/src/lang/java.js +16 -0
- package/src/lang/js.js +8 -0
- package/src/lang/python.js +14 -0
- package/src/lang/registry.js +79 -0
- package/src/lang/rust.js +14 -0
- package/src/lang/tree-sitter-loader.js +45 -0
- package/src/mcp/direct-role-runner.js +112 -0
- package/src/mcp/error-classifiers.js +66 -0
- package/src/mcp/handlers/direct-handlers.js +486 -0
- package/src/mcp/handlers/hu-handlers.js +93 -0
- package/src/mcp/handlers/management-handlers.js +265 -0
- package/src/mcp/handlers/rag-handler.js +52 -0
- package/src/mcp/handlers/run-handler.js +313 -0
- package/src/mcp/orphan-guard.js +131 -0
- package/src/mcp/preflight.js +47 -0
- package/src/mcp/progress.js +149 -0
- package/src/mcp/response-compressor.js +81 -0
- package/src/mcp/run-kj.js +135 -0
- package/src/mcp/server-handlers.js +79 -0
- package/src/mcp/server.js +66 -0
- package/src/mcp/shared-helpers.js +297 -0
- package/src/mcp/sovereignty-guard.js +112 -0
- package/src/mcp/suggest-handler.js +92 -0
- package/src/mcp/tool-arg-normalizers.js +16 -0
- package/src/mcp/tools.js +432 -0
- package/src/mutate/diff-scope.js +105 -0
- package/src/mutate/reviewer-signal.js +76 -0
- package/src/mutate/runner.js +72 -0
- package/src/mutate/tool-registry.js +90 -0
- package/src/onboarder/cache.js +24 -0
- package/src/onboarder/collectors/framework-multilang.js +64 -0
- package/src/onboarder/collectors/index.js +136 -0
- package/src/orchestrator/agent-fallback.js +81 -0
- package/src/orchestrator/brain-coordinator.js +186 -0
- package/src/orchestrator/ci-integration.js +139 -0
- package/src/orchestrator/config-init.js +510 -0
- package/src/orchestrator/direct-actions.js +217 -0
- package/src/orchestrator/drivers/error-recovery.js +287 -0
- package/src/orchestrator/drivers/init-context.js +227 -0
- package/src/orchestrator/drivers/iteration-loop.js +380 -0
- package/src/orchestrator/drivers/iteration-phases/coder-and-refactorer.js +69 -0
- package/src/orchestrator/drivers/iteration-phases/guards.js +84 -0
- package/src/orchestrator/drivers/iteration-phases/handle-approved.js +29 -0
- package/src/orchestrator/drivers/iteration-phases/quality-gates.js +114 -0
- package/src/orchestrator/drivers/iteration-phases/reviewer-gate.js +60 -0
- package/src/orchestrator/drivers/post-loop.js +383 -0
- package/src/orchestrator/drivers/pre-loop-phases/auto-hu-batch.js +136 -0
- package/src/orchestrator/drivers/pre-loop-phases/config-deprecations.js +47 -0
- package/src/orchestrator/drivers/pre-loop-phases/ensure-addyosmani-skills.js +84 -0
- package/src/orchestrator/drivers/pre-loop-phases/inject-loaded-plan.js +391 -0
- package/src/orchestrator/drivers/pre-loop.js +507 -0
- package/src/orchestrator/drivers/run-hu-batch.js +427 -0
- package/src/orchestrator/feedback-enrichment.js +140 -0
- package/src/orchestrator/feedback-queue.js +151 -0
- package/src/orchestrator/flow-control.js +170 -0
- package/src/orchestrator/flow-runner.js +364 -0
- package/src/orchestrator/fs-leak-detector.js +210 -0
- package/src/orchestrator/hu-scheduler.js +114 -0
- package/src/orchestrator/hu-sub-pipeline.js +616 -0
- package/src/orchestrator/integrations.js +81 -0
- package/src/orchestrator/iteration-gate.js +73 -0
- package/src/orchestrator/iteration-stages.js +9 -0
- package/src/orchestrator/parallel-limiter.js +74 -0
- package/src/orchestrator/pipeline-context.js +72 -0
- package/src/orchestrator/post-loop-stages.js +468 -0
- package/src/orchestrator/pre-loop-stages.js +11 -0
- package/src/orchestrator/preflight-checks.js +462 -0
- package/src/orchestrator/repair/repair-detector.js +117 -0
- package/src/orchestrator/repair/repair-runner.js +142 -0
- package/src/orchestrator/reviewer-fallback.js +45 -0
- package/src/orchestrator/role-output-compressor.js +189 -0
- package/src/orchestrator/session-journal.js +308 -0
- package/src/orchestrator/solomon-escalation.js +305 -0
- package/src/orchestrator/solomon-rules.js +212 -0
- package/src/orchestrator/stages/architect-stage.js +172 -0
- package/src/orchestrator/stages/coder-stage.js +480 -0
- package/src/orchestrator/stages/domain-curator-stage.js +82 -0
- package/src/orchestrator/stages/hu-reviewer-phases/detect-and-apply-splits.js +127 -0
- package/src/orchestrator/stages/hu-reviewer-stage.js +394 -0
- package/src/orchestrator/stages/perf-stage.js +140 -0
- package/src/orchestrator/stages/planner-stage.js +85 -0
- package/src/orchestrator/stages/rag-context-stage.js +77 -0
- package/src/orchestrator/stages/rag-preload-decisor.js +58 -0
- package/src/orchestrator/stages/research-stage.js +69 -0
- package/src/orchestrator/stages/reviewer-stage.js +422 -0
- package/src/orchestrator/stages/sonar-stage.js +421 -0
- package/src/orchestrator/stages/stage-classes.js +84 -0
- package/src/orchestrator/stages/stage-executor.js +155 -0
- package/src/orchestrator/stages/tdd-discipline-stage.js +56 -0
- package/src/orchestrator/stages/tool-judge-stage.js +53 -0
- package/src/orchestrator/stages/triage-stage.js +172 -0
- package/src/orchestrator/standby.js +71 -0
- package/src/orchestrator/verification-gate.js +183 -0
- package/src/orchestrator.js +22 -0
- package/src/plan/adr-generator.js +170 -0
- package/src/plan/adr-loader.js +60 -0
- package/src/plan/plan-executor.js +100 -0
- package/src/plan/plan-fixer.js +192 -0
- package/src/plan/plan-hu-ops.js +16 -0
- package/src/plan/plan-id.js +4 -0
- package/src/plan/plan-migrate-result.js +24 -0
- package/src/plan/plan-reviewer.js +236 -0
- package/src/plan/plan-schema.js +334 -0
- package/src/plan/plan-store.js +260 -0
- package/src/plan/plan-structural-pass.js +122 -0
- package/src/plan/plan-validation.js +4 -0
- package/src/plan/preflight-hu.js +105 -0
- package/src/plan/spec-detector.js +61 -0
- package/src/plan/tests-synthesizer.js +131 -0
- package/src/planning-game/adapter.js +108 -0
- package/src/planning-game/architect-adrs.js +45 -0
- package/src/planning-game/client.js +108 -0
- package/src/planning-game/decomposition.js +87 -0
- package/src/planning-game/pipeline-adapter.js +251 -0
- package/src/plugins/loader.js +67 -0
- package/src/policy/add.js +111 -0
- package/src/policy/decisions.js +42 -0
- package/src/policy/engine.js +82 -0
- package/src/policy/exceptions.js +60 -0
- package/src/privacy/onboarding.js +35 -0
- package/src/privacy/scan.js +120 -0
- package/src/prompts/arbiter.js +38 -0
- package/src/prompts/architect.js +103 -0
- package/src/prompts/audit.js +474 -0
- package/src/prompts/coder.js +287 -0
- package/src/prompts/diff-clip.js +27 -0
- package/src/prompts/discover.js +222 -0
- package/src/prompts/hu-reviewer.js +219 -0
- package/src/prompts/planner.js +312 -0
- package/src/prompts/prompt-layout.js +80 -0
- package/src/prompts/prompt-resolver.js +120 -0
- package/src/prompts/reviewer.js +75 -0
- package/src/prompts/rtk-snippet.js +25 -0
- package/src/prompts/spec-reviewer.js +66 -0
- package/src/prompts/split-signal.js +82 -0
- package/src/prompts/start-decision.js +52 -0
- package/src/prompts/tool-correctness-judge.js +31 -0
- package/src/prompts/triage.js +57 -0
- package/src/rag/auto-update.js +72 -0
- package/src/rag/chunker-ast.js +56 -0
- package/src/rag/chunker.js +132 -0
- package/src/rag/embedder.js +2 -0
- package/src/rag/embedders/_cloud-base.js +2 -0
- package/src/rag/embedders/cohere.js +2 -0
- package/src/rag/embedders/factory.js +2 -0
- package/src/rag/embedders/mistral.js +2 -0
- package/src/rag/embedders/onnx.js +2 -0
- package/src/rag/embedders/openai.js +2 -0
- package/src/rag/embedders/voyage.js +2 -0
- package/src/rag/eval.js +61 -0
- package/src/rag/governed-embedder.js +39 -0
- package/src/rag/indexer.js +199 -0
- package/src/rag/library.js +62 -0
- package/src/rag/ollama-capability.js +59 -0
- package/src/rag/ollama-manager.js +98 -0
- package/src/rag/onnx-fallback.js +69 -0
- package/src/rag/rerank.js +4 -0
- package/src/rag/retriever.js +2 -0
- package/src/rag/vec-store.js +17 -0
- package/src/rag/watcher.js +62 -0
- package/src/rag/where-parser.js +4 -0
- package/src/repeat-detector.js +88 -0
- package/src/review/card-first.js +99 -0
- package/src/review/card-verify.js +83 -0
- package/src/review/diff-generator.js +112 -0
- package/src/review/gate-gitignore.js +77 -0
- package/src/review/git-stash-helper.js +104 -0
- package/src/review/mutation-pregate.js +48 -0
- package/src/review/one-shot-review.js +122 -0
- package/src/review/parser.js +80 -0
- package/src/review/policy-gate.js +26 -0
- package/src/review/profiles.js +66 -0
- package/src/review/reviewer-fallback.js +125 -0
- package/src/review/schema.js +31 -0
- package/src/review/scope-filter.js +152 -0
- package/src/review/snapshot-diff.js +122 -0
- package/src/review/solomon-arbitration.js +113 -0
- package/src/review/sonar-pregate.js +63 -0
- package/src/review/tdd-discipline.js +90 -0
- package/src/review/tdd-policy.js +69 -0
- package/src/review/tests-with-code.js +33 -0
- package/src/review/verdict-store.js +87 -0
- package/src/review/workspace.js +21 -0
- package/src/roles/agent-role.js +194 -0
- package/src/roles/architect-role.js +77 -0
- package/src/roles/audit-role.js +258 -0
- package/src/roles/base-role.js +165 -0
- package/src/roles/coder-role.js +107 -0
- package/src/roles/commiter-role.js +110 -0
- package/src/roles/discover-role.js +81 -0
- package/src/roles/domain-curator-role.js +141 -0
- package/src/roles/hu-reviewer-role.js +64 -0
- package/src/roles/impeccable-role.js +85 -0
- package/src/roles/index.js +18 -0
- package/src/roles/karajan-brain-role.js +134 -0
- package/src/roles/onboarder-role.js +61 -0
- package/src/roles/perf-role.js +122 -0
- package/src/roles/planner-role.js +151 -0
- package/src/roles/refactorer-role.js +30 -0
- package/src/roles/repairer-role.js +181 -0
- package/src/roles/researcher-role.js +70 -0
- package/src/roles/reviewer-role.js +104 -0
- package/src/roles/security-role.js +73 -0
- package/src/roles/solomon-role.js +265 -0
- package/src/roles/sonar-role.js +70 -0
- package/src/roles/spec-reviewer-role.js +106 -0
- package/src/roles/tester-role.js +235 -0
- package/src/roles/tool-correctness-judge-role.js +78 -0
- package/src/roles/triage-role.js +99 -0
- package/src/session/journal/decisions-writer.js +200 -0
- package/src/session/journal/iteration-logger.js +194 -0
- package/src/session/journal/summary-writer.js +320 -0
- package/src/session/journal/tree-writer.js +164 -0
- package/src/session/journal/write-all.js +89 -0
- package/src/session/mutators.js +339 -0
- package/src/session/runtime-overrides.js +59 -0
- package/src/session/store.js +106 -0
- package/src/session-cleanup.js +116 -0
- package/src/skills/addyosmani-catalog.js +315 -0
- package/src/skills/addyosmani-role-map.js +139 -0
- package/src/skills/openskills-client.js +157 -0
- package/src/skills/semantic-detector.js +167 -0
- package/src/skills/skill-detector.js +385 -0
- package/src/skills/skill-loader.js +219 -0
- package/src/skills/skills-cache.js +128 -0
- package/src/sonar/api.js +128 -0
- package/src/sonar/cloud-scanner.js +78 -0
- package/src/sonar/config-resolver.js +88 -0
- package/src/sonar/credentials.js +60 -0
- package/src/sonar/discovery.js +124 -0
- package/src/sonar/enforcer.js +19 -0
- package/src/sonar/issue-filter.js +12 -0
- package/src/sonar/manager.js +181 -0
- package/src/sonar/project-key.js +120 -0
- package/src/sonar/scanner.js +307 -0
- package/src/sonar/token-bootstrap.js +205 -0
- package/src/sonar/token-recovery.js +67 -0
- package/src/spec-review/refine-loop.js +58 -0
- package/src/spec-review/run-spec-review.js +119 -0
- package/src/start/assessment.js +74 -0
- package/src/start/maturity.js +73 -0
- package/src/start/start-decider-role.js +79 -0
- package/src/start/sweep.js +157 -0
- package/src/sync/apply-canvas-patch.js +55 -0
- package/src/sync/detect-drift.js +113 -0
- package/src/tournament/crown.js +88 -0
- package/src/tournament/judge.js +150 -0
- package/src/tournament/run.js +142 -0
- package/src/tournament/scoreboard.js +124 -0
- package/src/tracker-bootstrap.js +44 -0
- package/src/types/agent.js +55 -0
- package/src/types/config.js +114 -0
- package/src/types/hu.js +47 -0
- package/src/types/index.js +38 -0
- package/src/types/policy.js +43 -0
- package/src/types/session.js +75 -0
- package/src/types/solomon.js +87 -0
- package/src/types/stage.js +68 -0
- package/src/utils/agent-detect.js +93 -0
- package/src/utils/ai-trash.js +48 -0
- package/src/utils/async-lock.js +31 -0
- package/src/utils/atomic-write.js +6 -0
- package/src/utils/banner.js +66 -0
- package/src/utils/binary-sources.js +70 -0
- package/src/utils/board-prompt-bridge.js +108 -0
- package/src/utils/budget.js +229 -0
- package/src/utils/cli-ask-question.js +93 -0
- package/src/utils/cli-progress.js +220 -0
- package/src/utils/cli-run-log.js +83 -0
- package/src/utils/cwd-confirm.js +39 -0
- package/src/utils/derive-project-name-from-cwd.js +119 -0
- package/src/utils/display/event-handlers.js +403 -0
- package/src/utils/display/formatters.js +132 -0
- package/src/utils/display/header.js +47 -0
- package/src/utils/display/resume-hint.js +41 -0
- package/src/utils/display/session-summary.js +118 -0
- package/src/utils/display/solomon.js +42 -0
- package/src/utils/display/spec-findings.js +44 -0
- package/src/utils/doc-links.js +29 -0
- package/src/utils/docker-install.js +34 -0
- package/src/utils/escape-regexp.js +15 -0
- package/src/utils/events.js +35 -0
- package/src/utils/fs.js +19 -0
- package/src/utils/garbage-collector.js +481 -0
- package/src/utils/git.js +279 -0
- package/src/utils/home-migration.js +87 -0
- package/src/utils/injection-guard.js +186 -0
- package/src/utils/install-hints.js +180 -0
- package/src/utils/json-extract.js +64 -0
- package/src/utils/locale.js +59 -0
- package/src/utils/logger.js +96 -0
- package/src/utils/managed-markers.js +93 -0
- package/src/utils/manifest-sniff.js +82 -0
- package/src/utils/messages.js +61 -0
- package/src/utils/model-selector.js +107 -0
- package/src/utils/os-detect.js +79 -0
- package/src/utils/paths.js +13 -0
- package/src/utils/pending-user-action.js +95 -0
- package/src/utils/port-check.js +6 -0
- package/src/utils/port-occupant.js +96 -0
- package/src/utils/pricing.js +29 -0
- package/src/utils/process.js +4 -0
- package/src/utils/project-detect.js +160 -0
- package/src/utils/prompt-project-name.js +35 -0
- package/src/utils/provider-env.js +116 -0
- package/src/utils/qmd-collection.js +72 -0
- package/src/utils/qmd-detect.js +18 -0
- package/src/utils/qmd-install.js +37 -0
- package/src/utils/quota-simulator.js +56 -0
- package/src/utils/rate-limit-detector.js +181 -0
- package/src/utils/repo-cleaner.js +79 -0
- package/src/utils/retry.js +88 -0
- package/src/utils/role-assigner.js +137 -0
- package/src/utils/role-env.js +58 -0
- package/src/utils/rtk-detect.js +18 -0
- package/src/utils/rtk-install.js +38 -0
- package/src/utils/rtk-wrapper.js +87 -0
- package/src/utils/run-context.js +75 -0
- package/src/utils/run-log.js +217 -0
- package/src/utils/run-registry.js +9 -0
- package/src/utils/shared-paths.js +12 -0
- package/src/utils/squeezr-detect.js +21 -0
- package/src/utils/squeezr-install.js +37 -0
- package/src/utils/stack-detect.js +135 -0
- package/src/utils/stall-detector.js +159 -0
- package/src/utils/status-dashboard.js +254 -0
- package/src/utils/task-file.js +109 -0
- package/src/utils/telemetry.js +124 -0
- package/src/utils/templates-root.js +61 -0
- package/src/utils/tool-call-extractor.js +56 -0
- package/src/utils/tool-governor.js +116 -0
- package/src/utils/tool-installer.js +93 -0
- package/src/utils/update-check.js +280 -0
- package/src/utils/vector-store-orphans.js +89 -0
- package/src/utils/welcome.js +47 -0
- package/src/utils/with-timeout.js +42 -0
- package/src/utils/wizard.js +47 -0
- package/src/webperf/cwv-gate.js +94 -0
- package/src/webperf/devtools-detect.js +112 -0
- package/src/webperf/scanner.js +209 -0
- package/src/webperf/webperf-role-integration.js +66 -0
- package/templates/coder-rules.md +45 -0
- package/templates/docker-compose.sonar.yml +60 -0
- package/templates/domains/example-dental.md +57 -0
- package/templates/kj.config.yml +128 -0
- package/templates/review-rules.md +17 -0
- package/templates/roles/architect/anthropic.md +74 -0
- package/templates/roles/architect/default.md +72 -0
- package/templates/roles/architect/google.md +61 -0
- package/templates/roles/architect/openai.md +60 -0
- package/templates/roles/architect/opencode.md +59 -0
- package/templates/roles/architect.md +76 -0
- package/templates/roles/audit.md +68 -0
- package/templates/roles/coder/anthropic.md +81 -0
- package/templates/roles/coder/default.md +78 -0
- package/templates/roles/coder/google.md +87 -0
- package/templates/roles/coder/openai.md +68 -0
- package/templates/roles/coder/opencode.md +58 -0
- package/templates/roles/coder.md +152 -0
- package/templates/roles/commiter.md +44 -0
- package/templates/roles/discover.md +167 -0
- package/templates/roles/domain-curator.md +52 -0
- package/templates/roles/hu-reviewer.md +236 -0
- package/templates/roles/impeccable-design.md +87 -0
- package/templates/roles/impeccable.md +125 -0
- package/templates/roles/karajan-brain.md +95 -0
- package/templates/roles/onboarder.md +45 -0
- package/templates/roles/planner/anthropic.md +59 -0
- package/templates/roles/planner/default.md +57 -0
- package/templates/roles/planner/google.md +75 -0
- package/templates/roles/planner/openai.md +55 -0
- package/templates/roles/planner/opencode.md +62 -0
- package/templates/roles/planner.md +61 -0
- package/templates/roles/refactorer.md +48 -0
- package/templates/roles/repairer.md +103 -0
- package/templates/roles/researcher.md +41 -0
- package/templates/roles/reviewer/anthropic.md +61 -0
- package/templates/roles/reviewer/default.md +62 -0
- package/templates/roles/reviewer/google.md +63 -0
- package/templates/roles/reviewer/openai.md +57 -0
- package/templates/roles/reviewer/opencode.md +42 -0
- package/templates/roles/reviewer-paranoid.md +38 -0
- package/templates/roles/reviewer-relaxed.md +34 -0
- package/templates/roles/reviewer-strict.md +37 -0
- package/templates/roles/reviewer.md +62 -0
- package/templates/roles/security.md +54 -0
- package/templates/roles/solomon/anthropic.md +71 -0
- package/templates/roles/solomon/default.md +83 -0
- package/templates/roles/solomon/google.md +61 -0
- package/templates/roles/solomon/openai.md +53 -0
- package/templates/roles/solomon/opencode.md +55 -0
- package/templates/roles/solomon.md +83 -0
- package/templates/roles/sonar.md +49 -0
- package/templates/roles/spec-reviewer.md +47 -0
- package/templates/roles/tester.md +50 -0
- package/templates/roles/triage.md +69 -0
- package/templates/skills/kj-architect.md +45 -0
- package/templates/skills/kj-audit.md +63 -0
- package/templates/skills/kj-board.md +16 -0
- package/templates/skills/kj-code.md +51 -0
- package/templates/skills/kj-csv-transform.md +40 -0
- package/templates/skills/kj-data-report.md +44 -0
- package/templates/skills/kj-discover.md +24 -0
- package/templates/skills/kj-rag-query.md +50 -0
- package/templates/skills/kj-review.md +47 -0
- package/templates/skills/kj-run.md +73 -0
- package/templates/skills/kj-security.md +49 -0
- package/templates/skills/kj-sonar.md +41 -0
- package/templates/skills/kj-sql-analysis.md +40 -0
- package/templates/skills/kj-test.md +40 -0
- package/templates/workflows/automerge.yml +30 -0
- package/templates/workflows/houston-override.yml +46 -0
- package/templates/workflows/kj-ci-gateway.yml +58 -0
- package/vendor/tree-sitter-grammars/README.md +21 -0
- package/vendor/tree-sitter-grammars/go.wasm +0 -0
- package/vendor/tree-sitter-grammars/java.wasm +0 -0
- package/vendor/tree-sitter-grammars/python.wasm +0 -0
- package/vendor/tree-sitter-grammars/rust.wasm +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# kj-rag-query — Query Project RAG index
|
|
2
|
+
|
|
3
|
+
Query the Project RAG (vector store + embedder) and return the top-K most relevant chunks of the indexed project: plans, onboarding briefs, and (optionally) source code.
|
|
4
|
+
|
|
5
|
+
Use this when you need prior context about the project before deciding, refactoring, planning, or coding — without scanning the filesystem manually.
|
|
6
|
+
|
|
7
|
+
## Your task
|
|
8
|
+
|
|
9
|
+
$ARGUMENTS
|
|
10
|
+
|
|
11
|
+
## How it works
|
|
12
|
+
|
|
13
|
+
This skill is a thin wrapper over the Karajan CLI:
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
kj rag query "<text>" [--scope <all|plans|onboarding|code>] [--top-k <n>] [--json]
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Parse `$ARGUMENTS` as the natural-language query plus optional flags:
|
|
20
|
+
|
|
21
|
+
- `--scope <s>`: restrict retrieval to one source bucket. Default: `all`.
|
|
22
|
+
- `plans` → indexed plan JSON files (HU titles, scope, blocked_by).
|
|
23
|
+
- `onboarding` → onboarding briefs from `~/.karajan/onboarding/`.
|
|
24
|
+
- `code` → indexed source files (only present if user ran `kj rag index --with-sources`).
|
|
25
|
+
- `--top-k <n>`: number of chunks to return. Default: 3. Max recommended: 10.
|
|
26
|
+
- `--json`: emit raw JSON (use when piping into another tool).
|
|
27
|
+
|
|
28
|
+
If `$ARGUMENTS` is empty, print a one-line usage hint and stop.
|
|
29
|
+
|
|
30
|
+
## Behavior contract
|
|
31
|
+
|
|
32
|
+
1. **Empty store**: if the CLI replies with `empty: true`, do NOT block the conversation. Tell the user once: "RAG index is empty — run `kj rag index` to seed it" and continue without prior context.
|
|
33
|
+
2. **Zero hits**: if the store has chunks but no match scored above threshold, say "no relevant prior context" and continue.
|
|
34
|
+
3. **Hits returned**: render each as a short block — `[score] source — snippet` — and use them as background context for the user's actual question. Do NOT dump raw JSON unless `--json` was passed.
|
|
35
|
+
4. **Never re-validate flags**. Pass `--scope`/`--top-k` straight to the CLI; the CLI is the source of truth.
|
|
36
|
+
|
|
37
|
+
## Examples
|
|
38
|
+
|
|
39
|
+
User: `/kj-rag-query how does the retriever rank chunks`
|
|
40
|
+
→ `kj rag query "how does the retriever rank chunks"`
|
|
41
|
+
|
|
42
|
+
User: `/kj-rag-query auth flow --scope plans --top-k 5`
|
|
43
|
+
→ `kj rag query "auth flow" --scope plans --top-k 5`
|
|
44
|
+
|
|
45
|
+
User: `/kj-rag-query --scope onboarding architecture`
|
|
46
|
+
→ `kj rag query "architecture" --scope onboarding`
|
|
47
|
+
|
|
48
|
+
## Why this exists (Camino B)
|
|
49
|
+
|
|
50
|
+
Hosts that load Karajan as Skills (Claude Code without MCP, Cursor without MCP) cannot reach the `kj_rag_query` MCP tool. This skill bridges that gap with the same retrieval contract.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# kj-review — Code Review with Quality Gates
|
|
2
|
+
|
|
3
|
+
Review the current changes against task requirements and quality standards.
|
|
4
|
+
|
|
5
|
+
## Your task
|
|
6
|
+
|
|
7
|
+
Review the changes in the current branch: $ARGUMENTS
|
|
8
|
+
|
|
9
|
+
## Steps
|
|
10
|
+
|
|
11
|
+
1. Run `git diff main...HEAD` (or appropriate base branch) to see all changes
|
|
12
|
+
2. Review each changed file against the priorities below
|
|
13
|
+
3. Report findings clearly
|
|
14
|
+
|
|
15
|
+
## Review priorities (in order)
|
|
16
|
+
|
|
17
|
+
1. **Security** — vulnerabilities, exposed secrets, injection vectors
|
|
18
|
+
2. **Correctness** — logic errors, edge cases, broken tests
|
|
19
|
+
3. **Tests** — adequate coverage, meaningful assertions
|
|
20
|
+
4. **Architecture** — patterns, maintainability, SOLID principles
|
|
21
|
+
5. **Style** — naming, formatting (only flag if egregious)
|
|
22
|
+
|
|
23
|
+
## Scope constraint
|
|
24
|
+
|
|
25
|
+
- **ONLY review files present in the diff** — do not flag issues in untouched files
|
|
26
|
+
- Out-of-scope issues go as suggestions, never as blocking
|
|
27
|
+
|
|
28
|
+
## Guardrails (auto-check)
|
|
29
|
+
|
|
30
|
+
Flag as BLOCKING if any of these are detected in the diff:
|
|
31
|
+
- [ ] Hardcoded credentials, API keys, or secrets
|
|
32
|
+
- [ ] Entire file replaced (massive deletions + additions instead of targeted edits)
|
|
33
|
+
- [ ] `eval()`, `innerHTML` with user input, SQL string concatenation
|
|
34
|
+
- [ ] Missing test changes when source files changed (TDD violation)
|
|
35
|
+
- [ ] `rm -rf`, `DROP TABLE`, `git push --force` or similar destructive operations
|
|
36
|
+
|
|
37
|
+
## Output
|
|
38
|
+
|
|
39
|
+
For each issue found:
|
|
40
|
+
- **File and line** where the issue is
|
|
41
|
+
- **Severity**: critical / major / minor
|
|
42
|
+
- **Description**: what's wrong
|
|
43
|
+
- **Suggested fix**: how to fix it
|
|
44
|
+
|
|
45
|
+
End with a clear verdict:
|
|
46
|
+
- **APPROVED** — no blocking issues found
|
|
47
|
+
- **REQUEST_CHANGES** — blocking issues listed above must be fixed
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# kj-run — Full Pipeline (Skills Mode)
|
|
2
|
+
|
|
3
|
+
Execute the complete Karajan pipeline as sequential skills.
|
|
4
|
+
|
|
5
|
+
## Your task
|
|
6
|
+
|
|
7
|
+
$ARGUMENTS
|
|
8
|
+
|
|
9
|
+
## Pipeline steps (execute in order)
|
|
10
|
+
|
|
11
|
+
### Step 1 — Discover (optional but recommended)
|
|
12
|
+
Analyze the task for gaps before coding:
|
|
13
|
+
- Identify missing requirements, ambiguities, contradictions
|
|
14
|
+
- If critical gaps found, STOP and ask the user before proceeding
|
|
15
|
+
- If ready, continue
|
|
16
|
+
|
|
17
|
+
### Step 2 — Code (with guardrails)
|
|
18
|
+
Implement the task:
|
|
19
|
+
1. **Tests first** (TDD): write/update tests before implementation
|
|
20
|
+
2. **Implement**: minimal, focused code to fulfill the task
|
|
21
|
+
3. **Verify**: run the test suite
|
|
22
|
+
4. **Security check**: no hardcoded secrets, no injection vectors, no destructive ops in the diff
|
|
23
|
+
5. **Diff check**: run `git diff` and verify only intended lines changed
|
|
24
|
+
6. If any guardrail fails, fix before proceeding
|
|
25
|
+
|
|
26
|
+
### Step 3 — Review (self-review)
|
|
27
|
+
Review your own changes against quality standards:
|
|
28
|
+
1. Run `git diff main...HEAD` (or base branch)
|
|
29
|
+
2. Check: security, correctness, tests, architecture, style (in that order)
|
|
30
|
+
3. Flag blocking issues:
|
|
31
|
+
- Hardcoded credentials or secrets
|
|
32
|
+
- Entire files overwritten instead of targeted edits
|
|
33
|
+
- Missing tests for new code
|
|
34
|
+
- SQL injection, XSS, command injection
|
|
35
|
+
- Destructive operations
|
|
36
|
+
4. If blocking issues found, fix them and re-review
|
|
37
|
+
5. If clean, proceed
|
|
38
|
+
|
|
39
|
+
### Step 4 — Test audit
|
|
40
|
+
Verify test quality:
|
|
41
|
+
1. Every changed source file has corresponding tests
|
|
42
|
+
2. Run `npm test` (or equivalent) — all must pass
|
|
43
|
+
3. No skipped tests for changed code
|
|
44
|
+
4. If tests fail, fix before proceeding
|
|
45
|
+
|
|
46
|
+
### Step 5 — Security scan
|
|
47
|
+
Quick security audit on the diff:
|
|
48
|
+
1. Scan for OWASP top 10 in changed files
|
|
49
|
+
2. Check for leaked secrets, injection vectors, missing auth
|
|
50
|
+
3. If critical/high findings, fix before proceeding
|
|
51
|
+
|
|
52
|
+
### Step 6 — Sonar (if available)
|
|
53
|
+
If SonarQube is running (`docker ps | grep sonarqube`):
|
|
54
|
+
1. Run `npx @sonar/scan`
|
|
55
|
+
2. Check quality gate
|
|
56
|
+
3. Fix blockers and critical issues
|
|
57
|
+
|
|
58
|
+
### Step 7 — Commit
|
|
59
|
+
If all steps pass:
|
|
60
|
+
1. Stage changed files: `git add <specific files>`
|
|
61
|
+
2. Commit with conventional commit message: `feat:`, `fix:`, `refactor:`, etc.
|
|
62
|
+
3. Do NOT push unless the user explicitly asks
|
|
63
|
+
|
|
64
|
+
## HU Board Integration
|
|
65
|
+
If HU Board is enabled (`hu_board.enabled: true` in config), stories and sessions
|
|
66
|
+
are automatically tracked and visible at the board URL. Run `kj board` to start it.
|
|
67
|
+
|
|
68
|
+
## Important rules
|
|
69
|
+
|
|
70
|
+
- **Never skip steps** — execute all applicable steps in order
|
|
71
|
+
- **Fix before proceeding** — if a step finds issues, fix them before moving to the next
|
|
72
|
+
- **Report progress** — after each step, briefly state what was done and the result
|
|
73
|
+
- **Stop on critical** — if a critical security or correctness issue can't be fixed, stop and report
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# kj-security — Security Audit
|
|
2
|
+
|
|
3
|
+
Perform a security audit on the current changes.
|
|
4
|
+
|
|
5
|
+
## Your task
|
|
6
|
+
|
|
7
|
+
$ARGUMENTS
|
|
8
|
+
|
|
9
|
+
## Steps
|
|
10
|
+
|
|
11
|
+
1. Run `git diff main...HEAD` to see all changes
|
|
12
|
+
2. Scan for each vulnerability category below
|
|
13
|
+
3. Report findings with severity and remediation
|
|
14
|
+
|
|
15
|
+
## Vulnerability categories
|
|
16
|
+
|
|
17
|
+
### Critical
|
|
18
|
+
- [ ] Hardcoded secrets (API keys, passwords, tokens, connection strings)
|
|
19
|
+
- [ ] SQL injection (string concatenation in queries)
|
|
20
|
+
- [ ] Command injection (`exec`, `spawn` with unsanitized input)
|
|
21
|
+
- [ ] Path traversal (file operations with user-controlled paths)
|
|
22
|
+
|
|
23
|
+
### High
|
|
24
|
+
- [ ] XSS (Cross-Site Scripting) — `innerHTML`, `dangerouslySetInnerHTML` with user input
|
|
25
|
+
- [ ] Missing authentication/authorization checks on new endpoints
|
|
26
|
+
- [ ] Insecure deserialization
|
|
27
|
+
- [ ] SSRF (Server-Side Request Forgery) — fetch/request with user-controlled URLs
|
|
28
|
+
|
|
29
|
+
### Medium
|
|
30
|
+
- [ ] Missing input validation at system boundaries
|
|
31
|
+
- [ ] Verbose error messages that leak internal details
|
|
32
|
+
- [ ] Missing CSRF protection on state-changing endpoints
|
|
33
|
+
- [ ] Insecure random number generation for security purposes
|
|
34
|
+
|
|
35
|
+
### Low
|
|
36
|
+
- [ ] Missing security headers
|
|
37
|
+
- [ ] Dependencies with known vulnerabilities (check `npm audit`)
|
|
38
|
+
- [ ] Console.log with sensitive data
|
|
39
|
+
|
|
40
|
+
## Output
|
|
41
|
+
|
|
42
|
+
For each finding:
|
|
43
|
+
- **Severity**: critical / high / medium / low
|
|
44
|
+
- **File and line**: where the issue is
|
|
45
|
+
- **Category**: which vulnerability type
|
|
46
|
+
- **Description**: what's wrong
|
|
47
|
+
- **Remediation**: specific fix
|
|
48
|
+
|
|
49
|
+
End with a summary: total findings by severity, and whether the code is safe to ship.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# kj-sonar — Static Analysis
|
|
2
|
+
|
|
3
|
+
Run SonarQube/SonarCloud analysis and fix any issues found.
|
|
4
|
+
|
|
5
|
+
## Your task
|
|
6
|
+
|
|
7
|
+
$ARGUMENTS
|
|
8
|
+
|
|
9
|
+
## Steps
|
|
10
|
+
|
|
11
|
+
1. Check if SonarQube is running: `docker ps | grep sonarqube`
|
|
12
|
+
2. If running, execute scan:
|
|
13
|
+
```bash
|
|
14
|
+
npx @sonar/scan -Dsonar.host.url=http://localhost:9000 -Dsonar.projectKey=<project-key>
|
|
15
|
+
```
|
|
16
|
+
3. Check quality gate status:
|
|
17
|
+
```bash
|
|
18
|
+
curl -s -u admin:admin "http://localhost:9000/api/qualitygates/project_status?projectKey=<project-key>"
|
|
19
|
+
```
|
|
20
|
+
4. List issues:
|
|
21
|
+
```bash
|
|
22
|
+
curl -s -u admin:admin "http://localhost:9000/api/issues/search?projectKeys=<project-key>&statuses=OPEN&ps=50"
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## If SonarQube is not available
|
|
26
|
+
|
|
27
|
+
Perform manual static analysis checks:
|
|
28
|
+
- [ ] Cognitive complexity — functions over 15 should be refactored
|
|
29
|
+
- [ ] Duplicated code blocks (3+ lines repeated)
|
|
30
|
+
- [ ] Unused imports and variables
|
|
31
|
+
- [ ] Empty catch blocks without comments
|
|
32
|
+
- [ ] Nested ternary operations
|
|
33
|
+
- [ ] `console.log` left in production code
|
|
34
|
+
|
|
35
|
+
## Output
|
|
36
|
+
|
|
37
|
+
Report:
|
|
38
|
+
- Quality gate status (passed/failed)
|
|
39
|
+
- Issues found by severity (blocker, critical, major, minor)
|
|
40
|
+
- For each issue: file, line, rule, and suggested fix
|
|
41
|
+
- Fix critical and blocker issues before proceeding
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# kj-sql-analysis — SQL Analysis & Generation
|
|
2
|
+
|
|
3
|
+
Generate and review SQL queries with a focus on correctness, performance, and security.
|
|
4
|
+
|
|
5
|
+
## Your task
|
|
6
|
+
|
|
7
|
+
$ARGUMENTS
|
|
8
|
+
|
|
9
|
+
## Coder instructions
|
|
10
|
+
|
|
11
|
+
When writing or modifying SQL queries:
|
|
12
|
+
|
|
13
|
+
1. **Parameterized queries only** — never concatenate user input into SQL strings. Use prepared statements or parameterized queries (`$1`, `?`, `:param`) to prevent injection.
|
|
14
|
+
2. **Comment complex logic** — add inline comments explaining non-obvious JOINs, subqueries, CTEs, and window functions.
|
|
15
|
+
3. **Validate against schema** — if a schema or migration files are available, verify that table names, column names, and types match the actual schema.
|
|
16
|
+
4. **Prefer explicit column lists** — avoid `SELECT *`; list the columns you need.
|
|
17
|
+
5. **Use aliases consistently** — when joining multiple tables, alias every table and prefix all column references.
|
|
18
|
+
6. **Index-aware queries** — structure WHERE clauses and JOINs to leverage existing indexes. Avoid wrapping indexed columns in functions.
|
|
19
|
+
7. **Limit result sets** — add `LIMIT` / `TOP` for queries that could return unbounded rows unless the full result is explicitly needed.
|
|
20
|
+
8. **Handle NULLs explicitly** — use `COALESCE`, `IS NULL`, or `IS NOT NULL` where NULL values could affect logic.
|
|
21
|
+
|
|
22
|
+
## Reviewer checklist
|
|
23
|
+
|
|
24
|
+
When reviewing SQL-related code, check for:
|
|
25
|
+
|
|
26
|
+
- [ ] **Injection risk** — any string concatenation or template literals building SQL?
|
|
27
|
+
- [ ] **N+1 queries** — loops executing individual queries instead of a single batch/join?
|
|
28
|
+
- [ ] **Missing indexes** — queries filtering or joining on columns without indexes?
|
|
29
|
+
- [ ] **Correct JOINs** — LEFT vs INNER vs CROSS used intentionally? Accidental cartesian products?
|
|
30
|
+
- [ ] **Transaction safety** — multi-statement operations wrapped in transactions where needed?
|
|
31
|
+
- [ ] **Schema alignment** — column names, types, and constraints match the current schema?
|
|
32
|
+
- [ ] **Performance** — unnecessary subqueries that could be CTEs or JOINs? Missing LIMIT on large tables?
|
|
33
|
+
- [ ] **NULL handling** — aggregations, comparisons, and JOINs account for NULL values?
|
|
34
|
+
|
|
35
|
+
## Output
|
|
36
|
+
|
|
37
|
+
Provide the SQL queries with:
|
|
38
|
+
- Inline comments for complex sections
|
|
39
|
+
- Explanation of the query plan and expected performance characteristics
|
|
40
|
+
- Any schema changes needed (new indexes, columns, tables)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# kj-test — Test Quality Audit
|
|
2
|
+
|
|
3
|
+
Evaluate test coverage and quality for the current changes.
|
|
4
|
+
|
|
5
|
+
## Your task
|
|
6
|
+
|
|
7
|
+
$ARGUMENTS
|
|
8
|
+
|
|
9
|
+
## Steps
|
|
10
|
+
|
|
11
|
+
1. Run `git diff main...HEAD` to identify changed source files
|
|
12
|
+
2. For each changed source file, find the corresponding test file
|
|
13
|
+
3. Run the test suite and check results
|
|
14
|
+
4. Evaluate test quality
|
|
15
|
+
|
|
16
|
+
## Checks
|
|
17
|
+
|
|
18
|
+
### Coverage
|
|
19
|
+
- [ ] Every changed source file has a corresponding test file
|
|
20
|
+
- [ ] New functions/methods have at least one test
|
|
21
|
+
- [ ] Edge cases are covered (null, empty, boundary values)
|
|
22
|
+
|
|
23
|
+
### Quality
|
|
24
|
+
- [ ] Tests have meaningful assertions (not just "no error thrown")
|
|
25
|
+
- [ ] Test descriptions clearly state what is being tested
|
|
26
|
+
- [ ] No tests that always pass (e.g., empty test body, `expect(true).toBe(true)`)
|
|
27
|
+
- [ ] Mocks are minimal — prefer real implementations where feasible
|
|
28
|
+
|
|
29
|
+
### Execution
|
|
30
|
+
- [ ] Run `npm test` (or project equivalent) and report results
|
|
31
|
+
- [ ] All tests pass
|
|
32
|
+
- [ ] No skipped tests (`.skip`) for the changed code
|
|
33
|
+
|
|
34
|
+
## Output
|
|
35
|
+
|
|
36
|
+
Report:
|
|
37
|
+
- Test files found/missing for each changed source file
|
|
38
|
+
- Test execution results (pass/fail count)
|
|
39
|
+
- Quality issues found
|
|
40
|
+
- Suggestions for improving coverage
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Auto-merge PRs approved by Karajan CI reviewer.
|
|
2
|
+
# Merges when kj-reviewer[bot] approves and all checks pass.
|
|
3
|
+
|
|
4
|
+
name: Auto-merge (Karajan CI)
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
pull_request_review:
|
|
8
|
+
types: [submitted]
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: write
|
|
12
|
+
pull-requests: write
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
automerge:
|
|
16
|
+
if: >
|
|
17
|
+
github.event.review.state == 'approved' &&
|
|
18
|
+
contains(github.event.review.user.login, 'kj-reviewer')
|
|
19
|
+
runs-on: ubuntu-latest
|
|
20
|
+
steps:
|
|
21
|
+
- name: Enable auto-merge
|
|
22
|
+
uses: actions/github-script@v7
|
|
23
|
+
with:
|
|
24
|
+
script: |
|
|
25
|
+
await github.rest.pulls.merge({
|
|
26
|
+
owner: context.repo.owner,
|
|
27
|
+
repo: context.repo.repo,
|
|
28
|
+
pull_number: context.payload.pull_request.number,
|
|
29
|
+
merge_method: 'squash'
|
|
30
|
+
});
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Houston Override — allows a human to force-approve a PR by commenting "/houston approve".
|
|
2
|
+
# Bypasses Karajan CI's REQUEST_CHANGES review.
|
|
3
|
+
|
|
4
|
+
name: Houston Override
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
issue_comment:
|
|
8
|
+
types: [created]
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
pull-requests: write
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
override:
|
|
15
|
+
if: >
|
|
16
|
+
github.event.issue.pull_request &&
|
|
17
|
+
contains(github.event.comment.body, '/houston approve')
|
|
18
|
+
runs-on: ubuntu-latest
|
|
19
|
+
steps:
|
|
20
|
+
- name: Dismiss Karajan CI review and approve
|
|
21
|
+
uses: actions/github-script@v7
|
|
22
|
+
with:
|
|
23
|
+
script: |
|
|
24
|
+
const { owner, repo } = context.repo;
|
|
25
|
+
const pr_number = context.payload.issue.number;
|
|
26
|
+
|
|
27
|
+
// Find and dismiss kj-reviewer reviews
|
|
28
|
+
const reviews = await github.rest.pulls.listReviews({
|
|
29
|
+
owner, repo, pull_number: pr_number
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
for (const review of reviews.data) {
|
|
33
|
+
if (review.user.login.includes('kj-reviewer') && review.state === 'CHANGES_REQUESTED') {
|
|
34
|
+
await github.rest.pulls.dismissReview({
|
|
35
|
+
owner, repo, pull_number: pr_number, review_id: review.id,
|
|
36
|
+
message: `Dismissed by Houston Override (${context.payload.comment.user.login})`
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Approve the PR
|
|
42
|
+
await github.rest.pulls.createReview({
|
|
43
|
+
owner, repo, pull_number: pr_number,
|
|
44
|
+
event: 'APPROVE',
|
|
45
|
+
body: `Houston Override by @${context.payload.comment.user.login}`
|
|
46
|
+
});
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Karajan CI Gateway — publishes PR comments and reviews from repository_dispatch events.
|
|
2
|
+
# Triggered by Karajan Code pipeline via `gh api repos/{owner}/{repo}/dispatches`.
|
|
3
|
+
#
|
|
4
|
+
# Required secrets:
|
|
5
|
+
# KJ_CI_APP_ID — GitHub App ID for kj-reviewer
|
|
6
|
+
# KJ_CI_PRIVATE_KEY — PEM private key for the GitHub App
|
|
7
|
+
|
|
8
|
+
name: Karajan CI Gateway
|
|
9
|
+
|
|
10
|
+
on:
|
|
11
|
+
repository_dispatch:
|
|
12
|
+
types:
|
|
13
|
+
- kj-comment
|
|
14
|
+
- kj-review
|
|
15
|
+
|
|
16
|
+
permissions:
|
|
17
|
+
contents: read
|
|
18
|
+
pull-requests: write
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
gateway:
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
steps:
|
|
24
|
+
- name: Generate App Token
|
|
25
|
+
id: app-token
|
|
26
|
+
uses: actions/create-github-app-token@v1
|
|
27
|
+
with:
|
|
28
|
+
app-id: ${{ secrets.KJ_CI_APP_ID }}
|
|
29
|
+
private-key: ${{ secrets.KJ_CI_PRIVATE_KEY }}
|
|
30
|
+
|
|
31
|
+
- name: Post Comment
|
|
32
|
+
if: github.event.action == 'kj-comment'
|
|
33
|
+
uses: actions/github-script@v7
|
|
34
|
+
with:
|
|
35
|
+
github-token: ${{ steps.app-token.outputs.token }}
|
|
36
|
+
script: |
|
|
37
|
+
const { pr_number, agent, body } = context.payload.client_payload;
|
|
38
|
+
await github.rest.issues.createComment({
|
|
39
|
+
owner: context.repo.owner,
|
|
40
|
+
repo: context.repo.repo,
|
|
41
|
+
issue_number: pr_number,
|
|
42
|
+
body: `**${agent}** (via Karajan CI)\n\n${body}`
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
- name: Submit Review
|
|
46
|
+
if: github.event.action == 'kj-review'
|
|
47
|
+
uses: actions/github-script@v7
|
|
48
|
+
with:
|
|
49
|
+
github-token: ${{ steps.app-token.outputs.token }}
|
|
50
|
+
script: |
|
|
51
|
+
const { pr_number, event, body, agent } = context.payload.client_payload;
|
|
52
|
+
await github.rest.pulls.createReview({
|
|
53
|
+
owner: context.repo.owner,
|
|
54
|
+
repo: context.repo.repo,
|
|
55
|
+
pull_number: pr_number,
|
|
56
|
+
event: event,
|
|
57
|
+
body: `**${agent}** (via Karajan CI)\n\n${body}`
|
|
58
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Vendored tree-sitter grammars
|
|
2
|
+
|
|
3
|
+
WASM binaries used by `src/lang/tree-sitter-loader.js`. Vendored (rather
|
|
4
|
+
than pulled as runtime deps) so the npm package and the SEA binary ship
|
|
5
|
+
exactly the grammars we support — adding all of `@vscode/tree-sitter-wasm`
|
|
6
|
+
would balloon the install by ~22 MB for languages we never chunk.
|
|
7
|
+
|
|
8
|
+
Source: extracted from `@vscode/tree-sitter-wasm@0.3.1`. That package
|
|
9
|
+
re-builds upstream `tree-sitter-*` grammars against the tree-sitter
|
|
10
|
+
0.25.x ABI, which matches the runtime `web-tree-sitter@0.26.x` we depend
|
|
11
|
+
on. Older prebuilds (e.g. `tree-sitter-wasms@0.1.13`) target an older ABI
|
|
12
|
+
and fail to load.
|
|
13
|
+
|
|
14
|
+
Re-extract with:
|
|
15
|
+
|
|
16
|
+
npm pack @vscode/tree-sitter-wasm
|
|
17
|
+
tar -xzf vscode-tree-sitter-wasm-*.tgz
|
|
18
|
+
cp package/wasm/tree-sitter-python.wasm vendor/tree-sitter-grammars/python.wasm
|
|
19
|
+
cp package/wasm/tree-sitter-rust.wasm vendor/tree-sitter-grammars/rust.wasm
|
|
20
|
+
cp package/wasm/tree-sitter-go.wasm vendor/tree-sitter-grammars/go.wasm
|
|
21
|
+
cp package/wasm/tree-sitter-java.wasm vendor/tree-sitter-grammars/java.wasm
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|