forge-workflow 0.0.9 → 0.1.0-beta.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/.claude/rules/{greptile-review-process.md → review-process.md} +56 -41
- package/.claude/scripts/{greptile-resolve.sh → review-resolve.sh} +13 -3
- package/.cursor/rules/permissions-guidance.mdc +2 -2
- package/.forge/hooks/check-tdd.js +3 -0
- package/.forge/hooks/forge-native-hook.js +245 -0
- package/.forge/protected-paths.yaml +157 -0
- package/AGENTS.md +151 -61
- package/CHANGELOG.md +681 -0
- package/CLAUDE.md +9 -106
- package/QUICKSTART.md +171 -0
- package/README.md +271 -363
- package/bin/forge-cmd.js +120 -9
- package/bin/forge-preflight.js +26 -5
- package/bin/forge.js +466 -489
- package/docs/INDEX.md +93 -0
- package/docs/PROJECT_DESIGN.md +685 -0
- package/docs/architecture/index.md +66 -0
- package/docs/architecture/notes/README.md +35 -0
- package/docs/architecture/subsystems/README.md +46 -0
- package/docs/{TOOLCHAIN.md → forge/TOOLCHAIN.md} +56 -47
- package/docs/forge/VALIDATION.md +82 -0
- package/docs/{AGENT_INSTALL_PROMPT.md → guides/AGENT_INSTALL_PROMPT.md} +3 -3
- package/docs/guides/BEADS_GITHUB_SYNC.md +32 -0
- package/docs/{ENHANCED_ONBOARDING.md → guides/ENHANCED_ONBOARDING.md} +16 -12
- package/docs/guides/GREPTILE_SETUP.md +46 -0
- package/docs/guides/MANUAL_REVIEW_GUIDE.md +58 -0
- package/docs/guides/MIGRATION.md +56 -0
- package/docs/guides/SETUP.md +118 -0
- package/docs/guides/SUPPORT.md +185 -0
- package/docs/guides/WORKFLOW_TEMPLATES.md +74 -0
- package/docs/guides/memory-backends.md +183 -0
- package/docs/reference/ADAPTERS.md +128 -0
- package/docs/reference/AGENT_SKILL_PARITY.md +175 -0
- package/docs/reference/COMMANDS.md +205 -0
- package/docs/reference/DECISION_DRIFT_GUARDS.md +97 -0
- package/docs/{EXAMPLES.md → reference/EXAMPLES.md} +7 -5
- package/docs/reference/FORGE_KERNEL_STORAGE_MODEL.md +135 -0
- package/docs/reference/HERMES_INTEGRATION.md +118 -0
- package/docs/reference/INSIGHTS_RECAP.md +63 -0
- package/docs/reference/INSTALL.md +164 -0
- package/docs/reference/KERNEL_TAXONOMY_VALIDATION.md +161 -0
- package/docs/reference/PROTECTED_PATH_MANIFEST.md +25 -0
- package/docs/reference/RELEASE.md +68 -0
- package/docs/reference/RESEARCH_TEMPLATE.md +292 -0
- package/docs/{ROADMAP.md → reference/ROADMAP.md} +12 -9
- package/docs/reference/SKILLS.md +35 -0
- package/docs/reference/STATUS_BOARD.md +80 -0
- package/docs/reference/TEMPLATES.md +106 -0
- package/docs/reference/TOOLCHAIN.md +658 -0
- package/docs/reference/VALIDATION.md +82 -0
- package/docs/reference/agent-permissions.md +169 -0
- package/docs/reference/beads-to-kernel-migration-ux.md +61 -0
- package/docs/reference/control-plane-guarantees.md +125 -0
- package/docs/reference/dependency-chain.md +331 -0
- package/docs/reference/forge-kernel-issue-command-contract.md +161 -0
- package/docs/reference/forge-kernel-schema.md +72 -0
- package/docs/reference/kernel-conflict-evaluators.md +27 -0
- package/docs/reference/patch-md-format.md +77 -0
- package/docs/reference/protected-state-surfaces.md +59 -0
- package/docs/reference/shepherd.md +115 -0
- package/docs/reference/superpowers-analysis.md +320 -0
- package/docs/reference/superpowers-integration-options.md +404 -0
- package/docs/reference/test-environment.md +519 -0
- package/docs/reference/upgrade-safety.md +59 -0
- package/lefthook.yml +18 -0
- package/lib/adapter-cli.js +307 -0
- package/lib/adapters/beads-issue-adapter.js +127 -0
- package/lib/adapters/beads-kernel-compat.js +1042 -0
- package/lib/adapters/greptile-review-adapter.js +141 -0
- package/lib/adapters/kernel-issue-adapter.js +101 -0
- package/lib/adapters/pr-state-adapter.js +484 -0
- package/lib/adoption-profiles.js +126 -0
- package/lib/agents/README.md +2 -6
- package/lib/agents/claude.plugin.json +3 -8
- package/lib/agents/codex.plugin.json +9 -1
- package/lib/agents/cursor.plugin.json +2 -6
- package/lib/agents/hermes.plugin.json +22 -0
- package/lib/agents-config.js +39 -1236
- package/lib/audit-evidence.js +282 -0
- package/lib/beads-setup.js +225 -28
- package/lib/beads-sync-scaffold.js +36 -107
- package/lib/codex-skills.js +51 -1
- package/lib/commands/_issue.js +744 -70
- package/lib/commands/_manifest.js +91 -0
- package/lib/commands/_registry.js +85 -34
- package/lib/commands/_resolve-command-opts.js +261 -0
- package/lib/commands/_serve-security.js +270 -0
- package/lib/commands/adapter.js +12 -0
- package/lib/commands/add.js +118 -0
- package/lib/commands/audit.js +70 -0
- package/lib/commands/blocked.js +5 -0
- package/lib/commands/board.js +64 -0
- package/lib/commands/claim.js +21 -2
- package/lib/commands/claims.js +7 -0
- package/lib/commands/clean.js +485 -75
- package/lib/commands/close.js +2 -2
- package/lib/commands/comment.js +5 -0
- package/lib/commands/control.js +148 -0
- package/lib/commands/create.js +2 -2
- package/lib/commands/dev.js +185 -7
- package/lib/commands/doc-gate.js +336 -0
- package/lib/commands/doctor.js +156 -0
- package/lib/commands/explain.js +15 -0
- package/lib/commands/export.js +237 -0
- package/lib/commands/gate.js +192 -0
- package/lib/commands/hooks.js +242 -0
- package/lib/commands/inbox.js +118 -0
- package/lib/commands/init.js +598 -0
- package/lib/commands/insights.js +79 -0
- package/lib/commands/issue.js +12 -1
- package/lib/commands/issues.js +66 -0
- package/lib/commands/lint.js +5 -0
- package/lib/commands/list.js +2 -2
- package/lib/commands/merge.js +312 -0
- package/lib/commands/migrate.js +523 -0
- package/lib/commands/new.js +12 -0
- package/lib/commands/options.js +241 -0
- package/lib/commands/orient.js +13 -0
- package/lib/commands/orphans.js +5 -0
- package/lib/commands/patch.js +67 -0
- package/lib/commands/plan.js +436 -24
- package/lib/commands/preflight.js +211 -0
- package/lib/commands/prime.js +13 -0
- package/lib/commands/push.js +69 -2
- package/lib/commands/ready.js +2 -2
- package/lib/commands/recall.js +116 -0
- package/lib/commands/recap.js +61 -0
- package/lib/commands/recommend.js +22 -2
- package/lib/commands/release.js +91 -0
- package/lib/commands/remember.js +74 -0
- package/lib/commands/role.js +99 -0
- package/lib/commands/serve.js +581 -0
- package/lib/commands/setup.js +851 -979
- package/lib/commands/shepherd.js +436 -0
- package/lib/commands/ship.js +23 -1
- package/lib/commands/show.js +2 -2
- package/lib/commands/stage.js +192 -0
- package/lib/commands/stale.js +5 -0
- package/lib/commands/status.js +329 -11
- package/lib/commands/sync.js +34 -46
- package/lib/commands/team.js +15 -2
- package/lib/commands/test.js +58 -7
- package/lib/commands/update.js +2 -2
- package/lib/commands/upgrade.js +47 -0
- package/lib/commands/validate.js +56 -25
- package/lib/commands/worktree.js +308 -128
- package/lib/config-writer.js +202 -0
- package/lib/control-plane.js +236 -0
- package/lib/core/runtime-graph.js +946 -0
- package/lib/dep-guard/keyword-ripple.js +184 -0
- package/lib/deprecated-sync-cleanup.js +362 -0
- package/lib/detect-agent.js +2 -28
- package/lib/detect-worktree.js +42 -17
- package/lib/doc-gate/declaration.js +177 -0
- package/lib/doc-gate/detect.js +289 -0
- package/lib/doc-gate/gate.js +375 -0
- package/lib/doc-gate/okf-config.js +128 -0
- package/lib/doc-gate/okf.js +429 -0
- package/lib/docs-command.js +1161 -6
- package/lib/forge-issues.js +697 -0
- package/lib/forge-lock.js +262 -0
- package/lib/gate-events.js +193 -0
- package/lib/global-flags.js +74 -0
- package/lib/greptile-match.js +7 -63
- package/lib/harness-capability-matrix.js +380 -0
- package/lib/hook-global-installer.js +347 -0
- package/lib/hook-renderer.js +451 -0
- package/lib/inbox.js +391 -0
- package/lib/insights.js +397 -0
- package/lib/issue-adapter.js +156 -0
- package/lib/issue-backend.js +145 -0
- package/lib/issue-render.js +220 -0
- package/lib/issue-sync/authority.js +100 -0
- package/lib/issue-sync/github-pull.js +184 -0
- package/lib/issue-sync/import-primitives.js +98 -0
- package/lib/issue-sync/legacy-link-bridge.js +436 -0
- package/lib/issue-sync/link-store.js +292 -0
- package/lib/issue-sync/project-github.js +123 -0
- package/lib/issue-sync/reconcile.js +195 -0
- package/lib/issue-sync/schema.js +126 -0
- package/lib/kernel/backing-issue.js +305 -0
- package/lib/kernel/broker.js +1218 -0
- package/lib/kernel/cli-broker-factory.js +130 -0
- package/lib/kernel/conflict-signal.js +82 -0
- package/lib/kernel/evaluators.js +195 -0
- package/lib/kernel/fs-class.js +495 -0
- package/lib/kernel/issue-command-contract.js +559 -0
- package/lib/kernel/issue-id-resolver.js +186 -0
- package/lib/kernel/lease-enforcer.js +158 -0
- package/lib/kernel/migrations.js +333 -0
- package/lib/kernel/planning-buckets-schema.js +109 -0
- package/lib/kernel/projection-jsonl-writer.js +450 -0
- package/lib/kernel/readiness-model.js +329 -0
- package/lib/kernel/schema.js +356 -0
- package/lib/kernel/sqlite-driver.js +2504 -0
- package/lib/kernel/taxonomy-validator.js +394 -0
- package/lib/lefthook-check.js +8 -4
- package/lib/lefthook-wiring.js +413 -0
- package/lib/mcp-config-renderer.js +288 -0
- package/lib/memory/graphiti-mcp.js +106 -0
- package/lib/memory/router.js +387 -0
- package/lib/memory/typed-api.js +102 -0
- package/lib/memory-digest.js +195 -0
- package/lib/merge-rules.js +395 -0
- package/lib/migrate-dry-run.js +466 -0
- package/lib/orientation.js +863 -0
- package/lib/package-manager-remediation.js +103 -0
- package/lib/package-root.js +381 -0
- package/lib/patch-intent.js +890 -0
- package/lib/plugin-catalog.js +3 -4
- package/lib/plugin-manager.js +0 -5
- package/lib/pr-bundle.js +186 -0
- package/lib/pr-monitor/differ.js +195 -0
- package/lib/pr-monitor/events.js +0 -0
- package/lib/pr-monitor/gather.js +124 -0
- package/lib/pr-monitor/journal.js +299 -0
- package/lib/pr-monitor/monitor.js +146 -0
- package/lib/pr-monitor/render-sticky.js +157 -0
- package/lib/pr-monitor/watch-lifecycle.js +95 -0
- package/lib/pr-monitor/watch.js +247 -0
- package/lib/pr-pull.js +1273 -0
- package/lib/pr-shepherd.js +494 -0
- package/lib/pr-state-validator.js +59 -0
- package/lib/preflight/gates.js +237 -0
- package/lib/preflight/runner.js +116 -0
- package/lib/project-discovery.js +0 -53
- package/lib/project-memory.js +166 -0
- package/lib/protected-path-manifest.js +281 -0
- package/lib/protected-state-surfaces.js +387 -0
- package/lib/release-readiness.js +2089 -0
- package/lib/reset.js +59 -45
- package/lib/review-adapter.js +68 -0
- package/lib/rules-sync.js +260 -0
- package/lib/runtime-health.js +332 -23
- package/lib/safety-config-renderer.js +268 -0
- package/lib/setup-action-log.js +1 -7
- package/lib/setup.js +27 -65
- package/lib/shell-utils.js +76 -6
- package/lib/skills-sync.js +330 -0
- package/lib/smart-status/conflicts.js +205 -0
- package/lib/smart-status/scoring.js +191 -0
- package/lib/status/beads-snapshot.js +145 -0
- package/lib/status/presenter.js +216 -0
- package/lib/status/snapshot.js +186 -0
- package/lib/sync-backend.js +202 -0
- package/lib/untrusted-content.js +52 -0
- package/lib/upgrade-safety.js +199 -0
- package/lib/workflow/enforce-stage.js +298 -47
- package/lib/workflow/stage-transition.js +115 -0
- package/lib/workflow/stages.js +30 -6
- package/lib/workflow/state-manager.js +159 -14
- package/lib/workflow/state.js +23 -1
- package/lib/workflow-profiles.js +17 -5
- package/package.json +46 -36
- package/rules/documentation.md +19 -0
- package/rules/kernel-tracking.md +26 -0
- package/rules/security.md +22 -0
- package/rules/tdd.md +20 -0
- package/rules/workflow.md +27 -0
- package/scripts/auto-backing-issue.js +47 -0
- package/scripts/beads-context.sh +165 -22
- package/scripts/beads-migrate-to-dolt.sh +7 -0
- package/scripts/beads-upgrade-smoke.sh +284 -0
- package/scripts/behavioral-judge.sh +115 -11
- package/scripts/benchmark.js +349 -63
- package/scripts/bootstrap-windows-tools.sh +78 -0
- package/scripts/branch-protection.js +2 -3
- package/scripts/check-agents.js +34 -137
- package/scripts/commitlint.js +3 -1
- package/scripts/conflict-detect.sh +3 -0
- package/scripts/dep-guard-analyze.js +52 -17
- package/scripts/dep-guard-keyword-ripple.js +29 -0
- package/scripts/dep-guard-render-review.js +86 -0
- package/scripts/dep-guard.sh +64 -232
- package/scripts/file-index.sh +3 -0
- package/scripts/forge-team/lib/claim.sh +34 -18
- package/scripts/forge-team/lib/dashboard.sh +61 -86
- package/scripts/forge-team/lib/epic.sh +99 -263
- package/scripts/forge-team/lib/hooks.sh +26 -28
- package/scripts/forge-team/lib/identity.sh +4 -4
- package/scripts/forge-team/lib/sync-github.sh +144 -47
- package/scripts/forge-team/lib/verify.sh +93 -83
- package/scripts/forge-team/lib/workload.sh +41 -65
- package/scripts/forge-team/tests/claim.test.sh +25 -19
- package/scripts/forge-team/tests/dashboard.test.sh +31 -46
- package/scripts/forge-team/tests/epic.test.sh +52 -71
- package/scripts/forge-team/tests/hooks.test.sh +38 -50
- package/scripts/forge-team/tests/identity.test.sh +3 -3
- package/scripts/forge-team/tests/integration.test.sh +44 -66
- package/scripts/forge-team/tests/sync-github.test.sh +183 -79
- package/scripts/forge-team/tests/verify.test.sh +37 -46
- package/scripts/forge-team/tests/workflow-integration.test.sh +4 -4
- package/scripts/forge-team/tests/workload.test.sh +32 -66
- package/scripts/gen-command-manifest.js +153 -0
- package/scripts/gen-embedded-assets.mjs +129 -0
- package/scripts/install.ps1 +139 -0
- package/scripts/install.sh +268 -0
- package/scripts/lib/beads-migrate-to-dolt.mjs +503 -0
- package/scripts/lib/release-asset.mjs +84 -0
- package/scripts/parity-check.mjs +145 -0
- package/scripts/parity-check.test.mjs +58 -0
- package/scripts/pin-agentic-workflow-images.js +112 -0
- package/scripts/pr-coordinator.sh +3 -0
- package/scripts/preflight-sonar.eslint.config.mjs +44 -0
- package/scripts/preflight.sh +108 -0
- package/scripts/protected-state-check.js +104 -0
- package/scripts/smart-status-score.js +31 -0
- package/scripts/smart-status-sessions.js +51 -0
- package/scripts/smart-status.sh +117 -369
- package/scripts/spikes/config-race-bench.js +111 -0
- package/scripts/spikes/harness-capability-matrix.js +13 -0
- package/scripts/spikes/patch-anchor-stability-bench.js +125 -0
- package/scripts/spikes/protected-path-manifest.js +20 -0
- package/scripts/spikes/skill-auto-invoke-parity.js +292 -0
- package/scripts/sync-agent-skills.js +62 -0
- package/scripts/sync-agentic-workflow.js +48 -0
- package/scripts/sync-utils.sh +3 -0
- package/scripts/test-ci-shard.js +251 -0
- package/scripts/test-dashboard.js +188 -52
- package/scripts/test-full-suite.js +186 -0
- package/scripts/test-profile.js +278 -0
- package/scripts/test.js +302 -28
- package/scripts/validate.js +143 -0
- package/scripts/validate.sh +18 -1
- package/skills/claim-safety/SKILL.md +102 -0
- package/skills/claim-safety/evals/evals.json +46 -0
- package/{.github/prompts/dev.prompt.md → skills/dev/SKILL.md} +46 -52
- package/skills/dev/evals/evals.json +50 -0
- package/skills/hermes-forge/SKILL.md +185 -0
- package/skills/hermes-forge/evals/evals.json +46 -0
- package/skills/issue-basics/SKILL.md +111 -0
- package/skills/issue-basics/evals/evals.json +46 -0
- package/skills/kernel/SKILL.md +166 -0
- package/skills/kernel/evals/evals.json +50 -0
- package/skills/memory/SKILL.md +102 -0
- package/skills/parallel-deep-research/SKILL.md +14 -11
- package/skills/parallel-deep-research/evals/evals.json +11 -27
- package/{.github/prompts/plan.prompt.md → skills/plan/SKILL.md} +134 -159
- package/skills/plan/evals/evals.json +42 -0
- package/skills/research/SKILL.md +195 -0
- package/skills/research/evals/evals.json +42 -0
- package/{.github/prompts/review.prompt.md → skills/review/SKILL.md} +98 -62
- package/skills/review/evals/evals.json +42 -0
- package/skills/rollback/SKILL.md +110 -0
- package/skills/rollback/evals/evals.json +46 -0
- package/skills/rollback/references/methods.md +204 -0
- package/{.cursor/commands/rollback.md → skills/rollback/references/workflow-integration.md} +10 -284
- package/skills/shepherd/SKILL.md +66 -0
- package/skills/shepherd/evals/evals.json +42 -0
- package/skills/ship/SKILL.md +251 -0
- package/skills/ship/evals/evals.json +42 -0
- package/skills/smith/SKILL.md +142 -0
- package/skills/smith/evals/evals.json +46 -0
- package/skills/smith/references/autonomy-and-gates.md +94 -0
- package/{.github/prompts/sonarcloud.prompt.md → skills/sonarcloud/SKILL.md} +14 -3
- package/skills/sonarcloud/evals/evals.json +46 -0
- package/skills/sonarcloud-analysis/SKILL.md +18 -13
- package/skills/sonarcloud-analysis/evals/evals.json +11 -15
- package/skills/status/SKILL.md +102 -0
- package/skills/status/evals/evals.json +50 -0
- package/skills/triage-ready/SKILL.md +121 -0
- package/skills/triage-ready/evals/evals.json +42 -0
- package/{.github/prompts/validate.prompt.md → skills/validate/SKILL.md} +52 -29
- package/skills/validate/evals/evals.json +42 -0
- package/skills/verify/SKILL.md +299 -0
- package/skills/verify/evals/evals.json +50 -0
- package/.claude/commands/dev.md +0 -345
- package/.claude/commands/plan.md +0 -566
- package/.claude/commands/premerge.md +0 -186
- package/.claude/commands/research.md +0 -42
- package/.claude/commands/review.md +0 -451
- package/.claude/commands/rollback.md +0 -721
- package/.claude/commands/ship.md +0 -213
- package/.claude/commands/sonarcloud.md +0 -152
- package/.claude/commands/status.md +0 -90
- package/.claude/commands/validate.md +0 -288
- package/.claude/commands/verify.md +0 -269
- package/.claude/rules/workflow.md +0 -121
- package/.cline/workflows/dev.md +0 -342
- package/.cline/workflows/plan.md +0 -563
- package/.cline/workflows/premerge.md +0 -183
- package/.cline/workflows/research.md +0 -39
- package/.cline/workflows/review.md +0 -448
- package/.cline/workflows/rollback.md +0 -718
- package/.cline/workflows/ship.md +0 -210
- package/.cline/workflows/sonarcloud.md +0 -146
- package/.cline/workflows/status.md +0 -87
- package/.cline/workflows/validate.md +0 -285
- package/.cline/workflows/verify.md +0 -266
- package/.codex/config.toml +0 -11
- package/.codex/skills/dev/SKILL.md +0 -345
- package/.codex/skills/plan/SKILL.md +0 -566
- package/.codex/skills/premerge/SKILL.md +0 -186
- package/.codex/skills/research/SKILL.md +0 -42
- package/.codex/skills/review/SKILL.md +0 -451
- package/.codex/skills/rollback/SKILL.md +0 -721
- package/.codex/skills/ship/SKILL.md +0 -213
- package/.codex/skills/sonarcloud/SKILL.md +0 -149
- package/.codex/skills/status/SKILL.md +0 -90
- package/.codex/skills/validate/SKILL.md +0 -288
- package/.codex/skills/verify/SKILL.md +0 -269
- package/.cursor/commands/dev.md +0 -342
- package/.cursor/commands/plan.md +0 -563
- package/.cursor/commands/premerge.md +0 -183
- package/.cursor/commands/research.md +0 -39
- package/.cursor/commands/review.md +0 -448
- package/.cursor/commands/ship.md +0 -210
- package/.cursor/commands/sonarcloud.md +0 -146
- package/.cursor/commands/status.md +0 -87
- package/.cursor/commands/validate.md +0 -285
- package/.cursor/commands/verify.md +0 -266
- package/.cursorrules +0 -149
- package/.github/prompts/premerge.prompt.md +0 -188
- package/.github/prompts/research.prompt.md +0 -44
- package/.github/prompts/rollback.prompt.md +0 -723
- package/.github/prompts/ship.prompt.md +0 -215
- package/.github/prompts/status.prompt.md +0 -92
- package/.github/prompts/verify.prompt.md +0 -271
- package/.github/workflows/beads-to-github.yml +0 -56
- package/.github/workflows/github-to-beads.yml +0 -97
- package/.kilocode/workflows/dev.md +0 -346
- package/.kilocode/workflows/plan.md +0 -567
- package/.kilocode/workflows/premerge.md +0 -187
- package/.kilocode/workflows/research.md +0 -43
- package/.kilocode/workflows/review.md +0 -452
- package/.kilocode/workflows/rollback.md +0 -722
- package/.kilocode/workflows/ship.md +0 -214
- package/.kilocode/workflows/sonarcloud.md +0 -150
- package/.kilocode/workflows/status.md +0 -91
- package/.kilocode/workflows/validate.md +0 -289
- package/.kilocode/workflows/verify.md +0 -270
- package/.opencode/commands/dev.md +0 -345
- package/.opencode/commands/plan.md +0 -566
- package/.opencode/commands/premerge.md +0 -186
- package/.opencode/commands/research.md +0 -42
- package/.opencode/commands/review.md +0 -451
- package/.opencode/commands/rollback.md +0 -721
- package/.opencode/commands/ship.md +0 -213
- package/.opencode/commands/sonarcloud.md +0 -149
- package/.opencode/commands/status.md +0 -90
- package/.opencode/commands/validate.md +0 -288
- package/.opencode/commands/verify.md +0 -269
- package/.roo/commands/dev.md +0 -346
- package/.roo/commands/plan.md +0 -567
- package/.roo/commands/premerge.md +0 -187
- package/.roo/commands/research.md +0 -43
- package/.roo/commands/review.md +0 -452
- package/.roo/commands/rollback.md +0 -722
- package/.roo/commands/ship.md +0 -214
- package/.roo/commands/sonarcloud.md +0 -150
- package/.roo/commands/status.md +0 -91
- package/.roo/commands/validate.md +0 -289
- package/.roo/commands/verify.md +0 -270
- package/docs/BEADS_GITHUB_SYNC.md +0 -255
- package/docs/GREPTILE_SETUP.md +0 -400
- package/docs/MANUAL_REVIEW_GUIDE.md +0 -106
- package/docs/SETUP.md +0 -663
- package/docs/VALIDATION.md +0 -363
- package/lib/agents/cline.plugin.json +0 -29
- package/lib/agents/copilot.plugin.json +0 -24
- package/lib/agents/kilocode.plugin.json +0 -22
- package/lib/agents/opencode.plugin.json +0 -23
- package/lib/agents/roo.plugin.json +0 -30
- package/lib/beads-health-check.js +0 -143
- package/lib/commands/commands-reset.js +0 -147
- package/opencode.json +0 -67
- package/scripts/beads-context.test.js +0 -567
- package/scripts/github-beads-sync/comment.mjs +0 -64
- package/scripts/github-beads-sync/config.mjs +0 -148
- package/scripts/github-beads-sync/github-api.mjs +0 -131
- package/scripts/github-beads-sync/index.mjs +0 -332
- package/scripts/github-beads-sync/label-mapper.mjs +0 -54
- package/scripts/github-beads-sync/mapping.mjs +0 -78
- package/scripts/github-beads-sync/reverse-sync-cli.mjs +0 -31
- package/scripts/github-beads-sync/reverse-sync.mjs +0 -138
- package/scripts/github-beads-sync/run-bd.mjs +0 -161
- package/scripts/github-beads-sync/sanitize.mjs +0 -121
- package/scripts/github-beads-sync.config.json +0 -26
- package/scripts/sync-commands.js +0 -600
|
@@ -3,6 +3,9 @@
|
|
|
3
3
|
const fs = require('node:fs');
|
|
4
4
|
const path = require('node:path');
|
|
5
5
|
const { execFileSync } = require('node:child_process');
|
|
6
|
+
const { cleanupDeprecatedSyncFiles } = require('./deprecated-sync-cleanup');
|
|
7
|
+
|
|
8
|
+
const DEFAULT_BEADS_VERSION = '1.0.0';
|
|
6
9
|
|
|
7
10
|
/**
|
|
8
11
|
* Detect the default branch of the repository.
|
|
@@ -60,7 +63,7 @@ function detectDefaultBranch(projectRoot, options = {}) {
|
|
|
60
63
|
*
|
|
61
64
|
* Strategy (in order):
|
|
62
65
|
* 1. `bd --version` -> parse version string (e.g. "beads version 0.52.0" -> "0.52.0")
|
|
63
|
-
* 2. Fall back to
|
|
66
|
+
* 2. Fall back to the current repo baseline release
|
|
64
67
|
*
|
|
65
68
|
* @param {object} [options] - Options object.
|
|
66
69
|
* @param {Function} [options._exec] - Injected execFileSync for testing.
|
|
@@ -83,7 +86,7 @@ function detectBeadsVersion(options = {}) {
|
|
|
83
86
|
// Expected: 'bd --version' fails when bd CLI is not installed — fall through to default version
|
|
84
87
|
}
|
|
85
88
|
|
|
86
|
-
return
|
|
89
|
+
return DEFAULT_BEADS_VERSION;
|
|
87
90
|
}
|
|
88
91
|
|
|
89
92
|
/**
|
|
@@ -126,10 +129,12 @@ function templateWorkflows(workflowDir, branch, beadsVersion, createdFiles = [])
|
|
|
126
129
|
/branches:\s*\[master\]/g,
|
|
127
130
|
`branches: [${branch}]`
|
|
128
131
|
);
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
132
|
+
for (const version of ['0.49.1', DEFAULT_BEADS_VERSION, '__FORGE_BEADS_VERSION__']) {
|
|
133
|
+
content = content.replaceAll(
|
|
134
|
+
`BD_VERSION="${version}"`,
|
|
135
|
+
`BD_VERSION="${beadsVersion}"`
|
|
136
|
+
);
|
|
137
|
+
}
|
|
133
138
|
// Only write if content actually changed
|
|
134
139
|
if (content !== original) {
|
|
135
140
|
fs.writeFileSync(filePath, content);
|
|
@@ -137,124 +142,48 @@ function templateWorkflows(workflowDir, branch, beadsVersion, createdFiles = [])
|
|
|
137
142
|
}
|
|
138
143
|
}
|
|
139
144
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
* @property {string[]} filesSkipped - Relative paths of files that already existed and were preserved
|
|
144
|
-
*/
|
|
145
|
+
function cleanupDeprecatedBeadsSync(projectRoot, options = {}) {
|
|
146
|
+
return cleanupDeprecatedSyncFiles(projectRoot, options);
|
|
147
|
+
}
|
|
145
148
|
|
|
146
149
|
/**
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
* @
|
|
150
|
-
* @
|
|
151
|
-
* @
|
|
150
|
+
* @typedef {Object} ScaffoldResult
|
|
151
|
+
* @property {string[]} filesCreated - Always empty; retained for deprecated API compatibility.
|
|
152
|
+
* @property {string[]} filesSkipped - Always empty; retained for deprecated API compatibility.
|
|
153
|
+
* @property {string[]} filesRemoved - Relative paths of deprecated generated sync files removed.
|
|
154
|
+
* @property {boolean} deprecated - Indicates the legacy scaffold path is deprecated.
|
|
155
|
+
* @property {string} message - Deprecation guidance for future sync direction.
|
|
152
156
|
*/
|
|
153
|
-
function copyFileWithDirs(src, dest) {
|
|
154
|
-
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
|
155
|
-
fs.copyFileSync(src, dest);
|
|
156
|
-
}
|
|
157
157
|
|
|
158
158
|
/**
|
|
159
|
-
*
|
|
159
|
+
* Deprecated compatibility shim for removed Beads/GitHub sync scaffolding.
|
|
160
160
|
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
161
|
+
* Performs cleanup of generated legacy sync artifacts only. User-owned files
|
|
162
|
+
* at matching paths are preserved unless their content matches known generated
|
|
163
|
+
* templates.
|
|
163
164
|
*
|
|
164
165
|
* @param {string} projectRoot - Absolute path to the user's project root
|
|
165
166
|
* @param {string} packageDir - Absolute path to the forge package install location
|
|
166
167
|
* @param {Object} [_options={}] - Reserved for future options
|
|
167
|
-
* @returns {ScaffoldResult}
|
|
168
|
+
* @returns {ScaffoldResult} Deprecated cleanup result.
|
|
168
169
|
*/
|
|
169
170
|
function scaffoldBeadsSync(projectRoot, packageDir, _options = {}) {
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
const srcWorkflowsDir = path.join(packageDir, '.github', 'workflows');
|
|
180
|
-
|
|
181
|
-
for (const name of workflowNames) {
|
|
182
|
-
const src = path.join(srcWorkflowsDir, name);
|
|
183
|
-
const relPath = `.github/workflows/${name}`;
|
|
184
|
-
const dest = path.join(projectRoot, '.github', 'workflows', name);
|
|
185
|
-
|
|
186
|
-
if (!fs.existsSync(src)) continue;
|
|
187
|
-
if (fs.existsSync(dest)) {
|
|
188
|
-
filesSkipped.push(relPath);
|
|
189
|
-
} else {
|
|
190
|
-
copyFileWithDirs(src, dest);
|
|
191
|
-
filesCreated.push(relPath);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
// --- Step b: Copy sync modules ---
|
|
196
|
-
const srcSyncDir = path.join(packageDir, 'scripts', 'github-beads-sync');
|
|
197
|
-
const destSyncDir = path.join(githubDir, 'scripts', 'beads-sync');
|
|
198
|
-
|
|
199
|
-
if (fs.existsSync(srcSyncDir)) {
|
|
200
|
-
const entries = fs.readdirSync(srcSyncDir);
|
|
201
|
-
for (const entry of entries) {
|
|
202
|
-
const srcFile = path.join(srcSyncDir, entry);
|
|
203
|
-
const stat = fs.statSync(srcFile);
|
|
204
|
-
if (stat.isFile()) {
|
|
205
|
-
const relPath = `.github/scripts/beads-sync/${entry}`;
|
|
206
|
-
const dest = path.join(destSyncDir, entry);
|
|
207
|
-
if (fs.existsSync(dest)) {
|
|
208
|
-
filesSkipped.push(relPath);
|
|
209
|
-
} else {
|
|
210
|
-
copyFileWithDirs(srcFile, dest);
|
|
211
|
-
filesCreated.push(relPath);
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
// --- Step c: Create beads-sync-config.json ---
|
|
218
|
-
const configRelPath = '.github/beads-sync-config.json';
|
|
219
|
-
const configDest = path.join(githubDir, 'beads-sync-config.json');
|
|
220
|
-
const srcConfig = path.join(packageDir, 'scripts', 'github-beads-sync.config.json');
|
|
221
|
-
|
|
222
|
-
if (fs.existsSync(configDest)) {
|
|
223
|
-
filesSkipped.push(configRelPath);
|
|
224
|
-
} else if (fs.existsSync(srcConfig)) {
|
|
225
|
-
copyFileWithDirs(srcConfig, configDest);
|
|
226
|
-
filesCreated.push(configRelPath);
|
|
227
|
-
} else {
|
|
228
|
-
// Create a sensible default config
|
|
229
|
-
const defaultConfig = {
|
|
230
|
-
defaultType: 'task',
|
|
231
|
-
defaultPriority: 2,
|
|
232
|
-
mapAssignee: true,
|
|
233
|
-
publicRepoGate: 'none'
|
|
234
|
-
};
|
|
235
|
-
fs.mkdirSync(path.dirname(configDest), { recursive: true });
|
|
236
|
-
fs.writeFileSync(configDest, JSON.stringify(defaultConfig, null, 2) + '\n');
|
|
237
|
-
filesCreated.push(configRelPath);
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
// --- Step d: Create beads-mapping.json if not exists ---
|
|
241
|
-
const mappingRelPath = '.github/beads-mapping.json';
|
|
242
|
-
const mappingDest = path.join(githubDir, 'beads-mapping.json');
|
|
243
|
-
|
|
244
|
-
if (fs.existsSync(mappingDest)) {
|
|
245
|
-
filesSkipped.push(mappingRelPath);
|
|
246
|
-
} else {
|
|
247
|
-
fs.mkdirSync(path.dirname(mappingDest), { recursive: true });
|
|
248
|
-
fs.writeFileSync(mappingDest, '{}');
|
|
249
|
-
filesCreated.push(mappingRelPath);
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
return { filesCreated, filesSkipped };
|
|
171
|
+
const cleanup = cleanupDeprecatedBeadsSync(projectRoot, { packageDir });
|
|
172
|
+
|
|
173
|
+
return {
|
|
174
|
+
filesCreated: [],
|
|
175
|
+
filesSkipped: [],
|
|
176
|
+
filesRemoved: cleanup.removed,
|
|
177
|
+
deprecated: true,
|
|
178
|
+
message: 'Beads GitHub sync scaffolding is deprecated; future GitHub issue sync must use Forge Kernel/server authority.'
|
|
179
|
+
};
|
|
253
180
|
}
|
|
254
181
|
|
|
255
182
|
module.exports = {
|
|
183
|
+
DEFAULT_BEADS_VERSION,
|
|
256
184
|
detectDefaultBranch,
|
|
257
185
|
detectBeadsVersion,
|
|
258
186
|
templateWorkflows,
|
|
187
|
+
cleanupDeprecatedBeadsSync,
|
|
259
188
|
scaffoldBeadsSync,
|
|
260
189
|
};
|
package/lib/codex-skills.js
CHANGED
|
@@ -2,6 +2,19 @@ const fs = require('node:fs');
|
|
|
2
2
|
const os = require('node:os');
|
|
3
3
|
const path = require('node:path');
|
|
4
4
|
|
|
5
|
+
const { populateAgentSkills } = require('./skills-sync');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Codex's documented repo-local skill discovery directory, relative to a project
|
|
9
|
+
* root. Codex scans `.agents/skills/<name>/SKILL.md` from the current working
|
|
10
|
+
* directory up to the repo root (developers.openai.com/codex/skills). Unlike the
|
|
11
|
+
* GLOBAL `$CODEX_HOME/skills` install, this surface is COMMITTED to the repo (kept
|
|
12
|
+
* byte-identical to the canonical `skills/` source by a pre-commit sync hook and
|
|
13
|
+
* the drift gate), so a teammate who clones the repo WITHOUT running `forge setup`
|
|
14
|
+
* still gets the Forge skills/stages auto-discovered.
|
|
15
|
+
*/
|
|
16
|
+
const CODEX_REPO_SKILLS_DIR = '.agents/skills';
|
|
17
|
+
|
|
5
18
|
function injectForgeAdapter(content, commandName) {
|
|
6
19
|
const adapter = [
|
|
7
20
|
'> Forge stage adapter',
|
|
@@ -20,7 +33,10 @@ function injectForgeAdapter(content, commandName) {
|
|
|
20
33
|
}
|
|
21
34
|
|
|
22
35
|
function listCodexSkillEntries(sourceRoot) {
|
|
23
|
-
|
|
36
|
+
// Read from the canonical `skills/` source (single source of truth) rather than
|
|
37
|
+
// a committed `.codex/skills` mirror. The GLOBAL `$CODEX_HOME/skills` install is
|
|
38
|
+
// generated from these entries with the stage adapter injected below.
|
|
39
|
+
const skillsDir = path.join(sourceRoot, 'skills');
|
|
24
40
|
|
|
25
41
|
if (!fs.existsSync(skillsDir)) {
|
|
26
42
|
return [];
|
|
@@ -94,10 +110,44 @@ function buildCodexSkillInstallPlan(sourceRoot, options = {}) {
|
|
|
94
110
|
}));
|
|
95
111
|
}
|
|
96
112
|
|
|
113
|
+
/**
|
|
114
|
+
* Absolute path to a project's repo-local Codex skill discovery dir.
|
|
115
|
+
*
|
|
116
|
+
* @param {string} projectRoot - The project/repo root.
|
|
117
|
+
* @returns {string} `<projectRoot>/.agents/skills`.
|
|
118
|
+
*/
|
|
119
|
+
function resolveCodexRepoSkillsDir(projectRoot) {
|
|
120
|
+
return path.join(projectRoot, '.agents', 'skills');
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Generate the repo-local Codex skill discovery mirror (`.agents/skills`) from
|
|
125
|
+
* the canonical `skills/` source.
|
|
126
|
+
*
|
|
127
|
+
* Content matches the other harness mirrors byte-for-byte (raw canonical — the
|
|
128
|
+
* `$CODEX_HOME` stage adapter is NOT injected here) so the skills-sync drift gate
|
|
129
|
+
* can enforce it, and so repo-local discovery reaches parity with the
|
|
130
|
+
* `.claude/skills` / `.cursor/skills` discovery surfaces.
|
|
131
|
+
*
|
|
132
|
+
* @param {object} params
|
|
133
|
+
* @param {string} params.sourceRoot - Root containing the canonical `skills/` dir.
|
|
134
|
+
* @param {string} params.projectRoot - Target project/repo root.
|
|
135
|
+
* @param {boolean} [params.clean=false] - Remove stale canonical-managed dirs first.
|
|
136
|
+
* @returns {{targetSkillsDir: string, written: string[]}}
|
|
137
|
+
*/
|
|
138
|
+
function populateCodexRepoSkills({ sourceRoot, projectRoot, clean = false }) {
|
|
139
|
+
const targetSkillsDir = resolveCodexRepoSkillsDir(projectRoot);
|
|
140
|
+
const { written } = populateAgentSkills({ sourceRoot, targetSkillsDir, clean });
|
|
141
|
+
return { targetSkillsDir, written };
|
|
142
|
+
}
|
|
143
|
+
|
|
97
144
|
module.exports = {
|
|
145
|
+
CODEX_REPO_SKILLS_DIR,
|
|
98
146
|
buildCodexSkillInstallPlan,
|
|
99
147
|
formatCodexSkillsInstallDir,
|
|
100
148
|
listCodexSkillEntries,
|
|
149
|
+
populateCodexRepoSkills,
|
|
101
150
|
resolveCodexHome,
|
|
151
|
+
resolveCodexRepoSkillsDir,
|
|
102
152
|
resolveCodexSkillsInstallDir,
|
|
103
153
|
};
|