@dragonflymcp/plugin 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-plugin/plugin.json +26 -0
- package/LICENSE +21 -0
- package/README.md +126 -0
- package/dist/core/annotations.d.ts +71 -0
- package/dist/core/annotations.d.ts.map +1 -0
- package/dist/core/annotations.js +61 -0
- package/dist/core/annotations.js.map +1 -0
- package/dist/core/config.d.ts +66 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +131 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/dispatcher.d.ts +77 -0
- package/dist/core/dispatcher.d.ts.map +1 -0
- package/dist/core/dispatcher.js +132 -0
- package/dist/core/dispatcher.js.map +1 -0
- package/dist/core/server.d.ts +24 -0
- package/dist/core/server.d.ts.map +1 -0
- package/dist/core/server.js +41 -0
- package/dist/core/server.js.map +1 -0
- package/dist/core/store.d.ts +91 -0
- package/dist/core/store.d.ts.map +1 -0
- package/dist/core/store.js +157 -0
- package/dist/core/store.js.map +1 -0
- package/dist/core/types.d.ts +128 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +5 -0
- package/dist/core/types.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +81 -0
- package/dist/index.js.map +1 -0
- package/dist/test-utils/store-harness.d.ts +41 -0
- package/dist/test-utils/store-harness.d.ts.map +1 -0
- package/dist/test-utils/store-harness.js +61 -0
- package/dist/test-utils/store-harness.js.map +1 -0
- package/dist/tools/analytics/aggregators.d.ts +18 -0
- package/dist/tools/analytics/aggregators.d.ts.map +1 -0
- package/dist/tools/analytics/aggregators.js +260 -0
- package/dist/tools/analytics/aggregators.js.map +1 -0
- package/dist/tools/analytics/aggregators.test.d.ts +2 -0
- package/dist/tools/analytics/aggregators.test.d.ts.map +1 -0
- package/dist/tools/analytics/aggregators.test.js +177 -0
- package/dist/tools/analytics/aggregators.test.js.map +1 -0
- package/dist/tools/analytics/drift.d.ts +15 -0
- package/dist/tools/analytics/drift.d.ts.map +1 -0
- package/dist/tools/analytics/drift.js +135 -0
- package/dist/tools/analytics/drift.js.map +1 -0
- package/dist/tools/analytics/drift.test.d.ts +2 -0
- package/dist/tools/analytics/drift.test.d.ts.map +1 -0
- package/dist/tools/analytics/drift.test.js +99 -0
- package/dist/tools/analytics/drift.test.js.map +1 -0
- package/dist/tools/analytics/index.d.ts +10 -0
- package/dist/tools/analytics/index.d.ts.map +1 -0
- package/dist/tools/analytics/index.js +192 -0
- package/dist/tools/analytics/index.js.map +1 -0
- package/dist/tools/analytics/learner.d.ts +29 -0
- package/dist/tools/analytics/learner.d.ts.map +1 -0
- package/dist/tools/analytics/learner.js +135 -0
- package/dist/tools/analytics/learner.js.map +1 -0
- package/dist/tools/analytics/learner.test.d.ts +2 -0
- package/dist/tools/analytics/learner.test.d.ts.map +1 -0
- package/dist/tools/analytics/learner.test.js +118 -0
- package/dist/tools/analytics/learner.test.js.map +1 -0
- package/dist/tools/analytics/observe.d.ts +22 -0
- package/dist/tools/analytics/observe.d.ts.map +1 -0
- package/dist/tools/analytics/observe.js +143 -0
- package/dist/tools/analytics/observe.js.map +1 -0
- package/dist/tools/analytics/observe.test.d.ts +2 -0
- package/dist/tools/analytics/observe.test.d.ts.map +1 -0
- package/dist/tools/analytics/observe.test.js +95 -0
- package/dist/tools/analytics/observe.test.js.map +1 -0
- package/dist/tools/analytics/store.d.ts +29 -0
- package/dist/tools/analytics/store.d.ts.map +1 -0
- package/dist/tools/analytics/store.js +192 -0
- package/dist/tools/analytics/store.js.map +1 -0
- package/dist/tools/analytics/types.d.ts +290 -0
- package/dist/tools/analytics/types.d.ts.map +1 -0
- package/dist/tools/analytics/types.js +7 -0
- package/dist/tools/analytics/types.js.map +1 -0
- package/dist/tools/ast/index.d.ts +8 -0
- package/dist/tools/ast/index.d.ts.map +1 -0
- package/dist/tools/ast/index.js +242 -0
- package/dist/tools/ast/index.js.map +1 -0
- package/dist/tools/ast/indexer.d.ts +41 -0
- package/dist/tools/ast/indexer.d.ts.map +1 -0
- package/dist/tools/ast/indexer.js +617 -0
- package/dist/tools/ast/indexer.js.map +1 -0
- package/dist/tools/ast/store.d.ts +87 -0
- package/dist/tools/ast/store.d.ts.map +1 -0
- package/dist/tools/ast/store.js +280 -0
- package/dist/tools/ast/store.js.map +1 -0
- package/dist/tools/ast/store.test.d.ts +6 -0
- package/dist/tools/ast/store.test.d.ts.map +1 -0
- package/dist/tools/ast/store.test.js +257 -0
- package/dist/tools/ast/store.test.js.map +1 -0
- package/dist/tools/bridge/bridge.d.ts +37 -0
- package/dist/tools/bridge/bridge.d.ts.map +1 -0
- package/dist/tools/bridge/bridge.js +82 -0
- package/dist/tools/bridge/bridge.js.map +1 -0
- package/dist/tools/bridge/bridge.test.d.ts +2 -0
- package/dist/tools/bridge/bridge.test.d.ts.map +1 -0
- package/dist/tools/bridge/bridge.test.js +119 -0
- package/dist/tools/bridge/bridge.test.js.map +1 -0
- package/dist/tools/bridge/index.d.ts +8 -0
- package/dist/tools/bridge/index.d.ts.map +1 -0
- package/dist/tools/bridge/index.js +153 -0
- package/dist/tools/bridge/index.js.map +1 -0
- package/dist/tools/bridge/store.d.ts +45 -0
- package/dist/tools/bridge/store.d.ts.map +1 -0
- package/dist/tools/bridge/store.js +307 -0
- package/dist/tools/bridge/store.js.map +1 -0
- package/dist/tools/bridge/store.test.d.ts +2 -0
- package/dist/tools/bridge/store.test.d.ts.map +1 -0
- package/dist/tools/bridge/store.test.js +180 -0
- package/dist/tools/bridge/store.test.js.map +1 -0
- package/dist/tools/bridge/types.d.ts +44 -0
- package/dist/tools/bridge/types.d.ts.map +1 -0
- package/dist/tools/bridge/types.js +6 -0
- package/dist/tools/bridge/types.js.map +1 -0
- package/dist/tools/evolve/algorithm.d.ts +33 -0
- package/dist/tools/evolve/algorithm.d.ts.map +1 -0
- package/dist/tools/evolve/algorithm.js +64 -0
- package/dist/tools/evolve/algorithm.js.map +1 -0
- package/dist/tools/evolve/algorithm.test.d.ts +6 -0
- package/dist/tools/evolve/algorithm.test.d.ts.map +1 -0
- package/dist/tools/evolve/algorithm.test.js +138 -0
- package/dist/tools/evolve/algorithm.test.js.map +1 -0
- package/dist/tools/evolve/index.d.ts +11 -0
- package/dist/tools/evolve/index.d.ts.map +1 -0
- package/dist/tools/evolve/index.js +300 -0
- package/dist/tools/evolve/index.js.map +1 -0
- package/dist/tools/evolve/store.d.ts +27 -0
- package/dist/tools/evolve/store.d.ts.map +1 -0
- package/dist/tools/evolve/store.js +147 -0
- package/dist/tools/evolve/store.js.map +1 -0
- package/dist/tools/evolve/store.test.d.ts +6 -0
- package/dist/tools/evolve/store.test.d.ts.map +1 -0
- package/dist/tools/evolve/store.test.js +162 -0
- package/dist/tools/evolve/store.test.js.map +1 -0
- package/dist/tools/evolve/types.d.ts +38 -0
- package/dist/tools/evolve/types.d.ts.map +1 -0
- package/dist/tools/evolve/types.js +6 -0
- package/dist/tools/evolve/types.js.map +1 -0
- package/dist/tools/framework/content-loader.d.ts +45 -0
- package/dist/tools/framework/content-loader.d.ts.map +1 -0
- package/dist/tools/framework/content-loader.js +258 -0
- package/dist/tools/framework/content-loader.js.map +1 -0
- package/dist/tools/framework/content-loader.test.d.ts +5 -0
- package/dist/tools/framework/content-loader.test.d.ts.map +1 -0
- package/dist/tools/framework/content-loader.test.js +262 -0
- package/dist/tools/framework/content-loader.test.js.map +1 -0
- package/dist/tools/framework/index.d.ts +30 -0
- package/dist/tools/framework/index.d.ts.map +1 -0
- package/dist/tools/framework/index.js +517 -0
- package/dist/tools/framework/index.js.map +1 -0
- package/dist/tools/framework/session.d.ts +85 -0
- package/dist/tools/framework/session.d.ts.map +1 -0
- package/dist/tools/framework/session.js +311 -0
- package/dist/tools/framework/session.js.map +1 -0
- package/dist/tools/framework/session.test.d.ts +5 -0
- package/dist/tools/framework/session.test.d.ts.map +1 -0
- package/dist/tools/framework/session.test.js +291 -0
- package/dist/tools/framework/session.test.js.map +1 -0
- package/dist/tools/framework/sync-evaluator.d.ts +41 -0
- package/dist/tools/framework/sync-evaluator.d.ts.map +1 -0
- package/dist/tools/framework/sync-evaluator.js +298 -0
- package/dist/tools/framework/sync-evaluator.js.map +1 -0
- package/dist/tools/framework/sync-evaluator.test.d.ts +5 -0
- package/dist/tools/framework/sync-evaluator.test.d.ts.map +1 -0
- package/dist/tools/framework/sync-evaluator.test.js +288 -0
- package/dist/tools/framework/sync-evaluator.test.js.map +1 -0
- package/dist/tools/framework/types.d.ts +279 -0
- package/dist/tools/framework/types.d.ts.map +1 -0
- package/dist/tools/framework/types.js +6 -0
- package/dist/tools/framework/types.js.map +1 -0
- package/dist/tools/framework/workflow-intelligence.d.ts +55 -0
- package/dist/tools/framework/workflow-intelligence.d.ts.map +1 -0
- package/dist/tools/framework/workflow-intelligence.js +199 -0
- package/dist/tools/framework/workflow-intelligence.js.map +1 -0
- package/dist/tools/framework/workflow-intelligence.test.d.ts +6 -0
- package/dist/tools/framework/workflow-intelligence.test.d.ts.map +1 -0
- package/dist/tools/framework/workflow-intelligence.test.js +257 -0
- package/dist/tools/framework/workflow-intelligence.test.js.map +1 -0
- package/dist/tools/framework/workflow-planner.d.ts +10 -0
- package/dist/tools/framework/workflow-planner.d.ts.map +1 -0
- package/dist/tools/framework/workflow-planner.js +214 -0
- package/dist/tools/framework/workflow-planner.js.map +1 -0
- package/dist/tools/framework/workflow-planner.test.d.ts +5 -0
- package/dist/tools/framework/workflow-planner.test.d.ts.map +1 -0
- package/dist/tools/framework/workflow-planner.test.js +137 -0
- package/dist/tools/framework/workflow-planner.test.js.map +1 -0
- package/dist/tools/knowledge/bridge.d.ts +34 -0
- package/dist/tools/knowledge/bridge.d.ts.map +1 -0
- package/dist/tools/knowledge/bridge.js +249 -0
- package/dist/tools/knowledge/bridge.js.map +1 -0
- package/dist/tools/knowledge/bridge.test.d.ts +5 -0
- package/dist/tools/knowledge/bridge.test.d.ts.map +1 -0
- package/dist/tools/knowledge/bridge.test.js +221 -0
- package/dist/tools/knowledge/bridge.test.js.map +1 -0
- package/dist/tools/knowledge/extractor.d.ts +22 -0
- package/dist/tools/knowledge/extractor.d.ts.map +1 -0
- package/dist/tools/knowledge/extractor.js +154 -0
- package/dist/tools/knowledge/extractor.js.map +1 -0
- package/dist/tools/knowledge/index.d.ts +12 -0
- package/dist/tools/knowledge/index.d.ts.map +1 -0
- package/dist/tools/knowledge/index.js +505 -0
- package/dist/tools/knowledge/index.js.map +1 -0
- package/dist/tools/knowledge/retrieval.d.ts +28 -0
- package/dist/tools/knowledge/retrieval.d.ts.map +1 -0
- package/dist/tools/knowledge/retrieval.js +164 -0
- package/dist/tools/knowledge/retrieval.js.map +1 -0
- package/dist/tools/knowledge/store.d.ts +96 -0
- package/dist/tools/knowledge/store.d.ts.map +1 -0
- package/dist/tools/knowledge/store.js +562 -0
- package/dist/tools/knowledge/store.js.map +1 -0
- package/dist/tools/knowledge/store.test.d.ts +6 -0
- package/dist/tools/knowledge/store.test.d.ts.map +1 -0
- package/dist/tools/knowledge/store.test.js +385 -0
- package/dist/tools/knowledge/store.test.js.map +1 -0
- package/dist/tools/knowledge/types.d.ts +168 -0
- package/dist/tools/knowledge/types.d.ts.map +1 -0
- package/dist/tools/knowledge/types.js +6 -0
- package/dist/tools/knowledge/types.js.map +1 -0
- package/dist/tools/memory/evolution.d.ts +31 -0
- package/dist/tools/memory/evolution.d.ts.map +1 -0
- package/dist/tools/memory/evolution.js +130 -0
- package/dist/tools/memory/evolution.js.map +1 -0
- package/dist/tools/memory/index.d.ts +11 -0
- package/dist/tools/memory/index.d.ts.map +1 -0
- package/dist/tools/memory/index.js +239 -0
- package/dist/tools/memory/index.js.map +1 -0
- package/dist/tools/memory/store.d.ts +75 -0
- package/dist/tools/memory/store.d.ts.map +1 -0
- package/dist/tools/memory/store.js +398 -0
- package/dist/tools/memory/store.js.map +1 -0
- package/dist/tools/memory/store.test.d.ts +6 -0
- package/dist/tools/memory/store.test.d.ts.map +1 -0
- package/dist/tools/memory/store.test.js +429 -0
- package/dist/tools/memory/store.test.js.map +1 -0
- package/dist/tools/memory/types.d.ts +171 -0
- package/dist/tools/memory/types.d.ts.map +1 -0
- package/dist/tools/memory/types.js +6 -0
- package/dist/tools/memory/types.js.map +1 -0
- package/dist/tools/pipeline/composer.d.ts +29 -0
- package/dist/tools/pipeline/composer.d.ts.map +1 -0
- package/dist/tools/pipeline/composer.js +225 -0
- package/dist/tools/pipeline/composer.js.map +1 -0
- package/dist/tools/pipeline/composer.test.d.ts +2 -0
- package/dist/tools/pipeline/composer.test.d.ts.map +1 -0
- package/dist/tools/pipeline/composer.test.js +162 -0
- package/dist/tools/pipeline/composer.test.js.map +1 -0
- package/dist/tools/pipeline/index.d.ts +8 -0
- package/dist/tools/pipeline/index.d.ts.map +1 -0
- package/dist/tools/pipeline/index.js +102 -0
- package/dist/tools/pipeline/index.js.map +1 -0
- package/dist/tools/pipeline/planner.d.ts +10 -0
- package/dist/tools/pipeline/planner.d.ts.map +1 -0
- package/dist/tools/pipeline/planner.js +147 -0
- package/dist/tools/pipeline/planner.js.map +1 -0
- package/dist/tools/pipeline/planner.test.d.ts +2 -0
- package/dist/tools/pipeline/planner.test.d.ts.map +1 -0
- package/dist/tools/pipeline/planner.test.js +96 -0
- package/dist/tools/pipeline/planner.test.js.map +1 -0
- package/dist/tools/pipeline/preconditions.d.ts +14 -0
- package/dist/tools/pipeline/preconditions.d.ts.map +1 -0
- package/dist/tools/pipeline/preconditions.js +65 -0
- package/dist/tools/pipeline/preconditions.js.map +1 -0
- package/dist/tools/pipeline/preconditions.test.d.ts +2 -0
- package/dist/tools/pipeline/preconditions.test.d.ts.map +1 -0
- package/dist/tools/pipeline/preconditions.test.js +74 -0
- package/dist/tools/pipeline/preconditions.test.js.map +1 -0
- package/dist/tools/pipeline/types.d.ts +105 -0
- package/dist/tools/pipeline/types.d.ts.map +1 -0
- package/dist/tools/pipeline/types.js +6 -0
- package/dist/tools/pipeline/types.js.map +1 -0
- package/dist/tools/repair/index.d.ts +8 -0
- package/dist/tools/repair/index.d.ts.map +1 -0
- package/dist/tools/repair/index.js +384 -0
- package/dist/tools/repair/index.js.map +1 -0
- package/dist/tools/repair/repairer.d.ts +67 -0
- package/dist/tools/repair/repairer.d.ts.map +1 -0
- package/dist/tools/repair/repairer.js +257 -0
- package/dist/tools/repair/repairer.js.map +1 -0
- package/dist/tools/repair/repairer.test.d.ts +6 -0
- package/dist/tools/repair/repairer.test.d.ts.map +1 -0
- package/dist/tools/repair/repairer.test.js +159 -0
- package/dist/tools/repair/repairer.test.js.map +1 -0
- package/dist/tools/semantic/chunker.d.ts +23 -0
- package/dist/tools/semantic/chunker.d.ts.map +1 -0
- package/dist/tools/semantic/chunker.js +244 -0
- package/dist/tools/semantic/chunker.js.map +1 -0
- package/dist/tools/semantic/embedder.d.ts +16 -0
- package/dist/tools/semantic/embedder.d.ts.map +1 -0
- package/dist/tools/semantic/embedder.js +88 -0
- package/dist/tools/semantic/embedder.js.map +1 -0
- package/dist/tools/semantic/index.d.ts +8 -0
- package/dist/tools/semantic/index.d.ts.map +1 -0
- package/dist/tools/semantic/index.js +144 -0
- package/dist/tools/semantic/index.js.map +1 -0
- package/dist/tools/semantic/store.d.ts +31 -0
- package/dist/tools/semantic/store.d.ts.map +1 -0
- package/dist/tools/semantic/store.js +168 -0
- package/dist/tools/semantic/store.js.map +1 -0
- package/dist/tools/semantic/store.test.d.ts +6 -0
- package/dist/tools/semantic/store.test.d.ts.map +1 -0
- package/dist/tools/semantic/store.test.js +240 -0
- package/dist/tools/semantic/store.test.js.map +1 -0
- package/dist/tools/spec/generator.d.ts +32 -0
- package/dist/tools/spec/generator.d.ts.map +1 -0
- package/dist/tools/spec/generator.js +278 -0
- package/dist/tools/spec/generator.js.map +1 -0
- package/dist/tools/spec/generator.test.d.ts +6 -0
- package/dist/tools/spec/generator.test.d.ts.map +1 -0
- package/dist/tools/spec/generator.test.js +208 -0
- package/dist/tools/spec/generator.test.js.map +1 -0
- package/dist/tools/spec/index.d.ts +11 -0
- package/dist/tools/spec/index.d.ts.map +1 -0
- package/dist/tools/spec/index.js +426 -0
- package/dist/tools/spec/index.js.map +1 -0
- package/dist/tools/spec/store.d.ts +24 -0
- package/dist/tools/spec/store.d.ts.map +1 -0
- package/dist/tools/spec/store.js +104 -0
- package/dist/tools/spec/store.js.map +1 -0
- package/dist/tools/spec/store.test.d.ts +6 -0
- package/dist/tools/spec/store.test.d.ts.map +1 -0
- package/dist/tools/spec/store.test.js +173 -0
- package/dist/tools/spec/store.test.js.map +1 -0
- package/dist/tools/spec/types.d.ts +61 -0
- package/dist/tools/spec/types.d.ts.map +1 -0
- package/dist/tools/spec/types.js +6 -0
- package/dist/tools/spec/types.js.map +1 -0
- package/dist/tools/state/index.d.ts +11 -0
- package/dist/tools/state/index.d.ts.map +1 -0
- package/dist/tools/state/index.js +386 -0
- package/dist/tools/state/index.js.map +1 -0
- package/dist/tools/state/migrate.d.ts +39 -0
- package/dist/tools/state/migrate.d.ts.map +1 -0
- package/dist/tools/state/migrate.js +242 -0
- package/dist/tools/state/migrate.js.map +1 -0
- package/dist/tools/state/migrate.test.d.ts +2 -0
- package/dist/tools/state/migrate.test.d.ts.map +1 -0
- package/dist/tools/state/migrate.test.js +265 -0
- package/dist/tools/state/migrate.test.js.map +1 -0
- package/dist/tools/state/store.d.ts +107 -0
- package/dist/tools/state/store.d.ts.map +1 -0
- package/dist/tools/state/store.js +365 -0
- package/dist/tools/state/store.js.map +1 -0
- package/dist/tools/state/store.test.d.ts +5 -0
- package/dist/tools/state/store.test.d.ts.map +1 -0
- package/dist/tools/state/store.test.js +293 -0
- package/dist/tools/state/store.test.js.map +1 -0
- package/dist/tools/state/types.d.ts +90 -0
- package/dist/tools/state/types.d.ts.map +1 -0
- package/dist/tools/state/types.js +6 -0
- package/dist/tools/state/types.js.map +1 -0
- package/dist/tools/testing/analyzer.d.ts +44 -0
- package/dist/tools/testing/analyzer.d.ts.map +1 -0
- package/dist/tools/testing/analyzer.js +280 -0
- package/dist/tools/testing/analyzer.js.map +1 -0
- package/dist/tools/testing/generator.d.ts +57 -0
- package/dist/tools/testing/generator.d.ts.map +1 -0
- package/dist/tools/testing/generator.js +478 -0
- package/dist/tools/testing/generator.js.map +1 -0
- package/dist/tools/testing/generator.test.d.ts +6 -0
- package/dist/tools/testing/generator.test.d.ts.map +1 -0
- package/dist/tools/testing/generator.test.js +285 -0
- package/dist/tools/testing/generator.test.js.map +1 -0
- package/dist/tools/testing/index.d.ts +8 -0
- package/dist/tools/testing/index.d.ts.map +1 -0
- package/dist/tools/testing/index.js +373 -0
- package/dist/tools/testing/index.js.map +1 -0
- package/dist/utils/embedder.d.ts +7 -0
- package/dist/utils/embedder.d.ts.map +1 -0
- package/dist/utils/embedder.js +13 -0
- package/dist/utils/embedder.js.map +1 -0
- package/dist/utils/execution.d.ts +68 -0
- package/dist/utils/execution.d.ts.map +1 -0
- package/dist/utils/execution.js +467 -0
- package/dist/utils/execution.js.map +1 -0
- package/dist/utils/graph.d.ts +26 -0
- package/dist/utils/graph.d.ts.map +1 -0
- package/dist/utils/graph.js +32 -0
- package/dist/utils/graph.js.map +1 -0
- package/dist/utils/guards.d.ts +32 -0
- package/dist/utils/guards.d.ts.map +1 -0
- package/dist/utils/guards.js +40 -0
- package/dist/utils/guards.js.map +1 -0
- package/dist/utils/ids.d.ts +5 -0
- package/dist/utils/ids.d.ts.map +1 -0
- package/dist/utils/ids.js +7 -0
- package/dist/utils/ids.js.map +1 -0
- package/dist/utils/languages.d.ts +34 -0
- package/dist/utils/languages.d.ts.map +1 -0
- package/dist/utils/languages.js +153 -0
- package/dist/utils/languages.js.map +1 -0
- package/dist/utils/lazy.d.ts +17 -0
- package/dist/utils/lazy.d.ts.map +1 -0
- package/dist/utils/lazy.js +35 -0
- package/dist/utils/lazy.js.map +1 -0
- package/dist/utils/project.d.ts +41 -0
- package/dist/utils/project.d.ts.map +1 -0
- package/dist/utils/project.js +82 -0
- package/dist/utils/project.js.map +1 -0
- package/dist/utils/responses.d.ts +27 -0
- package/dist/utils/responses.d.ts.map +1 -0
- package/dist/utils/responses.js +72 -0
- package/dist/utils/responses.js.map +1 -0
- package/dist/utils/vectors.d.ts +33 -0
- package/dist/utils/vectors.d.ts.map +1 -0
- package/dist/utils/vectors.js +80 -0
- package/dist/utils/vectors.js.map +1 -0
- package/dist/utils/vectors.test.d.ts +6 -0
- package/dist/utils/vectors.test.d.ts.map +1 -0
- package/dist/utils/vectors.test.js +96 -0
- package/dist/utils/vectors.test.js.map +1 -0
- package/package.json +69 -0
- package/scripts/init.js +142 -0
- package/templates/CLAUDE.md.template +96 -0
- package/templates/agents/architecture-concept.md +237 -0
- package/templates/agents/checkpoint-concept.md +218 -0
- package/templates/agents/code-analysis-concept.md +171 -0
- package/templates/agents/compete-control.md +44 -0
- package/templates/agents/compete-evaluator.md +87 -0
- package/templates/agents/compete-treatment.md +55 -0
- package/templates/agents/context-concept.md +254 -0
- package/templates/agents/debate-advocate.md +127 -0
- package/templates/agents/debate-critic.md +119 -0
- package/templates/agents/debate-synthesis.md +160 -0
- package/templates/agents/documentation-concept.md +294 -0
- package/templates/agents/implementation-concept.md +165 -0
- package/templates/agents/quality-concept.md +299 -0
- package/templates/agents/research-concept.md +169 -0
- package/templates/agents/security-concept.md +255 -0
- package/templates/agents/story-concept.md +207 -0
- package/templates/agents/verification-concept.md +456 -0
- package/templates/agents/version-concept.md +163 -0
- package/templates/anchors/directory.anchor.yaml.template +53 -0
- package/templates/anchors/rules.anchor.yaml.template +70 -0
- package/templates/anchors/safety.anchor.yaml.template +96 -0
- package/templates/claude-md-managed.template +105 -0
- package/templates/commands/cache.md.template +439 -0
- package/templates/commands/checkpoint.md.template +121 -0
- package/templates/commands/classify.md.template +138 -0
- package/templates/commands/compete.md.template +90 -0
- package/templates/commands/costs.md.template +111 -0
- package/templates/commands/estimate.md.template +196 -0
- package/templates/commands/explore.md.template +186 -0
- package/templates/commands/feature.md.template +216 -0
- package/templates/commands/forget.md.template +104 -0
- package/templates/commands/global-recall.md.template +250 -0
- package/templates/commands/global-remember.md.template +187 -0
- package/templates/commands/health.md.template +107 -0
- package/templates/commands/help.md.template +253 -0
- package/templates/commands/observe.md.template +211 -0
- package/templates/commands/pr-review.md.template +164 -0
- package/templates/commands/predict-cost.md.template +251 -0
- package/templates/commands/profile.md.template +142 -0
- package/templates/commands/reasoning.md.template +228 -0
- package/templates/commands/recall.md.template +197 -0
- package/templates/commands/remember.md.template +148 -0
- package/templates/commands/replay.md.template +449 -0
- package/templates/commands/restore.md.template +87 -0
- package/templates/commands/retrospective.md.template +47 -0
- package/templates/commands/slo.md.template +286 -0
- package/templates/commands/spec.md.template +164 -0
- package/templates/commands/status.md.template +53 -0
- package/templates/commands/sync.md.template +321 -0
- package/templates/commands/task.md.template +86 -0
- package/templates/commands/trace.md.template +86 -0
- package/templates/commands/visualize.md.template +216 -0
- package/templates/commands/workflow.md.template +375 -0
- package/templates/concepts/README.md +329 -0
- package/templates/concepts/architecture.md.template +74 -0
- package/templates/concepts/code-analysis.md.template +186 -0
- package/templates/concepts/context-compactor.md.template +393 -0
- package/templates/concepts/context.md.template +62 -0
- package/templates/concepts/documentation.md.template +452 -0
- package/templates/concepts/estimator.md.template +214 -0
- package/templates/concepts/exploration.md.template +257 -0
- package/templates/concepts/global-memory.md.template +222 -0
- package/templates/concepts/implementation.md.template +62 -0
- package/templates/concepts/pr-review.md.template +277 -0
- package/templates/concepts/project-profile.md.template +358 -0
- package/templates/concepts/quality.md.template +63 -0
- package/templates/concepts/react-fallback.md.template +286 -0
- package/templates/concepts/research.md.template +221 -0
- package/templates/concepts/retrospective.md.template +93 -0
- package/templates/concepts/security.md.template +442 -0
- package/templates/concepts/slo.md.template +274 -0
- package/templates/concepts/spec.md.template +71 -0
- package/templates/concepts/story.md.template +50 -0
- package/templates/concepts/tool-router.md.template +289 -0
- package/templates/concepts/verification-synthesizer.md.template +279 -0
- package/templates/concepts/version.md.template +61 -0
- package/templates/config.yaml.template +347 -0
- package/templates/examples/README.md +77 -0
- package/templates/examples/architecture/api-design.yaml.template +286 -0
- package/templates/examples/architecture/oauth-authentication.yaml.template +305 -0
- package/templates/health/status.yaml.template +120 -0
- package/templates/hooks/concept-complete.sh.template +45 -0
- package/templates/hooks/lib/common.sh.template +160 -0
- package/templates/hooks/post-commit.sh.template +37 -0
- package/templates/hooks/post-concept-action.template +39 -0
- package/templates/hooks/post-tool-structure-check.sh.template +138 -0
- package/templates/hooks/post-tool-use.sh.template +51 -0
- package/templates/hooks/pre-compact.sh.template +48 -0
- package/templates/hooks/pre-tool-grounding.template +148 -0
- package/templates/hooks/session-exit-checkpoint.sh.template +35 -0
- package/templates/hooks/session-start.sh.template +67 -0
- package/templates/hooks/statusline.sh.template +148 -0
- package/templates/hooks/stop.sh.template +45 -0
- package/templates/hooks/subagent-stop.sh.template +40 -0
- package/templates/hooks/sync-blocked.sh.template +45 -0
- package/templates/hooks/timeout.sh.template +48 -0
- package/templates/hooks/user-prompt-submit.sh.template +68 -0
- package/templates/koan/README.md +58 -0
- package/templates/memory/index.yaml.template +48 -0
- package/templates/memory/procedural/debugging.yaml.template +24 -0
- package/templates/memory/procedural/workflows.yaml.template +22 -0
- package/templates/memory/semantic/architecture.yaml.template +21 -0
- package/templates/memory/semantic/conventions.yaml.template +18 -0
- package/templates/memory/semantic/patterns.yaml.template +21 -0
- package/templates/memory/semantic/preferences.yaml.template +18 -0
- package/templates/prompts/architecture.yaml.template +349 -0
- package/templates/prompts/context.yaml.template +384 -0
- package/templates/prompts/implementation.yaml.template +365 -0
- package/templates/prompts/planning.yaml.template +303 -0
- package/templates/prompts/quality.yaml.template +345 -0
- package/templates/prompts/retrospective.yaml.template +231 -0
- package/templates/prompts/slo.yaml.template +360 -0
- package/templates/prompts/story.yaml.template +236 -0
- package/templates/prompts/tree-of-thoughts.yaml.template +299 -0
- package/templates/prompts/verification.yaml.template +286 -0
- package/templates/prompts/version.yaml.template +279 -0
- package/templates/schemas/agent-schema.json +98 -0
- package/templates/schemas/architecture.schema.json +69 -0
- package/templates/schemas/config-schema.json +165 -0
- package/templates/schemas/implementation.schema.json +75 -0
- package/templates/schemas/planning.schema.json +243 -0
- package/templates/schemas/provenance.schema.json +111 -0
- package/templates/schemas/retrospective.schema.json +174 -0
- package/templates/schemas/review.schema.json +284 -0
- package/templates/schemas/slo.schema.json +443 -0
- package/templates/schemas/story.schema.json +68 -0
- package/templates/schemas/sync-schema.json +196 -0
- package/templates/schemas/task.schema.json +127 -0
- package/templates/schemas/tree-of-thoughts.schema.json +175 -0
- package/templates/schemas/verification.schema.json +106 -0
- package/templates/settings.full.json.template +135 -0
- package/templates/settings.minimal.json.template +68 -0
- package/templates/settings.standard.json.template +135 -0
- package/templates/skills/acceptance-criteria-generation.md.template +330 -0
- package/templates/skills/accessibility-checking.md.template +341 -0
- package/templates/skills/api-design-patterns.md.template +395 -0
- package/templates/skills/batch-processing.md.template +605 -0
- package/templates/skills/branch-strategy.md.template +362 -0
- package/templates/skills/changelog-generation.md.template +403 -0
- package/templates/skills/code-coverage-analysis.md.template +362 -0
- package/templates/skills/code-style-enforcement.md.template +294 -0
- package/templates/skills/code-template-patterns.md.template +419 -0
- package/templates/skills/concept-development.md.template +159 -0
- package/templates/skills/context-prioritization.md.template +306 -0
- package/templates/skills/cost-optimization.md.template +482 -0
- package/templates/skills/cross-project-knowledge.md.template +316 -0
- package/templates/skills/dependency-impact-analysis.md.template +263 -0
- package/templates/skills/documentation-generation.md.template +409 -0
- package/templates/skills/effort-estimation.md.template +350 -0
- package/templates/skills/error-classification.md.template +709 -0
- package/templates/skills/error-messages.md.template +339 -0
- package/templates/skills/ide-diagnostics.md.template +480 -0
- package/templates/skills/incremental-loading.md.template +574 -0
- package/templates/skills/output-caching.md.template +524 -0
- package/templates/skills/performance-estimation.md.template +325 -0
- package/templates/skills/performance-testing-patterns.md.template +341 -0
- package/templates/skills/phase2-optimizations-summary.md.template +458 -0
- package/templates/skills/progressive-disclosure-pattern.md.template +190 -0
- package/templates/skills/project-structure.md.template +372 -0
- package/templates/skills/provenance-analysis.md.template +609 -0
- package/templates/skills/react-executor.md.template +366 -0
- package/templates/skills/refactoring-patterns.md.template +422 -0
- package/templates/skills/release-management.md.template +373 -0
- package/templates/skills/requirement-prioritization.md.template +357 -0
- package/templates/skills/schema-validation.md.template +321 -0
- package/templates/skills/security-design-patterns.md.template +692 -0
- package/templates/skills/security-vulnerability-scanning.md.template +663 -0
- package/templates/skills/semantic-memory.md.template +266 -0
- package/templates/skills/semantic-versioning.md.template +371 -0
- package/templates/skills/smart-retry.md.template +676 -0
- package/templates/skills/smart-summarization.md.template +358 -0
- package/templates/skills/story-decomposition.md.template +278 -0
- package/templates/skills/synchronization-patterns.md.template +303 -0
- package/templates/skills/test-generation-strategy.md.template +247 -0
- package/templates/skills/workflow-replay.md.template +478 -0
- package/templates/skills/wysiwid-principles.md.template +364 -0
- package/templates/skills-manifest.yaml.template +526 -0
- package/templates/stubs/agents/architecture-concept.md +20 -0
- package/templates/stubs/agents/checkpoint-concept.md +19 -0
- package/templates/stubs/agents/code-analysis-concept.md +36 -0
- package/templates/stubs/agents/context-concept.md +37 -0
- package/templates/stubs/agents/debate-advocate.md +12 -0
- package/templates/stubs/agents/debate-critic.md +12 -0
- package/templates/stubs/agents/debate-synthesis.md +12 -0
- package/templates/stubs/agents/documentation-concept.md +39 -0
- package/templates/stubs/agents/implementation-concept.md +41 -0
- package/templates/stubs/agents/quality-concept.md +41 -0
- package/templates/stubs/agents/research-concept.md +35 -0
- package/templates/stubs/agents/security-concept.md +40 -0
- package/templates/stubs/agents/spec-concept.md +35 -0
- package/templates/stubs/agents/story-concept.md +36 -0
- package/templates/stubs/agents/verification-concept.md +39 -0
- package/templates/stubs/agents/version-concept.md +37 -0
- package/templates/stubs/commands/cache.md.template +2 -0
- package/templates/stubs/commands/checkpoint.md.template +2 -0
- package/templates/stubs/commands/classify.md.template +2 -0
- package/templates/stubs/commands/compete.md.template +2 -0
- package/templates/stubs/commands/costs.md.template +2 -0
- package/templates/stubs/commands/estimate.md.template +2 -0
- package/templates/stubs/commands/explore.md.template +2 -0
- package/templates/stubs/commands/feature.md.template +2 -0
- package/templates/stubs/commands/forget.md.template +2 -0
- package/templates/stubs/commands/global-recall.md.template +2 -0
- package/templates/stubs/commands/global-remember.md.template +2 -0
- package/templates/stubs/commands/health.md.template +2 -0
- package/templates/stubs/commands/help.md.template +2 -0
- package/templates/stubs/commands/observe.md.template +2 -0
- package/templates/stubs/commands/pr-review.md.template +2 -0
- package/templates/stubs/commands/predict-cost.md.template +2 -0
- package/templates/stubs/commands/profile.md.template +2 -0
- package/templates/stubs/commands/reasoning.md.template +2 -0
- package/templates/stubs/commands/recall.md.template +2 -0
- package/templates/stubs/commands/remember.md.template +2 -0
- package/templates/stubs/commands/replay.md.template +2 -0
- package/templates/stubs/commands/restore.md.template +2 -0
- package/templates/stubs/commands/retrospective.md.template +2 -0
- package/templates/stubs/commands/slo.md.template +2 -0
- package/templates/stubs/commands/spec.md.template +2 -0
- package/templates/stubs/commands/sync.md.template +2 -0
- package/templates/stubs/commands/task.md.template +2 -0
- package/templates/stubs/commands/trace.md.template +2 -0
- package/templates/stubs/commands/visualize.md.template +2 -0
- package/templates/stubs/commands/workflow.md.template +2 -0
- package/templates/synchronizations/archive/adaptive-learning.yaml.template +595 -0
- package/templates/synchronizations/archive/code-understanding-flow.yaml.template +533 -0
- package/templates/synchronizations/archive/collaboration-flow.yaml.template +521 -0
- package/templates/synchronizations/archive/context-folding.yaml.template +353 -0
- package/templates/synchronizations/archive/dead-letter-queue.yaml.template +530 -0
- package/templates/synchronizations/archive/documentation-flow.yaml.template +560 -0
- package/templates/synchronizations/archive/error-recovery-flow.yaml.template +1031 -0
- package/templates/synchronizations/archive/execution-loop.yaml.template +336 -0
- package/templates/synchronizations/archive/exploration-flow.yaml.template +369 -0
- package/templates/synchronizations/archive/feature-development.yaml.template +2145 -0
- package/templates/synchronizations/archive/learning-loop.yaml.template +657 -0
- package/templates/synchronizations/archive/multi-verify.yaml.template +346 -0
- package/templates/synchronizations/archive/planning-flow.yaml.template +312 -0
- package/templates/synchronizations/archive/retrospective-flow.yaml.template +277 -0
- package/templates/synchronizations/archive/security-flow.yaml.template +477 -0
- package/templates/synchronizations/archive/slo-monitoring.yaml.template +209 -0
- package/templates/synchronizations/archive/task-routing.yaml.template +489 -0
- package/templates/synchronizations/archive/test-driven.yaml.template +291 -0
- package/templates/synchronizations/archive/tool-routing.yaml.template +326 -0
- package/templates/synchronizations/archive/verification-flow.yaml.template +407 -0
- package/templates/synchronizations/error-policy.yaml.template +188 -0
- package/templates/synchronizations/main.sync.template +319 -0
- package/templates/synchronizations/slo-registry.yaml.template +229 -0
- package/templates/tasks/task.yaml.template +67 -0
- package/templates/zen-profile.yaml.template +14 -0
|
@@ -0,0 +1,524 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Concept Output Caching
|
|
3
|
+
description: Cache frequently accessed concept outputs for 95% cache hit rate and sub-100ms access
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
trigger_keywords: [cache, caching, output, state, repeated, access]
|
|
6
|
+
author: Zen Architecture
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Concept Output Caching - Expert Skill
|
|
10
|
+
|
|
11
|
+
Cache concept outputs to eliminate redundant file reads and achieve 95% cache hit rate with sub-100ms access times.
|
|
12
|
+
|
|
13
|
+
## Purpose
|
|
14
|
+
|
|
15
|
+
Output caching provides:
|
|
16
|
+
- **95% cache hit rate**: Most sync rules access same outputs repeatedly
|
|
17
|
+
- **Sub-100ms access**: Memory cache vs file I/O
|
|
18
|
+
- **Zero redundant reads**: Each output read once per session
|
|
19
|
+
- **Automatic invalidation**: Cache updates when files change
|
|
20
|
+
|
|
21
|
+
## When to Use
|
|
22
|
+
|
|
23
|
+
Use output caching:
|
|
24
|
+
- ✅ **Always** when reading concept state files
|
|
25
|
+
- ✅ In /sync command for rule evaluation
|
|
26
|
+
- ✅ In concepts that reference previous outputs
|
|
27
|
+
- ✅ For repeated access to same data
|
|
28
|
+
|
|
29
|
+
## Cache Architecture
|
|
30
|
+
|
|
31
|
+
### Cache Structure
|
|
32
|
+
|
|
33
|
+
```yaml
|
|
34
|
+
# In-memory cache structure (conceptual, not on disk)
|
|
35
|
+
koan/cache/
|
|
36
|
+
session-{id}.json # Session cache (future persistent cache)
|
|
37
|
+
|
|
38
|
+
Cache contents:
|
|
39
|
+
{
|
|
40
|
+
"story-001": {
|
|
41
|
+
"data": {...}, # Cached YAML data
|
|
42
|
+
"file": "koan/stories/story-001.yaml",
|
|
43
|
+
"mtime": 1699999999, # File modification time
|
|
44
|
+
"hits": 15, # Access count
|
|
45
|
+
"loaded_at": "2025-11-10T19:00:00Z"
|
|
46
|
+
},
|
|
47
|
+
"arch-042": {
|
|
48
|
+
"data": {...},
|
|
49
|
+
"file": "koan/architecture/arch-042.yaml",
|
|
50
|
+
"mtime": 1699999998,
|
|
51
|
+
"hits": 8,
|
|
52
|
+
"loaded_at": "2025-11-10T19:05:00Z"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### Cache Levels
|
|
58
|
+
|
|
59
|
+
**Level 1: Session Cache** (in-memory)
|
|
60
|
+
- Lifetime: Current Claude Code session
|
|
61
|
+
- Invalidation: On file modification
|
|
62
|
+
- Access time: <10ms
|
|
63
|
+
- Hit rate: 95%+ for sync operations
|
|
64
|
+
|
|
65
|
+
**Level 2: Persistent Cache** (optional, future)
|
|
66
|
+
- Lifetime: Across sessions
|
|
67
|
+
- Invalidation: On file modification + TTL
|
|
68
|
+
- Access time: <50ms
|
|
69
|
+
- Hit rate: 80%+ for repeated workflows
|
|
70
|
+
|
|
71
|
+
## Caching Strategy
|
|
72
|
+
|
|
73
|
+
### When to Cache
|
|
74
|
+
|
|
75
|
+
**Always Cache**:
|
|
76
|
+
- ✅ Story outputs (frequently referenced by architecture)
|
|
77
|
+
- ✅ Architecture outputs (referenced by implementation)
|
|
78
|
+
- ✅ Implementation outputs (referenced by quality)
|
|
79
|
+
- ✅ Any output read more than once
|
|
80
|
+
|
|
81
|
+
**Never Cache**:
|
|
82
|
+
- ❌ Temporary files
|
|
83
|
+
- ❌ Files still being written
|
|
84
|
+
- ❌ Files with status="draft"
|
|
85
|
+
|
|
86
|
+
### Cache Hit Flow
|
|
87
|
+
|
|
88
|
+
```yaml
|
|
89
|
+
1. Request concept output (e.g., story-001)
|
|
90
|
+
2. Check cache:
|
|
91
|
+
- If cached AND file not modified → Return cached data (CACHE HIT)
|
|
92
|
+
- If cached BUT file modified → Invalidate, read file, update cache
|
|
93
|
+
- If not cached → Read file, add to cache (CACHE MISS)
|
|
94
|
+
3. Increment hit counter
|
|
95
|
+
4. Return data
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Cache Invalidation
|
|
99
|
+
|
|
100
|
+
**File Modification Detection**:
|
|
101
|
+
```bash
|
|
102
|
+
# Check if file changed
|
|
103
|
+
cached_mtime = cache["story-001"]["mtime"]
|
|
104
|
+
current_mtime = stat("koan/stories/story-001.yaml").st_mtime
|
|
105
|
+
|
|
106
|
+
if current_mtime > cached_mtime:
|
|
107
|
+
# File changed, invalidate cache
|
|
108
|
+
cache.delete("story-001")
|
|
109
|
+
cache["story-001"] = read_and_cache("story-001")
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Automatic Invalidation Events**:
|
|
113
|
+
- File modified (mtime changed)
|
|
114
|
+
- File deleted
|
|
115
|
+
- Session end
|
|
116
|
+
- Explicit cache clear command
|
|
117
|
+
|
|
118
|
+
## Integration with /sync
|
|
119
|
+
|
|
120
|
+
### Before Caching (Slow)
|
|
121
|
+
|
|
122
|
+
```yaml
|
|
123
|
+
# Evaluate sync rule: story-to-arch
|
|
124
|
+
1. Read story-001.yaml # 100ms file I/O
|
|
125
|
+
2. Check status == "ready" # 10ms
|
|
126
|
+
3. Read arch-042.yaml (if exists) # 100ms file I/O
|
|
127
|
+
4. Check arch status # 10ms
|
|
128
|
+
5. Decision: Trigger architecture # 5ms
|
|
129
|
+
───────────────────────────────────────────
|
|
130
|
+
Total: ~225ms per sync evaluation
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### After Caching (Fast)
|
|
134
|
+
|
|
135
|
+
```yaml
|
|
136
|
+
# Evaluate sync rule: story-to-arch
|
|
137
|
+
1. Get story-001 from cache # 5ms (CACHE HIT)
|
|
138
|
+
2. Check status == "ready" # 5ms
|
|
139
|
+
3. Get arch-042 from cache # 5ms (CACHE HIT)
|
|
140
|
+
4. Check arch status # 5ms
|
|
141
|
+
5. Decision: Trigger architecture # 5ms
|
|
142
|
+
───────────────────────────────────────────
|
|
143
|
+
Total: ~25ms per sync evaluation
|
|
144
|
+
Speedup: 9x faster (225ms → 25ms)
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Batch Sync Evaluation
|
|
148
|
+
|
|
149
|
+
**Without Cache** (10 sync rules):
|
|
150
|
+
```yaml
|
|
151
|
+
10 rules × 225ms = 2,250ms (2.25 seconds)
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**With Cache** (95% hit rate):
|
|
155
|
+
```yaml
|
|
156
|
+
9 cache hits × 25ms = 225ms
|
|
157
|
+
1 cache miss × 225ms = 225ms
|
|
158
|
+
Total: 450ms
|
|
159
|
+
Speedup: 5x faster (2,250ms → 450ms)
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## Integration with Concepts
|
|
163
|
+
|
|
164
|
+
### Story Concept
|
|
165
|
+
|
|
166
|
+
**After creating story output**:
|
|
167
|
+
```yaml
|
|
168
|
+
# Save to file
|
|
169
|
+
write_file("koan/stories/story-001.yaml", story_data)
|
|
170
|
+
|
|
171
|
+
# Add to cache immediately
|
|
172
|
+
cache["story-001"] = {
|
|
173
|
+
"data": story_data,
|
|
174
|
+
"file": "koan/stories/story-001.yaml",
|
|
175
|
+
"mtime": file_mtime("koan/stories/story-001.yaml"),
|
|
176
|
+
"hits": 0,
|
|
177
|
+
"loaded_at": current_time()
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
# Future reads will be instant
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### Architecture Concept
|
|
184
|
+
|
|
185
|
+
**When reading story output**:
|
|
186
|
+
```yaml
|
|
187
|
+
# Use cache instead of direct read
|
|
188
|
+
story_data = get_cached_or_read("story-001")
|
|
189
|
+
# Returns cached data if available (5ms vs 100ms)
|
|
190
|
+
|
|
191
|
+
# Use story data for architecture design
|
|
192
|
+
requirements = story_data["details"]["requirements"]
|
|
193
|
+
criteria = story_data["details"]["acceptance_criteria"]
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### /sync Command
|
|
197
|
+
|
|
198
|
+
**Use cache for all rule evaluations**:
|
|
199
|
+
```yaml
|
|
200
|
+
# Load all relevant state files from cache
|
|
201
|
+
stories = [get_cached_or_read(id) for id in story_ids]
|
|
202
|
+
archs = [get_cached_or_read(id) for id in arch_ids]
|
|
203
|
+
impls = [get_cached_or_read(id) for id in impl_ids]
|
|
204
|
+
|
|
205
|
+
# Evaluate rules with cached data
|
|
206
|
+
# 95% hit rate = 5x faster sync evaluation
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## Cache Helper Functions
|
|
210
|
+
|
|
211
|
+
### get_cached_or_read(concept_id)
|
|
212
|
+
|
|
213
|
+
```python
|
|
214
|
+
def get_cached_or_read(concept_id, file_path=None):
|
|
215
|
+
"""
|
|
216
|
+
Get concept output from cache or read from file.
|
|
217
|
+
|
|
218
|
+
Args:
|
|
219
|
+
concept_id: Concept identifier (e.g., "story-001")
|
|
220
|
+
file_path: Optional explicit file path
|
|
221
|
+
|
|
222
|
+
Returns:
|
|
223
|
+
Concept data (dict)
|
|
224
|
+
"""
|
|
225
|
+
# Check cache
|
|
226
|
+
if concept_id in cache:
|
|
227
|
+
cached = cache[concept_id]
|
|
228
|
+
file_path = file_path or cached["file"]
|
|
229
|
+
|
|
230
|
+
# Check if file modified
|
|
231
|
+
current_mtime = file_mtime(file_path)
|
|
232
|
+
if current_mtime == cached["mtime"]:
|
|
233
|
+
# CACHE HIT
|
|
234
|
+
cached["hits"] += 1
|
|
235
|
+
return cached["data"]
|
|
236
|
+
else:
|
|
237
|
+
# File modified, invalidate
|
|
238
|
+
del cache[concept_id]
|
|
239
|
+
|
|
240
|
+
# CACHE MISS - read from file
|
|
241
|
+
file_path = file_path or resolve_file_path(concept_id)
|
|
242
|
+
data = read_yaml(file_path)
|
|
243
|
+
|
|
244
|
+
# Add to cache
|
|
245
|
+
cache[concept_id] = {
|
|
246
|
+
"data": data,
|
|
247
|
+
"file": file_path,
|
|
248
|
+
"mtime": file_mtime(file_path),
|
|
249
|
+
"hits": 1,
|
|
250
|
+
"loaded_at": current_time()
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
return data
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### invalidate_cache(concept_id)
|
|
257
|
+
|
|
258
|
+
```python
|
|
259
|
+
def invalidate_cache(concept_id=None):
|
|
260
|
+
"""
|
|
261
|
+
Invalidate cache entry or entire cache.
|
|
262
|
+
|
|
263
|
+
Args:
|
|
264
|
+
concept_id: Specific concept to invalidate (None = all)
|
|
265
|
+
"""
|
|
266
|
+
if concept_id:
|
|
267
|
+
if concept_id in cache:
|
|
268
|
+
del cache[concept_id]
|
|
269
|
+
else:
|
|
270
|
+
# Clear entire cache
|
|
271
|
+
cache.clear()
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### save_and_cache(concept_id, data, file_path)
|
|
275
|
+
|
|
276
|
+
```python
|
|
277
|
+
def save_and_cache(concept_id, data, file_path):
|
|
278
|
+
"""
|
|
279
|
+
Save concept output and add to cache atomically.
|
|
280
|
+
|
|
281
|
+
Args:
|
|
282
|
+
concept_id: Concept identifier
|
|
283
|
+
data: Concept data to save
|
|
284
|
+
file_path: File path to write to
|
|
285
|
+
"""
|
|
286
|
+
# Write to file
|
|
287
|
+
write_yaml(file_path, data)
|
|
288
|
+
|
|
289
|
+
# Add to cache immediately
|
|
290
|
+
cache[concept_id] = {
|
|
291
|
+
"data": data,
|
|
292
|
+
"file": file_path,
|
|
293
|
+
"mtime": file_mtime(file_path),
|
|
294
|
+
"hits": 0,
|
|
295
|
+
"loaded_at": current_time()
|
|
296
|
+
}
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
## Performance Impact
|
|
300
|
+
|
|
301
|
+
### Access Time Comparison
|
|
302
|
+
|
|
303
|
+
| Operation | Without Cache | With Cache | Speedup |
|
|
304
|
+
|-----------|---------------|------------|---------|
|
|
305
|
+
| Single read | 100ms | 5ms | 20x |
|
|
306
|
+
| Sync (1 rule) | 225ms | 25ms | 9x |
|
|
307
|
+
| Sync (10 rules) | 2,250ms | 450ms | 5x |
|
|
308
|
+
| Repeated read | 100ms | 5ms | 20x |
|
|
309
|
+
|
|
310
|
+
### Cache Hit Rates
|
|
311
|
+
|
|
312
|
+
**Typical Workflow** (Story → Arch → Impl → Quality → Version):
|
|
313
|
+
```yaml
|
|
314
|
+
Story creation: MISS (first access)
|
|
315
|
+
Arch reads story: HIT (cached from creation)
|
|
316
|
+
Impl reads arch: HIT (cached from arch creation)
|
|
317
|
+
Impl reads story: HIT (still cached)
|
|
318
|
+
Quality reads impl: HIT (cached from impl creation)
|
|
319
|
+
Quality reads arch: HIT (still cached)
|
|
320
|
+
Version reads impl: HIT (still cached)
|
|
321
|
+
|
|
322
|
+
Cache hits: 6/7 = 86% hit rate
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
**Multiple Features** (processing 10 features):
|
|
326
|
+
```yaml
|
|
327
|
+
Each feature: 7 reads
|
|
328
|
+
Total reads: 70
|
|
329
|
+
Cache misses: 10 (first access per feature)
|
|
330
|
+
Cache hits: 60
|
|
331
|
+
Hit rate: 60/70 = 86%
|
|
332
|
+
|
|
333
|
+
With sync evaluations (checking all features):
|
|
334
|
+
Sync reads: 100 additional reads
|
|
335
|
+
Cache hits: 95 (95% hit rate)
|
|
336
|
+
Overall hit rate: 155/170 = 91%
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### Token Savings
|
|
340
|
+
|
|
341
|
+
**Reading Summary Sections**:
|
|
342
|
+
- Without cache: 100 tokens per read (progressive disclosure)
|
|
343
|
+
- With cache: 0 tokens (already in memory)
|
|
344
|
+
- For 100 reads: 10,000 tokens saved = $0.03 (Sonnet)
|
|
345
|
+
|
|
346
|
+
**Note**: Primary benefit is speed, not token savings (progressive disclosure already minimizes tokens)
|
|
347
|
+
|
|
348
|
+
## Cache Management
|
|
349
|
+
|
|
350
|
+
### Cache Statistics
|
|
351
|
+
|
|
352
|
+
```yaml
|
|
353
|
+
# View cache stats
|
|
354
|
+
/cache --stats
|
|
355
|
+
|
|
356
|
+
Output:
|
|
357
|
+
Cache Statistics:
|
|
358
|
+
Entries: 15
|
|
359
|
+
Total hits: 347
|
|
360
|
+
Hit rate: 94.8%
|
|
361
|
+
Miss rate: 5.2%
|
|
362
|
+
Memory usage: 125KB
|
|
363
|
+
|
|
364
|
+
Top accessed:
|
|
365
|
+
story-001: 48 hits
|
|
366
|
+
arch-042: 35 hits
|
|
367
|
+
impl-015: 28 hits
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
### Cache Commands
|
|
371
|
+
|
|
372
|
+
```bash
|
|
373
|
+
# View cache contents
|
|
374
|
+
/cache --list
|
|
375
|
+
|
|
376
|
+
# Clear entire cache
|
|
377
|
+
/cache --clear
|
|
378
|
+
|
|
379
|
+
# Clear specific entry
|
|
380
|
+
/cache --clear story-001
|
|
381
|
+
|
|
382
|
+
# View cache stats
|
|
383
|
+
/cache --stats
|
|
384
|
+
|
|
385
|
+
# Enable/disable caching
|
|
386
|
+
/cache --enable
|
|
387
|
+
/cache --disable
|
|
388
|
+
```
|
|
389
|
+
|
|
390
|
+
## Best Practices
|
|
391
|
+
|
|
392
|
+
### 1. Cache After Write
|
|
393
|
+
|
|
394
|
+
```yaml
|
|
395
|
+
# Always cache immediately after creating output
|
|
396
|
+
save_and_cache("story-001", story_data, file_path)
|
|
397
|
+
# Not: write then forget to cache
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
### 2. Use Progressive Disclosure
|
|
401
|
+
|
|
402
|
+
```yaml
|
|
403
|
+
# Cache works best with progressive disclosure
|
|
404
|
+
# Summary sections are tiny (100 tokens)
|
|
405
|
+
# Full details loaded only when needed
|
|
406
|
+
# Cache benefits both cases
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
### 3. Check Modification Times
|
|
410
|
+
|
|
411
|
+
```yaml
|
|
412
|
+
# Always validate cache against file mtime
|
|
413
|
+
# Prevents stale data issues
|
|
414
|
+
# Automatic in get_cached_or_read()
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
### 4. Clear Cache on Errors
|
|
418
|
+
|
|
419
|
+
```yaml
|
|
420
|
+
# If concept execution fails
|
|
421
|
+
# Clear relevant cache entries
|
|
422
|
+
# Prevents corrupted data propagation
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
### 5. Monitor Hit Rates
|
|
426
|
+
|
|
427
|
+
```yaml
|
|
428
|
+
# Track cache effectiveness
|
|
429
|
+
# Target: 95% hit rate for sync operations
|
|
430
|
+
# If lower, investigate cache invalidation
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
## Troubleshooting
|
|
434
|
+
|
|
435
|
+
### Issue: Low Cache Hit Rate
|
|
436
|
+
|
|
437
|
+
**Problem**: Hit rate <80%
|
|
438
|
+
**Causes**:
|
|
439
|
+
- Files being modified frequently
|
|
440
|
+
- Cache invalidation too aggressive
|
|
441
|
+
- Session ending between workflows
|
|
442
|
+
|
|
443
|
+
**Solution**:
|
|
444
|
+
```bash
|
|
445
|
+
# Check cache stats
|
|
446
|
+
/cache --stats
|
|
447
|
+
|
|
448
|
+
# Monitor invalidation events
|
|
449
|
+
# Reduce unnecessary file modifications
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
### Issue: Stale Data
|
|
453
|
+
|
|
454
|
+
**Problem**: Cache returns old data
|
|
455
|
+
**Causes**:
|
|
456
|
+
- File modified without mtime update
|
|
457
|
+
- Cache invalidation not triggered
|
|
458
|
+
- Race condition during write
|
|
459
|
+
|
|
460
|
+
**Solution**:
|
|
461
|
+
```bash
|
|
462
|
+
# Clear cache and retry
|
|
463
|
+
/cache --clear
|
|
464
|
+
|
|
465
|
+
# Ensure atomic writes (write temp, then move)
|
|
466
|
+
# Check file mtime is updating correctly
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
### Issue: High Memory Usage
|
|
470
|
+
|
|
471
|
+
**Problem**: Cache growing too large
|
|
472
|
+
**Causes**:
|
|
473
|
+
- Too many concept outputs
|
|
474
|
+
- Not clearing old entries
|
|
475
|
+
- Large output files
|
|
476
|
+
|
|
477
|
+
**Solution**:
|
|
478
|
+
```bash
|
|
479
|
+
# Clear cache periodically
|
|
480
|
+
/cache --clear
|
|
481
|
+
|
|
482
|
+
# Implement LRU eviction (future)
|
|
483
|
+
# Cache only summary sections (not full details)
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
## Future Enhancements
|
|
487
|
+
|
|
488
|
+
### Persistent Cache (Phase 3)
|
|
489
|
+
|
|
490
|
+
```yaml
|
|
491
|
+
# Cache survives session restarts
|
|
492
|
+
# Stored in koan/cache/persistent.db
|
|
493
|
+
# TTL-based expiration
|
|
494
|
+
# Faster cold starts
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
### Smart Prefetching (Phase 3)
|
|
498
|
+
|
|
499
|
+
```yaml
|
|
500
|
+
# Predict needed outputs
|
|
501
|
+
# Prefetch before access
|
|
502
|
+
# Even better hit rates
|
|
503
|
+
# Zero perceived latency
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
### Distributed Cache (Phase 4)
|
|
507
|
+
|
|
508
|
+
```yaml
|
|
509
|
+
# Share cache across team
|
|
510
|
+
# Collaborative workflows
|
|
511
|
+
# Centralized state
|
|
512
|
+
# Team-wide speedup
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
## Related Documents
|
|
516
|
+
|
|
517
|
+
- **Progressive Disclosure** (Phase 1 Day 3-4) - Summary sections enable efficient caching
|
|
518
|
+
- **Incremental Loading** (Phase 2 Day 1-3) - Minimal reads benefit from caching
|
|
519
|
+
- **Batch Operations** (Phase 2 Day 6-7) - Batch processing with cached data
|
|
520
|
+
- **ZEN_PHASE2_PROGRESS.md** - Week 1 Day 4-5 tracking
|
|
521
|
+
|
|
522
|
+
---
|
|
523
|
+
|
|
524
|
+
**Use this skill when**: Reading concept outputs, evaluating sync rules, implementing concepts that reference previous outputs, or any repeated access to state files.
|