devflow-kit 1.8.2 → 2.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/CHANGELOG.md +191 -6
- package/LICENSE +1 -1
- package/README.md +139 -219
- package/dist/cli/agents-view/index.js +9 -0
- package/dist/cli/agents-view/render.js +310 -0
- package/dist/cli/agents-view/state.js +423 -0
- package/dist/cli/agents-view/terminal.js +179 -0
- package/dist/cli/commands/agents.js +585 -0
- package/dist/cli/commands/ambient.js +231 -0
- package/dist/cli/commands/capture.js +133 -0
- package/dist/cli/commands/compliance-prompts.js +174 -0
- package/dist/cli/commands/compliance.js +337 -0
- package/dist/cli/commands/context.js +66 -0
- package/dist/cli/commands/debug.js +122 -0
- package/dist/cli/commands/flags.js +119 -0
- package/dist/cli/commands/hud.js +229 -0
- package/dist/cli/commands/init-seed.js +226 -0
- package/dist/cli/commands/init.js +1786 -0
- package/dist/cli/commands/knowledge/index.js +25 -0
- package/dist/cli/commands/knowledge/list.js +115 -0
- package/dist/cli/commands/knowledge/toggle.js +84 -0
- package/dist/cli/commands/learning.js +311 -0
- package/dist/cli/commands/legacy-hooks.js +40 -0
- package/dist/cli/commands/memory.js +349 -0
- package/dist/cli/commands/proxy.js +1435 -0
- package/dist/cli/commands/rules.js +334 -0
- package/dist/cli/commands/safe-delete.js +140 -0
- package/dist/cli/commands/security.js +179 -0
- package/dist/cli/commands/skills.js +140 -0
- package/dist/cli/commands/uninstall.js +1214 -0
- package/dist/cli.js +35 -10
- package/dist/commands/bug-analysis.md +400 -0
- package/dist/commands/code-review.md +403 -0
- package/dist/commands/debug.md +282 -0
- package/dist/commands/dynamic-build.md +972 -0
- package/dist/commands/dynamic-plan.md +383 -0
- package/dist/commands/dynamic-profile.md +206 -0
- package/dist/commands/dynamic-tickets.md +583 -0
- package/dist/commands/explore.md +208 -0
- package/dist/commands/implement.md +590 -0
- package/dist/commands/plan.md +570 -0
- package/dist/commands/release.md +206 -0
- package/dist/commands/research.md +212 -0
- package/dist/commands/resolve.md +731 -0
- package/dist/commands/self-review.md +251 -0
- package/dist/core/agent-frontmatter.js +209 -0
- package/dist/core/agent-models.js +556 -0
- package/dist/core/agent-state.js +44 -0
- package/dist/core/assets.js +39 -0
- package/dist/core/cache.js +205 -0
- package/dist/core/codex-auth-inspect.js +128 -0
- package/dist/core/compliance-compose.js +458 -0
- package/dist/core/compliance.js +165 -0
- package/dist/core/external-models.js +76 -0
- package/dist/core/feature-config.js +125 -0
- package/dist/core/flags.js +309 -0
- package/dist/core/fs-atomic.js +74 -0
- package/dist/core/git.js +61 -0
- package/dist/core/learning-queue-cleanup.js +92 -0
- package/dist/core/learning-tuning-config.js +78 -0
- package/dist/core/manifest.js +171 -0
- package/dist/core/migrations.js +330 -0
- package/dist/core/model-discovery.js +655 -0
- package/dist/core/observation-io.js +50 -0
- package/dist/core/observations.js +109 -0
- package/dist/core/orphan-sweep.js +92 -0
- package/dist/core/paths.js +48 -0
- package/dist/core/plugins.js +525 -0
- package/dist/core/project-paths.js +159 -0
- package/dist/core/proxy-log.js +165 -0
- package/dist/core/proxy-state.js +305 -0
- package/dist/core/safe-delete-install.js +191 -0
- package/dist/core/teammate-mode-cleanup.js +33 -0
- package/dist/hud/colors.js +13 -2
- package/dist/hud/components/config-counts.js +2 -2
- package/dist/hud/components/context-usage.js +2 -2
- package/dist/hud/components/learning-counts.js +92 -0
- package/dist/hud/components/session-cost.js +10 -2
- package/dist/hud/components/usage-quota.js +43 -8
- package/dist/hud/components/version-badge.js +17 -7
- package/dist/hud/config.js +4 -2
- package/dist/hud/cost-history.js +281 -0
- package/dist/hud/git.js +112 -71
- package/dist/hud/index.js +47 -4
- package/dist/hud/render.js +8 -20
- package/dist/hud/transcript.js +5 -6
- package/dist/targets/claude-code/claude-paths.js +106 -0
- package/dist/targets/claude-code/compliance-install.js +305 -0
- package/dist/targets/claude-code/hooks.js +9 -0
- package/dist/targets/claude-code/installer.js +458 -0
- package/dist/targets/claude-code/legacy.js +239 -0
- package/dist/targets/claude-code/post-install.js +971 -0
- package/package.json +23 -17
- package/src/assets/agents/code.md +244 -0
- package/src/assets/agents/design.md +113 -0
- package/src/assets/agents/diagnose.md +210 -0
- package/src/assets/agents/evaluate.md +117 -0
- package/src/assets/agents/git.md +938 -0
- package/src/assets/agents/knowledge.md +89 -0
- package/src/assets/agents/learning.md +203 -0
- package/src/assets/agents/research.md +134 -0
- package/src/assets/agents/review.md +220 -0
- package/src/assets/agents/scrutinize.md +95 -0
- package/src/assets/agents/simplify.md +108 -0
- package/src/assets/agents/skim.md +136 -0
- package/src/assets/agents/synthesize.md +402 -0
- package/src/assets/agents/test.md +155 -0
- package/src/assets/agents/triage.md +141 -0
- package/src/assets/agents/validate.md +103 -0
- package/src/assets/commands/_partials/_compliance.mds +5 -0
- package/src/assets/commands/_partials/_decisions.mds +20 -0
- package/src/assets/commands/_partials/_engine.mds +244 -0
- package/src/assets/commands/_partials/_factory.mds +216 -0
- package/src/assets/commands/_partials/_knowledge.mds +95 -0
- package/src/assets/commands/_partials/_plan_contract.mds +51 -0
- package/src/assets/commands/_partials/_preamble.mds +82 -0
- package/src/assets/commands/_partials/_publication.mds +7 -0
- package/src/assets/commands/_partials/_roster.mds +31 -0
- package/src/assets/commands/_partials/_ticket_template.mds +59 -0
- package/src/assets/commands/_partials/_wave.mds +123 -0
- package/src/assets/commands/bug-analysis.mds +353 -0
- package/src/assets/commands/code-review.mds +355 -0
- package/src/assets/commands/debug.mds +224 -0
- package/src/assets/commands/dynamic-build.mds +534 -0
- package/src/assets/commands/dynamic-plan.mds +244 -0
- package/src/assets/commands/dynamic-profile.mds +132 -0
- package/src/assets/commands/dynamic-tickets.mds +226 -0
- package/src/assets/commands/explore.mds +150 -0
- package/src/assets/commands/implement.mds +496 -0
- package/src/assets/commands/plan.mds +523 -0
- package/src/assets/commands/release.md +206 -0
- package/src/assets/commands/research.mds +164 -0
- package/src/assets/commands/resolve.mds +636 -0
- package/src/assets/commands/self-review.mds +156 -0
- package/src/assets/rules/accessibility.md +11 -0
- package/src/assets/rules/compliance.md +15 -0
- package/src/assets/rules/engineering.md +13 -0
- package/src/assets/rules/go.md +12 -0
- package/src/assets/rules/java.md +12 -0
- package/src/assets/rules/python.md +12 -0
- package/src/assets/rules/quality.md +14 -0
- package/src/assets/rules/react.md +11 -0
- package/src/assets/rules/reliability.md +12 -0
- package/src/assets/rules/rust.md +12 -0
- package/src/assets/rules/security.md +12 -0
- package/src/assets/rules/typescript.md +12 -0
- package/src/assets/rules/ui-design.md +11 -0
- package/src/assets/scripts/hooks/assets/orchestrator-charter.md +21 -0
- package/src/assets/scripts/hooks/background-memory-update +460 -0
- package/src/assets/scripts/hooks/capture-prompt +87 -0
- package/src/assets/scripts/hooks/capture-question +153 -0
- package/src/assets/scripts/hooks/capture-turn +105 -0
- package/src/assets/scripts/hooks/debug-trace +75 -0
- package/src/assets/scripts/hooks/decisions-usage-scan.cjs +131 -0
- package/src/assets/scripts/hooks/ensure-devflow-init +39 -0
- package/src/assets/scripts/hooks/ensure-proxy +294 -0
- package/src/assets/scripts/hooks/ensure-root-gitignore +116 -0
- package/src/assets/scripts/hooks/get-mtime +23 -0
- package/src/assets/scripts/hooks/git-marker +16 -0
- package/src/assets/scripts/hooks/hook-bootstrap +25 -0
- package/src/assets/scripts/hooks/hook-log-init +41 -0
- package/src/assets/scripts/hooks/json-helper.cjs +725 -0
- package/src/assets/scripts/hooks/json-parse +243 -0
- package/src/assets/scripts/hooks/learning-lock +44 -0
- package/src/assets/scripts/hooks/lib/decisions-format.cjs +301 -0
- package/src/assets/scripts/hooks/lib/mkdir-lock.cjs +106 -0
- package/src/assets/scripts/hooks/lib/project-paths.cjs +230 -0
- package/src/assets/scripts/hooks/lib/render-decisions.cjs +398 -0
- package/src/assets/scripts/hooks/lib/safe-path.cjs +29 -0
- package/src/assets/scripts/hooks/log-paths +24 -0
- package/src/assets/scripts/hooks/memory-worker +101 -0
- package/src/assets/scripts/hooks/pre-compact-memory +126 -0
- package/src/assets/scripts/hooks/preamble +77 -0
- package/src/assets/scripts/hooks/queue-append +120 -0
- package/src/assets/scripts/hooks/resolve-project-root +37 -0
- package/src/assets/scripts/hooks/run-hook +31 -0
- package/src/assets/scripts/hooks/session-start-context +180 -0
- package/src/assets/scripts/hooks/session-start-memory +318 -0
- package/src/assets/scripts/hooks/session-start-orchestrator +54 -0
- package/src/assets/scripts/hud.sh +5 -0
- package/src/assets/scripts/redact-secrets.cjs +410 -0
- package/src/assets/skills/accessibility/SKILL.md +145 -0
- package/src/assets/skills/accessibility/references/patterns.md +398 -0
- package/src/assets/skills/accessibility/references/sources.md +26 -0
- package/src/assets/skills/accessibility/references/violations.md +358 -0
- package/src/assets/skills/apply-decisions/SKILL.md +100 -0
- package/src/assets/skills/apply-feature-knowledge/SKILL.md +69 -0
- package/src/assets/skills/architecture/SKILL.md +138 -0
- package/src/assets/skills/architecture/references/patterns.md +378 -0
- package/src/assets/skills/architecture/references/sources.md +41 -0
- package/src/assets/skills/architecture/references/violations.md +314 -0
- package/src/assets/skills/boundary-validation/SKILL.md +119 -0
- package/src/assets/skills/boundary-validation/references/detection.md +283 -0
- package/src/assets/skills/boundary-validation/references/patterns.md +283 -0
- package/src/assets/skills/boundary-validation/references/sources.md +41 -0
- package/src/assets/skills/boundary-validation/references/violations.md +211 -0
- package/src/assets/skills/complexity/SKILL.md +150 -0
- package/src/assets/skills/compliance/SKILL.md +121 -0
- package/src/assets/skills/compliance/frameworks/gdpr/fragment.md +11 -0
- package/src/assets/skills/compliance/frameworks/gdpr/reference.md +50 -0
- package/src/assets/skills/compliance/frameworks/hipaa/fragment.md +11 -0
- package/src/assets/skills/compliance/frameworks/hipaa/reference.md +44 -0
- package/src/assets/skills/compliance/frameworks/iso-27001/fragment.md +10 -0
- package/src/assets/skills/compliance/frameworks/iso-27001/reference.md +45 -0
- package/src/assets/skills/compliance/frameworks/pci-dss/fragment.md +11 -0
- package/src/assets/skills/compliance/frameworks/pci-dss/reference.md +55 -0
- package/src/assets/skills/compliance/frameworks/soc2/fragment.md +10 -0
- package/src/assets/skills/compliance/frameworks/soc2/reference.md +53 -0
- package/src/assets/skills/compliance/frameworks/sox/fragment.md +10 -0
- package/src/assets/skills/compliance/frameworks/sox/reference.md +67 -0
- package/src/assets/skills/compliance/references/detection.md +108 -0
- package/src/assets/skills/compliance/references/sources.md +28 -0
- package/src/assets/skills/consistency/SKILL.md +140 -0
- package/src/assets/skills/database/SKILL.md +134 -0
- package/src/assets/skills/dependencies/SKILL.md +141 -0
- package/src/assets/skills/dependency-research/SKILL.md +133 -0
- package/src/assets/skills/dependency-research/references/evaluation-criteria.md +101 -0
- package/src/assets/skills/design-review/SKILL.md +155 -0
- package/src/assets/skills/design-review/references/anti-patterns.md +207 -0
- package/src/assets/skills/docs-framework/SKILL.md +190 -0
- package/src/assets/skills/docs-framework/references/patterns.md +381 -0
- package/src/assets/skills/docs-framework/references/violations.md +221 -0
- package/src/assets/skills/documentation/SKILL.md +126 -0
- package/src/assets/skills/feature-knowledge/SKILL.md +341 -0
- package/src/assets/skills/gap-analysis/SKILL.md +151 -0
- package/src/assets/skills/gap-analysis/references/check-layers.md +125 -0
- package/src/assets/skills/git/SKILL.md +287 -0
- package/src/assets/skills/git/references/github-api.md +666 -0
- package/src/assets/skills/git/references/patterns.md +324 -0
- package/src/assets/skills/git/references/sources.md +16 -0
- package/src/assets/skills/git/references/violations.md +128 -0
- package/src/assets/skills/go/SKILL.md +147 -0
- package/src/assets/skills/go/references/concurrency.md +335 -0
- package/src/assets/skills/go/references/patterns.md +278 -0
- package/src/assets/skills/go/references/sources.md +41 -0
- package/src/assets/skills/go/references/violations.md +262 -0
- package/src/assets/skills/java/SKILL.md +148 -0
- package/src/assets/skills/java/references/modern-java.md +335 -0
- package/src/assets/skills/java/references/patterns.md +311 -0
- package/src/assets/skills/java/references/sources.md +44 -0
- package/src/assets/skills/java/references/violations.md +257 -0
- package/src/assets/skills/patterns/SKILL.md +162 -0
- package/src/assets/skills/performance/SKILL.md +135 -0
- package/src/assets/skills/performance/references/patterns.md +516 -0
- package/src/assets/skills/performance/references/sources.md +41 -0
- package/src/assets/skills/performance/references/violations.md +417 -0
- package/src/assets/skills/python/SKILL.md +156 -0
- package/src/assets/skills/python/references/async.md +255 -0
- package/src/assets/skills/python/references/patterns.md +280 -0
- package/src/assets/skills/python/references/sources.md +41 -0
- package/src/assets/skills/python/references/violations.md +272 -0
- package/src/assets/skills/qa/SKILL.md +136 -0
- package/src/assets/skills/qa/references/browser-testing.md +97 -0
- package/src/assets/skills/qa/references/patterns.md +118 -0
- package/src/assets/skills/qa/references/scenario-templates.md +102 -0
- package/src/assets/skills/qa/references/sources.md +30 -0
- package/src/assets/skills/qa/references/violations.md +98 -0
- package/src/assets/skills/quality-gates/SKILL.md +152 -0
- package/src/assets/skills/quality-gates/references/stub-detection.md +135 -0
- package/src/assets/skills/react/SKILL.md +143 -0
- package/src/assets/skills/react/references/error-handling.md +179 -0
- package/src/assets/skills/react/references/forms.md +214 -0
- package/src/assets/skills/react/references/hooks.md +193 -0
- package/src/assets/skills/react/references/patterns.md +1336 -0
- package/src/assets/skills/react/references/sources.md +35 -0
- package/src/assets/skills/react/references/violations.md +570 -0
- package/src/assets/skills/regression/SKILL.md +146 -0
- package/src/assets/skills/reliability/SKILL.md +153 -0
- package/src/assets/skills/reliability/references/detection.md +66 -0
- package/src/assets/skills/reliability/references/patterns.md +151 -0
- package/src/assets/skills/reliability/references/sources.md +27 -0
- package/src/assets/skills/reliability/references/violations.md +125 -0
- package/src/assets/skills/research-codebase/SKILL.md +135 -0
- package/src/assets/skills/research-competitor/SKILL.md +145 -0
- package/src/assets/skills/research-external/SKILL.md +141 -0
- package/src/assets/skills/research-market/SKILL.md +145 -0
- package/src/assets/skills/research-technology/SKILL.md +180 -0
- package/src/assets/skills/review-methodology/SKILL.md +121 -0
- package/src/assets/skills/review-methodology/references/patterns.md +186 -0
- package/src/assets/skills/review-methodology/references/report-template.md +142 -0
- package/src/assets/skills/review-methodology/references/violations.md +125 -0
- package/src/assets/skills/rust/SKILL.md +148 -0
- package/src/assets/skills/rust/references/ownership.md +278 -0
- package/src/assets/skills/rust/references/patterns.md +247 -0
- package/src/assets/skills/rust/references/sources.md +46 -0
- package/src/assets/skills/rust/references/violations.md +252 -0
- package/src/assets/skills/security/SKILL.md +121 -0
- package/src/assets/skills/security/references/patterns.md +271 -0
- package/src/assets/skills/security/references/sources.md +41 -0
- package/src/assets/skills/security/references/violations.md +241 -0
- package/src/assets/skills/software-design/SKILL.md +143 -0
- package/src/assets/skills/software-design/references/checklist.md +259 -0
- package/src/assets/skills/software-design/references/code-smell-violations.md +189 -0
- package/src/assets/skills/software-design/references/patterns.md +359 -0
- package/src/assets/skills/software-design/references/sources.md +41 -0
- package/src/assets/skills/software-design/references/violations.md +341 -0
- package/src/assets/skills/test-driven-development/SKILL.md +197 -0
- package/src/assets/skills/testing/SKILL.md +139 -0
- package/src/assets/skills/testing/references/patterns.md +346 -0
- package/src/assets/skills/testing/references/sources.md +53 -0
- package/src/assets/skills/testing/references/violations.md +322 -0
- package/src/assets/skills/typescript/SKILL.md +150 -0
- package/src/assets/skills/typescript/references/async.md +333 -0
- package/src/assets/skills/typescript/references/patterns.md +440 -0
- package/src/assets/skills/typescript/references/sources.md +41 -0
- package/src/assets/skills/typescript/references/type-guards.md +333 -0
- package/src/assets/skills/typescript/references/utility-types.md +255 -0
- package/src/assets/skills/typescript/references/violations.md +285 -0
- package/src/assets/skills/ui-design/SKILL.md +144 -0
- package/src/assets/skills/ui-design/references/patterns.md +341 -0
- package/src/assets/skills/ui-design/references/sources.md +41 -0
- package/src/assets/skills/ui-design/references/violations.md +312 -0
- package/src/assets/skills/worktree-support/SKILL.md +92 -0
- package/src/targets/claude-code/templates/claudeignore.template +188 -0
- package/src/targets/claude-code/templates/settings.json +86 -0
- package/dist/cli.d.ts +0 -3
- package/dist/commands/ambient.d.ts +0 -18
- package/dist/commands/ambient.js +0 -137
- package/dist/commands/hud.d.ts +0 -22
- package/dist/commands/hud.js +0 -180
- package/dist/commands/init.d.ts +0 -16
- package/dist/commands/init.js +0 -738
- package/dist/commands/list.d.ts +0 -24
- package/dist/commands/list.js +0 -89
- package/dist/commands/memory.d.ts +0 -22
- package/dist/commands/memory.js +0 -175
- package/dist/commands/skills.d.ts +0 -11
- package/dist/commands/skills.js +0 -116
- package/dist/commands/uninstall.d.ts +0 -22
- package/dist/commands/uninstall.js +0 -558
- package/dist/hud/cache.d.ts +0 -14
- package/dist/hud/cache.js +0 -54
- package/dist/hud/colors.d.ts +0 -23
- package/dist/hud/components/config-counts.d.ts +0 -8
- package/dist/hud/components/context-usage.d.ts +0 -8
- package/dist/hud/components/diff-stats.d.ts +0 -3
- package/dist/hud/components/directory.d.ts +0 -3
- package/dist/hud/components/git-ahead-behind.d.ts +0 -3
- package/dist/hud/components/git-branch.d.ts +0 -3
- package/dist/hud/components/model.d.ts +0 -3
- package/dist/hud/components/release-info.d.ts +0 -3
- package/dist/hud/components/session-cost.d.ts +0 -3
- package/dist/hud/components/session-duration.d.ts +0 -3
- package/dist/hud/components/todo-progress.d.ts +0 -3
- package/dist/hud/components/usage-quota.d.ts +0 -3
- package/dist/hud/components/version-badge.d.ts +0 -3
- package/dist/hud/components/worktree-count.d.ts +0 -3
- package/dist/hud/config.d.ts +0 -10
- package/dist/hud/credentials.d.ts +0 -17
- package/dist/hud/credentials.js +0 -99
- package/dist/hud/git.d.ts +0 -7
- package/dist/hud/index.d.ts +0 -2
- package/dist/hud/render.d.ts +0 -7
- package/dist/hud/stdin.d.ts +0 -6
- package/dist/hud/transcript.d.ts +0 -7
- package/dist/hud/types.d.ts +0 -116
- package/dist/hud/usage-api.d.ts +0 -7
- package/dist/hud/usage-api.js +0 -84
- package/dist/plugins.d.ts +0 -46
- package/dist/plugins.js +0 -233
- package/dist/utils/cli.d.ts +0 -5
- package/dist/utils/cli.js +0 -14
- package/dist/utils/git.d.ts +0 -11
- package/dist/utils/git.js +0 -36
- package/dist/utils/installer.d.ts +0 -41
- package/dist/utils/installer.js +0 -195
- package/dist/utils/manifest.d.ts +0 -46
- package/dist/utils/manifest.js +0 -100
- package/dist/utils/paths.d.ts +0 -42
- package/dist/utils/paths.js +0 -106
- package/dist/utils/post-install.d.ts +0 -87
- package/dist/utils/post-install.js +0 -546
- package/dist/utils/safe-delete-install.d.ts +0 -29
- package/dist/utils/safe-delete-install.js +0 -191
- package/dist/utils/safe-delete.d.ts +0 -12
- package/plugins/devflow-accessibility/.claude-plugin/plugin.json +0 -21
- package/plugins/devflow-accessibility/skills/accessibility/SKILL.md +0 -229
- package/plugins/devflow-accessibility/skills/accessibility/references/patterns.md +0 -670
- package/plugins/devflow-accessibility/skills/accessibility/references/violations.md +0 -419
- package/plugins/devflow-ambient/.claude-plugin/plugin.json +0 -33
- package/plugins/devflow-ambient/README.md +0 -68
- package/plugins/devflow-ambient/agents/coder.md +0 -135
- package/plugins/devflow-ambient/agents/reviewer.md +0 -165
- package/plugins/devflow-ambient/agents/scrutinizer.md +0 -82
- package/plugins/devflow-ambient/agents/shepherd.md +0 -108
- package/plugins/devflow-ambient/agents/simplifier.md +0 -102
- package/plugins/devflow-ambient/agents/skimmer.md +0 -143
- package/plugins/devflow-ambient/agents/validator.md +0 -86
- package/plugins/devflow-ambient/skills/ambient-router/SKILL.md +0 -145
- package/plugins/devflow-ambient/skills/ambient-router/references/skill-catalog.md +0 -74
- package/plugins/devflow-ambient/skills/debug-orchestration/SKILL.md +0 -69
- package/plugins/devflow-ambient/skills/implementation-orchestration/SKILL.md +0 -92
- package/plugins/devflow-ambient/skills/plan-orchestration/SKILL.md +0 -71
- package/plugins/devflow-audit-claude/.claude-plugin/plugin.json +0 -19
- package/plugins/devflow-audit-claude/README.md +0 -46
- package/plugins/devflow-audit-claude/agents/claude-md-auditor.md +0 -134
- package/plugins/devflow-audit-claude/commands/audit-claude.md +0 -89
- package/plugins/devflow-code-review/.claude-plugin/plugin.json +0 -38
- package/plugins/devflow-code-review/README.md +0 -73
- package/plugins/devflow-code-review/agents/git.md +0 -277
- package/plugins/devflow-code-review/agents/reviewer.md +0 -165
- package/plugins/devflow-code-review/agents/synthesizer.md +0 -211
- package/plugins/devflow-code-review/commands/code-review-teams.md +0 -285
- package/plugins/devflow-code-review/commands/code-review.md +0 -163
- package/plugins/devflow-code-review/skills/agent-teams/SKILL.md +0 -124
- package/plugins/devflow-code-review/skills/agent-teams/references/cleanup.md +0 -104
- package/plugins/devflow-code-review/skills/agent-teams/references/communication.md +0 -122
- package/plugins/devflow-code-review/skills/agent-teams/references/team-patterns.md +0 -217
- package/plugins/devflow-code-review/skills/architecture-patterns/SKILL.md +0 -153
- package/plugins/devflow-code-review/skills/architecture-patterns/references/patterns.md +0 -873
- package/plugins/devflow-code-review/skills/architecture-patterns/references/violations.md +0 -575
- package/plugins/devflow-code-review/skills/complexity-patterns/SKILL.md +0 -143
- package/plugins/devflow-code-review/skills/consistency-patterns/SKILL.md +0 -140
- package/plugins/devflow-code-review/skills/database-patterns/SKILL.md +0 -134
- package/plugins/devflow-code-review/skills/dependencies-patterns/SKILL.md +0 -141
- package/plugins/devflow-code-review/skills/documentation-patterns/SKILL.md +0 -125
- package/plugins/devflow-code-review/skills/knowledge-persistence/SKILL.md +0 -128
- package/plugins/devflow-code-review/skills/knowledge-persistence/references/examples.md +0 -44
- package/plugins/devflow-code-review/skills/performance-patterns/SKILL.md +0 -154
- package/plugins/devflow-code-review/skills/performance-patterns/references/patterns.md +0 -503
- package/plugins/devflow-code-review/skills/performance-patterns/references/violations.md +0 -354
- package/plugins/devflow-code-review/skills/regression-patterns/SKILL.md +0 -146
- package/plugins/devflow-code-review/skills/review-methodology/SKILL.md +0 -119
- package/plugins/devflow-code-review/skills/review-methodology/references/patterns.md +0 -186
- package/plugins/devflow-code-review/skills/review-methodology/references/report-template.md +0 -142
- package/plugins/devflow-code-review/skills/review-methodology/references/violations.md +0 -125
- package/plugins/devflow-code-review/skills/security-patterns/SKILL.md +0 -156
- package/plugins/devflow-code-review/skills/security-patterns/references/patterns.md +0 -507
- package/plugins/devflow-code-review/skills/security-patterns/references/violations.md +0 -237
- package/plugins/devflow-code-review/skills/test-patterns/SKILL.md +0 -183
- package/plugins/devflow-code-review/skills/test-patterns/references/patterns.md +0 -220
- package/plugins/devflow-code-review/skills/test-patterns/references/violations.md +0 -221
- package/plugins/devflow-core-skills/.claude-plugin/plugin.json +0 -31
- package/plugins/devflow-core-skills/README.md +0 -50
- package/plugins/devflow-core-skills/skills/core-patterns/SKILL.md +0 -162
- package/plugins/devflow-core-skills/skills/core-patterns/references/checklist.md +0 -276
- package/plugins/devflow-core-skills/skills/core-patterns/references/code-smell-violations.md +0 -144
- package/plugins/devflow-core-skills/skills/core-patterns/references/patterns.md +0 -576
- package/plugins/devflow-core-skills/skills/core-patterns/references/violations.md +0 -369
- package/plugins/devflow-core-skills/skills/docs-framework/SKILL.md +0 -143
- package/plugins/devflow-core-skills/skills/docs-framework/references/patterns.md +0 -346
- package/plugins/devflow-core-skills/skills/docs-framework/references/violations.md +0 -221
- package/plugins/devflow-core-skills/skills/git-safety/SKILL.md +0 -122
- package/plugins/devflow-core-skills/skills/git-safety/references/patterns.md +0 -289
- package/plugins/devflow-core-skills/skills/git-safety/references/violations.md +0 -18
- package/plugins/devflow-core-skills/skills/git-workflow/SKILL.md +0 -158
- package/plugins/devflow-core-skills/skills/git-workflow/references/commit-patterns.md +0 -115
- package/plugins/devflow-core-skills/skills/git-workflow/references/commit-violations.md +0 -77
- package/plugins/devflow-core-skills/skills/git-workflow/references/pr-patterns.md +0 -127
- package/plugins/devflow-core-skills/skills/git-workflow/references/pr-violations.md +0 -96
- package/plugins/devflow-core-skills/skills/github-patterns/SKILL.md +0 -153
- package/plugins/devflow-core-skills/skills/github-patterns/references/patterns.md +0 -572
- package/plugins/devflow-core-skills/skills/github-patterns/references/violations.md +0 -298
- package/plugins/devflow-core-skills/skills/input-validation/SKILL.md +0 -148
- package/plugins/devflow-core-skills/skills/input-validation/references/detection.md +0 -283
- package/plugins/devflow-core-skills/skills/input-validation/references/patterns.md +0 -361
- package/plugins/devflow-core-skills/skills/input-validation/references/violations.md +0 -224
- package/plugins/devflow-core-skills/skills/search-first/SKILL.md +0 -133
- package/plugins/devflow-core-skills/skills/search-first/references/evaluation-criteria.md +0 -101
- package/plugins/devflow-core-skills/skills/test-driven-development/SKILL.md +0 -137
- package/plugins/devflow-core-skills/skills/test-patterns/SKILL.md +0 -183
- package/plugins/devflow-core-skills/skills/test-patterns/references/detection.md +0 -149
- package/plugins/devflow-core-skills/skills/test-patterns/references/patterns.md +0 -220
- package/plugins/devflow-core-skills/skills/test-patterns/references/report-template.md +0 -108
- package/plugins/devflow-core-skills/skills/test-patterns/references/violations.md +0 -221
- package/plugins/devflow-debug/.claude-plugin/plugin.json +0 -26
- package/plugins/devflow-debug/README.md +0 -65
- package/plugins/devflow-debug/agents/git.md +0 -277
- package/plugins/devflow-debug/agents/synthesizer.md +0 -211
- package/plugins/devflow-debug/commands/debug-teams.md +0 -245
- package/plugins/devflow-debug/commands/debug.md +0 -174
- package/plugins/devflow-debug/skills/agent-teams/SKILL.md +0 -124
- package/plugins/devflow-debug/skills/agent-teams/references/cleanup.md +0 -104
- package/plugins/devflow-debug/skills/agent-teams/references/communication.md +0 -122
- package/plugins/devflow-debug/skills/agent-teams/references/team-patterns.md +0 -217
- package/plugins/devflow-debug/skills/git-safety/SKILL.md +0 -122
- package/plugins/devflow-debug/skills/git-safety/references/detection.md +0 -290
- package/plugins/devflow-debug/skills/git-safety/references/patterns.md +0 -289
- package/plugins/devflow-debug/skills/git-safety/references/violations.md +0 -18
- package/plugins/devflow-debug/skills/knowledge-persistence/SKILL.md +0 -128
- package/plugins/devflow-debug/skills/knowledge-persistence/references/examples.md +0 -44
- package/plugins/devflow-frontend-design/.claude-plugin/plugin.json +0 -21
- package/plugins/devflow-frontend-design/skills/frontend-design/SKILL.md +0 -254
- package/plugins/devflow-frontend-design/skills/frontend-design/references/patterns.md +0 -511
- package/plugins/devflow-frontend-design/skills/frontend-design/references/violations.md +0 -453
- package/plugins/devflow-go/.claude-plugin/plugin.json +0 -21
- package/plugins/devflow-go/skills/go/SKILL.md +0 -187
- package/plugins/devflow-go/skills/go/references/concurrency.md +0 -312
- package/plugins/devflow-go/skills/go/references/patterns.md +0 -232
- package/plugins/devflow-go/skills/go/references/violations.md +0 -205
- package/plugins/devflow-implement/.claude-plugin/plugin.json +0 -35
- package/plugins/devflow-implement/README.md +0 -71
- package/plugins/devflow-implement/agents/coder.md +0 -135
- package/plugins/devflow-implement/agents/git.md +0 -277
- package/plugins/devflow-implement/agents/scrutinizer.md +0 -82
- package/plugins/devflow-implement/agents/shepherd.md +0 -108
- package/plugins/devflow-implement/agents/simplifier.md +0 -102
- package/plugins/devflow-implement/agents/skimmer.md +0 -143
- package/plugins/devflow-implement/agents/synthesizer.md +0 -211
- package/plugins/devflow-implement/agents/validator.md +0 -86
- package/plugins/devflow-implement/commands/implement-teams.md +0 -620
- package/plugins/devflow-implement/commands/implement.md +0 -430
- package/plugins/devflow-implement/skills/agent-teams/SKILL.md +0 -124
- package/plugins/devflow-implement/skills/agent-teams/references/cleanup.md +0 -104
- package/plugins/devflow-implement/skills/agent-teams/references/communication.md +0 -122
- package/plugins/devflow-implement/skills/agent-teams/references/team-patterns.md +0 -217
- package/plugins/devflow-implement/skills/implementation-patterns/SKILL.md +0 -162
- package/plugins/devflow-implement/skills/knowledge-persistence/SKILL.md +0 -128
- package/plugins/devflow-implement/skills/knowledge-persistence/references/examples.md +0 -44
- package/plugins/devflow-implement/skills/self-review/SKILL.md +0 -149
- package/plugins/devflow-implement/skills/self-review/references/stub-detection.md +0 -135
- package/plugins/devflow-java/.claude-plugin/plugin.json +0 -21
- package/plugins/devflow-java/skills/java/SKILL.md +0 -183
- package/plugins/devflow-java/skills/java/references/modern-java.md +0 -270
- package/plugins/devflow-java/skills/java/references/patterns.md +0 -235
- package/plugins/devflow-java/skills/java/references/violations.md +0 -213
- package/plugins/devflow-python/.claude-plugin/plugin.json +0 -21
- package/plugins/devflow-python/skills/python/SKILL.md +0 -188
- package/plugins/devflow-python/skills/python/references/async.md +0 -220
- package/plugins/devflow-python/skills/python/references/patterns.md +0 -226
- package/plugins/devflow-python/skills/python/references/violations.md +0 -204
- package/plugins/devflow-react/.claude-plugin/plugin.json +0 -21
- package/plugins/devflow-react/skills/react/SKILL.md +0 -276
- package/plugins/devflow-react/skills/react/references/patterns.md +0 -1331
- package/plugins/devflow-react/skills/react/references/violations.md +0 -565
- package/plugins/devflow-resolve/.claude-plugin/plugin.json +0 -29
- package/plugins/devflow-resolve/README.md +0 -65
- package/plugins/devflow-resolve/agents/git.md +0 -277
- package/plugins/devflow-resolve/agents/resolver.md +0 -131
- package/plugins/devflow-resolve/agents/simplifier.md +0 -102
- package/plugins/devflow-resolve/commands/resolve-teams.md +0 -307
- package/plugins/devflow-resolve/commands/resolve.md +0 -246
- package/plugins/devflow-resolve/skills/agent-teams/SKILL.md +0 -124
- package/plugins/devflow-resolve/skills/agent-teams/references/cleanup.md +0 -104
- package/plugins/devflow-resolve/skills/agent-teams/references/communication.md +0 -122
- package/plugins/devflow-resolve/skills/agent-teams/references/team-patterns.md +0 -217
- package/plugins/devflow-resolve/skills/implementation-patterns/SKILL.md +0 -162
- package/plugins/devflow-resolve/skills/implementation-patterns/references/patterns.md +0 -1063
- package/plugins/devflow-resolve/skills/implementation-patterns/references/violations.md +0 -483
- package/plugins/devflow-resolve/skills/knowledge-persistence/SKILL.md +0 -128
- package/plugins/devflow-resolve/skills/knowledge-persistence/references/examples.md +0 -44
- package/plugins/devflow-resolve/skills/security-patterns/SKILL.md +0 -156
- package/plugins/devflow-resolve/skills/security-patterns/references/detection.md +0 -287
- package/plugins/devflow-resolve/skills/security-patterns/references/patterns.md +0 -507
- package/plugins/devflow-resolve/skills/security-patterns/references/violations.md +0 -237
- package/plugins/devflow-rust/.claude-plugin/plugin.json +0 -21
- package/plugins/devflow-rust/skills/rust/SKILL.md +0 -193
- package/plugins/devflow-rust/skills/rust/references/ownership.md +0 -242
- package/plugins/devflow-rust/skills/rust/references/patterns.md +0 -210
- package/plugins/devflow-rust/skills/rust/references/violations.md +0 -191
- package/plugins/devflow-self-review/.claude-plugin/plugin.json +0 -26
- package/plugins/devflow-self-review/README.md +0 -38
- package/plugins/devflow-self-review/agents/scrutinizer.md +0 -82
- package/plugins/devflow-self-review/agents/simplifier.md +0 -102
- package/plugins/devflow-self-review/agents/validator.md +0 -86
- package/plugins/devflow-self-review/commands/self-review.md +0 -132
- package/plugins/devflow-self-review/skills/core-patterns/SKILL.md +0 -162
- package/plugins/devflow-self-review/skills/core-patterns/references/checklist.md +0 -276
- package/plugins/devflow-self-review/skills/core-patterns/references/code-smell-violations.md +0 -144
- package/plugins/devflow-self-review/skills/core-patterns/references/detection.md +0 -303
- package/plugins/devflow-self-review/skills/core-patterns/references/patterns.md +0 -576
- package/plugins/devflow-self-review/skills/core-patterns/references/violations.md +0 -369
- package/plugins/devflow-self-review/skills/self-review/SKILL.md +0 -149
- package/plugins/devflow-self-review/skills/self-review/references/patterns.md +0 -405
- package/plugins/devflow-self-review/skills/self-review/references/report-template.md +0 -253
- package/plugins/devflow-self-review/skills/self-review/references/stub-detection.md +0 -135
- package/plugins/devflow-self-review/skills/self-review/references/violations.md +0 -308
- package/plugins/devflow-specify/.claude-plugin/plugin.json +0 -25
- package/plugins/devflow-specify/README.md +0 -46
- package/plugins/devflow-specify/agents/skimmer.md +0 -143
- package/plugins/devflow-specify/agents/synthesizer.md +0 -211
- package/plugins/devflow-specify/commands/specify-teams.md +0 -321
- package/plugins/devflow-specify/commands/specify.md +0 -186
- package/plugins/devflow-specify/skills/agent-teams/SKILL.md +0 -124
- package/plugins/devflow-specify/skills/agent-teams/references/cleanup.md +0 -104
- package/plugins/devflow-specify/skills/agent-teams/references/communication.md +0 -122
- package/plugins/devflow-specify/skills/agent-teams/references/team-patterns.md +0 -217
- package/plugins/devflow-typescript/.claude-plugin/plugin.json +0 -21
- package/plugins/devflow-typescript/skills/typescript/SKILL.md +0 -176
- package/plugins/devflow-typescript/skills/typescript/references/patterns.md +0 -1105
- package/plugins/devflow-typescript/skills/typescript/references/violations.md +0 -433
- package/scripts/hooks/ambient-prompt +0 -50
- package/scripts/hooks/background-memory-update +0 -257
- package/scripts/hooks/ensure-memory-gitignore +0 -17
- package/scripts/hooks/pre-compact-memory +0 -87
- package/scripts/hooks/run-hook +0 -23
- package/scripts/hooks/session-start-memory +0 -165
- package/scripts/hooks/stop-update-memory +0 -85
- package/scripts/hud/cache.d.ts +0 -14
- package/scripts/hud/cache.d.ts.map +0 -1
- package/scripts/hud/cache.js +0 -54
- package/scripts/hud/cache.js.map +0 -1
- package/scripts/hud/colors.d.ts +0 -23
- package/scripts/hud/colors.d.ts.map +0 -1
- package/scripts/hud/colors.js +0 -62
- package/scripts/hud/colors.js.map +0 -1
- package/scripts/hud/components/config-counts.d.ts +0 -8
- package/scripts/hud/components/config-counts.d.ts.map +0 -1
- package/scripts/hud/components/config-counts.js +0 -91
- package/scripts/hud/components/config-counts.js.map +0 -1
- package/scripts/hud/components/context-usage.d.ts +0 -8
- package/scripts/hud/components/context-usage.d.ts.map +0 -1
- package/scripts/hud/components/context-usage.js +0 -49
- package/scripts/hud/components/context-usage.js.map +0 -1
- package/scripts/hud/components/diff-stats.d.ts +0 -3
- package/scripts/hud/components/diff-stats.d.ts.map +0 -1
- package/scripts/hud/components/diff-stats.js +0 -36
- package/scripts/hud/components/diff-stats.js.map +0 -1
- package/scripts/hud/components/directory.d.ts +0 -3
- package/scripts/hud/components/directory.d.ts.map +0 -1
- package/scripts/hud/components/directory.js +0 -10
- package/scripts/hud/components/directory.js.map +0 -1
- package/scripts/hud/components/git-ahead-behind.d.ts +0 -3
- package/scripts/hud/components/git-ahead-behind.d.ts.map +0 -1
- package/scripts/hud/components/git-ahead-behind.js +0 -16
- package/scripts/hud/components/git-ahead-behind.js.map +0 -1
- package/scripts/hud/components/git-branch.d.ts +0 -3
- package/scripts/hud/components/git-branch.d.ts.map +0 -1
- package/scripts/hud/components/git-branch.js +0 -14
- package/scripts/hud/components/git-branch.js.map +0 -1
- package/scripts/hud/components/model.d.ts +0 -3
- package/scripts/hud/components/model.d.ts.map +0 -1
- package/scripts/hud/components/model.js +0 -21
- package/scripts/hud/components/model.js.map +0 -1
- package/scripts/hud/components/release-info.d.ts +0 -3
- package/scripts/hud/components/release-info.d.ts.map +0 -1
- package/scripts/hud/components/release-info.js +0 -9
- package/scripts/hud/components/release-info.js.map +0 -1
- package/scripts/hud/components/session-cost.d.ts +0 -3
- package/scripts/hud/components/session-cost.d.ts.map +0 -1
- package/scripts/hud/components/session-cost.js +0 -9
- package/scripts/hud/components/session-cost.js.map +0 -1
- package/scripts/hud/components/session-duration.d.ts +0 -3
- package/scripts/hud/components/session-duration.d.ts.map +0 -1
- package/scripts/hud/components/session-duration.js +0 -18
- package/scripts/hud/components/session-duration.js.map +0 -1
- package/scripts/hud/components/todo-progress.d.ts +0 -3
- package/scripts/hud/components/todo-progress.d.ts.map +0 -1
- package/scripts/hud/components/todo-progress.js +0 -11
- package/scripts/hud/components/todo-progress.js.map +0 -1
- package/scripts/hud/components/usage-quota.d.ts +0 -3
- package/scripts/hud/components/usage-quota.d.ts.map +0 -1
- package/scripts/hud/components/usage-quota.js +0 -45
- package/scripts/hud/components/usage-quota.js.map +0 -1
- package/scripts/hud/components/version-badge.d.ts +0 -3
- package/scripts/hud/components/version-badge.d.ts.map +0 -1
- package/scripts/hud/components/version-badge.js +0 -80
- package/scripts/hud/components/version-badge.js.map +0 -1
- package/scripts/hud/components/worktree-count.d.ts +0 -3
- package/scripts/hud/components/worktree-count.d.ts.map +0 -1
- package/scripts/hud/components/worktree-count.js +0 -8
- package/scripts/hud/components/worktree-count.js.map +0 -1
- package/scripts/hud/config.d.ts +0 -10
- package/scripts/hud/config.d.ts.map +0 -1
- package/scripts/hud/config.js +0 -55
- package/scripts/hud/config.js.map +0 -1
- package/scripts/hud/credentials.d.ts +0 -17
- package/scripts/hud/credentials.d.ts.map +0 -1
- package/scripts/hud/credentials.js +0 -99
- package/scripts/hud/credentials.js.map +0 -1
- package/scripts/hud/git.d.ts +0 -7
- package/scripts/hud/git.d.ts.map +0 -1
- package/scripts/hud/git.js +0 -153
- package/scripts/hud/git.js.map +0 -1
- package/scripts/hud/index.d.ts +0 -2
- package/scripts/hud/index.d.ts.map +0 -1
- package/scripts/hud/index.js +0 -81
- package/scripts/hud/index.js.map +0 -1
- package/scripts/hud/render.d.ts +0 -7
- package/scripts/hud/render.d.ts.map +0 -1
- package/scripts/hud/render.js +0 -111
- package/scripts/hud/render.js.map +0 -1
- package/scripts/hud/stdin.d.ts +0 -6
- package/scripts/hud/stdin.d.ts.map +0 -1
- package/scripts/hud/stdin.js +0 -25
- package/scripts/hud/stdin.js.map +0 -1
- package/scripts/hud/transcript.d.ts +0 -7
- package/scripts/hud/transcript.d.ts.map +0 -1
- package/scripts/hud/transcript.js +0 -130
- package/scripts/hud/transcript.js.map +0 -1
- package/scripts/hud/types.d.ts +0 -116
- package/scripts/hud/types.d.ts.map +0 -1
- package/scripts/hud/types.js +0 -2
- package/scripts/hud/types.js.map +0 -1
- package/scripts/hud/usage-api.d.ts +0 -7
- package/scripts/hud/usage-api.d.ts.map +0 -1
- package/scripts/hud/usage-api.js +0 -84
- package/scripts/hud/usage-api.js.map +0 -1
- package/scripts/hud.sh +0 -5
- package/shared/agents/coder.md +0 -135
- package/shared/agents/git.md +0 -277
- package/shared/agents/resolver.md +0 -131
- package/shared/agents/reviewer.md +0 -165
- package/shared/agents/scrutinizer.md +0 -82
- package/shared/agents/shepherd.md +0 -108
- package/shared/agents/simplifier.md +0 -102
- package/shared/agents/skimmer.md +0 -143
- package/shared/agents/synthesizer.md +0 -211
- package/shared/agents/validator.md +0 -86
- package/shared/skills/accessibility/SKILL.md +0 -229
- package/shared/skills/accessibility/references/detection.md +0 -171
- package/shared/skills/accessibility/references/patterns.md +0 -670
- package/shared/skills/accessibility/references/violations.md +0 -419
- package/shared/skills/agent-teams/SKILL.md +0 -124
- package/shared/skills/agent-teams/references/cleanup.md +0 -104
- package/shared/skills/agent-teams/references/communication.md +0 -122
- package/shared/skills/agent-teams/references/team-patterns.md +0 -217
- package/shared/skills/ambient-router/SKILL.md +0 -145
- package/shared/skills/ambient-router/references/skill-catalog.md +0 -74
- package/shared/skills/architecture-patterns/SKILL.md +0 -153
- package/shared/skills/architecture-patterns/references/detection.md +0 -337
- package/shared/skills/architecture-patterns/references/patterns.md +0 -873
- package/shared/skills/architecture-patterns/references/violations.md +0 -575
- package/shared/skills/complexity-patterns/SKILL.md +0 -143
- package/shared/skills/complexity-patterns/references/detection.md +0 -264
- package/shared/skills/complexity-patterns/references/patterns.md +0 -487
- package/shared/skills/complexity-patterns/references/violations.md +0 -361
- package/shared/skills/consistency-patterns/SKILL.md +0 -140
- package/shared/skills/consistency-patterns/references/detection.md +0 -207
- package/shared/skills/consistency-patterns/references/patterns.md +0 -202
- package/shared/skills/consistency-patterns/references/violations.md +0 -213
- package/shared/skills/core-patterns/SKILL.md +0 -162
- package/shared/skills/core-patterns/references/checklist.md +0 -276
- package/shared/skills/core-patterns/references/code-smell-violations.md +0 -144
- package/shared/skills/core-patterns/references/detection.md +0 -303
- package/shared/skills/core-patterns/references/patterns.md +0 -576
- package/shared/skills/core-patterns/references/violations.md +0 -369
- package/shared/skills/database-patterns/SKILL.md +0 -134
- package/shared/skills/database-patterns/references/detection.md +0 -208
- package/shared/skills/database-patterns/references/patterns.md +0 -394
- package/shared/skills/database-patterns/references/violations.md +0 -332
- package/shared/skills/debug-orchestration/SKILL.md +0 -69
- package/shared/skills/dependencies-patterns/SKILL.md +0 -141
- package/shared/skills/dependencies-patterns/references/detection.md +0 -181
- package/shared/skills/dependencies-patterns/references/patterns.md +0 -225
- package/shared/skills/dependencies-patterns/references/violations.md +0 -247
- package/shared/skills/docs-framework/SKILL.md +0 -143
- package/shared/skills/docs-framework/references/patterns.md +0 -346
- package/shared/skills/docs-framework/references/violations.md +0 -221
- package/shared/skills/documentation-patterns/SKILL.md +0 -125
- package/shared/skills/documentation-patterns/references/detection.md +0 -190
- package/shared/skills/documentation-patterns/references/patterns.md +0 -189
- package/shared/skills/documentation-patterns/references/violations.md +0 -163
- package/shared/skills/frontend-design/SKILL.md +0 -254
- package/shared/skills/frontend-design/references/detection.md +0 -184
- package/shared/skills/frontend-design/references/patterns.md +0 -511
- package/shared/skills/frontend-design/references/violations.md +0 -453
- package/shared/skills/git-safety/SKILL.md +0 -122
- package/shared/skills/git-safety/references/detection.md +0 -290
- package/shared/skills/git-safety/references/patterns.md +0 -289
- package/shared/skills/git-safety/references/violations.md +0 -18
- package/shared/skills/git-workflow/SKILL.md +0 -158
- package/shared/skills/git-workflow/references/commit-patterns.md +0 -115
- package/shared/skills/git-workflow/references/commit-violations.md +0 -77
- package/shared/skills/git-workflow/references/pr-patterns.md +0 -127
- package/shared/skills/git-workflow/references/pr-violations.md +0 -96
- package/shared/skills/github-patterns/SKILL.md +0 -153
- package/shared/skills/github-patterns/references/patterns.md +0 -572
- package/shared/skills/github-patterns/references/violations.md +0 -298
- package/shared/skills/go/SKILL.md +0 -187
- package/shared/skills/go/references/concurrency.md +0 -312
- package/shared/skills/go/references/detection.md +0 -129
- package/shared/skills/go/references/patterns.md +0 -232
- package/shared/skills/go/references/violations.md +0 -205
- package/shared/skills/implementation-orchestration/SKILL.md +0 -92
- package/shared/skills/implementation-patterns/SKILL.md +0 -162
- package/shared/skills/implementation-patterns/references/patterns.md +0 -1063
- package/shared/skills/implementation-patterns/references/violations.md +0 -483
- package/shared/skills/input-validation/SKILL.md +0 -148
- package/shared/skills/input-validation/references/detection.md +0 -283
- package/shared/skills/input-validation/references/patterns.md +0 -361
- package/shared/skills/input-validation/references/violations.md +0 -224
- package/shared/skills/java/SKILL.md +0 -183
- package/shared/skills/java/references/detection.md +0 -120
- package/shared/skills/java/references/modern-java.md +0 -270
- package/shared/skills/java/references/patterns.md +0 -235
- package/shared/skills/java/references/violations.md +0 -213
- package/shared/skills/knowledge-persistence/SKILL.md +0 -128
- package/shared/skills/knowledge-persistence/references/examples.md +0 -44
- package/shared/skills/performance-patterns/SKILL.md +0 -154
- package/shared/skills/performance-patterns/references/detection.md +0 -351
- package/shared/skills/performance-patterns/references/patterns.md +0 -503
- package/shared/skills/performance-patterns/references/violations.md +0 -354
- package/shared/skills/plan-orchestration/SKILL.md +0 -71
- package/shared/skills/python/SKILL.md +0 -188
- package/shared/skills/python/references/async.md +0 -220
- package/shared/skills/python/references/detection.md +0 -128
- package/shared/skills/python/references/patterns.md +0 -226
- package/shared/skills/python/references/violations.md +0 -204
- package/shared/skills/react/SKILL.md +0 -276
- package/shared/skills/react/references/patterns.md +0 -1331
- package/shared/skills/react/references/violations.md +0 -565
- package/shared/skills/regression-patterns/SKILL.md +0 -146
- package/shared/skills/regression-patterns/references/detection.md +0 -237
- package/shared/skills/regression-patterns/references/patterns.md +0 -226
- package/shared/skills/regression-patterns/references/violations.md +0 -225
- package/shared/skills/review-methodology/SKILL.md +0 -119
- package/shared/skills/review-methodology/references/patterns.md +0 -186
- package/shared/skills/review-methodology/references/report-template.md +0 -142
- package/shared/skills/review-methodology/references/violations.md +0 -125
- package/shared/skills/rust/SKILL.md +0 -193
- package/shared/skills/rust/references/detection.md +0 -131
- package/shared/skills/rust/references/ownership.md +0 -242
- package/shared/skills/rust/references/patterns.md +0 -210
- package/shared/skills/rust/references/violations.md +0 -191
- package/shared/skills/search-first/SKILL.md +0 -133
- package/shared/skills/search-first/references/evaluation-criteria.md +0 -101
- package/shared/skills/security-patterns/SKILL.md +0 -156
- package/shared/skills/security-patterns/references/detection.md +0 -287
- package/shared/skills/security-patterns/references/patterns.md +0 -507
- package/shared/skills/security-patterns/references/violations.md +0 -237
- package/shared/skills/self-review/SKILL.md +0 -149
- package/shared/skills/self-review/references/patterns.md +0 -405
- package/shared/skills/self-review/references/report-template.md +0 -253
- package/shared/skills/self-review/references/stub-detection.md +0 -135
- package/shared/skills/self-review/references/violations.md +0 -308
- package/shared/skills/test-driven-development/SKILL.md +0 -137
- package/shared/skills/test-driven-development/references/rationalization-prevention.md +0 -111
- package/shared/skills/test-patterns/SKILL.md +0 -183
- package/shared/skills/test-patterns/references/detection.md +0 -149
- package/shared/skills/test-patterns/references/patterns.md +0 -220
- package/shared/skills/test-patterns/references/report-template.md +0 -108
- package/shared/skills/test-patterns/references/violations.md +0 -221
- package/shared/skills/typescript/SKILL.md +0 -176
- package/shared/skills/typescript/references/patterns.md +0 -1105
- package/shared/skills/typescript/references/violations.md +0 -433
- package/src/templates/claudeignore.template +0 -188
- package/src/templates/settings.json +0 -59
- /package/dist/{utils → core}/safe-delete.js +0 -0
- /package/{plugins/devflow-accessibility → src/assets}/skills/accessibility/references/detection.md +0 -0
- /package/{plugins/devflow-code-review/skills/architecture-patterns → src/assets/skills/architecture}/references/detection.md +0 -0
- /package/{plugins/devflow-code-review/skills/complexity-patterns → src/assets/skills/complexity}/references/detection.md +0 -0
- /package/{plugins/devflow-code-review/skills/complexity-patterns → src/assets/skills/complexity}/references/patterns.md +0 -0
- /package/{plugins/devflow-code-review/skills/complexity-patterns → src/assets/skills/complexity}/references/violations.md +0 -0
- /package/{plugins/devflow-code-review/skills/consistency-patterns → src/assets/skills/consistency}/references/detection.md +0 -0
- /package/{plugins/devflow-code-review/skills/consistency-patterns → src/assets/skills/consistency}/references/patterns.md +0 -0
- /package/{plugins/devflow-code-review/skills/consistency-patterns → src/assets/skills/consistency}/references/violations.md +0 -0
- /package/{plugins/devflow-code-review/skills/database-patterns → src/assets/skills/database}/references/detection.md +0 -0
- /package/{plugins/devflow-code-review/skills/database-patterns → src/assets/skills/database}/references/patterns.md +0 -0
- /package/{plugins/devflow-code-review/skills/database-patterns → src/assets/skills/database}/references/violations.md +0 -0
- /package/{plugins/devflow-code-review/skills/dependencies-patterns → src/assets/skills/dependencies}/references/detection.md +0 -0
- /package/{plugins/devflow-code-review/skills/dependencies-patterns → src/assets/skills/dependencies}/references/patterns.md +0 -0
- /package/{plugins/devflow-code-review/skills/dependencies-patterns → src/assets/skills/dependencies}/references/violations.md +0 -0
- /package/{plugins/devflow-code-review/skills/documentation-patterns → src/assets/skills/documentation}/references/detection.md +0 -0
- /package/{plugins/devflow-code-review/skills/documentation-patterns → src/assets/skills/documentation}/references/patterns.md +0 -0
- /package/{plugins/devflow-code-review/skills/documentation-patterns → src/assets/skills/documentation}/references/violations.md +0 -0
- /package/{plugins/devflow-core-skills/skills/git-safety → src/assets/skills/git}/references/detection.md +0 -0
- /package/{plugins/devflow-go → src/assets}/skills/go/references/detection.md +0 -0
- /package/{plugins/devflow-java → src/assets}/skills/java/references/detection.md +0 -0
- /package/{plugins/devflow-implement/skills/implementation-patterns → src/assets/skills/patterns}/references/patterns.md +0 -0
- /package/{plugins/devflow-implement/skills/implementation-patterns → src/assets/skills/patterns}/references/violations.md +0 -0
- /package/{plugins/devflow-code-review/skills/performance-patterns → src/assets/skills/performance}/references/detection.md +0 -0
- /package/{plugins/devflow-python → src/assets}/skills/python/references/detection.md +0 -0
- /package/{plugins/devflow-implement/skills/self-review → src/assets/skills/quality-gates}/references/patterns.md +0 -0
- /package/{plugins/devflow-implement/skills/self-review → src/assets/skills/quality-gates}/references/report-template.md +0 -0
- /package/{plugins/devflow-implement/skills/self-review → src/assets/skills/quality-gates}/references/violations.md +0 -0
- /package/{plugins/devflow-code-review/skills/regression-patterns → src/assets/skills/regression}/references/detection.md +0 -0
- /package/{plugins/devflow-code-review/skills/regression-patterns → src/assets/skills/regression}/references/patterns.md +0 -0
- /package/{plugins/devflow-code-review/skills/regression-patterns → src/assets/skills/regression}/references/violations.md +0 -0
- /package/{plugins/devflow-rust → src/assets}/skills/rust/references/detection.md +0 -0
- /package/{plugins/devflow-code-review/skills/security-patterns → src/assets/skills/security}/references/detection.md +0 -0
- /package/{plugins/devflow-core-skills/skills/core-patterns → src/assets/skills/software-design}/references/detection.md +0 -0
- /package/{plugins/devflow-core-skills → src/assets}/skills/test-driven-development/references/rationalization-prevention.md +0 -0
- /package/{plugins/devflow-code-review/skills/test-patterns → src/assets/skills/testing}/references/detection.md +0 -0
- /package/{plugins/devflow-code-review/skills/test-patterns → src/assets/skills/testing}/references/report-template.md +0 -0
- /package/{plugins/devflow-frontend-design/skills/frontend-design → src/assets/skills/ui-design}/references/detection.md +0 -0
- /package/src/{templates → targets/claude-code/templates}/managed-settings.json +0 -0
|
@@ -0,0 +1,460 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# background-memory-update — Eager working-memory refresh worker
|
|
4
|
+
# Spawned as a detached background process by memory-worker (Stop hook) after the
|
|
5
|
+
# 120s throttle expires. Drains .pending-turns.jsonl → calls `claude -p` (sonnet 4.6) →
|
|
6
|
+
# rewrites WORKING-MEMORY.md with a git-reconciliation stamp on line 1.
|
|
7
|
+
#
|
|
8
|
+
# Applies ADR-008 (LLM-vs-plumbing): artifact content (WORKING-MEMORY.md) is
|
|
9
|
+
# authored by the LLM; this script only does plumbing (lock, queue drain, spawn).
|
|
10
|
+
# Avoids PF-006 (does NOT parse Stop hook JSON), PF-007 (edit source only).
|
|
11
|
+
#
|
|
12
|
+
# Usage: background-memory-update <CWD>
|
|
13
|
+
#
|
|
14
|
+
# Success: removes .pending-turns.processing; touches .last-refresh-ok
|
|
15
|
+
# Failure: leaves .pending-turns.processing; this worker is the PRIMARY recovery owner —
|
|
16
|
+
# on its next spawn it merges leftover .processing back into the queue (lines ~141-156).
|
|
17
|
+
# session-start-memory's own cold-path recovery is the fallback for when this
|
|
18
|
+
# worker never re-spawns (e.g. memory disabled mid-flight, host offline); it applies a
|
|
19
|
+
# 300s age gate before acting on .processing. No action needed here — the two paths
|
|
20
|
+
# are correctly separated by the lock boundary.
|
|
21
|
+
# User-only: truncates queue without LLM run (no fabrication)
|
|
22
|
+
|
|
23
|
+
set -e
|
|
24
|
+
|
|
25
|
+
# Re-entrancy guard: a nested memory-worker claude -p session (DEVFLOW_BG_UPDATER=1
|
|
26
|
+
# in its env) fires Stop hooks on its own turns. If those hooks ever chain into
|
|
27
|
+
# spawning this worker, bail out immediately rather than cascading a memory
|
|
28
|
+
# refresh out of a nested worker session (belt-and-suspenders alongside the
|
|
29
|
+
# equivalent guard in memory-worker, which is the intended sole spawn site).
|
|
30
|
+
if [ "${DEVFLOW_BG_UPDATER:-}" = "1" ]; then
|
|
31
|
+
echo "background-memory-update: EXIT: bg_updater" >&2
|
|
32
|
+
exit 0
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
CWD="$1"
|
|
36
|
+
if [ -z "$CWD" ] || [ ! -d "$CWD" ]; then
|
|
37
|
+
echo "background-memory-update: CWD missing or not a directory: '$CWD'" >&2
|
|
38
|
+
exit 1
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
# Resolve SCRIPT_DIR early — needed for sourcing helpers
|
|
42
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
43
|
+
|
|
44
|
+
# Source JSON parsing helpers (jq with node fallback)
|
|
45
|
+
source "$SCRIPT_DIR/json-parse" || { echo "background-memory-update: failed to source json-parse" >&2; exit 1; }
|
|
46
|
+
|
|
47
|
+
# Source hook-log-init for log() and size guard (requires $SCRIPT_DIR and $CWD, both set above;
|
|
48
|
+
# does NOT pull in hook-bootstrap so the detached-worker invariant is preserved)
|
|
49
|
+
source "$SCRIPT_DIR/hook-log-init" "background-memory-update" \
|
|
50
|
+
|| { echo "background-memory-update: failed to source hook-log-init" >&2; exit 1; }
|
|
51
|
+
|
|
52
|
+
# Source get-mtime for mtime comparisons
|
|
53
|
+
source "$SCRIPT_DIR/get-mtime" || { echo "background-memory-update: failed to source get-mtime" >&2; exit 1; }
|
|
54
|
+
|
|
55
|
+
log "Starting (CWD=$CWD)"
|
|
56
|
+
|
|
57
|
+
# --- Resolve paths ---
|
|
58
|
+
# Anchor .devflow/ to the project root (prevents a stray nested .devflow/ when the
|
|
59
|
+
# worker is spawned with a CWD inside .devflow/...). Empty → fall back to CWD.
|
|
60
|
+
source "$SCRIPT_DIR/resolve-project-root" 2>/dev/null || true
|
|
61
|
+
PROJECT_ROOT="$(df_resolve_root "$CWD" 2>/dev/null || true)"
|
|
62
|
+
[ -n "$PROJECT_ROOT" ] || PROJECT_ROOT="$CWD"
|
|
63
|
+
DEVFLOW_DIR="$PROJECT_ROOT/.devflow"
|
|
64
|
+
MEMORY_DIR="$DEVFLOW_DIR/memory"
|
|
65
|
+
QUEUE_FILE="$MEMORY_DIR/.pending-turns.jsonl"
|
|
66
|
+
PROCESSING_FILE="$MEMORY_DIR/.pending-turns.processing"
|
|
67
|
+
MEMORY_FILE="$MEMORY_DIR/WORKING-MEMORY.md"
|
|
68
|
+
LOCK_DIR="$MEMORY_DIR/.working-memory.lock"
|
|
69
|
+
TRIGGER_FILE="$MEMORY_DIR/.working-memory-last-trigger"
|
|
70
|
+
OK_FILE="$MEMORY_DIR/.last-refresh-ok"
|
|
71
|
+
FEATURE_CONFIG="$DEVFLOW_DIR/config.json"
|
|
72
|
+
|
|
73
|
+
# --- Re-check memory:false at runtime (defense-in-depth: feature may be disabled since spawn) ---
|
|
74
|
+
if [ -f "$FEATURE_CONFIG" ]; then
|
|
75
|
+
_MEM_ENABLED=$(json_field_file "$FEATURE_CONFIG" "memory" "true")
|
|
76
|
+
if [ "$_MEM_ENABLED" = "false" ]; then
|
|
77
|
+
log "ABORT: memory disabled in feature config (disabled after spawn)"
|
|
78
|
+
exit 0
|
|
79
|
+
fi
|
|
80
|
+
fi
|
|
81
|
+
|
|
82
|
+
# --- Resolve claude binary ---
|
|
83
|
+
CLAUDE_BIN=$(command -v claude 2>/dev/null || true)
|
|
84
|
+
if [ -z "$CLAUDE_BIN" ]; then
|
|
85
|
+
log "SKIP: claude binary not found on PATH"
|
|
86
|
+
exit 0
|
|
87
|
+
fi
|
|
88
|
+
|
|
89
|
+
# --- Worker-level lock (300s stale-break — much longer than learning-lock's 30s) ---
|
|
90
|
+
# This prevents a second worker (spawned 121s later) from double-writing WORKING-MEMORY.md
|
|
91
|
+
# while the first worker's claude -p call (up to 120s) is still in flight.
|
|
92
|
+
#
|
|
93
|
+
# INVARIANT: STALE_THRESHOLD (300s) must always exceed the watchdog total in-flight time
|
|
94
|
+
# (WATCHDOG_SECS + WATCHDOG_KILL_GRACE_SECS = 120+5 = 125s, plus margin).
|
|
95
|
+
# A live worker holding the lock will have been watchdog-killed within ~125s, so a
|
|
96
|
+
# 300s stale-break is safe-by-construction. If either bound is raised, this invariant
|
|
97
|
+
# MUST be re-verified: STALE_THRESHOLD > WATCHDOG_SECS + WATCHDOG_KILL_GRACE_SECS + margin.
|
|
98
|
+
|
|
99
|
+
STALE_THRESHOLD=300 # 5 minutes
|
|
100
|
+
|
|
101
|
+
break_stale_lock() {
|
|
102
|
+
if [ ! -d "$LOCK_DIR" ]; then return; fi
|
|
103
|
+
local _lock_mtime _now _age
|
|
104
|
+
_lock_mtime=$(get_mtime "$LOCK_DIR")
|
|
105
|
+
_now=$(date +%s)
|
|
106
|
+
_age=$(( _now - _lock_mtime ))
|
|
107
|
+
if [ "$_age" -gt "$STALE_THRESHOLD" ]; then
|
|
108
|
+
log "Breaking stale worker lock (age: ${_age}s, threshold: ${STALE_THRESHOLD}s)"
|
|
109
|
+
rmdir "$LOCK_DIR" 2>/dev/null || true
|
|
110
|
+
fi
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
acquire_lock() {
|
|
114
|
+
local _timeout=90 # < WATCHDOG_SECS (120): waiter gives up before the holder's own watchdog fires; queue is preserved for next spawn
|
|
115
|
+
local _waited=0
|
|
116
|
+
while ! mkdir "$LOCK_DIR" 2>/dev/null; do
|
|
117
|
+
if [ "$_waited" -ge "$_timeout" ]; then
|
|
118
|
+
return 1
|
|
119
|
+
fi
|
|
120
|
+
sleep 1
|
|
121
|
+
_waited=$(( _waited + 1 ))
|
|
122
|
+
done
|
|
123
|
+
return 0
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
cleanup_lock() {
|
|
127
|
+
rmdir "$LOCK_DIR" 2>/dev/null || true
|
|
128
|
+
}
|
|
129
|
+
trap cleanup_lock EXIT
|
|
130
|
+
|
|
131
|
+
break_stale_lock
|
|
132
|
+
|
|
133
|
+
if ! acquire_lock; then
|
|
134
|
+
log "SKIP: lock timeout after 90s — another worker is running"
|
|
135
|
+
trap - EXIT
|
|
136
|
+
exit 0
|
|
137
|
+
fi
|
|
138
|
+
|
|
139
|
+
# --- Orphan-only auto-clean: if queue has no assistant/qa turn, truncate and exit ---
|
|
140
|
+
# This prevents fabrication-prone LLM runs with only user turns in the queue.
|
|
141
|
+
# A qa row (captured Q&A pair) counts as content-bearing here too — it carries
|
|
142
|
+
# the same synthesis-worthy signal as an assistant turn (AC-F10). This check
|
|
143
|
+
# and the TURNS_TEXT extraction loop below must agree on that.
|
|
144
|
+
# When neither jq nor node is available (_JSON_AVAILABLE=false) we skip the check
|
|
145
|
+
# and allow the run to proceed — conservative: better to attempt than to truncate blindly.
|
|
146
|
+
if [ -f "$QUEUE_FILE" ] && [ -s "$QUEUE_FILE" ] && [ "$_JSON_AVAILABLE" = "true" ]; then
|
|
147
|
+
if [ "$_HAS_JQ" = "true" ]; then
|
|
148
|
+
_HAS_CONTENT=$(jq -r 'select(.role=="assistant" or .role=="qa") | .role' "$QUEUE_FILE" 2>/dev/null | head -1 || echo "")
|
|
149
|
+
else
|
|
150
|
+
# SECURITY: pass path via argv, never interpolate into node -e source (avoids shell injection
|
|
151
|
+
# for repo paths containing quotes or special characters — applies ADR-008 plumbing principle)
|
|
152
|
+
_HAS_CONTENT=$(node -e '
|
|
153
|
+
const f = process.argv[1];
|
|
154
|
+
const lines = require("fs").readFileSync(f, "utf8").split("\n");
|
|
155
|
+
for (const l of lines) {
|
|
156
|
+
try { const o = JSON.parse(l); if (o.role === "assistant" || o.role === "qa") { process.stdout.write(o.role); break; } } catch {}
|
|
157
|
+
}
|
|
158
|
+
' "$QUEUE_FILE" 2>/dev/null || echo "")
|
|
159
|
+
fi
|
|
160
|
+
if [ -z "$_HAS_CONTENT" ]; then
|
|
161
|
+
log "User-only queue (no assistant/qa turn) — truncating without LLM run"
|
|
162
|
+
rm -f "$QUEUE_FILE" 2>/dev/null || true
|
|
163
|
+
exit 0
|
|
164
|
+
fi
|
|
165
|
+
fi
|
|
166
|
+
|
|
167
|
+
# --- Claim queue atomically (D56c contract: .pending-turns.processing recovered at SessionStart) ---
|
|
168
|
+
# If a leftover .processing exists from a previous crash, merge new queue entries into it.
|
|
169
|
+
if [ -f "$PROCESSING_FILE" ]; then
|
|
170
|
+
log "Found leftover .processing from previous crash — merging"
|
|
171
|
+
if [ -f "$QUEUE_FILE" ]; then
|
|
172
|
+
cat "$QUEUE_FILE" >> "$PROCESSING_FILE" 2>/dev/null || true
|
|
173
|
+
rm -f "$QUEUE_FILE" 2>/dev/null || true
|
|
174
|
+
log "Merged new queue entries into recovery batch"
|
|
175
|
+
fi
|
|
176
|
+
# Cap to prevent unbounded growth
|
|
177
|
+
PROC_OVERFLOW_CAP=200 # truncate when processing file exceeds this many lines
|
|
178
|
+
PROC_OVERFLOW_TARGET=100 # keep only the newest N lines after truncation
|
|
179
|
+
_PROC_LINES=$(wc -l < "$PROCESSING_FILE" | tr -d ' ')
|
|
180
|
+
if [ "$_PROC_LINES" -gt "$PROC_OVERFLOW_CAP" ]; then
|
|
181
|
+
_PROC_TMP="$PROCESSING_FILE.tmp.$$"
|
|
182
|
+
tail -"$PROC_OVERFLOW_TARGET" "$PROCESSING_FILE" > "$_PROC_TMP" && mv "$_PROC_TMP" "$PROCESSING_FILE" || rm -f "$_PROC_TMP" 2>/dev/null || true
|
|
183
|
+
log "Processing overflow: truncated from $_PROC_LINES to $PROC_OVERFLOW_TARGET lines"
|
|
184
|
+
fi
|
|
185
|
+
elif [ -f "$QUEUE_FILE" ]; then
|
|
186
|
+
mv "$QUEUE_FILE" "$PROCESSING_FILE" 2>/dev/null || { log "SKIP: failed to claim queue (race condition — another worker got it)"; exit 0; }
|
|
187
|
+
else
|
|
188
|
+
log "SKIP: no queue file to process"
|
|
189
|
+
exit 0
|
|
190
|
+
fi
|
|
191
|
+
|
|
192
|
+
TOTAL_LINES=$(wc -l < "$PROCESSING_FILE" | tr -d ' ')
|
|
193
|
+
log "Processing $TOTAL_LINES queued entries"
|
|
194
|
+
|
|
195
|
+
if [ "$TOTAL_LINES" -eq 0 ]; then
|
|
196
|
+
rm -f "$PROCESSING_FILE" 2>/dev/null || true
|
|
197
|
+
log "Processing file empty — skipping"
|
|
198
|
+
exit 0
|
|
199
|
+
fi
|
|
200
|
+
|
|
201
|
+
# --- Build last-10 turns from queue ---
|
|
202
|
+
MAX_TURNS=10
|
|
203
|
+
MAX_LINES=$(( MAX_TURNS * 2 ))
|
|
204
|
+
if [ "$TOTAL_LINES" -gt "$MAX_LINES" ]; then
|
|
205
|
+
ENTRIES=$(tail -"$MAX_LINES" "$PROCESSING_FILE")
|
|
206
|
+
log "Capped to last $MAX_LINES entries (from $TOTAL_LINES)"
|
|
207
|
+
else
|
|
208
|
+
ENTRIES=$(cat "$PROCESSING_FILE")
|
|
209
|
+
fi
|
|
210
|
+
|
|
211
|
+
# Single-pass extraction: role + content as TSV (newlines collapsed)
|
|
212
|
+
# When neither jq nor node is available, EXTRACTED stays empty and TURN_COUNT will be 0 → early exit.
|
|
213
|
+
if [ "$_HAS_JQ" = "true" ]; then
|
|
214
|
+
EXTRACTED=$(printf '%s\n' "$ENTRIES" | jq -r '(.role // "") + "\t" + ((.content // "") | gsub("\n"; " "))' 2>/dev/null || echo "")
|
|
215
|
+
elif [ "$_HAS_NODE" = "true" ]; then
|
|
216
|
+
EXTRACTED=$(printf '%s\n' "$ENTRIES" | node -e '
|
|
217
|
+
const lines = require("fs").readFileSync("/dev/stdin","utf8").split("\n");
|
|
218
|
+
for (const line of lines) {
|
|
219
|
+
if (!line.trim()) continue;
|
|
220
|
+
try {
|
|
221
|
+
const obj = JSON.parse(line);
|
|
222
|
+
const role = obj.role || "";
|
|
223
|
+
const content = (obj.content || "").replace(/\n/g, " ");
|
|
224
|
+
process.stdout.write(role + "\t" + content + "\n");
|
|
225
|
+
} catch {}
|
|
226
|
+
}
|
|
227
|
+
' 2>/dev/null || echo "")
|
|
228
|
+
else
|
|
229
|
+
EXTRACTED=""
|
|
230
|
+
fi
|
|
231
|
+
|
|
232
|
+
TURNS_TEXT=""
|
|
233
|
+
TURN_COUNT=0
|
|
234
|
+
CURRENT_USER=""
|
|
235
|
+
|
|
236
|
+
# FLUSH INVARIANT: a pending user turn (buffered in CURRENT_USER) is flushed in three cases:
|
|
237
|
+
# (1) the next user row arrives — emit user-only stanza, replace buffer; (2) an assistant row
|
|
238
|
+
# arrives — emit paired user+assistant stanza, clear buffer; (3) EOF — trailing flush block below.
|
|
239
|
+
while IFS=$'\t' read -r ROLE CONTENT; do
|
|
240
|
+
[ -z "$ROLE" ] && continue
|
|
241
|
+
if [ "$ROLE" = "user" ]; then
|
|
242
|
+
if [ -n "$CURRENT_USER" ]; then
|
|
243
|
+
TURN_COUNT=$(( TURN_COUNT + 1 ))
|
|
244
|
+
TURNS_TEXT="${TURNS_TEXT}
|
|
245
|
+
Turn ${TURN_COUNT}:
|
|
246
|
+
User: ${CURRENT_USER}
|
|
247
|
+
"
|
|
248
|
+
fi
|
|
249
|
+
CURRENT_USER="$CONTENT"
|
|
250
|
+
elif [ "$ROLE" = "assistant" ]; then
|
|
251
|
+
TURN_COUNT=$(( TURN_COUNT + 1 ))
|
|
252
|
+
if [ -n "$CURRENT_USER" ]; then
|
|
253
|
+
TURNS_TEXT="${TURNS_TEXT}
|
|
254
|
+
Turn ${TURN_COUNT}:
|
|
255
|
+
User: ${CURRENT_USER}
|
|
256
|
+
Assistant: ${CONTENT}
|
|
257
|
+
"
|
|
258
|
+
CURRENT_USER=""
|
|
259
|
+
else
|
|
260
|
+
TURNS_TEXT="${TURNS_TEXT}
|
|
261
|
+
Turn ${TURN_COUNT}:
|
|
262
|
+
Assistant: ${CONTENT}
|
|
263
|
+
"
|
|
264
|
+
fi
|
|
265
|
+
elif [ "$ROLE" = "qa" ]; then
|
|
266
|
+
# Captured AskUserQuestion Q&A pair — a self-contained stanza, not paired
|
|
267
|
+
# with CURRENT_USER (a qa row can arrive mid-turn, between a user prompt
|
|
268
|
+
# and its eventual assistant reply; leave CURRENT_USER buffered untouched).
|
|
269
|
+
TURN_COUNT=$(( TURN_COUNT + 1 ))
|
|
270
|
+
TURNS_TEXT="${TURNS_TEXT}
|
|
271
|
+
Turn ${TURN_COUNT}:
|
|
272
|
+
Q&A: ${CONTENT}
|
|
273
|
+
"
|
|
274
|
+
fi
|
|
275
|
+
done <<EOF
|
|
276
|
+
$EXTRACTED
|
|
277
|
+
EOF
|
|
278
|
+
|
|
279
|
+
if [ -n "$CURRENT_USER" ]; then
|
|
280
|
+
TURN_COUNT=$(( TURN_COUNT + 1 ))
|
|
281
|
+
TURNS_TEXT="${TURNS_TEXT}
|
|
282
|
+
Turn ${TURN_COUNT}:
|
|
283
|
+
User: ${CURRENT_USER}
|
|
284
|
+
"
|
|
285
|
+
fi
|
|
286
|
+
|
|
287
|
+
if [ "$TURN_COUNT" -eq 0 ]; then
|
|
288
|
+
rm -f "$PROCESSING_FILE" 2>/dev/null || true
|
|
289
|
+
log "No parseable turns — skipping"
|
|
290
|
+
exit 0
|
|
291
|
+
fi
|
|
292
|
+
|
|
293
|
+
log "Built $TURN_COUNT turns from queue"
|
|
294
|
+
|
|
295
|
+
# --- Read existing memory ---
|
|
296
|
+
EXISTING_MEMORY=""
|
|
297
|
+
PRE_UPDATE_MTIME=0
|
|
298
|
+
MEMORY_READ_LIMIT=65536 # bytes — keep prompt under context limit
|
|
299
|
+
if [ -f "$MEMORY_FILE" ]; then
|
|
300
|
+
EXISTING_MEMORY=$(head -c "$MEMORY_READ_LIMIT" "$MEMORY_FILE")
|
|
301
|
+
PRE_UPDATE_MTIME=$(get_mtime "$MEMORY_FILE")
|
|
302
|
+
fi
|
|
303
|
+
|
|
304
|
+
# --- Gather git state + HEAD SHA for stamp ---
|
|
305
|
+
HEAD_SHA=""
|
|
306
|
+
BRANCH=""
|
|
307
|
+
GIT_STATE=""
|
|
308
|
+
if cd "$CWD" 2>/dev/null && git rev-parse --git-dir >/dev/null 2>&1; then
|
|
309
|
+
HEAD_SHA=$(git rev-parse HEAD 2>/dev/null || echo "")
|
|
310
|
+
BRANCH=$(git branch --show-current 2>/dev/null || echo "")
|
|
311
|
+
GIT_STATUS=$(git status --short 2>/dev/null | head -20)
|
|
312
|
+
GIT_LOG=$(git log --oneline -5 2>/dev/null || echo "")
|
|
313
|
+
GIT_DIFF=$(git diff --stat HEAD 2>/dev/null | tail -10)
|
|
314
|
+
GIT_STATE="Branch: ${BRANCH}
|
|
315
|
+
HEAD: ${HEAD_SHA}
|
|
316
|
+
Recent commits:
|
|
317
|
+
${GIT_LOG}
|
|
318
|
+
Changed files:
|
|
319
|
+
${GIT_STATUS}
|
|
320
|
+
Diff summary:
|
|
321
|
+
${GIT_DIFF}"
|
|
322
|
+
fi
|
|
323
|
+
|
|
324
|
+
# --- Build prompt (passed via STDIN, not argv — turn content may hold secrets) ---
|
|
325
|
+
# SECURITY: argv is visible to ps(1); all user/assistant content goes via stdin.
|
|
326
|
+
PROMPT="You are a working memory updater. Your ONLY job is to update the file at ${MEMORY_FILE} using the Write tool. Do it immediately — do not ask questions or explain.
|
|
327
|
+
|
|
328
|
+
CRITICAL: Write EXACTLY this as line 1 of the file (verbatim substituting the values):
|
|
329
|
+
<!-- memory-head: ${HEAD_SHA:-unknown} branch: ${BRANCH:-unknown} -->
|
|
330
|
+
|
|
331
|
+
Current working memory (existing content — integrate, don't discard):
|
|
332
|
+
${EXISTING_MEMORY:-"(no existing content)"}
|
|
333
|
+
|
|
334
|
+
Recent session turns to synthesize:
|
|
335
|
+
${TURNS_TEXT}
|
|
336
|
+
|
|
337
|
+
Git state:
|
|
338
|
+
${GIT_STATE:-"(not a git repo or no git state)"}
|
|
339
|
+
|
|
340
|
+
Instructions:
|
|
341
|
+
- Write the file ${MEMORY_FILE} NOW using the Write tool
|
|
342
|
+
- Line 1 MUST be: <!-- memory-head: ${HEAD_SHA:-unknown} branch: ${BRANCH:-unknown} -->
|
|
343
|
+
- Keep under 120 lines total
|
|
344
|
+
- Required sections: ## Now, ## Progress, ## Decisions, ## Context, ## Session Log
|
|
345
|
+
- Synthesize from the queue turns — NEVER fabricate or invent context
|
|
346
|
+
- Integrate new information with existing content; deduplicate overlapping information
|
|
347
|
+
- ## Progress tracks Done (fully completed — see the strict definition below), Remaining (next steps / in-progress work), Blockers (if any)
|
|
348
|
+
- DEFINITION OF DONE — mark a task \"Done\" ONLY when its work has landed on the main/default branch AND been published/released to production. Writing code, committing, opening a PR, or passing CI is NOT done. Even a merged PR is NOT done until it is on main AND shipped to production.
|
|
349
|
+
- A feature being implemented does NOT make it done — testing, code review, resolving review feedback, release prep, and publishing are still Remaining work. Until a task is truly done, keep it under Remaining with its real current stage (e.g. \"implemented — awaiting review\", \"merged to main — not yet released\").
|
|
350
|
+
- Only record a completed state (PR merged, CI passed, released, task done) when the session turns or git state actually evidence it. Never assume, predict, or upgrade a status; when unsure, describe the last confirmed state rather than an optimistic one.
|
|
351
|
+
- ## Decisions entries: format as - **[Decision]** — [rationale] (YYYY-MM-DD) [ACTIVE|SUPERSEDED]
|
|
352
|
+
- If queue is empty, preserve existing content as-is (still write line 1 stamp)"
|
|
353
|
+
|
|
354
|
+
log "Spawning claude -p (model claude-sonnet-4-6, ${TURN_COUNT} turns)"
|
|
355
|
+
# SECURITY: never log PROMPT — it contains turn content which may include secrets
|
|
356
|
+
|
|
357
|
+
# --- Watchdog timeout (overridable for tests: DEVFLOW_BG_WATCHDOG_SECS=2) ---
|
|
358
|
+
WATCHDOG_SECS="${DEVFLOW_BG_WATCHDOG_SECS:-120}"
|
|
359
|
+
WATCHDOG_KILL_GRACE_SECS=5 # grace period between SIGTERM and SIGKILL
|
|
360
|
+
|
|
361
|
+
# NASA/JPL Rule 5 — runtime assertion: STALE_THRESHOLD must exceed the watchdog's
|
|
362
|
+
# total in-flight time so that break_stale_lock and session-start-memory's cold-path
|
|
363
|
+
# recovery can never evict a still-live worker. If DEVFLOW_BG_WATCHDOG_SECS is raised above
|
|
364
|
+
# 294 (leaving < 1s margin), this will fail loudly rather than silently corrupt the
|
|
365
|
+
# safety guarantee. Checked before spawning claude so a bad override is caught early.
|
|
366
|
+
# avoids PF-011
|
|
367
|
+
_WATCHDOG_TOTAL=$(( WATCHDOG_SECS + WATCHDOG_KILL_GRACE_SECS ))
|
|
368
|
+
if [ "$STALE_THRESHOLD" -le "$_WATCHDOG_TOTAL" ]; then
|
|
369
|
+
echo "[background-memory-update] FATAL: STALE_THRESHOLD ($STALE_THRESHOLD) must exceed watchdog total (${WATCHDOG_SECS}+${WATCHDOG_KILL_GRACE_SECS}=${_WATCHDOG_TOTAL})" >&2
|
|
370
|
+
exit 1
|
|
371
|
+
fi
|
|
372
|
+
|
|
373
|
+
# --- Run claude -p with watchdog ---
|
|
374
|
+
# D37: Enable job control (set -m) only around the spawn so bash gives claude its OWN
|
|
375
|
+
# process group (PGID == CLAUDE_PID) even in this non-interactive script. Without
|
|
376
|
+
# set -m the background child inherits the worker's process group and the watchdog
|
|
377
|
+
# kill -TERM -"$CLAUDE_PID" would also kill the worker itself (self-kill bug).
|
|
378
|
+
# Restore set +m immediately after capturing CLAUDE_PID so the watchdog subshell and
|
|
379
|
+
# other subsequent background operations stay in the worker's group.
|
|
380
|
+
# Job-control notifications go to stderr which is redirected to the log — suppress them.
|
|
381
|
+
set -m
|
|
382
|
+
DEVFLOW_BG_UPDATER=1 "$CLAUDE_BIN" -p \
|
|
383
|
+
--model claude-sonnet-4-6 \
|
|
384
|
+
--dangerously-skip-permissions \
|
|
385
|
+
--allowedTools 'Read,Write' \
|
|
386
|
+
--output-format text \
|
|
387
|
+
<<< "$PROMPT" \
|
|
388
|
+
>> "$LOG_FILE" 2>&1 &
|
|
389
|
+
CLAUDE_PID=$!
|
|
390
|
+
set +m
|
|
391
|
+
|
|
392
|
+
# Watchdog: after WATCHDOG_SECS send SIGTERM to claude's process group (PGID == CLAUDE_PID
|
|
393
|
+
# because set -m made it a group leader), then SIGKILL after WATCHDOG_KILL_GRACE_SECS.
|
|
394
|
+
# Using -PGID (negative PID) kills claude's entire subtree so children it spawned
|
|
395
|
+
# are also terminated — the worker itself is NOT in that group (set +m restored above).
|
|
396
|
+
# Cancel watchdog immediately after claude exits to avoid hitting a recycled PID.
|
|
397
|
+
(
|
|
398
|
+
sleep "$WATCHDOG_SECS"
|
|
399
|
+
kill -TERM -"$CLAUDE_PID" 2>/dev/null || true
|
|
400
|
+
sleep "$WATCHDOG_KILL_GRACE_SECS"
|
|
401
|
+
kill -KILL -"$CLAUDE_PID" 2>/dev/null || true
|
|
402
|
+
) &
|
|
403
|
+
WD_PID=$!
|
|
404
|
+
|
|
405
|
+
if wait "$CLAUDE_PID" 2>/dev/null; then
|
|
406
|
+
CLAUDE_EXIT=0
|
|
407
|
+
else
|
|
408
|
+
CLAUDE_EXIT=$?
|
|
409
|
+
fi
|
|
410
|
+
|
|
411
|
+
# Cancel watchdog (avoids stray kill hitting a recycled PID after this process exits)
|
|
412
|
+
kill "$WD_PID" 2>/dev/null || true
|
|
413
|
+
wait "$WD_PID" 2>/dev/null || true
|
|
414
|
+
|
|
415
|
+
if [ "$CLAUDE_EXIT" -gt 128 ]; then
|
|
416
|
+
log "FAIL: claude -p killed by watchdog after ${WATCHDOG_SECS}s"
|
|
417
|
+
# Leave .processing for crash recovery (session-start-memory's D56c cold path).
|
|
418
|
+
# Retry-count ceiling: this worker is rate-bounded to one spawn per 120s by memory-worker's
|
|
419
|
+
# throttle (.working-memory-last-trigger mtime). Persistent failure is surfaced to the user
|
|
420
|
+
# via session-start-memory State C (stale .last-refresh-ok) rather than a retry counter here,
|
|
421
|
+
# keeping this plumbing script simple (applies ADR-008).
|
|
422
|
+
exit 0
|
|
423
|
+
elif [ "$CLAUDE_EXIT" -ne 0 ]; then
|
|
424
|
+
log "FAIL: claude -p exited with code $CLAUDE_EXIT"
|
|
425
|
+
# Leave .processing for crash recovery (see same rate-bound note above)
|
|
426
|
+
exit 0
|
|
427
|
+
fi
|
|
428
|
+
|
|
429
|
+
# --- Verify success: mtime changed AND first-line stamp present ---
|
|
430
|
+
UPDATED="false"
|
|
431
|
+
if [ -f "$MEMORY_FILE" ]; then
|
|
432
|
+
NEW_MTIME=$(get_mtime "$MEMORY_FILE")
|
|
433
|
+
if [ "$NEW_MTIME" -gt "$PRE_UPDATE_MTIME" ]; then
|
|
434
|
+
FIRST_LINE=$(head -1 "$MEMORY_FILE" 2>/dev/null || echo "")
|
|
435
|
+
case "$FIRST_LINE" in
|
|
436
|
+
"<!-- memory-head:"*)
|
|
437
|
+
UPDATED="true"
|
|
438
|
+
log "Update verified (mtime changed, stamp present)"
|
|
439
|
+
;;
|
|
440
|
+
*)
|
|
441
|
+
log "WARN: mtime changed but stamp missing on line 1 — treating as failure"
|
|
442
|
+
;;
|
|
443
|
+
esac
|
|
444
|
+
else
|
|
445
|
+
log "WARN: memory file not modified (Write tool may have failed)"
|
|
446
|
+
fi
|
|
447
|
+
else
|
|
448
|
+
log "WARN: memory file does not exist after claude -p run"
|
|
449
|
+
fi
|
|
450
|
+
|
|
451
|
+
if [ "$UPDATED" = "true" ]; then
|
|
452
|
+
rm -f "$PROCESSING_FILE" 2>/dev/null || true
|
|
453
|
+
touch "$OK_FILE" 2>/dev/null || true
|
|
454
|
+
log "SUCCESS: queue drained, .last-refresh-ok touched"
|
|
455
|
+
else
|
|
456
|
+
# Leave .processing for session-start-memory's D56c cold path; do NOT touch .last-refresh-ok
|
|
457
|
+
log "FAIL: verification failed — leaving .processing for recovery"
|
|
458
|
+
fi
|
|
459
|
+
|
|
460
|
+
exit 0
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Learning System: capture-prompt (UserPromptSubmit Hook)
|
|
4
|
+
# Dual-append: writes the user turn to BOTH the memory queue and the learning
|
|
5
|
+
# queue, each independently gated by its own feature flag (AC-F4). Delegates
|
|
6
|
+
# the actual JSONL-write logic to the shared queue-append helper rather than
|
|
7
|
+
# duplicating it inline.
|
|
8
|
+
|
|
9
|
+
# Safe no-op fallback: must exist before set -e and before hook-bootstrap is sourced.
|
|
10
|
+
dbg() { :; }
|
|
11
|
+
|
|
12
|
+
set -e
|
|
13
|
+
|
|
14
|
+
# Feedback-loop guard -- before hook-bootstrap to minimize background session
|
|
15
|
+
# overhead. The memory worker's own claude -p session fires
|
|
16
|
+
# UserPromptSubmit-adjacent hooks on its nested turns; bail out immediately
|
|
17
|
+
# rather than double-capturing a background session's own prompts.
|
|
18
|
+
if [ "${DEVFLOW_BG_UPDATER:-}" = "1" ]; then dbg "EXIT: bg_updater"; exit 0; fi
|
|
19
|
+
|
|
20
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
21
|
+
|
|
22
|
+
source "$SCRIPT_DIR/hook-bootstrap" "capture-prompt"
|
|
23
|
+
|
|
24
|
+
source "$SCRIPT_DIR/json-parse" || { echo "capture-prompt: failed to source json-parse" >&2; exit 1; }
|
|
25
|
+
if [ "$_JSON_AVAILABLE" = "false" ]; then dbg "EXIT: no json"; exit 0; fi
|
|
26
|
+
|
|
27
|
+
INPUT=$(cat)
|
|
28
|
+
|
|
29
|
+
FIELDS=$(printf '%s' "$INPUT" | json_extract_cwd_prompt)
|
|
30
|
+
CWD="${FIELDS%%$'\001'*}"
|
|
31
|
+
PROMPT="${FIELDS#*$'\001'}"
|
|
32
|
+
|
|
33
|
+
dbg "CWD=$CWD PROMPT_LENGTH=${#PROMPT}"
|
|
34
|
+
|
|
35
|
+
if [ -z "$CWD" ] || [ ! -d "$CWD" ]; then dbg "EXIT: bad CWD"; exit 0; fi
|
|
36
|
+
|
|
37
|
+
devflow_debug_set_cwd "$CWD"
|
|
38
|
+
|
|
39
|
+
# Anchor .devflow/ to the project root (prevents a stray nested .devflow/ when this
|
|
40
|
+
# hook runs with a CWD inside .devflow/...). Empty → fall back to CWD.
|
|
41
|
+
source "$SCRIPT_DIR/resolve-project-root" 2>/dev/null || true
|
|
42
|
+
PROJECT_ROOT="$(df_resolve_root "$CWD" 2>/dev/null || true)"
|
|
43
|
+
[ -n "$PROJECT_ROOT" ] || PROJECT_ROOT="$CWD"
|
|
44
|
+
|
|
45
|
+
DEVFLOW_DIR="$PROJECT_ROOT/.devflow"
|
|
46
|
+
MEMORY_DIR="$DEVFLOW_DIR/memory"
|
|
47
|
+
LEARNING_DIR="$DEVFLOW_DIR/learning"
|
|
48
|
+
|
|
49
|
+
if [ -z "$PROMPT" ]; then
|
|
50
|
+
dbg "EXIT: empty PROMPT"
|
|
51
|
+
exit 0
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
source "$SCRIPT_DIR/queue-append" || { echo "capture-prompt: failed to source queue-append" >&2; exit 1; }
|
|
55
|
+
|
|
56
|
+
# --- AC-P1: exactly ONE config-read fork, fetching both memory + learning fields ---
|
|
57
|
+
queue_read_gates "$DEVFLOW_DIR/config.json"
|
|
58
|
+
MEMORY_ENABLED="$_QG_MEMORY"
|
|
59
|
+
LEARNING_ENABLED="$_QG_LEARNING"
|
|
60
|
+
|
|
61
|
+
dbg "MEMORY_ENABLED=$MEMORY_ENABLED LEARNING_ENABLED=$LEARNING_ENABLED"
|
|
62
|
+
|
|
63
|
+
if [ "$MEMORY_ENABLED" != "true" ] && [ "$LEARNING_ENABLED" != "true" ]; then
|
|
64
|
+
dbg "EXIT: both features disabled"
|
|
65
|
+
exit 0
|
|
66
|
+
fi
|
|
67
|
+
|
|
68
|
+
# Normal logging (only paid for once we know at least one feature is enabled)
|
|
69
|
+
source "$SCRIPT_DIR/hook-log-init" "capture-prompt"
|
|
70
|
+
|
|
71
|
+
# Auto-create .devflow/ and ensure .gitignore entries
|
|
72
|
+
source "$SCRIPT_DIR/ensure-devflow-init" "$CWD" || exit 0
|
|
73
|
+
|
|
74
|
+
source "$SCRIPT_DIR/get-mtime" || { echo "capture-prompt: failed to source get-mtime" >&2; exit 1; }
|
|
75
|
+
source "$SCRIPT_DIR/learning-lock" || { echo "capture-prompt: failed to source learning-lock" >&2; exit 1; }
|
|
76
|
+
|
|
77
|
+
mkdir -p "$MEMORY_DIR" "$LEARNING_DIR" 2>/dev/null || true
|
|
78
|
+
|
|
79
|
+
TS=$(date +%s)
|
|
80
|
+
queue_append_both \
|
|
81
|
+
"$MEMORY_DIR/.pending-turns.jsonl" "$LEARNING_DIR/.pending-turns.jsonl" \
|
|
82
|
+
"$MEMORY_ENABLED" "$LEARNING_ENABLED" \
|
|
83
|
+
"user" "$PROMPT" "$TS"
|
|
84
|
+
|
|
85
|
+
log "Captured user turn (${#PROMPT} chars)"
|
|
86
|
+
dbg "=== HOOK COMPLETE ==="
|
|
87
|
+
exit 0
|