@codemieai/code 0.0.44 → 0.0.46

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 (408) hide show
  1. package/dist/agents/core/BaseAgentAdapter.d.ts +9 -1
  2. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  3. package/dist/agents/core/BaseAgentAdapter.js +31 -3
  4. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  5. package/dist/agents/core/metrics/types.d.ts +0 -6
  6. package/dist/agents/core/metrics/types.d.ts.map +1 -1
  7. package/dist/agents/core/session/BaseSessionAdapter.d.ts +0 -6
  8. package/dist/agents/core/session/BaseSessionAdapter.d.ts.map +1 -1
  9. package/dist/agents/core/types.d.ts +83 -0
  10. package/dist/agents/core/types.d.ts.map +1 -1
  11. package/dist/agents/plugins/claude/claude.plugin-installer.d.ts +0 -11
  12. package/dist/agents/plugins/claude/claude.plugin-installer.d.ts.map +1 -1
  13. package/dist/agents/plugins/claude/claude.plugin-installer.js +0 -32
  14. package/dist/agents/plugins/claude/claude.plugin-installer.js.map +1 -1
  15. package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
  16. package/dist/agents/plugins/claude/claude.plugin.js +10 -1
  17. package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
  18. package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -1
  19. package/dist/agents/plugins/claude/claude.session.js +1 -28
  20. package/dist/agents/plugins/claude/claude.session.js.map +1 -1
  21. package/dist/agents/plugins/claude/plugin/.claude-plugin/plugin.json +1 -1
  22. package/dist/agents/plugins/claude/plugin/README.md +1 -14
  23. package/dist/agents/plugins/claude/plugin/hooks/hooks.json +10 -5
  24. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/SKILL.md +206 -0
  25. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-agent.md +45 -0
  26. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-claude-md-snippet.md +40 -0
  27. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-command.md +30 -0
  28. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-hooks.json +23 -0
  29. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/bad-skill.md +48 -0
  30. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-agent.md +145 -0
  31. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-claude-md-snippet.md +126 -0
  32. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-command.md +170 -0
  33. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-hooks.json +46 -0
  34. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/good-skill.md +144 -0
  35. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/examples/sample-report.md +223 -0
  36. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/references/best-practices.md +510 -0
  37. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/references/component-checklists.md +413 -0
  38. package/dist/agents/plugins/claude/plugin/skills/claude-setup-audit/scripts/scan-repo.sh +162 -0
  39. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.d.ts.map +1 -1
  40. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js +3 -78
  41. package/dist/agents/plugins/claude/session/processors/claude.conversations-processor.js.map +1 -1
  42. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.d.ts.map +1 -1
  43. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js +7 -16
  44. package/dist/agents/plugins/claude/session/processors/claude.metrics-processor.js.map +1 -1
  45. package/dist/agents/plugins/claude/sounds-installer.d.ts +1 -1
  46. package/dist/agents/plugins/claude/sounds-installer.d.ts.map +1 -1
  47. package/dist/agents/plugins/claude/sounds-installer.js +1 -4
  48. package/dist/agents/plugins/claude/sounds-installer.js.map +1 -1
  49. package/dist/agents/plugins/codemie-code.plugin.d.ts +1 -4
  50. package/dist/agents/plugins/codemie-code.plugin.d.ts.map +1 -1
  51. package/dist/agents/plugins/codemie-code.plugin.js +26 -81
  52. package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
  53. package/dist/agents/plugins/gemini/gemini.plugin.d.ts.map +1 -1
  54. package/dist/agents/plugins/gemini/gemini.plugin.js +10 -0
  55. package/dist/agents/plugins/gemini/gemini.plugin.js.map +1 -1
  56. package/dist/agents/plugins/gemini/gemini.session-adapter.d.ts +1 -8
  57. package/dist/agents/plugins/gemini/gemini.session-adapter.d.ts.map +1 -1
  58. package/dist/agents/plugins/gemini/gemini.session-adapter.js +2 -30
  59. package/dist/agents/plugins/gemini/gemini.session-adapter.js.map +1 -1
  60. package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.d.ts.map +1 -1
  61. package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.js +2 -8
  62. package/dist/agents/plugins/gemini/session/processors/gemini.conversations-processor.js.map +1 -1
  63. package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.d.ts.map +1 -1
  64. package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.js +0 -7
  65. package/dist/agents/plugins/gemini/session/processors/gemini.metrics-processor.js.map +1 -1
  66. package/dist/agents/plugins/opencode/index.d.ts +1 -1
  67. package/dist/agents/plugins/opencode/index.d.ts.map +1 -1
  68. package/dist/agents/plugins/opencode/index.js.map +1 -1
  69. package/dist/agents/plugins/opencode/opencode-message-types.d.ts +2 -22
  70. package/dist/agents/plugins/opencode/opencode-message-types.d.ts.map +1 -1
  71. package/dist/agents/plugins/opencode/opencode-message-types.js.map +1 -1
  72. package/dist/agents/plugins/opencode/opencode.session.d.ts.map +1 -1
  73. package/dist/agents/plugins/opencode/opencode.session.js +5 -30
  74. package/dist/agents/plugins/opencode/opencode.session.js.map +1 -1
  75. package/dist/agents/plugins/opencode/opencode.sqlite-reader.d.ts.map +1 -1
  76. package/dist/agents/plugins/opencode/opencode.sqlite-reader.js +0 -2
  77. package/dist/agents/plugins/opencode/opencode.sqlite-reader.js.map +1 -1
  78. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.d.ts +0 -8
  79. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.d.ts.map +1 -1
  80. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.js +8 -97
  81. package/dist/agents/plugins/opencode/session/processors/opencode.metrics-processor.js.map +1 -1
  82. package/dist/cli/commands/analytics/aggregator.d.ts +0 -8
  83. package/dist/cli/commands/analytics/aggregator.d.ts.map +1 -1
  84. package/dist/cli/commands/analytics/aggregator.js +5 -100
  85. package/dist/cli/commands/analytics/aggregator.js.map +1 -1
  86. package/dist/cli/commands/analytics/data-loader.d.ts +0 -7
  87. package/dist/cli/commands/analytics/data-loader.d.ts.map +1 -1
  88. package/dist/cli/commands/analytics/data-loader.js +3 -10
  89. package/dist/cli/commands/analytics/data-loader.js.map +1 -1
  90. package/dist/cli/commands/analytics/exporter.d.ts.map +1 -1
  91. package/dist/cli/commands/analytics/exporter.js +0 -12
  92. package/dist/cli/commands/analytics/exporter.js.map +1 -1
  93. package/dist/cli/commands/analytics/formatter.d.ts.map +1 -1
  94. package/dist/cli/commands/analytics/formatter.js +0 -9
  95. package/dist/cli/commands/analytics/formatter.js.map +1 -1
  96. package/dist/cli/commands/analytics/types.d.ts +0 -17
  97. package/dist/cli/commands/analytics/types.d.ts.map +1 -1
  98. package/dist/cli/commands/assistants/chat/historyLoader.d.ts +22 -0
  99. package/dist/cli/commands/assistants/chat/historyLoader.d.ts.map +1 -0
  100. package/dist/cli/commands/assistants/chat/historyLoader.js +80 -0
  101. package/dist/cli/commands/assistants/chat/historyLoader.js.map +1 -0
  102. package/dist/cli/commands/assistants/{chat.d.ts → chat/index.d.ts} +1 -1
  103. package/dist/cli/commands/assistants/chat/index.d.ts.map +1 -0
  104. package/dist/cli/commands/assistants/{chat.js → chat/index.js} +54 -45
  105. package/dist/cli/commands/assistants/chat/index.js.map +1 -0
  106. package/dist/cli/commands/assistants/chat/types.d.ts +27 -0
  107. package/dist/cli/commands/assistants/chat/types.d.ts.map +1 -0
  108. package/dist/cli/commands/assistants/chat/types.js +5 -0
  109. package/dist/cli/commands/assistants/chat/types.js.map +1 -0
  110. package/dist/cli/commands/assistants/chat/utils.d.ts +12 -0
  111. package/dist/cli/commands/assistants/chat/utils.d.ts.map +1 -0
  112. package/dist/cli/commands/assistants/chat/utils.js +24 -0
  113. package/dist/cli/commands/assistants/chat/utils.js.map +1 -0
  114. package/dist/cli/commands/assistants/constants.d.ts +1 -0
  115. package/dist/cli/commands/assistants/constants.d.ts.map +1 -1
  116. package/dist/cli/commands/assistants/constants.js.map +1 -1
  117. package/dist/cli/commands/assistants/index.js +2 -2
  118. package/dist/cli/commands/assistants/index.js.map +1 -1
  119. package/dist/cli/commands/assistants/setup/generators/claude-agent-generator.js +1 -1
  120. package/dist/cli/commands/assistants/setup/generators/claude-skill-generator.js +1 -1
  121. package/dist/cli/commands/assistants/setup/index.js +4 -4
  122. package/dist/cli/commands/assistants/setup/index.js.map +1 -1
  123. package/dist/cli/commands/assistants/setup/selection/index.d.ts +1 -1
  124. package/dist/cli/commands/assistants/setup/selection/index.d.ts.map +1 -1
  125. package/dist/cli/commands/assistants/setup/selection/index.js +5 -3
  126. package/dist/cli/commands/assistants/setup/selection/index.js.map +1 -1
  127. package/dist/cli/commands/assistants/setup/selection/interactive-prompt.d.ts.map +1 -1
  128. package/dist/cli/commands/assistants/setup/selection/interactive-prompt.js +7 -1
  129. package/dist/cli/commands/assistants/setup/selection/interactive-prompt.js.map +1 -1
  130. package/dist/cli/commands/assistants/setup/selection/types.d.ts +2 -0
  131. package/dist/cli/commands/assistants/setup/selection/types.d.ts.map +1 -1
  132. package/dist/cli/commands/assistants/setup/selection/ui.d.ts.map +1 -1
  133. package/dist/cli/commands/assistants/setup/selection/ui.js +15 -4
  134. package/dist/cli/commands/assistants/setup/selection/ui.js.map +1 -1
  135. package/dist/cli/commands/hook.d.ts.map +1 -1
  136. package/dist/cli/commands/hook.js +22 -6
  137. package/dist/cli/commands/hook.js.map +1 -1
  138. package/dist/cli/commands/plugin.d.ts +16 -0
  139. package/dist/cli/commands/plugin.d.ts.map +1 -0
  140. package/dist/cli/commands/plugin.js +210 -0
  141. package/dist/cli/commands/plugin.js.map +1 -0
  142. package/dist/cli/commands/setup.js +1 -1
  143. package/dist/cli/commands/skill.d.ts.map +1 -1
  144. package/dist/cli/commands/skill.js +3 -1
  145. package/dist/cli/commands/skill.js.map +1 -1
  146. package/dist/cli/commands/sound.d.ts +3 -0
  147. package/dist/cli/commands/sound.d.ts.map +1 -0
  148. package/dist/cli/commands/sound.js +87 -0
  149. package/dist/cli/commands/sound.js.map +1 -0
  150. package/dist/cli/commands/test-metrics.js +3 -5
  151. package/dist/cli/commands/test-metrics.js.map +1 -1
  152. package/dist/cli/index.js +4 -0
  153. package/dist/cli/index.js.map +1 -1
  154. package/dist/env/types.d.ts +8 -0
  155. package/dist/env/types.d.ts.map +1 -1
  156. package/dist/env/types.js.map +1 -1
  157. package/dist/plugins/core/index.d.ts +13 -0
  158. package/dist/plugins/core/index.d.ts.map +1 -0
  159. package/dist/plugins/core/index.js +15 -0
  160. package/dist/plugins/core/index.js.map +1 -0
  161. package/dist/plugins/core/manifest-parser.d.ts +28 -0
  162. package/dist/plugins/core/manifest-parser.d.ts.map +1 -0
  163. package/dist/plugins/core/manifest-parser.js +137 -0
  164. package/dist/plugins/core/manifest-parser.js.map +1 -0
  165. package/dist/plugins/core/plugin-cache.d.ts +65 -0
  166. package/dist/plugins/core/plugin-cache.d.ts.map +1 -0
  167. package/dist/plugins/core/plugin-cache.js +170 -0
  168. package/dist/plugins/core/plugin-cache.js.map +1 -0
  169. package/dist/plugins/core/plugin-loader.d.ts +21 -0
  170. package/dist/plugins/core/plugin-loader.d.ts.map +1 -0
  171. package/dist/plugins/core/plugin-loader.js +55 -0
  172. package/dist/plugins/core/plugin-loader.js.map +1 -0
  173. package/dist/plugins/core/plugin-resolver.d.ts +33 -0
  174. package/dist/plugins/core/plugin-resolver.d.ts.map +1 -0
  175. package/dist/plugins/core/plugin-resolver.js +118 -0
  176. package/dist/plugins/core/plugin-resolver.js.map +1 -0
  177. package/dist/plugins/core/types.d.ts +183 -0
  178. package/dist/plugins/core/types.d.ts.map +1 -0
  179. package/dist/plugins/core/types.js +22 -0
  180. package/dist/plugins/core/types.js.map +1 -0
  181. package/dist/plugins/loaders/agents-loader.d.ts +19 -0
  182. package/dist/plugins/loaders/agents-loader.d.ts.map +1 -0
  183. package/dist/plugins/loaders/agents-loader.js +92 -0
  184. package/dist/plugins/loaders/agents-loader.js.map +1 -0
  185. package/dist/plugins/loaders/hooks-loader.d.ts +27 -0
  186. package/dist/plugins/loaders/hooks-loader.d.ts.map +1 -0
  187. package/dist/plugins/loaders/hooks-loader.js +94 -0
  188. package/dist/plugins/loaders/hooks-loader.js.map +1 -0
  189. package/dist/plugins/loaders/mcp-loader.d.ts +24 -0
  190. package/dist/plugins/loaders/mcp-loader.d.ts.map +1 -0
  191. package/dist/plugins/loaders/mcp-loader.js +86 -0
  192. package/dist/plugins/loaders/mcp-loader.js.map +1 -0
  193. package/dist/plugins/loaders/skills-loader.d.ts +30 -0
  194. package/dist/plugins/loaders/skills-loader.d.ts.map +1 -0
  195. package/dist/plugins/loaders/skills-loader.js +167 -0
  196. package/dist/plugins/loaders/skills-loader.js.map +1 -0
  197. package/dist/providers/plugins/bedrock/bedrock.template.js +1 -1
  198. package/dist/providers/plugins/jwt/jwt.setup-steps.js +1 -1
  199. package/dist/providers/plugins/jwt/jwt.template.js +1 -1
  200. package/dist/providers/plugins/litellm/litellm.template.js +1 -1
  201. package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js +10 -0
  202. package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js.map +1 -1
  203. package/dist/providers/plugins/sso/proxy/proxy-types.d.ts +3 -0
  204. package/dist/providers/plugins/sso/proxy/proxy-types.d.ts.map +1 -1
  205. package/dist/providers/plugins/sso/session/SessionSyncer.d.ts.map +1 -1
  206. package/dist/providers/plugins/sso/session/SessionSyncer.js +2 -3
  207. package/dist/providers/plugins/sso/session/SessionSyncer.js.map +1 -1
  208. package/dist/providers/plugins/sso/session/processors/conversations/apiClient.d.ts +21 -0
  209. package/dist/providers/plugins/sso/session/processors/conversations/apiClient.d.ts.map +1 -0
  210. package/dist/providers/plugins/sso/session/processors/conversations/apiClient.js +159 -0
  211. package/dist/providers/plugins/sso/session/processors/conversations/apiClient.js.map +1 -0
  212. package/dist/providers/plugins/sso/session/processors/conversations/constants.d.ts +24 -0
  213. package/dist/providers/plugins/sso/session/processors/conversations/constants.d.ts.map +1 -0
  214. package/dist/providers/plugins/sso/session/processors/conversations/constants.js +36 -0
  215. package/dist/providers/plugins/sso/session/processors/conversations/constants.js.map +1 -0
  216. package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.d.ts +19 -0
  217. package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.d.ts.map +1 -0
  218. package/dist/providers/plugins/sso/session/processors/conversations/{conversation-sync-processor.js → syncProcessor.js} +48 -33
  219. package/dist/providers/plugins/sso/session/processors/conversations/syncProcessor.js.map +1 -0
  220. package/dist/providers/plugins/sso/session/processors/conversations/{conversation-types.d.ts → types.d.ts} +14 -2
  221. package/dist/providers/plugins/sso/session/processors/conversations/types.d.ts.map +1 -0
  222. package/dist/providers/plugins/sso/session/processors/conversations/types.js +14 -0
  223. package/dist/providers/plugins/sso/session/processors/conversations/types.js.map +1 -0
  224. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.d.ts.map +1 -1
  225. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js +16 -17
  226. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js.map +1 -1
  227. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.d.ts +6 -5
  228. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.d.ts.map +1 -1
  229. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.js +40 -39
  230. package/dist/providers/plugins/sso/session/processors/metrics/metrics-api-client.js.map +1 -1
  231. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.d.ts.map +1 -1
  232. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js +2 -6
  233. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js.map +1 -1
  234. package/dist/providers/plugins/sso/session/processors/metrics/metrics-types.d.ts +74 -31
  235. package/dist/providers/plugins/sso/session/processors/metrics/metrics-types.d.ts.map +1 -1
  236. package/dist/providers/plugins/sso/sso.template.js +1 -1
  237. package/dist/{agents/codemie-code/skills → skills}/core/SkillDiscovery.d.ts +10 -0
  238. package/dist/skills/core/SkillDiscovery.d.ts.map +1 -0
  239. package/dist/{agents/codemie-code/skills → skills}/core/SkillDiscovery.js +64 -7
  240. package/dist/skills/core/SkillDiscovery.js.map +1 -0
  241. package/dist/skills/core/SkillManager.d.ts.map +1 -0
  242. package/dist/{agents/codemie-code/skills → skills}/core/SkillManager.js +15 -10
  243. package/dist/skills/core/SkillManager.js.map +1 -0
  244. package/dist/{agents/codemie-code/skills → skills}/core/types.d.ts +3 -25
  245. package/dist/skills/core/types.d.ts.map +1 -0
  246. package/dist/skills/core/types.js.map +1 -0
  247. package/dist/{agents/codemie-code/skills → skills}/index.d.ts +3 -3
  248. package/dist/skills/index.d.ts.map +1 -0
  249. package/dist/{agents/codemie-code/skills → skills}/index.js +2 -2
  250. package/dist/skills/index.js.map +1 -0
  251. package/dist/skills/sync/SkillSync.d.ts.map +1 -0
  252. package/dist/{agents/codemie-code/skills → skills}/sync/SkillSync.js +5 -3
  253. package/dist/skills/sync/SkillSync.js.map +1 -0
  254. package/dist/{agents/codemie-code/skills → skills}/utils/content-loader.d.ts +2 -12
  255. package/dist/skills/utils/content-loader.d.ts.map +1 -0
  256. package/dist/{agents/codemie-code/skills → skills}/utils/content-loader.js +3 -8
  257. package/dist/skills/utils/content-loader.js.map +1 -0
  258. package/dist/skills/utils/pattern-matcher.d.ts.map +1 -0
  259. package/dist/skills/utils/pattern-matcher.js.map +1 -0
  260. package/dist/utils/extensions-scan.d.ts +27 -0
  261. package/dist/utils/extensions-scan.d.ts.map +1 -0
  262. package/dist/utils/extensions-scan.js +182 -0
  263. package/dist/utils/extensions-scan.js.map +1 -0
  264. package/dist/utils/frontmatter.d.ts.map +1 -0
  265. package/dist/utils/frontmatter.js.map +1 -0
  266. package/package.json +1 -1
  267. package/dist/agents/codemie-code/agent.d.ts +0 -129
  268. package/dist/agents/codemie-code/agent.d.ts.map +0 -1
  269. package/dist/agents/codemie-code/agent.js +0 -1106
  270. package/dist/agents/codemie-code/agent.js.map +0 -1
  271. package/dist/agents/codemie-code/config.d.ts +0 -40
  272. package/dist/agents/codemie-code/config.d.ts.map +0 -1
  273. package/dist/agents/codemie-code/config.js +0 -293
  274. package/dist/agents/codemie-code/config.js.map +0 -1
  275. package/dist/agents/codemie-code/filters.d.ts +0 -91
  276. package/dist/agents/codemie-code/filters.d.ts.map +0 -1
  277. package/dist/agents/codemie-code/filters.js +0 -328
  278. package/dist/agents/codemie-code/filters.js.map +0 -1
  279. package/dist/agents/codemie-code/index.d.ts +0 -93
  280. package/dist/agents/codemie-code/index.d.ts.map +0 -1
  281. package/dist/agents/codemie-code/index.js +0 -359
  282. package/dist/agents/codemie-code/index.js.map +0 -1
  283. package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts +0 -87
  284. package/dist/agents/codemie-code/modes/contextAwarePlanning.d.ts.map +0 -1
  285. package/dist/agents/codemie-code/modes/contextAwarePlanning.js +0 -957
  286. package/dist/agents/codemie-code/modes/contextAwarePlanning.js.map +0 -1
  287. package/dist/agents/codemie-code/modes/planMode.d.ts +0 -116
  288. package/dist/agents/codemie-code/modes/planMode.d.ts.map +0 -1
  289. package/dist/agents/codemie-code/modes/planMode.js +0 -537
  290. package/dist/agents/codemie-code/modes/planMode.js.map +0 -1
  291. package/dist/agents/codemie-code/prompts.d.ts +0 -47
  292. package/dist/agents/codemie-code/prompts.d.ts.map +0 -1
  293. package/dist/agents/codemie-code/prompts.js +0 -207
  294. package/dist/agents/codemie-code/prompts.js.map +0 -1
  295. package/dist/agents/codemie-code/skills/core/SkillDiscovery.d.ts.map +0 -1
  296. package/dist/agents/codemie-code/skills/core/SkillDiscovery.js.map +0 -1
  297. package/dist/agents/codemie-code/skills/core/SkillManager.d.ts.map +0 -1
  298. package/dist/agents/codemie-code/skills/core/SkillManager.js.map +0 -1
  299. package/dist/agents/codemie-code/skills/core/types.d.ts.map +0 -1
  300. package/dist/agents/codemie-code/skills/core/types.js.map +0 -1
  301. package/dist/agents/codemie-code/skills/index.d.ts.map +0 -1
  302. package/dist/agents/codemie-code/skills/index.js.map +0 -1
  303. package/dist/agents/codemie-code/skills/sync/SkillSync.d.ts.map +0 -1
  304. package/dist/agents/codemie-code/skills/sync/SkillSync.js.map +0 -1
  305. package/dist/agents/codemie-code/skills/utils/content-loader.d.ts.map +0 -1
  306. package/dist/agents/codemie-code/skills/utils/content-loader.js.map +0 -1
  307. package/dist/agents/codemie-code/skills/utils/frontmatter.d.ts.map +0 -1
  308. package/dist/agents/codemie-code/skills/utils/frontmatter.js.map +0 -1
  309. package/dist/agents/codemie-code/skills/utils/pattern-matcher.d.ts.map +0 -1
  310. package/dist/agents/codemie-code/skills/utils/pattern-matcher.js.map +0 -1
  311. package/dist/agents/codemie-code/storage/todoStorage.d.ts +0 -78
  312. package/dist/agents/codemie-code/storage/todoStorage.d.ts.map +0 -1
  313. package/dist/agents/codemie-code/storage/todoStorage.js +0 -225
  314. package/dist/agents/codemie-code/storage/todoStorage.js.map +0 -1
  315. package/dist/agents/codemie-code/tokenUtils.d.ts +0 -108
  316. package/dist/agents/codemie-code/tokenUtils.d.ts.map +0 -1
  317. package/dist/agents/codemie-code/tokenUtils.js +0 -220
  318. package/dist/agents/codemie-code/tokenUtils.js.map +0 -1
  319. package/dist/agents/codemie-code/toolMetadata.d.ts +0 -15
  320. package/dist/agents/codemie-code/toolMetadata.d.ts.map +0 -1
  321. package/dist/agents/codemie-code/toolMetadata.js +0 -316
  322. package/dist/agents/codemie-code/toolMetadata.js.map +0 -1
  323. package/dist/agents/codemie-code/tools/assistant-invocation.d.ts +0 -47
  324. package/dist/agents/codemie-code/tools/assistant-invocation.d.ts.map +0 -1
  325. package/dist/agents/codemie-code/tools/assistant-invocation.js +0 -129
  326. package/dist/agents/codemie-code/tools/assistant-invocation.js.map +0 -1
  327. package/dist/agents/codemie-code/tools/index.d.ts +0 -111
  328. package/dist/agents/codemie-code/tools/index.d.ts.map +0 -1
  329. package/dist/agents/codemie-code/tools/index.js +0 -424
  330. package/dist/agents/codemie-code/tools/index.js.map +0 -1
  331. package/dist/agents/codemie-code/tools/planning.d.ts +0 -54
  332. package/dist/agents/codemie-code/tools/planning.d.ts.map +0 -1
  333. package/dist/agents/codemie-code/tools/planning.js +0 -226
  334. package/dist/agents/codemie-code/tools/planning.js.map +0 -1
  335. package/dist/agents/codemie-code/types.d.ts +0 -459
  336. package/dist/agents/codemie-code/types.d.ts.map +0 -1
  337. package/dist/agents/codemie-code/types.js +0 -59
  338. package/dist/agents/codemie-code/types.js.map +0 -1
  339. package/dist/agents/codemie-code/ui/autocomplete.d.ts +0 -98
  340. package/dist/agents/codemie-code/ui/autocomplete.d.ts.map +0 -1
  341. package/dist/agents/codemie-code/ui/autocomplete.js +0 -145
  342. package/dist/agents/codemie-code/ui/autocomplete.js.map +0 -1
  343. package/dist/agents/codemie-code/ui/keyHandlers.d.ts +0 -112
  344. package/dist/agents/codemie-code/ui/keyHandlers.d.ts.map +0 -1
  345. package/dist/agents/codemie-code/ui/keyHandlers.js +0 -415
  346. package/dist/agents/codemie-code/ui/keyHandlers.js.map +0 -1
  347. package/dist/agents/codemie-code/ui/mentions.d.ts +0 -86
  348. package/dist/agents/codemie-code/ui/mentions.d.ts.map +0 -1
  349. package/dist/agents/codemie-code/ui/mentions.js +0 -122
  350. package/dist/agents/codemie-code/ui/mentions.js.map +0 -1
  351. package/dist/agents/codemie-code/ui/progressTracker.d.ts +0 -125
  352. package/dist/agents/codemie-code/ui/progressTracker.d.ts.map +0 -1
  353. package/dist/agents/codemie-code/ui/progressTracker.js +0 -343
  354. package/dist/agents/codemie-code/ui/progressTracker.js.map +0 -1
  355. package/dist/agents/codemie-code/ui/terminalCodes.d.ts +0 -38
  356. package/dist/agents/codemie-code/ui/terminalCodes.d.ts.map +0 -1
  357. package/dist/agents/codemie-code/ui/terminalCodes.js +0 -42
  358. package/dist/agents/codemie-code/ui/terminalCodes.js.map +0 -1
  359. package/dist/agents/codemie-code/ui/todoPanel.d.ts +0 -112
  360. package/dist/agents/codemie-code/ui/todoPanel.d.ts.map +0 -1
  361. package/dist/agents/codemie-code/ui/todoPanel.js +0 -321
  362. package/dist/agents/codemie-code/ui/todoPanel.js.map +0 -1
  363. package/dist/agents/codemie-code/ui.d.ts +0 -180
  364. package/dist/agents/codemie-code/ui.d.ts.map +0 -1
  365. package/dist/agents/codemie-code/ui.js +0 -1345
  366. package/dist/agents/codemie-code/ui.js.map +0 -1
  367. package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts +0 -87
  368. package/dist/agents/codemie-code/utils/progressionEnforcer.d.ts.map +0 -1
  369. package/dist/agents/codemie-code/utils/progressionEnforcer.js +0 -293
  370. package/dist/agents/codemie-code/utils/progressionEnforcer.js.map +0 -1
  371. package/dist/agents/codemie-code/utils/todoParser.d.ts +0 -41
  372. package/dist/agents/codemie-code/utils/todoParser.d.ts.map +0 -1
  373. package/dist/agents/codemie-code/utils/todoParser.js +0 -305
  374. package/dist/agents/codemie-code/utils/todoParser.js.map +0 -1
  375. package/dist/agents/codemie-code/utils/todoValidator.d.ts +0 -65
  376. package/dist/agents/codemie-code/utils/todoValidator.d.ts.map +0 -1
  377. package/dist/agents/codemie-code/utils/todoValidator.js +0 -249
  378. package/dist/agents/codemie-code/utils/todoValidator.js.map +0 -1
  379. package/dist/agents/codemie-code/validators/planValidator.d.ts +0 -94
  380. package/dist/agents/codemie-code/validators/planValidator.d.ts.map +0 -1
  381. package/dist/agents/codemie-code/validators/planValidator.js +0 -281
  382. package/dist/agents/codemie-code/validators/planValidator.js.map +0 -1
  383. package/dist/agents/plugins/claude/plugin/hooks/hooks.windows.json +0 -98
  384. package/dist/agents/plugins/claude/plugin/sounds/play-random-sound.ps1 +0 -112
  385. package/dist/agents/plugins/claude/plugin/sounds/play-random-sound.sh +0 -58
  386. package/dist/agents/plugins/gemini/session/utils/token-aggregator.d.ts +0 -26
  387. package/dist/agents/plugins/gemini/session/utils/token-aggregator.d.ts.map +0 -1
  388. package/dist/agents/plugins/gemini/session/utils/token-aggregator.js +0 -38
  389. package/dist/agents/plugins/gemini/session/utils/token-aggregator.js.map +0 -1
  390. package/dist/cli/commands/assistants/chat.d.ts.map +0 -1
  391. package/dist/cli/commands/assistants/chat.js.map +0 -1
  392. package/dist/providers/plugins/sso/session/processors/conversations/conversation-api-client.d.ts +0 -26
  393. package/dist/providers/plugins/sso/session/processors/conversations/conversation-api-client.d.ts.map +0 -1
  394. package/dist/providers/plugins/sso/session/processors/conversations/conversation-api-client.js +0 -146
  395. package/dist/providers/plugins/sso/session/processors/conversations/conversation-api-client.js.map +0 -1
  396. package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.d.ts +0 -22
  397. package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.d.ts.map +0 -1
  398. package/dist/providers/plugins/sso/session/processors/conversations/conversation-sync-processor.js.map +0 -1
  399. package/dist/providers/plugins/sso/session/processors/conversations/conversation-types.d.ts.map +0 -1
  400. package/dist/providers/plugins/sso/session/processors/conversations/conversation-types.js +0 -7
  401. package/dist/providers/plugins/sso/session/processors/conversations/conversation-types.js.map +0 -1
  402. /package/dist/{agents/codemie-code/skills → skills}/core/SkillManager.d.ts +0 -0
  403. /package/dist/{agents/codemie-code/skills → skills}/core/types.js +0 -0
  404. /package/dist/{agents/codemie-code/skills → skills}/sync/SkillSync.d.ts +0 -0
  405. /package/dist/{agents/codemie-code/skills → skills}/utils/pattern-matcher.d.ts +0 -0
  406. /package/dist/{agents/codemie-code/skills → skills}/utils/pattern-matcher.js +0 -0
  407. /package/dist/{agents/codemie-code/skills/utils → utils}/frontmatter.d.ts +0 -0
  408. /package/dist/{agents/codemie-code/skills/utils → utils}/frontmatter.js +0 -0
