tribunal-kit 9.2.3 → 9.2.5

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 (1505) hide show
  1. package/.agent/.manifest.json +78 -78
  2. package/.agent/.shared/ui-ux-pro-max/README.md +4 -4
  3. package/.agent/.tribunal/session.jsonl +15 -0
  4. package/.agent/ADRs/ADR-001-system-architecture-intelligence.md +49 -0
  5. package/.agent/ARCHITECTURE.md +63 -63
  6. package/.agent/agents/accessibility-reviewer.md +109 -109
  7. package/.agent/agents/agent-shield-auditor.md +18 -0
  8. package/.agent/agents/ai-code-reviewer.md +223 -223
  9. package/.agent/agents/anti-pattern-reviewer.md +104 -104
  10. package/.agent/agents/api-architect.md +89 -89
  11. package/.agent/agents/architecture-auditor.md +195 -0
  12. package/.agent/agents/backend-specialist.md +242 -242
  13. package/.agent/agents/cloud-engineer.md +120 -120
  14. package/.agent/agents/code-archaeologist.md +186 -186
  15. package/.agent/agents/complexity-reviewer.md +76 -76
  16. package/.agent/agents/database-architect.md +206 -206
  17. package/.agent/agents/db-latency-auditor.md +237 -237
  18. package/.agent/agents/debugger.md +215 -215
  19. package/.agent/agents/dependency-reviewer.md +124 -124
  20. package/.agent/agents/devops-engineer.md +240 -240
  21. package/.agent/agents/documentation-writer.md +228 -228
  22. package/.agent/agents/explorer-agent.md +186 -186
  23. package/.agent/agents/frontend-reviewer.md +195 -195
  24. package/.agent/agents/frontend-specialist.md +122 -122
  25. package/.agent/agents/game-developer.md +68 -68
  26. package/.agent/agents/harness-manager.md +49 -0
  27. package/.agent/agents/human-gate-negotiator.md +22 -0
  28. package/.agent/agents/interaction-reviewer.md +123 -123
  29. package/.agent/agents/kernel-scheduler.md +56 -0
  30. package/.agent/agents/logic-reviewer.md +147 -147
  31. package/.agent/agents/memory-archivist.md +37 -0
  32. package/.agent/agents/minimalist-reviewer.md +104 -104
  33. package/.agent/agents/mobile-developer.md +216 -216
  34. package/.agent/agents/mobile-reviewer.md +180 -180
  35. package/.agent/agents/orchestrator.md +268 -263
  36. package/.agent/agents/penetration-tester.md +180 -180
  37. package/.agent/agents/performance-optimizer.md +202 -202
  38. package/.agent/agents/performance-reviewer.md +180 -180
  39. package/.agent/agents/pipeline-reviewer.md +144 -144
  40. package/.agent/agents/precedence-reviewer.md +266 -266
  41. package/.agent/agents/product-manager.md +167 -167
  42. package/.agent/agents/product-owner.md +103 -103
  43. package/.agent/agents/product-reviewer.md +103 -103
  44. package/.agent/agents/project-planner.md +181 -176
  45. package/.agent/agents/qa-automation-engineer.md +244 -244
  46. package/.agent/agents/resilience-reviewer.md +108 -108
  47. package/.agent/agents/schema-reviewer.md +87 -87
  48. package/.agent/agents/security-auditor.md +204 -199
  49. package/.agent/agents/seo-specialist.md +213 -213
  50. package/.agent/agents/sql-reviewer.md +180 -180
  51. package/.agent/agents/supervisor-agent.md +202 -202
  52. package/.agent/agents/swarm-worker-contracts.md +170 -170
  53. package/.agent/agents/swarm-worker-registry.md +99 -99
  54. package/.agent/agents/system-architect.md +260 -105
  55. package/.agent/agents/test-coverage-reviewer.md +181 -181
  56. package/.agent/agents/test-engineer.md +138 -138
  57. package/.agent/agents/throughput-optimizer.md +316 -316
  58. package/.agent/agents/type-safety-reviewer.md +202 -202
  59. package/.agent/agents/ui-ux-auditor.md +80 -80
  60. package/.agent/agents/ui-visual-auditor.md +102 -102
  61. package/.agent/agents/ux-reviewer.md +109 -109
  62. package/.agent/agents/visual-reviewer.md +103 -103
  63. package/.agent/agents/vitals-reviewer.md +245 -245
  64. package/.agent/config/claude.json +18 -18
  65. package/.agent/config/plugin.json +102 -102
  66. package/.agent/config/slash-commands.json +115 -115
  67. package/.agent/config/specialist-registry.json +415 -415
  68. package/.agent/config/system-prompt.md +258 -258
  69. package/.agent/history/arch-mapper-cache.json +6712 -0
  70. package/.agent/history/architecture.idx.json +5746 -0
  71. package/.agent/mcp_config.json +32 -32
  72. package/.agent/patterns/generator.md +11 -11
  73. package/.agent/patterns/inversion.md +14 -14
  74. package/.agent/patterns/pipeline.md +11 -11
  75. package/.agent/patterns/reviewer.md +15 -15
  76. package/.agent/patterns/tool-wrapper.md +11 -11
  77. package/.agent/plans/implementation_plan.md +48 -0
  78. package/.agent/plans/task.md +35 -0
  79. package/.agent/routing_index.json +2060 -2060
  80. package/.agent/rules/GEMINI.md +437 -437
  81. package/.agent/rules/GEMINI_PLANNER.md +82 -82
  82. package/.agent/rules/kernel.md +86 -86
  83. package/.agent/scripts/_colors.js +210 -210
  84. package/.agent/scripts/_utils.js +373 -377
  85. package/.agent/scripts/architecture_mapper.js +625 -0
  86. package/.agent/scripts/ast_context_loader.js +137 -137
  87. package/.agent/scripts/auto_preview.js +203 -203
  88. package/.agent/scripts/browser_audit.js +102 -102
  89. package/.agent/scripts/bundle_analyzer.js +287 -287
  90. package/.agent/scripts/case_law_manager.js +887 -887
  91. package/.agent/scripts/checklist.js +300 -300
  92. package/.agent/scripts/cicd_validator.js +305 -305
  93. package/.agent/scripts/context_broker.js +962 -962
  94. package/.agent/scripts/context_compiler.js +1143 -1112
  95. package/.agent/scripts/contract_engine.js +402 -402
  96. package/.agent/scripts/dependency_analyzer.js +313 -313
  97. package/.agent/scripts/graph_builder.js +384 -384
  98. package/.agent/scripts/graph_visualizer.js +390 -390
  99. package/.agent/scripts/graph_zoom.js +181 -181
  100. package/.agent/scripts/guardrail_engine.js +785 -785
  101. package/.agent/scripts/harness_manager.js +60 -0
  102. package/.agent/scripts/impact_classifier.js +192 -192
  103. package/.agent/scripts/inner_loop_validator.js +472 -472
  104. package/.agent/scripts/integrity_manifest.js +484 -484
  105. package/.agent/scripts/lint_runner.js +218 -218
  106. package/.agent/scripts/marathon_harness.js +986 -986
  107. package/.agent/scripts/mcp_server.js +181 -0
  108. package/.agent/scripts/memory_archivist.js +97 -0
  109. package/.agent/scripts/memory_consolidator.js +37 -0
  110. package/.agent/scripts/memory_engine.js +782 -742
  111. package/.agent/scripts/minify_context.js +111 -111
  112. package/.agent/scripts/minimal_change_engine.js +445 -445
  113. package/.agent/scripts/mutation_runner.js +307 -305
  114. package/.agent/scripts/payload_schemas.js +164 -164
  115. package/.agent/scripts/pipeline_engine.js +906 -891
  116. package/.agent/scripts/prompt_compiler.js +272 -272
  117. package/.agent/scripts/schema_validator.js +326 -326
  118. package/.agent/scripts/security_scan.js +390 -390
  119. package/.agent/scripts/session_logger.js +115 -0
  120. package/.agent/scripts/session_manager.js +299 -289
  121. package/.agent/scripts/signal_detector.js +175 -175
  122. package/.agent/scripts/skill_evolution.js +997 -997
  123. package/.agent/scripts/skill_integrator.js +304 -304
  124. package/.agent/scripts/socratic_gate_policy.js +63 -63
  125. package/.agent/scripts/strengthen_skills.js +199 -199
  126. package/.agent/scripts/swarm_dispatcher.js +983 -906
  127. package/.agent/scripts/syscall_registry.js +105 -0
  128. package/.agent/scripts/test_runner.js +209 -209
  129. package/.agent/scripts/token_budget_broker.js +165 -165
  130. package/.agent/scripts/trace_engine.js +126 -126
  131. package/.agent/scripts/verify_all.js +276 -276
  132. package/.agent/scripts/visual_audit.js +87 -87
  133. package/.agent/skill_topic_map.json +314 -287
  134. package/.agent/skills/12-principles-of-animation/SKILL.md +51 -51
  135. package/.agent/skills/60fps-animation/SKILL.md +91 -91
  136. package/.agent/skills/accessible-animation/SKILL.md +189 -189
  137. package/.agent/skills/adapt/SKILL.md +56 -56
  138. package/.agent/skills/adr-generation/SKILL.md +57 -0
  139. package/.agent/skills/advanced-rag-pipelines/SKILL.md +94 -94
  140. package/.agent/skills/agent-organizer/SKILL.md +117 -117
  141. package/.agent/skills/agent-syscall-guidelines/SKILL.md +25 -0
  142. package/.agent/skills/agentic-patterns/SKILL.md +281 -281
  143. package/.agent/skills/agentic-workflows-2026/SKILL.md +91 -83
  144. package/.agent/skills/agentshield-security/SKILL.md +26 -0
  145. package/.agent/skills/ai-app-hardening/SKILL.md +51 -51
  146. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +162 -162
  147. package/.agent/skills/animation-on-scroll/SKILL.md +196 -196
  148. package/.agent/skills/animation-systems/SKILL.md +198 -198
  149. package/.agent/skills/antfu-conventions/SKILL.md +54 -54
  150. package/.agent/skills/api-patterns/SKILL.md +218 -218
  151. package/.agent/skills/api-security-auditor/SKILL.md +155 -155
  152. package/.agent/skills/app-builder/SKILL.md +535 -535
  153. package/.agent/skills/app-builder/templates/SKILL.md +108 -108
  154. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -76
  155. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -92
  156. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -88
  157. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -88
  158. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -83
  159. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -90
  160. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -90
  161. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +126 -126
  162. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +127 -127
  163. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +172 -172
  164. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +139 -139
  165. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -83
  166. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +122 -122
  167. package/.agent/skills/appflow-wireframe/SKILL.md +96 -96
  168. package/.agent/skills/apple-design/SKILL.md +89 -89
  169. package/.agent/skills/architecture/SKILL.md +188 -188
  170. package/.agent/skills/architecture-drift/SKILL.md +45 -0
  171. package/.agent/skills/audit-and-fix/SKILL.md +100 -100
  172. package/.agent/skills/authentication-best-practices/SKILL.md +157 -157
  173. package/.agent/skills/autonomous-execution/SKILL.md +76 -0
  174. package/.agent/skills/backend-security-expert/SKILL.md +73 -73
  175. package/.agent/skills/baseline-ui/SKILL.md +55 -55
  176. package/.agent/skills/bash-linux/SKILL.md +139 -139
  177. package/.agent/skills/behavioral-modes/SKILL.md +200 -200
  178. package/.agent/skills/better-colors/SKILL.md +116 -116
  179. package/.agent/skills/better-typography/SKILL.md +90 -90
  180. package/.agent/skills/better-ui/SKILL.md +130 -130
  181. package/.agent/skills/bolder/SKILL.md +49 -49
  182. package/.agent/skills/brainstorming/SKILL.md +460 -460
  183. package/.agent/skills/browser-audit/SKILL.md +102 -102
  184. package/.agent/skills/browser-native-ai/SKILL.md +72 -72
  185. package/.agent/skills/build-primitive/SKILL.md +50 -50
  186. package/.agent/skills/building-native-ui/SKILL.md +162 -162
  187. package/.agent/skills/cicd-pro/SKILL.md +412 -412
  188. package/.agent/skills/clarify/SKILL.md +55 -55
  189. package/.agent/skills/clean-code/SKILL.md +367 -367
  190. package/.agent/skills/cloud-architect/SKILL.md +409 -409
  191. package/.agent/skills/cobejs/SKILL.md +70 -70
  192. package/.agent/skills/code-review-checklist/SKILL.md +163 -163
  193. package/.agent/skills/codebase-design/SKILL.md +76 -76
  194. package/.agent/skills/colorize/SKILL.md +57 -57
  195. package/.agent/skills/compact-landing/SKILL.md +50 -50
  196. package/.agent/skills/company-logos/SKILL.md +54 -54
  197. package/.agent/skills/config-validator/SKILL.md +125 -125
  198. package/.agent/skills/containerization-pro/SKILL.md +422 -422
  199. package/.agent/skills/context-engineering-pro/SKILL.md +69 -62
  200. package/.agent/skills/create-design-md/SKILL.md +92 -92
  201. package/.agent/skills/critique/SKILL.md +79 -79
  202. package/.agent/skills/csharp-developer/SKILL.md +478 -478
  203. package/.agent/skills/data-validation-schemas/SKILL.md +297 -297
  204. package/.agent/skills/database-design/SKILL.md +219 -219
  205. package/.agent/skills/delight/SKILL.md +46 -46
  206. package/.agent/skills/deployment-procedures/SKILL.md +132 -132
  207. package/.agent/skills/design-lab/SKILL.md +42 -42
  208. package/.agent/skills/devops-engineer/SKILL.md +305 -305
  209. package/.agent/skills/devops-incident-responder/SKILL.md +103 -103
  210. package/.agent/skills/diagnosing-bugs/SKILL.md +172 -172
  211. package/.agent/skills/distill/SKILL.md +45 -45
  212. package/.agent/skills/documentation-templates/SKILL.md +251 -251
  213. package/.agent/skills/domain-modeling/SKILL.md +61 -61
  214. package/.agent/skills/duckdb-analytical-sql/SKILL.md +51 -51
  215. package/.agent/skills/edge-ai-mobile/SKILL.md +42 -42
  216. package/.agent/skills/edge-computing/SKILL.md +143 -143
  217. package/.agent/skills/emil-design-eng/SKILL.md +134 -134
  218. package/.agent/skills/error-resilience/SKILL.md +403 -403
  219. package/.agent/skills/expo-router-v4/SKILL.md +72 -72
  220. package/.agent/skills/extract-design-system/SKILL.md +120 -120
  221. package/.agent/skills/fabel-protocol/SKILL.md +282 -277
  222. package/.agent/skills/failure-mode-analysis/SKILL.md +48 -0
  223. package/.agent/skills/fixing-accessibility/SKILL.md +87 -87
  224. package/.agent/skills/fixing-metadata/SKILL.md +83 -83
  225. package/.agent/skills/fixing-motion-performance/SKILL.md +78 -78
  226. package/.agent/skills/framer-motion-expert/SKILL.md +237 -237
  227. package/.agent/skills/frontend-design/SKILL.md +103 -103
  228. package/.agent/skills/frontend-security-expert/SKILL.md +56 -56
  229. package/.agent/skills/game-design-expert/SKILL.md +92 -92
  230. package/.agent/skills/game-engineering-expert/SKILL.md +108 -108
  231. package/.agent/skills/generative-ui-expert/SKILL.md +100 -100
  232. package/.agent/skills/geo-fundamentals/SKILL.md +108 -108
  233. package/.agent/skills/git-pro/SKILL.md +401 -401
  234. package/.agent/skills/github-operations/SKILL.md +295 -295
  235. package/.agent/skills/gpt-taste/SKILL.md +50 -50
  236. package/.agent/skills/graph-engineering/SKILL.md +28 -0
  237. package/.agent/skills/gsap-core/SKILL.md +277 -277
  238. package/.agent/skills/gsap-frameworks/SKILL.md +168 -168
  239. package/.agent/skills/gsap-performance/SKILL.md +94 -94
  240. package/.agent/skills/gsap-plugins/SKILL.md +441 -441
  241. package/.agent/skills/gsap-react/SKILL.md +213 -213
  242. package/.agent/skills/gsap-scrolltrigger/SKILL.md +312 -312
  243. package/.agent/skills/gsap-timeline/SKILL.md +122 -122
  244. package/.agent/skills/gsap-utils/SKILL.md +299 -299
  245. package/.agent/skills/harden/SKILL.md +55 -55
  246. package/.agent/skills/harness-protocol/SKILL.md +48 -40
  247. package/.agent/skills/hf-cli/SKILL.md +239 -0
  248. package/.agent/skills/hf-cloud-aws-context-discovery/SKILL.md +74 -0
  249. package/.agent/skills/hf-cloud-python-env-setup/SKILL.md +90 -0
  250. package/.agent/skills/hf-cloud-python-env-setup/requirements.txt +17 -0
  251. package/.agent/skills/hf-cloud-python-env-setup/scripts/check_versions.py +29 -0
  252. package/.agent/skills/hf-cloud-python-env-setup/scripts/setup_env.py +143 -0
  253. package/.agent/skills/hf-cloud-sagemaker-deployment-planner/SKILL.md +90 -0
  254. package/.agent/skills/hf-cloud-sagemaker-iam-preflight/SKILL.md +102 -0
  255. package/.agent/skills/hf-cloud-sagemaker-iam-preflight/references/minimum-permissions.json +47 -0
  256. package/.agent/skills/hf-cloud-sagemaker-iam-preflight/references/trust-policy.json +12 -0
  257. package/.agent/skills/hf-cloud-sagemaker-iam-preflight/scripts/check_role.py +184 -0
  258. package/.agent/skills/hf-cloud-sagemaker-iam-preflight/scripts/create_role.py +118 -0
  259. package/.agent/skills/hf-cloud-sagemaker-production-defaults/SKILL.md +419 -0
  260. package/.agent/skills/hf-cloud-sagemaker-production-defaults/references/deployment-template.md +59 -0
  261. package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/_common.py +148 -0
  262. package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy.py +327 -0
  263. package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_async.py +434 -0
  264. package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_ic.py +506 -0
  265. package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/invoke_endpoint.py +180 -0
  266. package/.agent/skills/hf-cloud-sagemaker-production-defaults/scripts/teardown.py +246 -0
  267. package/.agent/skills/hf-cloud-serving-image-selection/SKILL.md +220 -0
  268. package/.agent/skills/hf-cloud-serving-image-selection/references/model-to-image.md +111 -0
  269. package/.agent/skills/hf-cloud-serving-image-selection/scripts/mirror_image.py +145 -0
  270. package/.agent/skills/hf-mem/SKILL.md +79 -0
  271. package/.agent/skills/huggingface-best/SKILL.md +134 -0
  272. package/.agent/skills/huggingface-community-evals/SKILL.md +207 -0
  273. package/.agent/skills/huggingface-community-evals/examples/.env.example +3 -0
  274. package/.agent/skills/huggingface-community-evals/examples/USAGE_EXAMPLES.md +101 -0
  275. package/.agent/skills/huggingface-community-evals/scripts/inspect_eval_uv.py +104 -0
  276. package/.agent/skills/huggingface-community-evals/scripts/inspect_vllm_uv.py +306 -0
  277. package/.agent/skills/huggingface-community-evals/scripts/lighteval_vllm_uv.py +297 -0
  278. package/.agent/skills/huggingface-datasets/SKILL.md +107 -0
  279. package/.agent/skills/huggingface-gradio/SKILL.md +298 -0
  280. package/.agent/skills/huggingface-gradio/examples.md +613 -0
  281. package/.agent/skills/huggingface-llm-trainer/SKILL.md +738 -0
  282. package/.agent/skills/huggingface-llm-trainer/references/gguf_conversion.md +296 -0
  283. package/.agent/skills/huggingface-llm-trainer/references/hardware_guide.md +283 -0
  284. package/.agent/skills/huggingface-llm-trainer/references/hub_saving.md +364 -0
  285. package/.agent/skills/huggingface-llm-trainer/references/local_training_macos.md +231 -0
  286. package/.agent/skills/huggingface-llm-trainer/references/reliability_principles.md +371 -0
  287. package/.agent/skills/huggingface-llm-trainer/references/trackio_guide.md +191 -0
  288. package/.agent/skills/huggingface-llm-trainer/references/training_methods.md +150 -0
  289. package/.agent/skills/huggingface-llm-trainer/references/training_patterns.md +203 -0
  290. package/.agent/skills/huggingface-llm-trainer/references/troubleshooting.md +282 -0
  291. package/.agent/skills/huggingface-llm-trainer/references/unsloth.md +313 -0
  292. package/.agent/skills/huggingface-llm-trainer/scripts/convert_to_gguf.py +424 -0
  293. package/.agent/skills/huggingface-llm-trainer/scripts/dataset_inspector.py +417 -0
  294. package/.agent/skills/huggingface-llm-trainer/scripts/estimate_cost.py +150 -0
  295. package/.agent/skills/huggingface-llm-trainer/scripts/hf_benchmarks.py +659 -0
  296. package/.agent/skills/huggingface-llm-trainer/scripts/train_dpo_example.py +106 -0
  297. package/.agent/skills/huggingface-llm-trainer/scripts/train_grpo_example.py +89 -0
  298. package/.agent/skills/huggingface-llm-trainer/scripts/train_sft_example.py +122 -0
  299. package/.agent/skills/huggingface-llm-trainer/scripts/unsloth_sft_example.py +512 -0
  300. package/.agent/skills/huggingface-local-models/SKILL.md +113 -0
  301. package/.agent/skills/huggingface-local-models/references/hardware.md +38 -0
  302. package/.agent/skills/huggingface-local-models/references/hub-discovery.md +178 -0
  303. package/.agent/skills/huggingface-local-models/references/quantization.md +256 -0
  304. package/.agent/skills/huggingface-lora-space-builder/SKILL.md +394 -0
  305. package/.agent/skills/huggingface-lora-space-builder/references/adapting-to-the-lora.md +113 -0
  306. package/.agent/skills/huggingface-lora-space-builder/references/base-models/krea-2.md +63 -0
  307. package/.agent/skills/huggingface-lora-space-builder/references/base-models/ltx.md +205 -0
  308. package/.agent/skills/huggingface-lora-space-builder/references/base-models/qwen-image.md +144 -0
  309. package/.agent/skills/huggingface-lora-space-builder/references/creative-mode.md +262 -0
  310. package/.agent/skills/huggingface-lora-space-builder/references/tasks.md +124 -0
  311. package/.agent/skills/huggingface-lora-space-builder/references/zerogpu-and-publishing.md +196 -0
  312. package/.agent/skills/huggingface-paper-publisher/SKILL.md +624 -0
  313. package/.agent/skills/huggingface-paper-publisher/examples/example_usage.md +326 -0
  314. package/.agent/skills/huggingface-paper-publisher/references/quick_reference.md +216 -0
  315. package/.agent/skills/huggingface-paper-publisher/scripts/paper_manager.py +606 -0
  316. package/.agent/skills/huggingface-paper-publisher/templates/arxiv.md +299 -0
  317. package/.agent/skills/huggingface-paper-publisher/templates/ml-report.md +358 -0
  318. package/.agent/skills/huggingface-paper-publisher/templates/modern.md +319 -0
  319. package/.agent/skills/huggingface-paper-publisher/templates/standard.md +201 -0
  320. package/.agent/skills/huggingface-papers/SKILL.md +239 -0
  321. package/.agent/skills/huggingface-spaces/README.md +9 -0
  322. package/.agent/skills/huggingface-spaces/SKILL.md +242 -0
  323. package/.agent/skills/huggingface-spaces/references/3d-cuda-extensions.md +109 -0
  324. package/.agent/skills/huggingface-spaces/references/3d-generation.md +98 -0
  325. package/.agent/skills/huggingface-spaces/references/3d-gsplat.md +53 -0
  326. package/.agent/skills/huggingface-spaces/references/3d-models.md +227 -0
  327. package/.agent/skills/huggingface-spaces/references/3d-outputs.md +114 -0
  328. package/.agent/skills/huggingface-spaces/references/buckets.md +89 -0
  329. package/.agent/skills/huggingface-spaces/references/debugging.md +236 -0
  330. package/.agent/skills/huggingface-spaces/references/gradio.md +200 -0
  331. package/.agent/skills/huggingface-spaces/references/grants.md +63 -0
  332. package/.agent/skills/huggingface-spaces/references/inference-providers.md +97 -0
  333. package/.agent/skills/huggingface-spaces/references/known-errors.md +232 -0
  334. package/.agent/skills/huggingface-spaces/references/requirements.md +169 -0
  335. package/.agent/skills/huggingface-spaces/references/zerogpu.md +349 -0
  336. package/.agent/skills/huggingface-tool-builder/SKILL.md +120 -0
  337. package/.agent/skills/huggingface-tool-builder/references/baseline_hf_api.py +57 -0
  338. package/.agent/skills/huggingface-tool-builder/references/baseline_hf_api.sh +40 -0
  339. package/.agent/skills/huggingface-tool-builder/references/baseline_hf_api.tsx +57 -0
  340. package/.agent/skills/huggingface-tool-builder/references/find_models_by_paper.sh +230 -0
  341. package/.agent/skills/huggingface-tool-builder/references/hf_enrich_models.sh +96 -0
  342. package/.agent/skills/huggingface-tool-builder/references/hf_model_card_frontmatter.sh +188 -0
  343. package/.agent/skills/huggingface-tool-builder/references/hf_model_papers_auth.sh +171 -0
  344. package/.agent/skills/huggingface-trackio/SKILL.md +142 -0
  345. package/.agent/skills/huggingface-trackio/references/alerts.md +196 -0
  346. package/.agent/skills/huggingface-trackio/references/logging_metrics.md +212 -0
  347. package/.agent/skills/huggingface-trackio/references/retrieving_metrics.md +251 -0
  348. package/.agent/skills/huggingface-vision-trainer/SKILL.md +593 -0
  349. package/.agent/skills/huggingface-vision-trainer/references/finetune_sam2_trainer.md +254 -0
  350. package/.agent/skills/huggingface-vision-trainer/references/hub_saving.md +618 -0
  351. package/.agent/skills/huggingface-vision-trainer/references/image_classification_training_notebook.md +279 -0
  352. package/.agent/skills/huggingface-vision-trainer/references/object_detection_training_notebook.md +700 -0
  353. package/.agent/skills/huggingface-vision-trainer/references/reliability_principles.md +310 -0
  354. package/.agent/skills/huggingface-vision-trainer/references/timm_trainer.md +91 -0
  355. package/.agent/skills/huggingface-vision-trainer/scripts/dataset_inspector.py +814 -0
  356. package/.agent/skills/huggingface-vision-trainer/scripts/estimate_cost.py +217 -0
  357. package/.agent/skills/huggingface-vision-trainer/scripts/image_classification_training.py +383 -0
  358. package/.agent/skills/huggingface-vision-trainer/scripts/object_detection_training.py +710 -0
  359. package/.agent/skills/huggingface-vision-trainer/scripts/sam_segmentation_training.py +382 -0
  360. package/.agent/skills/huggingface-zerogpu/SKILL.md +289 -0
  361. package/.agent/skills/huggingface-zerogpu/references/concurrency.md +79 -0
  362. package/.agent/skills/huggingface-zerogpu/references/cuda-and-deps.md +66 -0
  363. package/.agent/skills/huggingface-zerogpu/references/how-quota-works.md +74 -0
  364. package/.agent/skills/huggingface-zerogpu/references/how-zerogpu-works.md +50 -0
  365. package/.agent/skills/human-gate-negotiation/SKILL.md +30 -0
  366. package/.agent/skills/i18n-localization/SKILL.md +134 -134
  367. package/.agent/skills/impeccable/SKILL.md +52 -52
  368. package/.agent/skills/improve-codebase-architecture/SKILL.md +48 -48
  369. package/.agent/skills/improve-ui/SKILL.md +70 -70
  370. package/.agent/skills/intelligent-routing/SKILL.md +204 -198
  371. package/.agent/skills/knowledge-graph/SKILL.md +71 -71
  372. package/.agent/skills/landing-page/SKILL.md +65 -65
  373. package/.agent/skills/lint-and-validate/SKILL.md +224 -224
  374. package/.agent/skills/llm-engineering/SKILL.md +360 -360
  375. package/.agent/skills/local-first/SKILL.md +138 -138
  376. package/.agent/skills/local-first-architecture/SKILL.md +62 -62
  377. package/.agent/skills/lottie-animation/SKILL.md +62 -62
  378. package/.agent/skills/marquee-loop/SKILL.md +72 -72
  379. package/.agent/skills/masked-reveal/SKILL.md +230 -230
  380. package/.agent/skills/mcp-builder/SKILL.md +105 -105
  381. package/.agent/skills/micro-interaction/SKILL.md +253 -253
  382. package/.agent/skills/mobile-design/SKILL.md +245 -245
  383. package/.agent/skills/monorepo-management/SKILL.md +295 -295
  384. package/.agent/skills/morphing-icons/SKILL.md +348 -348
  385. package/.agent/skills/motion-engineering/SKILL.md +197 -197
  386. package/.agent/skills/nextjs-react-expert/SKILL.md +218 -218
  387. package/.agent/skills/nodejs-best-practices/SKILL.md +542 -542
  388. package/.agent/skills/observability/SKILL.md +303 -303
  389. package/.agent/skills/opentelemetry-observability/SKILL.md +51 -51
  390. package/.agent/skills/page-transition-animation/SKILL.md +86 -86
  391. package/.agent/skills/parallel-agents/SKILL.md +110 -110
  392. package/.agent/skills/performance-profiling/SKILL.md +230 -230
  393. package/.agent/skills/plan-writing/SKILL.md +127 -127
  394. package/.agent/skills/platform-engineer/SKILL.md +108 -108
  395. package/.agent/skills/platform-engineering-opentofu/SKILL.md +59 -59
  396. package/.agent/skills/playwright-ai-e2e/SKILL.md +52 -52
  397. package/.agent/skills/playwright-best-practices/SKILL.md +149 -149
  398. package/.agent/skills/polish/SKILL.md +39 -39
  399. package/.agent/skills/powershell-windows/SKILL.md +122 -122
  400. package/.agent/skills/pricing-page/SKILL.md +48 -48
  401. package/.agent/skills/product-aware-heuristics/SKILL.md +390 -390
  402. package/.agent/skills/progressive-blur/SKILL.md +80 -80
  403. package/.agent/skills/project-idioms/SKILL.md +91 -91
  404. package/.agent/skills/property-based-testing/SKILL.md +50 -50
  405. package/.agent/skills/python-patterns/SKILL.md +220 -220
  406. package/.agent/skills/python-pro/SKILL.md +305 -305
  407. package/.agent/skills/quieter/SKILL.md +49 -49
  408. package/.agent/skills/react-doctor/SKILL.md +51 -51
  409. package/.agent/skills/react-specialist/SKILL.md +280 -280
  410. package/.agent/skills/readme-builder/SKILL.md +270 -270
  411. package/.agent/skills/realtime-patterns/SKILL.md +283 -283
  412. package/.agent/skills/red-team-tactics/SKILL.md +191 -191
  413. package/.agent/skills/redesign-skill/SKILL.md +46 -46
  414. package/.agent/skills/review-animations/SKILL.md +45 -45
  415. package/.agent/skills/review-animations/STANDARDS.md +87 -87
  416. package/.agent/skills/rust-pro/SKILL.md +652 -652
  417. package/.agent/skills/semantic-filesystem-navigation/SKILL.md +24 -0
  418. package/.agent/skills/seo-fundamentals/SKILL.md +139 -139
  419. package/.agent/skills/server-management/SKILL.md +178 -178
  420. package/.agent/skills/session-log-interrogation/SKILL.md +29 -0
  421. package/.agent/skills/shadcn-ui-expert/SKILL.md +196 -196
  422. package/.agent/skills/shape/SKILL.md +56 -56
  423. package/.agent/skills/skill-creator/SKILL.md +177 -177
  424. package/.agent/skills/soft-skill/SKILL.md +53 -53
  425. package/.agent/skills/sounds-on-the-web/SKILL.md +76 -76
  426. package/.agent/skills/sql-pro/SKILL.md +624 -624
  427. package/.agent/skills/subagent-driven-development/SKILL.md +32 -0
  428. package/.agent/skills/supabase-postgres-best-practices/SKILL.md +57 -57
  429. package/.agent/skills/svg-animation/SKILL.md +356 -356
  430. package/.agent/skills/swiftui-expert/SKILL.md +164 -164
  431. package/.agent/skills/swiss-design/SKILL.md +44 -44
  432. package/.agent/skills/system-design-pro/SKILL.md +188 -318
  433. package/.agent/skills/systematic-debugging/SKILL.md +129 -124
  434. package/.agent/skills/systematic-debugging/condition-based-waiting.md +120 -120
  435. package/.agent/skills/systematic-debugging/defense-in-depth.md +128 -128
  436. package/.agent/skills/systematic-debugging/root-cause-tracing.md +183 -183
  437. package/.agent/skills/tailwind-patterns/SKILL.md +583 -583
  438. package/.agent/skills/taste-skill/SKILL.md +52 -52
  439. package/.agent/skills/tdd-workflow/SKILL.md +105 -105
  440. package/.agent/skills/test-result-analyzer/SKILL.md +270 -270
  441. package/.agent/skills/testing-patterns/SKILL.md +534 -534
  442. package/.agent/skills/thermo-nuclear-code-quality-review/SKILL.md +62 -62
  443. package/.agent/skills/thinking-protocol/SKILL.md +21 -21
  444. package/.agent/skills/to-spring-or-not-to-spring/SKILL.md +43 -43
  445. package/.agent/skills/train-sentence-transformers/SKILL.md +109 -0
  446. package/.agent/skills/train-sentence-transformers/references/base_model_selection.md +79 -0
  447. package/.agent/skills/train-sentence-transformers/references/dataset_formats.md +128 -0
  448. package/.agent/skills/train-sentence-transformers/references/evaluators_cross_encoder.md +116 -0
  449. package/.agent/skills/train-sentence-transformers/references/evaluators_multi_vector_encoder.md +101 -0
  450. package/.agent/skills/train-sentence-transformers/references/evaluators_sentence_transformer.md +151 -0
  451. package/.agent/skills/train-sentence-transformers/references/evaluators_sparse_encoder.md +121 -0
  452. package/.agent/skills/train-sentence-transformers/references/hardware_guide.md +105 -0
  453. package/.agent/skills/train-sentence-transformers/references/hf_jobs_execution.md +173 -0
  454. package/.agent/skills/train-sentence-transformers/references/losses_cross_encoder.md +137 -0
  455. package/.agent/skills/train-sentence-transformers/references/losses_multi_vector_encoder.md +100 -0
  456. package/.agent/skills/train-sentence-transformers/references/losses_sentence_transformer.md +246 -0
  457. package/.agent/skills/train-sentence-transformers/references/losses_sparse_encoder.md +106 -0
  458. package/.agent/skills/train-sentence-transformers/references/model_architectures.md +178 -0
  459. package/.agent/skills/train-sentence-transformers/references/prompts_and_instructions.md +160 -0
  460. package/.agent/skills/train-sentence-transformers/references/training_args.md +270 -0
  461. package/.agent/skills/train-sentence-transformers/references/troubleshooting.md +225 -0
  462. package/.agent/skills/train-sentence-transformers/scripts/mine_hard_negatives.py +199 -0
  463. package/.agent/skills/train-sentence-transformers/scripts/train_cross_encoder_distillation_example.py +254 -0
  464. package/.agent/skills/train-sentence-transformers/scripts/train_cross_encoder_example.py +253 -0
  465. package/.agent/skills/train-sentence-transformers/scripts/train_cross_encoder_listwise_example.py +282 -0
  466. package/.agent/skills/train-sentence-transformers/scripts/train_multi_vector_encoder_example.py +240 -0
  467. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_distillation_example.py +303 -0
  468. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_example.py +227 -0
  469. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_make_multilingual_example.py +308 -0
  470. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_matryoshka_example.py +212 -0
  471. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_multi_dataset_example.py +258 -0
  472. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_static_embedding_example.py +273 -0
  473. package/.agent/skills/train-sentence-transformers/scripts/train_sentence_transformer_with_lora_example.py +275 -0
  474. package/.agent/skills/train-sentence-transformers/scripts/train_sparse_encoder_distillation_example.py +262 -0
  475. package/.agent/skills/train-sentence-transformers/scripts/train_sparse_encoder_example.py +237 -0
  476. package/.agent/skills/transformers-js/SKILL.md +692 -0
  477. package/.agent/skills/transformers-js/references/CACHE.md +339 -0
  478. package/.agent/skills/transformers-js/references/CONFIGURATION.md +438 -0
  479. package/.agent/skills/transformers-js/references/EXAMPLES.md +620 -0
  480. package/.agent/skills/transformers-js/references/MODEL_ARCHITECTURES.md +167 -0
  481. package/.agent/skills/transformers-js/references/MODEL_REGISTRY.md +197 -0
  482. package/.agent/skills/transformers-js/references/PIPELINE_OPTIONS.md +557 -0
  483. package/.agent/skills/transformers-js/references/TEXT_GENERATION.md +315 -0
  484. package/.agent/skills/transitions-dev/SKILL.md +90 -90
  485. package/.agent/skills/trend-researcher/SKILL.md +198 -198
  486. package/.agent/skills/tribunal-instincts-memory/SKILL.md +31 -0
  487. package/.agent/skills/trl-training/SKILL.md +318 -0
  488. package/.agent/skills/typescript-advanced/SKILL.md +306 -306
  489. package/.agent/skills/typeset/SKILL.md +60 -60
  490. package/.agent/skills/ui-reasoning-engine/SKILL.md +155 -155
  491. package/.agent/skills/ui-skill-packs/SKILL.md +57 -57
  492. package/.agent/skills/ui-skills-root/SKILL.md +69 -69
  493. package/.agent/skills/ui-ux-pro-max/SKILL.md +110 -110
  494. package/.agent/skills/ui-ux-researcher/SKILL.md +199 -199
  495. package/.agent/skills/vector-search-pgvector/SKILL.md +70 -70
  496. package/.agent/skills/verification-before-completion/SKILL.md +107 -107
  497. package/.agent/skills/vue-expert/SKILL.md +259 -259
  498. package/.agent/skills/vulnerability-scanner/SKILL.md +378 -378
  499. package/.agent/skills/web-accessibility-auditor/SKILL.md +179 -179
  500. package/.agent/skills/web-design-guidelines/SKILL.md +49 -49
  501. package/.agent/skills/web-quality-audit/SKILL.md +47 -47
  502. package/.agent/skills/webapp-testing/SKILL.md +128 -128
  503. package/.agent/skills/webgpu-performance/SKILL.md +88 -88
  504. package/.agent/skills/whimsy-injector/SKILL.md +305 -305
  505. package/.agent/skills/workflow-optimizer/SKILL.md +188 -188
  506. package/.agent/skills/zero-trust-passkeys/SKILL.md +82 -82
  507. package/.agent/templates/DESIGN.md +843 -843
  508. package/.agent/templates/design-tokens.json +140 -140
  509. package/.agent/templates/sdd/implementer-prompt.md +62 -62
  510. package/.agent/templates/sdd/re-review-prompt.md +36 -36
  511. package/.agent/templates/sdd/task-reviewer-prompt.md +78 -78
  512. package/.agent/workflows/acf.md +153 -153
  513. package/.agent/workflows/api-tester.md +189 -189
  514. package/.agent/workflows/assimilate.md +21 -0
  515. package/.agent/workflows/audit-live.md +53 -53
  516. package/.agent/workflows/audit.md +172 -167
  517. package/.agent/workflows/brainstorm.md +157 -157
  518. package/.agent/workflows/changelog.md +152 -152
  519. package/.agent/workflows/compare-web.md +35 -35
  520. package/.agent/workflows/context.md +102 -102
  521. package/.agent/workflows/contract.md +79 -79
  522. package/.agent/workflows/create.md +182 -182
  523. package/.agent/workflows/debug.md +201 -201
  524. package/.agent/workflows/deploy.md +215 -215
  525. package/.agent/workflows/enhance.md +165 -165
  526. package/.agent/workflows/fix-ci.md +94 -94
  527. package/.agent/workflows/fix.md +149 -149
  528. package/.agent/workflows/generate.md +216 -211
  529. package/.agent/workflows/htop.md +22 -0
  530. package/.agent/workflows/marathon.md +291 -286
  531. package/.agent/workflows/migrate.md +198 -198
  532. package/.agent/workflows/minimal.md +101 -101
  533. package/.agent/workflows/orchestrate.md +205 -205
  534. package/.agent/workflows/performance-benchmarker.md +148 -148
  535. package/.agent/workflows/pipeline.md +165 -165
  536. package/.agent/workflows/plan.md +206 -206
  537. package/.agent/workflows/preview.md +116 -116
  538. package/.agent/workflows/refactor.md +207 -207
  539. package/.agent/workflows/resume.md +20 -0
  540. package/.agent/workflows/review-ai.md +139 -139
  541. package/.agent/workflows/review.md +155 -155
  542. package/.agent/workflows/sdd.md +137 -137
  543. package/.agent/workflows/session.md +135 -135
  544. package/.agent/workflows/skill-enhancement-engine.md +84 -84
  545. package/.agent/workflows/status.md +112 -112
  546. package/.agent/workflows/strengthen-skills.md +174 -174
  547. package/.agent/workflows/super-prompt.md +146 -146
  548. package/.agent/workflows/swarm.md +218 -218
  549. package/.agent/workflows/team-mode.md +22 -0
  550. package/.agent/workflows/test.md +224 -224
  551. package/.agent/workflows/tribunal-backend.md +149 -149
  552. package/.agent/workflows/tribunal-cicd.md +109 -109
  553. package/.agent/workflows/tribunal-database.md +142 -142
  554. package/.agent/workflows/tribunal-frontend.md +157 -157
  555. package/.agent/workflows/tribunal-full.md +156 -156
  556. package/.agent/workflows/tribunal-mobile.md +142 -142
  557. package/.agent/workflows/tribunal-performance.md +149 -149
  558. package/.agent/workflows/tribunal-speed.md +222 -222
  559. package/.agent/workflows/tribunal-ui.md +97 -97
  560. package/.agent/workflows/ui-ux-pro-max.md +103 -103
  561. package/.agents/skills/12-principles-of-animation/SKILL.md +51 -51
  562. package/.agents/skills/60fps-animation/SKILL.md +91 -91
  563. package/.agents/skills/accessible-animation/SKILL.md +189 -189
  564. package/.agents/skills/adapt/SKILL.md +56 -56
  565. package/.agents/skills/adr-generation/SKILL.md +57 -0
  566. package/.agents/skills/advanced-rag-pipelines/SKILL.md +94 -94
  567. package/.agents/skills/agent-organizer/SKILL.md +117 -117
  568. package/.agents/skills/agent-syscall-guidelines/SKILL.md +25 -0
  569. package/.agents/skills/agentic-patterns/SKILL.md +281 -281
  570. package/.agents/skills/agentic-workflows-2026/SKILL.md +91 -83
  571. package/.agents/skills/agentshield-security/SKILL.md +26 -0
  572. package/.agents/skills/ai-app-hardening/SKILL.md +51 -51
  573. package/.agents/skills/ai-prompt-injection-defense/SKILL.md +162 -162
  574. package/.agents/skills/animation-on-scroll/SKILL.md +196 -196
  575. package/.agents/skills/animation-systems/SKILL.md +198 -198
  576. package/.agents/skills/antfu-conventions/SKILL.md +54 -54
  577. package/.agents/skills/api-patterns/SKILL.md +218 -218
  578. package/.agents/skills/api-security-auditor/SKILL.md +155 -155
  579. package/.agents/skills/app-builder/SKILL.md +535 -535
  580. package/.agents/skills/app-builder/templates/SKILL.md +108 -108
  581. package/.agents/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -76
  582. package/.agents/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -92
  583. package/.agents/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -88
  584. package/.agents/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -88
  585. package/.agents/skills/app-builder/templates/express-api/TEMPLATE.md +83 -83
  586. package/.agents/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -90
  587. package/.agents/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -90
  588. package/.agents/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +126 -126
  589. package/.agents/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +127 -127
  590. package/.agents/skills/app-builder/templates/nextjs-static/TEMPLATE.md +172 -172
  591. package/.agents/skills/app-builder/templates/nuxt-app/TEMPLATE.md +139 -139
  592. package/.agents/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -83
  593. package/.agents/skills/app-builder/templates/react-native-app/TEMPLATE.md +122 -122
  594. package/.agents/skills/appflow-wireframe/SKILL.md +96 -96
  595. package/.agents/skills/apple-design/SKILL.md +89 -89
  596. package/.agents/skills/architecture/SKILL.md +188 -188
  597. package/.agents/skills/architecture-drift/SKILL.md +45 -0
  598. package/.agents/skills/audit-and-fix/SKILL.md +100 -100
  599. package/.agents/skills/authentication-best-practices/SKILL.md +157 -157
  600. package/.agents/skills/autonomous-execution/SKILL.md +76 -0
  601. package/.agents/skills/backend-security-expert/SKILL.md +73 -73
  602. package/.agents/skills/baseline-ui/SKILL.md +55 -55
  603. package/.agents/skills/bash-linux/SKILL.md +139 -139
  604. package/.agents/skills/behavioral-modes/SKILL.md +200 -200
  605. package/.agents/skills/better-colors/SKILL.md +116 -116
  606. package/.agents/skills/better-typography/SKILL.md +90 -90
  607. package/.agents/skills/better-ui/SKILL.md +130 -130
  608. package/.agents/skills/bolder/SKILL.md +49 -49
  609. package/.agents/skills/brainstorming/SKILL.md +460 -460
  610. package/.agents/skills/browser-audit/SKILL.md +102 -102
  611. package/.agents/skills/browser-native-ai/SKILL.md +72 -72
  612. package/.agents/skills/build-primitive/SKILL.md +50 -50
  613. package/.agents/skills/building-native-ui/SKILL.md +162 -162
  614. package/.agents/skills/cicd-pro/SKILL.md +412 -412
  615. package/.agents/skills/clarify/SKILL.md +55 -55
  616. package/.agents/skills/clean-code/SKILL.md +367 -367
  617. package/.agents/skills/cloud-architect/SKILL.md +409 -409
  618. package/.agents/skills/cobejs/SKILL.md +70 -70
  619. package/.agents/skills/code-review-checklist/SKILL.md +163 -163
  620. package/.agents/skills/codebase-design/SKILL.md +76 -76
  621. package/.agents/skills/colorize/SKILL.md +57 -57
  622. package/.agents/skills/compact-landing/SKILL.md +50 -50
  623. package/.agents/skills/company-logos/SKILL.md +54 -54
  624. package/.agents/skills/config-validator/SKILL.md +125 -125
  625. package/.agents/skills/containerization-pro/SKILL.md +422 -422
  626. package/.agents/skills/context-engineering-pro/SKILL.md +69 -62
  627. package/.agents/skills/create-design-md/SKILL.md +92 -92
  628. package/.agents/skills/critique/SKILL.md +79 -79
  629. package/.agents/skills/csharp-developer/SKILL.md +478 -478
  630. package/.agents/skills/data-validation-schemas/SKILL.md +297 -297
  631. package/.agents/skills/database-design/SKILL.md +219 -219
  632. package/.agents/skills/delight/SKILL.md +46 -46
  633. package/.agents/skills/deployment-procedures/SKILL.md +132 -132
  634. package/.agents/skills/design-lab/SKILL.md +42 -42
  635. package/.agents/skills/devops-engineer/SKILL.md +305 -305
  636. package/.agents/skills/devops-incident-responder/SKILL.md +103 -103
  637. package/.agents/skills/diagnosing-bugs/SKILL.md +172 -172
  638. package/.agents/skills/distill/SKILL.md +45 -45
  639. package/.agents/skills/documentation-templates/SKILL.md +251 -251
  640. package/.agents/skills/domain-modeling/SKILL.md +61 -61
  641. package/.agents/skills/duckdb-analytical-sql/SKILL.md +51 -51
  642. package/.agents/skills/edge-ai-mobile/SKILL.md +42 -42
  643. package/.agents/skills/edge-computing/SKILL.md +143 -143
  644. package/.agents/skills/emil-design-eng/SKILL.md +134 -134
  645. package/.agents/skills/error-resilience/SKILL.md +403 -403
  646. package/.agents/skills/expo-router-v4/SKILL.md +72 -72
  647. package/.agents/skills/extract-design-system/SKILL.md +120 -120
  648. package/.agents/skills/fabel-protocol/SKILL.md +282 -277
  649. package/.agents/skills/failure-mode-analysis/SKILL.md +48 -0
  650. package/.agents/skills/fixing-accessibility/SKILL.md +87 -87
  651. package/.agents/skills/fixing-metadata/SKILL.md +83 -83
  652. package/.agents/skills/fixing-motion-performance/SKILL.md +78 -78
  653. package/.agents/skills/framer-motion-expert/SKILL.md +237 -237
  654. package/.agents/skills/frontend-design/SKILL.md +103 -103
  655. package/.agents/skills/frontend-security-expert/SKILL.md +56 -56
  656. package/.agents/skills/game-design-expert/SKILL.md +92 -92
  657. package/.agents/skills/game-engineering-expert/SKILL.md +108 -108
  658. package/.agents/skills/generative-ui-expert/SKILL.md +100 -100
  659. package/.agents/skills/geo-fundamentals/SKILL.md +108 -108
  660. package/.agents/skills/git-pro/SKILL.md +401 -401
  661. package/.agents/skills/github-operations/SKILL.md +295 -295
  662. package/.agents/skills/gpt-taste/SKILL.md +50 -50
  663. package/.agents/skills/graph-engineering/SKILL.md +28 -0
  664. package/.agents/skills/gsap-core/SKILL.md +277 -277
  665. package/.agents/skills/gsap-frameworks/SKILL.md +168 -168
  666. package/.agents/skills/gsap-performance/SKILL.md +94 -94
  667. package/.agents/skills/gsap-plugins/SKILL.md +441 -441
  668. package/.agents/skills/gsap-react/SKILL.md +213 -213
  669. package/.agents/skills/gsap-scrolltrigger/SKILL.md +312 -312
  670. package/.agents/skills/gsap-timeline/SKILL.md +122 -122
  671. package/.agents/skills/gsap-utils/SKILL.md +299 -299
  672. package/.agents/skills/harden/SKILL.md +55 -55
  673. package/.agents/skills/harness-protocol/SKILL.md +48 -40
  674. package/.agents/skills/hf-cli/SKILL.md +239 -0
  675. package/.agents/skills/hf-cloud-aws-context-discovery/SKILL.md +74 -0
  676. package/.agents/skills/hf-cloud-python-env-setup/SKILL.md +90 -0
  677. package/.agents/skills/hf-cloud-python-env-setup/requirements.txt +17 -0
  678. package/.agents/skills/hf-cloud-python-env-setup/scripts/check_versions.py +29 -0
  679. package/.agents/skills/hf-cloud-python-env-setup/scripts/setup_env.py +143 -0
  680. package/.agents/skills/hf-cloud-sagemaker-deployment-planner/SKILL.md +90 -0
  681. package/.agents/skills/hf-cloud-sagemaker-iam-preflight/SKILL.md +102 -0
  682. package/.agents/skills/hf-cloud-sagemaker-iam-preflight/references/minimum-permissions.json +47 -0
  683. package/.agents/skills/hf-cloud-sagemaker-iam-preflight/references/trust-policy.json +12 -0
  684. package/.agents/skills/hf-cloud-sagemaker-iam-preflight/scripts/check_role.py +184 -0
  685. package/.agents/skills/hf-cloud-sagemaker-iam-preflight/scripts/create_role.py +118 -0
  686. package/.agents/skills/hf-cloud-sagemaker-production-defaults/SKILL.md +419 -0
  687. package/.agents/skills/hf-cloud-sagemaker-production-defaults/references/deployment-template.md +59 -0
  688. package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/_common.py +148 -0
  689. package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy.py +327 -0
  690. package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_async.py +434 -0
  691. package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_ic.py +506 -0
  692. package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/invoke_endpoint.py +180 -0
  693. package/.agents/skills/hf-cloud-sagemaker-production-defaults/scripts/teardown.py +246 -0
  694. package/.agents/skills/hf-cloud-serving-image-selection/SKILL.md +220 -0
  695. package/.agents/skills/hf-cloud-serving-image-selection/references/model-to-image.md +111 -0
  696. package/.agents/skills/hf-cloud-serving-image-selection/scripts/mirror_image.py +145 -0
  697. package/.agents/skills/hf-mem/SKILL.md +79 -0
  698. package/.agents/skills/huggingface-best/SKILL.md +134 -0
  699. package/.agents/skills/huggingface-community-evals/SKILL.md +207 -0
  700. package/.agents/skills/huggingface-community-evals/examples/.env.example +3 -0
  701. package/.agents/skills/huggingface-community-evals/examples/USAGE_EXAMPLES.md +101 -0
  702. package/.agents/skills/huggingface-community-evals/scripts/inspect_eval_uv.py +104 -0
  703. package/.agents/skills/huggingface-community-evals/scripts/inspect_vllm_uv.py +306 -0
  704. package/.agents/skills/huggingface-community-evals/scripts/lighteval_vllm_uv.py +297 -0
  705. package/.agents/skills/huggingface-datasets/SKILL.md +107 -0
  706. package/.agents/skills/huggingface-gradio/SKILL.md +298 -0
  707. package/.agents/skills/huggingface-gradio/examples.md +613 -0
  708. package/.agents/skills/huggingface-llm-trainer/SKILL.md +738 -0
  709. package/.agents/skills/huggingface-llm-trainer/references/gguf_conversion.md +296 -0
  710. package/.agents/skills/huggingface-llm-trainer/references/hardware_guide.md +283 -0
  711. package/.agents/skills/huggingface-llm-trainer/references/hub_saving.md +364 -0
  712. package/.agents/skills/huggingface-llm-trainer/references/local_training_macos.md +231 -0
  713. package/.agents/skills/huggingface-llm-trainer/references/reliability_principles.md +371 -0
  714. package/.agents/skills/huggingface-llm-trainer/references/trackio_guide.md +191 -0
  715. package/.agents/skills/huggingface-llm-trainer/references/training_methods.md +150 -0
  716. package/.agents/skills/huggingface-llm-trainer/references/training_patterns.md +203 -0
  717. package/.agents/skills/huggingface-llm-trainer/references/troubleshooting.md +282 -0
  718. package/.agents/skills/huggingface-llm-trainer/references/unsloth.md +313 -0
  719. package/.agents/skills/huggingface-llm-trainer/scripts/convert_to_gguf.py +424 -0
  720. package/.agents/skills/huggingface-llm-trainer/scripts/dataset_inspector.py +417 -0
  721. package/.agents/skills/huggingface-llm-trainer/scripts/estimate_cost.py +150 -0
  722. package/.agents/skills/huggingface-llm-trainer/scripts/hf_benchmarks.py +659 -0
  723. package/.agents/skills/huggingface-llm-trainer/scripts/train_dpo_example.py +106 -0
  724. package/.agents/skills/huggingface-llm-trainer/scripts/train_grpo_example.py +89 -0
  725. package/.agents/skills/huggingface-llm-trainer/scripts/train_sft_example.py +122 -0
  726. package/.agents/skills/huggingface-llm-trainer/scripts/unsloth_sft_example.py +512 -0
  727. package/.agents/skills/huggingface-local-models/SKILL.md +113 -0
  728. package/.agents/skills/huggingface-local-models/references/hardware.md +38 -0
  729. package/.agents/skills/huggingface-local-models/references/hub-discovery.md +178 -0
  730. package/.agents/skills/huggingface-local-models/references/quantization.md +256 -0
  731. package/.agents/skills/huggingface-lora-space-builder/SKILL.md +394 -0
  732. package/.agents/skills/huggingface-lora-space-builder/references/adapting-to-the-lora.md +113 -0
  733. package/.agents/skills/huggingface-lora-space-builder/references/base-models/krea-2.md +63 -0
  734. package/.agents/skills/huggingface-lora-space-builder/references/base-models/ltx.md +205 -0
  735. package/.agents/skills/huggingface-lora-space-builder/references/base-models/qwen-image.md +144 -0
  736. package/.agents/skills/huggingface-lora-space-builder/references/creative-mode.md +262 -0
  737. package/.agents/skills/huggingface-lora-space-builder/references/tasks.md +124 -0
  738. package/.agents/skills/huggingface-lora-space-builder/references/zerogpu-and-publishing.md +196 -0
  739. package/.agents/skills/huggingface-paper-publisher/SKILL.md +624 -0
  740. package/.agents/skills/huggingface-paper-publisher/examples/example_usage.md +326 -0
  741. package/.agents/skills/huggingface-paper-publisher/references/quick_reference.md +216 -0
  742. package/.agents/skills/huggingface-paper-publisher/scripts/paper_manager.py +606 -0
  743. package/.agents/skills/huggingface-paper-publisher/templates/arxiv.md +299 -0
  744. package/.agents/skills/huggingface-paper-publisher/templates/ml-report.md +358 -0
  745. package/.agents/skills/huggingface-paper-publisher/templates/modern.md +319 -0
  746. package/.agents/skills/huggingface-paper-publisher/templates/standard.md +201 -0
  747. package/.agents/skills/huggingface-papers/SKILL.md +239 -0
  748. package/.agents/skills/huggingface-spaces/README.md +9 -0
  749. package/.agents/skills/huggingface-spaces/SKILL.md +242 -0
  750. package/.agents/skills/huggingface-spaces/references/3d-cuda-extensions.md +109 -0
  751. package/.agents/skills/huggingface-spaces/references/3d-generation.md +98 -0
  752. package/.agents/skills/huggingface-spaces/references/3d-gsplat.md +53 -0
  753. package/.agents/skills/huggingface-spaces/references/3d-models.md +227 -0
  754. package/.agents/skills/huggingface-spaces/references/3d-outputs.md +114 -0
  755. package/.agents/skills/huggingface-spaces/references/buckets.md +89 -0
  756. package/.agents/skills/huggingface-spaces/references/debugging.md +236 -0
  757. package/.agents/skills/huggingface-spaces/references/gradio.md +200 -0
  758. package/.agents/skills/huggingface-spaces/references/grants.md +63 -0
  759. package/.agents/skills/huggingface-spaces/references/inference-providers.md +97 -0
  760. package/.agents/skills/huggingface-spaces/references/known-errors.md +232 -0
  761. package/.agents/skills/huggingface-spaces/references/requirements.md +169 -0
  762. package/.agents/skills/huggingface-spaces/references/zerogpu.md +349 -0
  763. package/.agents/skills/huggingface-tool-builder/SKILL.md +120 -0
  764. package/.agents/skills/huggingface-tool-builder/references/baseline_hf_api.py +57 -0
  765. package/.agents/skills/huggingface-tool-builder/references/baseline_hf_api.sh +40 -0
  766. package/.agents/skills/huggingface-tool-builder/references/baseline_hf_api.tsx +57 -0
  767. package/.agents/skills/huggingface-tool-builder/references/find_models_by_paper.sh +230 -0
  768. package/.agents/skills/huggingface-tool-builder/references/hf_enrich_models.sh +96 -0
  769. package/.agents/skills/huggingface-tool-builder/references/hf_model_card_frontmatter.sh +188 -0
  770. package/.agents/skills/huggingface-tool-builder/references/hf_model_papers_auth.sh +171 -0
  771. package/.agents/skills/huggingface-trackio/SKILL.md +142 -0
  772. package/.agents/skills/huggingface-trackio/references/alerts.md +196 -0
  773. package/.agents/skills/huggingface-trackio/references/logging_metrics.md +212 -0
  774. package/.agents/skills/huggingface-trackio/references/retrieving_metrics.md +251 -0
  775. package/.agents/skills/huggingface-vision-trainer/SKILL.md +593 -0
  776. package/.agents/skills/huggingface-vision-trainer/references/finetune_sam2_trainer.md +254 -0
  777. package/.agents/skills/huggingface-vision-trainer/references/hub_saving.md +618 -0
  778. package/.agents/skills/huggingface-vision-trainer/references/image_classification_training_notebook.md +279 -0
  779. package/.agents/skills/huggingface-vision-trainer/references/object_detection_training_notebook.md +700 -0
  780. package/.agents/skills/huggingface-vision-trainer/references/reliability_principles.md +310 -0
  781. package/.agents/skills/huggingface-vision-trainer/references/timm_trainer.md +91 -0
  782. package/.agents/skills/huggingface-vision-trainer/scripts/dataset_inspector.py +814 -0
  783. package/.agents/skills/huggingface-vision-trainer/scripts/estimate_cost.py +217 -0
  784. package/.agents/skills/huggingface-vision-trainer/scripts/image_classification_training.py +383 -0
  785. package/.agents/skills/huggingface-vision-trainer/scripts/object_detection_training.py +710 -0
  786. package/.agents/skills/huggingface-vision-trainer/scripts/sam_segmentation_training.py +382 -0
  787. package/.agents/skills/huggingface-zerogpu/SKILL.md +289 -0
  788. package/.agents/skills/huggingface-zerogpu/references/concurrency.md +79 -0
  789. package/.agents/skills/huggingface-zerogpu/references/cuda-and-deps.md +66 -0
  790. package/.agents/skills/huggingface-zerogpu/references/how-quota-works.md +74 -0
  791. package/.agents/skills/huggingface-zerogpu/references/how-zerogpu-works.md +50 -0
  792. package/.agents/skills/human-gate-negotiation/SKILL.md +30 -0
  793. package/.agents/skills/i18n-localization/SKILL.md +134 -134
  794. package/.agents/skills/impeccable/SKILL.md +52 -52
  795. package/.agents/skills/improve-codebase-architecture/SKILL.md +48 -48
  796. package/.agents/skills/improve-ui/SKILL.md +70 -70
  797. package/.agents/skills/intelligent-routing/SKILL.md +204 -198
  798. package/.agents/skills/knowledge-graph/SKILL.md +71 -71
  799. package/.agents/skills/landing-page/SKILL.md +65 -65
  800. package/.agents/skills/lint-and-validate/SKILL.md +224 -224
  801. package/.agents/skills/llm-engineering/SKILL.md +360 -360
  802. package/.agents/skills/local-first/SKILL.md +138 -138
  803. package/.agents/skills/local-first-architecture/SKILL.md +62 -62
  804. package/.agents/skills/lottie-animation/SKILL.md +62 -62
  805. package/.agents/skills/marquee-loop/SKILL.md +72 -72
  806. package/.agents/skills/masked-reveal/SKILL.md +230 -230
  807. package/.agents/skills/mcp-builder/SKILL.md +105 -105
  808. package/.agents/skills/micro-interaction/SKILL.md +253 -253
  809. package/.agents/skills/mobile-design/SKILL.md +245 -245
  810. package/.agents/skills/monorepo-management/SKILL.md +295 -295
  811. package/.agents/skills/morphing-icons/SKILL.md +348 -348
  812. package/.agents/skills/motion-engineering/SKILL.md +197 -197
  813. package/.agents/skills/nextjs-react-expert/SKILL.md +218 -218
  814. package/.agents/skills/nodejs-best-practices/SKILL.md +542 -542
  815. package/.agents/skills/observability/SKILL.md +303 -303
  816. package/.agents/skills/opentelemetry-observability/SKILL.md +51 -51
  817. package/.agents/skills/page-transition-animation/SKILL.md +86 -86
  818. package/.agents/skills/parallel-agents/SKILL.md +110 -110
  819. package/.agents/skills/performance-profiling/SKILL.md +230 -230
  820. package/.agents/skills/plan-writing/SKILL.md +127 -127
  821. package/.agents/skills/platform-engineer/SKILL.md +108 -108
  822. package/.agents/skills/platform-engineering-opentofu/SKILL.md +59 -59
  823. package/.agents/skills/playwright-ai-e2e/SKILL.md +52 -52
  824. package/.agents/skills/playwright-best-practices/SKILL.md +149 -149
  825. package/.agents/skills/polish/SKILL.md +39 -39
  826. package/.agents/skills/powershell-windows/SKILL.md +122 -122
  827. package/.agents/skills/pricing-page/SKILL.md +48 -48
  828. package/.agents/skills/product-aware-heuristics/SKILL.md +390 -390
  829. package/.agents/skills/progressive-blur/SKILL.md +80 -80
  830. package/.agents/skills/project-idioms/SKILL.md +91 -91
  831. package/.agents/skills/property-based-testing/SKILL.md +50 -50
  832. package/.agents/skills/python-patterns/SKILL.md +220 -220
  833. package/.agents/skills/python-pro/SKILL.md +305 -305
  834. package/.agents/skills/quieter/SKILL.md +49 -49
  835. package/.agents/skills/react-doctor/SKILL.md +51 -51
  836. package/.agents/skills/react-specialist/SKILL.md +280 -280
  837. package/.agents/skills/readme-builder/SKILL.md +270 -270
  838. package/.agents/skills/realtime-patterns/SKILL.md +283 -283
  839. package/.agents/skills/red-team-tactics/SKILL.md +191 -191
  840. package/.agents/skills/redesign-skill/SKILL.md +46 -46
  841. package/.agents/skills/review-animations/SKILL.md +45 -45
  842. package/.agents/skills/review-animations/STANDARDS.md +87 -87
  843. package/.agents/skills/rust-pro/SKILL.md +652 -652
  844. package/.agents/skills/semantic-filesystem-navigation/SKILL.md +24 -0
  845. package/.agents/skills/seo-fundamentals/SKILL.md +139 -139
  846. package/.agents/skills/server-management/SKILL.md +178 -178
  847. package/.agents/skills/session-log-interrogation/SKILL.md +29 -0
  848. package/.agents/skills/shadcn-ui-expert/SKILL.md +196 -196
  849. package/.agents/skills/shape/SKILL.md +56 -56
  850. package/.agents/skills/skill-creator/SKILL.md +177 -177
  851. package/.agents/skills/soft-skill/SKILL.md +53 -53
  852. package/.agents/skills/sounds-on-the-web/SKILL.md +76 -76
  853. package/.agents/skills/sql-pro/SKILL.md +624 -624
  854. package/.agents/skills/subagent-driven-development/SKILL.md +32 -0
  855. package/.agents/skills/supabase-postgres-best-practices/SKILL.md +57 -57
  856. package/.agents/skills/svg-animation/SKILL.md +356 -356
  857. package/.agents/skills/swiftui-expert/SKILL.md +164 -164
  858. package/.agents/skills/swiss-design/SKILL.md +44 -44
  859. package/.agents/skills/system-design-pro/SKILL.md +188 -318
  860. package/.agents/skills/systematic-debugging/SKILL.md +129 -124
  861. package/.agents/skills/systematic-debugging/condition-based-waiting.md +120 -120
  862. package/.agents/skills/systematic-debugging/defense-in-depth.md +128 -128
  863. package/.agents/skills/systematic-debugging/root-cause-tracing.md +183 -183
  864. package/.agents/skills/tailwind-patterns/SKILL.md +583 -583
  865. package/.agents/skills/taste-skill/SKILL.md +52 -52
  866. package/.agents/skills/tdd-workflow/SKILL.md +105 -105
  867. package/.agents/skills/test-result-analyzer/SKILL.md +270 -270
  868. package/.agents/skills/testing-patterns/SKILL.md +534 -534
  869. package/.agents/skills/thermo-nuclear-code-quality-review/SKILL.md +62 -62
  870. package/.agents/skills/thinking-protocol/SKILL.md +21 -21
  871. package/.agents/skills/to-spring-or-not-to-spring/SKILL.md +43 -43
  872. package/.agents/skills/train-sentence-transformers/SKILL.md +109 -0
  873. package/.agents/skills/train-sentence-transformers/references/base_model_selection.md +79 -0
  874. package/.agents/skills/train-sentence-transformers/references/dataset_formats.md +128 -0
  875. package/.agents/skills/train-sentence-transformers/references/evaluators_cross_encoder.md +116 -0
  876. package/.agents/skills/train-sentence-transformers/references/evaluators_multi_vector_encoder.md +101 -0
  877. package/.agents/skills/train-sentence-transformers/references/evaluators_sentence_transformer.md +151 -0
  878. package/.agents/skills/train-sentence-transformers/references/evaluators_sparse_encoder.md +121 -0
  879. package/.agents/skills/train-sentence-transformers/references/hardware_guide.md +105 -0
  880. package/.agents/skills/train-sentence-transformers/references/hf_jobs_execution.md +173 -0
  881. package/.agents/skills/train-sentence-transformers/references/losses_cross_encoder.md +137 -0
  882. package/.agents/skills/train-sentence-transformers/references/losses_multi_vector_encoder.md +100 -0
  883. package/.agents/skills/train-sentence-transformers/references/losses_sentence_transformer.md +246 -0
  884. package/.agents/skills/train-sentence-transformers/references/losses_sparse_encoder.md +106 -0
  885. package/.agents/skills/train-sentence-transformers/references/model_architectures.md +178 -0
  886. package/.agents/skills/train-sentence-transformers/references/prompts_and_instructions.md +160 -0
  887. package/.agents/skills/train-sentence-transformers/references/training_args.md +270 -0
  888. package/.agents/skills/train-sentence-transformers/references/troubleshooting.md +225 -0
  889. package/.agents/skills/train-sentence-transformers/scripts/mine_hard_negatives.py +199 -0
  890. package/.agents/skills/train-sentence-transformers/scripts/train_cross_encoder_distillation_example.py +254 -0
  891. package/.agents/skills/train-sentence-transformers/scripts/train_cross_encoder_example.py +253 -0
  892. package/.agents/skills/train-sentence-transformers/scripts/train_cross_encoder_listwise_example.py +282 -0
  893. package/.agents/skills/train-sentence-transformers/scripts/train_multi_vector_encoder_example.py +240 -0
  894. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_distillation_example.py +303 -0
  895. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_example.py +227 -0
  896. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_make_multilingual_example.py +308 -0
  897. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_matryoshka_example.py +212 -0
  898. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_multi_dataset_example.py +258 -0
  899. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_static_embedding_example.py +273 -0
  900. package/.agents/skills/train-sentence-transformers/scripts/train_sentence_transformer_with_lora_example.py +275 -0
  901. package/.agents/skills/train-sentence-transformers/scripts/train_sparse_encoder_distillation_example.py +262 -0
  902. package/.agents/skills/train-sentence-transformers/scripts/train_sparse_encoder_example.py +237 -0
  903. package/.agents/skills/transformers-js/SKILL.md +692 -0
  904. package/.agents/skills/transformers-js/references/CACHE.md +339 -0
  905. package/.agents/skills/transformers-js/references/CONFIGURATION.md +438 -0
  906. package/.agents/skills/transformers-js/references/EXAMPLES.md +620 -0
  907. package/.agents/skills/transformers-js/references/MODEL_ARCHITECTURES.md +167 -0
  908. package/.agents/skills/transformers-js/references/MODEL_REGISTRY.md +197 -0
  909. package/.agents/skills/transformers-js/references/PIPELINE_OPTIONS.md +557 -0
  910. package/.agents/skills/transformers-js/references/TEXT_GENERATION.md +315 -0
  911. package/.agents/skills/transitions-dev/SKILL.md +90 -90
  912. package/.agents/skills/trend-researcher/SKILL.md +198 -198
  913. package/.agents/skills/tribunal-instincts-memory/SKILL.md +31 -0
  914. package/.agents/skills/trl-training/SKILL.md +318 -0
  915. package/.agents/skills/typescript-advanced/SKILL.md +306 -306
  916. package/.agents/skills/typeset/SKILL.md +60 -60
  917. package/.agents/skills/ui-reasoning-engine/SKILL.md +155 -155
  918. package/.agents/skills/ui-skill-packs/SKILL.md +57 -57
  919. package/.agents/skills/ui-skills-root/SKILL.md +69 -69
  920. package/.agents/skills/ui-ux-pro-max/SKILL.md +110 -110
  921. package/.agents/skills/ui-ux-researcher/SKILL.md +199 -199
  922. package/.agents/skills/vector-search-pgvector/SKILL.md +70 -70
  923. package/.agents/skills/verification-before-completion/SKILL.md +107 -107
  924. package/.agents/skills/vue-expert/SKILL.md +259 -259
  925. package/.agents/skills/vulnerability-scanner/SKILL.md +378 -378
  926. package/.agents/skills/web-accessibility-auditor/SKILL.md +179 -179
  927. package/.agents/skills/web-design-guidelines/SKILL.md +49 -49
  928. package/.agents/skills/web-quality-audit/SKILL.md +47 -47
  929. package/.agents/skills/webapp-testing/SKILL.md +128 -128
  930. package/.agents/skills/webgpu-performance/SKILL.md +88 -88
  931. package/.agents/skills/whimsy-injector/SKILL.md +305 -305
  932. package/.agents/skills/workflow-optimizer/SKILL.md +188 -188
  933. package/.agents/skills/zero-trust-passkeys/SKILL.md +82 -82
  934. package/AGENTS.md +93 -93
  935. package/CLAUDE.md +444 -444
  936. package/CONTRIBUTING.md +134 -134
  937. package/README.md +242 -542
  938. package/SECURITY.md +58 -52
  939. package/bin/adapter-install.js +264 -264
  940. package/bin/global-store.js +48 -48
  941. package/bin/mcp-server.js +1653 -1653
  942. package/bin/proxy-server.js +122 -122
  943. package/bin/spawn-agent.js +45 -45
  944. package/bin/tk-proxy.js +34 -34
  945. package/bin/tribunal-kit.js +113 -113
  946. package/bin/wrapper.js +209 -211
  947. package/hooks/hooks-cursor.json +10 -10
  948. package/hooks/hooks.json +10 -10
  949. package/hooks/session-start.js +77 -77
  950. package/mcp_config.json +18 -18
  951. package/package.json +169 -179
  952. package/{.claude-plugin → plugins/claude}/marketplace.json +14 -14
  953. package/{.claude-plugin → plugins/claude}/plugin.json +26 -26
  954. package/{.codex-plugin → plugins/codex}/plugin.json +41 -41
  955. package/{plugin.json → plugins/core-plugin.json} +26 -26
  956. package/{.cursor-plugin → plugins/cursor}/plugin.json +26 -26
  957. package/{.devin-plugin → plugins/devin}/plugin.json +14 -14
  958. package/{gemini-extension.json → plugins/gemini/extension.json} +6 -6
  959. package/{.hermes-plugin → plugins/hermes}/__init__.py +102 -102
  960. package/{.hermes-plugin → plugins/hermes}/plugin.yaml +6 -6
  961. package/{.kimi-plugin → plugins/kimi}/plugin.json +34 -34
  962. package/{marketplace.json → plugins/marketplace.json} +14 -14
  963. package/{.opencode → plugins/opencode}/INSTALL.md +42 -42
  964. package/{.opencode → plugins/opencode}/plugins/tribunal.js +110 -110
  965. package/{.opencode → plugins/opencode}/rules.md +258 -258
  966. package/{.pi → plugins/pi}/extensions/tribunal.ts +130 -130
  967. package/scripts/apply-version.js +57 -57
  968. package/scripts/audit_skill_sdo.js +89 -89
  969. package/scripts/benchmark.js +231 -231
  970. package/scripts/build-graph.js +71 -71
  971. package/scripts/changelog.js +190 -190
  972. package/scripts/clean-pycache.js +42 -42
  973. package/scripts/context_compiler.js +1143 -1117
  974. package/scripts/fix-vbc.js +96 -96
  975. package/scripts/fix-vbc.ps1 +3 -3
  976. package/scripts/modernize_skills.js +268 -268
  977. package/scripts/package-cores.js +116 -116
  978. package/scripts/skill_enhancement_engine.js +608 -608
  979. package/scripts/stress_benchmark.js +358 -358
  980. package/scripts/sync-skills.js +61 -61
  981. package/scripts/sync-version.js +177 -177
  982. package/scripts/telemetry_gc.js +156 -156
  983. package/scripts/validate-payload.js +73 -73
  984. package/scripts/visual_audit.js +136 -136
  985. package/skills/12-principles-of-animation/SKILL.md +51 -51
  986. package/skills/60fps-animation/SKILL.md +91 -91
  987. package/skills/accessible-animation/SKILL.md +189 -189
  988. package/skills/adapt/SKILL.md +56 -56
  989. package/skills/adr-generation/SKILL.md +57 -0
  990. package/skills/advanced-rag-pipelines/SKILL.md +94 -94
  991. package/skills/agent-organizer/SKILL.md +117 -117
  992. package/skills/agent-syscall-guidelines/SKILL.md +25 -0
  993. package/skills/agentic-patterns/SKILL.md +281 -281
  994. package/skills/agentic-workflows-2026/SKILL.md +91 -83
  995. package/skills/agentshield-security/SKILL.md +26 -0
  996. package/skills/ai-app-hardening/SKILL.md +51 -51
  997. package/skills/ai-prompt-injection-defense/SKILL.md +162 -162
  998. package/skills/animation-on-scroll/SKILL.md +196 -196
  999. package/skills/animation-systems/SKILL.md +198 -198
  1000. package/skills/antfu-conventions/SKILL.md +54 -54
  1001. package/skills/api-patterns/SKILL.md +218 -218
  1002. package/skills/api-security-auditor/SKILL.md +155 -155
  1003. package/skills/app-builder/SKILL.md +535 -535
  1004. package/skills/app-builder/templates/SKILL.md +108 -108
  1005. package/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -76
  1006. package/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -92
  1007. package/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -88
  1008. package/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -88
  1009. package/skills/app-builder/templates/express-api/TEMPLATE.md +83 -83
  1010. package/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -90
  1011. package/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -90
  1012. package/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +126 -126
  1013. package/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +127 -127
  1014. package/skills/app-builder/templates/nextjs-static/TEMPLATE.md +172 -172
  1015. package/skills/app-builder/templates/nuxt-app/TEMPLATE.md +139 -139
  1016. package/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -83
  1017. package/skills/app-builder/templates/react-native-app/TEMPLATE.md +122 -122
  1018. package/skills/appflow-wireframe/SKILL.md +96 -96
  1019. package/skills/apple-design/SKILL.md +89 -89
  1020. package/skills/architecture/SKILL.md +188 -188
  1021. package/skills/architecture-drift/SKILL.md +45 -0
  1022. package/skills/audit-and-fix/SKILL.md +100 -100
  1023. package/skills/authentication-best-practices/SKILL.md +157 -157
  1024. package/skills/autonomous-execution/SKILL.md +76 -0
  1025. package/skills/backend-security-expert/SKILL.md +73 -73
  1026. package/skills/baseline-ui/SKILL.md +55 -55
  1027. package/skills/bash-linux/SKILL.md +139 -139
  1028. package/skills/behavioral-modes/SKILL.md +200 -200
  1029. package/skills/better-colors/SKILL.md +116 -116
  1030. package/skills/better-typography/SKILL.md +90 -90
  1031. package/skills/better-ui/SKILL.md +130 -130
  1032. package/skills/bolder/SKILL.md +49 -49
  1033. package/skills/brainstorming/SKILL.md +460 -460
  1034. package/skills/browser-audit/SKILL.md +102 -102
  1035. package/skills/browser-native-ai/SKILL.md +72 -72
  1036. package/skills/build-primitive/SKILL.md +50 -50
  1037. package/skills/building-native-ui/SKILL.md +162 -162
  1038. package/skills/cicd-pro/SKILL.md +412 -412
  1039. package/skills/clarify/SKILL.md +55 -55
  1040. package/skills/clean-code/SKILL.md +367 -367
  1041. package/skills/cloud-architect/SKILL.md +409 -409
  1042. package/skills/cobejs/SKILL.md +70 -70
  1043. package/skills/code-review-checklist/SKILL.md +163 -163
  1044. package/skills/codebase-design/SKILL.md +76 -76
  1045. package/skills/colorize/SKILL.md +57 -57
  1046. package/skills/compact-landing/SKILL.md +50 -50
  1047. package/skills/company-logos/SKILL.md +54 -54
  1048. package/skills/config-validator/SKILL.md +125 -125
  1049. package/skills/containerization-pro/SKILL.md +422 -422
  1050. package/skills/context-engineering-pro/SKILL.md +69 -62
  1051. package/skills/create-design-md/SKILL.md +92 -92
  1052. package/skills/critique/SKILL.md +79 -79
  1053. package/skills/csharp-developer/SKILL.md +478 -478
  1054. package/skills/data-validation-schemas/SKILL.md +297 -297
  1055. package/skills/database-design/SKILL.md +219 -219
  1056. package/skills/delight/SKILL.md +46 -46
  1057. package/skills/deployment-procedures/SKILL.md +132 -132
  1058. package/skills/design-lab/SKILL.md +42 -42
  1059. package/skills/devops-engineer/SKILL.md +305 -305
  1060. package/skills/devops-incident-responder/SKILL.md +103 -103
  1061. package/skills/diagnosing-bugs/SKILL.md +172 -172
  1062. package/skills/distill/SKILL.md +45 -45
  1063. package/skills/documentation-templates/SKILL.md +251 -251
  1064. package/skills/domain-modeling/SKILL.md +61 -61
  1065. package/skills/duckdb-analytical-sql/SKILL.md +51 -51
  1066. package/skills/edge-ai-mobile/SKILL.md +42 -42
  1067. package/skills/edge-computing/SKILL.md +143 -143
  1068. package/skills/emil-design-eng/SKILL.md +134 -134
  1069. package/skills/error-resilience/SKILL.md +403 -403
  1070. package/skills/expo-router-v4/SKILL.md +72 -72
  1071. package/skills/extract-design-system/SKILL.md +120 -120
  1072. package/skills/fabel-protocol/SKILL.md +282 -277
  1073. package/skills/failure-mode-analysis/SKILL.md +48 -0
  1074. package/skills/fixing-accessibility/SKILL.md +87 -87
  1075. package/skills/fixing-metadata/SKILL.md +83 -83
  1076. package/skills/fixing-motion-performance/SKILL.md +78 -78
  1077. package/skills/framer-motion-expert/SKILL.md +237 -237
  1078. package/skills/frontend-design/SKILL.md +103 -103
  1079. package/skills/frontend-security-expert/SKILL.md +56 -56
  1080. package/skills/game-design-expert/SKILL.md +92 -92
  1081. package/skills/game-engineering-expert/SKILL.md +108 -108
  1082. package/skills/generative-ui-expert/SKILL.md +100 -100
  1083. package/skills/geo-fundamentals/SKILL.md +108 -108
  1084. package/skills/git-pro/SKILL.md +401 -401
  1085. package/skills/github-operations/SKILL.md +295 -295
  1086. package/skills/gpt-taste/SKILL.md +50 -50
  1087. package/skills/graph-engineering/SKILL.md +28 -0
  1088. package/skills/gsap-core/SKILL.md +277 -277
  1089. package/skills/gsap-frameworks/SKILL.md +168 -168
  1090. package/skills/gsap-performance/SKILL.md +94 -94
  1091. package/skills/gsap-plugins/SKILL.md +441 -441
  1092. package/skills/gsap-react/SKILL.md +213 -213
  1093. package/skills/gsap-scrolltrigger/SKILL.md +312 -312
  1094. package/skills/gsap-timeline/SKILL.md +122 -122
  1095. package/skills/gsap-utils/SKILL.md +299 -299
  1096. package/skills/harden/SKILL.md +55 -55
  1097. package/skills/harness-protocol/SKILL.md +48 -40
  1098. package/skills/hf-cli/SKILL.md +239 -0
  1099. package/skills/hf-cloud-aws-context-discovery/SKILL.md +74 -0
  1100. package/skills/hf-cloud-python-env-setup/SKILL.md +90 -0
  1101. package/skills/hf-cloud-python-env-setup/requirements.txt +17 -0
  1102. package/skills/hf-cloud-python-env-setup/scripts/check_versions.py +29 -0
  1103. package/skills/hf-cloud-python-env-setup/scripts/setup_env.py +143 -0
  1104. package/skills/hf-cloud-sagemaker-deployment-planner/SKILL.md +90 -0
  1105. package/skills/hf-cloud-sagemaker-iam-preflight/SKILL.md +102 -0
  1106. package/skills/hf-cloud-sagemaker-iam-preflight/references/minimum-permissions.json +47 -0
  1107. package/skills/hf-cloud-sagemaker-iam-preflight/references/trust-policy.json +12 -0
  1108. package/skills/hf-cloud-sagemaker-iam-preflight/scripts/check_role.py +184 -0
  1109. package/skills/hf-cloud-sagemaker-iam-preflight/scripts/create_role.py +118 -0
  1110. package/skills/hf-cloud-sagemaker-production-defaults/SKILL.md +419 -0
  1111. package/skills/hf-cloud-sagemaker-production-defaults/references/deployment-template.md +59 -0
  1112. package/skills/hf-cloud-sagemaker-production-defaults/scripts/_common.py +148 -0
  1113. package/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy.py +327 -0
  1114. package/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_async.py +434 -0
  1115. package/skills/hf-cloud-sagemaker-production-defaults/scripts/deploy_ic.py +506 -0
  1116. package/skills/hf-cloud-sagemaker-production-defaults/scripts/invoke_endpoint.py +180 -0
  1117. package/skills/hf-cloud-sagemaker-production-defaults/scripts/teardown.py +246 -0
  1118. package/skills/hf-cloud-serving-image-selection/SKILL.md +220 -0
  1119. package/skills/hf-cloud-serving-image-selection/references/model-to-image.md +111 -0
  1120. package/skills/hf-cloud-serving-image-selection/scripts/mirror_image.py +145 -0
  1121. package/skills/hf-mem/SKILL.md +79 -0
  1122. package/skills/huggingface-best/SKILL.md +134 -0
  1123. package/skills/huggingface-community-evals/SKILL.md +207 -0
  1124. package/skills/huggingface-community-evals/examples/.env.example +3 -0
  1125. package/skills/huggingface-community-evals/examples/USAGE_EXAMPLES.md +101 -0
  1126. package/skills/huggingface-community-evals/scripts/inspect_eval_uv.py +104 -0
  1127. package/skills/huggingface-community-evals/scripts/inspect_vllm_uv.py +306 -0
  1128. package/skills/huggingface-community-evals/scripts/lighteval_vllm_uv.py +297 -0
  1129. package/skills/huggingface-datasets/SKILL.md +107 -0
  1130. package/skills/huggingface-gradio/SKILL.md +298 -0
  1131. package/skills/huggingface-gradio/examples.md +613 -0
  1132. package/skills/huggingface-llm-trainer/SKILL.md +738 -0
  1133. package/skills/huggingface-llm-trainer/references/gguf_conversion.md +296 -0
  1134. package/skills/huggingface-llm-trainer/references/hardware_guide.md +283 -0
  1135. package/skills/huggingface-llm-trainer/references/hub_saving.md +364 -0
  1136. package/skills/huggingface-llm-trainer/references/local_training_macos.md +231 -0
  1137. package/skills/huggingface-llm-trainer/references/reliability_principles.md +371 -0
  1138. package/skills/huggingface-llm-trainer/references/trackio_guide.md +191 -0
  1139. package/skills/huggingface-llm-trainer/references/training_methods.md +150 -0
  1140. package/skills/huggingface-llm-trainer/references/training_patterns.md +203 -0
  1141. package/skills/huggingface-llm-trainer/references/troubleshooting.md +282 -0
  1142. package/skills/huggingface-llm-trainer/references/unsloth.md +313 -0
  1143. package/skills/huggingface-llm-trainer/scripts/convert_to_gguf.py +424 -0
  1144. package/skills/huggingface-llm-trainer/scripts/dataset_inspector.py +417 -0
  1145. package/skills/huggingface-llm-trainer/scripts/estimate_cost.py +150 -0
  1146. package/skills/huggingface-llm-trainer/scripts/hf_benchmarks.py +659 -0
  1147. package/skills/huggingface-llm-trainer/scripts/train_dpo_example.py +106 -0
  1148. package/skills/huggingface-llm-trainer/scripts/train_grpo_example.py +89 -0
  1149. package/skills/huggingface-llm-trainer/scripts/train_sft_example.py +122 -0
  1150. package/skills/huggingface-llm-trainer/scripts/unsloth_sft_example.py +512 -0
  1151. package/skills/huggingface-local-models/SKILL.md +113 -0
  1152. package/skills/huggingface-local-models/references/hardware.md +38 -0
  1153. package/skills/huggingface-local-models/references/hub-discovery.md +178 -0
  1154. package/skills/huggingface-local-models/references/quantization.md +256 -0
  1155. package/skills/huggingface-lora-space-builder/SKILL.md +394 -0
  1156. package/skills/huggingface-lora-space-builder/references/adapting-to-the-lora.md +113 -0
  1157. package/skills/huggingface-lora-space-builder/references/base-models/krea-2.md +63 -0
  1158. package/skills/huggingface-lora-space-builder/references/base-models/ltx.md +205 -0
  1159. package/skills/huggingface-lora-space-builder/references/base-models/qwen-image.md +144 -0
  1160. package/skills/huggingface-lora-space-builder/references/creative-mode.md +262 -0
  1161. package/skills/huggingface-lora-space-builder/references/tasks.md +124 -0
  1162. package/skills/huggingface-lora-space-builder/references/zerogpu-and-publishing.md +196 -0
  1163. package/skills/huggingface-paper-publisher/SKILL.md +624 -0
  1164. package/skills/huggingface-paper-publisher/examples/example_usage.md +326 -0
  1165. package/skills/huggingface-paper-publisher/references/quick_reference.md +216 -0
  1166. package/skills/huggingface-paper-publisher/scripts/paper_manager.py +606 -0
  1167. package/skills/huggingface-paper-publisher/templates/arxiv.md +299 -0
  1168. package/skills/huggingface-paper-publisher/templates/ml-report.md +358 -0
  1169. package/skills/huggingface-paper-publisher/templates/modern.md +319 -0
  1170. package/skills/huggingface-paper-publisher/templates/standard.md +201 -0
  1171. package/skills/huggingface-papers/SKILL.md +239 -0
  1172. package/skills/huggingface-spaces/README.md +9 -0
  1173. package/skills/huggingface-spaces/SKILL.md +242 -0
  1174. package/skills/huggingface-spaces/references/3d-cuda-extensions.md +109 -0
  1175. package/skills/huggingface-spaces/references/3d-generation.md +98 -0
  1176. package/skills/huggingface-spaces/references/3d-gsplat.md +53 -0
  1177. package/skills/huggingface-spaces/references/3d-models.md +227 -0
  1178. package/skills/huggingface-spaces/references/3d-outputs.md +114 -0
  1179. package/skills/huggingface-spaces/references/buckets.md +89 -0
  1180. package/skills/huggingface-spaces/references/debugging.md +236 -0
  1181. package/skills/huggingface-spaces/references/gradio.md +200 -0
  1182. package/skills/huggingface-spaces/references/grants.md +63 -0
  1183. package/skills/huggingface-spaces/references/inference-providers.md +97 -0
  1184. package/skills/huggingface-spaces/references/known-errors.md +232 -0
  1185. package/skills/huggingface-spaces/references/requirements.md +169 -0
  1186. package/skills/huggingface-spaces/references/zerogpu.md +349 -0
  1187. package/skills/huggingface-tool-builder/SKILL.md +120 -0
  1188. package/skills/huggingface-tool-builder/references/baseline_hf_api.py +57 -0
  1189. package/skills/huggingface-tool-builder/references/baseline_hf_api.sh +40 -0
  1190. package/skills/huggingface-tool-builder/references/baseline_hf_api.tsx +57 -0
  1191. package/skills/huggingface-tool-builder/references/find_models_by_paper.sh +230 -0
  1192. package/skills/huggingface-tool-builder/references/hf_enrich_models.sh +96 -0
  1193. package/skills/huggingface-tool-builder/references/hf_model_card_frontmatter.sh +188 -0
  1194. package/skills/huggingface-tool-builder/references/hf_model_papers_auth.sh +171 -0
  1195. package/skills/huggingface-trackio/SKILL.md +142 -0
  1196. package/skills/huggingface-trackio/references/alerts.md +196 -0
  1197. package/skills/huggingface-trackio/references/logging_metrics.md +212 -0
  1198. package/skills/huggingface-trackio/references/retrieving_metrics.md +251 -0
  1199. package/skills/huggingface-vision-trainer/SKILL.md +593 -0
  1200. package/skills/huggingface-vision-trainer/references/finetune_sam2_trainer.md +254 -0
  1201. package/skills/huggingface-vision-trainer/references/hub_saving.md +618 -0
  1202. package/skills/huggingface-vision-trainer/references/image_classification_training_notebook.md +279 -0
  1203. package/skills/huggingface-vision-trainer/references/object_detection_training_notebook.md +700 -0
  1204. package/skills/huggingface-vision-trainer/references/reliability_principles.md +310 -0
  1205. package/skills/huggingface-vision-trainer/references/timm_trainer.md +91 -0
  1206. package/skills/huggingface-vision-trainer/scripts/dataset_inspector.py +814 -0
  1207. package/skills/huggingface-vision-trainer/scripts/estimate_cost.py +217 -0
  1208. package/skills/huggingface-vision-trainer/scripts/image_classification_training.py +383 -0
  1209. package/skills/huggingface-vision-trainer/scripts/object_detection_training.py +710 -0
  1210. package/skills/huggingface-vision-trainer/scripts/sam_segmentation_training.py +382 -0
  1211. package/skills/huggingface-zerogpu/SKILL.md +289 -0
  1212. package/skills/huggingface-zerogpu/references/concurrency.md +79 -0
  1213. package/skills/huggingface-zerogpu/references/cuda-and-deps.md +66 -0
  1214. package/skills/huggingface-zerogpu/references/how-quota-works.md +74 -0
  1215. package/skills/huggingface-zerogpu/references/how-zerogpu-works.md +50 -0
  1216. package/skills/human-gate-negotiation/SKILL.md +30 -0
  1217. package/skills/i18n-localization/SKILL.md +134 -134
  1218. package/skills/impeccable/SKILL.md +52 -52
  1219. package/skills/improve-codebase-architecture/SKILL.md +48 -48
  1220. package/skills/improve-ui/SKILL.md +70 -70
  1221. package/skills/intelligent-routing/SKILL.md +204 -198
  1222. package/skills/knowledge-graph/SKILL.md +71 -71
  1223. package/skills/landing-page/SKILL.md +65 -65
  1224. package/skills/lint-and-validate/SKILL.md +224 -224
  1225. package/skills/llm-engineering/SKILL.md +360 -360
  1226. package/skills/local-first/SKILL.md +138 -138
  1227. package/skills/local-first-architecture/SKILL.md +62 -62
  1228. package/skills/lottie-animation/SKILL.md +62 -62
  1229. package/skills/marquee-loop/SKILL.md +72 -72
  1230. package/skills/masked-reveal/SKILL.md +230 -230
  1231. package/skills/mcp-builder/SKILL.md +105 -105
  1232. package/skills/micro-interaction/SKILL.md +253 -253
  1233. package/skills/mobile-design/SKILL.md +245 -245
  1234. package/skills/monorepo-management/SKILL.md +295 -295
  1235. package/skills/morphing-icons/SKILL.md +348 -348
  1236. package/skills/motion-engineering/SKILL.md +197 -197
  1237. package/skills/nextjs-react-expert/SKILL.md +218 -218
  1238. package/skills/nodejs-best-practices/SKILL.md +542 -542
  1239. package/skills/observability/SKILL.md +303 -303
  1240. package/skills/opentelemetry-observability/SKILL.md +51 -51
  1241. package/skills/page-transition-animation/SKILL.md +86 -86
  1242. package/skills/parallel-agents/SKILL.md +110 -110
  1243. package/skills/performance-profiling/SKILL.md +230 -230
  1244. package/skills/plan-writing/SKILL.md +127 -127
  1245. package/skills/platform-engineer/SKILL.md +108 -108
  1246. package/skills/platform-engineering-opentofu/SKILL.md +59 -59
  1247. package/skills/playwright-ai-e2e/SKILL.md +52 -52
  1248. package/skills/playwright-best-practices/SKILL.md +149 -149
  1249. package/skills/polish/SKILL.md +39 -39
  1250. package/skills/powershell-windows/SKILL.md +122 -122
  1251. package/skills/pricing-page/SKILL.md +48 -48
  1252. package/skills/product-aware-heuristics/SKILL.md +390 -390
  1253. package/skills/progressive-blur/SKILL.md +80 -80
  1254. package/skills/project-idioms/SKILL.md +91 -91
  1255. package/skills/property-based-testing/SKILL.md +50 -50
  1256. package/skills/python-patterns/SKILL.md +220 -220
  1257. package/skills/python-pro/SKILL.md +305 -305
  1258. package/skills/quieter/SKILL.md +49 -49
  1259. package/skills/react-doctor/SKILL.md +51 -51
  1260. package/skills/react-specialist/SKILL.md +280 -280
  1261. package/skills/readme-builder/SKILL.md +270 -270
  1262. package/skills/realtime-patterns/SKILL.md +283 -283
  1263. package/skills/red-team-tactics/SKILL.md +191 -191
  1264. package/skills/redesign-skill/SKILL.md +46 -46
  1265. package/skills/review-animations/SKILL.md +45 -45
  1266. package/skills/review-animations/STANDARDS.md +87 -87
  1267. package/skills/rust-pro/SKILL.md +652 -652
  1268. package/skills/semantic-filesystem-navigation/SKILL.md +24 -0
  1269. package/skills/seo-fundamentals/SKILL.md +139 -139
  1270. package/skills/server-management/SKILL.md +178 -178
  1271. package/skills/session-log-interrogation/SKILL.md +29 -0
  1272. package/skills/shadcn-ui-expert/SKILL.md +196 -196
  1273. package/skills/shape/SKILL.md +56 -56
  1274. package/skills/skill-creator/SKILL.md +177 -177
  1275. package/skills/soft-skill/SKILL.md +53 -53
  1276. package/skills/sounds-on-the-web/SKILL.md +76 -76
  1277. package/skills/sql-pro/SKILL.md +624 -624
  1278. package/skills/subagent-driven-development/SKILL.md +32 -0
  1279. package/skills/supabase-postgres-best-practices/SKILL.md +57 -57
  1280. package/skills/svg-animation/SKILL.md +356 -356
  1281. package/skills/swiftui-expert/SKILL.md +164 -164
  1282. package/skills/swiss-design/SKILL.md +44 -44
  1283. package/skills/system-design-pro/SKILL.md +188 -318
  1284. package/skills/systematic-debugging/SKILL.md +129 -124
  1285. package/skills/systematic-debugging/condition-based-waiting.md +120 -120
  1286. package/skills/systematic-debugging/defense-in-depth.md +128 -128
  1287. package/skills/systematic-debugging/root-cause-tracing.md +183 -183
  1288. package/skills/tailwind-patterns/SKILL.md +583 -583
  1289. package/skills/taste-skill/SKILL.md +52 -52
  1290. package/skills/tdd-workflow/SKILL.md +105 -105
  1291. package/skills/test-result-analyzer/SKILL.md +270 -270
  1292. package/skills/testing-patterns/SKILL.md +534 -534
  1293. package/skills/thermo-nuclear-code-quality-review/SKILL.md +62 -62
  1294. package/skills/thinking-protocol/SKILL.md +21 -21
  1295. package/skills/to-spring-or-not-to-spring/SKILL.md +43 -43
  1296. package/skills/train-sentence-transformers/SKILL.md +109 -0
  1297. package/skills/train-sentence-transformers/references/base_model_selection.md +79 -0
  1298. package/skills/train-sentence-transformers/references/dataset_formats.md +128 -0
  1299. package/skills/train-sentence-transformers/references/evaluators_cross_encoder.md +116 -0
  1300. package/skills/train-sentence-transformers/references/evaluators_multi_vector_encoder.md +101 -0
  1301. package/skills/train-sentence-transformers/references/evaluators_sentence_transformer.md +151 -0
  1302. package/skills/train-sentence-transformers/references/evaluators_sparse_encoder.md +121 -0
  1303. package/skills/train-sentence-transformers/references/hardware_guide.md +105 -0
  1304. package/skills/train-sentence-transformers/references/hf_jobs_execution.md +173 -0
  1305. package/skills/train-sentence-transformers/references/losses_cross_encoder.md +137 -0
  1306. package/skills/train-sentence-transformers/references/losses_multi_vector_encoder.md +100 -0
  1307. package/skills/train-sentence-transformers/references/losses_sentence_transformer.md +246 -0
  1308. package/skills/train-sentence-transformers/references/losses_sparse_encoder.md +106 -0
  1309. package/skills/train-sentence-transformers/references/model_architectures.md +178 -0
  1310. package/skills/train-sentence-transformers/references/prompts_and_instructions.md +160 -0
  1311. package/skills/train-sentence-transformers/references/training_args.md +270 -0
  1312. package/skills/train-sentence-transformers/references/troubleshooting.md +225 -0
  1313. package/skills/train-sentence-transformers/scripts/mine_hard_negatives.py +199 -0
  1314. package/skills/train-sentence-transformers/scripts/train_cross_encoder_distillation_example.py +254 -0
  1315. package/skills/train-sentence-transformers/scripts/train_cross_encoder_example.py +253 -0
  1316. package/skills/train-sentence-transformers/scripts/train_cross_encoder_listwise_example.py +282 -0
  1317. package/skills/train-sentence-transformers/scripts/train_multi_vector_encoder_example.py +240 -0
  1318. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_distillation_example.py +303 -0
  1319. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_example.py +227 -0
  1320. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_make_multilingual_example.py +308 -0
  1321. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_matryoshka_example.py +212 -0
  1322. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_multi_dataset_example.py +258 -0
  1323. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_static_embedding_example.py +273 -0
  1324. package/skills/train-sentence-transformers/scripts/train_sentence_transformer_with_lora_example.py +275 -0
  1325. package/skills/train-sentence-transformers/scripts/train_sparse_encoder_distillation_example.py +262 -0
  1326. package/skills/train-sentence-transformers/scripts/train_sparse_encoder_example.py +237 -0
  1327. package/skills/transformers-js/SKILL.md +692 -0
  1328. package/skills/transformers-js/references/CACHE.md +339 -0
  1329. package/skills/transformers-js/references/CONFIGURATION.md +438 -0
  1330. package/skills/transformers-js/references/EXAMPLES.md +620 -0
  1331. package/skills/transformers-js/references/MODEL_ARCHITECTURES.md +167 -0
  1332. package/skills/transformers-js/references/MODEL_REGISTRY.md +197 -0
  1333. package/skills/transformers-js/references/PIPELINE_OPTIONS.md +557 -0
  1334. package/skills/transformers-js/references/TEXT_GENERATION.md +315 -0
  1335. package/skills/transitions-dev/SKILL.md +90 -90
  1336. package/skills/trend-researcher/SKILL.md +198 -198
  1337. package/skills/tribunal-instincts-memory/SKILL.md +31 -0
  1338. package/skills/trl-training/SKILL.md +318 -0
  1339. package/skills/typescript-advanced/SKILL.md +306 -306
  1340. package/skills/typeset/SKILL.md +60 -60
  1341. package/skills/ui-reasoning-engine/SKILL.md +155 -155
  1342. package/skills/ui-skill-packs/SKILL.md +57 -57
  1343. package/skills/ui-skills-root/SKILL.md +69 -69
  1344. package/skills/ui-ux-pro-max/SKILL.md +110 -110
  1345. package/skills/ui-ux-researcher/SKILL.md +199 -199
  1346. package/skills/vector-search-pgvector/SKILL.md +70 -70
  1347. package/skills/verification-before-completion/SKILL.md +107 -107
  1348. package/skills/vue-expert/SKILL.md +259 -259
  1349. package/skills/vulnerability-scanner/SKILL.md +378 -378
  1350. package/skills/web-accessibility-auditor/SKILL.md +179 -179
  1351. package/skills/web-design-guidelines/SKILL.md +49 -49
  1352. package/skills/web-quality-audit/SKILL.md +47 -47
  1353. package/skills/webapp-testing/SKILL.md +128 -128
  1354. package/skills/webgpu-performance/SKILL.md +88 -88
  1355. package/skills/whimsy-injector/SKILL.md +305 -305
  1356. package/skills/workflow-optimizer/SKILL.md +188 -188
  1357. package/skills/zero-trust-passkeys/SKILL.md +82 -82
  1358. package/{dist → src}/browser/audit.js +229 -229
  1359. package/{dist → src}/browser/case_bridge.js +189 -189
  1360. package/{dist → src}/browser/cdp.js +513 -513
  1361. package/{dist → src}/browser/compare.js +110 -110
  1362. package/{dist → src}/browser/discovery.js +140 -140
  1363. package/{dist → src}/browser/idpi.js +142 -142
  1364. package/{dist → src}/browser/index.js +89 -89
  1365. package/{dist → src}/browser/launcher.js +154 -154
  1366. package/{dist → src}/browser/sentinel.js +202 -202
  1367. package/{dist → src}/browser/synapse.js +251 -251
  1368. package/{dist → src}/browser/trimmer.js +210 -210
  1369. package/{dist → src}/commands/align.js +201 -201
  1370. package/{dist → src}/commands/audit-web.js +112 -112
  1371. package/{dist → src}/commands/browse.js +56 -56
  1372. package/{dist → src}/commands/case.js +71 -73
  1373. package/{dist → src}/commands/compare-web.js +61 -61
  1374. package/{dist → src}/commands/compile.js +91 -91
  1375. package/{dist → src}/commands/context.js +71 -71
  1376. package/{dist → src}/commands/contract.js +440 -440
  1377. package/{dist → src}/commands/deconstruct.js +58 -58
  1378. package/{dist → src}/commands/graph.js +44 -44
  1379. package/{dist → src}/commands/guardrail.js +275 -275
  1380. package/{dist → src}/commands/heal.js +99 -99
  1381. package/{dist → src}/commands/hook.js +28 -28
  1382. package/{dist → src}/commands/init.js +393 -393
  1383. package/{dist → src}/commands/learn.js +119 -117
  1384. package/{dist → src}/commands/marathon.js +45 -45
  1385. package/{dist → src}/commands/memory.js +508 -508
  1386. package/{dist → src}/commands/minimal.js +71 -71
  1387. package/{dist → src}/commands/mutate.js +30 -30
  1388. package/{dist → src}/commands/native.js +264 -264
  1389. package/{dist → src}/commands/optimize.js +332 -328
  1390. package/{dist → src}/commands/sdd.js +265 -229
  1391. package/{dist → src}/commands/status.js +66 -66
  1392. package/{dist → src}/commands/sync.js +25 -25
  1393. package/{dist → src}/commands/uninstall.js +54 -54
  1394. package/{dist → src}/commands/update.js +37 -37
  1395. package/{dist → src}/commands/validate.js +58 -58
  1396. package/{dist → src}/esm/index.mjs +1 -1
  1397. package/{dist → src}/mcp/server.js +8 -8
  1398. package/{dist → src}/tui/banner.js +1 -1
  1399. package/{dist → src}/tui/index.js +21 -21
  1400. package/{dist → src}/tui/reviewer-grid.js +90 -90
  1401. package/{dist → src}/tui/shimmer.js +91 -91
  1402. package/{dist → src}/tui/theme.js +130 -130
  1403. package/{dist → src}/tui/tree.js +93 -93
  1404. package/{dist → src}/tui/wizard.js +148 -148
  1405. package/{dist → src}/types.js +8 -8
  1406. package/{dist → src}/utils/fs.js +102 -102
  1407. package/{dist → src}/utils/hasher.js +142 -142
  1408. package/{dist → src}/utils/helpers.js +53 -53
  1409. package/{dist → src}/utils/logger.js +54 -54
  1410. package/{dist → src}/utils/version.js +157 -157
  1411. package/.agent/history/README.md +0 -53
  1412. package/.agent/history/architecture-explorer.html +0 -352
  1413. package/.agent/history/architecture-graph.yaml +0 -619
  1414. package/.agent/history/case-law/cases/template-case.json +0 -19
  1415. package/.agent/history/graph-cache.json +0 -1042
  1416. package/.agent/history/integrity_manifest.json +0 -4694
  1417. package/.agent/history/memory/.memory.idx +0 -7596
  1418. package/.agent/history/memory/MEMORY.md +0 -512
  1419. package/.agent/history/memory.db +0 -0
  1420. package/.agent/history/snapshots/.opencode__plugins__tribunal.js.json +0 -12
  1421. package/.agent/history/snapshots/.pi__extensions__tribunal.ts.json +0 -12
  1422. package/.agent/history/snapshots/bin__adapter-install.js.json +0 -13
  1423. package/.agent/history/snapshots/bin__global-store.js.json +0 -15
  1424. package/.agent/history/snapshots/bin__mcp-server.js.json +0 -21
  1425. package/.agent/history/snapshots/bin__proxy-server.js.json +0 -20
  1426. package/.agent/history/snapshots/bin__spawn-agent.js.json +0 -12
  1427. package/.agent/history/snapshots/bin__tk-proxy.js.json +0 -21
  1428. package/.agent/history/snapshots/bin__tribunal-kit.js.json +0 -21
  1429. package/.agent/history/snapshots/bin__wrapper.js.json +0 -14
  1430. package/.agent/history/snapshots/eslint.config.js.json +0 -8
  1431. package/.agent/history/snapshots/hooks__session-start.js.json +0 -11
  1432. package/.agent/history/snapshots/scripts__apply-version.js.json +0 -11
  1433. package/.agent/history/snapshots/scripts__audit_skill_sdo.js.json +0 -11
  1434. package/.agent/history/snapshots/scripts__benchmark.js.json +0 -14
  1435. package/.agent/history/snapshots/scripts__changelog.js.json +0 -12
  1436. package/.agent/history/snapshots/scripts__clean-pycache.js.json +0 -11
  1437. package/.agent/history/snapshots/scripts__context_compiler.js.json +0 -17
  1438. package/.agent/history/snapshots/scripts__fix-vbc.js.json +0 -11
  1439. package/.agent/history/snapshots/scripts__modernize_skills.js.json +0 -11
  1440. package/.agent/history/snapshots/scripts__package-cores.js.json +0 -12
  1441. package/.agent/history/snapshots/scripts__skill_enhancement_engine.js.json +0 -11
  1442. package/.agent/history/snapshots/scripts__stress_benchmark.js.json +0 -15
  1443. package/.agent/history/snapshots/scripts__sync-skills.js.json +0 -11
  1444. package/.agent/history/snapshots/scripts__sync-version.js.json +0 -11
  1445. package/.agent/history/snapshots/scripts__telemetry_gc.js.json +0 -11
  1446. package/.agent/history/snapshots/scripts__validate-payload.js.json +0 -11
  1447. package/.agent/history/snapshots/scripts__visual_audit.js.json +0 -11
  1448. package/.agent/history/snapshots/test__integration__bridges.test.js.json +0 -13
  1449. package/.agent/history/snapshots/test__integration__browser_cli.test.js.json +0 -12
  1450. package/.agent/history/snapshots/test__integration__graceful_degradation.test.js.json +0 -12
  1451. package/.agent/history/snapshots/test__integration__init.test.js.json +0 -13
  1452. package/.agent/history/snapshots/test__integration__minimal_change_pipeline.test.js.json +0 -13
  1453. package/.agent/history/snapshots/test__integration__parallel_tribunal.test.js.json +0 -12
  1454. package/.agent/history/snapshots/test__integration__routing.test.js.json +0 -11
  1455. package/.agent/history/snapshots/test__integration__swarm_dispatcher.test.js.json +0 -13
  1456. package/.agent/history/snapshots/test__integration__sync_status.test.js.json +0 -13
  1457. package/.agent/history/snapshots/test__integration__wave2.test.js.json +0 -13
  1458. package/.agent/history/snapshots/test__integration__wrapper.test.js.json +0 -13
  1459. package/.agent/history/snapshots/test__unit__align.test.js.json +0 -10
  1460. package/.agent/history/snapshots/test__unit__args.test.js.json +0 -20
  1461. package/.agent/history/snapshots/test__unit__ast_context_loader.test.js.json +0 -12
  1462. package/.agent/history/snapshots/test__unit__audit_release.test.js.json +0 -16
  1463. package/.agent/history/snapshots/test__unit__browser_case_bridge.test.js.json +0 -11
  1464. package/.agent/history/snapshots/test__unit__browser_discovery.test.js.json +0 -10
  1465. package/.agent/history/snapshots/test__unit__browser_idpi.test.js.json +0 -10
  1466. package/.agent/history/snapshots/test__unit__browser_sentinel.test.js.json +0 -11
  1467. package/.agent/history/snapshots/test__unit__browser_synapse.test.js.json +0 -10
  1468. package/.agent/history/snapshots/test__unit__browser_trimmer.test.js.json +0 -10
  1469. package/.agent/history/snapshots/test__unit__case_law_manager.test.js.json +0 -10
  1470. package/.agent/history/snapshots/test__unit__cicd_validator.test.js.json +0 -12
  1471. package/.agent/history/snapshots/test__unit__compile.test.js.json +0 -10
  1472. package/.agent/history/snapshots/test__unit__context_broker.test.js.json +0 -10
  1473. package/.agent/history/snapshots/test__unit__context_compiler.test.js.json +0 -26
  1474. package/.agent/history/snapshots/test__unit__contract_engine.test.js.json +0 -13
  1475. package/.agent/history/snapshots/test__unit__copyDir.test.js.json +0 -23
  1476. package/.agent/history/snapshots/test__unit__graph_tools.test.js.json +0 -11
  1477. package/.agent/history/snapshots/test__unit__guardrail_engine.test.js.json +0 -10
  1478. package/.agent/history/snapshots/test__unit__impact_classifier.test.js.json +0 -12
  1479. package/.agent/history/snapshots/test__unit__init.test.js.json +0 -14
  1480. package/.agent/history/snapshots/test__unit__inner_loop_validator.test.js.json +0 -10
  1481. package/.agent/history/snapshots/test__unit__integrity_manifest.test.js.json +0 -13
  1482. package/.agent/history/snapshots/test__unit__learn.test.js.json +0 -11
  1483. package/.agent/history/snapshots/test__unit__marathon.test.js.json +0 -22
  1484. package/.agent/history/snapshots/test__unit__mcp_server.test.js.json +0 -16
  1485. package/.agent/history/snapshots/test__unit__memory.test.js.json +0 -13
  1486. package/.agent/history/snapshots/test__unit__minimal_change.test.js.json +0 -10
  1487. package/.agent/history/snapshots/test__unit__native.test.js.json +0 -10
  1488. package/.agent/history/snapshots/test__unit__optimize.test.js.json +0 -13
  1489. package/.agent/history/snapshots/test__unit__path_resolution.test.js.json +0 -14
  1490. package/.agent/history/snapshots/test__unit__platform_download_audit.test.js.json +0 -11
  1491. package/.agent/history/snapshots/test__unit__production_readiness_evidence.test.js.json +0 -21
  1492. package/.agent/history/snapshots/test__unit__prompt_compiler.test.js.json +0 -10
  1493. package/.agent/history/snapshots/test__unit__sdd_integration.test.js.json +0 -12
  1494. package/.agent/history/snapshots/test__unit__selfInstall.test.js.json +0 -23
  1495. package/.agent/history/snapshots/test__unit__semver.test.js.json +0 -20
  1496. package/.agent/history/snapshots/test__unit__skill_evolution.test.js.json +0 -11
  1497. package/.agent/history/snapshots/test__unit__stress.test.js.json +0 -15
  1498. package/.agent/history/snapshots/test__unit__swarm_dispatcher.test.js.json +0 -12
  1499. package/.agent/history/snapshots/test__unit__token_budget_broker.test.js.json +0 -10
  1500. package/.agent/history/snapshots/test__unit__tui.test.js.json +0 -10
  1501. package/.agent/history/snapshots/test__unit__utils.test.js.json +0 -10
  1502. package/.agents/plugins/marketplace.json +0 -20
  1503. package/.claude/CLAUDE.md +0 -442
  1504. /package/{dist → src}/cli.js +0 -0
  1505. /package/{dist → src}/index.d.ts +0 -0
