agim-cli 1.2.144 → 1.2.148

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 (611) hide show
  1. package/CHANGELOG.md +159 -0
  2. package/dist/cli-ui/setup-llm.d.ts.map +1 -1
  3. package/dist/cli-ui/setup-llm.js +3 -1
  4. package/dist/cli-ui/setup-llm.js.map +1 -1
  5. package/dist/core/circuit-breaker.d.ts +28 -0
  6. package/dist/core/circuit-breaker.d.ts.map +1 -1
  7. package/dist/core/circuit-breaker.js +45 -0
  8. package/dist/core/circuit-breaker.js.map +1 -1
  9. package/dist/core/intent.d.ts.map +1 -1
  10. package/dist/core/intent.js +3 -1
  11. package/dist/core/intent.js.map +1 -1
  12. package/dist/core/llm/agent-loop.d.ts +9 -1
  13. package/dist/core/llm/agent-loop.d.ts.map +1 -1
  14. package/dist/core/llm/agent-loop.js +80 -1
  15. package/dist/core/llm/agent-loop.js.map +1 -1
  16. package/dist/core/llm/anthropic-provider.d.ts.map +1 -1
  17. package/dist/core/llm/anthropic-provider.js +18 -4
  18. package/dist/core/llm/anthropic-provider.js.map +1 -1
  19. package/dist/core/llm/hallucination-detector.d.ts +33 -0
  20. package/dist/core/llm/hallucination-detector.d.ts.map +1 -0
  21. package/dist/core/llm/hallucination-detector.js +103 -0
  22. package/dist/core/llm/hallucination-detector.js.map +1 -0
  23. package/dist/core/llm/imhub-dispatcher.d.ts.map +1 -1
  24. package/dist/core/llm/imhub-dispatcher.js +7 -0
  25. package/dist/core/llm/imhub-dispatcher.js.map +1 -1
  26. package/dist/core/llm/provider-base.d.ts +9 -0
  27. package/dist/core/llm/provider-base.d.ts.map +1 -1
  28. package/dist/core/llm/provider-base.js.map +1 -1
  29. package/dist/core/memory-distill.d.ts.map +1 -1
  30. package/dist/core/memory-distill.js +18 -3
  31. package/dist/core/memory-distill.js.map +1 -1
  32. package/dist/core/memory.d.ts +14 -0
  33. package/dist/core/memory.d.ts.map +1 -1
  34. package/dist/core/memory.js +39 -0
  35. package/dist/core/memory.js.map +1 -1
  36. package/dist/core/message-sink.d.ts +6 -0
  37. package/dist/core/message-sink.d.ts.map +1 -1
  38. package/dist/core/message-sink.js +18 -3
  39. package/dist/core/message-sink.js.map +1 -1
  40. package/dist/core/outbox.d.ts +30 -2
  41. package/dist/core/outbox.d.ts.map +1 -1
  42. package/dist/core/outbox.js +102 -10
  43. package/dist/core/outbox.js.map +1 -1
  44. package/dist/core/reminders.d.ts.map +1 -1
  45. package/dist/core/reminders.js +11 -1
  46. package/dist/core/reminders.js.map +1 -1
  47. package/dist/core/router.d.ts.map +1 -1
  48. package/dist/core/router.js +16 -4
  49. package/dist/core/router.js.map +1 -1
  50. package/dist/core/schedule.d.ts +18 -0
  51. package/dist/core/schedule.d.ts.map +1 -1
  52. package/dist/core/schedule.js +80 -17
  53. package/dist/core/schedule.js.map +1 -1
  54. package/dist/core/sensitive-paths.d.ts.map +1 -1
  55. package/dist/core/sensitive-paths.js +53 -9
  56. package/dist/core/sensitive-paths.js.map +1 -1
  57. package/dist/core/skills/builtin/ECC_LICENSE +21 -0
  58. package/dist/core/skills/builtin/ECC_NOTICE.md +22 -0
  59. package/dist/core/skills/builtin/accessibility/SKILL.md +146 -0
  60. package/dist/core/skills/builtin/agent-eval/SKILL.md +145 -0
  61. package/dist/core/skills/builtin/agent-harness-construction/SKILL.md +73 -0
  62. package/dist/core/skills/builtin/agent-introspection-debugging/SKILL.md +153 -0
  63. package/dist/core/skills/builtin/agentic-engineering/SKILL.md +63 -0
  64. package/dist/core/skills/builtin/ai-first-engineering/SKILL.md +51 -0
  65. package/dist/core/skills/builtin/ai-regression-testing/SKILL.md +385 -0
  66. package/dist/core/skills/builtin/android-clean-architecture/SKILL.md +339 -0
  67. package/dist/core/skills/builtin/angular-developer/SKILL.md +154 -0
  68. package/dist/core/skills/builtin/angular-developer/references/angular-animations.md +160 -0
  69. package/dist/core/skills/builtin/angular-developer/references/angular-aria.md +410 -0
  70. package/dist/core/skills/builtin/angular-developer/references/cli.md +86 -0
  71. package/dist/core/skills/builtin/angular-developer/references/component-harnesses.md +59 -0
  72. package/dist/core/skills/builtin/angular-developer/references/component-styling.md +91 -0
  73. package/dist/core/skills/builtin/angular-developer/references/components.md +117 -0
  74. package/dist/core/skills/builtin/angular-developer/references/creating-services.md +97 -0
  75. package/dist/core/skills/builtin/angular-developer/references/data-resolvers.md +69 -0
  76. package/dist/core/skills/builtin/angular-developer/references/define-routes.md +67 -0
  77. package/dist/core/skills/builtin/angular-developer/references/defining-providers.md +72 -0
  78. package/dist/core/skills/builtin/angular-developer/references/di-fundamentals.md +120 -0
  79. package/dist/core/skills/builtin/angular-developer/references/e2e-testing.md +56 -0
  80. package/dist/core/skills/builtin/angular-developer/references/effects.md +83 -0
  81. package/dist/core/skills/builtin/angular-developer/references/hierarchical-injectors.md +43 -0
  82. package/dist/core/skills/builtin/angular-developer/references/host-elements.md +80 -0
  83. package/dist/core/skills/builtin/angular-developer/references/injection-context.md +63 -0
  84. package/dist/core/skills/builtin/angular-developer/references/inputs.md +101 -0
  85. package/dist/core/skills/builtin/angular-developer/references/linked-signal.md +59 -0
  86. package/dist/core/skills/builtin/angular-developer/references/loading-strategies.md +61 -0
  87. package/dist/core/skills/builtin/angular-developer/references/mcp.md +108 -0
  88. package/dist/core/skills/builtin/angular-developer/references/navigate-to-routes.md +69 -0
  89. package/dist/core/skills/builtin/angular-developer/references/outputs.md +86 -0
  90. package/dist/core/skills/builtin/angular-developer/references/reactive-forms.md +122 -0
  91. package/dist/core/skills/builtin/angular-developer/references/rendering-strategies.md +44 -0
  92. package/dist/core/skills/builtin/angular-developer/references/resource.md +77 -0
  93. package/dist/core/skills/builtin/angular-developer/references/route-animations.md +56 -0
  94. package/dist/core/skills/builtin/angular-developer/references/route-guards.md +52 -0
  95. package/dist/core/skills/builtin/angular-developer/references/router-lifecycle.md +45 -0
  96. package/dist/core/skills/builtin/angular-developer/references/router-testing.md +87 -0
  97. package/dist/core/skills/builtin/angular-developer/references/show-routes-with-outlets.md +68 -0
  98. package/dist/core/skills/builtin/angular-developer/references/signal-forms.md +795 -0
  99. package/dist/core/skills/builtin/angular-developer/references/signals-overview.md +94 -0
  100. package/dist/core/skills/builtin/angular-developer/references/tailwind-css.md +69 -0
  101. package/dist/core/skills/builtin/angular-developer/references/template-driven-forms.md +114 -0
  102. package/dist/core/skills/builtin/angular-developer/references/testing-fundamentals.md +65 -0
  103. package/dist/core/skills/builtin/api-connector-builder/SKILL.md +120 -0
  104. package/dist/core/skills/builtin/api-design/SKILL.md +523 -0
  105. package/dist/core/skills/builtin/architecture-decision-records/SKILL.md +179 -0
  106. package/dist/core/skills/builtin/article-writing/SKILL.md +79 -0
  107. package/dist/core/skills/builtin/automation-audit-ops/SKILL.md +142 -0
  108. package/dist/core/skills/builtin/autonomous-agent-harness/SKILL.md +273 -0
  109. package/dist/core/skills/builtin/autonomous-loops/SKILL.md +610 -0
  110. package/dist/core/skills/builtin/backend-patterns/SKILL.md +561 -0
  111. package/dist/core/skills/builtin/benchmark/SKILL.md +93 -0
  112. package/dist/core/skills/builtin/benchmark-optimization-loop/SKILL.md +69 -0
  113. package/dist/core/skills/builtin/blueprint/SKILL.md +105 -0
  114. package/dist/core/skills/builtin/browser-qa/SKILL.md +87 -0
  115. package/dist/core/skills/builtin/bun-runtime/SKILL.md +84 -0
  116. package/dist/core/skills/builtin/cisco-ios-patterns/SKILL.md +163 -0
  117. package/dist/core/skills/builtin/claude-devfleet/SKILL.md +111 -0
  118. package/dist/core/skills/builtin/click-path-audit/SKILL.md +244 -0
  119. package/dist/core/skills/builtin/clickhouse-io/SKILL.md +439 -0
  120. package/dist/core/skills/builtin/code-tour/SKILL.md +236 -0
  121. package/dist/core/skills/builtin/codebase-onboarding/SKILL.md +233 -0
  122. package/dist/core/skills/builtin/codehealth-mcp/SKILL.md +166 -0
  123. package/dist/core/skills/builtin/coding-standards/SKILL.md +550 -0
  124. package/dist/core/skills/builtin/compose-multiplatform-patterns/SKILL.md +299 -0
  125. package/dist/core/skills/builtin/config-gc/SKILL.md +119 -0
  126. package/dist/core/skills/builtin/content-hash-cache-pattern/SKILL.md +161 -0
  127. package/dist/core/skills/builtin/context-budget/SKILL.md +135 -0
  128. package/dist/core/skills/builtin/continuous-agent-loop/SKILL.md +45 -0
  129. package/dist/core/skills/builtin/continuous-learning/SKILL.md +131 -0
  130. package/dist/core/skills/builtin/continuous-learning/config.json +18 -0
  131. package/dist/core/skills/builtin/continuous-learning/evaluate-session.sh +69 -0
  132. package/dist/core/skills/builtin/continuous-learning-v2/SKILL.md +360 -0
  133. package/dist/core/skills/builtin/continuous-learning-v2/agents/observer-loop.sh +335 -0
  134. package/dist/core/skills/builtin/continuous-learning-v2/agents/observer.md +198 -0
  135. package/dist/core/skills/builtin/continuous-learning-v2/agents/session-guardian.sh +150 -0
  136. package/dist/core/skills/builtin/continuous-learning-v2/agents/start-observer.sh +248 -0
  137. package/dist/core/skills/builtin/continuous-learning-v2/config.json +8 -0
  138. package/dist/core/skills/builtin/continuous-learning-v2/hooks/observe.sh +498 -0
  139. package/dist/core/skills/builtin/continuous-learning-v2/scripts/detect-project.sh +322 -0
  140. package/dist/core/skills/builtin/continuous-learning-v2/scripts/instinct-cli.py +1914 -0
  141. package/dist/core/skills/builtin/continuous-learning-v2/scripts/lib/homunculus-dir.sh +31 -0
  142. package/dist/core/skills/builtin/continuous-learning-v2/scripts/migrate-homunculus.sh +62 -0
  143. package/dist/core/skills/builtin/continuous-learning-v2/scripts/test_parse_instinct.py +1045 -0
  144. package/dist/core/skills/builtin/cost-aware-llm-pipeline/SKILL.md +183 -0
  145. package/dist/core/skills/builtin/cost-tracking/SKILL.md +147 -0
  146. package/dist/core/skills/builtin/council/SKILL.md +203 -0
  147. package/dist/core/skills/builtin/cpp-coding-standards/SKILL.md +723 -0
  148. package/dist/core/skills/builtin/cpp-testing/SKILL.md +324 -0
  149. package/dist/core/skills/builtin/crosspost/SKILL.md +111 -0
  150. package/dist/core/skills/builtin/csharp-testing/SKILL.md +321 -0
  151. package/dist/core/skills/builtin/customs-trade-compliance/SKILL.md +263 -0
  152. package/dist/core/skills/builtin/dart-flutter-patterns/SKILL.md +563 -0
  153. package/dist/core/skills/builtin/dashboard-builder/SKILL.md +108 -0
  154. package/dist/core/skills/builtin/data-scraper-agent/SKILL.md +764 -0
  155. package/dist/core/skills/builtin/data-throughput-accelerator/SKILL.md +72 -0
  156. package/dist/core/skills/builtin/database-migrations/SKILL.md +429 -0
  157. package/dist/core/skills/builtin/deep-research/SKILL.md +159 -0
  158. package/dist/core/skills/builtin/defi-amm-security/SKILL.md +166 -0
  159. package/dist/core/skills/builtin/deployment-patterns/SKILL.md +427 -0
  160. package/dist/core/skills/builtin/design-system/SKILL.md +82 -0
  161. package/dist/core/skills/builtin/django-celery/SKILL.md +457 -0
  162. package/dist/core/skills/builtin/django-patterns/SKILL.md +734 -0
  163. package/dist/core/skills/builtin/django-security/SKILL.md +593 -0
  164. package/dist/core/skills/builtin/django-tdd/SKILL.md +729 -0
  165. package/dist/core/skills/builtin/django-verification/SKILL.md +469 -0
  166. package/dist/core/skills/builtin/dmux-workflows/SKILL.md +191 -0
  167. package/dist/core/skills/builtin/docker-patterns/SKILL.md +364 -0
  168. package/dist/core/skills/builtin/documentation-lookup/SKILL.md +90 -0
  169. package/dist/core/skills/builtin/dotnet-patterns/SKILL.md +321 -0
  170. package/dist/core/skills/builtin/dynamic-workflow-mode/SKILL.md +123 -0
  171. package/dist/core/skills/builtin/e2e-testing/SKILL.md +326 -0
  172. package/dist/core/skills/builtin/email-ops/SKILL.md +121 -0
  173. package/dist/core/skills/builtin/energy-procurement/SKILL.md +228 -0
  174. package/dist/core/skills/builtin/enterprise-agent-ops/SKILL.md +50 -0
  175. package/dist/core/skills/builtin/error-handling/SKILL.md +376 -0
  176. package/dist/core/skills/builtin/eval-harness/SKILL.md +270 -0
  177. package/dist/core/skills/builtin/evm-token-decimals/SKILL.md +130 -0
  178. package/dist/core/skills/builtin/exa-search/SKILL.md +107 -0
  179. package/dist/core/skills/builtin/fal-ai-media/SKILL.md +288 -0
  180. package/dist/core/skills/builtin/fastapi-patterns/SKILL.md +513 -0
  181. package/dist/core/skills/builtin/finance-billing-ops/SKILL.md +127 -0
  182. package/dist/core/skills/builtin/flox-environments/SKILL.md +496 -0
  183. package/dist/core/skills/builtin/flutter-dart-code-review/SKILL.md +435 -0
  184. package/dist/core/skills/builtin/foundation-models-on-device/SKILL.md +243 -0
  185. package/dist/core/skills/builtin/frontend-a11y/SKILL.md +445 -0
  186. package/dist/core/skills/builtin/frontend-design-direction/SKILL.md +92 -0
  187. package/dist/core/skills/builtin/frontend-patterns/SKILL.md +656 -0
  188. package/dist/core/skills/builtin/frontend-slides/SKILL.md +184 -0
  189. package/dist/core/skills/builtin/frontend-slides/STYLE_PRESETS.md +330 -0
  190. package/dist/core/skills/builtin/frontend-slides/animation-patterns.md +122 -0
  191. package/dist/core/skills/builtin/frontend-slides/html-template.md +419 -0
  192. package/dist/core/skills/builtin/frontend-slides/scripts/export-pdf.sh +418 -0
  193. package/dist/core/skills/builtin/frontend-slides/scripts/extract-pptx.py +96 -0
  194. package/dist/core/skills/builtin/frontend-slides/viewport-base.css +153 -0
  195. package/dist/core/skills/builtin/fsharp-testing/SKILL.md +280 -0
  196. package/dist/core/skills/builtin/gan-style-harness/SKILL.md +278 -0
  197. package/dist/core/skills/builtin/gateguard/SKILL.md +132 -0
  198. package/dist/core/skills/builtin/git-workflow/SKILL.md +715 -0
  199. package/dist/core/skills/builtin/github-ops/SKILL.md +144 -0
  200. package/dist/core/skills/builtin/golang-patterns/SKILL.md +674 -0
  201. package/dist/core/skills/builtin/golang-testing/SKILL.md +720 -0
  202. package/dist/core/skills/builtin/healthcare-cdss-patterns/SKILL.md +245 -0
  203. package/dist/core/skills/builtin/healthcare-emr-patterns/SKILL.md +159 -0
  204. package/dist/core/skills/builtin/healthcare-eval-harness/SKILL.md +207 -0
  205. package/dist/core/skills/builtin/healthcare-phi-compliance/SKILL.md +145 -0
  206. package/dist/core/skills/builtin/hermes-imports/SKILL.md +88 -0
  207. package/dist/core/skills/builtin/hexagonal-architecture/SKILL.md +276 -0
  208. package/dist/core/skills/builtin/hipaa-compliance/SKILL.md +78 -0
  209. package/dist/core/skills/builtin/hookify-rules/SKILL.md +128 -0
  210. package/dist/core/skills/builtin/inherit-legacy-style/SKILL.md +156 -0
  211. package/dist/core/skills/builtin/intent-driven-development/SKILL.md +360 -0
  212. package/dist/core/skills/builtin/inventory-demand-planning/SKILL.md +247 -0
  213. package/dist/core/skills/builtin/ios-icon-gen/SKILL.md +157 -0
  214. package/dist/core/skills/builtin/ios-icon-gen/scripts/generate_icons.swift +258 -0
  215. package/dist/core/skills/builtin/ios-icon-gen/scripts/iconify_gen.sh +235 -0
  216. package/dist/core/skills/builtin/iterative-retrieval/SKILL.md +211 -0
  217. package/dist/core/skills/builtin/java-coding-standards/SKILL.md +383 -0
  218. package/dist/core/skills/builtin/jira-integration/SKILL.md +302 -0
  219. package/dist/core/skills/builtin/jpa-patterns/SKILL.md +151 -0
  220. package/dist/core/skills/builtin/knowledge-ops/SKILL.md +154 -0
  221. package/dist/core/skills/builtin/kotlin-coroutines-flows/SKILL.md +284 -0
  222. package/dist/core/skills/builtin/kotlin-exposed-patterns/SKILL.md +719 -0
  223. package/dist/core/skills/builtin/kotlin-ktor-patterns/SKILL.md +689 -0
  224. package/dist/core/skills/builtin/kotlin-patterns/SKILL.md +711 -0
  225. package/dist/core/skills/builtin/kotlin-testing/SKILL.md +824 -0
  226. package/dist/core/skills/builtin/kubernetes-patterns/SKILL.md +755 -0
  227. package/dist/core/skills/builtin/laravel-patterns/SKILL.md +415 -0
  228. package/dist/core/skills/builtin/laravel-plugin-discovery/SKILL.md +229 -0
  229. package/dist/core/skills/builtin/laravel-security/SKILL.md +947 -0
  230. package/dist/core/skills/builtin/laravel-tdd/SKILL.md +674 -0
  231. package/dist/core/skills/builtin/laravel-verification/SKILL.md +179 -0
  232. package/dist/core/skills/builtin/latency-critical-systems/SKILL.md +73 -0
  233. package/dist/core/skills/builtin/lead-intelligence/SKILL.md +321 -0
  234. package/dist/core/skills/builtin/lead-intelligence/agents/enrichment-agent.md +85 -0
  235. package/dist/core/skills/builtin/lead-intelligence/agents/mutual-mapper.md +75 -0
  236. package/dist/core/skills/builtin/lead-intelligence/agents/outreach-drafter.md +98 -0
  237. package/dist/core/skills/builtin/lead-intelligence/agents/signal-scorer.md +60 -0
  238. package/dist/core/skills/builtin/liquid-glass-design/SKILL.md +279 -0
  239. package/dist/core/skills/builtin/llm-trading-agent-security/SKILL.md +146 -0
  240. package/dist/core/skills/builtin/logistics-exception-management/SKILL.md +222 -0
  241. package/dist/core/skills/builtin/make-interfaces-feel-better/SKILL.md +151 -0
  242. package/dist/core/skills/builtin/market-research/SKILL.md +75 -0
  243. package/dist/core/skills/builtin/marketing-campaign/SKILL.md +113 -0
  244. package/dist/core/skills/builtin/mcp-server-patterns/SKILL.md +69 -0
  245. package/dist/core/skills/builtin/messages-ops/SKILL.md +104 -0
  246. package/dist/core/skills/builtin/mle-workflow/SKILL.md +346 -0
  247. package/dist/core/skills/builtin/motion-advanced/SKILL.md +596 -0
  248. package/dist/core/skills/builtin/motion-foundations/SKILL.md +299 -0
  249. package/dist/core/skills/builtin/motion-patterns/SKILL.md +434 -0
  250. package/dist/core/skills/builtin/motion-ui/SKILL.md +575 -0
  251. package/dist/core/skills/builtin/mysql-patterns/SKILL.md +412 -0
  252. package/dist/core/skills/builtin/nanoclaw-repl/SKILL.md +33 -0
  253. package/dist/core/skills/builtin/nestjs-patterns/SKILL.md +230 -0
  254. package/dist/core/skills/builtin/netmiko-ssh-automation/SKILL.md +173 -0
  255. package/dist/core/skills/builtin/network-bgp-diagnostics/SKILL.md +167 -0
  256. package/dist/core/skills/builtin/network-config-validation/SKILL.md +210 -0
  257. package/dist/core/skills/builtin/network-interface-health/SKILL.md +152 -0
  258. package/dist/core/skills/builtin/nextjs-turbopack/SKILL.md +57 -0
  259. package/dist/core/skills/builtin/nodejs-keccak256/SKILL.md +102 -0
  260. package/dist/core/skills/builtin/nutrient-document-processing/SKILL.md +167 -0
  261. package/dist/core/skills/builtin/nuxt4-patterns/SKILL.md +100 -0
  262. package/dist/core/skills/builtin/openclaw-persona-forge/SKILL.md +288 -0
  263. package/dist/core/skills/builtin/openclaw-persona-forge/gacha.py +224 -0
  264. package/dist/core/skills/builtin/openclaw-persona-forge/gacha.sh +5 -0
  265. package/dist/core/skills/builtin/openclaw-persona-forge/references/avatar-style.md +124 -0
  266. package/dist/core/skills/builtin/openclaw-persona-forge/references/boundary-rules.md +53 -0
  267. package/dist/core/skills/builtin/openclaw-persona-forge/references/error-handling.md +53 -0
  268. package/dist/core/skills/builtin/openclaw-persona-forge/references/identity-tension.md +48 -0
  269. package/dist/core/skills/builtin/openclaw-persona-forge/references/naming-system.md +39 -0
  270. package/dist/core/skills/builtin/openclaw-persona-forge/references/output-template.md +166 -0
  271. package/dist/core/skills/builtin/opensource-pipeline/SKILL.md +255 -0
  272. package/dist/core/skills/builtin/orch-add-feature/SKILL.md +44 -0
  273. package/dist/core/skills/builtin/orch-build-mvp/SKILL.md +48 -0
  274. package/dist/core/skills/builtin/orch-change-feature/SKILL.md +42 -0
  275. package/dist/core/skills/builtin/orch-fix-defect/SKILL.md +42 -0
  276. package/dist/core/skills/builtin/orch-pipeline/SKILL.md +120 -0
  277. package/dist/core/skills/builtin/orch-refine-code/SKILL.md +43 -0
  278. package/dist/core/skills/builtin/parallel-execution-optimizer/SKILL.md +72 -0
  279. package/dist/core/skills/builtin/perl-patterns/SKILL.md +504 -0
  280. package/dist/core/skills/builtin/perl-security/SKILL.md +503 -0
  281. package/dist/core/skills/builtin/perl-testing/SKILL.md +475 -0
  282. package/dist/core/skills/builtin/plan-orchestrate/SKILL.md +262 -0
  283. package/dist/core/skills/builtin/plankton-code-quality/SKILL.md +236 -0
  284. package/dist/core/skills/builtin/postgres-patterns/SKILL.md +147 -0
  285. package/dist/core/skills/builtin/prediction-market-oracle-research/SKILL.md +63 -0
  286. package/dist/core/skills/builtin/prediction-market-risk-review/SKILL.md +60 -0
  287. package/dist/core/skills/builtin/prisma-patterns/SKILL.md +371 -0
  288. package/dist/core/skills/builtin/product-capability/SKILL.md +141 -0
  289. package/dist/core/skills/builtin/product-lens/SKILL.md +92 -0
  290. package/dist/core/skills/builtin/production-audit/SKILL.md +206 -0
  291. package/dist/core/skills/builtin/production-scheduling/SKILL.md +238 -0
  292. package/dist/core/skills/builtin/prompt-optimizer/SKILL.md +398 -0
  293. package/dist/core/skills/builtin/python-patterns/SKILL.md +750 -0
  294. package/dist/core/skills/builtin/python-testing/SKILL.md +816 -0
  295. package/dist/core/skills/builtin/pytorch-patterns/SKILL.md +396 -0
  296. package/dist/core/skills/builtin/quality-nonconformance/SKILL.md +260 -0
  297. package/dist/core/skills/builtin/quarkus-patterns/SKILL.md +722 -0
  298. package/dist/core/skills/builtin/quarkus-security/SKILL.md +467 -0
  299. package/dist/core/skills/builtin/quarkus-tdd/SKILL.md +811 -0
  300. package/dist/core/skills/builtin/quarkus-verification/SKILL.md +479 -0
  301. package/dist/core/skills/builtin/ralphinho-rfc-pipeline/SKILL.md +67 -0
  302. package/dist/core/skills/builtin/react-patterns/SKILL.md +341 -0
  303. package/dist/core/skills/builtin/react-performance/SKILL.md +574 -0
  304. package/dist/core/skills/builtin/react-testing/SKILL.md +423 -0
  305. package/dist/core/skills/builtin/recsys-pipeline-architect/SKILL.md +114 -0
  306. package/dist/core/skills/builtin/recursive-decision-ledger/SKILL.md +79 -0
  307. package/dist/core/skills/builtin/redis-patterns/SKILL.md +403 -0
  308. package/dist/core/skills/builtin/regex-vs-llm-structured-text/SKILL.md +220 -0
  309. package/dist/core/skills/builtin/repo-scan/SKILL.md +78 -0
  310. package/dist/core/skills/builtin/research-ops/SKILL.md +112 -0
  311. package/dist/core/skills/builtin/returns-reverse-logistics/SKILL.md +240 -0
  312. package/dist/core/skills/builtin/rules-distill/SKILL.md +264 -0
  313. package/dist/core/skills/builtin/rules-distill/scripts/scan-rules.sh +58 -0
  314. package/dist/core/skills/builtin/rules-distill/scripts/scan-skills.sh +129 -0
  315. package/dist/core/skills/builtin/rust-patterns/SKILL.md +499 -0
  316. package/dist/core/skills/builtin/rust-testing/SKILL.md +500 -0
  317. package/dist/core/skills/builtin/safety-guard/SKILL.md +75 -0
  318. package/dist/core/skills/builtin/santa-method/SKILL.md +306 -0
  319. package/dist/core/skills/builtin/scientific-db-pubmed-database/SKILL.md +175 -0
  320. package/dist/core/skills/builtin/scientific-db-uspto-database/SKILL.md +177 -0
  321. package/dist/core/skills/builtin/scientific-pkg-gget/SKILL.md +166 -0
  322. package/dist/core/skills/builtin/scientific-thinking-literature-review/SKILL.md +192 -0
  323. package/dist/core/skills/builtin/scientific-thinking-scholar-evaluation/SKILL.md +160 -0
  324. package/dist/core/skills/builtin/search-first/SKILL.md +182 -0
  325. package/dist/core/skills/builtin/security-bounty-hunter/SKILL.md +99 -0
  326. package/dist/core/skills/builtin/security-review/SKILL.md +503 -0
  327. package/dist/core/skills/builtin/security-review/cloud-infrastructure-security.md +361 -0
  328. package/dist/core/skills/builtin/security-scan/SKILL.md +165 -0
  329. package/dist/core/skills/builtin/seo/SKILL.md +154 -0
  330. package/dist/core/skills/builtin/skill-comply/SKILL.md +58 -0
  331. package/dist/core/skills/builtin/skill-comply/fixtures/compliant_trace.jsonl +5 -0
  332. package/dist/core/skills/builtin/skill-comply/fixtures/noncompliant_trace.jsonl +3 -0
  333. package/dist/core/skills/builtin/skill-comply/fixtures/tdd_spec.yaml +44 -0
  334. package/dist/core/skills/builtin/skill-comply/prompts/classifier.md +24 -0
  335. package/dist/core/skills/builtin/skill-comply/prompts/scenario_generator.md +62 -0
  336. package/dist/core/skills/builtin/skill-comply/prompts/spec_generator.md +42 -0
  337. package/dist/core/skills/builtin/skill-comply/pyproject.toml +15 -0
  338. package/dist/core/skills/builtin/skill-comply/scripts/__init__.py +0 -0
  339. package/dist/core/skills/builtin/skill-comply/scripts/classifier.py +85 -0
  340. package/dist/core/skills/builtin/skill-comply/scripts/grader.py +124 -0
  341. package/dist/core/skills/builtin/skill-comply/scripts/parser.py +107 -0
  342. package/dist/core/skills/builtin/skill-comply/scripts/report.py +170 -0
  343. package/dist/core/skills/builtin/skill-comply/scripts/run.py +127 -0
  344. package/dist/core/skills/builtin/skill-comply/scripts/runner.py +186 -0
  345. package/dist/core/skills/builtin/skill-comply/scripts/scenario_generator.py +70 -0
  346. package/dist/core/skills/builtin/skill-comply/scripts/spec_generator.py +72 -0
  347. package/dist/core/skills/builtin/skill-comply/scripts/utils.py +13 -0
  348. package/dist/core/skills/builtin/skill-comply/tests/test_grader.py +197 -0
  349. package/dist/core/skills/builtin/skill-comply/tests/test_parser.py +90 -0
  350. package/dist/core/skills/builtin/skill-comply/tests/test_runner.py +172 -0
  351. package/dist/core/skills/builtin/skill-scout/SKILL.md +140 -0
  352. package/dist/core/skills/builtin/skill-stocktake/SKILL.md +194 -0
  353. package/dist/core/skills/builtin/skill-stocktake/scripts/quick-diff.sh +87 -0
  354. package/dist/core/skills/builtin/skill-stocktake/scripts/save-results.sh +56 -0
  355. package/dist/core/skills/builtin/skill-stocktake/scripts/scan.sh +170 -0
  356. package/dist/core/skills/builtin/springboot-patterns/SKILL.md +314 -0
  357. package/dist/core/skills/builtin/springboot-security/SKILL.md +272 -0
  358. package/dist/core/skills/builtin/springboot-tdd/SKILL.md +158 -0
  359. package/dist/core/skills/builtin/springboot-verification/SKILL.md +231 -0
  360. package/dist/core/skills/builtin/strategic-compact/SKILL.md +135 -0
  361. package/dist/core/skills/builtin/swift-actor-persistence/SKILL.md +143 -0
  362. package/dist/core/skills/builtin/swift-concurrency-6-2/SKILL.md +216 -0
  363. package/dist/core/skills/builtin/swift-protocol-di-testing/SKILL.md +190 -0
  364. package/dist/core/skills/builtin/swiftui-patterns/SKILL.md +259 -0
  365. package/dist/core/skills/builtin/tdd-workflow/SKILL.md +463 -0
  366. package/dist/core/skills/builtin/team-agent-orchestration/SKILL.md +110 -0
  367. package/dist/core/skills/builtin/team-builder/SKILL.md +168 -0
  368. package/dist/core/skills/builtin/terminal-ops/SKILL.md +109 -0
  369. package/dist/core/skills/builtin/tinystruct-patterns/SKILL.md +203 -0
  370. package/dist/core/skills/builtin/tinystruct-patterns/references/architecture.md +90 -0
  371. package/dist/core/skills/builtin/tinystruct-patterns/references/data-handling.md +60 -0
  372. package/dist/core/skills/builtin/tinystruct-patterns/references/database.md +99 -0
  373. package/dist/core/skills/builtin/tinystruct-patterns/references/routing.md +64 -0
  374. package/dist/core/skills/builtin/tinystruct-patterns/references/system-usage.md +97 -0
  375. package/dist/core/skills/builtin/tinystruct-patterns/references/testing.md +72 -0
  376. package/dist/core/skills/builtin/token-budget-advisor/SKILL.md +133 -0
  377. package/dist/core/skills/builtin/ui-demo/SKILL.md +465 -0
  378. package/dist/core/skills/builtin/ui-to-vue/SKILL.md +134 -0
  379. package/dist/core/skills/builtin/uncloud/SKILL.md +343 -0
  380. package/dist/core/skills/builtin/unified-notifications-ops/SKILL.md +187 -0
  381. package/dist/core/skills/builtin/verification-loop/SKILL.md +126 -0
  382. package/dist/core/skills/builtin/video-editing/SKILL.md +310 -0
  383. package/dist/core/skills/builtin/videodb/SKILL.md +374 -0
  384. package/dist/core/skills/builtin/videodb/reference/api-reference.md +550 -0
  385. package/dist/core/skills/builtin/videodb/reference/capture-reference.md +407 -0
  386. package/dist/core/skills/builtin/videodb/reference/capture.md +101 -0
  387. package/dist/core/skills/builtin/videodb/reference/editor.md +443 -0
  388. package/dist/core/skills/builtin/videodb/reference/generative.md +331 -0
  389. package/dist/core/skills/builtin/videodb/reference/rtstream-reference.md +564 -0
  390. package/dist/core/skills/builtin/videodb/reference/rtstream.md +65 -0
  391. package/dist/core/skills/builtin/videodb/reference/search.md +230 -0
  392. package/dist/core/skills/builtin/videodb/reference/streaming.md +406 -0
  393. package/dist/core/skills/builtin/videodb/reference/use-cases.md +118 -0
  394. package/dist/core/skills/builtin/videodb/scripts/ws_listener.py +282 -0
  395. package/dist/core/skills/builtin/visa-doc-translate/README.md +86 -0
  396. package/dist/core/skills/builtin/visa-doc-translate/SKILL.md +117 -0
  397. package/dist/core/skills/builtin/vite-patterns/SKILL.md +449 -0
  398. package/dist/core/skills/builtin/windows-desktop-e2e/SKILL.md +887 -0
  399. package/dist/core/skills/builtin/x-api/SKILL.md +234 -0
  400. package/dist/core/skills/loader.js +11 -0
  401. package/dist/core/skills/loader.js.map +1 -1
  402. package/dist/core/types.d.ts +6 -0
  403. package/dist/core/types.d.ts.map +1 -1
  404. package/dist/plugins/agents/native/index.d.ts +47 -8
  405. package/dist/plugins/agents/native/index.d.ts.map +1 -1
  406. package/dist/plugins/agents/native/index.js +253 -102
  407. package/dist/plugins/agents/native/index.js.map +1 -1
  408. package/dist/plugins/agents/native/tool-registry.d.ts +33 -0
  409. package/dist/plugins/agents/native/tool-registry.d.ts.map +1 -0
  410. package/dist/plugins/agents/native/tool-registry.js +82 -0
  411. package/dist/plugins/agents/native/tool-registry.js.map +1 -0
  412. package/dist/plugins/messengers/dingtalk/dingtalk-client.d.ts.map +1 -1
  413. package/dist/plugins/messengers/dingtalk/dingtalk-client.js +11 -11
  414. package/dist/plugins/messengers/dingtalk/dingtalk-client.js.map +1 -1
  415. package/dist/plugins/messengers/feishu/feishu-adapter.d.ts.map +1 -1
  416. package/dist/plugins/messengers/feishu/feishu-adapter.js +9 -5
  417. package/dist/plugins/messengers/feishu/feishu-adapter.js.map +1 -1
  418. package/dist/plugins/messengers/wechat/ilink-adapter.d.ts.map +1 -1
  419. package/dist/plugins/messengers/wechat/ilink-adapter.js +11 -1
  420. package/dist/plugins/messengers/wechat/ilink-adapter.js.map +1 -1
  421. package/dist/web/public/assets/{a2a-DczMMkbl.js → a2a-Cll3P4QN.js} +2 -2
  422. package/dist/web/public/assets/{a2a-DczMMkbl.js.map → a2a-Cll3P4QN.js.map} +1 -1
  423. package/dist/web/public/assets/{activity-cbLHkzca.js → activity-B7T7YFlD.js} +2 -2
  424. package/dist/web/public/assets/{activity-cbLHkzca.js.map → activity-B7T7YFlD.js.map} +1 -1
  425. package/dist/web/public/assets/{admins-C-YsGMj7.js → admins-CN7P018S.js} +2 -2
  426. package/dist/web/public/assets/{admins-C-YsGMj7.js.map → admins-CN7P018S.js.map} +1 -1
  427. package/dist/web/public/assets/{agents-BWfov_1-.js → agents-Bqgq7GBF.js} +2 -2
  428. package/dist/web/public/assets/{agents-BWfov_1-.js.map → agents-Bqgq7GBF.js.map} +1 -1
  429. package/dist/web/public/assets/{approvals-HSssmXKS.js → approvals-C8IUJQ_A.js} +2 -2
  430. package/dist/web/public/assets/{approvals-HSssmXKS.js.map → approvals-C8IUJQ_A.js.map} +1 -1
  431. package/dist/web/public/assets/{arrow-down-BXvC8Al2.js → arrow-down-SLWKqtDc.js} +2 -2
  432. package/dist/web/public/assets/{arrow-down-BXvC8Al2.js.map → arrow-down-SLWKqtDc.js.map} +1 -1
  433. package/dist/web/public/assets/{arrow-up-63xELY5Q.js → arrow-up-BOADc9ce.js} +2 -2
  434. package/dist/web/public/assets/{arrow-up-63xELY5Q.js.map → arrow-up-BOADc9ce.js.map} +1 -1
  435. package/dist/web/public/assets/{asks-COLEFOvK.js → asks-C-j-DypC.js} +2 -2
  436. package/dist/web/public/assets/{asks-COLEFOvK.js.map → asks-C-j-DypC.js.map} +1 -1
  437. package/dist/web/public/assets/{audit-D4ZEiZub.js → audit-DQb-RuXh.js} +2 -2
  438. package/dist/web/public/assets/{audit-D4ZEiZub.js.map → audit-DQb-RuXh.js.map} +1 -1
  439. package/dist/web/public/assets/{bell-Cg2Bvv06.js → bell-CV88-ul6.js} +2 -2
  440. package/dist/web/public/assets/{bell-Cg2Bvv06.js.map → bell-CV88-ul6.js.map} +1 -1
  441. package/dist/web/public/assets/{bgjobs-CEjCzwtd.js → bgjobs-CDrK0d-W.js} +2 -2
  442. package/dist/web/public/assets/{bgjobs-CEjCzwtd.js.map → bgjobs-CDrK0d-W.js.map} +1 -1
  443. package/dist/web/public/assets/{brain-euvl6F6C.js → brain-B7HtSOQU.js} +2 -2
  444. package/dist/web/public/assets/{brain-euvl6F6C.js.map → brain-B7HtSOQU.js.map} +1 -1
  445. package/dist/web/public/assets/{briefcase-DPWLbCnA.js → briefcase-mdzuIa__.js} +2 -2
  446. package/dist/web/public/assets/{briefcase-DPWLbCnA.js.map → briefcase-mdzuIa__.js.map} +1 -1
  447. package/dist/web/public/assets/{browser-ponyfill-BUutOaRz.js → browser-ponyfill-DBWdeCTC.js} +2 -2
  448. package/dist/web/public/assets/{browser-ponyfill-BUutOaRz.js.map → browser-ponyfill-DBWdeCTC.js.map} +1 -1
  449. package/dist/web/public/assets/{chat-Dz9kfaxH.js → chat-CSjtY2rN.js} +3 -3
  450. package/dist/web/public/assets/{chat-Dz9kfaxH.js.map → chat-CSjtY2rN.js.map} +1 -1
  451. package/dist/web/public/assets/{chevron-left-BeIh5thq.js → chevron-left-uSfPn636.js} +2 -2
  452. package/dist/web/public/assets/{chevron-left-BeIh5thq.js.map → chevron-left-uSfPn636.js.map} +1 -1
  453. package/dist/web/public/assets/{chevron-right-uP_l9MMb.js → chevron-right-CtelqacW.js} +2 -2
  454. package/dist/web/public/assets/{chevron-right-uP_l9MMb.js.map → chevron-right-CtelqacW.js.map} +1 -1
  455. package/dist/web/public/assets/{circle-check-CewnjFgv.js → circle-check-8dbL-u7O.js} +2 -2
  456. package/dist/web/public/assets/{circle-check-CewnjFgv.js.map → circle-check-8dbL-u7O.js.map} +1 -1
  457. package/dist/web/public/assets/{circle-check-big-C2RTc48c.js → circle-check-big-D8-svk9a.js} +2 -2
  458. package/dist/web/public/assets/{circle-check-big-C2RTc48c.js.map → circle-check-big-D8-svk9a.js.map} +1 -1
  459. package/dist/web/public/assets/{circle-x-Ccg1HyV-.js → circle-x-rUxzIz5P.js} +2 -2
  460. package/dist/web/public/assets/{circle-x-Ccg1HyV-.js.map → circle-x-rUxzIz5P.js.map} +1 -1
  461. package/dist/web/public/assets/{clock-qxbYSynv.js → clock-CG5dlBGB.js} +2 -2
  462. package/dist/web/public/assets/{clock-qxbYSynv.js.map → clock-CG5dlBGB.js.map} +1 -1
  463. package/dist/web/public/assets/{confirm-dialog-DmJq4Td9.js → confirm-dialog-DlUsSur3.js} +2 -2
  464. package/dist/web/public/assets/{confirm-dialog-DmJq4Td9.js.map → confirm-dialog-DlUsSur3.js.map} +1 -1
  465. package/dist/web/public/assets/{copy-DxSHRdbc.js → copy-DnC76wFT.js} +2 -2
  466. package/dist/web/public/assets/{copy-DxSHRdbc.js.map → copy-DnC76wFT.js.map} +1 -1
  467. package/dist/web/public/assets/{data-table-S7rIjwdO.js → data-table-DswkWUfG.js} +2 -2
  468. package/dist/web/public/assets/{data-table-S7rIjwdO.js.map → data-table-DswkWUfG.js.map} +1 -1
  469. package/dist/web/public/assets/dialog-Ceo4YuXy.js +6 -0
  470. package/dist/web/public/assets/dialog-Ceo4YuXy.js.map +1 -0
  471. package/dist/web/public/assets/{download-OhsGtnO-.js → download-DF-46tS4.js} +2 -2
  472. package/dist/web/public/assets/{download-OhsGtnO-.js.map → download-DF-46tS4.js.map} +1 -1
  473. package/dist/web/public/assets/{email-C1-HxWLF.js → email-CZee26-_.js} +3 -3
  474. package/dist/web/public/assets/{email-C1-HxWLF.js.map → email-CZee26-_.js.map} +1 -1
  475. package/dist/web/public/assets/{empty-state-C-qjOHyu.js → empty-state-D9Hi0Atm.js} +2 -2
  476. package/dist/web/public/assets/{empty-state-C-qjOHyu.js.map → empty-state-D9Hi0Atm.js.map} +1 -1
  477. package/dist/web/public/assets/{external-link-DRVp9-lb.js → external-link-D64iZa9P.js} +2 -2
  478. package/dist/web/public/assets/{external-link-DRVp9-lb.js.map → external-link-D64iZa9P.js.map} +1 -1
  479. package/dist/web/public/assets/{eye-CFhg5BTa.js → eye-sY6WZb7D.js} +2 -2
  480. package/dist/web/public/assets/{eye-CFhg5BTa.js.map → eye-sY6WZb7D.js.map} +1 -1
  481. package/dist/web/public/assets/{facts-CGaLWhzi.js → facts-B7bGGwvi.js} +2 -2
  482. package/dist/web/public/assets/{facts-CGaLWhzi.js.map → facts-B7bGGwvi.js.map} +1 -1
  483. package/dist/web/public/assets/{goals-C-dJANmn.js → goals-BfQbsvZv.js} +2 -2
  484. package/dist/web/public/assets/{goals-C-dJANmn.js.map → goals-BfQbsvZv.js.map} +1 -1
  485. package/dist/web/public/assets/{health-CWcti5h3.js → health-Ba_mY0Ts.js} +2 -2
  486. package/dist/web/public/assets/{health-CWcti5h3.js.map → health-Ba_mY0Ts.js.map} +1 -1
  487. package/dist/web/public/assets/{heart-pulse-DmGhKR2W.js → heart-pulse-BjikOVwU.js} +2 -2
  488. package/dist/web/public/assets/{heart-pulse-DmGhKR2W.js.map → heart-pulse-BjikOVwU.js.map} +1 -1
  489. package/dist/web/public/assets/{heartbeat-kLoGBNCo.js → heartbeat-BM8LlPes.js} +2 -2
  490. package/dist/web/public/assets/{heartbeat-kLoGBNCo.js.map → heartbeat-BM8LlPes.js.map} +1 -1
  491. package/dist/web/public/assets/{hot-BITDoax1.js → hot-BtuLL6n8.js} +2 -2
  492. package/dist/web/public/assets/{hot-BITDoax1.js.map → hot-BtuLL6n8.js.map} +1 -1
  493. package/dist/web/public/assets/index-DEWFfW_Z.js +199 -0
  494. package/dist/web/public/assets/index-DEWFfW_Z.js.map +1 -0
  495. package/dist/web/public/assets/{installed-Co9WrtQ7.js → installed-Xr8p31ij.js} +2 -2
  496. package/dist/web/public/assets/{installed-Co9WrtQ7.js.map → installed-Xr8p31ij.js.map} +1 -1
  497. package/dist/web/public/assets/{jobs-hdHhBEvi.js → jobs-Ddy81Udm.js} +2 -2
  498. package/dist/web/public/assets/{jobs-hdHhBEvi.js.map → jobs-Ddy81Udm.js.map} +1 -1
  499. package/dist/web/public/assets/{layout-CQtbOBag.js → layout-BL74fT-L.js} +2 -2
  500. package/dist/web/public/assets/{layout-CQtbOBag.js.map → layout-BL74fT-L.js.map} +1 -1
  501. package/dist/web/public/assets/{layout-bDMXIKIR.js → layout-Bn2qUxcK.js} +2 -2
  502. package/dist/web/public/assets/{layout-bDMXIKIR.js.map → layout-Bn2qUxcK.js.map} +1 -1
  503. package/dist/web/public/assets/{layout-BMXC1Uh1.js → layout-Bp4SAA8_.js} +2 -2
  504. package/dist/web/public/assets/{layout-BMXC1Uh1.js.map → layout-Bp4SAA8_.js.map} +1 -1
  505. package/dist/web/public/assets/{layout-CysVsySh.js → layout-CZ9pGnW8.js} +2 -2
  506. package/dist/web/public/assets/{layout-CysVsySh.js.map → layout-CZ9pGnW8.js.map} +1 -1
  507. package/dist/web/public/assets/{layout-CyBGneZ9.js → layout-pasFRkKV.js} +2 -2
  508. package/dist/web/public/assets/{layout-CyBGneZ9.js.map → layout-pasFRkKV.js.map} +1 -1
  509. package/dist/web/public/assets/llm-yp7b5xxL.js +7 -0
  510. package/dist/web/public/assets/llm-yp7b5xxL.js.map +1 -0
  511. package/dist/web/public/assets/{loader-circle-9VUMGitw.js → loader-circle-Bbw4pEyE.js} +2 -2
  512. package/dist/web/public/assets/{loader-circle-9VUMGitw.js.map → loader-circle-Bbw4pEyE.js.map} +1 -1
  513. package/dist/web/public/assets/{map-pin-BXYvvHry.js → map-pin-DIXHUQgM.js} +2 -2
  514. package/dist/web/public/assets/{map-pin-BXYvvHry.js.map → map-pin-DIXHUQgM.js.map} +1 -1
  515. package/dist/web/public/assets/{mcp-BgLdlwSn.js → mcp-DyaljIM_.js} +2 -2
  516. package/dist/web/public/assets/{mcp-BgLdlwSn.js.map → mcp-DyaljIM_.js.map} +1 -1
  517. package/dist/web/public/assets/memos-Dkoc157i.js +12 -0
  518. package/dist/web/public/assets/memos-Dkoc157i.js.map +1 -0
  519. package/dist/web/public/assets/{messengers-7Phqea62.js → messengers-CcyGDeUI.js} +2 -2
  520. package/dist/web/public/assets/{messengers-7Phqea62.js.map → messengers-CcyGDeUI.js.map} +1 -1
  521. package/dist/web/public/assets/{mobile-CV5b6D2W.js → mobile-DqzIv4Xb.js} +2 -2
  522. package/dist/web/public/assets/{mobile-CV5b6D2W.js.map → mobile-DqzIv4Xb.js.map} +1 -1
  523. package/dist/web/public/assets/{native-agent-QvIa6LjE.js → native-agent-BQ7WaRGK.js} +2 -2
  524. package/dist/web/public/assets/{native-agent-QvIa6LjE.js.map → native-agent-BQ7WaRGK.js.map} +1 -1
  525. package/dist/web/public/assets/{network-BXhEjGhE.js → network-B_yUFAqC.js} +2 -2
  526. package/dist/web/public/assets/{network-BXhEjGhE.js.map → network-B_yUFAqC.js.map} +1 -1
  527. package/dist/web/public/assets/{outbox-DHQL7TQb.js → outbox-l8aVOZqO.js} +2 -2
  528. package/dist/web/public/assets/{outbox-DHQL7TQb.js.map → outbox-l8aVOZqO.js.map} +1 -1
  529. package/dist/web/public/assets/{pagination-VKuPb1Ot.js → pagination-BAKRGKa9.js} +2 -2
  530. package/dist/web/public/assets/{pagination-VKuPb1Ot.js.map → pagination-BAKRGKa9.js.map} +1 -1
  531. package/dist/web/public/assets/{persona-CWug2GLR.js → persona-D3VL9Rg1.js} +2 -2
  532. package/dist/web/public/assets/{persona-CWug2GLR.js.map → persona-D3VL9Rg1.js.map} +1 -1
  533. package/dist/web/public/assets/{plans-CZoEs5SY.js → plans-BBB5e9my.js} +2 -2
  534. package/dist/web/public/assets/{plans-CZoEs5SY.js.map → plans-BBB5e9my.js.map} +1 -1
  535. package/dist/web/public/assets/{play-CfSn5Vdl.js → play-7-Wd369f.js} +2 -2
  536. package/dist/web/public/assets/{play-CfSn5Vdl.js.map → play-7-Wd369f.js.map} +1 -1
  537. package/dist/web/public/assets/{plus-Z8l4CiqJ.js → plus-B0sfZy-j.js} +2 -2
  538. package/dist/web/public/assets/{plus-Z8l4CiqJ.js.map → plus-B0sfZy-j.js.map} +1 -1
  539. package/dist/web/public/assets/{policy-CutDSEPW.js → policy-BM1WRXH0.js} +2 -2
  540. package/dist/web/public/assets/{policy-CutDSEPW.js.map → policy-BM1WRXH0.js.map} +1 -1
  541. package/dist/web/public/assets/{qr-code-DgU5aiM6.js → qr-code-DcKs5fi3.js} +2 -2
  542. package/dist/web/public/assets/{qr-code-DgU5aiM6.js.map → qr-code-DcKs5fi3.js.map} +1 -1
  543. package/dist/web/public/assets/{react-Cb2sDjhD.js → react-DlP5eolq.js} +2 -2
  544. package/dist/web/public/assets/{react-Cb2sDjhD.js.map → react-DlP5eolq.js.map} +1 -1
  545. package/dist/web/public/assets/{refresh-ccw-D2CWiyU_.js → refresh-ccw-uNKeBeRl.js} +2 -2
  546. package/dist/web/public/assets/{refresh-ccw-D2CWiyU_.js.map → refresh-ccw-uNKeBeRl.js.map} +1 -1
  547. package/dist/web/public/assets/{reminders-Cb6Izedg.js → reminders-DHM8K0_O.js} +2 -2
  548. package/dist/web/public/assets/{reminders-Cb6Izedg.js.map → reminders-DHM8K0_O.js.map} +1 -1
  549. package/dist/web/public/assets/{save-DB0BDYTs.js → save-qwJa5_SA.js} +2 -2
  550. package/dist/web/public/assets/{save-DB0BDYTs.js.map → save-qwJa5_SA.js.map} +1 -1
  551. package/dist/web/public/assets/{schedules-8mSjE14D.js → schedules-Bcd0wbT4.js} +2 -2
  552. package/dist/web/public/assets/{schedules-8mSjE14D.js.map → schedules-Bcd0wbT4.js.map} +1 -1
  553. package/dist/web/public/assets/{search-Con69NhG.js → search-BUlzNWrj.js} +2 -2
  554. package/dist/web/public/assets/{search-Con69NhG.js.map → search-BUlzNWrj.js.map} +1 -1
  555. package/dist/web/public/assets/{search-B4fHilZ0.js → search-i1tP2maJ.js} +2 -2
  556. package/dist/web/public/assets/{search-B4fHilZ0.js.map → search-i1tP2maJ.js.map} +1 -1
  557. package/dist/web/public/assets/{security-BTe3zUg8.js → security-DgJyTT4g.js} +2 -2
  558. package/dist/web/public/assets/{security-BTe3zUg8.js.map → security-DgJyTT4g.js.map} +1 -1
  559. package/dist/web/public/assets/{service-C7SqcwfL.js → service-A0Hzear0.js} +2 -2
  560. package/dist/web/public/assets/{service-C7SqcwfL.js.map → service-A0Hzear0.js.map} +1 -1
  561. package/dist/web/public/assets/{shield-alert-CKFVsGgI.js → shield-alert-DrnN6fz_.js} +2 -2
  562. package/dist/web/public/assets/{shield-alert-CKFVsGgI.js.map → shield-alert-DrnN6fz_.js.map} +1 -1
  563. package/dist/web/public/assets/{status-badge-BSkpyN4D.js → status-badge-Ryzf96Pl.js} +2 -2
  564. package/dist/web/public/assets/{status-badge-BSkpyN4D.js.map → status-badge-Ryzf96Pl.js.map} +1 -1
  565. package/dist/web/public/assets/{subtasks-Bel-I1Sk.js → subtasks-Bzh3o3EF.js} +2 -2
  566. package/dist/web/public/assets/{subtasks-Bel-I1Sk.js.map → subtasks-Bzh3o3EF.js.map} +1 -1
  567. package/dist/web/public/assets/{table-CPn1MRcy.js → table-BbAOSyc8.js} +2 -2
  568. package/dist/web/public/assets/{table-CPn1MRcy.js.map → table-BbAOSyc8.js.map} +1 -1
  569. package/dist/web/public/assets/{topn-Ba3RjcK1.js → topn-DkhYw-Gp.js} +2 -2
  570. package/dist/web/public/assets/{topn-Ba3RjcK1.js.map → topn-DkhYw-Gp.js.map} +1 -1
  571. package/dist/web/public/assets/{trash-2-Dfov8aHD.js → trash-2-CA0cLpnU.js} +2 -2
  572. package/dist/web/public/assets/{trash-2-Dfov8aHD.js.map → trash-2-CA0cLpnU.js.map} +1 -1
  573. package/dist/web/public/assets/{use-background-tasks-BQrEeUwY.js → use-background-tasks-B64YjlA8.js} +2 -2
  574. package/dist/web/public/assets/{use-background-tasks-BQrEeUwY.js.map → use-background-tasks-B64YjlA8.js.map} +1 -1
  575. package/dist/web/public/assets/{use-event-stream-DgGpGKop.js → use-event-stream-I1lMFEfh.js} +2 -2
  576. package/dist/web/public/assets/{use-event-stream-DgGpGKop.js.map → use-event-stream-I1lMFEfh.js.map} +1 -1
  577. package/dist/web/public/assets/{use-llm-admin-DYekqogG.js → use-llm-admin-DY2axI4D.js} +2 -2
  578. package/dist/web/public/assets/{use-llm-admin-DYekqogG.js.map → use-llm-admin-DY2axI4D.js.map} +1 -1
  579. package/dist/web/public/assets/{use-memory-DbJ4pP2Z.js → use-memory-BYEjVWbU.js} +2 -2
  580. package/dist/web/public/assets/{use-memory-DbJ4pP2Z.js.map → use-memory-BYEjVWbU.js.map} +1 -1
  581. package/dist/web/public/assets/{use-observability-C2M6WZ9W.js → use-observability-Coj02yDo.js} +2 -2
  582. package/dist/web/public/assets/{use-observability-C2M6WZ9W.js.map → use-observability-Coj02yDo.js.map} +1 -1
  583. package/dist/web/public/assets/{use-settings-DMdaoWsB.js → use-settings-i1MhlkyC.js} +2 -2
  584. package/dist/web/public/assets/{use-settings-DMdaoWsB.js.map → use-settings-i1MhlkyC.js.map} +1 -1
  585. package/dist/web/public/assets/{use-workspace-BHG7h3jQ.js → use-workspace-DgEM35PY.js} +2 -2
  586. package/dist/web/public/assets/{use-workspace-BHG7h3jQ.js.map → use-workspace-DgEM35PY.js.map} +1 -1
  587. package/dist/web/public/assets/{useQuery-PdiC7-sY.js → useQuery-CY2iazjN.js} +2 -2
  588. package/dist/web/public/assets/{useQuery-PdiC7-sY.js.map → useQuery-CY2iazjN.js.map} +1 -1
  589. package/dist/web/public/assets/{vector-DnZM3OXU.js → vector-Ic76u2hY.js} +2 -2
  590. package/dist/web/public/assets/{vector-DnZM3OXU.js.map → vector-Ic76u2hY.js.map} +1 -1
  591. package/dist/web/public/assets/{viewer-Dz6k0YKp.js → viewer-BXbUN1Rl.js} +2 -2
  592. package/dist/web/public/assets/{viewer-Dz6k0YKp.js.map → viewer-BXbUN1Rl.js.map} +1 -1
  593. package/dist/web/public/assets/{workspace-BnXrWS3j.js → workspace-CUg0JPn6.js} +3 -3
  594. package/dist/web/public/assets/{workspace-BnXrWS3j.js.map → workspace-CUg0JPn6.js.map} +1 -1
  595. package/dist/web/public/assets/{workspaces-CSS_UBEi.js → workspaces-C-wb5FQj.js} +2 -2
  596. package/dist/web/public/assets/{workspaces-CSS_UBEi.js.map → workspaces-C-wb5FQj.js.map} +1 -1
  597. package/dist/web/public/assets/{x-DG-JKVw_.js → x-D1iSuoqg.js} +2 -2
  598. package/dist/web/public/assets/{x-DG-JKVw_.js.map → x-D1iSuoqg.js.map} +1 -1
  599. package/dist/web/public/index.html +2 -2
  600. package/dist/web/server.d.ts.map +1 -1
  601. package/dist/web/server.js +6 -0
  602. package/dist/web/server.js.map +1 -1
  603. package/package.json +1 -1
  604. package/dist/web/public/assets/dialog-bAIDaO-6.js +0 -6
  605. package/dist/web/public/assets/dialog-bAIDaO-6.js.map +0 -1
  606. package/dist/web/public/assets/index-O0BQoyzo.js +0 -199
  607. package/dist/web/public/assets/index-O0BQoyzo.js.map +0 -1
  608. package/dist/web/public/assets/llm-CPIRNQU2.js +0 -7
  609. package/dist/web/public/assets/llm-CPIRNQU2.js.map +0 -1
  610. package/dist/web/public/assets/memos-CfneX9DH.js +0 -12
  611. package/dist/web/public/assets/memos-CfneX9DH.js.map +0 -1
