frappe-builder 1.1.0-dev.8
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/.fb/state.db +0 -0
- package/AGENTS.md +167 -0
- package/README.md +89 -0
- package/_bmad/_config/agent-manifest.csv +10 -0
- package/_bmad/_config/agents/bmm-analyst.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-architect.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-dev.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-pm.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-qa.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-quick-flow-solo-dev.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-sm.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-tech-writer.customize.yaml +41 -0
- package/_bmad/_config/agents/bmm-ux-designer.customize.yaml +41 -0
- package/_bmad/_config/bmad-help.csv +47 -0
- package/_bmad/_config/files-manifest.csv +369 -0
- package/_bmad/_config/ides/claude-code.yaml +5 -0
- package/_bmad/_config/manifest.yaml +28 -0
- package/_bmad/_config/skill-manifest.csv +41 -0
- package/_bmad/_config/task-manifest.csv +1 -0
- package/_bmad/_config/tool-manifest.csv +1 -0
- package/_bmad/_config/workflow-manifest.csv +1 -0
- package/_bmad/_memory/config.yaml +11 -0
- package/_bmad/_memory/tech-writer-sidecar/documentation-standards.md +224 -0
- package/_bmad/bmm/agents/analyst.md +69 -0
- package/_bmad/bmm/agents/architect.md +59 -0
- package/_bmad/bmm/agents/bmad-skill-manifest.yaml +39 -0
- package/_bmad/bmm/agents/dev.md +66 -0
- package/_bmad/bmm/agents/pm.md +63 -0
- package/_bmad/bmm/agents/qa.md +89 -0
- package/_bmad/bmm/agents/quick-flow-solo-dev.md +61 -0
- package/_bmad/bmm/agents/sm.md +67 -0
- package/_bmad/bmm/agents/tech-writer/bmad-skill-manifest.yaml +3 -0
- package/_bmad/bmm/agents/tech-writer/tech-writer.md +67 -0
- package/_bmad/bmm/agents/ux-designer.md +58 -0
- package/_bmad/bmm/config.yaml +16 -0
- package/_bmad/bmm/data/project-context-template.md +26 -0
- package/_bmad/bmm/module-help.csv +32 -0
- package/_bmad/bmm/teams/default-party.csv +20 -0
- package/_bmad/bmm/teams/team-fullstack.yaml +12 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/SKILL.md +6 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/product-brief.template.md +10 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01-init.md +170 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-01b-continue.md +158 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-02-vision.md +193 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-03-users.md +196 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-04-metrics.md +199 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-05-scope.md +213 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/steps/step-06-complete.md +159 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-create-product-brief/workflow.md +55 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/SKILL.md +88 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/agents/artifact-analyzer.md +60 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/agents/opportunity-reviewer.md +44 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/agents/skeptic-reviewer.md +44 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/agents/web-researcher.md +49 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/bmad-manifest.json +17 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/prompts/contextual-discovery.md +57 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/prompts/draft-and-review.md +86 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/prompts/finalize.md +75 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/prompts/guided-elicitation.md +70 -0
- package/_bmad/bmm/workflows/1-analysis/bmad-product-brief-preview/resources/brief-template.md +60 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-domain-research/SKILL.md +6 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-domain-research/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-01-init.md +137 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-02-domain-analysis.md +229 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-03-competitive-landscape.md +238 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-04-regulatory-focus.md +206 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-05-technical-trends.md +234 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-domain-research/domain-steps/step-06-research-synthesis.md +444 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-domain-research/research.template.md +29 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-domain-research/workflow.md +49 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-market-research/SKILL.md +6 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-market-research/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-market-research/research.template.md +29 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-01-init.md +184 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-02-customer-behavior.md +239 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-03-customer-pain-points.md +251 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-04-customer-decisions.md +261 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-05-competitive-analysis.md +173 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-market-research/steps/step-06-research-completion.md +478 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-market-research/workflow.md +49 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-technical-research/SKILL.md +6 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-technical-research/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-technical-research/research.template.md +29 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-01-init.md +137 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-02-technical-overview.md +239 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-03-integration-patterns.md +248 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-04-architectural-patterns.md +202 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-05-implementation-research.md +233 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-technical-research/technical-steps/step-06-research-synthesis.md +487 -0
- package/_bmad/bmm/workflows/1-analysis/research/bmad-technical-research/workflow.md +50 -0
- package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-01-init.md +182 -0
- package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-02-customer-behavior.md +237 -0
- package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-03-customer-pain-points.md +249 -0
- package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-04-customer-decisions.md +259 -0
- package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-05-competitive-analysis.md +177 -0
- package/_bmad/bmm/workflows/1-analysis/research/market-steps/step-06-research-completion.md +476 -0
- package/_bmad/bmm/workflows/1-analysis/research/research.template.md +29 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/SKILL.md +6 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-01-init.md +135 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-01b-continue.md +127 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-02-discovery.md +190 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-03-core-experience.md +217 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-04-emotional-response.md +220 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-05-inspiration.md +235 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-06-design-system.md +253 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-07-defining-experience.md +255 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-08-visual-foundation.md +225 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-09-design-directions.md +225 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-10-user-journeys.md +242 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-11-component-strategy.md +249 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-12-ux-patterns.md +238 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-13-responsive-accessibility.md +265 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/steps/step-14-complete.md +171 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/ux-design-template.md +13 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-create-ux-design/workflow.md +36 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-edit-prd/SKILL.md +6 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-edit-prd/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01-discovery.md +242 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-01b-legacy-conversion.md +204 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-02-review.md +245 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-03-edit.md +250 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-edit-prd/steps-e/step-e-04-complete.md +165 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-edit-prd/workflow.md +63 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/SKILL.md +6 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/data/domain-complexity.csv +15 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/data/prd-purpose.md +197 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/data/project-types.csv +11 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-01-discovery.md +221 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02-format-detection.md +188 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-02b-parity-check.md +206 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-03-density-validation.md +171 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-04-brief-coverage-validation.md +211 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-05-measurability-validation.md +225 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-06-traceability-validation.md +214 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-07-implementation-leakage-validation.md +202 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-08-domain-compliance-validation.md +240 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-09-project-type-validation.md +260 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-10-smart-validation.md +206 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-11-holistic-quality-validation.md +261 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-12-completeness-validation.md +239 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/steps-v/step-v-13-report-complete.md +229 -0
- package/_bmad/bmm/workflows/2-plan-workflows/bmad-validate-prd/workflow.md +62 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/domain-complexity.csv +15 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/prd-purpose.md +197 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/data/project-types.csv +11 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-01-discovery.md +224 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02-format-detection.md +191 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-02b-parity-check.md +209 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-03-density-validation.md +174 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-04-brief-coverage-validation.md +214 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-05-measurability-validation.md +228 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-06-traceability-validation.md +217 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-07-implementation-leakage-validation.md +205 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-08-domain-compliance-validation.md +243 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-09-project-type-validation.md +263 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-10-smart-validation.md +209 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-11-holistic-quality-validation.md +264 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-12-completeness-validation.md +242 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/steps-v/step-v-13-report-complete.md +232 -0
- package/_bmad/bmm/workflows/2-plan-workflows/create-prd/workflow-validate-prd.md +65 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/SKILL.md +6 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-01-document-discovery.md +179 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-02-prd-analysis.md +168 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-03-epic-coverage-validation.md +169 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-04-ux-alignment.md +129 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-05-epic-quality-review.md +241 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/steps/step-06-final-assessment.md +126 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/templates/readiness-report-template.md +4 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-check-implementation-readiness/workflow.md +49 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/SKILL.md +6 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/architecture-decision-template.md +12 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/data/domain-complexity.csv +13 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/data/project-types.csv +7 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-01-init.md +153 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-01b-continue.md +173 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-02-context.md +224 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-03-starter.md +329 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-04-decisions.md +318 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-05-patterns.md +359 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-06-structure.md +379 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-07-validation.md +359 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/steps/step-08-complete.md +76 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-architecture/workflow.md +38 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/SKILL.md +6 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/steps/step-01-validate-prerequisites.md +255 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/steps/step-02-design-epics.md +212 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/steps/step-03-create-stories.md +255 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/steps/step-04-final-validation.md +131 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/templates/epics-template.md +61 -0
- package/_bmad/bmm/workflows/3-solutioning/bmad-create-epics-and-stories/workflow.md +53 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-code-review/SKILL.md +6 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-code-review/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-code-review/steps/step-01-gather-context.md +61 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-code-review/steps/step-02-review.md +41 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-code-review/steps/step-03-triage.md +50 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-code-review/steps/step-04-present.md +38 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-code-review/workflow.md +54 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-correct-course/SKILL.md +6 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-correct-course/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-correct-course/checklist.md +288 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-correct-course/workflow.md +267 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-create-story/SKILL.md +6 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-create-story/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-create-story/checklist.md +357 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-create-story/discover-inputs.md +88 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-create-story/template.md +49 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-create-story/workflow.md +380 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-dev-story/SKILL.md +6 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-dev-story/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-dev-story/checklist.md +80 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-dev-story/workflow.md +450 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-retrospective/SKILL.md +6 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-retrospective/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-retrospective/workflow.md +1479 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-sprint-planning/SKILL.md +6 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-sprint-planning/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-sprint-planning/checklist.md +33 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-sprint-planning/sprint-status-template.yaml +56 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-sprint-planning/workflow.md +263 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-sprint-status/SKILL.md +6 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-sprint-status/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/4-implementation/bmad-sprint-status/workflow.md +261 -0
- package/_bmad/bmm/workflows/bmad-document-project/SKILL.md +6 -0
- package/_bmad/bmm/workflows/bmad-document-project/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/bmad-document-project/checklist.md +245 -0
- package/_bmad/bmm/workflows/bmad-document-project/documentation-requirements.csv +12 -0
- package/_bmad/bmm/workflows/bmad-document-project/instructions.md +128 -0
- package/_bmad/bmm/workflows/bmad-document-project/templates/deep-dive-template.md +345 -0
- package/_bmad/bmm/workflows/bmad-document-project/templates/index-template.md +169 -0
- package/_bmad/bmm/workflows/bmad-document-project/templates/project-overview-template.md +103 -0
- package/_bmad/bmm/workflows/bmad-document-project/templates/project-scan-report-schema.json +160 -0
- package/_bmad/bmm/workflows/bmad-document-project/templates/source-tree-template.md +135 -0
- package/_bmad/bmm/workflows/bmad-document-project/workflow.md +27 -0
- package/_bmad/bmm/workflows/bmad-document-project/workflows/deep-dive-instructions.md +299 -0
- package/_bmad/bmm/workflows/bmad-document-project/workflows/deep-dive-workflow.md +34 -0
- package/_bmad/bmm/workflows/bmad-document-project/workflows/full-scan-instructions.md +1107 -0
- package/_bmad/bmm/workflows/bmad-document-project/workflows/full-scan-workflow.md +34 -0
- package/_bmad/bmm/workflows/bmad-generate-project-context/SKILL.md +6 -0
- package/_bmad/bmm/workflows/bmad-generate-project-context/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/bmad-generate-project-context/project-context-template.md +21 -0
- package/_bmad/bmm/workflows/bmad-generate-project-context/steps/step-01-discover.md +186 -0
- package/_bmad/bmm/workflows/bmad-generate-project-context/steps/step-02-generate.md +321 -0
- package/_bmad/bmm/workflows/bmad-generate-project-context/steps/step-03-complete.md +278 -0
- package/_bmad/bmm/workflows/bmad-generate-project-context/workflow.md +43 -0
- package/_bmad/bmm/workflows/bmad-qa-generate-e2e-tests/SKILL.md +6 -0
- package/_bmad/bmm/workflows/bmad-qa-generate-e2e-tests/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/bmad-qa-generate-e2e-tests/checklist.md +33 -0
- package/_bmad/bmm/workflows/bmad-qa-generate-e2e-tests/workflow.md +136 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev/SKILL.md +6 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-01-mode-detection.md +169 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-02-context-gathering.md +114 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-03-execute.md +107 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-04-self-check.md +107 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-05-adversarial-review.md +94 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev/steps/step-06-resolve-findings.md +144 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev/workflow.md +38 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/SKILL.md +6 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-01-clarify-and-route.md +51 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-02-plan.md +35 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-03-implement.md +33 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-04-review.md +50 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/steps/step-05-present.md +17 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/tech-spec-template.md +90 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-dev-new-preview/workflow.md +79 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-spec/SKILL.md +6 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-spec/bmad-skill-manifest.yaml +1 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-01-understand.md +185 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-02-investigate.md +140 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-03-generate.md +123 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-spec/steps/step-04-review.md +195 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-spec/tech-spec-template.md +74 -0
- package/_bmad/bmm/workflows/bmad-quick-flow/bmad-quick-spec/workflow.md +73 -0
- package/_bmad/cis/config.yaml +12 -0
- package/_bmad/cis/module-help.csv +6 -0
- package/_bmad/cis/skills/bmad-cis-agent-brainstorming-coach/SKILL.md +51 -0
- package/_bmad/cis/skills/bmad-cis-agent-brainstorming-coach/bmad-skill-manifest.yaml +11 -0
- package/_bmad/cis/skills/bmad-cis-agent-creative-problem-solver/SKILL.md +51 -0
- package/_bmad/cis/skills/bmad-cis-agent-creative-problem-solver/bmad-skill-manifest.yaml +11 -0
- package/_bmad/cis/skills/bmad-cis-agent-design-thinking-coach/SKILL.md +52 -0
- package/_bmad/cis/skills/bmad-cis-agent-design-thinking-coach/bmad-skill-manifest.yaml +11 -0
- package/_bmad/cis/skills/bmad-cis-agent-innovation-strategist/SKILL.md +51 -0
- package/_bmad/cis/skills/bmad-cis-agent-innovation-strategist/bmad-skill-manifest.yaml +11 -0
- package/_bmad/cis/skills/bmad-cis-agent-presentation-master/SKILL.md +62 -0
- package/_bmad/cis/skills/bmad-cis-agent-presentation-master/bmad-skill-manifest.yaml +11 -0
- package/_bmad/cis/skills/bmad-cis-agent-storyteller/SKILL.md +56 -0
- package/_bmad/cis/skills/bmad-cis-agent-storyteller/bmad-skill-manifest.yaml +11 -0
- package/_bmad/cis/skills/bmad-cis-agent-storyteller/stories-told.md +7 -0
- package/_bmad/cis/skills/bmad-cis-agent-storyteller/story-preferences.md +7 -0
- package/_bmad/cis/skills/bmad-cis-design-thinking/SKILL.md +6 -0
- package/_bmad/cis/skills/bmad-cis-design-thinking/bmad-skill-manifest.yaml +1 -0
- package/_bmad/cis/skills/bmad-cis-design-thinking/design-methods.csv +31 -0
- package/_bmad/cis/skills/bmad-cis-design-thinking/template.md +111 -0
- package/_bmad/cis/skills/bmad-cis-design-thinking/workflow.md +242 -0
- package/_bmad/cis/skills/bmad-cis-innovation-strategy/SKILL.md +6 -0
- package/_bmad/cis/skills/bmad-cis-innovation-strategy/bmad-skill-manifest.yaml +1 -0
- package/_bmad/cis/skills/bmad-cis-innovation-strategy/innovation-frameworks.csv +31 -0
- package/_bmad/cis/skills/bmad-cis-innovation-strategy/template.md +189 -0
- package/_bmad/cis/skills/bmad-cis-innovation-strategy/workflow.md +315 -0
- package/_bmad/cis/skills/bmad-cis-problem-solving/SKILL.md +6 -0
- package/_bmad/cis/skills/bmad-cis-problem-solving/bmad-skill-manifest.yaml +1 -0
- package/_bmad/cis/skills/bmad-cis-problem-solving/solving-methods.csv +31 -0
- package/_bmad/cis/skills/bmad-cis-problem-solving/template.md +165 -0
- package/_bmad/cis/skills/bmad-cis-problem-solving/workflow.md +291 -0
- package/_bmad/cis/skills/bmad-cis-storytelling/SKILL.md +6 -0
- package/_bmad/cis/skills/bmad-cis-storytelling/bmad-skill-manifest.yaml +1 -0
- package/_bmad/cis/skills/bmad-cis-storytelling/story-types.csv +26 -0
- package/_bmad/cis/skills/bmad-cis-storytelling/template.md +113 -0
- package/_bmad/cis/skills/bmad-cis-storytelling/workflow.md +321 -0
- package/_bmad/core/config.yaml +9 -0
- package/_bmad/core/module-help.csv +11 -0
- package/_bmad/core/skills/bmad-advanced-elicitation/SKILL.md +6 -0
- package/_bmad/core/skills/bmad-advanced-elicitation/bmad-skill-manifest.yaml +1 -0
- package/_bmad/core/skills/bmad-advanced-elicitation/methods.csv +51 -0
- package/_bmad/core/skills/bmad-advanced-elicitation/workflow.md +135 -0
- package/_bmad/core/skills/bmad-brainstorming/SKILL.md +6 -0
- package/_bmad/core/skills/bmad-brainstorming/bmad-skill-manifest.yaml +1 -0
- package/_bmad/core/skills/bmad-brainstorming/brain-methods.csv +62 -0
- package/_bmad/core/skills/bmad-brainstorming/steps/step-01-session-setup.md +214 -0
- package/_bmad/core/skills/bmad-brainstorming/steps/step-01b-continue.md +124 -0
- package/_bmad/core/skills/bmad-brainstorming/steps/step-02a-user-selected.md +229 -0
- package/_bmad/core/skills/bmad-brainstorming/steps/step-02b-ai-recommended.md +239 -0
- package/_bmad/core/skills/bmad-brainstorming/steps/step-02c-random-selection.md +211 -0
- package/_bmad/core/skills/bmad-brainstorming/steps/step-02d-progressive-flow.md +266 -0
- package/_bmad/core/skills/bmad-brainstorming/steps/step-03-technique-execution.md +401 -0
- package/_bmad/core/skills/bmad-brainstorming/steps/step-04-idea-organization.md +305 -0
- package/_bmad/core/skills/bmad-brainstorming/template.md +15 -0
- package/_bmad/core/skills/bmad-brainstorming/workflow.md +53 -0
- package/_bmad/core/skills/bmad-distillator/SKILL.md +178 -0
- package/_bmad/core/skills/bmad-distillator/agents/distillate-compressor.md +116 -0
- package/_bmad/core/skills/bmad-distillator/agents/round-trip-reconstructor.md +68 -0
- package/_bmad/core/skills/bmad-distillator/bmad-skill-manifest.yaml +15 -0
- package/_bmad/core/skills/bmad-distillator/resources/compression-rules.md +51 -0
- package/_bmad/core/skills/bmad-distillator/resources/distillate-format-reference.md +227 -0
- package/_bmad/core/skills/bmad-distillator/resources/splitting-strategy.md +78 -0
- package/_bmad/core/skills/bmad-editorial-review-prose/SKILL.md +6 -0
- package/_bmad/core/skills/bmad-editorial-review-prose/bmad-skill-manifest.yaml +1 -0
- package/_bmad/core/skills/bmad-editorial-review-prose/workflow.md +81 -0
- package/_bmad/core/skills/bmad-editorial-review-structure/SKILL.md +6 -0
- package/_bmad/core/skills/bmad-editorial-review-structure/bmad-skill-manifest.yaml +1 -0
- package/_bmad/core/skills/bmad-editorial-review-structure/workflow.md +174 -0
- package/_bmad/core/skills/bmad-help/SKILL.md +6 -0
- package/_bmad/core/skills/bmad-help/bmad-skill-manifest.yaml +1 -0
- package/_bmad/core/skills/bmad-help/workflow.md +88 -0
- package/_bmad/core/skills/bmad-index-docs/SKILL.md +6 -0
- package/_bmad/core/skills/bmad-index-docs/bmad-skill-manifest.yaml +1 -0
- package/_bmad/core/skills/bmad-index-docs/workflow.md +61 -0
- package/_bmad/core/skills/bmad-party-mode/SKILL.md +6 -0
- package/_bmad/core/skills/bmad-party-mode/bmad-skill-manifest.yaml +1 -0
- package/_bmad/core/skills/bmad-party-mode/steps/step-01-agent-loading.md +138 -0
- package/_bmad/core/skills/bmad-party-mode/steps/step-02-discussion-orchestration.md +187 -0
- package/_bmad/core/skills/bmad-party-mode/steps/step-03-graceful-exit.md +167 -0
- package/_bmad/core/skills/bmad-party-mode/workflow.md +190 -0
- package/_bmad/core/skills/bmad-review-adversarial-general/SKILL.md +6 -0
- package/_bmad/core/skills/bmad-review-adversarial-general/bmad-skill-manifest.yaml +1 -0
- package/_bmad/core/skills/bmad-review-adversarial-general/workflow.md +32 -0
- package/_bmad/core/skills/bmad-review-edge-case-hunter/SKILL.md +6 -0
- package/_bmad/core/skills/bmad-review-edge-case-hunter/bmad-skill-manifest.yaml +1 -0
- package/_bmad/core/skills/bmad-review-edge-case-hunter/workflow.md +62 -0
- package/_bmad/core/skills/bmad-shard-doc/SKILL.md +6 -0
- package/_bmad/core/skills/bmad-shard-doc/bmad-skill-manifest.yaml +1 -0
- package/_bmad/core/skills/bmad-shard-doc/workflow.md +100 -0
- package/_bmad/core/tasks/bmad-create-prd/SKILL.md +6 -0
- package/_bmad/core/tasks/bmad-create-prd/bmad-skill-manifest.yaml +1 -0
- package/_bmad/core/tasks/bmad-create-prd/data/domain-complexity.csv +15 -0
- package/_bmad/core/tasks/bmad-create-prd/data/prd-purpose.md +197 -0
- package/_bmad/core/tasks/bmad-create-prd/data/project-types.csv +11 -0
- package/_bmad/core/tasks/bmad-create-prd/steps-c/step-01-init.md +178 -0
- package/_bmad/core/tasks/bmad-create-prd/steps-c/step-01b-continue.md +161 -0
- package/_bmad/core/tasks/bmad-create-prd/steps-c/step-02-discovery.md +208 -0
- package/_bmad/core/tasks/bmad-create-prd/steps-c/step-02b-vision.md +142 -0
- package/_bmad/core/tasks/bmad-create-prd/steps-c/step-02c-executive-summary.md +158 -0
- package/_bmad/core/tasks/bmad-create-prd/steps-c/step-03-success.md +214 -0
- package/_bmad/core/tasks/bmad-create-prd/steps-c/step-04-journeys.md +201 -0
- package/_bmad/core/tasks/bmad-create-prd/steps-c/step-05-domain.md +194 -0
- package/_bmad/core/tasks/bmad-create-prd/steps-c/step-06-innovation.md +211 -0
- package/_bmad/core/tasks/bmad-create-prd/steps-c/step-07-project-type.md +222 -0
- package/_bmad/core/tasks/bmad-create-prd/steps-c/step-08-scoping.md +216 -0
- package/_bmad/core/tasks/bmad-create-prd/steps-c/step-09-functional.md +219 -0
- package/_bmad/core/tasks/bmad-create-prd/steps-c/step-10-nonfunctional.md +230 -0
- package/_bmad/core/tasks/bmad-create-prd/steps-c/step-11-polish.md +221 -0
- package/_bmad/core/tasks/bmad-create-prd/steps-c/step-12-complete.md +115 -0
- package/_bmad/core/tasks/bmad-create-prd/templates/prd-template.md +10 -0
- package/_bmad/core/tasks/bmad-create-prd/workflow.md +62 -0
- package/config/allowed-commands.ts +39 -0
- package/config/defaults.ts +19 -0
- package/config/loader.ts +105 -0
- package/extensions/frappe-gates.ts +160 -0
- package/extensions/frappe-session.ts +324 -0
- package/extensions/frappe-state.ts +235 -0
- package/extensions/frappe-tools.ts +278 -0
- package/extensions/frappe-ui.ts +119 -0
- package/extensions/frappe-workflow.ts +85 -0
- package/gates/coverage-check.ts +37 -0
- package/gates/frappe-native-check.ts +65 -0
- package/gates/permission-check.ts +65 -0
- package/gates/query-check.ts +40 -0
- package/gates/server-side-check.ts +67 -0
- package/gates/style-check.ts +92 -0
- package/gates/types.ts +13 -0
- package/package.json +43 -0
- package/project-context.md +146 -0
- package/state/db.ts +85 -0
- package/state/fsm.ts +68 -0
- package/state/journal.ts +164 -0
- package/state/schema.ts +41 -0
- package/tools/agent-tools.ts +60 -0
- package/tools/bench-tools.ts +63 -0
- package/tools/context-sandbox.ts +31 -0
- package/tools/debug-tools.ts +12 -0
- package/tools/feature-tools.ts +126 -0
- package/tools/frappe-context7.ts +70 -0
- package/tools/frappe-query-tools.ts +47 -0
- package/tools/project-tools.ts +107 -0
- package/tsdown.config.ts +6 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Step 12: Workflow Completion
|
|
2
|
+
|
|
3
|
+
**Final Step - Complete the PRD**
|
|
4
|
+
|
|
5
|
+
## MANDATORY EXECUTION RULES (READ FIRST):
|
|
6
|
+
|
|
7
|
+
- ✅ THIS IS A FINAL STEP - Workflow completion required
|
|
8
|
+
- 📖 CRITICAL: ALWAYS read the complete step file before taking any action
|
|
9
|
+
- 🛑 NO content generation - this is a wrap-up step
|
|
10
|
+
- 📋 FINALIZE document and update workflow status
|
|
11
|
+
- 💬 FOCUS on completion, validation options, and next steps
|
|
12
|
+
- 🎯 UPDATE workflow status files with completion information
|
|
13
|
+
- ✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the config `{communication_language}`
|
|
14
|
+
|
|
15
|
+
## EXECUTION PROTOCOLS:
|
|
16
|
+
|
|
17
|
+
- 🎯 Show your analysis before taking any action
|
|
18
|
+
- 💾 Update the main workflow status file with completion information (if exists)
|
|
19
|
+
- 📖 Offer validation workflow options to user
|
|
20
|
+
- 🚫 DO NOT load additional steps after this one
|
|
21
|
+
|
|
22
|
+
## TERMINATION STEP PROTOCOLS:
|
|
23
|
+
|
|
24
|
+
- This is a FINAL step - workflow completion required
|
|
25
|
+
- Update workflow status file with finalized document
|
|
26
|
+
- Suggest validation and next workflow steps
|
|
27
|
+
- Mark workflow as complete in status tracking
|
|
28
|
+
|
|
29
|
+
## CONTEXT BOUNDARIES:
|
|
30
|
+
|
|
31
|
+
- Complete and polished PRD document is available from all previous steps
|
|
32
|
+
- Workflow frontmatter shows all completed steps including polish
|
|
33
|
+
- All collaborative content has been generated, saved, and optimized
|
|
34
|
+
- Focus on completion, validation options, and next steps
|
|
35
|
+
|
|
36
|
+
## YOUR TASK:
|
|
37
|
+
|
|
38
|
+
Complete the PRD workflow, update status files, offer validation options, and suggest next steps for the project.
|
|
39
|
+
|
|
40
|
+
## WORKFLOW COMPLETION SEQUENCE:
|
|
41
|
+
|
|
42
|
+
### 1. Announce Workflow Completion
|
|
43
|
+
|
|
44
|
+
Inform user that the PRD is complete and polished:
|
|
45
|
+
- Celebrate successful completion of comprehensive PRD
|
|
46
|
+
- Summarize all sections that were created
|
|
47
|
+
- Highlight that document has been polished for flow and coherence
|
|
48
|
+
- Emphasize document is ready for downstream work
|
|
49
|
+
|
|
50
|
+
### 2. Workflow Status Update
|
|
51
|
+
|
|
52
|
+
Update the main workflow status file if there is one:
|
|
53
|
+
|
|
54
|
+
- Check workflow configuration for a status file (if one exists)
|
|
55
|
+
- Update workflow_status["prd"] = "{outputFile}"
|
|
56
|
+
- Save file, preserving all comments and structure
|
|
57
|
+
- Mark current timestamp as completion time
|
|
58
|
+
|
|
59
|
+
### 3. Validation Workflow Options
|
|
60
|
+
|
|
61
|
+
Offer validation workflows to ensure PRD is ready for implementation:
|
|
62
|
+
|
|
63
|
+
**Available Validation Workflows:**
|
|
64
|
+
|
|
65
|
+
**Option 1: Check Implementation Readiness** (`skill:bmad-check-implementation-readiness`)
|
|
66
|
+
- Validates PRD has all information needed for development
|
|
67
|
+
- Checks epic coverage completeness
|
|
68
|
+
- Reviews UX alignment with requirements
|
|
69
|
+
- Assesses epic quality and readiness
|
|
70
|
+
- Identifies gaps before architecture/design work begins
|
|
71
|
+
|
|
72
|
+
**When to use:** Before starting technical architecture or epic breakdown
|
|
73
|
+
|
|
74
|
+
**Option 2: Skip for Now**
|
|
75
|
+
- Proceed directly to next workflows (architecture, UX, epics)
|
|
76
|
+
- Validation can be done later if needed
|
|
77
|
+
- Some teams prefer to validate during architecture reviews
|
|
78
|
+
|
|
79
|
+
### 4. Suggest Next Workflows
|
|
80
|
+
|
|
81
|
+
PRD complete. Invoke the `bmad-help` skill.
|
|
82
|
+
|
|
83
|
+
### 5. Final Completion Confirmation
|
|
84
|
+
|
|
85
|
+
- Confirm completion with user and summarize what has been accomplished
|
|
86
|
+
- Document now contains: Executive Summary, Success Criteria, User Journeys, Domain Requirements (if applicable), Innovation Analysis (if applicable), Project-Type Requirements, Functional Requirements (capability contract), Non-Functional Requirements, and has been polished for flow and coherence
|
|
87
|
+
- Ask if they'd like to run validation workflow or proceed to next workflows
|
|
88
|
+
|
|
89
|
+
## SUCCESS METRICS:
|
|
90
|
+
|
|
91
|
+
✅ PRD document contains all required sections and has been polished
|
|
92
|
+
✅ All collaborative content properly saved and optimized
|
|
93
|
+
✅ Workflow status file updated with completion information (if exists)
|
|
94
|
+
✅ Validation workflow options clearly presented
|
|
95
|
+
✅ Clear next step guidance provided to user
|
|
96
|
+
✅ Document quality validation completed
|
|
97
|
+
✅ User acknowledges completion and understands next options
|
|
98
|
+
|
|
99
|
+
## FAILURE MODES:
|
|
100
|
+
|
|
101
|
+
❌ Not updating workflow status file with completion information (if exists)
|
|
102
|
+
❌ Not offering validation workflow options
|
|
103
|
+
❌ Missing clear next step guidance for user
|
|
104
|
+
❌ Not confirming document completeness with user
|
|
105
|
+
❌ Workflow not properly marked as complete in status tracking (if applicable)
|
|
106
|
+
❌ User unclear about what happens next or what validation options exist
|
|
107
|
+
|
|
108
|
+
❌ **CRITICAL**: Reading only partial step file - leads to incomplete understanding and poor decisions
|
|
109
|
+
❌ **CRITICAL**: Making decisions without complete understanding of step requirements and protocols
|
|
110
|
+
|
|
111
|
+
## FINAL REMINDER to give the user:
|
|
112
|
+
|
|
113
|
+
The polished PRD serves as the foundation for all subsequent product development activities. All design, architecture, and development work should trace back to the requirements and vision documented in this PRD - update it also as needed as you continue planning.
|
|
114
|
+
|
|
115
|
+
**Congratulations on completing the Product Requirements Document for {{project_name}}!** 🎉
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
main_config: '{project-root}/_bmad/bmm/config.yaml'
|
|
3
|
+
outputFile: '{planning_artifacts}/prd.md'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# PRD Create Workflow
|
|
7
|
+
|
|
8
|
+
**Goal:** Create comprehensive PRDs through structured workflow facilitation.
|
|
9
|
+
|
|
10
|
+
**Your Role:** Product-focused PM facilitator collaborating with an expert peer.
|
|
11
|
+
|
|
12
|
+
You will continue to operate with your given name, identity, and communication_style, merged with the details of this role description.
|
|
13
|
+
|
|
14
|
+
## WORKFLOW ARCHITECTURE
|
|
15
|
+
|
|
16
|
+
This uses **step-file architecture** for disciplined execution:
|
|
17
|
+
|
|
18
|
+
### Core Principles
|
|
19
|
+
|
|
20
|
+
- **Micro-file Design**: Each step is a self contained instruction file that is a part of an overall workflow that must be followed exactly
|
|
21
|
+
- **Just-In-Time Loading**: Only the current step file is in memory - never load future step files until told to do so
|
|
22
|
+
- **Sequential Enforcement**: Sequence within the step files must be completed in order, no skipping or optimization allowed
|
|
23
|
+
- **State Tracking**: Document progress in output file frontmatter using `stepsCompleted` array when a workflow produces a document
|
|
24
|
+
- **Append-Only Building**: Build documents by appending content as directed to the output file
|
|
25
|
+
|
|
26
|
+
### Step Processing Rules
|
|
27
|
+
|
|
28
|
+
1. **READ COMPLETELY**: Always read the entire step file before taking any action
|
|
29
|
+
2. **FOLLOW SEQUENCE**: Execute all numbered sections in order, never deviate
|
|
30
|
+
3. **WAIT FOR INPUT**: If a menu is presented, halt and wait for user selection
|
|
31
|
+
4. **CHECK CONTINUATION**: If the step has a menu with Continue as an option, only proceed to next step when user selects 'C' (Continue)
|
|
32
|
+
5. **SAVE STATE**: Update `stepsCompleted` in frontmatter before loading next step
|
|
33
|
+
6. **LOAD NEXT**: When directed, read fully and follow the next step file
|
|
34
|
+
|
|
35
|
+
### Critical Rules (NO EXCEPTIONS)
|
|
36
|
+
|
|
37
|
+
- 🛑 **NEVER** load multiple step files simultaneously
|
|
38
|
+
- 📖 **ALWAYS** read entire step file before execution
|
|
39
|
+
- 🚫 **NEVER** skip steps or optimize the sequence
|
|
40
|
+
- 💾 **ALWAYS** update frontmatter of output files when writing the final output for a specific step
|
|
41
|
+
- 🎯 **ALWAYS** follow the exact instructions in the step file
|
|
42
|
+
- ⏸️ **ALWAYS** halt at menus and wait for user input
|
|
43
|
+
- 📋 **NEVER** create mental todo lists from future steps
|
|
44
|
+
|
|
45
|
+
## INITIALIZATION SEQUENCE
|
|
46
|
+
|
|
47
|
+
### 1. Configuration Loading
|
|
48
|
+
|
|
49
|
+
Load and read full config from {main_config} and resolve:
|
|
50
|
+
|
|
51
|
+
- `project_name`, `output_folder`, `planning_artifacts`, `user_name`
|
|
52
|
+
- `communication_language`, `document_output_language`, `user_skill_level`
|
|
53
|
+
- `date` as system-generated current datetime
|
|
54
|
+
|
|
55
|
+
✅ YOU MUST ALWAYS SPEAK OUTPUT In your Agent communication style with the configured `{communication_language}`.
|
|
56
|
+
✅ YOU MUST ALWAYS WRITE all artifact and document content in `{document_output_language}`.
|
|
57
|
+
|
|
58
|
+
### 2. Route to Create Workflow
|
|
59
|
+
|
|
60
|
+
"**Create Mode: Creating a new PRD from scratch.**"
|
|
61
|
+
|
|
62
|
+
Read fully and follow: `./steps-c/step-01-init.md`
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
4
|
+
|
|
5
|
+
const CONFIG_DIR = join(homedir(), ".frappe-builder");
|
|
6
|
+
const WHITELIST_PATH = join(CONFIG_DIR, "allowed-commands.json");
|
|
7
|
+
|
|
8
|
+
export const DEFAULT_BENCH_COMMANDS: string[] = [
|
|
9
|
+
"bench migrate",
|
|
10
|
+
"bench build",
|
|
11
|
+
"bench install",
|
|
12
|
+
"bench update",
|
|
13
|
+
"bench run-tests",
|
|
14
|
+
"bench restart",
|
|
15
|
+
"bench clear-cache",
|
|
16
|
+
"bench console",
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Loads the bench command whitelist from ~/.frappe-builder/allowed-commands.json.
|
|
21
|
+
* On first run (file missing): writes defaults to disk and returns them.
|
|
22
|
+
* On malformed JSON: logs warning and returns defaults — never throws.
|
|
23
|
+
*/
|
|
24
|
+
export function loadAllowedCommands(): string[] {
|
|
25
|
+
if (!existsSync(WHITELIST_PATH)) {
|
|
26
|
+
mkdirSync(CONFIG_DIR, { recursive: true });
|
|
27
|
+
writeFileSync(WHITELIST_PATH, JSON.stringify(DEFAULT_BENCH_COMMANDS, null, 2), "utf-8");
|
|
28
|
+
return [...DEFAULT_BENCH_COMMANDS];
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
const raw = readFileSync(WHITELIST_PATH, "utf-8");
|
|
32
|
+
const parsed = JSON.parse(raw);
|
|
33
|
+
if (!Array.isArray(parsed)) throw new Error("Expected JSON array");
|
|
34
|
+
return parsed.map(String);
|
|
35
|
+
} catch {
|
|
36
|
+
console.warn("[WHITELIST WARNING: allowed-commands.json is malformed — using defaults]");
|
|
37
|
+
return [...DEFAULT_BENCH_COMMANDS];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface SpawnRule {
|
|
2
|
+
trigger: string;
|
|
3
|
+
delegate: string;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export interface AppConfig {
|
|
7
|
+
autoGitCheckpoint: boolean;
|
|
8
|
+
allowSubAgents: boolean;
|
|
9
|
+
requirePermission: boolean;
|
|
10
|
+
rules: SpawnRule[];
|
|
11
|
+
frappeMcpUrl?: string; // URL of Frappe MCP server for frappe_query (e.g. "http://localhost:8000")
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export const defaults: AppConfig = {
|
|
15
|
+
autoGitCheckpoint: true,
|
|
16
|
+
allowSubAgents: false, // opt-in — disabled by default
|
|
17
|
+
requirePermission: true, // always prompt unless explicitly disabled
|
|
18
|
+
rules: [],
|
|
19
|
+
};
|
package/config/loader.ts
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { readFileSync, existsSync, mkdirSync } from "node:fs";
|
|
4
|
+
import { defaults } from "./defaults.js";
|
|
5
|
+
import type { AppConfig } from "./defaults.js";
|
|
6
|
+
|
|
7
|
+
// ── Credential config types (NFR6, NFR9) ────────────────────────────────────
|
|
8
|
+
|
|
9
|
+
export interface GlobalConfig {
|
|
10
|
+
llm_api_key: string;
|
|
11
|
+
llm_provider?: string;
|
|
12
|
+
[key: string]: unknown;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface ProjectConfig {
|
|
16
|
+
site_url: string;
|
|
17
|
+
api_key: string;
|
|
18
|
+
api_secret: string;
|
|
19
|
+
[key: string]: unknown;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export interface CredentialConfig {
|
|
23
|
+
global: GlobalConfig;
|
|
24
|
+
project: ProjectConfig;
|
|
25
|
+
sessionLogDir: string;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Always ~/.frappe-builder/sessions/ — never the project directory (NFR9). */
|
|
29
|
+
export const SESSION_LOG_DIR = join(homedir(), ".frappe-builder", "sessions");
|
|
30
|
+
|
|
31
|
+
const GITIGNORE_ERROR =
|
|
32
|
+
"Site credentials file is not gitignored. Add .frappe-builder-config.json to .gitignore before proceeding.";
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Validates that {projectRoot}/.gitignore lists .frappe-builder-config.json.
|
|
36
|
+
* Throws with the exact AC error message if missing or absent.
|
|
37
|
+
*/
|
|
38
|
+
export function validateGitignore(projectRoot: string): void {
|
|
39
|
+
const gitignorePath = join(projectRoot, ".gitignore");
|
|
40
|
+
if (!existsSync(gitignorePath)) {
|
|
41
|
+
throw new Error(GITIGNORE_ERROR);
|
|
42
|
+
}
|
|
43
|
+
const contents = readFileSync(gitignorePath, "utf8");
|
|
44
|
+
const lines = contents.split("\n").map((l) => l.trim());
|
|
45
|
+
if (!lines.includes(".frappe-builder-config.json")) {
|
|
46
|
+
throw new Error(GITIGNORE_ERROR);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Reads LLM API keys from ~/.frappe-builder/config.json (user-global, never project).
|
|
52
|
+
* Creates ~/.frappe-builder/ on first run. Returns empty defaults if file absent.
|
|
53
|
+
*/
|
|
54
|
+
export function loadGlobalConfig(): GlobalConfig {
|
|
55
|
+
const configDir = join(homedir(), ".frappe-builder");
|
|
56
|
+
mkdirSync(configDir, { recursive: true });
|
|
57
|
+
const configPath = join(configDir, "config.json");
|
|
58
|
+
if (!existsSync(configPath)) return { llm_api_key: "" };
|
|
59
|
+
try {
|
|
60
|
+
return JSON.parse(readFileSync(configPath, "utf8")) as GlobalConfig;
|
|
61
|
+
} catch {
|
|
62
|
+
return { llm_api_key: "" };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Reads Frappe site credentials from {projectRoot}/.frappe-builder-config.json.
|
|
68
|
+
* Returns empty defaults if file absent (caller should surface a warning).
|
|
69
|
+
*/
|
|
70
|
+
export function loadProjectConfig(projectRoot: string): ProjectConfig {
|
|
71
|
+
const configPath = join(projectRoot, ".frappe-builder-config.json");
|
|
72
|
+
if (!existsSync(configPath)) return { site_url: "", api_key: "", api_secret: "" };
|
|
73
|
+
try {
|
|
74
|
+
return JSON.parse(readFileSync(configPath, "utf8")) as ProjectConfig;
|
|
75
|
+
} catch {
|
|
76
|
+
return { site_url: "", api_key: "", api_secret: "" };
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Full credential loader: validates gitignore, loads global + project configs.
|
|
82
|
+
* Throws if .frappe-builder-config.json is not gitignored.
|
|
83
|
+
* API keys are only ever read from ~/.frappe-builder/ — never from projectRoot.
|
|
84
|
+
*/
|
|
85
|
+
export function loadCredentials(projectRoot: string): CredentialConfig {
|
|
86
|
+
validateGitignore(projectRoot);
|
|
87
|
+
const global = loadGlobalConfig();
|
|
88
|
+
const project = loadProjectConfig(projectRoot);
|
|
89
|
+
return { global, project, sessionLogDir: SESSION_LOG_DIR };
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Loads ~/.frappe-builder/config.json and merges with defaults.
|
|
94
|
+
* Never throws — returns defaults on any read/parse failure.
|
|
95
|
+
*/
|
|
96
|
+
export function loadConfig(): AppConfig {
|
|
97
|
+
const configPath = join(homedir(), ".frappe-builder", "config.json");
|
|
98
|
+
if (!existsSync(configPath)) return { ...defaults };
|
|
99
|
+
try {
|
|
100
|
+
const raw = JSON.parse(readFileSync(configPath, "utf-8")) as Partial<AppConfig>;
|
|
101
|
+
return { ...defaults, ...raw };
|
|
102
|
+
} catch {
|
|
103
|
+
return { ...defaults };
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* extensions/frappe-gates.ts — Quality Gate Orchestrator (Story 6.1)
|
|
3
|
+
*
|
|
4
|
+
* Intercepts Write/Edit/NotebookEdit tool calls and runs all gates in gates/
|
|
5
|
+
* sequentially before the file write executes. Blocks on first failure.
|
|
6
|
+
*
|
|
7
|
+
* Extension load order (beforeToolCall chain):
|
|
8
|
+
* 1. frappe-ui.ts → announces "→ Calling {tool} [{phase}]"
|
|
9
|
+
* 2. frappe-workflow.ts → FSM phase guard (may block out-of-phase calls)
|
|
10
|
+
* 3. frappe-gates.ts → quality gate scan (this file — may block bad code)
|
|
11
|
+
* 4. [tool executes]
|
|
12
|
+
*/
|
|
13
|
+
import { getCurrentPhase, db } from "../state/db.js";
|
|
14
|
+
import { appendEntry } from "../state/journal.js";
|
|
15
|
+
import { checkFrappeNative } from "../gates/frappe-native-check.js";
|
|
16
|
+
import type { GateFn, GateContext, GateResult } from "../gates/types.js";
|
|
17
|
+
|
|
18
|
+
// Adapt frappe-native-check's custom result type to the standard GateResult
|
|
19
|
+
function nativeAdapter(code: string, _context: GateContext): GateResult {
|
|
20
|
+
const r = checkFrappeNative(code);
|
|
21
|
+
if (r.passed) return { passed: true };
|
|
22
|
+
return {
|
|
23
|
+
passed: false,
|
|
24
|
+
violations: [
|
|
25
|
+
{
|
|
26
|
+
reason: (r as { message: string }).message,
|
|
27
|
+
detectedPatterns: (r as { detectedPatterns: string[] }).detectedPatterns,
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
34
|
+
type AnyModule = Record<string, any>;
|
|
35
|
+
|
|
36
|
+
function tryLoadGate(mod: AnyModule, exportName: string, gateName: string): { name: string; fn: GateFn } | null {
|
|
37
|
+
const fn = mod[exportName];
|
|
38
|
+
if (typeof fn === "function") return { name: gateName, fn: fn as GateFn };
|
|
39
|
+
console.warn(`[GATE WARNING: ${gateName} gate not yet implemented — skipping]`);
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
import * as permCheckMod from "../gates/permission-check.js";
|
|
44
|
+
import * as queryCheckMod from "../gates/query-check.js";
|
|
45
|
+
import * as serverCheckMod from "../gates/server-side-check.js";
|
|
46
|
+
import * as coverageCheckMod from "../gates/coverage-check.js";
|
|
47
|
+
import * as styleCheckMod from "../gates/style-check.js";
|
|
48
|
+
|
|
49
|
+
// Gate registry — frappe_native always present (Story 4.5); others optional until 6.2–6.6
|
|
50
|
+
const GATE_REGISTRY: Array<{ name: string; fn: GateFn }> = [
|
|
51
|
+
{ name: "frappe_native", fn: nativeAdapter },
|
|
52
|
+
];
|
|
53
|
+
|
|
54
|
+
for (const [mod, exportName, gateName] of [
|
|
55
|
+
[permCheckMod, "permissionCheck", "permission_check"],
|
|
56
|
+
[queryCheckMod, "queryCheck", "query_check"],
|
|
57
|
+
[serverCheckMod, "serverSideCheck", "server_side_check"],
|
|
58
|
+
[coverageCheckMod, "coverageCheck", "coverage_check"],
|
|
59
|
+
[styleCheckMod, "styleCheck", "style_check"],
|
|
60
|
+
] as [AnyModule, string, string][]) {
|
|
61
|
+
const entry = tryLoadGate(mod, exportName, gateName);
|
|
62
|
+
if (entry) GATE_REGISTRY.push(entry);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export const FILE_WRITE_TOOLS = new Set(["Write", "Edit", "NotebookEdit"]);
|
|
66
|
+
|
|
67
|
+
export interface BlockedGateResponse {
|
|
68
|
+
blocked: true;
|
|
69
|
+
tool: string;
|
|
70
|
+
gate: string;
|
|
71
|
+
file: string;
|
|
72
|
+
violations: Array<{ line?: number; reason: string; [key: string]: unknown }>;
|
|
73
|
+
message: string;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function getActiveSessionId(): string {
|
|
77
|
+
try {
|
|
78
|
+
const row = db
|
|
79
|
+
.prepare("SELECT session_id FROM sessions WHERE is_active = 1 LIMIT 1")
|
|
80
|
+
.get() as { session_id: string } | undefined;
|
|
81
|
+
return row?.session_id ?? "unknown";
|
|
82
|
+
} catch {
|
|
83
|
+
return "unknown";
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Runs all registered gates against the code being written. Returns a block
|
|
89
|
+
* response on the first gate failure, or undefined to allow the write.
|
|
90
|
+
* Exported for unit testing.
|
|
91
|
+
*/
|
|
92
|
+
export function runGates(
|
|
93
|
+
toolName: string,
|
|
94
|
+
args: Record<string, unknown>
|
|
95
|
+
): BlockedGateResponse | undefined {
|
|
96
|
+
if (!FILE_WRITE_TOOLS.has(toolName)) return undefined;
|
|
97
|
+
|
|
98
|
+
const file = (args.file_path ?? args.notebook_path ?? args.path ?? "") as string;
|
|
99
|
+
const code = (args.content ?? args.new_string ?? "") as string;
|
|
100
|
+
|
|
101
|
+
let phase = "idle";
|
|
102
|
+
try { phase = getCurrentPhase(); } catch { /* swallow */ }
|
|
103
|
+
|
|
104
|
+
const sessionId = getActiveSessionId();
|
|
105
|
+
const context: GateContext = { file, phase, sessionId };
|
|
106
|
+
|
|
107
|
+
for (const gate of GATE_REGISTRY) {
|
|
108
|
+
let result: GateResult;
|
|
109
|
+
|
|
110
|
+
try {
|
|
111
|
+
result = gate.fn(code, context);
|
|
112
|
+
if (typeof result !== "object" || result === null || !("passed" in result)) {
|
|
113
|
+
console.warn(`[GATE WARNING: ${gate.name} returned unexpected shape]`);
|
|
114
|
+
appendEntry({
|
|
115
|
+
ts: new Date().toISOString(),
|
|
116
|
+
sessionId,
|
|
117
|
+
type: "quality_gate",
|
|
118
|
+
payload: { gate: gate.name, result: "error", file, error: "unexpected result shape" },
|
|
119
|
+
});
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
} catch (err) {
|
|
123
|
+
appendEntry({
|
|
124
|
+
ts: new Date().toISOString(),
|
|
125
|
+
sessionId,
|
|
126
|
+
type: "quality_gate",
|
|
127
|
+
payload: { gate: gate.name, result: "error", file, error: String(err) },
|
|
128
|
+
});
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
appendEntry({
|
|
133
|
+
ts: new Date().toISOString(),
|
|
134
|
+
sessionId,
|
|
135
|
+
type: "quality_gate",
|
|
136
|
+
payload: { gate: gate.name, result: result.passed ? "pass" : "blocked", file },
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
if (!result.passed) {
|
|
140
|
+
const violations = result.violations;
|
|
141
|
+
return {
|
|
142
|
+
blocked: true,
|
|
143
|
+
tool: toolName,
|
|
144
|
+
gate: gate.name,
|
|
145
|
+
file,
|
|
146
|
+
violations,
|
|
147
|
+
message: `${gate.name} gate blocked write to ${file}: ${violations[0]?.reason ?? "violation"}`,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
156
|
+
export default function (pi: any) {
|
|
157
|
+
pi.on("tool_call", (event: { toolName?: string; input?: Record<string, unknown> }) => {
|
|
158
|
+
return runGates(event.toolName ?? "", event.input ?? {});
|
|
159
|
+
});
|
|
160
|
+
}
|