@blxzer/cursor-trellis 0.1.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/CHANGELOG.md +45 -0
- package/LICENSE +235 -0
- package/README.md +9 -0
- package/bin/smart-search.js +79 -0
- package/bin/trellis.js +3 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +258 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/commands/channel/adapters/claude.d.ts +29 -0
- package/dist/commands/channel/adapters/claude.d.ts.map +1 -0
- package/dist/commands/channel/adapters/claude.js +203 -0
- package/dist/commands/channel/adapters/claude.js.map +1 -0
- package/dist/commands/channel/adapters/codex.d.ts +85 -0
- package/dist/commands/channel/adapters/codex.d.ts.map +1 -0
- package/dist/commands/channel/adapters/codex.js +505 -0
- package/dist/commands/channel/adapters/codex.js.map +1 -0
- package/dist/commands/channel/adapters/index.d.ts +84 -0
- package/dist/commands/channel/adapters/index.d.ts.map +1 -0
- package/dist/commands/channel/adapters/index.js +115 -0
- package/dist/commands/channel/adapters/index.js.map +1 -0
- package/dist/commands/channel/adapters/types.d.ts +33 -0
- package/dist/commands/channel/adapters/types.d.ts.map +1 -0
- package/dist/commands/channel/adapters/types.js +2 -0
- package/dist/commands/channel/adapters/types.js.map +1 -0
- package/dist/commands/channel/agent-loader.d.ts +32 -0
- package/dist/commands/channel/agent-loader.d.ts.map +1 -0
- package/dist/commands/channel/agent-loader.js +154 -0
- package/dist/commands/channel/agent-loader.js.map +1 -0
- package/dist/commands/channel/context-loader.d.ts +26 -0
- package/dist/commands/channel/context-loader.d.ts.map +1 -0
- package/dist/commands/channel/context-loader.js +290 -0
- package/dist/commands/channel/context-loader.js.map +1 -0
- package/dist/commands/channel/context.d.ts +16 -0
- package/dist/commands/channel/context.d.ts.map +1 -0
- package/dist/commands/channel/context.js +83 -0
- package/dist/commands/channel/context.js.map +1 -0
- package/dist/commands/channel/create.d.ts +27 -0
- package/dist/commands/channel/create.d.ts.map +1 -0
- package/dist/commands/channel/create.js +39 -0
- package/dist/commands/channel/create.js.map +1 -0
- package/dist/commands/channel/dev-parse-trace.d.ts +14 -0
- package/dist/commands/channel/dev-parse-trace.d.ts.map +1 -0
- package/dist/commands/channel/dev-parse-trace.js +70 -0
- package/dist/commands/channel/dev-parse-trace.js.map +1 -0
- package/dist/commands/channel/guard.d.ts +150 -0
- package/dist/commands/channel/guard.d.ts.map +1 -0
- package/dist/commands/channel/guard.js +474 -0
- package/dist/commands/channel/guard.js.map +1 -0
- package/dist/commands/channel/index.d.ts +3 -0
- package/dist/commands/channel/index.d.ts.map +1 -0
- package/dist/commands/channel/index.js +531 -0
- package/dist/commands/channel/index.js.map +1 -0
- package/dist/commands/channel/interrupt.d.ts +10 -0
- package/dist/commands/channel/interrupt.d.ts.map +1 -0
- package/dist/commands/channel/interrupt.js +22 -0
- package/dist/commands/channel/interrupt.js.map +1 -0
- package/dist/commands/channel/kill.d.ts +7 -0
- package/dist/commands/channel/kill.d.ts.map +1 -0
- package/dist/commands/channel/kill.js +121 -0
- package/dist/commands/channel/kill.js.map +1 -0
- package/dist/commands/channel/list.d.ts +17 -0
- package/dist/commands/channel/list.d.ts.map +1 -0
- package/dist/commands/channel/list.js +233 -0
- package/dist/commands/channel/list.js.map +1 -0
- package/dist/commands/channel/messages.d.ts +15 -0
- package/dist/commands/channel/messages.d.ts.map +1 -0
- package/dist/commands/channel/messages.js +245 -0
- package/dist/commands/channel/messages.js.map +1 -0
- package/dist/commands/channel/rm.d.ts +27 -0
- package/dist/commands/channel/rm.d.ts.map +1 -0
- package/dist/commands/channel/rm.js +216 -0
- package/dist/commands/channel/rm.js.map +1 -0
- package/dist/commands/channel/run.d.ts +30 -0
- package/dist/commands/channel/run.d.ts.map +1 -0
- package/dist/commands/channel/run.js +130 -0
- package/dist/commands/channel/run.js.map +1 -0
- package/dist/commands/channel/send.d.ts +11 -0
- package/dist/commands/channel/send.d.ts.map +1 -0
- package/dist/commands/channel/send.js +24 -0
- package/dist/commands/channel/send.js.map +1 -0
- package/dist/commands/channel/spawn.d.ts +40 -0
- package/dist/commands/channel/spawn.d.ts.map +1 -0
- package/dist/commands/channel/spawn.js +244 -0
- package/dist/commands/channel/spawn.js.map +1 -0
- package/dist/commands/channel/store/events.d.ts +39 -0
- package/dist/commands/channel/store/events.d.ts.map +1 -0
- package/dist/commands/channel/store/events.js +87 -0
- package/dist/commands/channel/store/events.js.map +1 -0
- package/dist/commands/channel/store/filter.d.ts +3 -0
- package/dist/commands/channel/store/filter.d.ts.map +1 -0
- package/dist/commands/channel/store/filter.js +2 -0
- package/dist/commands/channel/store/filter.js.map +1 -0
- package/dist/commands/channel/store/lock.d.ts +23 -0
- package/dist/commands/channel/store/lock.d.ts.map +1 -0
- package/dist/commands/channel/store/lock.js +99 -0
- package/dist/commands/channel/store/lock.js.map +1 -0
- package/dist/commands/channel/store/paths.d.ts +63 -0
- package/dist/commands/channel/store/paths.d.ts.map +1 -0
- package/dist/commands/channel/store/paths.js +246 -0
- package/dist/commands/channel/store/paths.js.map +1 -0
- package/dist/commands/channel/store/schema.d.ts +27 -0
- package/dist/commands/channel/store/schema.d.ts.map +1 -0
- package/dist/commands/channel/store/schema.js +34 -0
- package/dist/commands/channel/store/schema.js.map +1 -0
- package/dist/commands/channel/store/thread-state.d.ts +5 -0
- package/dist/commands/channel/store/thread-state.d.ts.map +1 -0
- package/dist/commands/channel/store/thread-state.js +16 -0
- package/dist/commands/channel/store/thread-state.js.map +1 -0
- package/dist/commands/channel/store/watch.d.ts +19 -0
- package/dist/commands/channel/store/watch.d.ts.map +1 -0
- package/dist/commands/channel/store/watch.js +146 -0
- package/dist/commands/channel/store/watch.js.map +1 -0
- package/dist/commands/channel/supervisor/idle.d.ts +46 -0
- package/dist/commands/channel/supervisor/idle.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/idle.js +72 -0
- package/dist/commands/channel/supervisor/idle.js.map +1 -0
- package/dist/commands/channel/supervisor/inbox.d.ts +30 -0
- package/dist/commands/channel/supervisor/inbox.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/inbox.js +160 -0
- package/dist/commands/channel/supervisor/inbox.js.map +1 -0
- package/dist/commands/channel/supervisor/shutdown.d.ts +68 -0
- package/dist/commands/channel/supervisor/shutdown.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/shutdown.js +146 -0
- package/dist/commands/channel/supervisor/shutdown.js.map +1 -0
- package/dist/commands/channel/supervisor/stdout.d.ts +51 -0
- package/dist/commands/channel/supervisor/stdout.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/stdout.js +121 -0
- package/dist/commands/channel/supervisor/stdout.js.map +1 -0
- package/dist/commands/channel/supervisor/turns.d.ts +31 -0
- package/dist/commands/channel/supervisor/turns.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/turns.js +45 -0
- package/dist/commands/channel/supervisor/turns.js.map +1 -0
- package/dist/commands/channel/supervisor/warning.d.ts +48 -0
- package/dist/commands/channel/supervisor/warning.d.ts.map +1 -0
- package/dist/commands/channel/supervisor/warning.js +77 -0
- package/dist/commands/channel/supervisor/warning.js.map +1 -0
- package/dist/commands/channel/supervisor.d.ts +59 -0
- package/dist/commands/channel/supervisor.d.ts.map +1 -0
- package/dist/commands/channel/supervisor.js +344 -0
- package/dist/commands/channel/supervisor.js.map +1 -0
- package/dist/commands/channel/text-body.d.ts +13 -0
- package/dist/commands/channel/text-body.d.ts.map +1 -0
- package/dist/commands/channel/text-body.js +47 -0
- package/dist/commands/channel/text-body.js.map +1 -0
- package/dist/commands/channel/threads.d.ts +39 -0
- package/dist/commands/channel/threads.d.ts.map +1 -0
- package/dist/commands/channel/threads.js +106 -0
- package/dist/commands/channel/threads.js.map +1 -0
- package/dist/commands/channel/title.d.ts +12 -0
- package/dist/commands/channel/title.d.ts.map +1 -0
- package/dist/commands/channel/title.js +24 -0
- package/dist/commands/channel/title.js.map +1 -0
- package/dist/commands/channel/wait.d.ts +17 -0
- package/dist/commands/channel/wait.d.ts.map +1 -0
- package/dist/commands/channel/wait.js +75 -0
- package/dist/commands/channel/wait.js.map +1 -0
- package/dist/commands/init.d.ts +62 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +1656 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/mem.d.ts +30 -0
- package/dist/commands/mem.d.ts.map +1 -0
- package/dist/commands/mem.js +424 -0
- package/dist/commands/mem.js.map +1 -0
- package/dist/commands/rollout.d.ts +34 -0
- package/dist/commands/rollout.d.ts.map +1 -0
- package/dist/commands/rollout.js +102 -0
- package/dist/commands/rollout.js.map +1 -0
- package/dist/commands/uninstall.d.ts +27 -0
- package/dist/commands/uninstall.d.ts.map +1 -0
- package/dist/commands/uninstall.js +339 -0
- package/dist/commands/uninstall.js.map +1 -0
- package/dist/commands/update.d.ts +80 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +2185 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/upgrade.d.ts +28 -0
- package/dist/commands/upgrade.d.ts.map +1 -0
- package/dist/commands/upgrade.js +84 -0
- package/dist/commands/upgrade.js.map +1 -0
- package/dist/commands/workflow.d.ts +35 -0
- package/dist/commands/workflow.d.ts.map +1 -0
- package/dist/commands/workflow.js +219 -0
- package/dist/commands/workflow.js.map +1 -0
- package/dist/configurators/antigravity.d.ts +7 -0
- package/dist/configurators/antigravity.d.ts.map +1 -0
- package/dist/configurators/antigravity.js +19 -0
- package/dist/configurators/antigravity.js.map +1 -0
- package/dist/configurators/claude.d.ts +9 -0
- package/dist/configurators/claude.d.ts.map +1 -0
- package/dist/configurators/claude.js +72 -0
- package/dist/configurators/claude.js.map +1 -0
- package/dist/configurators/codebuddy.d.ts +10 -0
- package/dist/configurators/codebuddy.d.ts.map +1 -0
- package/dist/configurators/codebuddy.js +30 -0
- package/dist/configurators/codebuddy.js.map +1 -0
- package/dist/configurators/codex.d.ts +8 -0
- package/dist/configurators/codex.d.ts.map +1 -0
- package/dist/configurators/codex.js +87 -0
- package/dist/configurators/codex.js.map +1 -0
- package/dist/configurators/copilot.d.ts +10 -0
- package/dist/configurators/copilot.d.ts.map +1 -0
- package/dist/configurators/copilot.js +51 -0
- package/dist/configurators/copilot.js.map +1 -0
- package/dist/configurators/cursor.d.ts +20 -0
- package/dist/configurators/cursor.d.ts.map +1 -0
- package/dist/configurators/cursor.js +49 -0
- package/dist/configurators/cursor.js.map +1 -0
- package/dist/configurators/cursor2plus-local.d.ts +6 -0
- package/dist/configurators/cursor2plus-local.d.ts.map +1 -0
- package/dist/configurators/cursor2plus-local.js +20 -0
- package/dist/configurators/cursor2plus-local.js.map +1 -0
- package/dist/configurators/droid.d.ts +10 -0
- package/dist/configurators/droid.d.ts.map +1 -0
- package/dist/configurators/droid.js +30 -0
- package/dist/configurators/droid.js.map +1 -0
- package/dist/configurators/gemini.d.ts +16 -0
- package/dist/configurators/gemini.d.ts.map +1 -0
- package/dist/configurators/gemini.js +38 -0
- package/dist/configurators/gemini.js.map +1 -0
- package/dist/configurators/index.d.ts +69 -0
- package/dist/configurators/index.d.ts.map +1 -0
- package/dist/configurators/index.js +395 -0
- package/dist/configurators/index.js.map +1 -0
- package/dist/configurators/kilo.d.ts +7 -0
- package/dist/configurators/kilo.d.ts.map +1 -0
- package/dist/configurators/kilo.js +19 -0
- package/dist/configurators/kilo.js.map +1 -0
- package/dist/configurators/kiro.d.ts +8 -0
- package/dist/configurators/kiro.d.ts.map +1 -0
- package/dist/configurators/kiro.js +24 -0
- package/dist/configurators/kiro.js.map +1 -0
- package/dist/configurators/opencode.d.ts +14 -0
- package/dist/configurators/opencode.d.ts.map +1 -0
- package/dist/configurators/opencode.js +96 -0
- package/dist/configurators/opencode.js.map +1 -0
- package/dist/configurators/pi.d.ts +3 -0
- package/dist/configurators/pi.d.ts.map +1 -0
- package/dist/configurators/pi.js +45 -0
- package/dist/configurators/pi.js.map +1 -0
- package/dist/configurators/qoder.d.ts +11 -0
- package/dist/configurators/qoder.d.ts.map +1 -0
- package/dist/configurators/qoder.js +31 -0
- package/dist/configurators/qoder.js.map +1 -0
- package/dist/configurators/shared.d.ts +183 -0
- package/dist/configurators/shared.d.ts.map +1 -0
- package/dist/configurators/shared.js +557 -0
- package/dist/configurators/shared.js.map +1 -0
- package/dist/configurators/windsurf.d.ts +7 -0
- package/dist/configurators/windsurf.d.ts.map +1 -0
- package/dist/configurators/windsurf.js +19 -0
- package/dist/configurators/windsurf.js.map +1 -0
- package/dist/configurators/workflow.d.ts +46 -0
- package/dist/configurators/workflow.d.ts.map +1 -0
- package/dist/configurators/workflow.js +180 -0
- package/dist/configurators/workflow.js.map +1 -0
- package/dist/constants/paths.d.ts +70 -0
- package/dist/constants/paths.d.ts.map +1 -0
- package/dist/constants/paths.js +79 -0
- package/dist/constants/paths.js.map +1 -0
- package/dist/constants/version.d.ts +9 -0
- package/dist/constants/version.d.ts.map +1 -0
- package/dist/constants/version.js +15 -0
- package/dist/constants/version.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/migrations/index.d.ts +62 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/index.js +187 -0
- package/dist/migrations/index.js.map +1 -0
- package/dist/migrations/manifests/0.1.0.json +9 -0
- package/dist/templates/claude/agents/trellis-check.md +124 -0
- package/dist/templates/claude/agents/trellis-implement.md +110 -0
- package/dist/templates/claude/agents/trellis-research.md +137 -0
- package/dist/templates/claude/index.d.ts +22 -0
- package/dist/templates/claude/index.d.ts.map +1 -0
- package/dist/templates/claude/index.js +46 -0
- package/dist/templates/claude/index.js.map +1 -0
- package/dist/templates/claude/settings.json +84 -0
- package/dist/templates/codebuddy/agents/trellis-check.md +115 -0
- package/dist/templates/codebuddy/agents/trellis-implement.md +110 -0
- package/dist/templates/codebuddy/agents/trellis-research.md +137 -0
- package/dist/templates/codebuddy/index.d.ts +15 -0
- package/dist/templates/codebuddy/index.d.ts.map +1 -0
- package/dist/templates/codebuddy/index.js +15 -0
- package/dist/templates/codebuddy/index.js.map +1 -0
- package/dist/templates/codebuddy/settings.json +70 -0
- package/dist/templates/codex/agents/trellis-check.toml +67 -0
- package/dist/templates/codex/agents/trellis-implement.toml +40 -0
- package/dist/templates/codex/agents/trellis-research.toml +73 -0
- package/dist/templates/codex/config.toml +28 -0
- package/dist/templates/codex/hooks/session-start.py +575 -0
- package/dist/templates/codex/hooks.json +15 -0
- package/dist/templates/codex/index.d.ts +39 -0
- package/dist/templates/codex/index.d.ts.map +1 -0
- package/dist/templates/codex/index.js +85 -0
- package/dist/templates/codex/index.js.map +1 -0
- package/dist/templates/codex/skills/before-dev/SKILL.md +40 -0
- package/dist/templates/codex/skills/brainstorm/SKILL.md +112 -0
- package/dist/templates/codex/skills/break-loop/SKILL.md +130 -0
- package/dist/templates/codex/skills/check/SKILL.md +98 -0
- package/dist/templates/codex/skills/check-cross-layer/SKILL.md +158 -0
- package/dist/templates/codex/skills/create-command/SKILL.md +101 -0
- package/dist/templates/codex/skills/finish-work/SKILL.md +90 -0
- package/dist/templates/codex/skills/improve-ut/SKILL.md +69 -0
- package/dist/templates/codex/skills/integrate-skill/SKILL.md +221 -0
- package/dist/templates/codex/skills/onboard/SKILL.md +363 -0
- package/dist/templates/codex/skills/record-session/SKILL.md +67 -0
- package/dist/templates/codex/skills/start/SKILL.md +66 -0
- package/dist/templates/codex/skills/update-spec/SKILL.md +335 -0
- package/dist/templates/common/bundled-skills/smart-search-cli/SKILL.md +388 -0
- package/dist/templates/common/bundled-skills/smart-search-cli/agents/openai.yaml +3 -0
- package/dist/templates/common/bundled-skills/smart-search-cli/examples/batch-search.md +98 -0
- package/dist/templates/common/bundled-skills/smart-search-cli/examples/evidence-gathering.md +89 -0
- package/dist/templates/common/bundled-skills/smart-search-cli/references/cli-contract.md +337 -0
- package/dist/templates/common/bundled-skills/trellis-cursor2plus-setup/SKILL.md +62 -0
- package/dist/templates/common/bundled-skills/trellis-meta/SKILL.md +73 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/add-project-local-conventions.md +83 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-agents.md +54 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-context-loading.md +84 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-hooks.md +57 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-skills-or-commands.md +80 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-spec-structure.md +83 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-task-lifecycle.md +88 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/change-workflow.md +65 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/customize-local/overview.md +55 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/context-injection.md +68 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/generated-files.md +80 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/overview.md +51 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/spec-system.md +102 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/task-system.md +133 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workflow.md +75 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/local-architecture/workspace-memory.md +71 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/agents.md +80 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/hooks-and-settings.md +69 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/overview.md +61 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/platform-map.md +76 -0
- package/dist/templates/common/bundled-skills/trellis-meta/references/platform-files/skills-and-commands.md +128 -0
- package/dist/templates/common/bundled-skills/trellis-micro-grill/SKILL.md +47 -0
- package/dist/templates/common/bundled-skills/trellis-skill-creator/SKILL.md +44 -0
- package/dist/templates/common/bundled-skills/trellis-skill-creator/references/authoring-rules.md +97 -0
- package/dist/templates/common/bundled-skills/trellis-skill-creator/references/review-checklist.md +47 -0
- package/dist/templates/common/bundled-skills/trellis-skill-creator/references/trellis-skill-locations.md +52 -0
- package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/SKILL.md +41 -0
- package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/mcp-setup.md +90 -0
- package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/repository-analysis.md +59 -0
- package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/spec-task-planning.md +61 -0
- package/dist/templates/common/bundled-skills/trellis-spec-bootstrap/references/spec-writing.md +70 -0
- package/dist/templates/common/commands/continue.md +63 -0
- package/dist/templates/common/commands/finish-work.md +68 -0
- package/dist/templates/common/commands/start.md +69 -0
- package/dist/templates/common/index.d.ts +48 -0
- package/dist/templates/common/index.d.ts.map +1 -0
- package/dist/templates/common/index.js +104 -0
- package/dist/templates/common/index.js.map +1 -0
- package/dist/templates/common/skills/before-dev.md +35 -0
- package/dist/templates/common/skills/brainstorm.md +164 -0
- package/dist/templates/common/skills/break-loop.md +125 -0
- package/dist/templates/common/skills/check.md +106 -0
- package/dist/templates/common/skills/update-spec.md +364 -0
- package/dist/templates/copilot/hooks/session-start.py +557 -0
- package/dist/templates/copilot/hooks.json +19 -0
- package/dist/templates/copilot/index.d.ts +23 -0
- package/dist/templates/copilot/index.d.ts.map +1 -0
- package/dist/templates/copilot/index.js +54 -0
- package/dist/templates/copilot/index.js.map +1 -0
- package/dist/templates/copilot/prompts/before-dev.prompt.md +39 -0
- package/dist/templates/copilot/prompts/brainstorm.prompt.md +111 -0
- package/dist/templates/copilot/prompts/break-loop.prompt.md +129 -0
- package/dist/templates/copilot/prompts/check-cross-layer.prompt.md +157 -0
- package/dist/templates/copilot/prompts/check.prompt.md +97 -0
- package/dist/templates/copilot/prompts/create-command.prompt.md +116 -0
- package/dist/templates/copilot/prompts/finish-work.prompt.md +99 -0
- package/dist/templates/copilot/prompts/integrate-skill.prompt.md +223 -0
- package/dist/templates/copilot/prompts/onboard.prompt.md +362 -0
- package/dist/templates/copilot/prompts/parallel.prompt.md +204 -0
- package/dist/templates/copilot/prompts/record-session.prompt.md +66 -0
- package/dist/templates/copilot/prompts/start.prompt.md +63 -0
- package/dist/templates/copilot/prompts/update-spec.prompt.md +358 -0
- package/dist/templates/cursor/agents/trellis-check.md +139 -0
- package/dist/templates/cursor/agents/trellis-implement.md +119 -0
- package/dist/templates/cursor/agents/trellis-research.md +147 -0
- package/dist/templates/cursor/commands/cursor2plus-setup.md +82 -0
- package/dist/templates/cursor/hooks.json +30 -0
- package/dist/templates/cursor/index.d.ts +19 -0
- package/dist/templates/cursor/index.d.ts.map +1 -0
- package/dist/templates/cursor/index.js +19 -0
- package/dist/templates/cursor/index.js.map +1 -0
- package/dist/templates/cursor/rules/trellis-triage.mdc +38 -0
- package/dist/templates/cursor/worktrees.json +11 -0
- package/dist/templates/droid/droids/trellis-check.md +107 -0
- package/dist/templates/droid/droids/trellis-implement.md +102 -0
- package/dist/templates/droid/droids/trellis-research.md +137 -0
- package/dist/templates/droid/index.d.ts +15 -0
- package/dist/templates/droid/index.d.ts.map +1 -0
- package/dist/templates/droid/index.js +15 -0
- package/dist/templates/droid/index.js.map +1 -0
- package/dist/templates/droid/settings.json +70 -0
- package/dist/templates/extract.d.ts +40 -0
- package/dist/templates/extract.d.ts.map +1 -0
- package/dist/templates/extract.js +106 -0
- package/dist/templates/extract.js.map +1 -0
- package/dist/templates/gemini/agents/trellis-check.md +107 -0
- package/dist/templates/gemini/agents/trellis-implement.md +102 -0
- package/dist/templates/gemini/agents/trellis-research.md +136 -0
- package/dist/templates/gemini/index.d.ts +13 -0
- package/dist/templates/gemini/index.d.ts.map +1 -0
- package/dist/templates/gemini/index.js +13 -0
- package/dist/templates/gemini/index.js.map +1 -0
- package/dist/templates/gemini/settings.json +28 -0
- package/dist/templates/kiro/agents/trellis-check.json +26 -0
- package/dist/templates/kiro/agents/trellis-implement.json +26 -0
- package/dist/templates/kiro/agents/trellis-research.json +30 -0
- package/dist/templates/kiro/index.d.ts +18 -0
- package/dist/templates/kiro/index.d.ts.map +1 -0
- package/dist/templates/kiro/index.js +18 -0
- package/dist/templates/kiro/index.js.map +1 -0
- package/dist/templates/markdown/agents.md +32 -0
- package/dist/templates/markdown/gitignore.txt +15 -0
- package/dist/templates/markdown/index.d.ts +30 -0
- package/dist/templates/markdown/index.d.ts.map +1 -0
- package/dist/templates/markdown/index.js +55 -0
- package/dist/templates/markdown/index.js.map +1 -0
- package/dist/templates/markdown/spec/backend/database-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/backend/directory-structure.md.txt +54 -0
- package/dist/templates/markdown/spec/backend/error-handling.md.txt +51 -0
- package/dist/templates/markdown/spec/backend/index.md.txt +38 -0
- package/dist/templates/markdown/spec/backend/logging-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/backend/quality-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/frontend/component-guidelines.md.txt +59 -0
- package/dist/templates/markdown/spec/frontend/directory-structure.md.txt +54 -0
- package/dist/templates/markdown/spec/frontend/hook-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/frontend/index.md.txt +39 -0
- package/dist/templates/markdown/spec/frontend/quality-guidelines.md.txt +51 -0
- package/dist/templates/markdown/spec/frontend/state-management.md.txt +51 -0
- package/dist/templates/markdown/spec/frontend/type-safety.md.txt +51 -0
- package/dist/templates/markdown/spec/guides/code-reuse-thinking-guide.md.txt +223 -0
- package/dist/templates/markdown/spec/guides/cross-layer-thinking-guide.md.txt +259 -0
- package/dist/templates/markdown/spec/guides/cross-platform-thinking-guide.md.txt +633 -0
- package/dist/templates/markdown/spec/guides/cursor-context-injection-guide.md.txt +65 -0
- package/dist/templates/markdown/spec/guides/cursor-subagent-policy.md.txt +382 -0
- package/dist/templates/markdown/spec/guides/durable-learning-decision-guide.md.txt +76 -0
- package/dist/templates/markdown/spec/guides/index.md.txt +101 -0
- package/dist/templates/markdown/spec/guides/retrieval-daily-guide.md.txt +92 -0
- package/dist/templates/markdown/workspace-index.md +125 -0
- package/dist/templates/markdown/worktree.yaml.txt +58 -0
- package/dist/templates/opencode/agents/trellis-check.md +122 -0
- package/dist/templates/opencode/agents/trellis-implement.md +118 -0
- package/dist/templates/opencode/agents/trellis-research.md +145 -0
- package/dist/templates/opencode/lib/session-utils.js +667 -0
- package/dist/templates/opencode/lib/trellis-context.js +336 -0
- package/dist/templates/opencode/package.json +5 -0
- package/dist/templates/opencode/plugins/inject-subagent-context.js +495 -0
- package/dist/templates/opencode/plugins/inject-workflow-state.js +159 -0
- package/dist/templates/opencode/plugins/session-start.js +101 -0
- package/dist/templates/pi/agents/trellis-check.md +37 -0
- package/dist/templates/pi/agents/trellis-implement.md +42 -0
- package/dist/templates/pi/agents/trellis-research.md +25 -0
- package/dist/templates/pi/extensions/trellis/index.ts.txt +1600 -0
- package/dist/templates/pi/index.d.ts +5 -0
- package/dist/templates/pi/index.d.ts.map +1 -0
- package/dist/templates/pi/index.js +12 -0
- package/dist/templates/pi/index.js.map +1 -0
- package/dist/templates/pi/settings.json +12 -0
- package/dist/templates/qoder/agents/trellis-check.md +108 -0
- package/dist/templates/qoder/agents/trellis-implement.md +103 -0
- package/dist/templates/qoder/agents/trellis-research.md +137 -0
- package/dist/templates/qoder/index.d.ts +15 -0
- package/dist/templates/qoder/index.d.ts.map +1 -0
- package/dist/templates/qoder/index.js +15 -0
- package/dist/templates/qoder/index.js.map +1 -0
- package/dist/templates/qoder/settings.json +47 -0
- package/dist/templates/shared-hooks/index.d.ts +50 -0
- package/dist/templates/shared-hooks/index.d.ts.map +1 -0
- package/dist/templates/shared-hooks/index.js +92 -0
- package/dist/templates/shared-hooks/index.js.map +1 -0
- package/dist/templates/shared-hooks/inject-shell-session-context.py +183 -0
- package/dist/templates/shared-hooks/inject-subagent-context.py +774 -0
- package/dist/templates/shared-hooks/inject-workflow-state.py +366 -0
- package/dist/templates/shared-hooks/research-end-retrieval-pack.py +220 -0
- package/dist/templates/shared-hooks/session-start.py +873 -0
- package/dist/templates/template-utils.d.ts +28 -0
- package/dist/templates/template-utils.d.ts.map +1 -0
- package/dist/templates/template-utils.js +83 -0
- package/dist/templates/template-utils.js.map +1 -0
- package/dist/templates/trellis/config.yaml +132 -0
- package/dist/templates/trellis/gitignore.txt +39 -0
- package/dist/templates/trellis/index.d.ts +80 -0
- package/dist/templates/trellis/index.d.ts.map +1 -0
- package/dist/templates/trellis/index.js +171 -0
- package/dist/templates/trellis/index.js.map +1 -0
- package/dist/templates/trellis/local/README.md +59 -0
- package/dist/templates/trellis/local/config.local.json.example +6 -0
- package/dist/templates/trellis/local/index.d.ts +7 -0
- package/dist/templates/trellis/local/index.d.ts.map +1 -0
- package/dist/templates/trellis/local/index.js +14 -0
- package/dist/templates/trellis/local/index.js.map +1 -0
- package/dist/templates/trellis/local/patch_wpelc8.py +297 -0
- package/dist/templates/trellis/local/subagent-models.json.example +4 -0
- package/dist/templates/trellis/local/trellis-task-models.json.example +10 -0
- package/dist/templates/trellis/local/trellis-task-models.json5.example +45 -0
- package/dist/templates/trellis/local/trellis_task_models_config.py +200 -0
- package/dist/templates/trellis/scripts/__init__.py +5 -0
- package/dist/templates/trellis/scripts/add_session.py +547 -0
- package/dist/templates/trellis/scripts/build_context_pack.py +12 -0
- package/dist/templates/trellis/scripts/build_retrieval_pack.py +12 -0
- package/dist/templates/trellis/scripts/common/__init__.py +103 -0
- package/dist/templates/trellis/scripts/common/active_task.py +607 -0
- package/dist/templates/trellis/scripts/common/artifact_search.py +587 -0
- package/dist/templates/trellis/scripts/common/cli_adapter.py +811 -0
- package/dist/templates/trellis/scripts/common/cli_environment.py +155 -0
- package/dist/templates/trellis/scripts/common/codebase_retrieval_router.py +902 -0
- package/dist/templates/trellis/scripts/common/config.py +458 -0
- package/dist/templates/trellis/scripts/common/context_pack.py +371 -0
- package/dist/templates/trellis/scripts/common/developer.py +190 -0
- package/dist/templates/trellis/scripts/common/git.py +31 -0
- package/dist/templates/trellis/scripts/common/git_context.py +149 -0
- package/dist/templates/trellis/scripts/common/io.py +37 -0
- package/dist/templates/trellis/scripts/common/log.py +45 -0
- package/dist/templates/trellis/scripts/common/packages_context.py +239 -0
- package/dist/templates/trellis/scripts/common/parent_orchestration.py +691 -0
- package/dist/templates/trellis/scripts/common/paths.py +457 -0
- package/dist/templates/trellis/scripts/common/retrieval_adapter_metadata.py +889 -0
- package/dist/templates/trellis/scripts/common/retrieval_evidence.py +917 -0
- package/dist/templates/trellis/scripts/common/retrieval_pack.py +425 -0
- package/dist/templates/trellis/scripts/common/retrieval_pack_context.py +126 -0
- package/dist/templates/trellis/scripts/common/safe_commit.py +285 -0
- package/dist/templates/trellis/scripts/common/session_context.py +1159 -0
- package/dist/templates/trellis/scripts/common/session_memory.py +360 -0
- package/dist/templates/trellis/scripts/common/smart_search_evidence.py +479 -0
- package/dist/templates/trellis/scripts/common/smart_search_resolve.py +125 -0
- package/dist/templates/trellis/scripts/common/task_context.py +223 -0
- package/dist/templates/trellis/scripts/common/task_dashboard.py +140 -0
- package/dist/templates/trellis/scripts/common/task_gates.py +1735 -0
- package/dist/templates/trellis/scripts/common/task_map.py +586 -0
- package/dist/templates/trellis/scripts/common/task_queue.py +188 -0
- package/dist/templates/trellis/scripts/common/task_store.py +1533 -0
- package/dist/templates/trellis/scripts/common/task_utils.py +274 -0
- package/dist/templates/trellis/scripts/common/tasks.py +231 -0
- package/dist/templates/trellis/scripts/common/test_retrieval_arbitration.py +333 -0
- package/dist/templates/trellis/scripts/common/trellis_config.py +131 -0
- package/dist/templates/trellis/scripts/common/types.py +110 -0
- package/dist/templates/trellis/scripts/common/workflow_phase.py +212 -0
- package/dist/templates/trellis/scripts/get_context.py +17 -0
- package/dist/templates/trellis/scripts/get_developer.py +26 -0
- package/dist/templates/trellis/scripts/hooks/linear_sync.py +243 -0
- package/dist/templates/trellis/scripts/init_developer.py +51 -0
- package/dist/templates/trellis/scripts/route_codebase_retrieval.py +77 -0
- package/dist/templates/trellis/scripts/run_smart_search.py +12 -0
- package/dist/templates/trellis/scripts/search_artifacts.py +13 -0
- package/dist/templates/trellis/scripts/search_memory.py +12 -0
- package/dist/templates/trellis/scripts/task.py +851 -0
- package/dist/templates/trellis/tasks/.gitkeep +0 -0
- package/dist/templates/trellis/tasks/templates/release-execution/design.md +61 -0
- package/dist/templates/trellis/tasks/templates/release-execution/handoff-template.md +29 -0
- package/dist/templates/trellis/tasks/templates/release-execution/implement.md +29 -0
- package/dist/templates/trellis/tasks/templates/release-execution/prd.md +31 -0
- package/dist/templates/trellis/tasks/templates/release-readiness/design.md +50 -0
- package/dist/templates/trellis/tasks/templates/release-readiness/handoff-template.md +39 -0
- package/dist/templates/trellis/tasks/templates/release-readiness/implement.md +29 -0
- package/dist/templates/trellis/tasks/templates/release-readiness/prd.md +31 -0
- package/dist/templates/trellis/workflow.md +960 -0
- package/dist/types/ai-tools.d.ts +106 -0
- package/dist/types/ai-tools.d.ts.map +1 -0
- package/dist/types/ai-tools.js +294 -0
- package/dist/types/ai-tools.js.map +1 -0
- package/dist/types/migration.d.ts +125 -0
- package/dist/types/migration.d.ts.map +1 -0
- package/dist/types/migration.js +8 -0
- package/dist/types/migration.js.map +1 -0
- package/dist/utils/codebase-retrieval-router.d.ts +77 -0
- package/dist/utils/codebase-retrieval-router.d.ts.map +1 -0
- package/dist/utils/codebase-retrieval-router.js +767 -0
- package/dist/utils/codebase-retrieval-router.js.map +1 -0
- package/dist/utils/compare-versions.d.ts +12 -0
- package/dist/utils/compare-versions.d.ts.map +1 -0
- package/dist/utils/compare-versions.js +86 -0
- package/dist/utils/compare-versions.js.map +1 -0
- package/dist/utils/cwd-guard.d.ts +38 -0
- package/dist/utils/cwd-guard.d.ts.map +1 -0
- package/dist/utils/cwd-guard.js +62 -0
- package/dist/utils/cwd-guard.js.map +1 -0
- package/dist/utils/file-writer.d.ts +36 -0
- package/dist/utils/file-writer.d.ts.map +1 -0
- package/dist/utils/file-writer.js +203 -0
- package/dist/utils/file-writer.js.map +1 -0
- package/dist/utils/manifest-prune.d.ts +61 -0
- package/dist/utils/manifest-prune.d.ts.map +1 -0
- package/dist/utils/manifest-prune.js +136 -0
- package/dist/utils/manifest-prune.js.map +1 -0
- package/dist/utils/posix.d.ts +13 -0
- package/dist/utils/posix.d.ts.map +1 -0
- package/dist/utils/posix.js +15 -0
- package/dist/utils/posix.js.map +1 -0
- package/dist/utils/post-update-smoke.d.ts +7 -0
- package/dist/utils/post-update-smoke.d.ts.map +1 -0
- package/dist/utils/post-update-smoke.js +40 -0
- package/dist/utils/post-update-smoke.js.map +1 -0
- package/dist/utils/project-capabilities.d.ts +54 -0
- package/dist/utils/project-capabilities.d.ts.map +1 -0
- package/dist/utils/project-capabilities.js +515 -0
- package/dist/utils/project-capabilities.js.map +1 -0
- package/dist/utils/project-detector.d.ts +46 -0
- package/dist/utils/project-detector.d.ts.map +1 -0
- package/dist/utils/project-detector.js +666 -0
- package/dist/utils/project-detector.js.map +1 -0
- package/dist/utils/proxy.d.ts +25 -0
- package/dist/utils/proxy.d.ts.map +1 -0
- package/dist/utils/proxy.js +60 -0
- package/dist/utils/proxy.js.map +1 -0
- package/dist/utils/readiness.d.ts +20 -0
- package/dist/utils/readiness.d.ts.map +1 -0
- package/dist/utils/readiness.js +430 -0
- package/dist/utils/readiness.js.map +1 -0
- package/dist/utils/retrieval-execution-telemetry.d.ts +162 -0
- package/dist/utils/retrieval-execution-telemetry.d.ts.map +1 -0
- package/dist/utils/retrieval-execution-telemetry.js +288 -0
- package/dist/utils/retrieval-execution-telemetry.js.map +1 -0
- package/dist/utils/retrieval-result-ranking.d.ts +40 -0
- package/dist/utils/retrieval-result-ranking.d.ts.map +1 -0
- package/dist/utils/retrieval-result-ranking.js +162 -0
- package/dist/utils/retrieval-result-ranking.js.map +1 -0
- package/dist/utils/task-json.d.ts +13 -0
- package/dist/utils/task-json.d.ts.map +1 -0
- package/dist/utils/task-json.js +12 -0
- package/dist/utils/task-json.js.map +1 -0
- package/dist/utils/template-fetcher.d.ts +150 -0
- package/dist/utils/template-fetcher.d.ts.map +1 -0
- package/dist/utils/template-fetcher.js +907 -0
- package/dist/utils/template-fetcher.js.map +1 -0
- package/dist/utils/template-hash.d.ts +123 -0
- package/dist/utils/template-hash.d.ts.map +1 -0
- package/dist/utils/template-hash.js +334 -0
- package/dist/utils/template-hash.js.map +1 -0
- package/dist/utils/uninstall-scrubbers.d.ts +66 -0
- package/dist/utils/uninstall-scrubbers.d.ts.map +1 -0
- package/dist/utils/uninstall-scrubbers.js +342 -0
- package/dist/utils/uninstall-scrubbers.js.map +1 -0
- package/dist/utils/update-rollout-report.d.ts +137 -0
- package/dist/utils/update-rollout-report.d.ts.map +1 -0
- package/dist/utils/update-rollout-report.js +108 -0
- package/dist/utils/update-rollout-report.js.map +1 -0
- package/dist/utils/workflow-resolver.d.ts +86 -0
- package/dist/utils/workflow-resolver.d.ts.map +1 -0
- package/dist/utils/workflow-resolver.js +265 -0
- package/dist/utils/workflow-resolver.js.map +1 -0
- package/package.json +137 -0
- package/scripts/postinstall.js +45 -0
- package/vendor/smart-search/LICENSE +21 -0
- package/vendor/smart-search/README.md +412 -0
- package/vendor/smart-search/README.zh-CN.md +430 -0
- package/vendor/smart-search/npm/bin/smart-search.js +63 -0
- package/vendor/smart-search/npm/scripts/postinstall.js +87 -0
- package/vendor/smart-search/npm/scripts/resolve-prerelease-version.js +108 -0
- package/vendor/smart-search/npm/scripts/set-package-version.js +35 -0
- package/vendor/smart-search/npm/scripts/sync-python-version.js +22 -0
- package/vendor/smart-search/npm/scripts/test-wrapper-repair.js +99 -0
- package/vendor/smart-search/npm/scripts/test.js +85 -0
- package/vendor/smart-search/package.json +42 -0
- package/vendor/smart-search/pyproject.toml +37 -0
- package/vendor/smart-search/skills/smart-search-cli/SKILL.md +387 -0
- package/vendor/smart-search/skills/smart-search-cli/agents/openai.yaml +3 -0
- package/vendor/smart-search/skills/smart-search-cli/examples/batch-search.md +98 -0
- package/vendor/smart-search/skills/smart-search-cli/examples/evidence-gathering.md +89 -0
- package/vendor/smart-search/skills/smart-search-cli/references/cli-contract.md +337 -0
- package/vendor/smart-search/src/smart_search/__init__.py +1 -0
- package/vendor/smart-search/src/smart_search/assets/skills/smart-search-cli/SKILL.md +387 -0
- package/vendor/smart-search/src/smart_search/assets/skills/smart-search-cli/agents/openai.yaml +3 -0
- package/vendor/smart-search/src/smart_search/assets/skills/smart-search-cli/examples/batch-search.md +98 -0
- package/vendor/smart-search/src/smart_search/assets/skills/smart-search-cli/examples/evidence-gathering.md +89 -0
- package/vendor/smart-search/src/smart_search/assets/skills/smart-search-cli/references/cli-contract.md +337 -0
- package/vendor/smart-search/src/smart_search/cli.py +2003 -0
- package/vendor/smart-search/src/smart_search/config.py +580 -0
- package/vendor/smart-search/src/smart_search/logger.py +43 -0
- package/vendor/smart-search/src/smart_search/providers/__init__.py +16 -0
- package/vendor/smart-search/src/smart_search/providers/base.py +41 -0
- package/vendor/smart-search/src/smart_search/providers/context7.py +141 -0
- package/vendor/smart-search/src/smart_search/providers/exa.py +206 -0
- package/vendor/smart-search/src/smart_search/providers/jina.py +136 -0
- package/vendor/smart-search/src/smart_search/providers/openai_compatible.py +370 -0
- package/vendor/smart-search/src/smart_search/providers/zhipu.py +143 -0
- package/vendor/smart-search/src/smart_search/service.py +2865 -0
- package/vendor/smart-search/src/smart_search/sources.py +429 -0
- package/vendor/smart-search/src/smart_search/utils.py +220 -0
|
@@ -0,0 +1,515 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { getConfigTemplate as getCodexConfigTemplate } from "../templates/codex/index.js";
|
|
4
|
+
import { ensureDir, writeFile } from "./file-writer.js";
|
|
5
|
+
export const PROJECT_CAPABILITY_IDS = [
|
|
6
|
+
"codebase-retrieval",
|
|
7
|
+
"github-mcp",
|
|
8
|
+
"playwright-mcp",
|
|
9
|
+
];
|
|
10
|
+
const CAPABILITIES_JSON_PATH = ".trellis/capabilities.json";
|
|
11
|
+
const CAPABILITIES_MD_PATH = ".trellis/capabilities.md";
|
|
12
|
+
const CODEX_CAPABILITIES_START = "# TRELLIS:PROJECT-CAPABILITIES:START";
|
|
13
|
+
const CODEX_CAPABILITIES_END = "# TRELLIS:PROJECT-CAPABILITIES:END";
|
|
14
|
+
export const PROJECT_CAPABILITIES = [
|
|
15
|
+
{
|
|
16
|
+
id: "codebase-retrieval",
|
|
17
|
+
aliases: [
|
|
18
|
+
"fast-context-mcp",
|
|
19
|
+
"fast-context",
|
|
20
|
+
"fast_context",
|
|
21
|
+
"codegraph",
|
|
22
|
+
"colbymchenry/codegraph",
|
|
23
|
+
"colbymchenry-codegraph",
|
|
24
|
+
],
|
|
25
|
+
title: "Codebase retrieval",
|
|
26
|
+
description: "Role-based local code retrieval through exact search, AST/structure, LSP expansion, semantic recall, and verification.",
|
|
27
|
+
routing: "Use for codebase questions by retrieval role: extract exact identifiers, path hints, and policy phrases, run rg first, apply intent-gated policy/document-first routing for architecture, boundary, and storage-policy questions, apply other intent-gated branches (caller-chain, trap demotion, extension disambiguation, env/config literals) only when the question matches that class, expand structural candidates with CodeGraph when available and fresh enough, use LSP for navigation after candidate symbols/files exist, use fast-context for semantic recall last on policy/env-heavy queries, then promote only source/Git/test-backed findings to final claims.",
|
|
28
|
+
readiness: "Required exact search (`rg`) is available. Optional CodeGraph, LSP, and fast-context adapters are reported as available, unavailable, or unverified without startup side effects.",
|
|
29
|
+
fallback: [
|
|
30
|
+
"Install or expose `rg` on PATH before claiming codebase retrieval readiness.",
|
|
31
|
+
"Ensure `npx -y fast-context-mcp` and `npx -y @colbymchenry/codegraph serve --mcp` can launch before generated MCP adapter entries are claimed as usable.",
|
|
32
|
+
"If CodeGraph, LSP, or fast-context adapters are unavailable, skipped, stale, or uninvoked, label that adapter evidence as unverified and continue with exact search plus direct file reads.",
|
|
33
|
+
"Record exploratory retrieval chains in task `research/*.md`; record final source/Git/test proof and unresolved adapter gaps in `verify.md`.",
|
|
34
|
+
"Run indexing, host MCP smoke checks, or language-server startup only after explicit user approval.",
|
|
35
|
+
],
|
|
36
|
+
adapters: {
|
|
37
|
+
exact: {
|
|
38
|
+
provider: "rg",
|
|
39
|
+
required: true,
|
|
40
|
+
purpose: "Find identifiers, literals, paths, protocol constants, error codes, config keys, policy phrases, env prefixes, extension ids, and test names.",
|
|
41
|
+
readiness: "`rg` is available on PATH.",
|
|
42
|
+
evidenceStatus: "Corroborated candidate evidence when current file/range matches are captured; still not final proof without source/Git/test confirmation.",
|
|
43
|
+
},
|
|
44
|
+
ast: {
|
|
45
|
+
provider: "codegraph",
|
|
46
|
+
required: false,
|
|
47
|
+
purpose: "Resolve symbols, definitions, imports, callers, callees, impact, affected files, and structural relationships.",
|
|
48
|
+
readiness: "`npx -y @colbymchenry/codegraph serve --mcp` is available and index freshness is confirmed through status/query smoke or source/Git checks.",
|
|
49
|
+
evidenceStatus: "Structural candidate and impact guidance only; stale or unverified graph output must be confirmed with current source, Git, or tests.",
|
|
50
|
+
mcpServer: "codegraph",
|
|
51
|
+
},
|
|
52
|
+
lsp: {
|
|
53
|
+
provider: "language-server",
|
|
54
|
+
required: false,
|
|
55
|
+
purpose: "Expand high-confidence candidates through definitions, references, implementations, hover, and workspace symbols.",
|
|
56
|
+
readiness: "A project-appropriate language server is configured by the host; Trellis does not start it during init/update.",
|
|
57
|
+
evidenceStatus: "Navigation candidate until exact file/range evidence is verified by source reads.",
|
|
58
|
+
},
|
|
59
|
+
semantic: {
|
|
60
|
+
provider: "fast-context-mcp",
|
|
61
|
+
required: false,
|
|
62
|
+
purpose: "Recall conceptual or poorly named code areas and return candidate files, ranges, and follow-up grep terms.",
|
|
63
|
+
readiness: "`npx -y fast-context-mcp` is available to the host and a project-scoped smoke search is confirmed outside ordinary init/update.",
|
|
64
|
+
evidenceStatus: "Semantic recall candidate only; convert returned files/ranges/keywords into exact search and source reads before relying on it.",
|
|
65
|
+
mcpServer: "fast-context",
|
|
66
|
+
},
|
|
67
|
+
verification: {
|
|
68
|
+
provider: "source-git-tests",
|
|
69
|
+
required: true,
|
|
70
|
+
purpose: "Prove final claims with direct source reads, exact search confirmation, Git evidence, and focused validation.",
|
|
71
|
+
readiness: "Repository files are readable and task-appropriate validation commands are available or blockers are recorded.",
|
|
72
|
+
evidenceStatus: "Required proof layer for final technical claims and verification evidence.",
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
cliAutomationGuidance: [
|
|
76
|
+
{
|
|
77
|
+
command: "rg <pattern> <path>",
|
|
78
|
+
use: "Start with exact identifiers, literals, path hints, policy phrases, errors, config keys, and test names before broader semantic recall.",
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
command: 'rg -i "storage default|sidecar|sqlite only" AGENTS.md "**/AGENTS.md" README.md CONTRIBUTING.md .trellis/spec',
|
|
82
|
+
use: "For architecture, boundary, or storage/persistence policy questions (OpenClaw benchmark C-class, especially storage-policy queries), search project instruction and policy docs before implementation modules such as SQLite or state DB files.",
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
command: "Get-Content <file> | Select-Object -First <n>",
|
|
86
|
+
use: "Read current source around candidate file ranges before turning retrieval output into a claim.",
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
command: "git diff -- <path>",
|
|
90
|
+
use: "Check current worktree changes before claiming behavior, impact, or test scope.",
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
command: "codegraph status <path> --json",
|
|
94
|
+
use: "Check initialization, graph size, languages, backend, and pending changes before relying on graph output.",
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
command: "codegraph query <symbol-or-search> --path <path> --json",
|
|
98
|
+
use: "Resolve candidate symbols, kinds, files, and line ranges before running impact or relationship commands.",
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
command: "codegraph callers <symbol> --path <path> --json",
|
|
102
|
+
use: "Find upstream callers; raise result limits or paginate with rg when the question asks which modules/files invoke a facade, loader, or helper (do not stop at the helper definition file).",
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
command: "rg <env-prefix> scripts test e2e bench",
|
|
106
|
+
use: "For env/config literal questions, search scripts, e2e, benchmark, and test trees before auth or runtime implementation modules under src/.",
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
command: "rg <symbol> extensions/",
|
|
110
|
+
use: "For shared extension exports, list every extension hit, then disambiguate by extension id in the query and non-empty export bodies before global semantic explore.",
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
command: "codegraph callees <symbol> --path <path> --json",
|
|
114
|
+
use: "Find downstream calls and dependencies that constrain a safe change.",
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
command: "codegraph impact <symbol> --path <path> --depth <n> --json",
|
|
118
|
+
use: "Estimate blast radius for a resolved symbol before editing or reviewing a refactor.",
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
command: "codegraph affected <changed-files...> --path <path> --json",
|
|
122
|
+
use: "Map changed source files to affected tests when preparing validation scope.",
|
|
123
|
+
},
|
|
124
|
+
],
|
|
125
|
+
mcpServers: [
|
|
126
|
+
{
|
|
127
|
+
name: "fast-context",
|
|
128
|
+
command: "npx",
|
|
129
|
+
args: ["-y", "fast-context-mcp"],
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
name: "codegraph",
|
|
133
|
+
command: "npx",
|
|
134
|
+
args: ["-y", "@colbymchenry/codegraph", "serve", "--mcp"],
|
|
135
|
+
startupTimeoutSec: 120,
|
|
136
|
+
},
|
|
137
|
+
],
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
id: "github-mcp",
|
|
141
|
+
aliases: ["github"],
|
|
142
|
+
title: "GitHub MCP",
|
|
143
|
+
description: "GitHub repository, issue, pull request, and review operations.",
|
|
144
|
+
routing: "Use for explicit GitHub remote work; distinguish read-only inspection from write-capable issue, PR, branch, review, or merge actions.",
|
|
145
|
+
readiness: "Configured GitHub API MCP package is visible and `GITHUB_TOKEN` or `GITHUB_PERSONAL_ACCESS_TOKEN` is present in the agent host environment before remote actions are claimed.",
|
|
146
|
+
fallback: [
|
|
147
|
+
"Expose `GITHUB_TOKEN` or `GITHUB_PERSONAL_ACCESS_TOKEN` to the MCP server environment or configure the agent host explicitly.",
|
|
148
|
+
"Ensure `npx -y @modelcontextprotocol/server-github` can launch before selecting this capability.",
|
|
149
|
+
"Without a verified credential posture, use local Git only and do not claim GitHub remote actions.",
|
|
150
|
+
],
|
|
151
|
+
mcpServers: [
|
|
152
|
+
{
|
|
153
|
+
name: "github",
|
|
154
|
+
command: "npx",
|
|
155
|
+
args: ["-y", "@modelcontextprotocol/server-github"],
|
|
156
|
+
},
|
|
157
|
+
],
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
id: "playwright-mcp",
|
|
161
|
+
aliases: ["playwright"],
|
|
162
|
+
title: "Playwright MCP",
|
|
163
|
+
description: "Browser automation, frontend behavior checks, screenshots, and UI smoke verification.",
|
|
164
|
+
routing: "Use for browser/UI verification when the task requires rendered behavior evidence; keep browser/session startup explicit.",
|
|
165
|
+
readiness: "Configured server and browser runtime are available without silently starting unrelated browsing sessions.",
|
|
166
|
+
fallback: [
|
|
167
|
+
"Verify the Playwright MCP package and browser runtime in the selected host before claiming rendered UI evidence.",
|
|
168
|
+
"If browser automation is unavailable, record the missing runtime and fall back to static checks or manual user verification.",
|
|
169
|
+
],
|
|
170
|
+
mcpServers: [
|
|
171
|
+
{
|
|
172
|
+
name: "playwright",
|
|
173
|
+
command: "npx",
|
|
174
|
+
args: ["-y", "@playwright/mcp@latest"],
|
|
175
|
+
startupTimeoutSec: 120,
|
|
176
|
+
},
|
|
177
|
+
],
|
|
178
|
+
},
|
|
179
|
+
];
|
|
180
|
+
const CAPABILITY_BY_TOKEN = new Map();
|
|
181
|
+
for (const capability of PROJECT_CAPABILITIES) {
|
|
182
|
+
CAPABILITY_BY_TOKEN.set(capability.id, capability.id);
|
|
183
|
+
for (const alias of capability.aliases) {
|
|
184
|
+
CAPABILITY_BY_TOKEN.set(alias, capability.id);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
function selectedSet(selected) {
|
|
188
|
+
return new Set(selected);
|
|
189
|
+
}
|
|
190
|
+
function tokenizeProjectCapabilityValues(values) {
|
|
191
|
+
return (values ?? [])
|
|
192
|
+
.flatMap((value) => value.split(","))
|
|
193
|
+
.map((value) => value.trim().toLowerCase())
|
|
194
|
+
.filter(Boolean);
|
|
195
|
+
}
|
|
196
|
+
function capabilityById(id) {
|
|
197
|
+
const capability = PROJECT_CAPABILITIES.find((item) => item.id === id);
|
|
198
|
+
if (!capability) {
|
|
199
|
+
throw new Error(`Unknown project capability: ${id}`);
|
|
200
|
+
}
|
|
201
|
+
return capability;
|
|
202
|
+
}
|
|
203
|
+
function uniqueInRegistryOrder(values) {
|
|
204
|
+
const requested = new Set(values);
|
|
205
|
+
return PROJECT_CAPABILITY_IDS.filter((id) => requested.has(id));
|
|
206
|
+
}
|
|
207
|
+
function uniqueMcpServers(selected) {
|
|
208
|
+
const servers = new Map();
|
|
209
|
+
for (const id of uniqueInRegistryOrder(selected)) {
|
|
210
|
+
for (const server of capabilityById(id).mcpServers) {
|
|
211
|
+
if (!servers.has(server.name)) {
|
|
212
|
+
servers.set(server.name, server);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
return [...servers.values()];
|
|
217
|
+
}
|
|
218
|
+
function renderCapabilityAdapters(adapters) {
|
|
219
|
+
if (!adapters) {
|
|
220
|
+
return undefined;
|
|
221
|
+
}
|
|
222
|
+
return Object.fromEntries(Object.entries(adapters).map(([role, adapter]) => [
|
|
223
|
+
role,
|
|
224
|
+
{
|
|
225
|
+
provider: adapter.provider,
|
|
226
|
+
required: adapter.required,
|
|
227
|
+
purpose: adapter.purpose,
|
|
228
|
+
readiness: adapter.readiness,
|
|
229
|
+
evidence_status: adapter.evidenceStatus,
|
|
230
|
+
...(adapter.mcpServer ? { mcp_server: adapter.mcpServer } : {}),
|
|
231
|
+
},
|
|
232
|
+
]));
|
|
233
|
+
}
|
|
234
|
+
function parseStoredProjectCapabilities(values) {
|
|
235
|
+
const selected = new Set();
|
|
236
|
+
for (const token of tokenizeProjectCapabilityValues(values)) {
|
|
237
|
+
if (token === "none") {
|
|
238
|
+
continue;
|
|
239
|
+
}
|
|
240
|
+
if (token === "all") {
|
|
241
|
+
for (const id of PROJECT_CAPABILITY_IDS) {
|
|
242
|
+
selected.add(id);
|
|
243
|
+
}
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
const id = CAPABILITY_BY_TOKEN.get(token);
|
|
247
|
+
if (id) {
|
|
248
|
+
selected.add(id);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return uniqueInRegistryOrder(selected);
|
|
252
|
+
}
|
|
253
|
+
export function parseProjectCapabilities(values) {
|
|
254
|
+
const selected = new Set();
|
|
255
|
+
for (const token of tokenizeProjectCapabilityValues(values)) {
|
|
256
|
+
if (token === "none") {
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
if (token === "all") {
|
|
260
|
+
for (const id of PROJECT_CAPABILITY_IDS) {
|
|
261
|
+
selected.add(id);
|
|
262
|
+
}
|
|
263
|
+
continue;
|
|
264
|
+
}
|
|
265
|
+
const id = CAPABILITY_BY_TOKEN.get(token);
|
|
266
|
+
if (!id) {
|
|
267
|
+
throw new Error(`Unknown project capability "${token}". Known values: ${[
|
|
268
|
+
...PROJECT_CAPABILITY_IDS,
|
|
269
|
+
"all",
|
|
270
|
+
"none",
|
|
271
|
+
].join(", ")}`);
|
|
272
|
+
}
|
|
273
|
+
selected.add(id);
|
|
274
|
+
}
|
|
275
|
+
return uniqueInRegistryOrder(selected);
|
|
276
|
+
}
|
|
277
|
+
export function getProjectCapabilityChoices() {
|
|
278
|
+
return PROJECT_CAPABILITIES.map((capability) => ({
|
|
279
|
+
id: capability.id,
|
|
280
|
+
name: `${capability.title} - ${capability.description}`,
|
|
281
|
+
}));
|
|
282
|
+
}
|
|
283
|
+
export function renderCapabilitiesJson(selected) {
|
|
284
|
+
const selectedIds = uniqueInRegistryOrder(selected);
|
|
285
|
+
const selectedLookup = selectedSet(selectedIds);
|
|
286
|
+
const capabilities = Object.fromEntries(PROJECT_CAPABILITIES.map((capability) => {
|
|
287
|
+
const adapters = renderCapabilityAdapters(capability.adapters);
|
|
288
|
+
return [
|
|
289
|
+
capability.id,
|
|
290
|
+
{
|
|
291
|
+
selected: selectedLookup.has(capability.id),
|
|
292
|
+
mcp_servers: capability.mcpServers.map((server) => ({
|
|
293
|
+
name: server.name,
|
|
294
|
+
command: server.command,
|
|
295
|
+
args: server.args,
|
|
296
|
+
...(server.startupTimeoutSec
|
|
297
|
+
? { startup_timeout_sec: server.startupTimeoutSec }
|
|
298
|
+
: {}),
|
|
299
|
+
})),
|
|
300
|
+
routing: capability.routing,
|
|
301
|
+
readiness: capability.readiness,
|
|
302
|
+
fallback: capability.fallback,
|
|
303
|
+
...(adapters ? { adapters } : {}),
|
|
304
|
+
...(capability.cliAutomationGuidance
|
|
305
|
+
? { cli_automation_guidance: capability.cliAutomationGuidance }
|
|
306
|
+
: {}),
|
|
307
|
+
...(capability.mcpQueryGuidance
|
|
308
|
+
? { mcp_query_guidance: capability.mcpQueryGuidance }
|
|
309
|
+
: {}),
|
|
310
|
+
},
|
|
311
|
+
];
|
|
312
|
+
}));
|
|
313
|
+
return `${JSON.stringify({
|
|
314
|
+
schema_version: 2,
|
|
315
|
+
note: "Trellis-managed project capability selection. Credentials and global MCP/client config stay outside repository templates.",
|
|
316
|
+
selected: selectedIds,
|
|
317
|
+
capabilities,
|
|
318
|
+
}, null, 2)}\n`;
|
|
319
|
+
}
|
|
320
|
+
export function getProjectCapability(id) {
|
|
321
|
+
return capabilityById(id);
|
|
322
|
+
}
|
|
323
|
+
function appendPolicyDocumentRetrievalRouting(lines) {
|
|
324
|
+
lines.push("## Policy and Document-First Routing (intent-gated)", "", "Apply this branch when the question is about architecture, responsibility, ownership, boundaries, project or package policy, storage or persistence policy, conventions, or where behavior is allowed, forbidden, or defined in instructions—not when the question names an exact symbol, protocol constant, schema path, platform file, or version literal (those stay symbol/path-first for strong A/G/F/J routes).", "", "Trigger signals include: 规定 / 边界 / 为什么不能 / storage policy / persistence / sidecar / import boundaries / transport-only / project instructions / AGENTS conventions.", "", "Evidence order for policy/document queries:", "", "1. Root and nested `AGENTS.md`, then `.trellis/spec/**`, `README.md`, `CONTRIBUTING.md`, architecture or design docs, and package-level policy or contract instruction files.", "2. Exact `rg` on policy phrases and boundary terms scoped to those paths (for example `Storage default: SQLite only`, `sidecar`, `SQLite only`, transport-only, import boundary).", "3. Read matched policy sections with direct source reads before ranking implementation files as Top-1.", "4. Use AST/CodeGraph or semantic recall only to corroborate policy claims or locate related implementation; do not let SQLite/state/cache modules outrank root policy docs when the question asks what is allowed or forbidden.", "5. Verify with source reads before final claims; optional adapters remain optional.", "", "### Storage and persistence policy (benchmark C03 pattern)", "", "When the question asks how storage is chosen, why sidecar files for cache or queue are forbidden, or SQLite vs JSON/JSONL policy: inspect root `AGENTS.md` (and nested `**/AGENTS.md`) before `src/state/*`, Kysely, or other storage implementation modules. Target Top-1 policy evidence such as `Storage default: SQLite only`, `state/openclaw.sqlite`, and `Kysely` cited from instruction docs, not from implementation adjacency alone. OpenClaw audit acceptance target for this query class: `>= 4/6` when agents follow this route.", "");
|
|
325
|
+
}
|
|
326
|
+
function appendCodebaseRetrievalIntentBranches(lines) {
|
|
327
|
+
lines.push("## Query Intent Branches (intent-gated)", "", "Apply these branches only when the question matches the intent class. Do not reorder the global workflow for F/G protocol queries, platform file paths, or questions with a single named symbol or constant—keep exact `rg` and symbol-scoped CodeGraph first.", "", "### Caller and assembly chain (B-class)", "", "- Use when the question asks who calls, which modules invoke, where behavior is wired, or which facade modules delegate work.", "- Do not treat facade-runtime, loader, barrel, plugin-registry-snapshot, or a single deliver/helper file as sufficient Top-1 evidence when the rubric expects many concrete call sites.", "- After exact hits on the helper or symbol, run `codegraph callers` with a raised limit (or repeat with `rg` references/imports) until concrete callee modules appear; follow assembly nodes (`*-runtime`, `server-runtime-services`, registry entry vs snapshot) with `codegraph callees` or targeted `rg`.", "- Rank concrete call-site files above the file that only defines or loads the helper.", "", "### Trap demotion and package boundary (E-class)", "", "- Use when similarly named files exist in a different package or layer (for example `src/agents/*` vs `packages/*-core`).", "- Parse path and package hints in the query; demote trap candidates until an export, protocol type, or corroborating call site matches the asked layer.", "- Prefer `packages/<name>/` evidence when the question names a core library; demote spawn/runtime overlay traps that share a prefix but live in agent glue code.", "- Do not promote a trap file to Top-1 without reading exports and at least one confirming reference.", "", "### Extension and shared-symbol disambiguation (A-class)", "", "- Use when one symbol (for example `legacyConfigRules`) appears across many `extensions/` trees.", "- Run exact `rg` across `extensions/` first; filter by extension id or directory named in the question.", "- Prefer the first non-empty export with a real implementation over stub or empty `doctor-contract-api` paths; demote traps listed in eval/query context when present.", "- Run CodeGraph explore only after the extension candidate set is narrowed—not as an unscoped global symbol search.", "", "### Environment and config literals (D-class)", "", "- Use when the question names env vars, `OPENCLAW_*` prefixes, benchmark startup, or e2e script configuration.", "- Run exact `rg` on `scripts/`, `test/`, `e2e/`, and `bench/` (or project equivalents) before `src/` auth, token, or runtime conflict modules.", "- Prefer files that assign or read the literal in scripts over implementation files that only mention the prefix in error handling.", "- Use CodeGraph after literal hits exist; do not let auth/runtime implementation outrank script evidence for env-inventory questions.", "", "### Preserve strong routes (F / G / exact symbol)", "", "- Platform paths (`apps/ios`, `apps/android`, Swift/Kotlin trees), `packages/gateway-protocol`, contract/schema globs, and named constants: exact `rg` plus symbol-scoped `codegraph_search` stay primary.", "- Do not run policy-first, trap demotion, or env-before-`src/` passes ahead of exact symbol discovery for those queries.", "");
|
|
328
|
+
}
|
|
329
|
+
function appendCodebaseRetrievalWorkflow(lines) {
|
|
330
|
+
lines.push("## Codebase Retrieval Workflow", "", "1. Extract exact identifiers, literals, path hints, policy phrases, command names, error text, config keys, env prefixes, extension ids, routes, event names, task names, and test names from the question.", "2. Run exact `rg` search first when exact signals exist and keep file/range candidates tied to source evidence.", "3. Classify intent (policy/document, caller-chain, trap/package, extension spread, env literal, protocol/platform) and apply **Policy and Document-First Routing** or the matching branch from **Query Intent Branches** when it fits; skip branches that do not match.", "4. Use AST/CodeGraph when available and fresh enough to resolve symbols, imports, callers, callees, impact, and affected files.", "5. Use LSP navigation only after candidate files or symbols exist; do not use it as the broad first-pass search.", "6. Use semantic recall for conceptual, poorly named, or cross-cutting areas, then turn returned files/ranges/keywords into exact follow-up checks; deprioritize semantic Top-1 for policy/storage-policy, env-literal, and extension-disambiguation questions until policy docs or `rg` narrow candidates.", "7. Fuse candidates by source proximity, tests, current Git state, and adapter freshness.", "8. Read files, inspect relevant Git evidence, and run task-appropriate validation before making final behavior, impact, or test-coverage claims.", "", "## Codebase Evidence Levels", "", "- Candidate: filenames, semantic recall, initial graph/LSP output, or incomplete exact search. Candidate evidence cannot support final claims.", "- Corroborated candidate: current source reads or exact `rg` hits confirm the candidate exists in this checkout. Use it to plan deeper reads or tests.", "- Verified claim: current source lines plus Git evidence or focused validation support the statement. Use this level for final answers and `verify.md`.", "- Unverified / unavailable: adapter output is stale, skipped, unavailable, hidden from the host, or not invoked. Report it explicitly instead of claiming it.", "", "## Evidence Persistence", "", "- Record exploratory retrieval chains, adapter availability, freshness checks, and competing hypotheses in task `research/*.md`.", "- Record final source/Git/test proof, validation commands, and unresolved adapter gaps in `verify.md`.", "- Prefer reusable research frontmatter when the artifact should be rediscovered later: `doc_type`, `status`, `confidence`, `scope`, and `related_files`.", "", "## Fallback Sequence", "", "- If `rg` is missing, codebase retrieval readiness fails; install or expose `rg` before claiming readiness.", "- If CodeGraph, LSP, or fast-context are unavailable or unverified, continue with exact search, direct source reads, Git evidence, and focused tests.", "- Do not start MCP servers, initialize indexes, start language servers, or install tools without explicit user approval.", "", "## Adapter Roles", "");
|
|
331
|
+
const adapters = capabilityById("codebase-retrieval").adapters ?? {};
|
|
332
|
+
for (const [role, adapter] of Object.entries(adapters)) {
|
|
333
|
+
lines.push(`### ${role}`, "", `- Provider: ${adapter.provider}`, `- Required: ${adapter.required ? "yes" : "no"}`, `- Purpose: ${adapter.purpose}`, `- Readiness: ${adapter.readiness}`, `- Evidence status: ${adapter.evidenceStatus}`, "");
|
|
334
|
+
}
|
|
335
|
+
appendCodebaseRetrievalIntentBranches(lines);
|
|
336
|
+
}
|
|
337
|
+
export function renderCapabilitiesMarkdown(selected) {
|
|
338
|
+
const selectedIds = uniqueInRegistryOrder(selected);
|
|
339
|
+
const lines = [
|
|
340
|
+
"# Trellis Project Capabilities",
|
|
341
|
+
"",
|
|
342
|
+
"This file records selected project capabilities for the Trellis workflow. It does not store credentials and does not prove readiness by itself.",
|
|
343
|
+
"",
|
|
344
|
+
"## Selected",
|
|
345
|
+
"",
|
|
346
|
+
];
|
|
347
|
+
if (selectedIds.length === 0) {
|
|
348
|
+
lines.push("- none");
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
for (const id of selectedIds) {
|
|
352
|
+
const capability = capabilityById(id);
|
|
353
|
+
lines.push(`- ${capability.id}: ${capability.description}`);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
lines.push("", "## Routing Rules", "", "- Unselected, unavailable, skipped, or uninvoked capabilities must not be reported as used.", "- Capability output that affects task decisions must be recorded in task research or verify evidence.", "- `codebase-retrieval` routes by retrieval role, not by tool brand: exact search, intent-gated policy/document-first routing for C-class questions, other intent-gated branches when the question class matches, AST/structure, LSP navigation, semantic recall, then verification.", "- Policy, architecture, boundary, and storage-policy questions must inspect `AGENTS.md`, `.trellis/spec/**`, and README/contributing/architecture docs before semantic implementation search.", "- Intent-gated branches (policy/document, caller-chain, trap demotion, extension disambiguation, env/config literals) must not override exact-symbol or F/G protocol routes.", "- Exact `rg` search and direct source reads are the baseline for current-code claims.", "- CodeGraph output is structural guidance until index freshness and current source/Git evidence are confirmed.", "- fast-context output is semantic recall only and must be converted into exact source checks before final claims.", "- GitHub MCP uses the GitHub API server package; remote writes require explicit user intent and the host's credential/tool posture must be clear.", "- Playwright MCP should be used for rendered UI evidence only when browser verification is part of the task.", "");
|
|
357
|
+
if (selectedIds.includes("codebase-retrieval")) {
|
|
358
|
+
appendPolicyDocumentRetrievalRouting(lines);
|
|
359
|
+
appendCodebaseRetrievalWorkflow(lines);
|
|
360
|
+
}
|
|
361
|
+
const selectedWithCliAutomation = selectedIds
|
|
362
|
+
.map(capabilityById)
|
|
363
|
+
.filter((capability) => (capability.cliAutomationGuidance?.length ?? 0) > 0);
|
|
364
|
+
if (selectedWithCliAutomation.length > 0) {
|
|
365
|
+
lines.push("## CLI Automation Guidance", "");
|
|
366
|
+
for (const capability of selectedWithCliAutomation) {
|
|
367
|
+
lines.push(`### ${capability.id}`, "", "- Run these commands only after the capability is selected and readiness/freshness has been verified or explicitly reported as unverified.", "- Treat adapter output as planning guidance until current source, Git, or tests confirm the claim.");
|
|
368
|
+
for (const hint of capability.cliAutomationGuidance ?? []) {
|
|
369
|
+
lines.push(`- \`${hint.command}\`: ${hint.use}`);
|
|
370
|
+
}
|
|
371
|
+
lines.push("");
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
const selectedWithQueryGuidance = selectedIds
|
|
375
|
+
.map(capabilityById)
|
|
376
|
+
.filter((capability) => (capability.mcpQueryGuidance?.length ?? 0) > 0);
|
|
377
|
+
if (selectedWithQueryGuidance.length > 0) {
|
|
378
|
+
lines.push("## MCP Query Guidance", "");
|
|
379
|
+
for (const capability of selectedWithQueryGuidance) {
|
|
380
|
+
lines.push(`### ${capability.id}`, "", "- Use these MCP query tools only after the capability is selected and the user explicitly approves any MCP runtime startup.", "- Treat tool output as orientation unless freshness is confirmed; source reads, Git, and tests remain the proof layer for current-code claims.");
|
|
381
|
+
for (const hint of capability.mcpQueryGuidance ?? []) {
|
|
382
|
+
lines.push(`- \`${hint.tool}\`: ${hint.use}`);
|
|
383
|
+
}
|
|
384
|
+
lines.push("");
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
lines.push("## Readiness Expectations", "");
|
|
388
|
+
for (const capability of PROJECT_CAPABILITIES) {
|
|
389
|
+
lines.push(`- ${capability.id}: ${capability.readiness}`);
|
|
390
|
+
}
|
|
391
|
+
lines.push("", "## Fallback Guidance", "");
|
|
392
|
+
if (selectedIds.length === 0) {
|
|
393
|
+
lines.push("- none");
|
|
394
|
+
}
|
|
395
|
+
else {
|
|
396
|
+
for (const id of selectedIds) {
|
|
397
|
+
const capability = capabilityById(id);
|
|
398
|
+
lines.push(`### ${capability.id}`, "");
|
|
399
|
+
for (const fallback of capability.fallback) {
|
|
400
|
+
lines.push(`- ${fallback}`);
|
|
401
|
+
}
|
|
402
|
+
lines.push("");
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
return `${lines.join("\n")}\n`;
|
|
406
|
+
}
|
|
407
|
+
function tomlString(value) {
|
|
408
|
+
return JSON.stringify(value);
|
|
409
|
+
}
|
|
410
|
+
function tomlArray(values) {
|
|
411
|
+
return `[${values.map(tomlString).join(", ")}]`;
|
|
412
|
+
}
|
|
413
|
+
function renderCodexCapabilityBlock(selected) {
|
|
414
|
+
const selectedIds = uniqueInRegistryOrder(selected);
|
|
415
|
+
if (selectedIds.length === 0) {
|
|
416
|
+
return "";
|
|
417
|
+
}
|
|
418
|
+
const lines = [
|
|
419
|
+
CODEX_CAPABILITIES_START,
|
|
420
|
+
"# Project-local MCP servers selected through Trellis.",
|
|
421
|
+
"# Credentials stay in the agent host environment or user-level config.",
|
|
422
|
+
];
|
|
423
|
+
for (const server of uniqueMcpServers(selectedIds)) {
|
|
424
|
+
lines.push("", `[mcp_servers.${server.name}]`, `command = ${tomlString(server.command)}`, `args = ${tomlArray(server.args)}`);
|
|
425
|
+
if (server.startupTimeoutSec) {
|
|
426
|
+
lines.push(`startup_timeout_sec = ${server.startupTimeoutSec}`);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
lines.push(CODEX_CAPABILITIES_END);
|
|
430
|
+
return lines.join("\n");
|
|
431
|
+
}
|
|
432
|
+
export function applyCodexCapabilityConfig(baseContent, selected) {
|
|
433
|
+
const escapedStart = CODEX_CAPABILITIES_START.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
434
|
+
const escapedEnd = CODEX_CAPABILITIES_END.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
435
|
+
const withoutExistingBlock = baseContent
|
|
436
|
+
.replace(new RegExp(`\\n*${escapedStart}[\\s\\S]*?${escapedEnd}\\n*`), "\n")
|
|
437
|
+
.trimEnd();
|
|
438
|
+
const block = renderCodexCapabilityBlock(selected);
|
|
439
|
+
if (!block) {
|
|
440
|
+
return `${withoutExistingBlock}\n`;
|
|
441
|
+
}
|
|
442
|
+
return `${withoutExistingBlock}\n\n${block}\n`;
|
|
443
|
+
}
|
|
444
|
+
export function renderMcpJson(selected) {
|
|
445
|
+
const servers = Object.fromEntries(uniqueMcpServers(selected).map((server) => [
|
|
446
|
+
server.name,
|
|
447
|
+
{
|
|
448
|
+
command: server.command,
|
|
449
|
+
args: server.args,
|
|
450
|
+
},
|
|
451
|
+
]));
|
|
452
|
+
return `${JSON.stringify({ mcpServers: servers }, null, 2)}\n`;
|
|
453
|
+
}
|
|
454
|
+
export function buildProjectCapabilityTemplates(selected, platforms) {
|
|
455
|
+
const selectedIds = uniqueInRegistryOrder(selected);
|
|
456
|
+
const files = new Map();
|
|
457
|
+
if (selectedIds.length === 0) {
|
|
458
|
+
return files;
|
|
459
|
+
}
|
|
460
|
+
files.set(CAPABILITIES_JSON_PATH, renderCapabilitiesJson(selectedIds));
|
|
461
|
+
files.set(CAPABILITIES_MD_PATH, renderCapabilitiesMarkdown(selectedIds));
|
|
462
|
+
const platformSet = new Set(platforms);
|
|
463
|
+
if (platformSet.has("codex")) {
|
|
464
|
+
const config = getCodexConfigTemplate();
|
|
465
|
+
files.set(`.codex/${config.targetPath}`, applyCodexCapabilityConfig(config.content, selectedIds));
|
|
466
|
+
}
|
|
467
|
+
if (platformSet.has("claude-code")) {
|
|
468
|
+
files.set(".mcp.json", renderMcpJson(selectedIds));
|
|
469
|
+
}
|
|
470
|
+
if (platformSet.has("cursor")) {
|
|
471
|
+
files.set(".cursor/mcp.json", renderMcpJson(selectedIds));
|
|
472
|
+
}
|
|
473
|
+
return files;
|
|
474
|
+
}
|
|
475
|
+
export async function writeProjectCapabilityFiles(cwd, selected, platforms) {
|
|
476
|
+
const files = buildProjectCapabilityTemplates(selected, platforms);
|
|
477
|
+
if (files.size === 0) {
|
|
478
|
+
return;
|
|
479
|
+
}
|
|
480
|
+
for (const [relativePath, content] of files) {
|
|
481
|
+
const targetPath = path.join(cwd, ...relativePath.split("/"));
|
|
482
|
+
ensureDir(path.dirname(targetPath));
|
|
483
|
+
if (relativePath === ".codex/config.toml" &&
|
|
484
|
+
fs.existsSync(targetPath) &&
|
|
485
|
+
normalizeLineEndings(fs.readFileSync(targetPath, "utf-8")) ===
|
|
486
|
+
normalizeLineEndings(getCodexConfigTemplate().content)) {
|
|
487
|
+
fs.writeFileSync(targetPath, content);
|
|
488
|
+
continue;
|
|
489
|
+
}
|
|
490
|
+
await writeFile(targetPath, content);
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
function normalizeLineEndings(content) {
|
|
494
|
+
return content.replace(/\r\n/g, "\n");
|
|
495
|
+
}
|
|
496
|
+
export function loadProjectCapabilities(cwd) {
|
|
497
|
+
const filePath = path.join(cwd, ...CAPABILITIES_JSON_PATH.split("/"));
|
|
498
|
+
if (!fs.existsSync(filePath)) {
|
|
499
|
+
return [];
|
|
500
|
+
}
|
|
501
|
+
try {
|
|
502
|
+
const parsed = JSON.parse(fs.readFileSync(filePath, "utf-8"));
|
|
503
|
+
if (!Array.isArray(parsed.selected)) {
|
|
504
|
+
return [];
|
|
505
|
+
}
|
|
506
|
+
return parseStoredProjectCapabilities(parsed.selected.filter((item) => typeof item === "string"));
|
|
507
|
+
}
|
|
508
|
+
catch {
|
|
509
|
+
return [];
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
export function collectProjectCapabilityTemplates(cwd, platforms) {
|
|
513
|
+
return buildProjectCapabilityTemplates(loadProjectCapabilities(cwd), platforms);
|
|
514
|
+
}
|
|
515
|
+
//# sourceMappingURL=project-capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-capabilities.js","sourceRoot":"","sources":["../../src/utils/project-capabilities.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project type detected by analyzing project files
|
|
3
|
+
*/
|
|
4
|
+
export type ProjectType = "frontend" | "backend" | "fullstack" | "unknown";
|
|
5
|
+
/**
|
|
6
|
+
* Detect project type by analyzing project files
|
|
7
|
+
*
|
|
8
|
+
* @param cwd - Current working directory to analyze
|
|
9
|
+
* @returns Detected project type
|
|
10
|
+
*/
|
|
11
|
+
export declare function detectProjectType(cwd: string): ProjectType;
|
|
12
|
+
/**
|
|
13
|
+
* Get human-readable description of project type
|
|
14
|
+
*/
|
|
15
|
+
export declare function getProjectTypeDescription(type: ProjectType): string;
|
|
16
|
+
/**
|
|
17
|
+
* Detected package in a monorepo workspace
|
|
18
|
+
*/
|
|
19
|
+
export interface DetectedPackage {
|
|
20
|
+
/** Package name (from package.json, Cargo.toml, go.mod, etc.) */
|
|
21
|
+
name: string;
|
|
22
|
+
/** Relative path from cwd, normalized (no ./ prefix or trailing /) */
|
|
23
|
+
path: string;
|
|
24
|
+
/** Project type detected via detectProjectType() */
|
|
25
|
+
type: ProjectType;
|
|
26
|
+
/** Whether this package is a git submodule */
|
|
27
|
+
isSubmodule: boolean;
|
|
28
|
+
/** Whether this package has its own .git (independent repo, e.g. polyrepo sibling) */
|
|
29
|
+
isGitRepo: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Sanitize a package name for use as a directory name.
|
|
33
|
+
* Strips npm scope prefix (@scope/) so "@zhubao/desktop" becomes "desktop".
|
|
34
|
+
*/
|
|
35
|
+
export declare function sanitizePkgName(name: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Detect monorepo workspace configuration and enumerate packages.
|
|
38
|
+
*
|
|
39
|
+
* Checks workspace managers in priority order (pnpm → npm/yarn/bun → Cargo → Go → uv),
|
|
40
|
+
* merges results, and marks git submodules. Returns null if no monorepo detected.
|
|
41
|
+
*
|
|
42
|
+
* @param cwd - Repository root to analyze
|
|
43
|
+
* @returns Array of detected packages, null if not a monorepo, empty array if config exists but no packages found
|
|
44
|
+
*/
|
|
45
|
+
export declare function detectMonorepo(cwd: string): DetectedPackage[] | null;
|
|
46
|
+
//# sourceMappingURL=project-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-detector.d.ts","sourceRoot":"","sources":["../../src/utils/project-detector.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,CAAC;AAiK3E;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAqB1D;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAWnE;AAMD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,IAAI,EAAE,WAAW,CAAC;IAClB,8CAA8C;IAC9C,WAAW,EAAE,OAAO,CAAC;IACrB,sFAAsF;IACtF,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAsYD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,EAAE,GAAG,IAAI,CAyHpE"}
|