@@ -1,742 +1,782 @@
1
- #!/usr/bin/env node
2
- /**
3
- * memory_engine.js — Tribunal Kit 4-Type Taxonomy Persistent Memory Engine
4
- * ==============================================================================
5
- * Persistent, file-backed memory storage with atomic locking, budget-constrained
6
- * recall, and human-readable MEMORY.md projection.
7
- *
8
- * Fully unified and cross-compatible with:
9
- * - Rust Core: crates/core/src/commands/memory.rs
10
- * - TypeScript CLI: dist/commands/memory.js
11
- * - Tribunal MCP Server
12
- *
13
- * Memory Types:
14
- * - semantic: Permanent project facts and rules (no expiration)
15
- * - procedural: How-to recipes and steps (no expiration)
16
- * - episodic: Session events and decisions (auto-decays after 30 days)
17
- * - working: Current session scratchpad (cleared on gc/session reset)
18
- *
19
- * Storage Architecture:
20
- * - Index: .agent/history/memory/.memory.idx (atomic JSON index)
21
- * - Projection: .agent/history/memory/MEMORY.md (human-readable markdown)
22
- * - Lock: .agent/history/memory/.memory.idx.lock
23
- *
24
- * Zero external dependencies beyond native Node.js core modules.
25
- */
26
-
27
- 'use strict';
28
-
29
- const fs = require('fs');
30
- const path = require('path');
31
-
32
- // ─── Constants & Configuration ────────────────────────────────────────────────
33
-
34
- const MEMORY_DIR = path.join('history', 'memory');
35
- const INDEX_FILE = '.memory.idx';
36
- const PROJECTION_FILE = 'MEMORY.md';
37
- const MAX_ENTRIES = 500;
38
- const EPISODIC_TTL_DAYS = 30;
39
- const DEFAULT_BUDGET = 2000;
40
-
41
- const MEMORY_TYPES = {
42
- SEMANTIC: 'semantic',
43
- PROCEDURAL: 'procedural',
44
- EPISODIC: 'episodic',
45
- WORKING: 'working',
46
- };
47
-
48
- const VALID_TYPES = Object.values(MEMORY_TYPES);
49
-
50
- const TYPE_PRIORITY = {
51
- semantic: 1.0,
52
- procedural: 0.9,
53
- episodic: 0.7,
54
- working: 0.5,
55
- };
56
-
57
- // ─── Utility Helpers ──────────────────────────────────────────────────────────
58
-
59
- function estimateTokens(text) {
60
- if (!text) return 0;
61
- return Math.ceil(text.length / 4);
62
- }
63
-
64
- function nowEpochStr() {
65
- return `${Math.floor(Date.now() / 1000)}Z`;
66
- }
67
-
68
- function daysSince(ts) {
69
- if (!ts) return 0;
70
- const created = parseInt(String(ts).replace('Z', ''), 10) || 0;
71
- const now = Math.floor(Date.now() / 1000);
72
- return Math.max(0, Math.floor((now - created) / 86400));
73
- }
74
-
75
- // ─── Lock Management ──────────────────────────────────────────────────────────
76
-
77
- function acquireLock(indexPath) {
78
- const lockPath = indexPath + '.lock';
79
- const maxRetries = 10;
80
- for (let i = 0; i < maxRetries; i++) {
81
- try {
82
- const fd = fs.openSync(lockPath, 'wx');
83
- fs.closeSync(fd);
84
- return lockPath;
85
- } catch (err) {
86
- if (err.code !== 'EEXIST') {
87
- throw err;
88
- }
89
- const waitBuf = new Int32Array(new SharedArrayBuffer(4));
90
- Atomics.wait(waitBuf, 0, 0, 50);
91
- }
92
- }
93
-
94
- // Check for stale lock (older than 10s)
95
- try {
96
- const stats = fs.statSync(lockPath);
97
- if (Date.now() - stats.mtimeMs > 10000) {
98
- fs.unlinkSync(lockPath);
99
- const fd = fs.openSync(lockPath, 'wx');
100
- fs.closeSync(fd);
101
- return lockPath;
102
- }
103
- } catch {}
104
-
105
- throw new Error('Could not acquire lock for memory index');
106
- }
107
-
108
- function releaseLock(lockPath) {
109
- try {
110
- if (lockPath && fs.existsSync(lockPath)) {
111
- fs.unlinkSync(lockPath);
112
- }
113
- } catch {}
114
- }
115
-
116
- // ─── Scoring Engine ───────────────────────────────────────────────────────────
117
-
118
- function computeScore(entry, query) {
119
- if (!query || !entry.content) return 0;
120
- const queryLower = query.toLowerCase();
121
- const contentLower = entry.content.toLowerCase();
122
-
123
- let relevance = 0;
124
- if (contentLower.includes(queryLower)) {
125
- relevance = 1.0;
126
- } else if (entry.tags && entry.tags.some(t => t.toLowerCase().includes(queryLower))) {
127
- relevance = 0.8;
128
- } else if (queryLower.split(/\s+/).some(word => word.length > 2 && contentLower.includes(word))) {
129
- relevance = 0.3;
130
- }
131
-
132
- if (relevance === 0) return 0;
133
-
134
- const priority = entry.priority != null ? entry.priority : (TYPE_PRIORITY[entry.memory_type] || 0.5);
135
- let recency = 0;
136
- if (entry.memory_type === 'episodic') {
137
- const age = daysSince(entry.created_at);
138
- recency = Math.exp(-age / 30);
139
- }
140
- const freqBoost = Math.max(0, Math.log(entry.access_count || 1)) * 0.05;
141
-
142
- return (relevance * priority) + recency + freqBoost;
143
- }
144
-
145
- // ─── Memory Engine Class ──────────────────────────────────────────────────────
146
-
147
- class MemoryEngine {
148
- /**
149
- * Initialize the Memory Engine.
150
- * @param {string} agentDir - Path to .agent/ directory or workspace root
151
- * @param {object} [options] - Configuration options
152
- */
153
- constructor(agentDir, options = {}) {
154
- let resolved = path.resolve(agentDir || process.cwd());
155
- // Auto-detect .agent directory if parent workspace given
156
- if (!resolved.endsWith('.agent') && !resolved.endsWith('.agent' + path.sep)) {
157
- const nested = path.join(resolved, '.agent');
158
- if (fs.existsSync(nested) && fs.statSync(nested).isDirectory()) {
159
- resolved = nested;
160
- }
161
- }
162
-
163
- this.agentDir = resolved;
164
- this.memoryDir = path.join(this.agentDir, MEMORY_DIR);
165
- this.indexPath = path.join(this.memoryDir, INDEX_FILE);
166
- this.projectionPath = path.join(this.memoryDir, PROJECTION_FILE);
167
- this.options = {
168
- defaultTTL: EPISODIC_TTL_DAYS * 24 * 60 * 60 * 1000,
169
- maxEntries: MAX_ENTRIES,
170
- ...options,
171
- };
172
-
173
- if (!fs.existsSync(this.memoryDir)) {
174
- fs.mkdirSync(this.memoryDir, { recursive: true });
175
- }
176
- }
177
-
178
- /**
179
- * Load index from disk safely.
180
- * @returns {{ version: number, entries: Array<object>, next_id: number }}
181
- */
182
- loadIndex() {
183
- if (!fs.existsSync(this.indexPath)) {
184
- return { version: 1, entries: [], next_id: 1 };
185
- }
186
- try {
187
- const content = fs.readFileSync(this.indexPath, 'utf8');
188
- return JSON.parse(content);
189
- } catch {
190
- return { version: 1, entries: [], next_id: 1 };
191
- }
192
- }
193
-
194
- /**
195
- * Atomically persist index to disk.
196
- * @param {object} index
197
- */
198
- saveIndex(index) {
199
- fs.mkdirSync(this.memoryDir, { recursive: true });
200
- const tmpPath = this.indexPath + '.tmp';
201
- fs.writeFileSync(tmpPath, JSON.stringify(index, null, 2), 'utf8');
202
- fs.renameSync(tmpPath, this.indexPath);
203
- }
204
-
205
- /**
206
- * Store a new memory entry.
207
- * @param {string} type - 'semantic' | 'procedural' | 'episodic' | 'working'
208
- * @param {string} content - Memory content
209
- * @param {string[]} [tags] - Searchable tags
210
- * @param {object} [options] - Additional options (priority, source, sessionId)
211
- * @returns {{ id: number, type: string, token_estimate: number }}
212
- */
213
- store(type, content, tags = [], options = {}) {
214
- if (!VALID_TYPES.includes(type)) {
215
- throw new Error(`Invalid memory type: "${type}". Must be one of: ${VALID_TYPES.join(', ')}`);
216
- }
217
-
218
- if (!content || typeof content !== 'string' || content.trim().length === 0) {
219
- throw new Error('Memory content cannot be empty');
220
- }
221
-
222
- const lockPath = acquireLock(this.indexPath);
223
- try {
224
- const index = this.loadIndex();
225
-
226
- // Enforce capacity (500)
227
- if (index.entries.length >= this.options.maxEntries) {
228
- index.entries = index.entries.filter(e => e.memory_type !== 'working');
229
- if (index.entries.length >= this.options.maxEntries) {
230
- index.entries = index.entries.filter(e => {
231
- if (e.memory_type === 'episodic') {
232
- return daysSince(e.created_at) < EPISODIC_TTL_DAYS;
233
- }
234
- return true;
235
- });
236
- }
237
- if (index.entries.length >= this.options.maxEntries) {
238
- throw new Error(`Memory at capacity (${this.options.maxEntries}). Run: tk memory gc`);
239
- }
240
- }
241
-
242
- const now = nowEpochStr();
243
- const nextId = index.next_id || (index.entries.length > 0 ? Math.max(...index.entries.map(e => e.id)) + 1 : 1);
244
- const cleanTags = Array.isArray(tags)
245
- ? tags.filter(t => typeof t === 'string' && t.trim().length > 0).map(t => t.trim())
246
- : [];
247
-
248
- const entry = {
249
- id: nextId,
250
- memory_type: type,
251
- content: content.trim(),
252
- tags: cleanTags,
253
- created_at: now,
254
- last_accessed: now,
255
- access_count: 0,
256
- token_estimate: estimateTokens(content),
257
- source: options.source || (type === 'working' ? 'session' : 'manual'),
258
- session_id: options.sessionId || options.session_id || null,
259
- priority: typeof options.priority === 'number' ? options.priority : 1.0,
260
- };
261
-
262
- index.entries.push(entry);
263
- index.next_id = nextId + 1;
264
-
265
- this.saveIndex(index);
266
- this.generateProjection(index);
267
-
268
- return {
269
- id: entry.id,
270
- type: entry.memory_type,
271
- token_estimate: entry.token_estimate,
272
- };
273
- } finally {
274
- releaseLock(lockPath);
275
- }
276
- }
277
-
278
- /**
279
- * Recall memories matching a query within a token budget.
280
- * @param {string} query - Search query
281
- * @param {number} [budget] - Token budget (default 2000)
282
- * @returns {{ results: Array<object>, tokens_used: number, budget: number }}
283
- */
284
- recall(query, budget = DEFAULT_BUDGET) {
285
- const lockPath = acquireLock(this.indexPath);
286
- try {
287
- const index = this.loadIndex();
288
-
289
- const scored = index.entries
290
- .map(entry => ({ entry, score: computeScore(entry, query) }))
291
- .filter(s => s.score > 0)
292
- .sort((a, b) => b.score - a.score);
293
-
294
- let totalTokens = 0;
295
- const results = [];
296
- let indexModified = false;
297
-
298
- for (const { entry, score } of scored) {
299
- if (totalTokens + entry.token_estimate > budget) break;
300
- totalTokens += entry.token_estimate;
301
-
302
- entry.last_accessed = nowEpochStr();
303
- entry.access_count = (entry.access_count || 0) + 1;
304
- indexModified = true;
305
-
306
- results.push({
307
- id: entry.id,
308
- memory_type: entry.memory_type,
309
- content: entry.content,
310
- tags: entry.tags || [],
311
- priority: entry.priority != null ? entry.priority : 1.0,
312
- score,
313
- token_estimate: entry.token_estimate,
314
- created_at: entry.created_at,
315
- last_accessed: entry.last_accessed,
316
- access_count: entry.access_count,
317
- });
318
- }
319
-
320
- if (indexModified) {
321
- this.saveIndex(index);
322
- }
323
-
324
- return { results, tokens_used: totalTokens, budget };
325
- } finally {
326
- releaseLock(lockPath);
327
- }
328
- }
329
-
330
- /**
331
- * Retrieve a specific memory entry by ID.
332
- * @param {number} id
333
- * @returns {object|null}
334
- */
335
- get(id) {
336
- const targetId = Number(id);
337
- const index = this.loadIndex();
338
- const entry = index.entries.find(e => e.id === targetId);
339
- if (!entry) return null;
340
-
341
- return {
342
- id: entry.id,
343
- memory_type: entry.memory_type,
344
- content: entry.content,
345
- tags: entry.tags || [],
346
- priority: entry.priority != null ? entry.priority : 1.0,
347
- created_at: entry.created_at,
348
- last_accessed: entry.last_accessed,
349
- access_count: entry.access_count || 0,
350
- token_estimate: entry.token_estimate,
351
- source: entry.source,
352
- session_id: entry.session_id,
353
- };
354
- }
355
-
356
- /**
357
- * Delete a memory entry by ID.
358
- * @param {number} id
359
- * @returns {boolean} True if deleted, false if not found
360
- */
361
- delete(id) {
362
- const targetId = Number(id);
363
- const lockPath = acquireLock(this.indexPath);
364
- try {
365
- const index = this.loadIndex();
366
- const before = index.entries.length;
367
- index.entries = index.entries.filter(e => e.id !== targetId);
368
-
369
- if (index.entries.length === before) {
370
- return false;
371
- }
372
-
373
- this.saveIndex(index);
374
- this.generateProjection(index);
375
- return true;
376
- } finally {
377
- releaseLock(lockPath);
378
- }
379
- }
380
-
381
- /**
382
- * Clear all working memories (session scratchpad).
383
- * @returns {number} Number of cleared entries
384
- */
385
- clearWorking() {
386
- const lockPath = acquireLock(this.indexPath);
387
- try {
388
- const index = this.loadIndex();
389
- const before = index.entries.length;
390
- index.entries = index.entries.filter(e => e.memory_type !== 'working');
391
- const removed = before - index.entries.length;
392
-
393
- if (removed > 0) {
394
- this.saveIndex(index);
395
- this.generateProjection(index);
396
- }
397
-
398
- return removed;
399
- } finally {
400
- releaseLock(lockPath);
401
- }
402
- }
403
-
404
- /**
405
- * Expire old memories and perform garbage collection.
406
- * Clears all working memories and episodic memories older than 30 days.
407
- * @returns {{ working_removed: number, episodic_removed: number, before: number, after: number }}
408
- */
409
- expire() {
410
- const lockPath = acquireLock(this.indexPath);
411
- try {
412
- const index = this.loadIndex();
413
- const before = index.entries.length;
414
-
415
- let workingRemoved = 0;
416
- let episodicRemoved = 0;
417
-
418
- index.entries = index.entries.filter(e => {
419
- if (e.memory_type === 'working') {
420
- workingRemoved++;
421
- return false;
422
- }
423
- if (e.memory_type === 'episodic' && daysSince(e.created_at) >= EPISODIC_TTL_DAYS) {
424
- episodicRemoved++;
425
- return false;
426
- }
427
- return true;
428
- });
429
-
430
- this.saveIndex(index);
431
- this.generateProjection(index);
432
-
433
- return {
434
- working_removed: workingRemoved,
435
- episodic_removed: episodicRemoved,
436
- before,
437
- after: index.entries.length,
438
- };
439
- } finally {
440
- releaseLock(lockPath);
441
- }
442
- }
443
-
444
- /**
445
- * Alias for expire() to match CLI terminology.
446
- */
447
- gc() {
448
- return this.expire();
449
- }
450
-
451
- /**
452
- * Compute memory statistics.
453
- * @returns {object}
454
- */
455
- stats() {
456
- const index = this.loadIndex();
457
- const total = index.entries.length;
458
- const semantic = index.entries.filter(e => e.memory_type === 'semantic').length;
459
- const procedural = index.entries.filter(e => e.memory_type === 'procedural').length;
460
- const episodic = index.entries.filter(e => e.memory_type === 'episodic').length;
461
- const working = index.entries.filter(e => e.memory_type === 'working').length;
462
- const totalTokens = index.entries.reduce((sum, e) => sum + (e.token_estimate || 0), 0);
463
-
464
- const byType = {};
465
- for (const type of VALID_TYPES) {
466
- const typeEntries = index.entries.filter(e => e.memory_type === type);
467
- const typeChars = typeEntries.reduce((sum, e) => sum + (e.content ? e.content.length : 0), 0);
468
- const typeTokens = typeEntries.reduce((sum, e) => sum + (e.token_estimate || 0), 0);
469
- byType[type] = {
470
- count: typeEntries.length,
471
- total_chars: typeChars,
472
- estimated_tokens: typeTokens,
473
- };
474
- }
475
-
476
- return {
477
- total,
478
- semantic,
479
- procedural,
480
- episodic,
481
- working,
482
- total_tokens: totalTokens,
483
- capacity: this.options.maxEntries,
484
- by_type: byType,
485
- };
486
- }
487
-
488
- /**
489
- * Generate human-readable Markdown projection (MEMORY.md).
490
- * @param {object} [index]
491
- * @returns {string} Absolute path to projection file
492
- */
493
- generateProjection(index) {
494
- if (!index) index = this.loadIndex();
495
-
496
- let md = '# 🧠 Tribunal Memory Index\n';
497
- md += '> Auto-generated by `tribunal-kit memory export`. Do not edit manually.\n';
498
-
499
- const sem = index.entries.filter(e => e.memory_type === 'semantic');
500
- const proc = index.entries.filter(e => e.memory_type === 'procedural');
501
- const ep = index.entries.filter(e => e.memory_type === 'episodic');
502
- const work = index.entries.filter(e => e.memory_type === 'working');
503
-
504
- md += `> Entries: ${index.entries.length} | Semantic: ${sem.length} | Procedural: ${proc.length} | Episodic: ${ep.length} | Working: ${work.length}\n\n`;
505
-
506
- if (sem.length > 0) {
507
- md += '## SEMANTIC (Permanent Facts)\n';
508
- md += '| ID | Content | Tags | Source | Created |\n';
509
- md += '|----|---------|------|--------|---------|\n';
510
- for (const e of sem) {
511
- md += `| ${e.id} | ${e.content.replace(/\|/g, '\\|')} | ${(e.tags || []).join(', ')} | ${e.source || 'manual'} | ${e.created_at} |\n`;
512
- }
513
- md += '\n';
514
- }
515
-
516
- if (proc.length > 0) {
517
- md += '## PROCEDURAL (How-To Recipes)\n';
518
- md += '| ID | Content | Tags | Source | Created |\n';
519
- md += '|----|---------|------|--------|---------|\n';
520
- for (const e of proc) {
521
- md += `| ${e.id} | ${e.content.replace(/\|/g, '\\|')} | ${(e.tags || []).join(', ')} | ${e.source || 'manual'} | ${e.created_at} |\n`;
522
- }
523
- md += '\n';
524
- }
525
-
526
- if (ep.length > 0) {
527
- md += '## EPISODIC (Session History — auto-decays after 30 days)\n';
528
- md += '| ID | Content | Tags | Source | Created | Days Remaining |\n';
529
- md += '|----|---------|------|--------|---------|----------------|\n';
530
- for (const e of ep) {
531
- const remaining = Math.max(0, EPISODIC_TTL_DAYS - daysSince(e.created_at));
532
- md += `| ${e.id} | ${e.content.replace(/\|/g, '\\|')} | ${(e.tags || []).join(', ')} | ${e.source || 'manual'} | ${e.created_at} | ${remaining} |\n`;
533
- }
534
- md += '\n';
535
- }
536
-
537
- if (work.length > 0) {
538
- md += '## WORKING (Current Session — cleared on GC)\n';
539
- md += '| ID | Content | Tags | Session |\n';
540
- md += '|----|---------|------|---------|\n';
541
- for (const e of work) {
542
- md += `| ${e.id} | ${e.content.replace(/\|/g, '\\|')} | ${(e.tags || []).join(', ')} | ${e.session_id || '—'} |\n`;
543
- }
544
- md += '\n';
545
- }
546
-
547
- if (index.entries.length === 0) {
548
- md += '*No memories recorded yet. Run `tk memory store` to add your first memory.*\n';
549
- }
550
-
551
- fs.mkdirSync(path.dirname(this.projectionPath), { recursive: true });
552
- fs.writeFileSync(this.projectionPath, md, 'utf8');
553
-
554
- return this.projectionPath;
555
- }
556
-
557
- /**
558
- * Export the markdown projection text.
559
- * @returns {string}
560
- */
561
- export() {
562
- this.generateProjection();
563
- return fs.readFileSync(this.projectionPath, 'utf8');
564
- }
565
-
566
- /**
567
- * Estimate token count.
568
- * @param {string} text
569
- * @returns {number}
570
- */
571
- estimateTokens(text) {
572
- return estimateTokens(text);
573
- }
574
-
575
- /**
576
- * Close connection (no-op for file-backed storage, preserved for API parity).
577
- */
578
- close() {
579
- // No-op for file-backed engine
580
- }
581
- }
582
-
583
- // ─── Module Exports ────────────────────────────────────────────────────────────
584
-
585
- module.exports = {
586
- MemoryEngine,
587
- MEMORY_TYPES,
588
- VALID_TYPES,
589
- TYPE_PRIORITY,
590
- estimateTokens,
591
- };
592
-
593
- // ─── CLI Entry Point ───────────────────────────────────────────────────────────
594
-
595
- if (require.main === module) {
596
- const args = process.argv.slice(2);
597
-
598
- if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
599
- console.log(`
600
- \x1b[1mmemory_engine.js\x1b[0m — Tribunal Kit 4-Type Taxonomy Persistent Memory Engine
601
-
602
- \x1b[1mUsage:\x1b[0m
603
- node .agent/scripts/memory_engine.js store <type> <content> [--tags tag1,tag2] [--source manual]
604
- node .agent/scripts/memory_engine.js recall <query> [--budget 2000]
605
- node .agent/scripts/memory_engine.js get <id>
606
- node .agent/scripts/memory_engine.js delete <id>
607
- node .agent/scripts/memory_engine.js stats
608
- node .agent/scripts/memory_engine.js expire
609
- node .agent/scripts/memory_engine.js gc
610
- node .agent/scripts/memory_engine.js export
611
-
612
- \x1b[1mMemory Types:\x1b[0m
613
- semantic — Permanent facts (no expiration)
614
- procedural — How-to recipes (no expiration)
615
- episodic — Events with 30-day TTL
616
- working — Session scratch (cleared on GC)
617
-
618
- \x1b[1mExamples:\x1b[0m
619
- node .agent/scripts/memory_engine.js store semantic "User prefers TypeScript strict mode" --tags typescript,preference
620
- node .agent/scripts/memory_engine.js recall "typescript" --budget 1000
621
- node .agent/scripts/memory_engine.js stats
622
- `);
623
- process.exit(0);
624
- }
625
-
626
- let agentDir = null;
627
- try {
628
- const { findAgentDir } = require('./_utils');
629
- agentDir = findAgentDir();
630
- } catch (_) {
631
- agentDir = path.resolve(process.cwd(), '.agent');
632
- }
633
-
634
- const mem = new MemoryEngine(agentDir);
635
- const command = args[0];
636
-
637
- try {
638
- switch (command) {
639
- case 'store': {
640
- const type = args[1];
641
- const content = args[2];
642
- const tagsIdx = args.indexOf('--tags');
643
- const tags =
644
- tagsIdx !== -1 && args[tagsIdx + 1]
645
- ? args[tagsIdx + 1].split(',').map(t => t.trim())
646
- : [];
647
- const sourceIdx = args.indexOf('--source');
648
- const source = sourceIdx !== -1 && args[sourceIdx + 1] ? args[sourceIdx + 1] : undefined;
649
-
650
- const result = mem.store(type, content, tags, { source });
651
- console.log(
652
- `\x1b[32m✓\x1b[0m Memory stored: #${result.id} (${result.type}, ~${result.token_estimate} tokens)`,
653
- );
654
- break;
655
- }
656
-
657
- case 'recall': {
658
- const query = args[1];
659
- if (!query) {
660
- console.error('\x1b[31m✖ Missing search query\x1b[0m');
661
- process.exit(1);
662
- }
663
- const budgetIdx = args.indexOf('--budget');
664
- const budget =
665
- budgetIdx !== -1 && args[budgetIdx + 1] ? parseInt(args[budgetIdx + 1], 10) : 2000;
666
-
667
- const { results, tokens_used } = mem.recall(query, budget);
668
- console.log(
669
- `\n## Memory Recall (${results.length} results, ~${tokens_used}/${budget} tokens)\n`,
670
- );
671
- for (const entry of results) {
672
- console.log(`- **[${entry.memory_type.toUpperCase()}]** #${entry.id}: ${entry.content}`);
673
- if (entry.tags && entry.tags.length > 0) console.log(` _(${entry.tags.join(', ')})_`);
674
- }
675
- break;
676
- }
677
-
678
- case 'get': {
679
- const id = parseInt(args[1], 10);
680
- const result = mem.get(id);
681
- if (!result) {
682
- console.error(`\x1b[31m✖ Memory #${id} not found\x1b[0m`);
683
- process.exit(1);
684
- }
685
- console.log(JSON.stringify(result, null, 2));
686
- break;
687
- }
688
-
689
- case 'delete': {
690
- const id = parseInt(args[1], 10);
691
- const deleted = mem.delete(id);
692
- if (deleted) {
693
- console.log(`\x1b[32m✓\x1b[0m Memory #${id} deleted`);
694
- } else {
695
- console.error(`\x1b[31m✖ Memory #${id} not found\x1b[0m`);
696
- process.exit(1);
697
- }
698
- break;
699
- }
700
-
701
- case 'stats': {
702
- const stats = mem.stats();
703
- console.log(`\n## Memory Statistics\n`);
704
- console.log(`Total memories: ${stats.total}`);
705
- for (const [type, data] of Object.entries(stats.by_type)) {
706
- console.log(` ${type}: ${data.count} (~${data.estimated_tokens} tokens)`);
707
- }
708
- break;
709
- }
710
-
711
- case 'gc':
712
- case 'expire': {
713
- const res = mem.expire();
714
- console.log(
715
- `\x1b[32m✓\x1b[0m Memory GC complete: ${res.working_removed} working, ${res.episodic_removed} episodic removed (${res.before} -> ${res.after})`,
716
- );
717
- break;
718
- }
719
-
720
- case 'clear-working': {
721
- const cleared = mem.clearWorking();
722
- console.log(`\x1b[32m✓\x1b[0m Cleared ${cleared} working memory entries`);
723
- break;
724
- }
725
-
726
- case 'export': {
727
- const proj = mem.export();
728
- console.log(proj);
729
- break;
730
- }
731
-
732
- default:
733
- console.error(`\x1b[31m✖ Unknown command: ${command}\x1b[0m`);
734
- process.exit(1);
735
- }
736
- } catch (err) {
737
- console.error(`\x1b[31m✖ Error: ${err.message}\x1b[0m`);
738
- process.exit(1);
739
- } finally {
740
- mem.close();
741
- }
742
- }
1
+ #!/usr/bin/env node
2
+ /**
3
+ * memory_engine.js — Tribunal Kit 4-Type Taxonomy Persistent Memory Engine
4
+ * ==============================================================================
5
+ * Persistent, file-backed memory storage with atomic locking, budget-constrained
6
+ * recall, and human-readable MEMORY.md projection.
7
+ *
8
+ * Fully unified and cross-compatible with:
9
+ * - Rust Core: crates/core/src/commands/memory.rs
10
+ * - TypeScript CLI: src/commands/memory.js
11
+ * - Tribunal MCP Server
12
+ *
13
+ * Memory Types:
14
+ * - semantic: Permanent project facts and rules (no expiration)
15
+ * - procedural: How-to recipes and steps (no expiration)
16
+ * - episodic: Session events and decisions (auto-decays after 30 days)
17
+ * - working: Current session scratchpad (cleared on gc/session reset)
18
+ *
19
+ * Storage Architecture:
20
+ * - Index: .agent/history/memory/.memory.idx (atomic JSON index)
21
+ * - Projection: .agent/history/memory/MEMORY.md (human-readable markdown)
22
+ * - Lock: .agent/history/memory/.memory.idx.lock
23
+ *
24
+ * Zero external dependencies beyond native Node.js core modules.
25
+ */
26
+
27
+ 'use strict';
28
+
29
+ const fs = require('fs');
30
+ const path = require('path');
31
+
32
+ // ─── Constants & Configuration ────────────────────────────────────────────────
33
+
34
+ const MEMORY_DIR = path.join('history', 'memory');
35
+ const INDEX_FILE = '.memory.idx';
36
+ const PROJECTION_FILE = 'MEMORY.md';
37
+ const MAX_ENTRIES = 500;
38
+ const EPISODIC_TTL_DAYS = 30;
39
+ const DEFAULT_BUDGET = 2000;
40
+
41
+ const MEMORY_TYPES = {
42
+ SEMANTIC: 'semantic',
43
+ PROCEDURAL: 'procedural',
44
+ EPISODIC: 'episodic',
45
+ WORKING: 'working',
46
+ };
47
+
48
+ const VALID_TYPES = Object.values(MEMORY_TYPES);
49
+
50
+ const TYPE_PRIORITY = {
51
+ semantic: 1.0,
52
+ procedural: 0.9,
53
+ episodic: 0.7,
54
+ working: 0.5,
55
+ };
56
+
57
+ // ─── Utility Helpers ──────────────────────────────────────────────────────────
58
+
59
+ function estimateTokens(text) {
60
+ if (!text) return 0;
61
+ return Math.ceil(text.length / 4);
62
+ }
63
+
64
+ function nowEpochStr() {
65
+ return `${Math.floor(Date.now() / 1000)}Z`;
66
+ }
67
+
68
+ function daysSince(ts) {
69
+ if (!ts) return 0;
70
+ const created = parseInt(String(ts).replace('Z', ''), 10) || 0;
71
+ const now = Math.floor(Date.now() / 1000);
72
+ return Math.max(0, Math.floor((now - created) / 86400));
73
+ }
74
+
75
+ // ─── Lock Management ──────────────────────────────────────────────────────────
76
+
77
+ function acquireLock(indexPath) {
78
+ const lockPath = indexPath + '.lock';
79
+ const maxRetries = 10;
80
+ for (let i = 0; i < maxRetries; i++) {
81
+ try {
82
+ const fd = fs.openSync(lockPath, 'wx');
83
+ fs.closeSync(fd);
84
+ return lockPath;
85
+ } catch (err) {
86
+ if (err.code !== 'EEXIST') {
87
+ throw err;
88
+ }
89
+ const waitBuf = new Int32Array(new SharedArrayBuffer(4));
90
+ Atomics.wait(waitBuf, 0, 0, 50);
91
+ }
92
+ }
93
+
94
+ // Check for stale lock (older than 10s)
95
+ try {
96
+ const stats = fs.statSync(lockPath);
97
+ if (Date.now() - stats.mtimeMs > 10000) {
98
+ fs.unlinkSync(lockPath);
99
+ const fd = fs.openSync(lockPath, 'wx');
100
+ fs.closeSync(fd);
101
+ return lockPath;
102
+ }
103
+ } catch {}
104
+
105
+ throw new Error('Could not acquire lock for memory index');
106
+ }
107
+
108
+ function releaseLock(lockPath) {
109
+ try {
110
+ if (lockPath && fs.existsSync(lockPath)) {
111
+ fs.unlinkSync(lockPath);
112
+ }
113
+ } catch {}
114
+ }
115
+
116
+ // ─── Scoring Engine ───────────────────────────────────────────────────────────
117
+
118
+ function computeScore(entry, query, corpus = []) {
119
+ if (!query || !entry.content) return 0;
120
+ const queryWords = query.toLowerCase().split(/\s+/).filter(w => w.length > 2);
121
+ if (queryWords.length === 0) return 0;
122
+ const contentLower = entry.content.toLowerCase();
123
+
124
+ let relevance = 0;
125
+ const k1 = 1.2;
126
+ const b = 0.75;
127
+ const avgdl_raw = corpus.length > 0 ? corpus.reduce((sum, e) => sum + (e.content ? e.content.length : 0), 0) / corpus.length : 100;
128
+ const avgdl = avgdl_raw || 100;
129
+ const dl = contentLower.length;
130
+
131
+ for (const word of queryWords) {
132
+ const termFreq = contentLower.split(word).length - 1;
133
+ if (termFreq === 0 && (!entry.tags || !entry.tags.some(t => t.toLowerCase().includes(word)))) continue;
134
+
135
+ // Effective TF including tag boost
136
+ const tf = termFreq + (entry.tags && entry.tags.some(t => t.toLowerCase().includes(word)) ? 2 : 0);
137
+
138
+ const docFreq = corpus.filter(e => e.content && e.content.toLowerCase().includes(word)).length;
139
+ // IDF
140
+ const idf = Math.log((corpus.length - docFreq + 0.5) / (docFreq + 0.5) + 1.0);
141
+
142
+ relevance += idf * (tf * (k1 + 1)) / (tf + k1 * (1 - b + b * (dl / avgdl)));
143
+ }
144
+
145
+ // Exact phrase match bonus
146
+ if (contentLower.includes(query.toLowerCase())) {
147
+ relevance += 2.0;
148
+ }
149
+
150
+ if (relevance === 0) return 0;
151
+
152
+ const priority = entry.priority != null ? entry.priority : (TYPE_PRIORITY[entry.memory_type] || 0.5);
153
+ const confidence = typeof entry.confidence === 'number' ? entry.confidence : 1.0;
154
+
155
+ let recency = 0;
156
+ if (entry.memory_type === 'episodic') {
157
+ const age = daysSince(entry.created_at);
158
+ recency = Math.exp(-age / 30);
159
+ }
160
+ const freqBoost = Math.max(0, Math.log(entry.access_count || 1)) * 0.05;
161
+
162
+ return (relevance * priority * confidence) + recency + freqBoost;
163
+ }
164
+
165
+ // ─── Memory Engine Class ──────────────────────────────────────────────────────
166
+
167
+ class MemoryEngine {
168
+ /**
169
+ * Initialize the Memory Engine.
170
+ * @param {string} agentDir - Path to .agent/ directory or workspace root
171
+ * @param {object} [options] - Configuration options
172
+ */
173
+ constructor(agentDir, options = {}) {
174
+ let resolved = path.resolve(agentDir || process.cwd());
175
+ // Auto-detect .agent directory if parent workspace given
176
+ if (!resolved.endsWith('.agent') && !resolved.endsWith('.agent' + path.sep)) {
177
+ const nested = path.join(resolved, '.agent');
178
+ if (fs.existsSync(nested) && fs.statSync(nested).isDirectory()) {
179
+ resolved = nested;
180
+ }
181
+ }
182
+
183
+ this.agentDir = resolved;
184
+ this.memoryDir = path.join(this.agentDir, MEMORY_DIR);
185
+ this.indexPath = path.join(this.memoryDir, INDEX_FILE);
186
+ this.projectionPath = path.join(this.memoryDir, PROJECTION_FILE);
187
+ this.options = {
188
+ defaultTTL: EPISODIC_TTL_DAYS * 24 * 60 * 60 * 1000,
189
+ maxEntries: MAX_ENTRIES,
190
+ ...options,
191
+ };
192
+
193
+ if (!fs.existsSync(this.memoryDir)) {
194
+ fs.mkdirSync(this.memoryDir, { recursive: true });
195
+ }
196
+ }
197
+
198
+ /**
199
+ * Load index from disk safely.
200
+ * @returns {{ version: number, entries: Array<object>, next_id: number }}
201
+ */
202
+ loadIndex() {
203
+ if (!fs.existsSync(this.indexPath)) {
204
+ return { version: 1, entries: [], next_id: 1 };
205
+ }
206
+ try {
207
+ const content = fs.readFileSync(this.indexPath, 'utf8');
208
+ return JSON.parse(content);
209
+ } catch {
210
+ return { version: 1, entries: [], next_id: 1 };
211
+ }
212
+ }
213
+
214
+ /**
215
+ * Atomically persist index to disk.
216
+ * @param {object} index
217
+ */
218
+ saveIndex(index) {
219
+ fs.mkdirSync(this.memoryDir, { recursive: true });
220
+ const tmpPath = this.indexPath + '.tmp';
221
+ fs.writeFileSync(tmpPath, JSON.stringify(index, null, 2), 'utf8');
222
+ fs.renameSync(tmpPath, this.indexPath);
223
+ }
224
+
225
+ /**
226
+ * Store a new memory entry.
227
+ * @param {string} type - 'semantic' | 'procedural' | 'episodic' | 'working'
228
+ * @param {string} content - Memory content
229
+ * @param {string[]} [tags] - Searchable tags
230
+ * @param {object} [options] - Additional options (priority, source, sessionId)
231
+ * @returns {{ id: number, type: string, token_estimate: number }}
232
+ */
233
+ store(type, content, tags = [], options = {}) {
234
+ if (!VALID_TYPES.includes(type)) {
235
+ throw new Error(`Invalid memory type: "${type}". Must be one of: ${VALID_TYPES.join(', ')}`);
236
+ }
237
+
238
+ if (!content || typeof content !== 'string' || content.trim().length === 0) {
239
+ throw new Error('Memory content cannot be empty');
240
+ }
241
+
242
+ const lockPath = acquireLock(this.indexPath);
243
+ try {
244
+ const index = this.loadIndex();
245
+
246
+ // Enforce capacity (500)
247
+ if (index.entries.length >= this.options.maxEntries) {
248
+ index.entries = index.entries.filter(e => e.memory_type !== 'working');
249
+ if (index.entries.length >= this.options.maxEntries) {
250
+ index.entries = index.entries.filter(e => {
251
+ if (e.memory_type === 'episodic') {
252
+ return daysSince(e.created_at) < EPISODIC_TTL_DAYS;
253
+ }
254
+ return true;
255
+ });
256
+ }
257
+ if (index.entries.length >= this.options.maxEntries) {
258
+ throw new Error(`Memory at capacity (${this.options.maxEntries}). Run: tk memory gc`);
259
+ }
260
+ }
261
+
262
+ const now = nowEpochStr();
263
+ const nextId = index.next_id || (index.entries.length > 0 ? Math.max(...index.entries.map(e => e.id)) + 1 : 1);
264
+ const cleanTags = Array.isArray(tags)
265
+ ? tags.filter(t => typeof t === 'string' && t.trim().length > 0).map(t => t.trim())
266
+ : [];
267
+
268
+ const entry = {
269
+ id: nextId,
270
+ memory_type: type,
271
+ content: content.trim(),
272
+ tags: cleanTags,
273
+ created_at: now,
274
+ last_accessed: now,
275
+ access_count: 0,
276
+ token_estimate: estimateTokens(content),
277
+ source: options.source || (type === 'working' ? 'session' : 'manual'),
278
+ session_id: options.sessionId || options.session_id || null,
279
+ priority: typeof options.priority === 'number' ? options.priority : 1.0,
280
+ relations: Array.isArray(options.relations) ? options.relations : [],
281
+ confidence: typeof options.confidence === 'number' ? options.confidence : (options.source === 'learned' ? 0.5 : 1.0),
282
+ };
283
+
284
+ index.entries.push(entry);
285
+ index.next_id = nextId + 1;
286
+
287
+ this.saveIndex(index);
288
+ this.generateProjection(index);
289
+
290
+ return {
291
+ id: entry.id,
292
+ type: entry.memory_type,
293
+ token_estimate: entry.token_estimate,
294
+ };
295
+ } finally {
296
+ releaseLock(lockPath);
297
+ }
298
+ }
299
+
300
+ /**
301
+ * Recall memories matching a query within a token budget.
302
+ * @param {string} query - Search query
303
+ * @param {number} [budget] - Token budget (default 2000)
304
+ * @returns {{ results: Array<object>, tokens_used: number, budget: number }}
305
+ */
306
+ recall(query, budget = DEFAULT_BUDGET) {
307
+ const lockPath = acquireLock(this.indexPath);
308
+ try {
309
+ const index = this.loadIndex();
310
+
311
+ const scored = index.entries
312
+ .map(entry => ({ entry, score: computeScore(entry, query, index.entries) }))
313
+ .filter(s => s.score > 0);
314
+
315
+ // Apply relational boosting
316
+ for (const s of scored) {
317
+ if (s.entry.relations) {
318
+ for (const relId of s.entry.relations) {
319
+ const related = scored.find(r => String(r.entry.id) === String(relId));
320
+ if (related) {
321
+ related.score += s.score * 0.2; // 20% boost from incoming relation
322
+ }
323
+ }
324
+ }
325
+ }
326
+
327
+ scored.sort((a, b) => b.score - a.score);
328
+
329
+ let totalTokens = 0;
330
+ const results = [];
331
+ let indexModified = false;
332
+
333
+ for (const { entry, score } of scored) {
334
+ if (totalTokens + entry.token_estimate > budget) break;
335
+ totalTokens += entry.token_estimate;
336
+
337
+ entry.last_accessed = nowEpochStr();
338
+ entry.access_count = (entry.access_count || 0) + 1;
339
+ indexModified = true;
340
+
341
+ results.push({
342
+ id: entry.id,
343
+ memory_type: entry.memory_type,
344
+ content: entry.content,
345
+ tags: entry.tags || [],
346
+ priority: entry.priority != null ? entry.priority : 1.0,
347
+ score,
348
+ token_estimate: entry.token_estimate,
349
+ created_at: entry.created_at,
350
+ last_accessed: entry.last_accessed,
351
+ access_count: entry.access_count,
352
+ });
353
+ }
354
+
355
+ if (indexModified) {
356
+ this.saveIndex(index);
357
+ }
358
+
359
+ return { results, tokens_used: totalTokens, budget };
360
+ } finally {
361
+ releaseLock(lockPath);
362
+ }
363
+ }
364
+
365
+ /**
366
+ * Retrieve a specific memory entry by ID.
367
+ * @param {number} id
368
+ * @returns {object|null}
369
+ */
370
+ get(id) {
371
+ const targetId = Number(id);
372
+ const index = this.loadIndex();
373
+ const entry = index.entries.find(e => e.id === targetId);
374
+ if (!entry) return null;
375
+
376
+ return {
377
+ id: entry.id,
378
+ memory_type: entry.memory_type,
379
+ content: entry.content,
380
+ tags: entry.tags || [],
381
+ priority: entry.priority != null ? entry.priority : 1.0,
382
+ created_at: entry.created_at,
383
+ last_accessed: entry.last_accessed,
384
+ access_count: entry.access_count || 0,
385
+ token_estimate: entry.token_estimate,
386
+ source: entry.source,
387
+ session_id: entry.session_id,
388
+ relations: entry.relations || [],
389
+ confidence: typeof entry.confidence === 'number' ? entry.confidence : 1.0,
390
+ };
391
+ }
392
+
393
+ /**
394
+ * Delete a memory entry by ID.
395
+ * @param {number} id
396
+ * @returns {boolean} True if deleted, false if not found
397
+ */
398
+ delete(id) {
399
+ const targetId = Number(id);
400
+ const lockPath = acquireLock(this.indexPath);
401
+ try {
402
+ const index = this.loadIndex();
403
+ const before = index.entries.length;
404
+ index.entries = index.entries.filter(e => e.id !== targetId);
405
+
406
+ if (index.entries.length === before) {
407
+ return false;
408
+ }
409
+
410
+ this.saveIndex(index);
411
+ this.generateProjection(index);
412
+ return true;
413
+ } finally {
414
+ releaseLock(lockPath);
415
+ }
416
+ }
417
+
418
+ /**
419
+ * Clear all working memories (session scratchpad).
420
+ * @returns {number} Number of cleared entries
421
+ */
422
+ clearWorking() {
423
+ const lockPath = acquireLock(this.indexPath);
424
+ try {
425
+ const index = this.loadIndex();
426
+ const before = index.entries.length;
427
+ index.entries = index.entries.filter(e => e.memory_type !== 'working');
428
+ const removed = before - index.entries.length;
429
+
430
+ if (removed > 0) {
431
+ this.saveIndex(index);
432
+ this.generateProjection(index);
433
+ }
434
+
435
+ return removed;
436
+ } finally {
437
+ releaseLock(lockPath);
438
+ }
439
+ }
440
+
441
+ /**
442
+ * Expire old memories and perform garbage collection.
443
+ * Clears all working memories and episodic memories older than 30 days.
444
+ * @returns {{ working_removed: number, episodic_removed: number, before: number, after: number }}
445
+ */
446
+ expire() {
447
+ const lockPath = acquireLock(this.indexPath);
448
+ try {
449
+ const index = this.loadIndex();
450
+ const before = index.entries.length;
451
+
452
+ let workingRemoved = 0;
453
+ let episodicRemoved = 0;
454
+
455
+ index.entries = index.entries.filter(e => {
456
+ if (e.memory_type === 'working') {
457
+ workingRemoved++;
458
+ return false;
459
+ }
460
+ if (e.memory_type === 'episodic' && daysSince(e.created_at) >= EPISODIC_TTL_DAYS) {
461
+ episodicRemoved++;
462
+ return false;
463
+ }
464
+ return true;
465
+ });
466
+
467
+ this.saveIndex(index);
468
+ this.generateProjection(index);
469
+
470
+ return {
471
+ working_removed: workingRemoved,
472
+ episodic_removed: episodicRemoved,
473
+ before,
474
+ after: index.entries.length,
475
+ };
476
+ } finally {
477
+ releaseLock(lockPath);
478
+ }
479
+ }
480
+
481
+ /**
482
+ * Alias for expire() to match CLI terminology.
483
+ */
484
+ gc() {
485
+ return this.expire();
486
+ }
487
+
488
+ /**
489
+ * Compute memory statistics.
490
+ * @returns {object}
491
+ */
492
+ stats() {
493
+ const index = this.loadIndex();
494
+ const total = index.entries.length;
495
+ const semantic = index.entries.filter(e => e.memory_type === 'semantic').length;
496
+ const procedural = index.entries.filter(e => e.memory_type === 'procedural').length;
497
+ const episodic = index.entries.filter(e => e.memory_type === 'episodic').length;
498
+ const working = index.entries.filter(e => e.memory_type === 'working').length;
499
+ const totalTokens = index.entries.reduce((sum, e) => sum + (e.token_estimate || 0), 0);
500
+
501
+ const byType = {};
502
+ for (const type of VALID_TYPES) {
503
+ const typeEntries = index.entries.filter(e => e.memory_type === type);
504
+ const typeChars = typeEntries.reduce((sum, e) => sum + (e.content ? e.content.length : 0), 0);
505
+ const typeTokens = typeEntries.reduce((sum, e) => sum + (e.token_estimate || 0), 0);
506
+ byType[type] = {
507
+ count: typeEntries.length,
508
+ total_chars: typeChars,
509
+ estimated_tokens: typeTokens,
510
+ };
511
+ }
512
+
513
+ return {
514
+ total,
515
+ semantic,
516
+ procedural,
517
+ episodic,
518
+ working,
519
+ total_tokens: totalTokens,
520
+ capacity: this.options.maxEntries,
521
+ by_type: byType,
522
+ };
523
+ }
524
+
525
+ /**
526
+ * Generate human-readable Markdown projection (MEMORY.md).
527
+ * @param {object} [index]
528
+ * @returns {string} Absolute path to projection file
529
+ */
530
+ generateProjection(index) {
531
+ if (!index) index = this.loadIndex();
532
+
533
+ let md = '# 🧠 Tribunal Memory Index\n';
534
+ md += '> Auto-generated by `tribunal-kit memory export`. Do not edit manually.\n';
535
+
536
+ const sem = index.entries.filter(e => e.memory_type === 'semantic');
537
+ const proc = index.entries.filter(e => e.memory_type === 'procedural');
538
+ const ep = index.entries.filter(e => e.memory_type === 'episodic');
539
+ const work = index.entries.filter(e => e.memory_type === 'working');
540
+
541
+ md += `> Entries: ${index.entries.length} | Semantic: ${sem.length} | Procedural: ${proc.length} | Episodic: ${ep.length} | Working: ${work.length}\n\n`;
542
+
543
+ if (sem.length > 0) {
544
+ md += '## SEMANTIC (Permanent Facts)\n';
545
+ md += '| ID | Content | Tags | Source | Conf | Created |\n';
546
+ md += '|----|---------|------|--------|------|---------|\n';
547
+ for (const e of sem) {
548
+ const conf = typeof e.confidence === 'number' ? e.confidence.toFixed(1) : '1.0';
549
+ md += `| ${e.id} | ${e.content.replace(/\|/g, '\\|')} | ${(e.tags || []).join(', ')} | ${e.source || 'manual'} | ${conf} | ${e.created_at} |\n`;
550
+ }
551
+ md += '\n';
552
+ }
553
+
554
+ if (proc.length > 0) {
555
+ md += '## PROCEDURAL (How-To Recipes)\n';
556
+ md += '| ID | Content | Tags | Source | Conf | Created |\n';
557
+ md += '|----|---------|------|--------|------|---------|\n';
558
+ for (const e of proc) {
559
+ const conf = typeof e.confidence === 'number' ? e.confidence.toFixed(1) : '1.0';
560
+ md += `| ${e.id} | ${e.content.replace(/\|/g, '\\|')} | ${(e.tags || []).join(', ')} | ${e.source || 'manual'} | ${conf} | ${e.created_at} |\n`;
561
+ }
562
+ md += '\n';
563
+ }
564
+
565
+ if (ep.length > 0) {
566
+ md += '## EPISODIC (Session History — auto-decays after 30 days)\n';
567
+ md += '| ID | Content | Tags | Source | Conf | Created | Days Remaining |\n';
568
+ md += '|----|---------|------|--------|------|---------|----------------|\n';
569
+ for (const e of ep) {
570
+ const remaining = Math.max(0, EPISODIC_TTL_DAYS - daysSince(e.created_at));
571
+ const conf = typeof e.confidence === 'number' ? e.confidence.toFixed(1) : '1.0';
572
+ md += `| ${e.id} | ${e.content.replace(/\|/g, '\\|')} | ${(e.tags || []).join(', ')} | ${e.source || 'manual'} | ${conf} | ${e.created_at} | ${remaining} |\n`;
573
+ }
574
+ md += '\n';
575
+ }
576
+
577
+ if (work.length > 0) {
578
+ md += '## WORKING (Current Session — cleared on GC)\n';
579
+ md += '| ID | Content | Tags | Session |\n';
580
+ md += '|----|---------|------|---------|\n';
581
+ for (const e of work) {
582
+ md += `| ${e.id} | ${e.content.replace(/\|/g, '\\|')} | ${(e.tags || []).join(', ')} | ${e.session_id || '—'} |\n`;
583
+ }
584
+ md += '\n';
585
+ }
586
+
587
+ if (index.entries.length === 0) {
588
+ md += '*No memories recorded yet. Run `tk memory store` to add your first memory.*\n';
589
+ }
590
+
591
+ fs.mkdirSync(path.dirname(this.projectionPath), { recursive: true });
592
+ fs.writeFileSync(this.projectionPath, md, 'utf8');
593
+
594
+ return this.projectionPath;
595
+ }
596
+
597
+ /**
598
+ * Export the markdown projection text.
599
+ * @returns {string}
600
+ */
601
+ export() {
602
+ this.generateProjection();
603
+ return fs.readFileSync(this.projectionPath, 'utf8');
604
+ }
605
+
606
+ /**
607
+ * Estimate token count.
608
+ * @param {string} text
609
+ * @returns {number}
610
+ */
611
+ estimateTokens(text) {
612
+ return estimateTokens(text);
613
+ }
614
+
615
+ /**
616
+ * Close connection (no-op for file-backed storage, preserved for API parity).
617
+ */
618
+ close() {
619
+ // No-op for file-backed engine
620
+ }
621
+ }
622
+
623
+ // ─── Module Exports ────────────────────────────────────────────────────────────
624
+
625
+ module.exports = {
626
+ MemoryEngine,
627
+ MEMORY_TYPES,
628
+ VALID_TYPES,
629
+ TYPE_PRIORITY,
630
+ estimateTokens,
631
+ };
632
+
633
+ // ─── CLI Entry Point ───────────────────────────────────────────────────────────
634
+
635
+ if (require.main === module) {
636
+ const args = process.argv.slice(2);
637
+
638
+ if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
639
+ console.log(`
640
+ \x1b[1mmemory_engine.js\x1b[0m — Tribunal Kit 4-Type Taxonomy Persistent Memory Engine
641
+
642
+ \x1b[1mUsage:\x1b[0m
643
+ node .agent/scripts/memory_engine.js store <type> <content> [--tags tag1,tag2] [--source manual]
644
+ node .agent/scripts/memory_engine.js recall <query> [--budget 2000]
645
+ node .agent/scripts/memory_engine.js get <id>
646
+ node .agent/scripts/memory_engine.js delete <id>
647
+ node .agent/scripts/memory_engine.js stats
648
+ node .agent/scripts/memory_engine.js expire
649
+ node .agent/scripts/memory_engine.js gc
650
+ node .agent/scripts/memory_engine.js export
651
+
652
+ \x1b[1mMemory Types:\x1b[0m
653
+ semantic — Permanent facts (no expiration)
654
+ procedural — How-to recipes (no expiration)
655
+ episodic — Events with 30-day TTL
656
+ working — Session scratch (cleared on GC)
657
+
658
+ \x1b[1mExamples:\x1b[0m
659
+ node .agent/scripts/memory_engine.js store semantic "User prefers TypeScript strict mode" --tags typescript,preference
660
+ node .agent/scripts/memory_engine.js recall "typescript" --budget 1000
661
+ node .agent/scripts/memory_engine.js stats
662
+ `);
663
+ process.exit(0);
664
+ }
665
+
666
+ let agentDir = null;
667
+ try {
668
+ const { findAgentDir } = require('./_utils');
669
+ agentDir = findAgentDir();
670
+ } catch (_) {
671
+ agentDir = path.resolve(process.cwd(), '.agent');
672
+ }
673
+
674
+ const mem = new MemoryEngine(agentDir);
675
+ const command = args[0];
676
+
677
+ try {
678
+ switch (command) {
679
+ case 'store': {
680
+ const type = args[1];
681
+ const content = args[2];
682
+ const tagsIdx = args.indexOf('--tags');
683
+ const tags =
684
+ tagsIdx !== -1 && args[tagsIdx + 1]
685
+ ? args[tagsIdx + 1].split(',').map(t => t.trim())
686
+ : [];
687
+ const sourceIdx = args.indexOf('--source');
688
+ const source = sourceIdx !== -1 && args[sourceIdx + 1] ? args[sourceIdx + 1] : undefined;
689
+
690
+ const result = mem.store(type, content, tags, { source });
691
+ console.log(
692
+ `\x1b[32m✓\x1b[0m Memory stored: #${result.id} (${result.type}, ~${result.token_estimate} tokens)`,
693
+ );
694
+ break;
695
+ }
696
+
697
+ case 'recall': {
698
+ const query = args[1];
699
+ if (!query) {
700
+ console.error('\x1b[31m✖ Missing search query\x1b[0m');
701
+ process.exit(1);
702
+ }
703
+ const budgetIdx = args.indexOf('--budget');
704
+ const budget =
705
+ budgetIdx !== -1 && args[budgetIdx + 1] ? parseInt(args[budgetIdx + 1], 10) : 2000;
706
+
707
+ const { results, tokens_used } = mem.recall(query, budget);
708
+ console.log(
709
+ `\n## Memory Recall (${results.length} results, ~${tokens_used}/${budget} tokens)\n`,
710
+ );
711
+ for (const entry of results) {
712
+ console.log(`- **[${entry.memory_type.toUpperCase()}]** #${entry.id}: ${entry.content}`);
713
+ if (entry.tags && entry.tags.length > 0) console.log(` _(${entry.tags.join(', ')})_`);
714
+ }
715
+ break;
716
+ }
717
+
718
+ case 'get': {
719
+ const id = parseInt(args[1], 10);
720
+ const result = mem.get(id);
721
+ if (!result) {
722
+ console.error(`\x1b[31m✖ Memory #${id} not found\x1b[0m`);
723
+ process.exit(1);
724
+ }
725
+ console.log(JSON.stringify(result, null, 2));
726
+ break;
727
+ }
728
+
729
+ case 'delete': {
730
+ const id = parseInt(args[1], 10);
731
+ const deleted = mem.delete(id);
732
+ if (deleted) {
733
+ console.log(`\x1b[32m✓\x1b[0m Memory #${id} deleted`);
734
+ } else {
735
+ console.error(`\x1b[31m✖ Memory #${id} not found\x1b[0m`);
736
+ process.exit(1);
737
+ }
738
+ break;
739
+ }
740
+
741
+ case 'stats': {
742
+ const stats = mem.stats();
743
+ console.log(`\n## Memory Statistics\n`);
744
+ console.log(`Total memories: ${stats.total}`);
745
+ for (const [type, data] of Object.entries(stats.by_type)) {
746
+ console.log(` ${type}: ${data.count} (~${data.estimated_tokens} tokens)`);
747
+ }
748
+ break;
749
+ }
750
+
751
+ case 'gc':
752
+ case 'expire': {
753
+ const res = mem.expire();
754
+ console.log(
755
+ `\x1b[32m✓\x1b[0m Memory GC complete: ${res.working_removed} working, ${res.episodic_removed} episodic removed (${res.before} -> ${res.after})`,
756
+ );
757
+ break;
758
+ }
759
+
760
+ case 'clear-working': {
761
+ const cleared = mem.clearWorking();
762
+ console.log(`\x1b[32m✓\x1b[0m Cleared ${cleared} working memory entries`);
763
+ break;
764
+ }
765
+
766
+ case 'export': {
767
+ const proj = mem.export();
768
+ console.log(proj);
769
+ break;
770
+ }
771
+
772
+ default:
773
+ console.error(`\x1b[31m✖ Unknown command: ${command}\x1b[0m`);
774
+ process.exit(1);
775
+ }
776
+ } catch (err) {
777
+ console.error(`\x1b[31m✖ Error: ${err.message}\x1b[0m`);
778
+ process.exit(1);
779
+ } finally {
780
+ mem.close();
781
+ }
782
+ }