@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.
Files changed (666) hide show
  1. package/.claude-plugin/plugin.json +26 -0
  2. package/LICENSE +21 -0
  3. package/README.md +126 -0
  4. package/dist/core/annotations.d.ts +71 -0
  5. package/dist/core/annotations.d.ts.map +1 -0
  6. package/dist/core/annotations.js +61 -0
  7. package/dist/core/annotations.js.map +1 -0
  8. package/dist/core/config.d.ts +66 -0
  9. package/dist/core/config.d.ts.map +1 -0
  10. package/dist/core/config.js +131 -0
  11. package/dist/core/config.js.map +1 -0
  12. package/dist/core/dispatcher.d.ts +77 -0
  13. package/dist/core/dispatcher.d.ts.map +1 -0
  14. package/dist/core/dispatcher.js +132 -0
  15. package/dist/core/dispatcher.js.map +1 -0
  16. package/dist/core/server.d.ts +24 -0
  17. package/dist/core/server.d.ts.map +1 -0
  18. package/dist/core/server.js +41 -0
  19. package/dist/core/server.js.map +1 -0
  20. package/dist/core/store.d.ts +91 -0
  21. package/dist/core/store.d.ts.map +1 -0
  22. package/dist/core/store.js +157 -0
  23. package/dist/core/store.js.map +1 -0
  24. package/dist/core/types.d.ts +128 -0
  25. package/dist/core/types.d.ts.map +1 -0
  26. package/dist/core/types.js +5 -0
  27. package/dist/core/types.js.map +1 -0
  28. package/dist/index.d.ts +22 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +81 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/test-utils/store-harness.d.ts +41 -0
  33. package/dist/test-utils/store-harness.d.ts.map +1 -0
  34. package/dist/test-utils/store-harness.js +61 -0
  35. package/dist/test-utils/store-harness.js.map +1 -0
  36. package/dist/tools/analytics/aggregators.d.ts +18 -0
  37. package/dist/tools/analytics/aggregators.d.ts.map +1 -0
  38. package/dist/tools/analytics/aggregators.js +260 -0
  39. package/dist/tools/analytics/aggregators.js.map +1 -0
  40. package/dist/tools/analytics/aggregators.test.d.ts +2 -0
  41. package/dist/tools/analytics/aggregators.test.d.ts.map +1 -0
  42. package/dist/tools/analytics/aggregators.test.js +177 -0
  43. package/dist/tools/analytics/aggregators.test.js.map +1 -0
  44. package/dist/tools/analytics/drift.d.ts +15 -0
  45. package/dist/tools/analytics/drift.d.ts.map +1 -0
  46. package/dist/tools/analytics/drift.js +135 -0
  47. package/dist/tools/analytics/drift.js.map +1 -0
  48. package/dist/tools/analytics/drift.test.d.ts +2 -0
  49. package/dist/tools/analytics/drift.test.d.ts.map +1 -0
  50. package/dist/tools/analytics/drift.test.js +99 -0
  51. package/dist/tools/analytics/drift.test.js.map +1 -0
  52. package/dist/tools/analytics/index.d.ts +10 -0
  53. package/dist/tools/analytics/index.d.ts.map +1 -0
  54. package/dist/tools/analytics/index.js +192 -0
  55. package/dist/tools/analytics/index.js.map +1 -0
  56. package/dist/tools/analytics/learner.d.ts +29 -0
  57. package/dist/tools/analytics/learner.d.ts.map +1 -0
  58. package/dist/tools/analytics/learner.js +135 -0
  59. package/dist/tools/analytics/learner.js.map +1 -0
  60. package/dist/tools/analytics/learner.test.d.ts +2 -0
  61. package/dist/tools/analytics/learner.test.d.ts.map +1 -0
  62. package/dist/tools/analytics/learner.test.js +118 -0
  63. package/dist/tools/analytics/learner.test.js.map +1 -0
  64. package/dist/tools/analytics/observe.d.ts +22 -0
  65. package/dist/tools/analytics/observe.d.ts.map +1 -0
  66. package/dist/tools/analytics/observe.js +143 -0
  67. package/dist/tools/analytics/observe.js.map +1 -0
  68. package/dist/tools/analytics/observe.test.d.ts +2 -0
  69. package/dist/tools/analytics/observe.test.d.ts.map +1 -0
  70. package/dist/tools/analytics/observe.test.js +95 -0
  71. package/dist/tools/analytics/observe.test.js.map +1 -0
  72. package/dist/tools/analytics/store.d.ts +29 -0
  73. package/dist/tools/analytics/store.d.ts.map +1 -0
  74. package/dist/tools/analytics/store.js +192 -0
  75. package/dist/tools/analytics/store.js.map +1 -0
  76. package/dist/tools/analytics/types.d.ts +290 -0
  77. package/dist/tools/analytics/types.d.ts.map +1 -0
  78. package/dist/tools/analytics/types.js +7 -0
  79. package/dist/tools/analytics/types.js.map +1 -0
  80. package/dist/tools/ast/index.d.ts +8 -0
  81. package/dist/tools/ast/index.d.ts.map +1 -0
  82. package/dist/tools/ast/index.js +242 -0
  83. package/dist/tools/ast/index.js.map +1 -0
  84. package/dist/tools/ast/indexer.d.ts +41 -0
  85. package/dist/tools/ast/indexer.d.ts.map +1 -0
  86. package/dist/tools/ast/indexer.js +617 -0
  87. package/dist/tools/ast/indexer.js.map +1 -0
  88. package/dist/tools/ast/store.d.ts +87 -0
  89. package/dist/tools/ast/store.d.ts.map +1 -0
  90. package/dist/tools/ast/store.js +280 -0
  91. package/dist/tools/ast/store.js.map +1 -0
  92. package/dist/tools/ast/store.test.d.ts +6 -0
  93. package/dist/tools/ast/store.test.d.ts.map +1 -0
  94. package/dist/tools/ast/store.test.js +257 -0
  95. package/dist/tools/ast/store.test.js.map +1 -0
  96. package/dist/tools/bridge/bridge.d.ts +37 -0
  97. package/dist/tools/bridge/bridge.d.ts.map +1 -0
  98. package/dist/tools/bridge/bridge.js +82 -0
  99. package/dist/tools/bridge/bridge.js.map +1 -0
  100. package/dist/tools/bridge/bridge.test.d.ts +2 -0
  101. package/dist/tools/bridge/bridge.test.d.ts.map +1 -0
  102. package/dist/tools/bridge/bridge.test.js +119 -0
  103. package/dist/tools/bridge/bridge.test.js.map +1 -0
  104. package/dist/tools/bridge/index.d.ts +8 -0
  105. package/dist/tools/bridge/index.d.ts.map +1 -0
  106. package/dist/tools/bridge/index.js +153 -0
  107. package/dist/tools/bridge/index.js.map +1 -0
  108. package/dist/tools/bridge/store.d.ts +45 -0
  109. package/dist/tools/bridge/store.d.ts.map +1 -0
  110. package/dist/tools/bridge/store.js +307 -0
  111. package/dist/tools/bridge/store.js.map +1 -0
  112. package/dist/tools/bridge/store.test.d.ts +2 -0
  113. package/dist/tools/bridge/store.test.d.ts.map +1 -0
  114. package/dist/tools/bridge/store.test.js +180 -0
  115. package/dist/tools/bridge/store.test.js.map +1 -0
  116. package/dist/tools/bridge/types.d.ts +44 -0
  117. package/dist/tools/bridge/types.d.ts.map +1 -0
  118. package/dist/tools/bridge/types.js +6 -0
  119. package/dist/tools/bridge/types.js.map +1 -0
  120. package/dist/tools/evolve/algorithm.d.ts +33 -0
  121. package/dist/tools/evolve/algorithm.d.ts.map +1 -0
  122. package/dist/tools/evolve/algorithm.js +64 -0
  123. package/dist/tools/evolve/algorithm.js.map +1 -0
  124. package/dist/tools/evolve/algorithm.test.d.ts +6 -0
  125. package/dist/tools/evolve/algorithm.test.d.ts.map +1 -0
  126. package/dist/tools/evolve/algorithm.test.js +138 -0
  127. package/dist/tools/evolve/algorithm.test.js.map +1 -0
  128. package/dist/tools/evolve/index.d.ts +11 -0
  129. package/dist/tools/evolve/index.d.ts.map +1 -0
  130. package/dist/tools/evolve/index.js +300 -0
  131. package/dist/tools/evolve/index.js.map +1 -0
  132. package/dist/tools/evolve/store.d.ts +27 -0
  133. package/dist/tools/evolve/store.d.ts.map +1 -0
  134. package/dist/tools/evolve/store.js +147 -0
  135. package/dist/tools/evolve/store.js.map +1 -0
  136. package/dist/tools/evolve/store.test.d.ts +6 -0
  137. package/dist/tools/evolve/store.test.d.ts.map +1 -0
  138. package/dist/tools/evolve/store.test.js +162 -0
  139. package/dist/tools/evolve/store.test.js.map +1 -0
  140. package/dist/tools/evolve/types.d.ts +38 -0
  141. package/dist/tools/evolve/types.d.ts.map +1 -0
  142. package/dist/tools/evolve/types.js +6 -0
  143. package/dist/tools/evolve/types.js.map +1 -0
  144. package/dist/tools/framework/content-loader.d.ts +45 -0
  145. package/dist/tools/framework/content-loader.d.ts.map +1 -0
  146. package/dist/tools/framework/content-loader.js +258 -0
  147. package/dist/tools/framework/content-loader.js.map +1 -0
  148. package/dist/tools/framework/content-loader.test.d.ts +5 -0
  149. package/dist/tools/framework/content-loader.test.d.ts.map +1 -0
  150. package/dist/tools/framework/content-loader.test.js +262 -0
  151. package/dist/tools/framework/content-loader.test.js.map +1 -0
  152. package/dist/tools/framework/index.d.ts +30 -0
  153. package/dist/tools/framework/index.d.ts.map +1 -0
  154. package/dist/tools/framework/index.js +517 -0
  155. package/dist/tools/framework/index.js.map +1 -0
  156. package/dist/tools/framework/session.d.ts +85 -0
  157. package/dist/tools/framework/session.d.ts.map +1 -0
  158. package/dist/tools/framework/session.js +311 -0
  159. package/dist/tools/framework/session.js.map +1 -0
  160. package/dist/tools/framework/session.test.d.ts +5 -0
  161. package/dist/tools/framework/session.test.d.ts.map +1 -0
  162. package/dist/tools/framework/session.test.js +291 -0
  163. package/dist/tools/framework/session.test.js.map +1 -0
  164. package/dist/tools/framework/sync-evaluator.d.ts +41 -0
  165. package/dist/tools/framework/sync-evaluator.d.ts.map +1 -0
  166. package/dist/tools/framework/sync-evaluator.js +298 -0
  167. package/dist/tools/framework/sync-evaluator.js.map +1 -0
  168. package/dist/tools/framework/sync-evaluator.test.d.ts +5 -0
  169. package/dist/tools/framework/sync-evaluator.test.d.ts.map +1 -0
  170. package/dist/tools/framework/sync-evaluator.test.js +288 -0
  171. package/dist/tools/framework/sync-evaluator.test.js.map +1 -0
  172. package/dist/tools/framework/types.d.ts +279 -0
  173. package/dist/tools/framework/types.d.ts.map +1 -0
  174. package/dist/tools/framework/types.js +6 -0
  175. package/dist/tools/framework/types.js.map +1 -0
  176. package/dist/tools/framework/workflow-intelligence.d.ts +55 -0
  177. package/dist/tools/framework/workflow-intelligence.d.ts.map +1 -0
  178. package/dist/tools/framework/workflow-intelligence.js +199 -0
  179. package/dist/tools/framework/workflow-intelligence.js.map +1 -0
  180. package/dist/tools/framework/workflow-intelligence.test.d.ts +6 -0
  181. package/dist/tools/framework/workflow-intelligence.test.d.ts.map +1 -0
  182. package/dist/tools/framework/workflow-intelligence.test.js +257 -0
  183. package/dist/tools/framework/workflow-intelligence.test.js.map +1 -0
  184. package/dist/tools/framework/workflow-planner.d.ts +10 -0
  185. package/dist/tools/framework/workflow-planner.d.ts.map +1 -0
  186. package/dist/tools/framework/workflow-planner.js +214 -0
  187. package/dist/tools/framework/workflow-planner.js.map +1 -0
  188. package/dist/tools/framework/workflow-planner.test.d.ts +5 -0
  189. package/dist/tools/framework/workflow-planner.test.d.ts.map +1 -0
  190. package/dist/tools/framework/workflow-planner.test.js +137 -0
  191. package/dist/tools/framework/workflow-planner.test.js.map +1 -0
  192. package/dist/tools/knowledge/bridge.d.ts +34 -0
  193. package/dist/tools/knowledge/bridge.d.ts.map +1 -0
  194. package/dist/tools/knowledge/bridge.js +249 -0
  195. package/dist/tools/knowledge/bridge.js.map +1 -0
  196. package/dist/tools/knowledge/bridge.test.d.ts +5 -0
  197. package/dist/tools/knowledge/bridge.test.d.ts.map +1 -0
  198. package/dist/tools/knowledge/bridge.test.js +221 -0
  199. package/dist/tools/knowledge/bridge.test.js.map +1 -0
  200. package/dist/tools/knowledge/extractor.d.ts +22 -0
  201. package/dist/tools/knowledge/extractor.d.ts.map +1 -0
  202. package/dist/tools/knowledge/extractor.js +154 -0
  203. package/dist/tools/knowledge/extractor.js.map +1 -0
  204. package/dist/tools/knowledge/index.d.ts +12 -0
  205. package/dist/tools/knowledge/index.d.ts.map +1 -0
  206. package/dist/tools/knowledge/index.js +505 -0
  207. package/dist/tools/knowledge/index.js.map +1 -0
  208. package/dist/tools/knowledge/retrieval.d.ts +28 -0
  209. package/dist/tools/knowledge/retrieval.d.ts.map +1 -0
  210. package/dist/tools/knowledge/retrieval.js +164 -0
  211. package/dist/tools/knowledge/retrieval.js.map +1 -0
  212. package/dist/tools/knowledge/store.d.ts +96 -0
  213. package/dist/tools/knowledge/store.d.ts.map +1 -0
  214. package/dist/tools/knowledge/store.js +562 -0
  215. package/dist/tools/knowledge/store.js.map +1 -0
  216. package/dist/tools/knowledge/store.test.d.ts +6 -0
  217. package/dist/tools/knowledge/store.test.d.ts.map +1 -0
  218. package/dist/tools/knowledge/store.test.js +385 -0
  219. package/dist/tools/knowledge/store.test.js.map +1 -0
  220. package/dist/tools/knowledge/types.d.ts +168 -0
  221. package/dist/tools/knowledge/types.d.ts.map +1 -0
  222. package/dist/tools/knowledge/types.js +6 -0
  223. package/dist/tools/knowledge/types.js.map +1 -0
  224. package/dist/tools/memory/evolution.d.ts +31 -0
  225. package/dist/tools/memory/evolution.d.ts.map +1 -0
  226. package/dist/tools/memory/evolution.js +130 -0
  227. package/dist/tools/memory/evolution.js.map +1 -0
  228. package/dist/tools/memory/index.d.ts +11 -0
  229. package/dist/tools/memory/index.d.ts.map +1 -0
  230. package/dist/tools/memory/index.js +239 -0
  231. package/dist/tools/memory/index.js.map +1 -0
  232. package/dist/tools/memory/store.d.ts +75 -0
  233. package/dist/tools/memory/store.d.ts.map +1 -0
  234. package/dist/tools/memory/store.js +398 -0
  235. package/dist/tools/memory/store.js.map +1 -0
  236. package/dist/tools/memory/store.test.d.ts +6 -0
  237. package/dist/tools/memory/store.test.d.ts.map +1 -0
  238. package/dist/tools/memory/store.test.js +429 -0
  239. package/dist/tools/memory/store.test.js.map +1 -0
  240. package/dist/tools/memory/types.d.ts +171 -0
  241. package/dist/tools/memory/types.d.ts.map +1 -0
  242. package/dist/tools/memory/types.js +6 -0
  243. package/dist/tools/memory/types.js.map +1 -0
  244. package/dist/tools/pipeline/composer.d.ts +29 -0
  245. package/dist/tools/pipeline/composer.d.ts.map +1 -0
  246. package/dist/tools/pipeline/composer.js +225 -0
  247. package/dist/tools/pipeline/composer.js.map +1 -0
  248. package/dist/tools/pipeline/composer.test.d.ts +2 -0
  249. package/dist/tools/pipeline/composer.test.d.ts.map +1 -0
  250. package/dist/tools/pipeline/composer.test.js +162 -0
  251. package/dist/tools/pipeline/composer.test.js.map +1 -0
  252. package/dist/tools/pipeline/index.d.ts +8 -0
  253. package/dist/tools/pipeline/index.d.ts.map +1 -0
  254. package/dist/tools/pipeline/index.js +102 -0
  255. package/dist/tools/pipeline/index.js.map +1 -0
  256. package/dist/tools/pipeline/planner.d.ts +10 -0
  257. package/dist/tools/pipeline/planner.d.ts.map +1 -0
  258. package/dist/tools/pipeline/planner.js +147 -0
  259. package/dist/tools/pipeline/planner.js.map +1 -0
  260. package/dist/tools/pipeline/planner.test.d.ts +2 -0
  261. package/dist/tools/pipeline/planner.test.d.ts.map +1 -0
  262. package/dist/tools/pipeline/planner.test.js +96 -0
  263. package/dist/tools/pipeline/planner.test.js.map +1 -0
  264. package/dist/tools/pipeline/preconditions.d.ts +14 -0
  265. package/dist/tools/pipeline/preconditions.d.ts.map +1 -0
  266. package/dist/tools/pipeline/preconditions.js +65 -0
  267. package/dist/tools/pipeline/preconditions.js.map +1 -0
  268. package/dist/tools/pipeline/preconditions.test.d.ts +2 -0
  269. package/dist/tools/pipeline/preconditions.test.d.ts.map +1 -0
  270. package/dist/tools/pipeline/preconditions.test.js +74 -0
  271. package/dist/tools/pipeline/preconditions.test.js.map +1 -0
  272. package/dist/tools/pipeline/types.d.ts +105 -0
  273. package/dist/tools/pipeline/types.d.ts.map +1 -0
  274. package/dist/tools/pipeline/types.js +6 -0
  275. package/dist/tools/pipeline/types.js.map +1 -0
  276. package/dist/tools/repair/index.d.ts +8 -0
  277. package/dist/tools/repair/index.d.ts.map +1 -0
  278. package/dist/tools/repair/index.js +384 -0
  279. package/dist/tools/repair/index.js.map +1 -0
  280. package/dist/tools/repair/repairer.d.ts +67 -0
  281. package/dist/tools/repair/repairer.d.ts.map +1 -0
  282. package/dist/tools/repair/repairer.js +257 -0
  283. package/dist/tools/repair/repairer.js.map +1 -0
  284. package/dist/tools/repair/repairer.test.d.ts +6 -0
  285. package/dist/tools/repair/repairer.test.d.ts.map +1 -0
  286. package/dist/tools/repair/repairer.test.js +159 -0
  287. package/dist/tools/repair/repairer.test.js.map +1 -0
  288. package/dist/tools/semantic/chunker.d.ts +23 -0
  289. package/dist/tools/semantic/chunker.d.ts.map +1 -0
  290. package/dist/tools/semantic/chunker.js +244 -0
  291. package/dist/tools/semantic/chunker.js.map +1 -0
  292. package/dist/tools/semantic/embedder.d.ts +16 -0
  293. package/dist/tools/semantic/embedder.d.ts.map +1 -0
  294. package/dist/tools/semantic/embedder.js +88 -0
  295. package/dist/tools/semantic/embedder.js.map +1 -0
  296. package/dist/tools/semantic/index.d.ts +8 -0
  297. package/dist/tools/semantic/index.d.ts.map +1 -0
  298. package/dist/tools/semantic/index.js +144 -0
  299. package/dist/tools/semantic/index.js.map +1 -0
  300. package/dist/tools/semantic/store.d.ts +31 -0
  301. package/dist/tools/semantic/store.d.ts.map +1 -0
  302. package/dist/tools/semantic/store.js +168 -0
  303. package/dist/tools/semantic/store.js.map +1 -0
  304. package/dist/tools/semantic/store.test.d.ts +6 -0
  305. package/dist/tools/semantic/store.test.d.ts.map +1 -0
  306. package/dist/tools/semantic/store.test.js +240 -0
  307. package/dist/tools/semantic/store.test.js.map +1 -0
  308. package/dist/tools/spec/generator.d.ts +32 -0
  309. package/dist/tools/spec/generator.d.ts.map +1 -0
  310. package/dist/tools/spec/generator.js +278 -0
  311. package/dist/tools/spec/generator.js.map +1 -0
  312. package/dist/tools/spec/generator.test.d.ts +6 -0
  313. package/dist/tools/spec/generator.test.d.ts.map +1 -0
  314. package/dist/tools/spec/generator.test.js +208 -0
  315. package/dist/tools/spec/generator.test.js.map +1 -0
  316. package/dist/tools/spec/index.d.ts +11 -0
  317. package/dist/tools/spec/index.d.ts.map +1 -0
  318. package/dist/tools/spec/index.js +426 -0
  319. package/dist/tools/spec/index.js.map +1 -0
  320. package/dist/tools/spec/store.d.ts +24 -0
  321. package/dist/tools/spec/store.d.ts.map +1 -0
  322. package/dist/tools/spec/store.js +104 -0
  323. package/dist/tools/spec/store.js.map +1 -0
  324. package/dist/tools/spec/store.test.d.ts +6 -0
  325. package/dist/tools/spec/store.test.d.ts.map +1 -0
  326. package/dist/tools/spec/store.test.js +173 -0
  327. package/dist/tools/spec/store.test.js.map +1 -0
  328. package/dist/tools/spec/types.d.ts +61 -0
  329. package/dist/tools/spec/types.d.ts.map +1 -0
  330. package/dist/tools/spec/types.js +6 -0
  331. package/dist/tools/spec/types.js.map +1 -0
  332. package/dist/tools/state/index.d.ts +11 -0
  333. package/dist/tools/state/index.d.ts.map +1 -0
  334. package/dist/tools/state/index.js +386 -0
  335. package/dist/tools/state/index.js.map +1 -0
  336. package/dist/tools/state/migrate.d.ts +39 -0
  337. package/dist/tools/state/migrate.d.ts.map +1 -0
  338. package/dist/tools/state/migrate.js +242 -0
  339. package/dist/tools/state/migrate.js.map +1 -0
  340. package/dist/tools/state/migrate.test.d.ts +2 -0
  341. package/dist/tools/state/migrate.test.d.ts.map +1 -0
  342. package/dist/tools/state/migrate.test.js +265 -0
  343. package/dist/tools/state/migrate.test.js.map +1 -0
  344. package/dist/tools/state/store.d.ts +107 -0
  345. package/dist/tools/state/store.d.ts.map +1 -0
  346. package/dist/tools/state/store.js +365 -0
  347. package/dist/tools/state/store.js.map +1 -0
  348. package/dist/tools/state/store.test.d.ts +5 -0
  349. package/dist/tools/state/store.test.d.ts.map +1 -0
  350. package/dist/tools/state/store.test.js +293 -0
  351. package/dist/tools/state/store.test.js.map +1 -0
  352. package/dist/tools/state/types.d.ts +90 -0
  353. package/dist/tools/state/types.d.ts.map +1 -0
  354. package/dist/tools/state/types.js +6 -0
  355. package/dist/tools/state/types.js.map +1 -0
  356. package/dist/tools/testing/analyzer.d.ts +44 -0
  357. package/dist/tools/testing/analyzer.d.ts.map +1 -0
  358. package/dist/tools/testing/analyzer.js +280 -0
  359. package/dist/tools/testing/analyzer.js.map +1 -0
  360. package/dist/tools/testing/generator.d.ts +57 -0
  361. package/dist/tools/testing/generator.d.ts.map +1 -0
  362. package/dist/tools/testing/generator.js +478 -0
  363. package/dist/tools/testing/generator.js.map +1 -0
  364. package/dist/tools/testing/generator.test.d.ts +6 -0
  365. package/dist/tools/testing/generator.test.d.ts.map +1 -0
  366. package/dist/tools/testing/generator.test.js +285 -0
  367. package/dist/tools/testing/generator.test.js.map +1 -0
  368. package/dist/tools/testing/index.d.ts +8 -0
  369. package/dist/tools/testing/index.d.ts.map +1 -0
  370. package/dist/tools/testing/index.js +373 -0
  371. package/dist/tools/testing/index.js.map +1 -0
  372. package/dist/utils/embedder.d.ts +7 -0
  373. package/dist/utils/embedder.d.ts.map +1 -0
  374. package/dist/utils/embedder.js +13 -0
  375. package/dist/utils/embedder.js.map +1 -0
  376. package/dist/utils/execution.d.ts +68 -0
  377. package/dist/utils/execution.d.ts.map +1 -0
  378. package/dist/utils/execution.js +467 -0
  379. package/dist/utils/execution.js.map +1 -0
  380. package/dist/utils/graph.d.ts +26 -0
  381. package/dist/utils/graph.d.ts.map +1 -0
  382. package/dist/utils/graph.js +32 -0
  383. package/dist/utils/graph.js.map +1 -0
  384. package/dist/utils/guards.d.ts +32 -0
  385. package/dist/utils/guards.d.ts.map +1 -0
  386. package/dist/utils/guards.js +40 -0
  387. package/dist/utils/guards.js.map +1 -0
  388. package/dist/utils/ids.d.ts +5 -0
  389. package/dist/utils/ids.d.ts.map +1 -0
  390. package/dist/utils/ids.js +7 -0
  391. package/dist/utils/ids.js.map +1 -0
  392. package/dist/utils/languages.d.ts +34 -0
  393. package/dist/utils/languages.d.ts.map +1 -0
  394. package/dist/utils/languages.js +153 -0
  395. package/dist/utils/languages.js.map +1 -0
  396. package/dist/utils/lazy.d.ts +17 -0
  397. package/dist/utils/lazy.d.ts.map +1 -0
  398. package/dist/utils/lazy.js +35 -0
  399. package/dist/utils/lazy.js.map +1 -0
  400. package/dist/utils/project.d.ts +41 -0
  401. package/dist/utils/project.d.ts.map +1 -0
  402. package/dist/utils/project.js +82 -0
  403. package/dist/utils/project.js.map +1 -0
  404. package/dist/utils/responses.d.ts +27 -0
  405. package/dist/utils/responses.d.ts.map +1 -0
  406. package/dist/utils/responses.js +72 -0
  407. package/dist/utils/responses.js.map +1 -0
  408. package/dist/utils/vectors.d.ts +33 -0
  409. package/dist/utils/vectors.d.ts.map +1 -0
  410. package/dist/utils/vectors.js +80 -0
  411. package/dist/utils/vectors.js.map +1 -0
  412. package/dist/utils/vectors.test.d.ts +6 -0
  413. package/dist/utils/vectors.test.d.ts.map +1 -0
  414. package/dist/utils/vectors.test.js +96 -0
  415. package/dist/utils/vectors.test.js.map +1 -0
  416. package/package.json +69 -0
  417. package/scripts/init.js +142 -0
  418. package/templates/CLAUDE.md.template +96 -0
  419. package/templates/agents/architecture-concept.md +237 -0
  420. package/templates/agents/checkpoint-concept.md +218 -0
  421. package/templates/agents/code-analysis-concept.md +171 -0
  422. package/templates/agents/compete-control.md +44 -0
  423. package/templates/agents/compete-evaluator.md +87 -0
  424. package/templates/agents/compete-treatment.md +55 -0
  425. package/templates/agents/context-concept.md +254 -0
  426. package/templates/agents/debate-advocate.md +127 -0
  427. package/templates/agents/debate-critic.md +119 -0
  428. package/templates/agents/debate-synthesis.md +160 -0
  429. package/templates/agents/documentation-concept.md +294 -0
  430. package/templates/agents/implementation-concept.md +165 -0
  431. package/templates/agents/quality-concept.md +299 -0
  432. package/templates/agents/research-concept.md +169 -0
  433. package/templates/agents/security-concept.md +255 -0
  434. package/templates/agents/story-concept.md +207 -0
  435. package/templates/agents/verification-concept.md +456 -0
  436. package/templates/agents/version-concept.md +163 -0
  437. package/templates/anchors/directory.anchor.yaml.template +53 -0
  438. package/templates/anchors/rules.anchor.yaml.template +70 -0
  439. package/templates/anchors/safety.anchor.yaml.template +96 -0
  440. package/templates/claude-md-managed.template +105 -0
  441. package/templates/commands/cache.md.template +439 -0
  442. package/templates/commands/checkpoint.md.template +121 -0
  443. package/templates/commands/classify.md.template +138 -0
  444. package/templates/commands/compete.md.template +90 -0
  445. package/templates/commands/costs.md.template +111 -0
  446. package/templates/commands/estimate.md.template +196 -0
  447. package/templates/commands/explore.md.template +186 -0
  448. package/templates/commands/feature.md.template +216 -0
  449. package/templates/commands/forget.md.template +104 -0
  450. package/templates/commands/global-recall.md.template +250 -0
  451. package/templates/commands/global-remember.md.template +187 -0
  452. package/templates/commands/health.md.template +107 -0
  453. package/templates/commands/help.md.template +253 -0
  454. package/templates/commands/observe.md.template +211 -0
  455. package/templates/commands/pr-review.md.template +164 -0
  456. package/templates/commands/predict-cost.md.template +251 -0
  457. package/templates/commands/profile.md.template +142 -0
  458. package/templates/commands/reasoning.md.template +228 -0
  459. package/templates/commands/recall.md.template +197 -0
  460. package/templates/commands/remember.md.template +148 -0
  461. package/templates/commands/replay.md.template +449 -0
  462. package/templates/commands/restore.md.template +87 -0
  463. package/templates/commands/retrospective.md.template +47 -0
  464. package/templates/commands/slo.md.template +286 -0
  465. package/templates/commands/spec.md.template +164 -0
  466. package/templates/commands/status.md.template +53 -0
  467. package/templates/commands/sync.md.template +321 -0
  468. package/templates/commands/task.md.template +86 -0
  469. package/templates/commands/trace.md.template +86 -0
  470. package/templates/commands/visualize.md.template +216 -0
  471. package/templates/commands/workflow.md.template +375 -0
  472. package/templates/concepts/README.md +329 -0
  473. package/templates/concepts/architecture.md.template +74 -0
  474. package/templates/concepts/code-analysis.md.template +186 -0
  475. package/templates/concepts/context-compactor.md.template +393 -0
  476. package/templates/concepts/context.md.template +62 -0
  477. package/templates/concepts/documentation.md.template +452 -0
  478. package/templates/concepts/estimator.md.template +214 -0
  479. package/templates/concepts/exploration.md.template +257 -0
  480. package/templates/concepts/global-memory.md.template +222 -0
  481. package/templates/concepts/implementation.md.template +62 -0
  482. package/templates/concepts/pr-review.md.template +277 -0
  483. package/templates/concepts/project-profile.md.template +358 -0
  484. package/templates/concepts/quality.md.template +63 -0
  485. package/templates/concepts/react-fallback.md.template +286 -0
  486. package/templates/concepts/research.md.template +221 -0
  487. package/templates/concepts/retrospective.md.template +93 -0
  488. package/templates/concepts/security.md.template +442 -0
  489. package/templates/concepts/slo.md.template +274 -0
  490. package/templates/concepts/spec.md.template +71 -0
  491. package/templates/concepts/story.md.template +50 -0
  492. package/templates/concepts/tool-router.md.template +289 -0
  493. package/templates/concepts/verification-synthesizer.md.template +279 -0
  494. package/templates/concepts/version.md.template +61 -0
  495. package/templates/config.yaml.template +347 -0
  496. package/templates/examples/README.md +77 -0
  497. package/templates/examples/architecture/api-design.yaml.template +286 -0
  498. package/templates/examples/architecture/oauth-authentication.yaml.template +305 -0
  499. package/templates/health/status.yaml.template +120 -0
  500. package/templates/hooks/concept-complete.sh.template +45 -0
  501. package/templates/hooks/lib/common.sh.template +160 -0
  502. package/templates/hooks/post-commit.sh.template +37 -0
  503. package/templates/hooks/post-concept-action.template +39 -0
  504. package/templates/hooks/post-tool-structure-check.sh.template +138 -0
  505. package/templates/hooks/post-tool-use.sh.template +51 -0
  506. package/templates/hooks/pre-compact.sh.template +48 -0
  507. package/templates/hooks/pre-tool-grounding.template +148 -0
  508. package/templates/hooks/session-exit-checkpoint.sh.template +35 -0
  509. package/templates/hooks/session-start.sh.template +67 -0
  510. package/templates/hooks/statusline.sh.template +148 -0
  511. package/templates/hooks/stop.sh.template +45 -0
  512. package/templates/hooks/subagent-stop.sh.template +40 -0
  513. package/templates/hooks/sync-blocked.sh.template +45 -0
  514. package/templates/hooks/timeout.sh.template +48 -0
  515. package/templates/hooks/user-prompt-submit.sh.template +68 -0
  516. package/templates/koan/README.md +58 -0
  517. package/templates/memory/index.yaml.template +48 -0
  518. package/templates/memory/procedural/debugging.yaml.template +24 -0
  519. package/templates/memory/procedural/workflows.yaml.template +22 -0
  520. package/templates/memory/semantic/architecture.yaml.template +21 -0
  521. package/templates/memory/semantic/conventions.yaml.template +18 -0
  522. package/templates/memory/semantic/patterns.yaml.template +21 -0
  523. package/templates/memory/semantic/preferences.yaml.template +18 -0
  524. package/templates/prompts/architecture.yaml.template +349 -0
  525. package/templates/prompts/context.yaml.template +384 -0
  526. package/templates/prompts/implementation.yaml.template +365 -0
  527. package/templates/prompts/planning.yaml.template +303 -0
  528. package/templates/prompts/quality.yaml.template +345 -0
  529. package/templates/prompts/retrospective.yaml.template +231 -0
  530. package/templates/prompts/slo.yaml.template +360 -0
  531. package/templates/prompts/story.yaml.template +236 -0
  532. package/templates/prompts/tree-of-thoughts.yaml.template +299 -0
  533. package/templates/prompts/verification.yaml.template +286 -0
  534. package/templates/prompts/version.yaml.template +279 -0
  535. package/templates/schemas/agent-schema.json +98 -0
  536. package/templates/schemas/architecture.schema.json +69 -0
  537. package/templates/schemas/config-schema.json +165 -0
  538. package/templates/schemas/implementation.schema.json +75 -0
  539. package/templates/schemas/planning.schema.json +243 -0
  540. package/templates/schemas/provenance.schema.json +111 -0
  541. package/templates/schemas/retrospective.schema.json +174 -0
  542. package/templates/schemas/review.schema.json +284 -0
  543. package/templates/schemas/slo.schema.json +443 -0
  544. package/templates/schemas/story.schema.json +68 -0
  545. package/templates/schemas/sync-schema.json +196 -0
  546. package/templates/schemas/task.schema.json +127 -0
  547. package/templates/schemas/tree-of-thoughts.schema.json +175 -0
  548. package/templates/schemas/verification.schema.json +106 -0
  549. package/templates/settings.full.json.template +135 -0
  550. package/templates/settings.minimal.json.template +68 -0
  551. package/templates/settings.standard.json.template +135 -0
  552. package/templates/skills/acceptance-criteria-generation.md.template +330 -0
  553. package/templates/skills/accessibility-checking.md.template +341 -0
  554. package/templates/skills/api-design-patterns.md.template +395 -0
  555. package/templates/skills/batch-processing.md.template +605 -0
  556. package/templates/skills/branch-strategy.md.template +362 -0
  557. package/templates/skills/changelog-generation.md.template +403 -0
  558. package/templates/skills/code-coverage-analysis.md.template +362 -0
  559. package/templates/skills/code-style-enforcement.md.template +294 -0
  560. package/templates/skills/code-template-patterns.md.template +419 -0
  561. package/templates/skills/concept-development.md.template +159 -0
  562. package/templates/skills/context-prioritization.md.template +306 -0
  563. package/templates/skills/cost-optimization.md.template +482 -0
  564. package/templates/skills/cross-project-knowledge.md.template +316 -0
  565. package/templates/skills/dependency-impact-analysis.md.template +263 -0
  566. package/templates/skills/documentation-generation.md.template +409 -0
  567. package/templates/skills/effort-estimation.md.template +350 -0
  568. package/templates/skills/error-classification.md.template +709 -0
  569. package/templates/skills/error-messages.md.template +339 -0
  570. package/templates/skills/ide-diagnostics.md.template +480 -0
  571. package/templates/skills/incremental-loading.md.template +574 -0
  572. package/templates/skills/output-caching.md.template +524 -0
  573. package/templates/skills/performance-estimation.md.template +325 -0
  574. package/templates/skills/performance-testing-patterns.md.template +341 -0
  575. package/templates/skills/phase2-optimizations-summary.md.template +458 -0
  576. package/templates/skills/progressive-disclosure-pattern.md.template +190 -0
  577. package/templates/skills/project-structure.md.template +372 -0
  578. package/templates/skills/provenance-analysis.md.template +609 -0
  579. package/templates/skills/react-executor.md.template +366 -0
  580. package/templates/skills/refactoring-patterns.md.template +422 -0
  581. package/templates/skills/release-management.md.template +373 -0
  582. package/templates/skills/requirement-prioritization.md.template +357 -0
  583. package/templates/skills/schema-validation.md.template +321 -0
  584. package/templates/skills/security-design-patterns.md.template +692 -0
  585. package/templates/skills/security-vulnerability-scanning.md.template +663 -0
  586. package/templates/skills/semantic-memory.md.template +266 -0
  587. package/templates/skills/semantic-versioning.md.template +371 -0
  588. package/templates/skills/smart-retry.md.template +676 -0
  589. package/templates/skills/smart-summarization.md.template +358 -0
  590. package/templates/skills/story-decomposition.md.template +278 -0
  591. package/templates/skills/synchronization-patterns.md.template +303 -0
  592. package/templates/skills/test-generation-strategy.md.template +247 -0
  593. package/templates/skills/workflow-replay.md.template +478 -0
  594. package/templates/skills/wysiwid-principles.md.template +364 -0
  595. package/templates/skills-manifest.yaml.template +526 -0
  596. package/templates/stubs/agents/architecture-concept.md +20 -0
  597. package/templates/stubs/agents/checkpoint-concept.md +19 -0
  598. package/templates/stubs/agents/code-analysis-concept.md +36 -0
  599. package/templates/stubs/agents/context-concept.md +37 -0
  600. package/templates/stubs/agents/debate-advocate.md +12 -0
  601. package/templates/stubs/agents/debate-critic.md +12 -0
  602. package/templates/stubs/agents/debate-synthesis.md +12 -0
  603. package/templates/stubs/agents/documentation-concept.md +39 -0
  604. package/templates/stubs/agents/implementation-concept.md +41 -0
  605. package/templates/stubs/agents/quality-concept.md +41 -0
  606. package/templates/stubs/agents/research-concept.md +35 -0
  607. package/templates/stubs/agents/security-concept.md +40 -0
  608. package/templates/stubs/agents/spec-concept.md +35 -0
  609. package/templates/stubs/agents/story-concept.md +36 -0
  610. package/templates/stubs/agents/verification-concept.md +39 -0
  611. package/templates/stubs/agents/version-concept.md +37 -0
  612. package/templates/stubs/commands/cache.md.template +2 -0
  613. package/templates/stubs/commands/checkpoint.md.template +2 -0
  614. package/templates/stubs/commands/classify.md.template +2 -0
  615. package/templates/stubs/commands/compete.md.template +2 -0
  616. package/templates/stubs/commands/costs.md.template +2 -0
  617. package/templates/stubs/commands/estimate.md.template +2 -0
  618. package/templates/stubs/commands/explore.md.template +2 -0
  619. package/templates/stubs/commands/feature.md.template +2 -0
  620. package/templates/stubs/commands/forget.md.template +2 -0
  621. package/templates/stubs/commands/global-recall.md.template +2 -0
  622. package/templates/stubs/commands/global-remember.md.template +2 -0
  623. package/templates/stubs/commands/health.md.template +2 -0
  624. package/templates/stubs/commands/help.md.template +2 -0
  625. package/templates/stubs/commands/observe.md.template +2 -0
  626. package/templates/stubs/commands/pr-review.md.template +2 -0
  627. package/templates/stubs/commands/predict-cost.md.template +2 -0
  628. package/templates/stubs/commands/profile.md.template +2 -0
  629. package/templates/stubs/commands/reasoning.md.template +2 -0
  630. package/templates/stubs/commands/recall.md.template +2 -0
  631. package/templates/stubs/commands/remember.md.template +2 -0
  632. package/templates/stubs/commands/replay.md.template +2 -0
  633. package/templates/stubs/commands/restore.md.template +2 -0
  634. package/templates/stubs/commands/retrospective.md.template +2 -0
  635. package/templates/stubs/commands/slo.md.template +2 -0
  636. package/templates/stubs/commands/spec.md.template +2 -0
  637. package/templates/stubs/commands/sync.md.template +2 -0
  638. package/templates/stubs/commands/task.md.template +2 -0
  639. package/templates/stubs/commands/trace.md.template +2 -0
  640. package/templates/stubs/commands/visualize.md.template +2 -0
  641. package/templates/stubs/commands/workflow.md.template +2 -0
  642. package/templates/synchronizations/archive/adaptive-learning.yaml.template +595 -0
  643. package/templates/synchronizations/archive/code-understanding-flow.yaml.template +533 -0
  644. package/templates/synchronizations/archive/collaboration-flow.yaml.template +521 -0
  645. package/templates/synchronizations/archive/context-folding.yaml.template +353 -0
  646. package/templates/synchronizations/archive/dead-letter-queue.yaml.template +530 -0
  647. package/templates/synchronizations/archive/documentation-flow.yaml.template +560 -0
  648. package/templates/synchronizations/archive/error-recovery-flow.yaml.template +1031 -0
  649. package/templates/synchronizations/archive/execution-loop.yaml.template +336 -0
  650. package/templates/synchronizations/archive/exploration-flow.yaml.template +369 -0
  651. package/templates/synchronizations/archive/feature-development.yaml.template +2145 -0
  652. package/templates/synchronizations/archive/learning-loop.yaml.template +657 -0
  653. package/templates/synchronizations/archive/multi-verify.yaml.template +346 -0
  654. package/templates/synchronizations/archive/planning-flow.yaml.template +312 -0
  655. package/templates/synchronizations/archive/retrospective-flow.yaml.template +277 -0
  656. package/templates/synchronizations/archive/security-flow.yaml.template +477 -0
  657. package/templates/synchronizations/archive/slo-monitoring.yaml.template +209 -0
  658. package/templates/synchronizations/archive/task-routing.yaml.template +489 -0
  659. package/templates/synchronizations/archive/test-driven.yaml.template +291 -0
  660. package/templates/synchronizations/archive/tool-routing.yaml.template +326 -0
  661. package/templates/synchronizations/archive/verification-flow.yaml.template +407 -0
  662. package/templates/synchronizations/error-policy.yaml.template +188 -0
  663. package/templates/synchronizations/main.sync.template +319 -0
  664. package/templates/synchronizations/slo-registry.yaml.template +229 -0
  665. package/templates/tasks/task.yaml.template +67 -0
  666. 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.