@@ -0,0 +1,413 @@
1
+ # Component Scoring Checklists
2
+
3
+ Full scoring rubrics for all Claude Code components. Use during Phase 2 of the assessment.
4
+
5
+ **Scoring logic per criterion:**
6
+ - ✅ Pass → full points
7
+ - ⚠️ Partial → half points (present but incomplete/weak — round down)
8
+ - ❌ Fail → 0 points
9
+
10
+ ---
11
+
12
+ ## Skill Type Classification
13
+
14
+ Run this check **before** applying any scoring rubric to a skill file.
15
+
16
+ ```bash
17
+ grep -i "codemie.*assistant\|codemie.*chat\|assistants chat" SKILL.md
18
+ ```
19
+
20
+ | Result | Skill Type | Rubric to Apply |
21
+ |--------|-----------|----------------|
22
+ | Match found | **Codemie-delegating** — thin API wrapper that routes to a Codemie assistant backend | Reduced rubric (21 pts max, see below) |
23
+ | No match | **Standard skill** — executes locally via Claude tool calls | Full rubric (32 pts max) |
24
+
25
+ ### Codemie-Delegating Skill: Exemptions Table
26
+
27
+ These criteria are **N/A** (skip, do not score, do not penalise):
28
+
29
+ | Criterion | Why exempted |
30
+ |-----------|-------------|
31
+ | S1.4 `allowed-tools` | No local tool execution — the assistant handles it |
32
+ | S2.1 Methodology/workflow | No local workflow steps — delegation is the entire "workflow" |
33
+ | S2.2 Output format | Output is determined by the backend assistant |
34
+ | S2.3 Examples | Usage pattern differs from standard skills; not applicable |
35
+ | S2.4 Checklists | No step-by-step process to check off |
36
+
37
+ **Applicable criteria for codemie-delegating skills** (21 pts max):
38
+ - S1.1 (3), S1.2 (3), S1.3 (3) — identity always matters
39
+ - S3.1 (1), S3.2 (1, **includes UUID check — see below**), S3.3 (1), S3.4 (1) — technical hygiene
40
+ - S4.1 (2), S4.2 (2), S4.3 (2), S4.4 (2) — design quality
41
+
42
+ **Scoring formula for codemie-delegating skills**:
43
+ ```
44
+ Score = (points obtained from applicable criteria / 21) × 100
45
+ ```
46
+
47
+ ---
48
+
49
+ ## Skills (32 points max)
50
+
51
+ ### Structure (weight 3×) — 12 points
52
+
53
+ | ID | Criterion | Pts | Detection | Pass Condition |
54
+ |----|-----------|-----|-----------|----------------|
55
+ | S1.1 | Valid SKILL.md filename or frontmatter | 3 | Filename == `SKILL.md` OR YAML frontmatter with `name:` field | File correctly identified as skill |
56
+ | S1.2 | Name follows convention | 3 | Frontmatter `name:` matches `^[a-z0-9-]{1,64}$` | Lowercase, hyphens only, 1–64 chars |
57
+ | S1.3 | Description non-empty | 3 | `description` field exists and length >20 chars | Not empty, not placeholder text |
58
+ | S1.4 | `allowed-tools` specified | 3 | Frontmatter has `allowed-tools:` field | List or `all` value present |
59
+
60
+ **Partial credit (⚠️)**:
61
+ - S1.2: Name exists but uses underscores or has uppercase → 1.5 pts
62
+ - S1.3: Description exists but <20 chars or is generic ("A skill for…") → 1.5 pts
63
+ - S1.4: `allowed-tools` present but empty list `[]` → 1.5 pts
64
+
65
+ ### Content (weight 2×) — 8 points
66
+
67
+ | ID | Criterion | Pts | Detection | Pass Condition |
68
+ |----|-----------|-----|-----------|----------------|
69
+ | S2.1 | Methodology or workflow described | 2 | Section titled `Methodology`, `Workflow`, `Process`, or numbered steps present | Structured process documented |
70
+ | S2.2 | Output format specified | 2 | Section `Output`, `Format`, `Deliverables`, or explicit output type mentioned | Output shape defined |
71
+ | S2.3 | Examples provided | 2 | Section `Examples`, `Usage`, `Scenarios` with code blocks or concrete instances | ≥1 concrete example |
72
+ | S2.4 | Actionable checklists | 2 | Markdown checkboxes `- [ ]` or `- [x]` present | ≥3 checklist items |
73
+
74
+ **Partial credit (⚠️)**:
75
+ - S2.1: Steps exist but not organized (bullet list without numbering) → 1 pt
76
+ - S2.3: Examples section exists but examples are abstract/vague → 1 pt
77
+ - S2.4: Checkboxes present but <3 items → 1 pt
78
+
79
+ ### Technical (weight 1×) — 4 points
80
+
81
+ | ID | Criterion | Pts | Detection | Pass Condition |
82
+ |----|-----------|-----|-----------|----------------|
83
+ | S3.1 | No hardcoded absolute paths | 1 | Grep for `/Users/`, `/home/[a-z]`, `C:\`, `D:\` | None found in SKILL.md or bundled scripts |
84
+ | S3.2 | No plaintext secrets | 1 | Grep for `password\s*=`, `api_key\s*=`, `token\s*=` with literal values | None found (comments about avoiding secrets OK) |
85
+ | S3.3 | Script error handling | 1 | If `.sh`/`.bash` files exist: grep for `set -e`, `trap`, `\|\| exit` | All scripts have error handling, or no scripts |
86
+ | S3.4 | Dependencies documented | 1 | If external tools required: section `Requirements`, `Dependencies`, or `Prerequisites` | Prerequisites stated or no external deps |
87
+
88
+ ### Design (weight 2×) — 8 points
89
+
90
+ | ID | Criterion | Pts | Detection | Pass Condition |
91
+ |----|-----------|-----|-----------|----------------|
92
+ | S4.1 | Single responsibility | 2 | Token count <5000 AND description avoids: `general`, `multi-purpose`, `various` | One focused domain |
93
+ | S4.2 | Clear trigger conditions | 2 | Content has `When to use`, `Triggers`, `Activation`, or `Use cases` | User knows when to invoke |
94
+ | S4.3 | No significant overlap | 2 | Jaccard similarity with other skills <0.5 | <50% keyword overlap with siblings |
95
+ | S4.4 | Token budget respected | 2 | Total file size estimate (words × 1.3) <8000 tokens | Does not bloat context |
96
+
97
+ ---
98
+
99
+ ## Agents / Subagents (32 points max)
100
+
101
+ ### Identity (weight 3×) — 12 points
102
+
103
+ | ID | Criterion | Pts | Detection | Pass Condition |
104
+ |----|-----------|-----|-----------|----------------|
105
+ | A1.1 | Descriptive name | 3 | `name:` not matching: `agent\d+`, `test`, `example`, `helper`, `assistant` | Meaningful, domain-specific name |
106
+ | A1.2 | Description with trigger context | 3 | Description uses third-person ("This agent should be invoked when…") with `when`/`trigger` keywords; includes negative cases | User knows when AND when NOT to invoke |
107
+ | A1.3 | Model specified | 3 | Frontmatter `model:` field is present with a value — `inherit`, `sonnet`, `opus`, `haiku` all count | Model explicitly declared (even `inherit` is valid) |
108
+ | A1.4 | Tools appropriately restricted | 3 | All powerful/non-obvious tools justified: Bash AND any of Write/Edit/WebFetch/WebSearch need inline `# <tool> required for: <reason>` comment within 3 lines of `tools:` line | Least-privilege; intent clear |
109
+
110
+ **Partial credit (⚠️)**:
111
+ - A1.1: Name is generic but somewhat descriptive (e.g., "reviewer") → 1.5 pts
112
+ - A1.2: Uses "Use this agent when the user…" (object-directed) with trigger phrases → 1.5 pts; uses "Use this agent when you…" (user-directed second person) with triggers → 1 pt
113
+ - A1.4: Bash/powerful tools present with partial/non-proximate justification OR ≤3 tools total (minimal set) → 1.5 pts
114
+
115
+ **A1.3 note**: `model: inherit` means the agent deliberately uses the calling context's model. This is an intentional architectural decision — score as full pass. Only penalise when `model:` field is entirely absent.
116
+
117
+ ### Prompt Quality (weight 2×) — 8 points
118
+
119
+ | ID | Criterion | Pts | Detection | Pass Condition |
120
+ |----|-----------|-----|-----------|----------------|
121
+ | A2.1 | Role statement defined | 2 | First paragraph of body starts with `You are` OR contains `You are a/an [role]` within first 5 lines | Agent has clear, explicit persona at the top |
122
+ | A2.2 | Output format specified | 2 | Section `Output`, `Format`, `Deliverables`, or inline `## Output Format` / `### Structure` present | Output structure defined |
123
+ | A2.3 | Scope and limits defined | 2 | Section/content: `Scope`, `Limits`, `When NOT to use`, `What to AVOID`, `Do NOT`, `Triggers` | Boundaries explicit |
124
+ | A2.4 | Anti-hallucination measures | 2 | Any of: `verify`, `cite`, `source`, `evidence`, `don't invent`, `hallucination`, `when uncertain`, `only use verified`, `based on`, `read.*first`, `check.*guide`, `FIRST STEP.*read` | Accuracy guardrails present |
125
+
126
+ **Partial credit (⚠️)**:
127
+ - A2.1: Role implied through purpose statement (`**Purpose**: You will…`) or `## Your Core Mission` with first-person instructions but no "You are…" opener → 1 pt
128
+ - A2.3: Scope mentioned briefly but no negative cases defined → 1 pt
129
+ - A2.4: Some accuracy guidance but not explicit (e.g., "be accurate", "reference docs") → 1 pt
130
+
131
+ **A2.4 note**: Agents that instruct reading project guides before acting (`FIRST STEP: Read .codemie/guides/…`) provide implicit hallucination guardrails — count as partial pass (1 pt) if no explicit "when uncertain" language exists.
132
+
133
+ ### Validation (weight 1×) — 4 points
134
+
135
+ | ID | Criterion | Pts | Detection | Pass Condition |
136
+ |----|-----------|-----|-----------|----------------|
137
+ | A3.1 | 3+ usage examples | 1 | `Examples`, `Usage`, `Scenarios` section with ≥3 distinct entries | Sufficient usage coverage |
138
+ | A3.2 | Edge cases documented | 1 | Keywords: `edge case`, `corner case`, `error`, `failure`, `limitation` | Failure modes acknowledged |
139
+ | A3.3 | Error handling described | 1 | Keywords: `fallback`, `recovery`, `error handling`, `failure mode`, `graceful` | Recovery strategy present |
140
+ | A3.4 | Integration documented | 1 | References other agents, skills, or tools: `uses`, `integrates`, `works with`, `see also` | Ecosystem fit stated |
141
+
142
+ ### Design (weight 2×) — 8 points
143
+
144
+ | ID | Criterion | Pts | Detection | Pass Condition |
145
+ |----|-----------|-----|-----------|----------------|
146
+ | A4.1 | Single responsibility | 2 | Token count <5000 AND description avoids: `general`, `multi-purpose`, `various`, `all` | One focused domain |
147
+ | A4.2 | No duplication | 2 | Jaccard similarity with other agents <0.5 | <50% overlap with siblings |
148
+ | A4.3 | Composable | 2 | References skills, agents, or project guides: `skill:`, `invoke`, `delegate`, `uses`, `see also`, or direct path refs (`guides/`, `.codemie/`, `SKILL.md`) | Leverages ecosystem — agents, skills, or project knowledge base |
149
+ | A4.4 | Token budget | 2 | File size (words × 1.3) <8000 tokens | Context-efficient |
150
+
151
+ **A4.3 partial credit (⚠️)**: Agent references project guide files (`.codemie/guides/`, `CLAUDE.md`) for grounding but does not explicitly reference other agents or skills → 1 pt.
152
+
153
+ ---
154
+
155
+ ## CLAUDE.md Rules (36 points max)
156
+
157
+ ### Coverage (weight 3×) — 9 points
158
+
159
+ | ID | Criterion | Pts | Detection | Pass Condition |
160
+ |----|-----------|-----|-----------|----------------|
161
+ | R1.1 | Coding standards defined | 3 | Section on code style, language conventions, import patterns, or tooling | Style guidance present |
162
+ | R1.2 | Workflow policies stated | 3 | Git, testing, deployment, or PR policies explicitly documented | Process guidance present |
163
+ | R1.3 | Critical rules with triggers | 3 | Contains `MANDATORY`, `NEVER`, `ALWAYS`, `CRITICAL` with trigger conditions | Non-negotiables documented |
164
+
165
+ **Partial credit (⚠️)**:
166
+ - R1.1: Brief style mentions but no concrete rules → 1.5 pts
167
+ - R1.3: "Always/Never" keywords present but no trigger context → 1.5 pts
168
+
169
+ ### Clarity (weight 3×) — 9 points
170
+
171
+ | ID | Criterion | Pts | Detection | Pass Condition |
172
+ |----|-----------|-----|-----------|----------------|
173
+ | R2.1 | Actionable instructions | 3 | Instructions start with verbs; avoids vague words: `try`, `consider`, `be careful` | Commands are executable |
174
+ | R2.2 | Trigger conditions stated | 3 | Rules specify when they apply: `when user says`, `if file is`, `for TypeScript` | Context is unambiguous |
175
+ | R2.3 | Prohibitions explicit | 3 | `Never`, `Do not`, `Avoid` with concrete examples of what NOT to do | Forbidden actions are clear |
176
+
177
+ **Partial credit (⚠️)**:
178
+ - R2.1: Mix of actionable and vague instructions → 1.5 pts
179
+ - R2.3: General warnings but no concrete examples → 1.5 pts
180
+
181
+ ### Structure (weight 2×) — 6 points
182
+
183
+ | ID | Criterion | Pts | Detection | Pass Condition |
184
+ |----|-----------|-----|-----------|----------------|
185
+ | R3.1 | Section organization | 2 | ≥3 distinct H2 sections (not a wall of text) | Scannable and navigable |
186
+ | R3.2 | Quick-reference tables | 2 | ≥1 markdown table summarizing rules or commands | Fast lookup exists |
187
+ | R3.3 | Pattern examples | 2 | Shows ✅/❌ patterns or code blocks with correct vs incorrect | Good vs bad demonstrated |
188
+
189
+ ### Maintenance (weight 1×) — 6 points
190
+
191
+ | ID | Criterion | Pts | Detection | Pass Condition |
192
+ |----|-----------|-----|-----------|----------------|
193
+ | R4.1 | No contradictions | 2 | Rules don't conflict (manual review) | Consistent guidance |
194
+ | R4.2 | Technology versions noted | 2 | Stack versions mentioned: `Node >=20`, `Python 3.11+`, etc. | Version requirements clear |
195
+ | R4.3 | Project context present | 2 | Project name, purpose, or team context stated | Reader understands the project |
196
+
197
+ ### Efficiency (weight 2×) — 6 points
198
+
199
+ **Before scoring R5.3, detect the knowledge organisation pattern:**
200
+
201
+ ```bash
202
+ find . -name 'CLAUDE.md' | grep -v node_modules | wc -l # count
203
+ find . -type d \( -name 'guides' -o -name '.codemie' \) | grep -v node_modules # guide dirs
204
+ ```
205
+
206
+ | Pattern | Detection | R5.3 scoring |
207
+ |---------|-----------|-------------|
208
+ | **A — Single CLAUDE.md + Guide Files** | 1 CLAUDE.md + guide/reference dirs present | Full credit if CLAUDE.md references guide paths |
209
+ | **B — Hierarchical CLAUDE.md** | Multiple CLAUDE.md at different dir depths | **N/A** — hierarchy IS the delegation; auto-pass R5.3 |
210
+
211
+ | ID | Criterion | Pts | Detection | Pass Condition |
212
+ |----|-----------|-----|-----------|----------------|
213
+ | R5.1 | Concise body | 2 | Non-code-block word count ≤400 words per file | Short enough that all rules are noticed |
214
+ | R5.2 | No anti-pattern content | 2 | Does NOT contain: file-by-file descriptions, standard conventions Claude already knows, self-evident advice ("write clean code", "be careful") | Pruned of noise |
215
+ | R5.3 | Delegates detail appropriately | 2 | **Pattern A**: CLAUDE.md references guide files by path; **Pattern B**: N/A (auto-pass) | Detail offloaded via the chosen pattern |
216
+
217
+ **Partial credit (⚠️)**:
218
+ - R5.1: 400–700 words → 1 pt; >700 words → 0 (applies to every CLAUDE.md file regardless of pattern)
219
+ - R5.2: A few self-evident statements but critical rules still clear → 1 pt
220
+ - R5.3 (Pattern A only): Guide files exist but CLAUDE.md describes them vaguely without path refs → 1 pt
221
+
222
+ **R5.1 word count** (exclude code blocks):
223
+ ```python
224
+ import re
225
+ def non_code_words(text: str) -> int:
226
+ no_code = re.sub(r'```.*?```', '', text, flags=re.DOTALL)
227
+ return len(no_code.split())
228
+ ```
229
+
230
+ **R5.2 anti-pattern detection**:
231
+ ```bash
232
+ grep -n "\.md does\|\.ts does\|^- \`src/" CLAUDE.md # file-by-file descriptions
233
+ grep -ni "write clean\|be careful\|good code\|best practice" CLAUDE.md # self-evident advice
234
+ ```
235
+
236
+ ---
237
+
238
+ ## CLAUDE.md Knowledge Organisation Check
239
+
240
+ Apply this **after** per-file scoring. This is a **cross-component analysis** (Phase 3).
241
+
242
+ ### Two Valid Patterns — Detect First
243
+
244
+ Both patterns are correct. Do NOT penalise a repo for not using the other pattern.
245
+
246
+ **Pattern A: Single CLAUDE.md + Guide Files**
247
+ One root CLAUDE.md acts as an index; domain knowledge lives in separate guide files that CLAUDE.md references by path.
248
+ ```
249
+ ./CLAUDE.md ← lean index, references guides by path
250
+ ./.codemie/guides/architecture.md ← detail here
251
+ ./.codemie/guides/testing.md
252
+ ```
253
+
254
+ **Pattern B: Hierarchical CLAUDE.md**
255
+ Multiple CLAUDE.md files at different directory levels, each scoped to its context level.
256
+ ```
257
+ ./CLAUDE.md ← project-wide rules
258
+ ./packages/api/CLAUDE.md ← api-specific context only
259
+ ./packages/frontend/CLAUDE.md ← frontend-specific context only
260
+ ```
261
+
262
+ **Mixed pattern flag**: Having both subdir CLAUDE.md files AND a separate guides directory without clear ownership → 🔵 Minor inconsistency.
263
+
264
+ ### Pattern A Checks
265
+
266
+ | Check | Severity | Detection |
267
+ |-------|----------|-----------|
268
+ | CLAUDE.md doesn't reference guide files by path | 🟡 Important | Guide dirs exist but no path refs to them in CLAUDE.md |
269
+ | `CLAUDE.local.md` not gitignored | 🔴 Critical | `grep CLAUDE.local.md .gitignore` → empty |
270
+ | Root not git-tracked | 🟡 Important | `git ls-files CLAUDE.md` → empty |
271
+
272
+ ### Pattern B Checks
273
+
274
+ | Check | Severity | Detection |
275
+ |-------|----------|-----------|
276
+ | Root `CLAUDE.md` missing but subdir ones exist | 🟡 Important | No `./CLAUDE.md` but subdir files found |
277
+ | Subdir duplicates root content | 🟡 Important | Jaccard similarity >0.3 between subdir and root |
278
+ | Subdir contains project-wide rules | 🟡 Important | Subdir mentions stack/tooling that applies everywhere |
279
+ | `CLAUDE.local.md` not gitignored | 🔴 Critical | `grep CLAUDE.local.md .gitignore` → empty |
280
+ | Root not git-tracked | 🟡 Important | `git ls-files CLAUDE.md` → empty |
281
+ | Monorepo missing per-package CLAUDE.md | 🔵 Minor | `packages/*/` dirs exist but none have CLAUDE.md |
282
+
283
+ ---
284
+
285
+ ## Commands (20 points max)
286
+
287
+ ### Structure (weight 3×) — 12 points
288
+
289
+ | ID | Criterion | Pts | Detection | Pass Condition |
290
+ |----|-----------|-----|-----------|----------------|
291
+ | C1.1 | Valid frontmatter | 3 | YAML frontmatter with `name:` AND `description:` fields | Identity established |
292
+ | C1.2 | Argument hint present | 3 | If `$ARGUMENTS` in body: frontmatter has `argument-hint:` | Usage hints visible in slash-complete |
293
+ | C1.3 | Step-by-step workflow | 3 | Numbered phases (Phase 1…, 1., 2.) or clear H2 sections | Structured process |
294
+ | C1.4 | Usage examples | 3 | Section `Usage`, `Examples` with invocation patterns | Invocation shown |
295
+
296
+ **Partial credit (⚠️)**:
297
+ - C1.2: Hint present but vague (e.g., `"[args]"`) → 1.5 pts
298
+ - C1.3: Some structure but missing step numbers/phases → 1.5 pts
299
+
300
+ ### Quality (weight 2×) — 8 points
301
+
302
+ | ID | Criterion | Pts | Detection | Pass Condition |
303
+ |----|-----------|-----|-----------|----------------|
304
+ | C2.1 | Error handling | 2 | Keywords: `error`, `failure`, `fallback`, `if fails`, `on failure` | Failure cases addressed |
305
+ | C2.2 | Output format defined | 2 | Specifies what command produces (report, file, summary) | Output shape documented |
306
+ | C2.3 | Validation gates | 2 | Keywords: `checkpoint`, `verify`, `validate`, `before proceeding`, `confirm` | Safety checks present |
307
+ | C2.4 | Argument parsing shown | 2 | If `$ARGUMENTS` used: shows parsing (defaults, validation, conditional logic) | Arg handling demonstrated |
308
+
309
+ ---
310
+
311
+ ## Hooks (20 points max)
312
+
313
+ ### Validity (weight 3×) — 6 points
314
+
315
+ | ID | Criterion | Pts | Detection | Pass Condition |
316
+ |----|-----------|-----|-----------|----------------|
317
+ | H1.1 | Valid JSON structure | 3 | File parses as valid JSON; hooks is an array | Syntactically correct |
318
+ | H1.2 | Recognized event types | 3 | Event values in: `PreToolUse`, `PostToolUse`, `Stop`, `SubagentStop`, `SessionStart`, `SessionEnd`, `UserPromptSubmit`, `PreCompact`, `Notification` | Known lifecycle events only |
319
+
320
+ ### Security (weight 2×) — 8 points
321
+
322
+ | ID | Criterion | Pts | Detection | Pass Condition |
323
+ |----|-----------|-----|-----------|----------------|
324
+ | H2.1 | No hardcoded credentials | 4 | Grep env/command values for: `password`, `secret`, `token`, `key` with literal values | Env var refs only, no literals |
325
+ | H2.2 | Scripts use error handling | 4 | Bash commands in hooks use `set -e`, `trap`, or `\|\| exit` | Scripts exit cleanly on failure |
326
+
327
+ ### Quality (weight 2×) — 6 points
328
+
329
+ | ID | Criterion | Pts | Detection | Pass Condition |
330
+ |----|-----------|-----|-----------|----------------|
331
+ | H3.1 | Scoped matchers | 3 | Matchers target specific tools or patterns, not `.*` or empty | Minimum necessary scope |
332
+ | H3.2 | Purpose documented | 3 | `description` field in each hook OR adjacent README explains purpose | Intent is clear |
333
+
334
+ ---
335
+
336
+ ## MCP Config (20 points max)
337
+
338
+ ### Structure (weight 3×) — 9 points
339
+
340
+ | ID | Criterion | Pts | Detection | Pass Condition |
341
+ |----|-----------|-----|-----------|----------------|
342
+ | M1.1 | Valid JSON | 3 | File parses as valid JSON | Syntactically correct |
343
+ | M1.2 | `mcpServers` key present | 3 | Top-level key `mcpServers` exists as an object | Standard structure used |
344
+ | M1.3 | Server definitions complete | 3 | Each server has `command` (stdio) or `url` (SSE/HTTP) | Required fields present |
345
+
346
+ ### Security (weight 2×) — 6 points
347
+
348
+ | ID | Criterion | Pts | Detection | Pass Condition |
349
+ |----|-----------|-----|-----------|----------------|
350
+ | M2.1 | No hardcoded secrets | 3 | No literal values for `password`, `token`, `key`, `secret` in env sections | Credentials not in config file |
351
+ | M2.2 | Env vars for credentials | 3 | Credentials use `${ENV_VAR}` pattern | Env var references used |
352
+
353
+ ### Documentation (weight 2×) — 5 points
354
+
355
+ | ID | Criterion | Pts | Detection | Pass Condition |
356
+ |----|-----------|-----|-----------|----------------|
357
+ | M3.1 | Descriptive server names | 2 | Server keys are meaningful (not `server1`, `test`, `mcp`) | Names indicate purpose |
358
+ | M3.2 | Required env vars documented | 3 | README.md, `.env.example`, or CLAUDE.md lists required vars | Setup is documented |
359
+
360
+ ---
361
+
362
+ ## Detection Utilities
363
+
364
+ ### Frontmatter Parser (Python)
365
+ ```python
366
+ import re, yaml
367
+
368
+ def parse_frontmatter(content: str) -> dict:
369
+ m = re.search(r'^---\n(.*?)\n---', content, re.DOTALL)
370
+ return yaml.safe_load(m.group(1)) if m else {}
371
+ ```
372
+
373
+ ### Token Estimate
374
+ ```python
375
+ def estimate_tokens(text: str) -> int:
376
+ return int(len(text.split()) * 1.3) # 1 token ≈ 0.75 words
377
+ ```
378
+
379
+ ### Jaccard Similarity (overlap detection)
380
+ ```python
381
+ def jaccard(text1: str, text2: str) -> float:
382
+ s1 = set(text1.lower().split())
383
+ s2 = set(text2.lower().split())
384
+ return len(s1 & s2) / len(s1 | s2) if (s1 | s2) else 0.0
385
+ # Flag if result > 0.5
386
+ ```
387
+
388
+ ### Security Grep
389
+ ```bash
390
+ grep -rn \
391
+ -e '/Users/' \
392
+ -e '/home/[a-z]' \
393
+ -e 'password\s*=' \
394
+ -e 'api_key\s*=' \
395
+ -e 'token\s*=' \
396
+ .claude/ .mcp.json \
397
+ --include="*.md" --include="*.json" --include="*.sh" 2>/dev/null \
398
+ | grep -v "node_modules" \
399
+ | grep -v "# " # skip comment lines
400
+ ```
401
+
402
+ ### Grade Calculator
403
+ ```python
404
+ def grade(score: float) -> str:
405
+ if score >= 90: return "A"
406
+ if score >= 80: return "B"
407
+ if score >= 70: return "C"
408
+ if score >= 60: return "D"
409
+ return "F"
410
+
411
+ def score(obtained: float, max_pts: float) -> float:
412
+ return round((obtained / max_pts) * 100, 1)
413
+ ```
@@ -0,0 +1,162 @@
1
+ #!/usr/bin/env bash
2
+ # scan-repo.sh — Discover and inventory all Claude Code components in a repository
3
+ # Usage: ./scan-repo.sh [path]
4
+ # Output: Structured inventory of all Claude Code components found
5
+
6
+ set -e
7
+
8
+ ROOT="${1:-.}"
9
+ SKILLS=()
10
+ AGENTS=()
11
+ COMMANDS=()
12
+ CLAUDE_MD=""
13
+ HOOKS=""
14
+ MCP=""
15
+
16
+ # ── Discovery ────────────────────────────────────────────────────────────────
17
+
18
+ # Skills: SKILL.md files anywhere under .claude/skills/ or plugins/*/skills/
19
+ while IFS= read -r file; do
20
+ SKILLS+=("$file")
21
+ done < <(find "$ROOT" \( \
22
+ -path '*/.claude/skills/*/SKILL.md' -o \
23
+ -path '*/plugins/*/skills/*/SKILL.md' \
24
+ \) -not -path '*/node_modules/*' 2>/dev/null | sort)
25
+
26
+ # Agents: .md files in .claude/agents/ or plugins/*/agents/
27
+ while IFS= read -r file; do
28
+ AGENTS+=("$file")
29
+ done < <(find "$ROOT" \( \
30
+ -path '*/.claude/agents/*.md' -o \
31
+ -path '*/plugins/*/agents/*.md' \
32
+ \) -not -path '*/node_modules/*' 2>/dev/null | sort)
33
+
34
+ # Commands: .md files in .claude/commands/ (recursive) or plugins/*/commands/
35
+ while IFS= read -r file; do
36
+ COMMANDS+=("$file")
37
+ done < <(find "$ROOT" \( \
38
+ -path '*/.claude/commands/*.md' -o \
39
+ -path '*/.claude/commands/**/*.md' -o \
40
+ -path '*/plugins/*/commands/**/*.md' \
41
+ \) -not -path '*/node_modules/*' 2>/dev/null | sort)
42
+
43
+ # CLAUDE.md: root or .claude/
44
+ if [ -f "$ROOT/CLAUDE.md" ]; then
45
+ CLAUDE_MD="$ROOT/CLAUDE.md"
46
+ elif [ -f "$ROOT/.claude/CLAUDE.md" ]; then
47
+ CLAUDE_MD="$ROOT/.claude/CLAUDE.md"
48
+ fi
49
+
50
+ # Hooks: settings.json
51
+ if [ -f "$ROOT/.claude/settings.json" ]; then
52
+ HOOKS="$ROOT/.claude/settings.json"
53
+ fi
54
+
55
+ # MCP config
56
+ if [ -f "$ROOT/.mcp.json" ]; then
57
+ MCP="$ROOT/.mcp.json"
58
+ elif [ -f "$ROOT/.claude/mcp.json" ]; then
59
+ MCP="$ROOT/.claude/mcp.json"
60
+ fi
61
+
62
+ # ── Output ───────────────────────────────────────────────────────────────────
63
+
64
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
65
+ echo " Claude Code Repository Inventory"
66
+ echo " Path: $(realpath "$ROOT")"
67
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
68
+ echo ""
69
+
70
+ echo "📦 SKILLS (${#SKILLS[@]} found)"
71
+ if [ ${#SKILLS[@]} -eq 0 ]; then
72
+ echo " (none)"
73
+ else
74
+ for f in "${SKILLS[@]}"; do
75
+ # Extract name from frontmatter if possible
76
+ name=$(grep -m1 '^name:' "$f" 2>/dev/null | sed 's/name: *//' || echo "?")
77
+ echo " • $f [name: $name]"
78
+ done
79
+ fi
80
+ echo ""
81
+
82
+ echo "🤖 AGENTS (${#AGENTS[@]} found)"
83
+ if [ ${#AGENTS[@]} -eq 0 ]; then
84
+ echo " (none)"
85
+ else
86
+ for f in "${AGENTS[@]}"; do
87
+ name=$(grep -m1 '^name:' "$f" 2>/dev/null | sed 's/name: *//' || echo "?")
88
+ model=$(grep -m1 '^model:' "$f" 2>/dev/null | sed 's/model: *//' || echo "not specified ⚠️")
89
+ echo " • $f [name: $name | model: $model]"
90
+ done
91
+ fi
92
+ echo ""
93
+
94
+ echo "⚡ COMMANDS (${#COMMANDS[@]} found)"
95
+ if [ ${#COMMANDS[@]} -eq 0 ]; then
96
+ echo " (none)"
97
+ else
98
+ for f in "${COMMANDS[@]}"; do
99
+ name=$(grep -m1 '^name:' "$f" 2>/dev/null | sed 's/name: *//' || echo "?")
100
+ echo " • $f [name: $name]"
101
+ done
102
+ fi
103
+ echo ""
104
+
105
+ echo "📋 CLAUDE.md"
106
+ if [ -n "$CLAUDE_MD" ]; then
107
+ lines=$(wc -l < "$CLAUDE_MD" | tr -d ' ')
108
+ echo " ✓ $CLAUDE_MD [$lines lines]"
109
+ else
110
+ echo " ✗ Not found"
111
+ fi
112
+ echo ""
113
+
114
+ echo "🪝 HOOKS"
115
+ if [ -n "$HOOKS" ]; then
116
+ hook_count=$(grep -c '"event"' "$HOOKS" 2>/dev/null || echo "0")
117
+ echo " ✓ $HOOKS [$hook_count hook(s)]"
118
+ else
119
+ echo " ✗ Not found (.claude/settings.json)"
120
+ fi
121
+ echo ""
122
+
123
+ echo "🔌 MCP CONFIG"
124
+ if [ -n "$MCP" ]; then
125
+ server_count=$(grep -c '"type"' "$MCP" 2>/dev/null || echo "?")
126
+ echo " ✓ $MCP [~$server_count server(s)]"
127
+ else
128
+ echo " ✗ Not found (.mcp.json)"
129
+ fi
130
+ echo ""
131
+
132
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
133
+ TOTAL=$(( ${#SKILLS[@]} + ${#AGENTS[@]} + ${#COMMANDS[@]} ))
134
+ echo " Total components: $TOTAL"
135
+ echo " Summary: ${#SKILLS[@]} skills | ${#AGENTS[@]} agents | ${#COMMANDS[@]} commands"
136
+ EXTRAS=""
137
+ [ -n "$CLAUDE_MD" ] && EXTRAS+="CLAUDE.md "
138
+ [ -n "$HOOKS" ] && EXTRAS+="hooks "
139
+ [ -n "$MCP" ] && EXTRAS+="MCP "
140
+ echo " Config files: ${EXTRAS:-none}"
141
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
142
+
143
+ # ── Quick Security Sweep ─────────────────────────────────────────────────────
144
+ echo ""
145
+ echo "🔐 Security Sweep"
146
+ SECURITY_HITS=$(grep -rn \
147
+ -e '/Users/' \
148
+ -e '/home/[a-z]' \
149
+ -e 'password\s*=' \
150
+ -e 'api_key\s*=' \
151
+ -e 'token\s*=' \
152
+ "$ROOT/.claude/" "$ROOT/.mcp.json" \
153
+ --include="*.md" --include="*.json" --include="*.sh" \
154
+ 2>/dev/null | grep -v "node_modules" | grep -v "# " | head -20 || true)
155
+
156
+ if [ -z "$SECURITY_HITS" ]; then
157
+ echo " ✓ No obvious hardcoded credentials or paths found"
158
+ else
159
+ echo " ⚠️ Potential issues detected:"
160
+ echo "$SECURITY_HITS" | sed 's/^/ /'
161
+ fi
162
+ echo ""
@@ -1 +1 @@
1
- {"version":3,"file":"claude.conversations-processor.d.ts","sourceRoot":"","sources":["../../../../../../src/agents/plugins/claude/session/processors/claude.conversations-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AACvH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAIpF,qBAAa,sBAAuB,YAAW,gBAAgB;IAC7D,QAAQ,CAAC,IAAI,mBAAmB;IAChC,QAAQ,CAAC,QAAQ,KAAK;IAEtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO;IAIxC,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAa5F;;;;OAIG;YACW,eAAe;YAiGf,iBAAiB;YA0LjB,aAAa;IAoQ3B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,UAAU;IA0BlB,OAAO,CAAC,mBAAmB;IAuC3B,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,oBAAoB;YA0Bd,sBAAsB;YAqCtB,cAAc;IAmL5B,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,iBAAiB;CAuB1B"}
1
+ {"version":3,"file":"claude.conversations-processor.d.ts","sourceRoot":"","sources":["../../../../../../src/agents/plugins/claude/session/processors/claude.conversations-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AACvH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gDAAgD,CAAC;AAKpF,qBAAa,sBAAuB,YAAW,gBAAgB;IAC7D,QAAQ,CAAC,IAAI,mBAAmB;IAChC,QAAQ,CAAC,QAAQ,KAAK;IAEtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO;IAIxC,OAAO,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAa5F;;;;OAIG;YACW,eAAe;YAiGf,iBAAiB;YA0LjB,aAAa;IA6M3B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,UAAU;IA0BlB,OAAO,CAAC,mBAAmB;IAuC3B,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,oBAAoB;YA0Bd,sBAAsB;YAqCtB,cAAc;IA4I5B,OAAO,CAAC,kBAAkB;IAqB1B,OAAO,CAAC,iBAAiB;CAuB1B"}