@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,709 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Error Classification
|
|
3
|
+
description: Classify errors to determine appropriate response strategy (retry, fail, escalate)
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
trigger_keywords: [error, exception, failure, crash, bug, issue, classify, retry, transient]
|
|
6
|
+
author: Zen Architecture
|
|
7
|
+
applies_to: [all-concepts]
|
|
8
|
+
priority: P0
|
|
9
|
+
impact: high
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Error Classification - Expert Skill
|
|
13
|
+
|
|
14
|
+
Classify errors to determine the appropriate response strategy and reduce time to resolution.
|
|
15
|
+
|
|
16
|
+
## Purpose
|
|
17
|
+
|
|
18
|
+
Error classification provides:
|
|
19
|
+
- **Right response**: Different errors need different handling
|
|
20
|
+
- **Faster resolution**: 50% faster error resolution with proper classification
|
|
21
|
+
- **Reduced noise**: Don't alert on transient issues
|
|
22
|
+
- **Better debugging**: Categorized errors are easier to diagnose
|
|
23
|
+
|
|
24
|
+
## When to Use
|
|
25
|
+
|
|
26
|
+
Use error classification when:
|
|
27
|
+
- ✅ Any operation fails or throws an exception
|
|
28
|
+
- ✅ Deciding whether to retry an operation
|
|
29
|
+
- ✅ Choosing escalation path
|
|
30
|
+
- ✅ Logging errors with appropriate severity
|
|
31
|
+
- ✅ Presenting errors to users
|
|
32
|
+
|
|
33
|
+
## Error Classification Taxonomy
|
|
34
|
+
|
|
35
|
+
### Level 1: Retryability
|
|
36
|
+
|
|
37
|
+
```yaml
|
|
38
|
+
retryability:
|
|
39
|
+
transient:
|
|
40
|
+
description: "Temporary failure, retry will likely succeed"
|
|
41
|
+
strategy: "Retry with backoff"
|
|
42
|
+
examples:
|
|
43
|
+
- "Network timeout"
|
|
44
|
+
- "Rate limit exceeded"
|
|
45
|
+
- "Service temporarily unavailable"
|
|
46
|
+
- "Connection reset"
|
|
47
|
+
- "Database lock contention"
|
|
48
|
+
|
|
49
|
+
permanent:
|
|
50
|
+
description: "Failure will persist, retry won't help"
|
|
51
|
+
strategy: "Fail fast, don't retry"
|
|
52
|
+
examples:
|
|
53
|
+
- "Invalid input"
|
|
54
|
+
- "Resource not found"
|
|
55
|
+
- "Permission denied"
|
|
56
|
+
- "Schema validation failed"
|
|
57
|
+
- "Business rule violation"
|
|
58
|
+
|
|
59
|
+
indeterminate:
|
|
60
|
+
description: "Unknown if retry will help"
|
|
61
|
+
strategy: "Limited retry, then fail"
|
|
62
|
+
examples:
|
|
63
|
+
- "Internal server error"
|
|
64
|
+
- "Unknown error"
|
|
65
|
+
- "Unexpected response"
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Level 2: Source
|
|
69
|
+
|
|
70
|
+
```yaml
|
|
71
|
+
source:
|
|
72
|
+
user_error:
|
|
73
|
+
description: "Error caused by user input or action"
|
|
74
|
+
response: "Return clear error message to user"
|
|
75
|
+
examples:
|
|
76
|
+
- "Invalid email format"
|
|
77
|
+
- "Password too short"
|
|
78
|
+
- "File type not supported"
|
|
79
|
+
- "Missing required field"
|
|
80
|
+
|
|
81
|
+
system_error:
|
|
82
|
+
description: "Error caused by system failure"
|
|
83
|
+
response: "Log, alert if severe, show generic message to user"
|
|
84
|
+
examples:
|
|
85
|
+
- "Database connection failed"
|
|
86
|
+
- "Out of memory"
|
|
87
|
+
- "Disk full"
|
|
88
|
+
- "Service crashed"
|
|
89
|
+
|
|
90
|
+
external_error:
|
|
91
|
+
description: "Error from external service"
|
|
92
|
+
response: "Retry if transient, fallback if available"
|
|
93
|
+
examples:
|
|
94
|
+
- "Third-party API down"
|
|
95
|
+
- "Payment gateway timeout"
|
|
96
|
+
- "Email service unavailable"
|
|
97
|
+
|
|
98
|
+
configuration_error:
|
|
99
|
+
description: "Error due to misconfiguration"
|
|
100
|
+
response: "Alert ops, cannot auto-recover"
|
|
101
|
+
examples:
|
|
102
|
+
- "Invalid database credentials"
|
|
103
|
+
- "Missing environment variable"
|
|
104
|
+
- "SSL certificate expired"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Level 3: Severity
|
|
108
|
+
|
|
109
|
+
```yaml
|
|
110
|
+
severity:
|
|
111
|
+
critical:
|
|
112
|
+
description: "System unusable, immediate action required"
|
|
113
|
+
response: "Alert on-call, stop affected workflows"
|
|
114
|
+
criteria:
|
|
115
|
+
- "Data corruption possible"
|
|
116
|
+
- "Security breach"
|
|
117
|
+
- "Complete service outage"
|
|
118
|
+
sla: "Respond in 5 minutes"
|
|
119
|
+
|
|
120
|
+
high:
|
|
121
|
+
description: "Major feature broken, urgent fix needed"
|
|
122
|
+
response: "Alert team, prioritize fix"
|
|
123
|
+
criteria:
|
|
124
|
+
- "Core functionality unavailable"
|
|
125
|
+
- "Affecting multiple users"
|
|
126
|
+
- "Revenue impact"
|
|
127
|
+
sla: "Respond in 30 minutes"
|
|
128
|
+
|
|
129
|
+
medium:
|
|
130
|
+
description: "Feature degraded, fix soon"
|
|
131
|
+
response: "Log, create ticket, fix in current sprint"
|
|
132
|
+
criteria:
|
|
133
|
+
- "Workaround available"
|
|
134
|
+
- "Limited user impact"
|
|
135
|
+
- "Non-critical feature"
|
|
136
|
+
sla: "Fix within 1-2 days"
|
|
137
|
+
|
|
138
|
+
low:
|
|
139
|
+
description: "Minor issue, fix when convenient"
|
|
140
|
+
response: "Log, backlog for later"
|
|
141
|
+
criteria:
|
|
142
|
+
- "Cosmetic issue"
|
|
143
|
+
- "Edge case"
|
|
144
|
+
- "Single user affected"
|
|
145
|
+
sla: "Fix when convenient"
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Level 4: Domain
|
|
149
|
+
|
|
150
|
+
```yaml
|
|
151
|
+
domain:
|
|
152
|
+
authentication:
|
|
153
|
+
errors:
|
|
154
|
+
- "Invalid credentials"
|
|
155
|
+
- "Session expired"
|
|
156
|
+
- "MFA required"
|
|
157
|
+
- "Account locked"
|
|
158
|
+
handling: "Clear auth state, prompt re-authentication"
|
|
159
|
+
|
|
160
|
+
authorization:
|
|
161
|
+
errors:
|
|
162
|
+
- "Permission denied"
|
|
163
|
+
- "Role not authorized"
|
|
164
|
+
- "Resource ownership mismatch"
|
|
165
|
+
handling: "Return 403, log access attempt"
|
|
166
|
+
|
|
167
|
+
validation:
|
|
168
|
+
errors:
|
|
169
|
+
- "Schema validation failed"
|
|
170
|
+
- "Business rule violated"
|
|
171
|
+
- "Constraint violation"
|
|
172
|
+
handling: "Return specific field errors"
|
|
173
|
+
|
|
174
|
+
resource:
|
|
175
|
+
errors:
|
|
176
|
+
- "Not found"
|
|
177
|
+
- "Already exists"
|
|
178
|
+
- "Conflict"
|
|
179
|
+
handling: "Return appropriate HTTP status"
|
|
180
|
+
|
|
181
|
+
rate_limiting:
|
|
182
|
+
errors:
|
|
183
|
+
- "Too many requests"
|
|
184
|
+
- "Quota exceeded"
|
|
185
|
+
handling: "Return retry-after header, back off"
|
|
186
|
+
|
|
187
|
+
dependency:
|
|
188
|
+
errors:
|
|
189
|
+
- "External service unavailable"
|
|
190
|
+
- "Upstream timeout"
|
|
191
|
+
- "Circuit breaker open"
|
|
192
|
+
handling: "Retry or fallback"
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Classification Algorithm
|
|
196
|
+
|
|
197
|
+
```python
|
|
198
|
+
def classify_error(error):
|
|
199
|
+
"""
|
|
200
|
+
Classify an error into appropriate categories.
|
|
201
|
+
|
|
202
|
+
Args:
|
|
203
|
+
error: The error/exception to classify
|
|
204
|
+
|
|
205
|
+
Returns:
|
|
206
|
+
ErrorClassification with retryability, source, severity, domain
|
|
207
|
+
"""
|
|
208
|
+
classification = ErrorClassification()
|
|
209
|
+
|
|
210
|
+
# Step 1: Identify retryability
|
|
211
|
+
classification.retryability = classify_retryability(error)
|
|
212
|
+
|
|
213
|
+
# Step 2: Identify source
|
|
214
|
+
classification.source = classify_source(error)
|
|
215
|
+
|
|
216
|
+
# Step 3: Assess severity
|
|
217
|
+
classification.severity = assess_severity(error)
|
|
218
|
+
|
|
219
|
+
# Step 4: Determine domain
|
|
220
|
+
classification.domain = identify_domain(error)
|
|
221
|
+
|
|
222
|
+
# Step 5: Determine response strategy
|
|
223
|
+
classification.strategy = determine_strategy(classification)
|
|
224
|
+
|
|
225
|
+
return classification
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
def classify_retryability(error):
|
|
229
|
+
"""Determine if error is transient or permanent."""
|
|
230
|
+
|
|
231
|
+
transient_patterns = [
|
|
232
|
+
# Network issues
|
|
233
|
+
r'ECONNRESET',
|
|
234
|
+
r'ETIMEDOUT',
|
|
235
|
+
r'ECONNREFUSED',
|
|
236
|
+
r'socket hang up',
|
|
237
|
+
r'network error',
|
|
238
|
+
|
|
239
|
+
# Rate limiting
|
|
240
|
+
r'rate limit',
|
|
241
|
+
r'too many requests',
|
|
242
|
+
r'429',
|
|
243
|
+
r'quota exceeded',
|
|
244
|
+
|
|
245
|
+
# Temporary unavailability
|
|
246
|
+
r'503',
|
|
247
|
+
r'service unavailable',
|
|
248
|
+
r'temporarily unavailable',
|
|
249
|
+
r'try again later',
|
|
250
|
+
|
|
251
|
+
# Database locks
|
|
252
|
+
r'deadlock',
|
|
253
|
+
r'lock timeout',
|
|
254
|
+
r'lock contention',
|
|
255
|
+
]
|
|
256
|
+
|
|
257
|
+
permanent_patterns = [
|
|
258
|
+
# Validation
|
|
259
|
+
r'validation',
|
|
260
|
+
r'invalid',
|
|
261
|
+
r'malformed',
|
|
262
|
+
r'schema',
|
|
263
|
+
|
|
264
|
+
# Authorization
|
|
265
|
+
r'401',
|
|
266
|
+
r'403',
|
|
267
|
+
r'unauthorized',
|
|
268
|
+
r'forbidden',
|
|
269
|
+
r'permission denied',
|
|
270
|
+
|
|
271
|
+
# Not found
|
|
272
|
+
r'404',
|
|
273
|
+
r'not found',
|
|
274
|
+
r'does not exist',
|
|
275
|
+
|
|
276
|
+
# Business rules
|
|
277
|
+
r'business rule',
|
|
278
|
+
r'constraint violation',
|
|
279
|
+
r'already exists',
|
|
280
|
+
]
|
|
281
|
+
|
|
282
|
+
error_str = str(error).lower()
|
|
283
|
+
|
|
284
|
+
for pattern in transient_patterns:
|
|
285
|
+
if re.search(pattern, error_str, re.IGNORECASE):
|
|
286
|
+
return 'transient'
|
|
287
|
+
|
|
288
|
+
for pattern in permanent_patterns:
|
|
289
|
+
if re.search(pattern, error_str, re.IGNORECASE):
|
|
290
|
+
return 'permanent'
|
|
291
|
+
|
|
292
|
+
return 'indeterminate'
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
def classify_source(error):
|
|
296
|
+
"""Determine the source of the error."""
|
|
297
|
+
|
|
298
|
+
user_error_patterns = [
|
|
299
|
+
r'validation',
|
|
300
|
+
r'invalid input',
|
|
301
|
+
r'required field',
|
|
302
|
+
r'format error',
|
|
303
|
+
r'too short',
|
|
304
|
+
r'too long',
|
|
305
|
+
]
|
|
306
|
+
|
|
307
|
+
external_error_patterns = [
|
|
308
|
+
r'api\.',
|
|
309
|
+
r'external',
|
|
310
|
+
r'third.party',
|
|
311
|
+
r'upstream',
|
|
312
|
+
r'gateway',
|
|
313
|
+
]
|
|
314
|
+
|
|
315
|
+
config_error_patterns = [
|
|
316
|
+
r'configuration',
|
|
317
|
+
r'environment variable',
|
|
318
|
+
r'credential',
|
|
319
|
+
r'certificate',
|
|
320
|
+
r'missing key',
|
|
321
|
+
]
|
|
322
|
+
|
|
323
|
+
error_str = str(error).lower()
|
|
324
|
+
|
|
325
|
+
for pattern in user_error_patterns:
|
|
326
|
+
if re.search(pattern, error_str, re.IGNORECASE):
|
|
327
|
+
return 'user_error'
|
|
328
|
+
|
|
329
|
+
for pattern in external_error_patterns:
|
|
330
|
+
if re.search(pattern, error_str, re.IGNORECASE):
|
|
331
|
+
return 'external_error'
|
|
332
|
+
|
|
333
|
+
for pattern in config_error_patterns:
|
|
334
|
+
if re.search(pattern, error_str, re.IGNORECASE):
|
|
335
|
+
return 'configuration_error'
|
|
336
|
+
|
|
337
|
+
return 'system_error'
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
def assess_severity(error):
|
|
341
|
+
"""Assess the severity of the error."""
|
|
342
|
+
|
|
343
|
+
critical_patterns = [
|
|
344
|
+
r'data corruption',
|
|
345
|
+
r'security',
|
|
346
|
+
r'breach',
|
|
347
|
+
r'injection',
|
|
348
|
+
r'database down',
|
|
349
|
+
r'fatal',
|
|
350
|
+
]
|
|
351
|
+
|
|
352
|
+
high_patterns = [
|
|
353
|
+
r'cannot connect',
|
|
354
|
+
r'service unavailable',
|
|
355
|
+
r'payment failed',
|
|
356
|
+
r'auth.* failed',
|
|
357
|
+
]
|
|
358
|
+
|
|
359
|
+
low_patterns = [
|
|
360
|
+
r'warning',
|
|
361
|
+
r'deprecated',
|
|
362
|
+
r'edge case',
|
|
363
|
+
]
|
|
364
|
+
|
|
365
|
+
error_str = str(error).lower()
|
|
366
|
+
|
|
367
|
+
for pattern in critical_patterns:
|
|
368
|
+
if re.search(pattern, error_str, re.IGNORECASE):
|
|
369
|
+
return 'critical'
|
|
370
|
+
|
|
371
|
+
for pattern in high_patterns:
|
|
372
|
+
if re.search(pattern, error_str, re.IGNORECASE):
|
|
373
|
+
return 'high'
|
|
374
|
+
|
|
375
|
+
for pattern in low_patterns:
|
|
376
|
+
if re.search(pattern, error_str, re.IGNORECASE):
|
|
377
|
+
return 'low'
|
|
378
|
+
|
|
379
|
+
return 'medium'
|
|
380
|
+
```
|
|
381
|
+
|
|
382
|
+
## Response Strategies
|
|
383
|
+
|
|
384
|
+
### Strategy: Retry with Backoff
|
|
385
|
+
|
|
386
|
+
```yaml
|
|
387
|
+
strategy: retry_with_backoff
|
|
388
|
+
applies_to:
|
|
389
|
+
retryability: transient
|
|
390
|
+
|
|
391
|
+
configuration:
|
|
392
|
+
max_attempts: 3
|
|
393
|
+
initial_delay_ms: 1000
|
|
394
|
+
multiplier: 2.0
|
|
395
|
+
max_delay_ms: 30000
|
|
396
|
+
jitter: true
|
|
397
|
+
|
|
398
|
+
implementation: |
|
|
399
|
+
async function retryWithBackoff(operation, config) {
|
|
400
|
+
let attempt = 0;
|
|
401
|
+
let delay = config.initial_delay_ms;
|
|
402
|
+
|
|
403
|
+
while (attempt < config.max_attempts) {
|
|
404
|
+
try {
|
|
405
|
+
return await operation();
|
|
406
|
+
} catch (error) {
|
|
407
|
+
attempt++;
|
|
408
|
+
|
|
409
|
+
if (attempt >= config.max_attempts) {
|
|
410
|
+
throw error;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
if (classify_retryability(error) !== 'transient') {
|
|
414
|
+
throw error; // Don't retry non-transient
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
const jitter = config.jitter ? Math.random() * 0.5 + 0.5 : 1;
|
|
418
|
+
await sleep(delay * jitter);
|
|
419
|
+
delay = Math.min(delay * config.multiplier, config.max_delay_ms);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
### Strategy: Fail Fast
|
|
426
|
+
|
|
427
|
+
```yaml
|
|
428
|
+
strategy: fail_fast
|
|
429
|
+
applies_to:
|
|
430
|
+
retryability: permanent
|
|
431
|
+
|
|
432
|
+
configuration:
|
|
433
|
+
log_level: "warn"
|
|
434
|
+
include_details: true
|
|
435
|
+
|
|
436
|
+
implementation: |
|
|
437
|
+
function failFast(error, context) {
|
|
438
|
+
// Log with details
|
|
439
|
+
logger.warn('Operation failed (permanent)', {
|
|
440
|
+
error: error.message,
|
|
441
|
+
code: error.code,
|
|
442
|
+
context: context,
|
|
443
|
+
classification: classify_error(error)
|
|
444
|
+
});
|
|
445
|
+
|
|
446
|
+
// Return user-friendly error
|
|
447
|
+
return {
|
|
448
|
+
success: false,
|
|
449
|
+
error: {
|
|
450
|
+
code: error.code,
|
|
451
|
+
message: sanitize_for_user(error.message),
|
|
452
|
+
field: error.field // For validation errors
|
|
453
|
+
}
|
|
454
|
+
};
|
|
455
|
+
}
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
### Strategy: Escalate
|
|
459
|
+
|
|
460
|
+
```yaml
|
|
461
|
+
strategy: escalate
|
|
462
|
+
applies_to:
|
|
463
|
+
severity: critical
|
|
464
|
+
|
|
465
|
+
configuration:
|
|
466
|
+
alert_channels:
|
|
467
|
+
- pagerduty
|
|
468
|
+
- slack_oncall
|
|
469
|
+
include_diagnostics: true
|
|
470
|
+
|
|
471
|
+
implementation: |
|
|
472
|
+
async function escalate(error, context) {
|
|
473
|
+
// Gather diagnostics
|
|
474
|
+
const diagnostics = {
|
|
475
|
+
error: error,
|
|
476
|
+
stack: error.stack,
|
|
477
|
+
context: context,
|
|
478
|
+
timestamp: new Date().toISOString(),
|
|
479
|
+
environment: process.env.NODE_ENV,
|
|
480
|
+
memory: process.memoryUsage(),
|
|
481
|
+
uptime: process.uptime()
|
|
482
|
+
};
|
|
483
|
+
|
|
484
|
+
// Alert immediately
|
|
485
|
+
await pagerduty.trigger({
|
|
486
|
+
severity: 'critical',
|
|
487
|
+
summary: `Critical error: ${error.message}`,
|
|
488
|
+
details: diagnostics
|
|
489
|
+
});
|
|
490
|
+
|
|
491
|
+
// Log for debugging
|
|
492
|
+
logger.error('Critical error escalated', diagnostics);
|
|
493
|
+
|
|
494
|
+
// Stop affected workflows
|
|
495
|
+
await workflow.halt(context.flow_id);
|
|
496
|
+
}
|
|
497
|
+
```
|
|
498
|
+
|
|
499
|
+
### Strategy: Fallback
|
|
500
|
+
|
|
501
|
+
```yaml
|
|
502
|
+
strategy: fallback
|
|
503
|
+
applies_to:
|
|
504
|
+
source: external_error
|
|
505
|
+
|
|
506
|
+
configuration:
|
|
507
|
+
fallback_options:
|
|
508
|
+
- cached_result
|
|
509
|
+
- default_value
|
|
510
|
+
- alternative_service
|
|
511
|
+
|
|
512
|
+
implementation: |
|
|
513
|
+
async function withFallback(operation, fallback) {
|
|
514
|
+
try {
|
|
515
|
+
return await operation();
|
|
516
|
+
} catch (error) {
|
|
517
|
+
const classification = classify_error(error);
|
|
518
|
+
|
|
519
|
+
if (classification.source === 'external_error') {
|
|
520
|
+
logger.warn('External service failed, using fallback', {
|
|
521
|
+
error: error.message,
|
|
522
|
+
fallback: fallback.name
|
|
523
|
+
});
|
|
524
|
+
|
|
525
|
+
return await fallback();
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
throw error; // Don't fallback for other error types
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
## Integration with Concepts
|
|
534
|
+
|
|
535
|
+
### In Any Concept Action
|
|
536
|
+
|
|
537
|
+
```python
|
|
538
|
+
async def execute_action(action, inputs):
|
|
539
|
+
"""Execute action with error classification."""
|
|
540
|
+
try:
|
|
541
|
+
result = await action(inputs)
|
|
542
|
+
return {'success': True, 'result': result}
|
|
543
|
+
|
|
544
|
+
except Exception as error:
|
|
545
|
+
classification = classify_error(error)
|
|
546
|
+
|
|
547
|
+
# Log with classification
|
|
548
|
+
log_error(error, classification)
|
|
549
|
+
|
|
550
|
+
# Apply strategy
|
|
551
|
+
if classification.retryability == 'transient':
|
|
552
|
+
return await retry_with_backoff(
|
|
553
|
+
lambda: action(inputs),
|
|
554
|
+
get_retry_config(classification)
|
|
555
|
+
)
|
|
556
|
+
|
|
557
|
+
elif classification.severity == 'critical':
|
|
558
|
+
await escalate(error, {'action': action.__name__, 'inputs': inputs})
|
|
559
|
+
raise
|
|
560
|
+
|
|
561
|
+
else:
|
|
562
|
+
return fail_fast(error, {'action': action.__name__})
|
|
563
|
+
```
|
|
564
|
+
|
|
565
|
+
### Error Classification in Provenance
|
|
566
|
+
|
|
567
|
+
```yaml
|
|
568
|
+
# koan/provenance/actions/act-{id}.yaml
|
|
569
|
+
|
|
570
|
+
action_id: "act-003"
|
|
571
|
+
concept: "implementation"
|
|
572
|
+
action: "generate"
|
|
573
|
+
status: "failed"
|
|
574
|
+
|
|
575
|
+
error:
|
|
576
|
+
message: "Rate limit exceeded for LLM API"
|
|
577
|
+
code: "RATE_LIMIT"
|
|
578
|
+
|
|
579
|
+
classification:
|
|
580
|
+
retryability: "transient"
|
|
581
|
+
source: "external_error"
|
|
582
|
+
severity: "medium"
|
|
583
|
+
domain: "rate_limiting"
|
|
584
|
+
|
|
585
|
+
strategy_applied: "retry_with_backoff"
|
|
586
|
+
retry_attempts: 3
|
|
587
|
+
final_outcome: "succeeded_on_retry"
|
|
588
|
+
|
|
589
|
+
resolution:
|
|
590
|
+
time_to_resolve_ms: 4500
|
|
591
|
+
method: "automatic_retry"
|
|
592
|
+
```
|
|
593
|
+
|
|
594
|
+
## Error Response Templates
|
|
595
|
+
|
|
596
|
+
### User-Facing Errors
|
|
597
|
+
|
|
598
|
+
```yaml
|
|
599
|
+
user_error_templates:
|
|
600
|
+
validation:
|
|
601
|
+
format: |
|
|
602
|
+
{
|
|
603
|
+
"error": {
|
|
604
|
+
"code": "VALIDATION_ERROR",
|
|
605
|
+
"message": "The provided data is invalid",
|
|
606
|
+
"details": [
|
|
607
|
+
{"field": "email", "message": "Invalid email format"},
|
|
608
|
+
{"field": "password", "message": "Must be at least 8 characters"}
|
|
609
|
+
]
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
not_found:
|
|
614
|
+
format: |
|
|
615
|
+
{
|
|
616
|
+
"error": {
|
|
617
|
+
"code": "NOT_FOUND",
|
|
618
|
+
"message": "The requested resource was not found"
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
rate_limit:
|
|
623
|
+
format: |
|
|
624
|
+
{
|
|
625
|
+
"error": {
|
|
626
|
+
"code": "RATE_LIMIT_EXCEEDED",
|
|
627
|
+
"message": "Too many requests. Please try again later.",
|
|
628
|
+
"retry_after": 60
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
internal:
|
|
633
|
+
format: |
|
|
634
|
+
{
|
|
635
|
+
"error": {
|
|
636
|
+
"code": "INTERNAL_ERROR",
|
|
637
|
+
"message": "An unexpected error occurred. Please try again."
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
note: "Never expose internal details to users"
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
### Internal Logging
|
|
644
|
+
|
|
645
|
+
```yaml
|
|
646
|
+
internal_log_format:
|
|
647
|
+
template: |
|
|
648
|
+
{
|
|
649
|
+
"timestamp": "{timestamp}",
|
|
650
|
+
"level": "{level}",
|
|
651
|
+
"message": "{error.message}",
|
|
652
|
+
"error": {
|
|
653
|
+
"type": "{error.name}",
|
|
654
|
+
"message": "{error.message}",
|
|
655
|
+
"stack": "{error.stack}",
|
|
656
|
+
"code": "{error.code}"
|
|
657
|
+
},
|
|
658
|
+
"classification": {
|
|
659
|
+
"retryability": "{classification.retryability}",
|
|
660
|
+
"source": "{classification.source}",
|
|
661
|
+
"severity": "{classification.severity}",
|
|
662
|
+
"domain": "{classification.domain}"
|
|
663
|
+
},
|
|
664
|
+
"context": {
|
|
665
|
+
"action": "{context.action}",
|
|
666
|
+
"flow_id": "{context.flow_id}",
|
|
667
|
+
"user_id": "{context.user_id}"
|
|
668
|
+
},
|
|
669
|
+
"strategy": "{strategy_applied}",
|
|
670
|
+
"outcome": "{outcome}"
|
|
671
|
+
}
|
|
672
|
+
```
|
|
673
|
+
|
|
674
|
+
## Best Practices
|
|
675
|
+
|
|
676
|
+
1. ✅ **Classify early** - Classify errors as soon as they occur
|
|
677
|
+
2. ✅ **Log with classification** - Include classification in all logs
|
|
678
|
+
3. ✅ **Match strategy to classification** - Don't retry permanent errors
|
|
679
|
+
4. ✅ **Sanitize user-facing errors** - Never expose internal details
|
|
680
|
+
5. ✅ **Include context** - Error without context is hard to debug
|
|
681
|
+
6. ✅ **Track metrics** - Error rates by classification
|
|
682
|
+
7. ✅ **Update patterns** - Add new error patterns as discovered
|
|
683
|
+
|
|
684
|
+
## Metrics to Track
|
|
685
|
+
|
|
686
|
+
```yaml
|
|
687
|
+
error_metrics:
|
|
688
|
+
- name: "error_rate_by_classification"
|
|
689
|
+
dimensions: [retryability, source, severity, domain]
|
|
690
|
+
|
|
691
|
+
- name: "retry_success_rate"
|
|
692
|
+
description: "Percentage of transient errors that succeed on retry"
|
|
693
|
+
target: "> 80%"
|
|
694
|
+
|
|
695
|
+
- name: "time_to_resolution"
|
|
696
|
+
description: "Time from error to resolution"
|
|
697
|
+
by_severity:
|
|
698
|
+
critical: "< 5 minutes"
|
|
699
|
+
high: "< 30 minutes"
|
|
700
|
+
medium: "< 4 hours"
|
|
701
|
+
|
|
702
|
+
- name: "false_classification_rate"
|
|
703
|
+
description: "Errors misclassified (e.g., retried permanent errors)"
|
|
704
|
+
target: "< 5%"
|
|
705
|
+
```
|
|
706
|
+
|
|
707
|
+
---
|
|
708
|
+
|
|
709
|
+
**Use this skill when**: Any operation fails or throws an exception. Proper classification ensures the right response strategy and faster resolution.
|