@accelerationguy/accel 1.0.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/CLAUDE.md +19 -0
- package/LICENSE +33 -0
- package/README.md +275 -0
- package/bin/install.js +661 -0
- package/docs/getting-started.md +164 -0
- package/docs/module-guide.md +139 -0
- package/modules/drive/LICENSE +21 -0
- package/modules/drive/PAUL-VS-GSD.md +171 -0
- package/modules/drive/README.md +555 -0
- package/modules/drive/assets/terminal.svg +67 -0
- package/modules/drive/bin/install.js +210 -0
- package/modules/drive/integration.js +76 -0
- package/modules/drive/package.json +38 -0
- package/modules/drive/src/commands/add-phase.md +36 -0
- package/modules/drive/src/commands/apply.md +83 -0
- package/modules/drive/src/commands/assumptions.md +37 -0
- package/modules/drive/src/commands/audit.md +57 -0
- package/modules/drive/src/commands/complete-milestone.md +36 -0
- package/modules/drive/src/commands/config.md +175 -0
- package/modules/drive/src/commands/consider-issues.md +41 -0
- package/modules/drive/src/commands/discover.md +48 -0
- package/modules/drive/src/commands/discuss-milestone.md +33 -0
- package/modules/drive/src/commands/discuss.md +34 -0
- package/modules/drive/src/commands/flows.md +73 -0
- package/modules/drive/src/commands/handoff.md +201 -0
- package/modules/drive/src/commands/help.md +525 -0
- package/modules/drive/src/commands/init.md +54 -0
- package/modules/drive/src/commands/map-codebase.md +34 -0
- package/modules/drive/src/commands/milestone.md +34 -0
- package/modules/drive/src/commands/pause.md +44 -0
- package/modules/drive/src/commands/plan-fix.md +216 -0
- package/modules/drive/src/commands/plan.md +36 -0
- package/modules/drive/src/commands/progress.md +138 -0
- package/modules/drive/src/commands/register.md +29 -0
- package/modules/drive/src/commands/remove-phase.md +37 -0
- package/modules/drive/src/commands/research-phase.md +209 -0
- package/modules/drive/src/commands/research.md +47 -0
- package/modules/drive/src/commands/resume.md +49 -0
- package/modules/drive/src/commands/status.md +78 -0
- package/modules/drive/src/commands/unify.md +87 -0
- package/modules/drive/src/commands/verify.md +60 -0
- package/modules/drive/src/references/checkpoints.md +234 -0
- package/modules/drive/src/references/context-management.md +219 -0
- package/modules/drive/src/references/git-strategy.md +206 -0
- package/modules/drive/src/references/loop-phases.md +254 -0
- package/modules/drive/src/references/plan-format.md +263 -0
- package/modules/drive/src/references/quality-principles.md +152 -0
- package/modules/drive/src/references/research-quality-control.md +247 -0
- package/modules/drive/src/references/sonarqube-integration.md +244 -0
- package/modules/drive/src/references/specialized-workflow-integration.md +186 -0
- package/modules/drive/src/references/subagent-criteria.md +179 -0
- package/modules/drive/src/references/tdd.md +219 -0
- package/modules/drive/src/references/work-units.md +161 -0
- package/modules/drive/src/rules/commands.md +108 -0
- package/modules/drive/src/rules/references.md +107 -0
- package/modules/drive/src/rules/style.md +123 -0
- package/modules/drive/src/rules/templates.md +51 -0
- package/modules/drive/src/rules/workflows.md +133 -0
- package/modules/drive/src/templates/CONTEXT.md +88 -0
- package/modules/drive/src/templates/DEBUG.md +164 -0
- package/modules/drive/src/templates/DISCOVERY.md +148 -0
- package/modules/drive/src/templates/HANDOFF.md +77 -0
- package/modules/drive/src/templates/ISSUES.md +93 -0
- package/modules/drive/src/templates/MILESTONES.md +167 -0
- package/modules/drive/src/templates/PLAN.md +328 -0
- package/modules/drive/src/templates/PROJECT.md +219 -0
- package/modules/drive/src/templates/RESEARCH.md +130 -0
- package/modules/drive/src/templates/ROADMAP.md +328 -0
- package/modules/drive/src/templates/SPECIAL-FLOWS.md +70 -0
- package/modules/drive/src/templates/STATE.md +210 -0
- package/modules/drive/src/templates/SUMMARY.md +221 -0
- package/modules/drive/src/templates/UAT-ISSUES.md +139 -0
- package/modules/drive/src/templates/codebase/architecture.md +259 -0
- package/modules/drive/src/templates/codebase/concerns.md +329 -0
- package/modules/drive/src/templates/codebase/conventions.md +311 -0
- package/modules/drive/src/templates/codebase/integrations.md +284 -0
- package/modules/drive/src/templates/codebase/stack.md +190 -0
- package/modules/drive/src/templates/codebase/structure.md +287 -0
- package/modules/drive/src/templates/codebase/testing.md +484 -0
- package/modules/drive/src/templates/config.md +181 -0
- package/modules/drive/src/templates/milestone-archive.md +236 -0
- package/modules/drive/src/templates/milestone-context.md +190 -0
- package/modules/drive/src/templates/paul-json.md +147 -0
- package/modules/drive/src/vector-config/PAUL +26 -0
- package/modules/drive/src/vector-config/PAUL.manifest +11 -0
- package/modules/drive/src/workflows/apply-phase.md +393 -0
- package/modules/drive/src/workflows/audit-plan.md +344 -0
- package/modules/drive/src/workflows/complete-milestone.md +479 -0
- package/modules/drive/src/workflows/configure-special-flows.md +283 -0
- package/modules/drive/src/workflows/consider-issues.md +172 -0
- package/modules/drive/src/workflows/create-milestone.md +268 -0
- package/modules/drive/src/workflows/debug.md +292 -0
- package/modules/drive/src/workflows/discovery.md +187 -0
- package/modules/drive/src/workflows/discuss-milestone.md +245 -0
- package/modules/drive/src/workflows/discuss-phase.md +231 -0
- package/modules/drive/src/workflows/init-project.md +698 -0
- package/modules/drive/src/workflows/map-codebase.md +459 -0
- package/modules/drive/src/workflows/pause-work.md +259 -0
- package/modules/drive/src/workflows/phase-assumptions.md +181 -0
- package/modules/drive/src/workflows/plan-phase.md +385 -0
- package/modules/drive/src/workflows/quality-gate.md +263 -0
- package/modules/drive/src/workflows/register-manifest.md +107 -0
- package/modules/drive/src/workflows/research.md +241 -0
- package/modules/drive/src/workflows/resume-project.md +200 -0
- package/modules/drive/src/workflows/roadmap-management.md +334 -0
- package/modules/drive/src/workflows/transition-phase.md +368 -0
- package/modules/drive/src/workflows/unify-phase.md +290 -0
- package/modules/drive/src/workflows/verify-work.md +241 -0
- package/modules/forge/README.md +281 -0
- package/modules/forge/bin/install.js +200 -0
- package/modules/forge/package.json +32 -0
- package/modules/forge/skillsmith/rules/checklists-rules.md +42 -0
- package/modules/forge/skillsmith/rules/context-rules.md +43 -0
- package/modules/forge/skillsmith/rules/entry-point-rules.md +44 -0
- package/modules/forge/skillsmith/rules/frameworks-rules.md +43 -0
- package/modules/forge/skillsmith/rules/tasks-rules.md +52 -0
- package/modules/forge/skillsmith/rules/templates-rules.md +43 -0
- package/modules/forge/skillsmith/skillsmith.md +82 -0
- package/modules/forge/skillsmith/tasks/audit.md +277 -0
- package/modules/forge/skillsmith/tasks/discover.md +145 -0
- package/modules/forge/skillsmith/tasks/distill.md +276 -0
- package/modules/forge/skillsmith/tasks/scaffold.md +349 -0
- package/modules/forge/specs/checklists.md +193 -0
- package/modules/forge/specs/context.md +223 -0
- package/modules/forge/specs/entry-point.md +320 -0
- package/modules/forge/specs/frameworks.md +228 -0
- package/modules/forge/specs/rules.md +245 -0
- package/modules/forge/specs/tasks.md +344 -0
- package/modules/forge/specs/templates.md +335 -0
- package/modules/forge/terminal.svg +70 -0
- package/modules/ignition/README.md +245 -0
- package/modules/ignition/bin/install.js +184 -0
- package/modules/ignition/checklists/planning-quality.md +55 -0
- package/modules/ignition/data/application/config.md +21 -0
- package/modules/ignition/data/application/guide.md +51 -0
- package/modules/ignition/data/application/skill-loadout.md +11 -0
- package/modules/ignition/data/campaign/config.md +18 -0
- package/modules/ignition/data/campaign/guide.md +36 -0
- package/modules/ignition/data/campaign/skill-loadout.md +10 -0
- package/modules/ignition/data/client/config.md +18 -0
- package/modules/ignition/data/client/guide.md +36 -0
- package/modules/ignition/data/client/skill-loadout.md +11 -0
- package/modules/ignition/data/utility/config.md +18 -0
- package/modules/ignition/data/utility/guide.md +31 -0
- package/modules/ignition/data/utility/skill-loadout.md +8 -0
- package/modules/ignition/data/workflow/config.md +19 -0
- package/modules/ignition/data/workflow/guide.md +41 -0
- package/modules/ignition/data/workflow/skill-loadout.md +10 -0
- package/modules/ignition/integration.js +54 -0
- package/modules/ignition/package.json +35 -0
- package/modules/ignition/seed.md +81 -0
- package/modules/ignition/tasks/add-type.md +164 -0
- package/modules/ignition/tasks/graduate.md +182 -0
- package/modules/ignition/tasks/ideate.md +221 -0
- package/modules/ignition/tasks/launch.md +137 -0
- package/modules/ignition/tasks/status.md +71 -0
- package/modules/ignition/templates/planning-application.md +193 -0
- package/modules/ignition/templates/planning-campaign.md +138 -0
- package/modules/ignition/templates/planning-client.md +149 -0
- package/modules/ignition/templates/planning-utility.md +112 -0
- package/modules/ignition/templates/planning-workflow.md +125 -0
- package/modules/ignition/terminal.svg +74 -0
- package/modules/mission-control/CONTEXT-CONTINUITY-SPEC.md +293 -0
- package/modules/mission-control/CONTEXT-ENGINEERING-GUIDE.md +282 -0
- package/modules/mission-control/README.md +91 -0
- package/modules/mission-control/assets/terminal.svg +80 -0
- package/modules/mission-control/examples/entities.example.json +133 -0
- package/modules/mission-control/examples/projects.example.json +318 -0
- package/modules/mission-control/examples/state.example.json +183 -0
- package/modules/mission-control/examples/vector.example.json +245 -0
- package/modules/mission-control/mission-control/checklists/install-verification.md +46 -0
- package/modules/mission-control/mission-control/frameworks/framework-registry.md +83 -0
- package/modules/mission-control/mission-control/mission-control.md +83 -0
- package/modules/mission-control/mission-control/tasks/insights.md +73 -0
- package/modules/mission-control/mission-control/tasks/install.md +194 -0
- package/modules/mission-control/mission-control/tasks/status.md +125 -0
- package/modules/mission-control/schemas/entities.schema.json +89 -0
- package/modules/mission-control/schemas/projects.schema.json +221 -0
- package/modules/mission-control/schemas/state.schema.json +108 -0
- package/modules/mission-control/schemas/vector.schema.json +200 -0
- package/modules/momentum/README.md +678 -0
- package/modules/momentum/bin/install.js +563 -0
- package/modules/momentum/integration.js +131 -0
- package/modules/momentum/package.json +42 -0
- package/modules/momentum/schemas/entities.schema.json +89 -0
- package/modules/momentum/schemas/projects.schema.json +221 -0
- package/modules/momentum/schemas/state.schema.json +108 -0
- package/modules/momentum/src/commands/audit-claude-md.md +31 -0
- package/modules/momentum/src/commands/audit.md +33 -0
- package/modules/momentum/src/commands/groom.md +35 -0
- package/modules/momentum/src/commands/history.md +27 -0
- package/modules/momentum/src/commands/pulse.md +33 -0
- package/modules/momentum/src/commands/scaffold.md +33 -0
- package/modules/momentum/src/commands/status.md +28 -0
- package/modules/momentum/src/commands/surface-convert.md +35 -0
- package/modules/momentum/src/commands/surface-create.md +34 -0
- package/modules/momentum/src/commands/surface-list.md +27 -0
- package/modules/momentum/src/commands/vector-hygiene.md +33 -0
- package/modules/momentum/src/framework/context/momentum-principles.md +71 -0
- package/modules/momentum/src/framework/frameworks/audit-strategies.md +53 -0
- package/modules/momentum/src/framework/frameworks/satellite-registration.md +44 -0
- package/modules/momentum/src/framework/tasks/audit-claude-md.md +68 -0
- package/modules/momentum/src/framework/tasks/audit.md +64 -0
- package/modules/momentum/src/framework/tasks/groom.md +164 -0
- package/modules/momentum/src/framework/tasks/history.md +34 -0
- package/modules/momentum/src/framework/tasks/pulse.md +83 -0
- package/modules/momentum/src/framework/tasks/scaffold.md +202 -0
- package/modules/momentum/src/framework/tasks/status.md +35 -0
- package/modules/momentum/src/framework/tasks/surface-convert.md +143 -0
- package/modules/momentum/src/framework/tasks/surface-create.md +184 -0
- package/modules/momentum/src/framework/tasks/surface-list.md +42 -0
- package/modules/momentum/src/framework/tasks/vector-hygiene.md +160 -0
- package/modules/momentum/src/framework/templates/workspace-json.md +96 -0
- package/modules/momentum/src/hooks/_template.py +129 -0
- package/modules/momentum/src/hooks/active-hook.py +178 -0
- package/modules/momentum/src/hooks/backlog-hook.py +115 -0
- package/modules/momentum/src/hooks/mission-control-insights.py +169 -0
- package/modules/momentum/src/hooks/momentum-pulse-check.py +351 -0
- package/modules/momentum/src/hooks/operator.py +53 -0
- package/modules/momentum/src/hooks/psmm-injector.py +67 -0
- package/modules/momentum/src/hooks/satellite-detection.py +248 -0
- package/modules/momentum/src/packages/momentum-mcp/index.js +119 -0
- package/modules/momentum/src/packages/momentum-mcp/package.json +10 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/entities.js +226 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/operator.js +106 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/projects.js +322 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/psmm.js +206 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/state.js +199 -0
- package/modules/momentum/src/packages/momentum-mcp/tools/surfaces.js +404 -0
- package/modules/momentum/src/skill/momentum.md +111 -0
- package/modules/momentum/src/tasks/groom.md +164 -0
- package/modules/momentum/src/templates/operator.json +66 -0
- package/modules/momentum/src/templates/workspace.json +111 -0
- package/modules/momentum/terminal.svg +77 -0
- package/modules/radar/README.md +1552 -0
- package/modules/radar/commands/audit.md +233 -0
- package/modules/radar/commands/guardrails.md +194 -0
- package/modules/radar/commands/init.md +207 -0
- package/modules/radar/commands/playbook.md +176 -0
- package/modules/radar/commands/remediate.md +156 -0
- package/modules/radar/commands/report.md +172 -0
- package/modules/radar/commands/resume.md +176 -0
- package/modules/radar/commands/status.md +148 -0
- package/modules/radar/commands/transform.md +205 -0
- package/modules/radar/commands/validate.md +177 -0
- package/modules/radar/docs/ARCHITECTURE.md +336 -0
- package/modules/radar/docs/GETTING-STARTED.md +287 -0
- package/modules/radar/docs/standards/agents.md +197 -0
- package/modules/radar/docs/standards/commands.md +250 -0
- package/modules/radar/docs/standards/domains.md +191 -0
- package/modules/radar/docs/standards/personas.md +211 -0
- package/modules/radar/docs/standards/rules.md +218 -0
- package/modules/radar/docs/standards/runtime.md +445 -0
- package/modules/radar/docs/standards/schemas.md +269 -0
- package/modules/radar/docs/standards/tools.md +273 -0
- package/modules/radar/docs/standards/workflows.md +254 -0
- package/modules/radar/docs/terminal.svg +72 -0
- package/modules/radar/docs/validation/convention-compliance-report.md +183 -0
- package/modules/radar/docs/validation/cross-reference-report.md +195 -0
- package/modules/radar/docs/validation/validation-summary.md +118 -0
- package/modules/radar/docs/validation/version-manifest.yaml +363 -0
- package/modules/radar/install.sh +711 -0
- package/modules/radar/integration.js +53 -0
- package/modules/radar/src/core/agents/architect.md +25 -0
- package/modules/radar/src/core/agents/compliance-officer.md +25 -0
- package/modules/radar/src/core/agents/data-engineer.md +25 -0
- package/modules/radar/src/core/agents/devils-advocate.md +22 -0
- package/modules/radar/src/core/agents/performance-engineer.md +25 -0
- package/modules/radar/src/core/agents/principal-engineer.md +23 -0
- package/modules/radar/src/core/agents/reality-gap-analyst.md +22 -0
- package/modules/radar/src/core/agents/security-engineer.md +25 -0
- package/modules/radar/src/core/agents/senior-app-engineer.md +25 -0
- package/modules/radar/src/core/agents/sre.md +25 -0
- package/modules/radar/src/core/agents/staff-engineer.md +23 -0
- package/modules/radar/src/core/agents/test-engineer.md +25 -0
- package/modules/radar/src/core/personas/architect.md +111 -0
- package/modules/radar/src/core/personas/compliance-officer.md +104 -0
- package/modules/radar/src/core/personas/data-engineer.md +113 -0
- package/modules/radar/src/core/personas/devils-advocate.md +105 -0
- package/modules/radar/src/core/personas/performance-engineer.md +119 -0
- package/modules/radar/src/core/personas/principal-engineer.md +119 -0
- package/modules/radar/src/core/personas/reality-gap-analyst.md +111 -0
- package/modules/radar/src/core/personas/security-engineer.md +108 -0
- package/modules/radar/src/core/personas/senior-app-engineer.md +111 -0
- package/modules/radar/src/core/personas/sre.md +117 -0
- package/modules/radar/src/core/personas/staff-engineer.md +109 -0
- package/modules/radar/src/core/personas/test-engineer.md +109 -0
- package/modules/radar/src/core/workflows/disagreement-resolution.md +183 -0
- package/modules/radar/src/core/workflows/phase-0-context.md +148 -0
- package/modules/radar/src/core/workflows/phase-1-reconnaissance.md +169 -0
- package/modules/radar/src/core/workflows/phase-2-domain-audits.md +190 -0
- package/modules/radar/src/core/workflows/phase-3-cross-domain.md +177 -0
- package/modules/radar/src/core/workflows/phase-4-adversarial-review.md +165 -0
- package/modules/radar/src/core/workflows/phase-5-report.md +189 -0
- package/modules/radar/src/core/workflows/phase-checkpoint.md +222 -0
- package/modules/radar/src/core/workflows/session-handoff.md +152 -0
- package/modules/radar/src/domains/00-context.md +201 -0
- package/modules/radar/src/domains/01-architecture.md +248 -0
- package/modules/radar/src/domains/02-data.md +224 -0
- package/modules/radar/src/domains/03-correctness.md +230 -0
- package/modules/radar/src/domains/04-security.md +274 -0
- package/modules/radar/src/domains/05-compliance.md +228 -0
- package/modules/radar/src/domains/06-testing.md +228 -0
- package/modules/radar/src/domains/07-reliability.md +246 -0
- package/modules/radar/src/domains/08-performance.md +247 -0
- package/modules/radar/src/domains/09-maintainability.md +271 -0
- package/modules/radar/src/domains/10-operability.md +250 -0
- package/modules/radar/src/domains/11-change-risk.md +246 -0
- package/modules/radar/src/domains/12-team-risk.md +221 -0
- package/modules/radar/src/domains/13-risk-synthesis.md +202 -0
- package/modules/radar/src/rules/agent-boundaries.md +78 -0
- package/modules/radar/src/rules/disagreement-protocol.md +76 -0
- package/modules/radar/src/rules/epistemic-hygiene.md +78 -0
- package/modules/radar/src/schemas/confidence.md +185 -0
- package/modules/radar/src/schemas/disagreement.md +238 -0
- package/modules/radar/src/schemas/finding.md +287 -0
- package/modules/radar/src/schemas/report-section.md +150 -0
- package/modules/radar/src/schemas/signal.md +108 -0
- package/modules/radar/src/tools/checkov.md +463 -0
- package/modules/radar/src/tools/git-history.md +581 -0
- package/modules/radar/src/tools/gitleaks.md +447 -0
- package/modules/radar/src/tools/grype.md +611 -0
- package/modules/radar/src/tools/semgrep.md +378 -0
- package/modules/radar/src/tools/sonarqube.md +550 -0
- package/modules/radar/src/tools/syft.md +539 -0
- package/modules/radar/src/tools/trivy.md +439 -0
- package/modules/radar/src/transform/agents/change-risk-modeler.md +24 -0
- package/modules/radar/src/transform/agents/execution-validator.md +24 -0
- package/modules/radar/src/transform/agents/guardrail-generator.md +24 -0
- package/modules/radar/src/transform/agents/pedagogy-agent.md +24 -0
- package/modules/radar/src/transform/agents/remediation-architect.md +24 -0
- package/modules/radar/src/transform/personas/change-risk-modeler.md +95 -0
- package/modules/radar/src/transform/personas/execution-validator.md +95 -0
- package/modules/radar/src/transform/personas/guardrail-generator.md +103 -0
- package/modules/radar/src/transform/personas/pedagogy-agent.md +105 -0
- package/modules/radar/src/transform/personas/remediation-architect.md +95 -0
- package/modules/radar/src/transform/rules/change-risk-rules.md +87 -0
- package/modules/radar/src/transform/rules/safety-governance.md +87 -0
- package/modules/radar/src/transform/schemas/change-risk.md +139 -0
- package/modules/radar/src/transform/schemas/intervention-level.md +207 -0
- package/modules/radar/src/transform/schemas/playbook.md +205 -0
- package/modules/radar/src/transform/schemas/verification-plan.md +134 -0
- package/modules/radar/src/transform/workflows/phase-6-remediation.md +148 -0
- package/modules/radar/src/transform/workflows/phase-7-risk-validation.md +161 -0
- package/modules/radar/src/transform/workflows/phase-8-execution-planning.md +159 -0
- package/modules/radar/src/transform/workflows/transform-safety.md +158 -0
- package/modules/vector/.vector-template/sessions/.gitkeep +0 -0
- package/modules/vector/.vector-template/vector.json +72 -0
- package/modules/vector/AUDIT-CLAUDEMD.md +154 -0
- package/modules/vector/INSTALL.md +185 -0
- package/modules/vector/LICENSE +21 -0
- package/modules/vector/README.md +409 -0
- package/modules/vector/VECTOR-BLOCK.md +57 -0
- package/modules/vector/assets/terminal.svg +68 -0
- package/modules/vector/bin/install.js +455 -0
- package/modules/vector/bin/migrate-v1-to-v2.sh +492 -0
- package/modules/vector/commands/help.md +46 -0
- package/modules/vector/hooks/vector-hook.py +775 -0
- package/modules/vector/mcp/index.js +118 -0
- package/modules/vector/mcp/package.json +10 -0
- package/modules/vector/mcp/tools/decisions.js +269 -0
- package/modules/vector/mcp/tools/domains.js +361 -0
- package/modules/vector/mcp/tools/staging.js +252 -0
- package/modules/vector/mcp/tools/vector-json.js +647 -0
- package/modules/vector/package.json +38 -0
- package/modules/vector/schemas/vector.schema.json +237 -0
- package/package.json +39 -0
- package/shared/branding/branding.js +70 -0
- package/shared/config/defaults.json +59 -0
- package/shared/events/README.md +175 -0
- package/shared/events/event-bus.js +134 -0
- package/shared/events/event_bus.py +255 -0
- package/shared/events/integrations.js +161 -0
- package/shared/events/schemas/audit-complete.schema.json +21 -0
- package/shared/events/schemas/phase-progress.schema.json +23 -0
- package/shared/events/schemas/plan-created.schema.json +21 -0
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "accelerate/modules/vector/vector.schema.json",
|
|
4
|
+
"title": "Vector Configuration",
|
|
5
|
+
"description": "Context Augmentation & Reinforcement Layer — behavioral governance. Nested domain objects: each domain is self-contained with its own rules, decisions, and config. Replaces manifest + domain files + staging.json.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["version", "config", "domains"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"version": {
|
|
10
|
+
"type": "integer",
|
|
11
|
+
"const": 1
|
|
12
|
+
},
|
|
13
|
+
"last_modified": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"format": "date-time"
|
|
16
|
+
},
|
|
17
|
+
"config": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"description": "Global Vector configuration (previously in manifest header)",
|
|
20
|
+
"required": ["devmode", "post_compact_gate"],
|
|
21
|
+
"properties": {
|
|
22
|
+
"devmode": {
|
|
23
|
+
"type": "boolean",
|
|
24
|
+
"description": "When true, Claude appends debug section showing rules/tools/governance",
|
|
25
|
+
"default": false
|
|
26
|
+
},
|
|
27
|
+
"post_compact_gate": {
|
|
28
|
+
"type": "boolean",
|
|
29
|
+
"description": "When true, human-in-loop after context compaction. When false, autonomous continuation.",
|
|
30
|
+
"default": true
|
|
31
|
+
},
|
|
32
|
+
"global_exclude": {
|
|
33
|
+
"type": "array",
|
|
34
|
+
"description": "Phrases that skip ALL domain matching (casual/off-topic conversations)",
|
|
35
|
+
"items": { "type": "string" },
|
|
36
|
+
"default": []
|
|
37
|
+
},
|
|
38
|
+
"context_brackets": {
|
|
39
|
+
"type": "object",
|
|
40
|
+
"description": "Context window bracket rules — injected based on remaining context percentage",
|
|
41
|
+
"properties": {
|
|
42
|
+
"FRESH": { "$ref": "#/$defs/context_bracket" },
|
|
43
|
+
"MODERATE": { "$ref": "#/$defs/context_bracket" },
|
|
44
|
+
"DEPLETED": { "$ref": "#/$defs/context_bracket" }
|
|
45
|
+
},
|
|
46
|
+
"additionalProperties": { "$ref": "#/$defs/context_bracket" },
|
|
47
|
+
"default": {}
|
|
48
|
+
},
|
|
49
|
+
"commands": {
|
|
50
|
+
"type": "object",
|
|
51
|
+
"description": "Star commands (*FOCUS, *LASER, etc.) — keyed by command name, values are rule arrays",
|
|
52
|
+
"additionalProperties": {
|
|
53
|
+
"type": "array",
|
|
54
|
+
"items": { "type": "string" }
|
|
55
|
+
},
|
|
56
|
+
"default": {}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"domains": {
|
|
61
|
+
"type": "object",
|
|
62
|
+
"description": "Domain definitions keyed by domain name. Each domain is self-contained.",
|
|
63
|
+
"additionalProperties": { "$ref": "#/$defs/domain" }
|
|
64
|
+
},
|
|
65
|
+
"staging": {
|
|
66
|
+
"type": "array",
|
|
67
|
+
"description": "Staged rule proposals from PSMM — pending review during Vector hygiene",
|
|
68
|
+
"items": { "$ref": "#/$defs/staging_entry" },
|
|
69
|
+
"default": []
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"$defs": {
|
|
73
|
+
"context_bracket": {
|
|
74
|
+
"type": "object",
|
|
75
|
+
"description": "Context bracket configuration for a specific threshold",
|
|
76
|
+
"properties": {
|
|
77
|
+
"enabled": {
|
|
78
|
+
"type": "boolean",
|
|
79
|
+
"description": "Whether this bracket's rules are active",
|
|
80
|
+
"default": true
|
|
81
|
+
},
|
|
82
|
+
"rules": {
|
|
83
|
+
"type": "array",
|
|
84
|
+
"description": "Rules to inject when context is in this bracket",
|
|
85
|
+
"items": { "type": "string" },
|
|
86
|
+
"default": []
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
"domain": {
|
|
91
|
+
"type": "object",
|
|
92
|
+
"required": ["state", "always_on", "rules"],
|
|
93
|
+
"properties": {
|
|
94
|
+
"state": {
|
|
95
|
+
"type": "string",
|
|
96
|
+
"enum": ["active", "inactive"],
|
|
97
|
+
"description": "Whether domain is enabled"
|
|
98
|
+
},
|
|
99
|
+
"always_on": {
|
|
100
|
+
"type": "boolean",
|
|
101
|
+
"description": "If true, loads regardless of state or recall matching",
|
|
102
|
+
"default": false
|
|
103
|
+
},
|
|
104
|
+
"recall": {
|
|
105
|
+
"type": "array",
|
|
106
|
+
"description": "Natural language phrases that trigger on-demand loading",
|
|
107
|
+
"items": { "type": "string" },
|
|
108
|
+
"default": []
|
|
109
|
+
},
|
|
110
|
+
"exclude": {
|
|
111
|
+
"type": "array",
|
|
112
|
+
"description": "Phrases that prevent this domain from loading even if recall matches",
|
|
113
|
+
"items": { "type": "string" },
|
|
114
|
+
"default": []
|
|
115
|
+
},
|
|
116
|
+
"rules": {
|
|
117
|
+
"type": "array",
|
|
118
|
+
"description": "Behavioral rules for this domain",
|
|
119
|
+
"items": { "$ref": "#/$defs/rule" }
|
|
120
|
+
},
|
|
121
|
+
"decisions": {
|
|
122
|
+
"type": "array",
|
|
123
|
+
"description": "Logged decisions for this domain",
|
|
124
|
+
"items": { "$ref": "#/$defs/decision" },
|
|
125
|
+
"default": []
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
"rule": {
|
|
130
|
+
"type": "object",
|
|
131
|
+
"required": ["id", "text"],
|
|
132
|
+
"properties": {
|
|
133
|
+
"id": {
|
|
134
|
+
"type": "integer",
|
|
135
|
+
"description": "Rule number within domain (0-indexed)"
|
|
136
|
+
},
|
|
137
|
+
"text": {
|
|
138
|
+
"type": "string",
|
|
139
|
+
"description": "The rule instruction"
|
|
140
|
+
},
|
|
141
|
+
"added": {
|
|
142
|
+
"type": ["string", "null"],
|
|
143
|
+
"format": "date",
|
|
144
|
+
"description": "When rule was added"
|
|
145
|
+
},
|
|
146
|
+
"last_reviewed": {
|
|
147
|
+
"type": ["string", "null"],
|
|
148
|
+
"format": "date",
|
|
149
|
+
"description": "Last review date"
|
|
150
|
+
},
|
|
151
|
+
"source": {
|
|
152
|
+
"type": ["string", "null"],
|
|
153
|
+
"description": "Origin of rule (manual, psmm, staging)",
|
|
154
|
+
"default": "manual"
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
"decision": {
|
|
159
|
+
"type": "object",
|
|
160
|
+
"required": ["id", "decision", "rationale", "date"],
|
|
161
|
+
"properties": {
|
|
162
|
+
"id": {
|
|
163
|
+
"type": "string",
|
|
164
|
+
"description": "Unique decision ID (e.g. global-001, casegate-003)"
|
|
165
|
+
},
|
|
166
|
+
"decision": {
|
|
167
|
+
"type": "string",
|
|
168
|
+
"description": "What was decided"
|
|
169
|
+
},
|
|
170
|
+
"rationale": {
|
|
171
|
+
"type": "string",
|
|
172
|
+
"description": "Why this decision was made"
|
|
173
|
+
},
|
|
174
|
+
"date": {
|
|
175
|
+
"type": "string",
|
|
176
|
+
"format": "date"
|
|
177
|
+
},
|
|
178
|
+
"source": {
|
|
179
|
+
"type": ["string", "null"],
|
|
180
|
+
"enum": ["manual", "psmm", "session", null],
|
|
181
|
+
"default": "manual"
|
|
182
|
+
},
|
|
183
|
+
"recall": {
|
|
184
|
+
"type": "array",
|
|
185
|
+
"description": "Keywords for decision retrieval",
|
|
186
|
+
"items": { "type": "string" },
|
|
187
|
+
"default": []
|
|
188
|
+
},
|
|
189
|
+
"status": {
|
|
190
|
+
"type": "string",
|
|
191
|
+
"enum": ["active", "archived"],
|
|
192
|
+
"default": "active"
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
"staging_entry": {
|
|
197
|
+
"type": "object",
|
|
198
|
+
"required": ["id", "proposed_domain", "rule_text", "created_at"],
|
|
199
|
+
"properties": {
|
|
200
|
+
"id": {
|
|
201
|
+
"type": "string",
|
|
202
|
+
"description": "Staging entry ID"
|
|
203
|
+
},
|
|
204
|
+
"source_session": {
|
|
205
|
+
"type": ["string", "null"],
|
|
206
|
+
"description": "PSMM session UUID that originated this proposal"
|
|
207
|
+
},
|
|
208
|
+
"proposed_domain": {
|
|
209
|
+
"type": "string",
|
|
210
|
+
"description": "Target domain for the rule"
|
|
211
|
+
},
|
|
212
|
+
"rule_text": {
|
|
213
|
+
"type": "string",
|
|
214
|
+
"description": "Proposed rule text"
|
|
215
|
+
},
|
|
216
|
+
"rationale": {
|
|
217
|
+
"type": ["string", "null"],
|
|
218
|
+
"description": "Why this rule was proposed"
|
|
219
|
+
},
|
|
220
|
+
"status": {
|
|
221
|
+
"type": "string",
|
|
222
|
+
"enum": ["pending", "approved", "rejected"],
|
|
223
|
+
"default": "pending"
|
|
224
|
+
},
|
|
225
|
+
"created_at": {
|
|
226
|
+
"type": "string",
|
|
227
|
+
"format": "date-time"
|
|
228
|
+
},
|
|
229
|
+
"reviewed_at": {
|
|
230
|
+
"type": ["string", "null"],
|
|
231
|
+
"format": "date-time",
|
|
232
|
+
"default": null
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@accelerationguy/accel",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Accelerate — Unified Claude Code Agent Framework by Acceleration Guy",
|
|
5
|
+
"bin": {
|
|
6
|
+
"accel": "./bin/install.js"
|
|
7
|
+
},
|
|
8
|
+
"keywords": [
|
|
9
|
+
"claude-code",
|
|
10
|
+
"ai-development",
|
|
11
|
+
"workflow",
|
|
12
|
+
"rules-engine",
|
|
13
|
+
"workspace-management",
|
|
14
|
+
"skill-builder",
|
|
15
|
+
"security-audit",
|
|
16
|
+
"accelerate"
|
|
17
|
+
],
|
|
18
|
+
"author": "Yogi Gnanavel <accelerationguy.com>",
|
|
19
|
+
"license": "MIT",
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "https://github.com/accelerationguy/accelerate.git"
|
|
23
|
+
},
|
|
24
|
+
"homepage": "https://accelerationguy.com/accelerate",
|
|
25
|
+
"bugs": {
|
|
26
|
+
"url": "https://github.com/accelerationguy/accelerate/issues"
|
|
27
|
+
},
|
|
28
|
+
"engines": {
|
|
29
|
+
"node": ">=16.0.0"
|
|
30
|
+
},
|
|
31
|
+
"files": [
|
|
32
|
+
"bin/",
|
|
33
|
+
"modules/",
|
|
34
|
+
"shared/",
|
|
35
|
+
"docs/",
|
|
36
|
+
"README.md",
|
|
37
|
+
"CLAUDE.md"
|
|
38
|
+
]
|
|
39
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Accelerate Branding Constants
|
|
3
|
+
*
|
|
4
|
+
* Centralised brand identity for the Accelerate monorepo.
|
|
5
|
+
* All TUI output, installer banners, and user-facing text
|
|
6
|
+
* should reference these constants for consistency.
|
|
7
|
+
*
|
|
8
|
+
* @module shared/branding/branding
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
const BRAND = {
|
|
12
|
+
/** Top-level product name */
|
|
13
|
+
name: 'Accelerate',
|
|
14
|
+
|
|
15
|
+
/** npm scope used by all published packages */
|
|
16
|
+
scope: '@accel',
|
|
17
|
+
|
|
18
|
+
/** CLI binary name */
|
|
19
|
+
cli: 'accel',
|
|
20
|
+
|
|
21
|
+
/** Author */
|
|
22
|
+
author: 'Yogi Gnanavel',
|
|
23
|
+
|
|
24
|
+
/** Author brand */
|
|
25
|
+
authorBrand: 'Acceleration Guy',
|
|
26
|
+
|
|
27
|
+
/** Website */
|
|
28
|
+
site: 'https://accelerationguy.com',
|
|
29
|
+
|
|
30
|
+
/** Product tagline shown in installer banner */
|
|
31
|
+
tagline: 'Ship faster with structured AI workflows',
|
|
32
|
+
|
|
33
|
+
/** TUI colour palette (ANSI 256 / hex for Ink-based renderers) */
|
|
34
|
+
colors: {
|
|
35
|
+
primary: '#6C5CE7',
|
|
36
|
+
secondary: '#00CEC9',
|
|
37
|
+
accent: '#FDCB6E',
|
|
38
|
+
success: '#00B894',
|
|
39
|
+
warning: '#E17055',
|
|
40
|
+
error: '#D63031',
|
|
41
|
+
muted: '#636E72',
|
|
42
|
+
bg: '#2D3436',
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Human-friendly display names for each module.
|
|
47
|
+
* Keys match the directory names under modules/.
|
|
48
|
+
*/
|
|
49
|
+
modules: {
|
|
50
|
+
vector: { display: 'Vector', tagline: 'Dynamic rules engine' },
|
|
51
|
+
momentum: { display: 'Momentum', tagline: 'Workspace awareness layer' },
|
|
52
|
+
drive: { display: 'Drive', tagline: 'Plan-Apply-Unify execution' },
|
|
53
|
+
ignition: { display: 'Ignition', tagline: 'Project ideation & scaffolding' },
|
|
54
|
+
radar: { display: 'Radar', tagline: 'Security & quality audits' },
|
|
55
|
+
forge: { display: 'Forge', tagline: 'Skill authoring toolkit' },
|
|
56
|
+
'mission-control': { display: 'Mission Control', tagline: 'Orchestration & install' },
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
/** Installer banner (plain-text, coloured at render time) */
|
|
60
|
+
banner: [
|
|
61
|
+
'',
|
|
62
|
+
' ╔═══════════════════════════════════════╗',
|
|
63
|
+
' ║ A C C E L E R A T E ║',
|
|
64
|
+
' ║ Ship faster with structured AI ║',
|
|
65
|
+
' ╚═══════════════════════════════════════╝',
|
|
66
|
+
'',
|
|
67
|
+
].join('\n'),
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
module.exports = BRAND;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"_comment": "Accelerate default configuration — shared across all modules",
|
|
4
|
+
"installDir": "~/.accel",
|
|
5
|
+
"events": {
|
|
6
|
+
"dir": "~/.accel/events",
|
|
7
|
+
"archiveDir": "~/.accel/events/archive",
|
|
8
|
+
"errorsDir": "~/.accel/events/errors",
|
|
9
|
+
"ttlDays": 7,
|
|
10
|
+
"archiveCapPerModule": 100,
|
|
11
|
+
"schemasDir": "~/.accel/events/schemas"
|
|
12
|
+
},
|
|
13
|
+
"modules": {
|
|
14
|
+
"vector": {
|
|
15
|
+
"configFile": "vector.json",
|
|
16
|
+
"installDir": "~/.accel/modules/vector",
|
|
17
|
+
"enabled": true
|
|
18
|
+
},
|
|
19
|
+
"momentum": {
|
|
20
|
+
"surfaces": ["active", "backlog", "projects", "entities", "state"],
|
|
21
|
+
"installDir": "~/.accel/modules/momentum",
|
|
22
|
+
"enabled": true
|
|
23
|
+
},
|
|
24
|
+
"drive": {
|
|
25
|
+
"planFile": "PLAN.md",
|
|
26
|
+
"stateDir": ".paul",
|
|
27
|
+
"installDir": "~/.accel/modules/drive",
|
|
28
|
+
"enabled": true
|
|
29
|
+
},
|
|
30
|
+
"ignition": {
|
|
31
|
+
"outputFile": "PLANNING.md",
|
|
32
|
+
"installDir": "~/.accel/modules/ignition",
|
|
33
|
+
"enabled": true
|
|
34
|
+
},
|
|
35
|
+
"radar": {
|
|
36
|
+
"phases": {
|
|
37
|
+
"diagnostic": [0, 1, 2, 3, 4, 5],
|
|
38
|
+
"transform": [6, 7, 8]
|
|
39
|
+
},
|
|
40
|
+
"domains": 14,
|
|
41
|
+
"installDir": "~/.accel/modules/radar",
|
|
42
|
+
"enabled": true
|
|
43
|
+
},
|
|
44
|
+
"forge": {
|
|
45
|
+
"skillsDir": "~/.claude/commands",
|
|
46
|
+
"installDir": "~/.accel/modules/forge",
|
|
47
|
+
"enabled": true
|
|
48
|
+
},
|
|
49
|
+
"mission-control": {
|
|
50
|
+
"installDir": "~/.accel/modules/mission-control",
|
|
51
|
+
"enabled": true
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"logging": {
|
|
55
|
+
"level": "info",
|
|
56
|
+
"dir": "~/.accel/logs"
|
|
57
|
+
},
|
|
58
|
+
"manifestPath": "~/.accel/manifest.json"
|
|
59
|
+
}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# Accelerate Event Bus
|
|
2
|
+
|
|
3
|
+
File-based cross-module communication for the Accelerate framework. Modules emit and consume JSON event files through a shared directory (`~/.accel/events/`), enabling loose coupling between modules that may be written in different languages.
|
|
4
|
+
|
|
5
|
+
## Architecture
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
~/.accel/events/
|
|
9
|
+
├── *.json # Pending events (consumed on next module invocation)
|
|
10
|
+
├── archive/ # Processed events (moved here after consumption)
|
|
11
|
+
├── errors/ # Malformed or invalid-producer events
|
|
12
|
+
└── schemas/ # Event type schemas (optional validation)
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
Events are simple JSON files. Any language that can read/write JSON files can participate.
|
|
16
|
+
|
|
17
|
+
## Implementations
|
|
18
|
+
|
|
19
|
+
| Language | File | Usage |
|
|
20
|
+
|------------|-------------------------------------|------------------------------------|
|
|
21
|
+
| Node.js | `shared/events/event-bus.js` | Core library for Node.js modules |
|
|
22
|
+
| Node.js | `shared/events/integrations.js` | High-level integration functions |
|
|
23
|
+
| Python | `shared/events/event_bus.py` | Standalone library for Python hooks|
|
|
24
|
+
|
|
25
|
+
Both implementations use the **same file format** and are fully interoperable.
|
|
26
|
+
|
|
27
|
+
## Event File Format
|
|
28
|
+
|
|
29
|
+
Every event file contains these fields:
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"_producer": "ignition",
|
|
34
|
+
"source": "ignition",
|
|
35
|
+
"type": "plan-created",
|
|
36
|
+
"payload": {
|
|
37
|
+
"path": "projects/my-app/PLANNING.md",
|
|
38
|
+
"projectType": "application",
|
|
39
|
+
"title": "My App"
|
|
40
|
+
},
|
|
41
|
+
"timestamp": "2026-03-26T12:00:00.000Z"
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
| Field | Type | Description |
|
|
46
|
+
|--------------|--------|----------------------------------------------------|
|
|
47
|
+
| `_producer` | string | Module ID that emitted the event |
|
|
48
|
+
| `source` | string | Same as `_producer` (kept for backward compat) |
|
|
49
|
+
| `type` | string | Event type identifier |
|
|
50
|
+
| `payload` | object | Event-specific data |
|
|
51
|
+
| `timestamp` | string | ISO 8601 timestamp of emission |
|
|
52
|
+
|
|
53
|
+
Filename format: `{iso-timestamp}-{sequence}-{source}-{type}.json`
|
|
54
|
+
|
|
55
|
+
## Event Types
|
|
56
|
+
|
|
57
|
+
| Event | Producer | Consumers | Payload |
|
|
58
|
+
|------------------|------------|--------------------|--------------------------------------------------|
|
|
59
|
+
| `plan-created` | ignition | drive, momentum | `path`, `projectType`, `title` |
|
|
60
|
+
| `phase-progress` | drive | momentum | `phase`, `status`, `planPath`, `completedTasks`, `totalTasks` |
|
|
61
|
+
| `audit-complete` | radar | momentum | `findings`, `critical`, `report` |
|
|
62
|
+
|
|
63
|
+
## Using the Python Event Bus
|
|
64
|
+
|
|
65
|
+
### Emitting Events
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
from event_bus import emit, emit_plan_created
|
|
69
|
+
|
|
70
|
+
# Generic emit
|
|
71
|
+
emit("ignition", "plan-created", {
|
|
72
|
+
"path": "projects/my-app/PLANNING.md",
|
|
73
|
+
"projectType": "application",
|
|
74
|
+
"title": "My App",
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
# Convenience wrapper (same result)
|
|
78
|
+
emit_plan_created("projects/my-app/PLANNING.md", "application", "My App")
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Consuming Events
|
|
82
|
+
|
|
83
|
+
```python
|
|
84
|
+
from event_bus import consume
|
|
85
|
+
|
|
86
|
+
# Consume specific event types (moves matched files to archive/)
|
|
87
|
+
events = consume(event_types=["audit-complete", "phase-progress"])
|
|
88
|
+
for item in events:
|
|
89
|
+
event = item["event"]
|
|
90
|
+
print(f"Got {event['type']} from {event['source']}: {event['payload']}")
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Peeking Without Consuming
|
|
94
|
+
|
|
95
|
+
```python
|
|
96
|
+
from event_bus import peek
|
|
97
|
+
|
|
98
|
+
# Read events without archiving them
|
|
99
|
+
pending = peek(event_types=["plan-created"])
|
|
100
|
+
print(f"{len(pending)} plan-created events pending")
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### Cleanup
|
|
104
|
+
|
|
105
|
+
```python
|
|
106
|
+
from event_bus import cleanup
|
|
107
|
+
|
|
108
|
+
# Remove events older than 7 days, cap archive size
|
|
109
|
+
cleanup(max_age_days=7)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Producer Validation
|
|
113
|
+
|
|
114
|
+
Events are validated against `~/.accel/manifest.json`. Only modules listed in the manifest can emit events. Invalid producers are moved to the `errors/` directory.
|
|
115
|
+
|
|
116
|
+
```python
|
|
117
|
+
from event_bus import validate_producer
|
|
118
|
+
|
|
119
|
+
error = validate_producer({"_producer": "unknown-module"})
|
|
120
|
+
if error:
|
|
121
|
+
print(f"Rejected: {error}")
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Using from Python Hooks (No Import)
|
|
125
|
+
|
|
126
|
+
If your hook cannot import the shared library (e.g., different working directory), you can inline the same logic. The Momentum pulse hook demonstrates this pattern -- it reads and archives event files directly using only stdlib `json` and `pathlib`:
|
|
127
|
+
|
|
128
|
+
```python
|
|
129
|
+
from pathlib import Path
|
|
130
|
+
import json
|
|
131
|
+
|
|
132
|
+
EVENTS_DIR = Path.home() / ".accel" / "events"
|
|
133
|
+
ARCHIVE_DIR = EVENTS_DIR / "archive"
|
|
134
|
+
|
|
135
|
+
def consume_events(event_types):
|
|
136
|
+
if not EVENTS_DIR.is_dir():
|
|
137
|
+
return []
|
|
138
|
+
ARCHIVE_DIR.mkdir(parents=True, exist_ok=True)
|
|
139
|
+
consumed = []
|
|
140
|
+
for f in sorted(EVENTS_DIR.glob("*.json")):
|
|
141
|
+
event = json.loads(f.read_text())
|
|
142
|
+
if event.get("type") in event_types:
|
|
143
|
+
consumed.append(event)
|
|
144
|
+
f.rename(ARCHIVE_DIR / f.name)
|
|
145
|
+
return consumed
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Integration Flow
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
Ignition (ideate)
|
|
152
|
+
│ writes PLANNING.md
|
|
153
|
+
│ emits plan-created event
|
|
154
|
+
▼
|
|
155
|
+
Drive (next invocation)
|
|
156
|
+
│ consumes plan-created, adopts plan
|
|
157
|
+
│ emits phase-progress events as work proceeds
|
|
158
|
+
▼
|
|
159
|
+
Momentum (pulse hook, every session)
|
|
160
|
+
│ consumes phase-progress -> updates state.json
|
|
161
|
+
│ consumes audit-complete -> creates backlog items
|
|
162
|
+
│ consumes plan-created -> displays in pulse output
|
|
163
|
+
▼
|
|
164
|
+
Radar (audit)
|
|
165
|
+
│ emits audit-complete event
|
|
166
|
+
└──► Momentum picks it up on next pulse
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## Design Decisions
|
|
170
|
+
|
|
171
|
+
- **File-based, not socket-based**: Modules run in separate sessions. File-based events survive across sessions and require no daemon.
|
|
172
|
+
- **At-most-once delivery**: Events are moved (renamed) to `archive/` on consumption. If a consumer crashes mid-processing, the event is already archived.
|
|
173
|
+
- **Producer validation**: Prevents orphaned events from uninstalled modules. The manifest is the source of truth.
|
|
174
|
+
- **Language-agnostic**: JSON files in a known directory. Any language can participate.
|
|
175
|
+
- **Automatic cleanup**: Old events and oversized archives are pruned to prevent disk bloat.
|