@@ -0,0 +1,168 @@
1
+ ---
2
+ name: team-builder
3
+ description: [ECC] Interactive agent picker for composing and dispatching parallel teams
4
+ origin: community
5
+ ---
6
+
7
+ # Team Builder
8
+
9
+ Interactive menu for browsing and composing agent teams on demand. Works with flat or domain-subdirectory agent collections.
10
+
11
+ ## When to Use
12
+
13
+ - You have multiple agent personas (markdown files) and want to pick which ones to use for a task
14
+ - You want to compose an ad-hoc team from different domains (e.g., Security + SEO + Architecture)
15
+ - You want to browse what agents are available before deciding
16
+
17
+ ## Prerequisites
18
+
19
+ Agent files must be markdown files containing a persona prompt (identity, rules, workflow, deliverables). The first `# Heading` is used as the agent name and the first paragraph as the description.
20
+
21
+ Both flat and subdirectory layouts are supported:
22
+
23
+ **Subdirectory layout** — domain is inferred from the folder name:
24
+
25
+ ```
26
+ agents/
27
+ ├── engineering/
28
+ │ ├── security-engineer.md
29
+ │ └── software-architect.md
30
+ ├── marketing/
31
+ │ └── seo-specialist.md
32
+ └── sales/
33
+ └── discovery-coach.md
34
+ ```
35
+
36
+ **Flat layout** — domain inferred from shared filename prefixes. A prefix counts as a domain when 2+ files share it. Files with unique prefixes go to "General". Note: the algorithm splits at the first `-`, so multi-word domains (e.g., `product-management`) should use the subdirectory layout instead:
37
+
38
+ ```
39
+ agents/
40
+ ├── engineering-security-engineer.md
41
+ ├── engineering-software-architect.md
42
+ ├── marketing-seo-specialist.md
43
+ ├── marketing-content-strategist.md
44
+ ├── sales-discovery-coach.md
45
+ └── sales-outbound-strategist.md
46
+ ```
47
+
48
+ ## Configuration
49
+
50
+ Agents are discovered via two methods, merged and deduplicated by agent name:
51
+
52
+ 1. **`claude agents` command** (primary) — run `claude agents` to get all agents known to the CLI, including user agents, plugin agents (e.g. `everything-claude-code:architect`), and built-in agents. This automatically covers ECC marketplace installs without any path configuration.
53
+ 2. **File glob** (fallback, for reading agent content) — agent markdown files are read from:
54
+ - `./agents/**/*.md` + `./agents/*.md` — project-local agents
55
+ - `~/.claude/agents/**/*.md` + `~/.claude/agents/*.md` — global user agents
56
+
57
+ Earlier sources take precedence when names collide: user agents > plugin agents > built-in agents. A custom path can be used instead if the user specifies one.
58
+
59
+ ## How It Works
60
+
61
+ ### Step 1: Discover Available Agents
62
+
63
+ Run `claude agents` to get the full agent list. Parse each line:
64
+ - **Plugin agents** are prefixed with `plugin-name:` (e.g., `everything-claude-code:security-reviewer`). Use the part after `:` as the agent name and the plugin name as the domain.
65
+ - **User agents** have no prefix. Read the corresponding markdown file from `~/.claude/agents/` or `./agents/` to extract the name and description.
66
+ - **Built-in agents** (e.g., `Explore`, `Plan`) are skipped unless the user explicitly asks to include them.
67
+
68
+ For user agents loaded from markdown files:
69
+ - **Subdirectory layout:** extract the domain from the parent folder name
70
+ - **Flat layout:** collect all filename prefixes (text before the first `-`). A prefix qualifies as a domain only if it appears in 2 or more filenames (e.g., `engineering-security-engineer.md` and `engineering-software-architect.md` both start with `engineering` → Engineering domain). Files with unique prefixes (e.g., `code-reviewer.md`, `tdd-guide.md`) are grouped under "General"
71
+ - Extract the agent name from the first `# Heading`. If no heading is found, derive the name from the filename (strip `.md`, replace hyphens with spaces, title-case)
72
+ - Extract a one-line summary from the first paragraph after the heading
73
+
74
+ If no agents are found after running `claude agents` and probing file locations, inform the user: "No agents found. Run `claude agents` to verify your setup." Then stop.
75
+
76
+ ### Step 2: Present Domain Menu
77
+
78
+ ```
79
+ Available agent domains:
80
+ 1. Engineering — Software Architect, Security Engineer
81
+ 2. Marketing — SEO Specialist
82
+ 3. Sales — Discovery Coach, Outbound Strategist
83
+
84
+ Pick domains or name specific agents (e.g., "1,3" or "security + seo"):
85
+ ```
86
+
87
+ - Skip domains with zero agents (empty directories)
88
+ - Show agent count per domain
89
+
90
+ ### Step 3: Handle Selection
91
+
92
+ Accept flexible input:
93
+ - Numbers: "1,3" selects all agents from Engineering and Sales
94
+ - Names: "security + seo" fuzzy-matches against discovered agents
95
+ - "all from engineering" selects every agent in that domain
96
+
97
+ If more than 5 agents are selected, list them alphabetically and ask the user to narrow down: "You selected N agents (max 5). Pick which to keep, or say 'first 5' to use the first five alphabetically."
98
+
99
+ Confirm selection:
100
+ ```
101
+ Selected: Security Engineer + SEO Specialist
102
+ What should they work on? (describe the task):
103
+ ```
104
+
105
+ ### Step 4: Spawn Agents in Parallel
106
+
107
+ 1. Read each selected agent's markdown file
108
+ 2. Prompt for the task description if not already provided
109
+ 3. Spawn all agents in parallel using the Agent tool:
110
+ - `subagent_type: "general-purpose"`
111
+ - `prompt: "{agent file content}\n\nTask: {task description}"`
112
+ - Each agent runs independently — no inter-agent communication needed
113
+ 4. If an agent fails (error, timeout, or empty output), note the failure inline (e.g., "Security Engineer: failed — [reason]") and continue with results from agents that succeeded
114
+
115
+ ### Step 5: Synthesize Results
116
+
117
+ Collect all outputs and present a unified report:
118
+ - Results grouped by agent
119
+ - Synthesis section highlighting:
120
+ - Agreements across agents
121
+ - Conflicts or tensions between recommendations
122
+ - Recommended next steps
123
+
124
+ If only 1 agent was selected, skip synthesis and present the output directly.
125
+
126
+ ## Rules
127
+
128
+ - **Dynamic discovery only.** Never hardcode agent lists. New files in the directory auto-appear in the menu.
129
+ - **Max 5 agents per team.** More than 5 produces diminishing returns and excessive token usage. Enforce at selection time.
130
+ - **Parallel dispatch.** All agents run simultaneously — use the Agent tool's parallel invocation pattern.
131
+ - **Parallel Agent calls, not TeamCreate.** This skill uses parallel Agent tool calls for independent work. TeamCreate (a Claude Code tool for multi-agent dialogue) is only needed when agents must debate or respond to each other.
132
+
133
+ ## Examples
134
+
135
+ ```
136
+ User: team builder
137
+
138
+ Claude:
139
+ Available agent domains:
140
+ 1. Engineering (2) — Software Architect, Security Engineer
141
+ 2. Marketing (1) — SEO Specialist
142
+ 3. Sales (4) — Discovery Coach, Outbound Strategist, Proposal Strategist, Sales Engineer
143
+ 4. Support (1) — Executive Summary
144
+
145
+ Pick domains or name specific agents:
146
+
147
+ User: security + seo
148
+
149
+ Claude:
150
+ Selected: Security Engineer + SEO Specialist
151
+ What should they work on?
152
+
153
+ User: Review my Next.js e-commerce site before launch
154
+
155
+ [Both agents spawn in parallel, each applying their specialty to the codebase]
156
+
157
+ Claude:
158
+ ## Security Engineer Findings
159
+ - [findings...]
160
+
161
+ ## SEO Specialist Findings
162
+ - [findings...]
163
+
164
+ ## Synthesis
165
+ Both agents agree on: [...]
166
+ Tension: Security recommends CSP that blocks inline styles, SEO needs inline schema markup. Resolution: [...]
167
+ Next steps: [...]
168
+ ```
@@ -0,0 +1,109 @@
1
+ ---
2
+ name: terminal-ops
3
+ description: [ECC] Evidence-first repo execution workflow for ECC. Use when the user wants a command run, a repo checked, a CI failure debugged, or a narrow fix pushed with exact proof of what was executed and verified.
4
+ origin: ECC
5
+ ---
6
+
7
+ # Terminal Ops
8
+
9
+ Use this when the user wants real repo execution: run commands, inspect git state, debug CI or builds, make a narrow fix, and report exactly what changed and what was verified.
10
+
11
+ This skill is intentionally narrower than general coding guidance. It is an operator workflow for evidence-first terminal execution.
12
+
13
+ ## Skill Stack
14
+
15
+ Pull these ECC-native skills into the workflow when relevant:
16
+
17
+ - `verification-loop` for exact proving steps after changes
18
+ - `tdd-workflow` when the right fix needs regression coverage
19
+ - `security-review` when secrets, auth, or external inputs are involved
20
+ - `github-ops` when the task depends on CI runs, PR state, or release status
21
+ - `knowledge-ops` when the verified outcome needs to be captured into durable project context
22
+
23
+ ## When to Use
24
+
25
+ - user says "fix", "debug", "run this", "check the repo", or "push it"
26
+ - the task depends on command output, git state, test results, or a verified local fix
27
+ - the answer must distinguish changed locally, verified locally, committed, and pushed
28
+
29
+ ## Guardrails
30
+
31
+ - inspect before editing
32
+ - stay read-only if the user asked for audit/review only
33
+ - prefer repo-local scripts and helpers over improvised ad hoc wrappers
34
+ - do not claim fixed until the proving command was rerun
35
+ - do not claim pushed unless the branch actually moved upstream
36
+
37
+ ## Workflow
38
+
39
+ ### 1. Resolve the working surface
40
+
41
+ Settle:
42
+
43
+ - exact repo path
44
+ - branch
45
+ - local diff state
46
+ - requested mode:
47
+ - inspect
48
+ - fix
49
+ - verify
50
+ - push
51
+
52
+ ### 2. Read the failing surface first
53
+
54
+ Before changing anything:
55
+
56
+ - inspect the error
57
+ - inspect the file or test
58
+ - inspect git state
59
+ - use any already-supplied logs or context before re-reading blindly
60
+
61
+ ### 3. Keep the fix narrow
62
+
63
+ Solve one dominant failure at a time:
64
+
65
+ - use the smallest useful proving command first
66
+ - only escalate to a bigger build/test pass after the local failure is addressed
67
+ - if a command keeps failing with the same signature, stop broad retries and narrow scope
68
+
69
+ ### 4. Report exact execution state
70
+
71
+ Use exact status words:
72
+
73
+ - inspected
74
+ - changed locally
75
+ - verified locally
76
+ - committed
77
+ - pushed
78
+ - blocked
79
+
80
+ ## Output Format
81
+
82
+ ```text
83
+ SURFACE
84
+ - repo
85
+ - branch
86
+ - requested mode
87
+
88
+ EVIDENCE
89
+ - failing command / diff / test
90
+
91
+ ACTION
92
+ - what changed
93
+
94
+ STATUS
95
+ - inspected / changed locally / verified locally / committed / pushed / blocked
96
+ ```
97
+
98
+ ## Pitfalls
99
+
100
+ - do not work from stale memory when the live repo state can be read
101
+ - do not widen a narrow fix into repo-wide churn
102
+ - do not use destructive git commands
103
+ - do not ignore unrelated local work
104
+
105
+ ## Verification
106
+
107
+ - the response names the proving command or test
108
+ - git-related work names the repo path and branch
109
+ - any push claim includes the target branch and exact result
@@ -0,0 +1,203 @@
1
+ ---
2
+ name: tinystruct-patterns
3
+ description: [ECC] Expert guidance for developing with the tinystruct Java framework. Use when working on the tinystruct codebase or any project built on tinystruct — including creating Application classes, @Action-mapped routes, unit tests, ActionRegistry, HTTP/CLI dual-mode handling, the built-in HTTP server, the event system, JSON with Builder/Builders, database persistence with AbstractData, POJO generation, Server-Sent Events (SSE), file uploads, and outbound HTTP networking.
4
+ origin: ECC
5
+ ---
6
+
7
+ # tinystruct Development Patterns
8
+
9
+ Architecture and implementation patterns for building modules with the **tinystruct** Java framework – a lightweight, high-performance framework that treats CLI and HTTP as equal citizens, requiring no `main()` method and minimal configuration.
10
+
11
+ ## Core Principle
12
+
13
+ **CLI and HTTP are equal citizens.** Every method annotated with `@Action` should ideally be runnable from both a terminal and a web browser without modification. This "dual-mode" capability is the core design philosophy of tinystruct.
14
+
15
+ ## When to Activate
16
+
17
+ ### When to Use
18
+
19
+ - Creating new `Application` modules by extending `AbstractApplication`.
20
+ - Defining routes and command-line actions using `@Action`.
21
+ - Handling per-request state via `Context`.
22
+ - Performing JSON serialization using the native `Builder` and `Builders` components.
23
+ - Working with database persistence via `AbstractData` POJOs.
24
+ - Generating POJOs from database tables using the `generate` command.
25
+ - Implementing Server-Sent Events (SSE) for real-time push.
26
+ - Handling file uploads via multipart data.
27
+ - Making outbound HTTP requests with `URLRequest` and `HTTPHandler`.
28
+ - Configuring database connections or system settings in `application.properties`.
29
+ - Debugging routing conflicts (Actions) or CLI argument parsing.
30
+
31
+ ## How It Works
32
+
33
+ The tinystruct framework treats any method annotated with `@Action` as a routable endpoint for both terminal and web environments. Applications are created by extending `AbstractApplication`, which provides core lifecycle hooks like `init()` and access to the request `Context`.
34
+
35
+ Routing is handled by the `ActionRegistry`, which automatically maps path segments to method arguments and injects dependencies. For data-only services, the native `Builder` and `Builders` components should be used for JSON serialization to maintain a zero-dependency footprint. The database layer uses `AbstractData` POJOs paired with XML mapping files for CRUD operations without external ORM libraries.
36
+
37
+ ## Examples
38
+
39
+ ### Basic Application (MyService)
40
+ ```java
41
+ public class MyService extends AbstractApplication {
42
+ @Override
43
+ public void init() {
44
+ this.setTemplateRequired(false); // Disable .view lookup for data/API apps
45
+ }
46
+
47
+ @Override public String version() { return "1.0.0"; }
48
+
49
+ @Action("greet")
50
+ public String greet() {
51
+ return "Hello from tinystruct!";
52
+ }
53
+
54
+ // Path parameter: GET /?q=greet/James OR bin/dispatcher greet/James
55
+ @Action("greet")
56
+ public String greet(String name) {
57
+ return "Hello, " + name + "!";
58
+ }
59
+ }
60
+ ```
61
+
62
+ ### HTTP Mode Disambiguation (login)
63
+ ```java
64
+ @Action(value = "login", mode = Mode.HTTP_POST)
65
+ public String doLogin(Request<?, ?> request) throws ApplicationException {
66
+ request.getSession().setAttribute("userId", "42");
67
+ return "Logged in";
68
+ }
69
+ ```
70
+
71
+ ### Native JSON Data Handling (Builder + Builders)
72
+ ```java
73
+ import org.tinystruct.data.component.Builder;
74
+ import org.tinystruct.data.component.Builders;
75
+
76
+ @Action("api/data")
77
+ public String getData() throws ApplicationException {
78
+ Builders dataList = new Builders();
79
+ Builder item = new Builder();
80
+ item.put("id", 1);
81
+ item.put("name", "James");
82
+ dataList.add(item);
83
+
84
+ Builder response = new Builder();
85
+ response.put("status", "success");
86
+ response.put("data", dataList);
87
+ return response.toString(); // {"status":"success","data":[{"id":1,"name":"James"}]}
88
+ }
89
+ ```
90
+
91
+ ### SSE (Server-Sent Events)
92
+ ```java
93
+ import org.tinystruct.http.SSEPushManager;
94
+
95
+ @Action("sse/connect")
96
+ public String connect() {
97
+ return "{\"type\":\"connect\",\"message\":\"Connected to SSE\"}";
98
+ }
99
+
100
+ // Push to a specific client
101
+ String sessionId = getContext().getId();
102
+ Builder msg = new Builder();
103
+ msg.put("text", "Hello, user!");
104
+ SSEPushManager.getInstance().push(sessionId, msg);
105
+
106
+ // Broadcast to all
107
+ // Broadcast to all
108
+ SSEPushManager.getInstance().broadcast(msg);
109
+ ```
110
+
111
+ ### File Upload
112
+ ```java
113
+ import org.tinystruct.data.FileEntity;
114
+
115
+ @Action(value = "upload", mode = Mode.HTTP_POST)
116
+ public String upload(Request<?, ?> request) throws ApplicationException {
117
+ List<FileEntity> files = request.getAttachments();
118
+ if (files != null) {
119
+ for (FileEntity file : files) {
120
+ System.out.println("Uploaded: " + file.getFilename());
121
+ }
122
+ }
123
+ return "Upload OK";
124
+ }
125
+ ```
126
+
127
+ ## Configuration
128
+
129
+ Settings are managed in `src/main/resources/application.properties`.
130
+
131
+ ```properties
132
+ # Database
133
+ driver=org.h2.Driver
134
+ database.url=jdbc:h2:~/mydb
135
+ database.user=sa
136
+ database.password=
137
+
138
+ # Server
139
+ default.home.page=hello
140
+ server.port=8080
141
+
142
+ # Locale
143
+ default.language=en_US
144
+
145
+ # Session (Redis for clustered environments)
146
+ # default.session.repository=org.tinystruct.http.RedisSessionRepository
147
+ # redis.host=127.0.0.1
148
+ # redis.port=6379
149
+ ```
150
+
151
+ Access config values in your application:
152
+ ```java
153
+ String port = this.getConfiguration("server.port");
154
+ ```
155
+
156
+ ## Red Flags & Anti-patterns
157
+
158
+ | Symptom | Correct Pattern |
159
+ |---|---|
160
+ | Importing `com.google.gson` or `com.fasterxml.jackson` | Use `org.tinystruct.data.component.Builder` / `Builders`. |
161
+ | Using `List<Builder>` for JSON arrays | Use `Builders` to avoid generic type erasure issues. |
162
+ | `ApplicationRuntimeException: template not found` | Call `setTemplateRequired(false)` in `init()` for API-only apps. |
163
+ | Annotating `private` methods with `@Action` | Actions must be `public` to be registered by the framework. |
164
+ | Hardcoding `main(String[] args)` in apps | Use `bin/dispatcher` as the entry point for all modules. |
165
+ | Manual `ActionRegistry` registration | Prefer the `@Action` annotation for automatic discovery. |
166
+ | Action not found at runtime | Ensure class is imported via `--import` or listed in `application.properties`. |
167
+ | CLI arg not visible | Pass with `--key value`; access via `getContext().getAttribute("--key")`. |
168
+ | Two methods same path, wrong one fires | Set explicit `mode` (e.g., `HTTP_GET` vs `HTTP_POST`) to disambiguate. |
169
+
170
+ ## Best Practices
171
+
172
+ 1. **Granular Applications**: Break logic into smaller, focused applications rather than one monolithic class.
173
+ 2. **Setup in `init()`**: Leverage `init()` for setup (config, DB) rather than the constructor. Do NOT call `setAction()` — use `@Action` annotation.
174
+ 3. **Mode Awareness**: Use the `Mode` parameter in `@Action` to restrict sensitive operations to `CLI` only or specific HTTP methods.
175
+ 4. **Context over Params**: For optional CLI flags, use `getContext().getAttribute("--flag")` rather than adding parameters to the method signature.
176
+ 5. **Asynchronous Events**: For heavy tasks triggered by events, use `CompletableFuture.runAsync()` inside the event handler.
177
+
178
+ ## Technical Reference
179
+
180
+ Detailed guides are available in the `references/` directory:
181
+
182
+ - [Architecture & Config](references/architecture.md) — Abstractions, Package Map, Properties
183
+ - [Routing & @Action](references/routing.md) — Annotation details, Modes, Parameters
184
+ - [Data Handling](references/data-handling.md) — Builder, Builders, JSON serialization & parsing
185
+ - [Database Persistence](references/database.md) — AbstractData POJOs, CRUD, mapping XML, POJO generation
186
+ - [System & Usage](references/system-usage.md) — Context, Sessions, SSE, File Uploads, Events, Networking
187
+ - [Testing Patterns](references/testing.md) — JUnit 5 unit and HTTP integration testing
188
+
189
+ ## Reference Source Files (Internal)
190
+
191
+ - `src/main/java/org/tinystruct/AbstractApplication.java` — Core base class with lifecycle hooks
192
+ - `src/main/java/org/tinystruct/system/annotation/Action.java` — Annotation & Modes
193
+ - `src/main/java/org/tinystruct/application/ActionRegistry.java` — Routing Engine
194
+ - `src/main/java/org/tinystruct/data/component/Builder.java` — JSON object serializer
195
+ - `src/main/java/org/tinystruct/data/component/Builders.java` — JSON array serializer
196
+ - `src/main/java/org/tinystruct/data/component/AbstractData.java` — Base POJO class with CRUD
197
+ - `src/main/java/org/tinystruct/data/Mapping.java` — Mapping XML parser
198
+ - `src/main/java/org/tinystruct/data/tools/MySQLGenerator.java` — POJO generator reference
199
+ - `src/main/java/org/tinystruct/data/component/FieldType.java` — SQL-to-Java type mappings
200
+ - `src/main/java/org/tinystruct/data/component/Condition.java` — Fluent SQL query builder
201
+ - `src/main/java/org/tinystruct/http/SSEPushManager.java` — SSE connection management
202
+ - `src/test/java/org/tinystruct/application/ActionRegistryTest.java` — Registry test examples
203
+ - `src/test/java/org/tinystruct/system/HttpServerHttpModeTest.java` — HTTP integration test patterns
@@ -0,0 +1,90 @@
1
+ # tinystruct Architecture and Configuration
2
+
3
+ ## When to Use
4
+
5
+ Choose **tinystruct** when you need a lightweight, high-performance Java framework that treats CLI and HTTP as equal citizens. Ideal for microservices, CLI utilities, and data-driven applications with a small footprint and zero-dependency JSON handling.
6
+
7
+ ## How It Works
8
+
9
+ ### Core Architecture
10
+
11
+ The framework operates on a singleton `ActionRegistry` that maps URL patterns (or command strings) to `Action` objects. When a request arrives, the system resolves the path and invokes the corresponding method handle.
12
+
13
+ #### Key Abstractions
14
+
15
+ | Class/Interface | Role |
16
+ |---|---|
17
+ | `AbstractApplication` | Base class for all tinystruct applications. Extend this. |
18
+ | `@Action` annotation | Maps a method to a URI path (web) or command name (CLI). The single routing primitive. |
19
+ | `ActionRegistry` | Singleton that maps URL patterns to `Action` objects via regex. Never instantiate directly. |
20
+ | `Action` | Wraps a `MethodHandle` + regex pattern + priority + `Mode` for dispatch. |
21
+ | `Context` | Per-request state store. Access via `getContext()`. Holds CLI args and HTTP request/response. |
22
+ | `Dispatcher` | CLI entry point (`bin/dispatcher`). Reads `--import` to load applications. |
23
+ | `HttpServer` | Built-in HTTP server. Start with `bin/dispatcher start --import org.tinystruct.system.HttpServer`. |
24
+
25
+ ### Package Map
26
+
27
+ ```
28
+ org.tinystruct/
29
+ ├── AbstractApplication.java ← extend this
30
+ ├── Application.java ← interface
31
+ ├── ApplicationException.java ← checked exception
32
+ ├── ApplicationRuntimeException.java ← unchecked exception
33
+ ├── application/
34
+ │ ├── Action.java ← runtime action wrapper
35
+ │ ├── ActionRegistry.java ← singleton route registry
36
+ │ └── Context.java ← request context
37
+ ├── system/
38
+ │ ├── annotation/Action.java ← @Action annotation + Mode enum
39
+ │ ├── Dispatcher.java ← CLI dispatcher
40
+ │ ├── HttpServer.java ← built-in HTTP server
41
+ │ ├── EventDispatcher.java ← event bus
42
+ │ └── Settings.java ← reads application.properties
43
+ ├── data/
44
+ │ ├── component/Builder.java ← JSON object (use instead of Gson/Jackson)
45
+ │ ├── component/Builders.java ← JSON array
46
+ │ ├── component/AbstractData.java ← base POJO for DB persistence
47
+ │ ├── component/Condition.java ← fluent SQL query builder
48
+ │ ├── component/FieldType.java ← SQL-to-Java type mappings
49
+ │ ├── Mapping.java ← reads .map.xml metadata
50
+ │ ├── DatabaseOperator.java ← low-level JDBC wrapper
51
+ │ └── FileEntity.java ← file upload representation
52
+ ├── http/ ← Request, Response, Constants
53
+ │ └── SSEPushManager.java ← Server-Sent Events management
54
+ └── net/ ← URLRequest, HTTPHandler (outbound HTTP)
55
+ ```
56
+
57
+ ### Template Behavior and Dispatch Flow
58
+
59
+ By default, the framework assumes a view template is required. If `templateRequired` is `true`, `toString()` looks for a `.view` file in `src/main/resources/themes/<ClassName>.view`. Use `setVariable("name", value)` to pass data to templates, which use `{%name%}` for interpolation.
60
+
61
+ ## Examples
62
+
63
+ ### Minimal Application Initialization
64
+ ```java
65
+ @Override
66
+ public void init() {
67
+ this.setTemplateRequired(false); // Skip .view template lookup for data-only apps
68
+ // Do NOT call setAction() here — use @Action annotation instead
69
+ }
70
+ ```
71
+
72
+ ### Action Definition and CLI Invocation
73
+ ```java
74
+ @Action("hello")
75
+ public String hello() {
76
+ return "Hello, tinystruct!";
77
+ }
78
+ ```
79
+ **Execution via Dispatcher:**
80
+ ```bash
81
+ bin/dispatcher hello
82
+ bin/dispatcher greet/James
83
+ bin/dispatcher echo --words "Hello" --import com.example.HelloApp
84
+ ```
85
+
86
+ ### Configuration Access
87
+ Located at `src/main/resources/application.properties`:
88
+ ```java
89
+ String port = this.getConfiguration("server.port");
90
+ ```
@@ -0,0 +1,60 @@
1
+ # tinystruct Data Handling (JSON)
2
+
3
+ ## When to Use
4
+
5
+ Prefer `org.tinystruct.data.component.Builder` and `Builders` for lightweight, zero-dependency JSON. Use `Builder` for JSON objects (`{}`), `Builders` for JSON arrays (`[]`). **Always use `Builders` instead of `List<Builder>`** to avoid generic type erasure issues.
6
+
7
+ ## How It Works
8
+
9
+ `Builder` provides a key-value interface for creating and reading JSON objects. `Builders` provides an indexed list for JSON arrays. Both integrate directly with `AbstractApplication` result handling.
10
+
11
+ ### Why Builder/Builders?
12
+ - **Zero External Dependencies** — lean and fast
13
+ - **Native Integration** — works with framework result handling
14
+ - **Type Safety** — `Builders` serializes properly to `[]`; `List<Builder>` can cause casting issues
15
+
16
+ ## Examples
17
+
18
+ ### Serialize a Single Object
19
+ ```java
20
+ import org.tinystruct.data.component.Builder;
21
+
22
+ Builder response = new Builder();
23
+ response.put("status", "success");
24
+ response.put("count", 42);
25
+ return response.toString(); // {"status":"success","count":42}
26
+ ```
27
+
28
+ ### Serialize a List using Builders
29
+ ```java
30
+ import org.tinystruct.data.component.Builder;
31
+ import org.tinystruct.data.component.Builders;
32
+
33
+ Builders dataList = new Builders();
34
+ for (MyModel item : myCollection) {
35
+ Builder b = new Builder();
36
+ b.put("id", item.getId());
37
+ b.put("name", item.getName());
38
+ dataList.add(b);
39
+ }
40
+ Builder response = new Builder();
41
+ response.put("data", dataList);
42
+ return response.toString(); // {"data":[{"id":1,"name":"X"}]}
43
+ ```
44
+
45
+ ### Parse a JSON Object
46
+ ```java
47
+ Builder parsed = new Builder();
48
+ parsed.parse(jsonString);
49
+ String status = parsed.get("status").toString();
50
+ ```
51
+
52
+ ### Parse a JSON Array
53
+ ```java
54
+ Builders parsedArray = new Builders();
55
+ parsedArray.parse(jsonArrayString);
56
+ for (int i = 0; i < parsedArray.size(); i++) {
57
+ Builder item = parsedArray.get(i);
58
+ System.out.println(item.get("name"));
59
+ }
60
+ ```