tribunal-kit 6.0.1 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/.agent/ARCHITECTURE.md +9 -6
  2. package/.agent/agents/accessibility-reviewer.md +23 -16
  3. package/.agent/agents/ai-code-reviewer.md +25 -21
  4. package/.agent/agents/anti-pattern-reviewer.md +12 -7
  5. package/.agent/agents/api-architect.md +1 -0
  6. package/.agent/agents/backend-specialist.md +23 -22
  7. package/.agent/agents/cloud-engineer.md +1 -0
  8. package/.agent/agents/code-archaeologist.md +1 -0
  9. package/.agent/agents/complexity-reviewer.md +10 -7
  10. package/.agent/agents/database-architect.md +3 -2
  11. package/.agent/agents/db-latency-auditor.md +6 -2
  12. package/.agent/agents/debugger.md +3 -2
  13. package/.agent/agents/dependency-reviewer.md +1 -0
  14. package/.agent/agents/devops-engineer.md +9 -8
  15. package/.agent/agents/documentation-writer.md +6 -5
  16. package/.agent/agents/explorer-agent.md +1 -0
  17. package/.agent/agents/frontend-reviewer.md +21 -17
  18. package/.agent/agents/frontend-specialist.md +23 -20
  19. package/.agent/agents/game-developer.md +1 -0
  20. package/.agent/agents/interaction-reviewer.md +10 -5
  21. package/.agent/agents/logic-reviewer.md +3 -0
  22. package/.agent/agents/minimalist-reviewer.md +6 -0
  23. package/.agent/agents/mobile-developer.md +7 -6
  24. package/.agent/agents/mobile-reviewer.md +14 -13
  25. package/.agent/agents/orchestrator.md +3 -0
  26. package/.agent/agents/penetration-tester.md +1 -0
  27. package/.agent/agents/performance-optimizer.md +6 -5
  28. package/.agent/agents/performance-reviewer.md +6 -6
  29. package/.agent/agents/pipeline-reviewer.md +144 -0
  30. package/.agent/agents/precedence-reviewer.md +1 -0
  31. package/.agent/agents/product-manager.md +1 -0
  32. package/.agent/agents/product-owner.md +1 -0
  33. package/.agent/agents/product-reviewer.md +12 -7
  34. package/.agent/agents/project-planner.md +3 -0
  35. package/.agent/agents/qa-automation-engineer.md +50 -43
  36. package/.agent/agents/resilience-reviewer.md +1 -0
  37. package/.agent/agents/schema-reviewer.md +1 -0
  38. package/.agent/agents/security-auditor.md +24 -24
  39. package/.agent/agents/seo-specialist.md +33 -23
  40. package/.agent/agents/sql-reviewer.md +5 -4
  41. package/.agent/agents/supervisor-agent.md +12 -2
  42. package/.agent/agents/swarm-worker-contracts.md +13 -13
  43. package/.agent/agents/swarm-worker-registry.md +51 -51
  44. package/.agent/agents/system-architect.md +1 -0
  45. package/.agent/agents/test-coverage-reviewer.md +25 -22
  46. package/.agent/agents/test-engineer.md +12 -11
  47. package/.agent/agents/throughput-optimizer.md +45 -40
  48. package/.agent/agents/type-safety-reviewer.md +5 -4
  49. package/.agent/agents/ui-ux-auditor.md +6 -4
  50. package/.agent/agents/ui-visual-auditor.md +3 -0
  51. package/.agent/agents/ux-reviewer.md +11 -6
  52. package/.agent/agents/visual-reviewer.md +11 -6
  53. package/.agent/agents/vitals-reviewer.md +5 -4
  54. package/.agent/config/claude.json +18 -0
  55. package/.agent/config/plugin.json +102 -0
  56. package/.agent/config/slash-commands.json +103 -0
  57. package/.agent/config/specialist-registry.json +415 -0
  58. package/.agent/config/system-prompt.md +191 -0
  59. package/.agent/history/architecture-graph.yaml +302 -3
  60. package/.agent/history/graph-cache.json +515 -45
  61. package/.agent/history/memory/.memory.idx +1532 -1
  62. package/.agent/history/memory/MEMORY.md +102 -1
  63. package/.agent/history/memory.db +0 -0
  64. package/.agent/history/snapshots/bin__adapter-install.js.json +13 -0
  65. package/.agent/history/snapshots/bin__global-store.js.json +15 -0
  66. package/.agent/history/snapshots/bin__mcp-server.js.json +19 -0
  67. package/.agent/history/snapshots/bin__proxy-server.js.json +20 -0
  68. package/.agent/history/snapshots/bin__spawn-agent.js.json +12 -0
  69. package/.agent/history/snapshots/bin__tk-proxy.js.json +21 -0
  70. package/.agent/history/snapshots/bin__tribunal-kit.js.json +9 -7
  71. package/.agent/history/snapshots/bin__wrapper.js.json +14 -0
  72. package/.agent/history/snapshots/eslint.config.js.json +1 -2
  73. package/.agent/history/snapshots/scripts__benchmark.js.json +14 -0
  74. package/.agent/history/snapshots/scripts__changelog.js.json +1 -2
  75. package/.agent/history/snapshots/scripts__fix-vbc.js.json +11 -0
  76. package/.agent/history/snapshots/scripts__stress_benchmark.js.json +15 -0
  77. package/.agent/history/snapshots/scripts__sync-version.js.json +1 -2
  78. package/.agent/history/snapshots/scripts__validate-payload.js.json +1 -2
  79. package/.agent/history/snapshots/scripts__visual_audit.js.json +11 -0
  80. package/.agent/history/snapshots/test__integration__bridges.test.js.json +1 -2
  81. package/.agent/history/snapshots/test__integration__graceful_degradation.test.js.json +12 -0
  82. package/.agent/history/snapshots/test__integration__init.test.js.json +1 -2
  83. package/.agent/history/snapshots/test__integration__minimal_change_pipeline.test.js.json +13 -0
  84. package/.agent/history/snapshots/test__integration__parallel_tribunal.test.js.json +12 -0
  85. package/.agent/history/snapshots/test__integration__routing.test.js.json +1 -2
  86. package/.agent/history/snapshots/test__integration__swarm_dispatcher.test.js.json +1 -2
  87. package/.agent/history/snapshots/test__integration__sync_status.test.js.json +13 -0
  88. package/.agent/history/snapshots/test__integration__wave2.test.js.json +1 -2
  89. package/.agent/history/snapshots/test__integration__wrapper.test.js.json +13 -0
  90. package/.agent/history/snapshots/test__unit__align.test.js.json +10 -0
  91. package/.agent/history/snapshots/test__unit__args.test.js.json +3 -3
  92. package/.agent/history/snapshots/test__unit__audit_release.test.js.json +16 -0
  93. package/.agent/history/snapshots/test__unit__case_law_manager.test.js.json +1 -2
  94. package/.agent/history/snapshots/test__unit__cicd_validator.test.js.json +12 -0
  95. package/.agent/history/snapshots/test__unit__compile.test.js.json +10 -0
  96. package/.agent/history/snapshots/test__unit__context_broker.test.js.json +1 -2
  97. package/.agent/history/snapshots/test__unit__contract_engine.test.js.json +13 -0
  98. package/.agent/history/snapshots/test__unit__copyDir.test.js.json +3 -3
  99. package/.agent/history/snapshots/test__unit__graph_tools.test.js.json +1 -2
  100. package/.agent/history/snapshots/test__unit__guardrail_engine.test.js.json +10 -0
  101. package/.agent/history/snapshots/test__unit__impact_classifier.test.js.json +12 -0
  102. package/.agent/history/snapshots/test__unit__init.test.js.json +14 -0
  103. package/.agent/history/snapshots/test__unit__inner_loop_validator.test.js.json +1 -2
  104. package/.agent/history/snapshots/test__unit__integrity_manifest.test.js.json +13 -0
  105. package/.agent/history/snapshots/test__unit__learn.test.js.json +11 -0
  106. package/.agent/history/snapshots/test__unit__marathon.test.js.json +22 -0
  107. package/.agent/history/snapshots/test__unit__mcp_server.test.js.json +16 -0
  108. package/.agent/history/snapshots/test__unit__memory.test.js.json +13 -0
  109. package/.agent/history/snapshots/test__unit__minimal_change.test.js.json +10 -0
  110. package/.agent/history/snapshots/test__unit__native.test.js.json +10 -0
  111. package/.agent/history/snapshots/test__unit__optimize.test.js.json +13 -0
  112. package/.agent/history/snapshots/test__unit__path_resolution.test.js.json +14 -0
  113. package/.agent/history/snapshots/test__unit__production_readiness_evidence.test.js.json +21 -0
  114. package/.agent/history/snapshots/test__unit__selfInstall.test.js.json +3 -3
  115. package/.agent/history/snapshots/test__unit__semver.test.js.json +3 -3
  116. package/.agent/history/snapshots/test__unit__skill_evolution.test.js.json +11 -0
  117. package/.agent/history/snapshots/test__unit__stress.test.js.json +15 -0
  118. package/.agent/history/snapshots/test__unit__swarm_dispatcher.test.js.json +3 -3
  119. package/.agent/history/snapshots/test__unit__utils.test.js.json +10 -0
  120. package/.agent/mcp_config.json +1 -6
  121. package/.agent/routing_index.json +2033 -263
  122. package/.agent/rules/GEMINI.md +11 -9
  123. package/.agent/rules/GEMINI_PLANNER.md +19 -21
  124. package/.agent/scripts/_colors.js +52 -54
  125. package/.agent/scripts/_utils.js +52 -53
  126. package/.agent/scripts/ast_context_loader.js +137 -0
  127. package/.agent/scripts/auto_preview.js +39 -43
  128. package/.agent/scripts/bundle_analyzer.js +47 -60
  129. package/.agent/scripts/case_law_manager.js +200 -294
  130. package/.agent/scripts/checklist.js +73 -94
  131. package/.agent/scripts/cicd_validator.js +305 -0
  132. package/.agent/scripts/context_broker.js +317 -412
  133. package/.agent/scripts/contract_engine.js +402 -0
  134. package/.agent/scripts/dependency_analyzer.js +112 -124
  135. package/.agent/scripts/graph_builder.js +75 -103
  136. package/.agent/scripts/graph_visualizer.js +10 -12
  137. package/.agent/scripts/graph_zoom.js +38 -55
  138. package/.agent/scripts/guardrail_engine.js +195 -145
  139. package/.agent/scripts/impact_classifier.js +55 -30
  140. package/.agent/scripts/inner_loop_validator.js +108 -159
  141. package/.agent/scripts/integrity_manifest.js +59 -67
  142. package/.agent/scripts/lint_runner.js +65 -75
  143. package/.agent/scripts/marathon_harness.js +131 -208
  144. package/.agent/scripts/memory_engine.js +581 -0
  145. package/.agent/scripts/minify_context.js +29 -33
  146. package/.agent/scripts/minimal_change_engine.js +95 -87
  147. package/.agent/scripts/mutation_runner.js +46 -62
  148. package/.agent/scripts/payload_schemas.js +146 -0
  149. package/.agent/scripts/pipeline_engine.js +320 -209
  150. package/.agent/scripts/prompt_compiler.js +166 -93
  151. package/.agent/scripts/schema_validator.js +73 -121
  152. package/.agent/scripts/security_scan.js +88 -117
  153. package/.agent/scripts/session_manager.js +52 -69
  154. package/.agent/scripts/signal_detector.js +24 -22
  155. package/.agent/scripts/skill_evolution.js +184 -245
  156. package/.agent/scripts/skill_integrator.js +35 -48
  157. package/.agent/scripts/socratic_gate_policy.js +15 -12
  158. package/.agent/scripts/strengthen_skills.js +29 -33
  159. package/.agent/scripts/swarm_dispatcher.js +397 -200
  160. package/.agent/scripts/test_runner.js +54 -56
  161. package/.agent/scripts/token_budget_broker.js +126 -13
  162. package/.agent/scripts/trace_engine.js +126 -0
  163. package/.agent/scripts/verify_all.js +76 -93
  164. package/.agent/scripts/visual_audit.js +16 -21
  165. package/.agent/skill_topic_map.json +22 -3
  166. package/.agent/skills/12-principles-of-animation/SKILL.md +7 -0
  167. package/.agent/skills/60fps-animation/SKILL.md +7 -0
  168. package/.agent/skills/accessible-animation/SKILL.md +5 -1
  169. package/.agent/skills/adapt/SKILL.md +7 -1
  170. package/.agent/skills/advanced-rag-pipelines/SKILL.md +1 -0
  171. package/.agent/skills/agent-organizer/SKILL.md +1 -0
  172. package/.agent/skills/agentic-patterns/SKILL.md +33 -25
  173. package/.agent/skills/agentic-workflows-2026/SKILL.md +6 -2
  174. package/.agent/skills/ai-app-hardening/SKILL.md +9 -8
  175. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +7 -6
  176. package/.agent/skills/animation-on-scroll/SKILL.md +24 -15
  177. package/.agent/skills/animation-systems/SKILL.md +11 -10
  178. package/.agent/skills/antfu-conventions/SKILL.md +7 -2
  179. package/.agent/skills/api-patterns/SKILL.md +14 -10
  180. package/.agent/skills/api-security-auditor/SKILL.md +15 -14
  181. package/.agent/skills/app-builder/SKILL.md +1 -0
  182. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +2 -2
  183. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +1 -1
  184. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +12 -12
  185. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +3 -3
  186. package/.agent/skills/apple-design/SKILL.md +8 -7
  187. package/.agent/skills/architecture/SKILL.md +3 -2
  188. package/.agent/skills/audit-and-fix/SKILL.md +8 -5
  189. package/.agent/skills/authentication-best-practices/SKILL.md +9 -8
  190. package/.agent/skills/backend-security-expert/SKILL.md +1 -0
  191. package/.agent/skills/baseline-ui/SKILL.md +8 -7
  192. package/.agent/skills/bash-linux/SKILL.md +1 -0
  193. package/.agent/skills/behavioral-modes/SKILL.md +1 -0
  194. package/.agent/skills/better-colors/SKILL.md +11 -7
  195. package/.agent/skills/better-typography/SKILL.md +30 -16
  196. package/.agent/skills/better-ui/SKILL.md +17 -10
  197. package/.agent/skills/bolder/SKILL.md +6 -0
  198. package/.agent/skills/brainstorming/SKILL.md +6 -4
  199. package/.agent/skills/browser-native-ai/SKILL.md +5 -4
  200. package/.agent/skills/build-primitive/SKILL.md +5 -0
  201. package/.agent/skills/building-native-ui/SKILL.md +1 -0
  202. package/.agent/skills/cicd-pro/SKILL.md +2 -1
  203. package/.agent/skills/clarify/SKILL.md +19 -14
  204. package/.agent/skills/clean-code/SKILL.md +16 -15
  205. package/.agent/skills/cloud-architect/SKILL.md +1 -0
  206. package/.agent/skills/cobejs/SKILL.md +7 -9
  207. package/.agent/skills/code-review-checklist/SKILL.md +1 -0
  208. package/.agent/skills/codebase-design/SKILL.md +7 -2
  209. package/.agent/skills/colorize/SKILL.md +8 -3
  210. package/.agent/skills/compact-landing/SKILL.md +8 -3
  211. package/.agent/skills/company-logos/SKILL.md +6 -0
  212. package/.agent/skills/config-validator/SKILL.md +10 -9
  213. package/.agent/skills/containerization-pro/SKILL.md +6 -5
  214. package/.agent/skills/context-engineering-pro/SKILL.md +5 -4
  215. package/.agent/skills/create-design-md/SKILL.md +13 -5
  216. package/.agent/skills/critique/SKILL.md +10 -8
  217. package/.agent/skills/csharp-developer/SKILL.md +1 -0
  218. package/.agent/skills/data-validation-schemas/SKILL.md +28 -23
  219. package/.agent/skills/database-design/SKILL.md +2 -1
  220. package/.agent/skills/delight/SKILL.md +6 -0
  221. package/.agent/skills/deployment-procedures/SKILL.md +2 -1
  222. package/.agent/skills/design-lab/SKILL.md +5 -0
  223. package/.agent/skills/devops-engineer/SKILL.md +3 -2
  224. package/.agent/skills/devops-incident-responder/SKILL.md +2 -1
  225. package/.agent/skills/diagnosing-bugs/SKILL.md +12 -2
  226. package/.agent/skills/distill/SKILL.md +7 -2
  227. package/.agent/skills/documentation-templates/SKILL.md +3 -2
  228. package/.agent/skills/domain-modeling/SKILL.md +12 -4
  229. package/.agent/skills/duckdb-analytical-sql/SKILL.md +7 -3
  230. package/.agent/skills/edge-ai-mobile/SKILL.md +5 -1
  231. package/.agent/skills/edge-computing/SKILL.md +9 -8
  232. package/.agent/skills/emil-design-eng/SKILL.md +43 -27
  233. package/.agent/skills/error-resilience/SKILL.md +34 -16
  234. package/.agent/skills/expo-router-v4/SKILL.md +2 -1
  235. package/.agent/skills/extract-design-system/SKILL.md +12 -11
  236. package/.agent/skills/fabel-protocol/SKILL.md +24 -17
  237. package/.agent/skills/fixing-accessibility/SKILL.md +23 -16
  238. package/.agent/skills/fixing-metadata/SKILL.md +24 -13
  239. package/.agent/skills/fixing-motion-performance/SKILL.md +7 -5
  240. package/.agent/skills/framer-motion-expert/SKILL.md +29 -15
  241. package/.agent/skills/frontend-design/SKILL.md +21 -13
  242. package/.agent/skills/frontend-security-expert/SKILL.md +1 -0
  243. package/.agent/skills/game-design-expert/SKILL.md +1 -0
  244. package/.agent/skills/game-engineering-expert/SKILL.md +1 -0
  245. package/.agent/skills/generative-ui-expert/SKILL.md +3 -2
  246. package/.agent/skills/geo-fundamentals/SKILL.md +2 -1
  247. package/.agent/skills/git-pro/SKILL.md +10 -9
  248. package/.agent/skills/github-operations/SKILL.md +2 -1
  249. package/.agent/skills/gpt-taste/SKILL.md +7 -0
  250. package/.agent/skills/gsap-core/SKILL.md +26 -22
  251. package/.agent/skills/gsap-frameworks/SKILL.md +6 -5
  252. package/.agent/skills/gsap-performance/SKILL.md +4 -3
  253. package/.agent/skills/gsap-plugins/SKILL.md +34 -33
  254. package/.agent/skills/gsap-react/SKILL.md +9 -8
  255. package/.agent/skills/gsap-scrolltrigger/SKILL.md +34 -33
  256. package/.agent/skills/gsap-timeline/SKILL.md +18 -15
  257. package/.agent/skills/gsap-utils/SKILL.md +25 -24
  258. package/.agent/skills/harden/SKILL.md +9 -3
  259. package/.agent/skills/harness-protocol/SKILL.md +1 -0
  260. package/.agent/skills/i18n-localization/SKILL.md +10 -9
  261. package/.agent/skills/impeccable/SKILL.md +5 -0
  262. package/.agent/skills/improve-codebase-architecture/SKILL.md +10 -5
  263. package/.agent/skills/improve-ui/SKILL.md +12 -5
  264. package/.agent/skills/intelligent-routing/SKILL.md +7 -6
  265. package/.agent/skills/knowledge-graph/SKILL.md +1 -0
  266. package/.agent/skills/landing-page/SKILL.md +1 -0
  267. package/.agent/skills/lint-and-validate/SKILL.md +9 -4
  268. package/.agent/skills/llm-engineering/SKILL.md +55 -54
  269. package/.agent/skills/local-first/SKILL.md +20 -19
  270. package/.agent/skills/local-first-architecture/SKILL.md +6 -1
  271. package/.agent/skills/lottie-animation/SKILL.md +7 -3
  272. package/.agent/skills/marquee-loop/SKILL.md +1 -0
  273. package/.agent/skills/masked-reveal/SKILL.md +17 -4
  274. package/.agent/skills/mcp-builder/SKILL.md +13 -10
  275. package/.agent/skills/micro-interaction/SKILL.md +20 -5
  276. package/.agent/skills/mobile-design/SKILL.md +26 -15
  277. package/.agent/skills/monorepo-management/SKILL.md +3 -2
  278. package/.agent/skills/morphing-icons/SKILL.md +16 -6
  279. package/.agent/skills/motion-engineering/SKILL.md +19 -15
  280. package/.agent/skills/nextjs-react-expert/SKILL.md +26 -21
  281. package/.agent/skills/nodejs-best-practices/SKILL.md +89 -76
  282. package/.agent/skills/observability/SKILL.md +45 -44
  283. package/.agent/skills/opentelemetry-observability/SKILL.md +2 -1
  284. package/.agent/skills/page-transition-animation/SKILL.md +6 -3
  285. package/.agent/skills/parallel-agents/SKILL.md +7 -2
  286. package/.agent/skills/performance-profiling/SKILL.md +24 -13
  287. package/.agent/skills/plan-writing/SKILL.md +1 -0
  288. package/.agent/skills/platform-engineer/SKILL.md +3 -2
  289. package/.agent/skills/platform-engineering-opentofu/SKILL.md +1 -0
  290. package/.agent/skills/playwright-ai-e2e/SKILL.md +3 -2
  291. package/.agent/skills/playwright-best-practices/SKILL.md +29 -28
  292. package/.agent/skills/polish/SKILL.md +13 -12
  293. package/.agent/skills/powershell-windows/SKILL.md +1 -0
  294. package/.agent/skills/pricing-page/SKILL.md +8 -3
  295. package/.agent/skills/product-aware-heuristics/SKILL.md +122 -72
  296. package/.agent/skills/progressive-blur/SKILL.md +9 -4
  297. package/.agent/skills/project-idioms/SKILL.md +1 -0
  298. package/.agent/skills/property-based-testing/SKILL.md +10 -12
  299. package/.agent/skills/python-patterns/SKILL.md +1 -0
  300. package/.agent/skills/python-pro/SKILL.md +1 -0
  301. package/.agent/skills/quieter/SKILL.md +6 -0
  302. package/.agent/skills/react-doctor/SKILL.md +6 -0
  303. package/.agent/skills/react-specialist/SKILL.md +32 -28
  304. package/.agent/skills/readme-builder/SKILL.md +1 -0
  305. package/.agent/skills/realtime-patterns/SKILL.md +34 -33
  306. package/.agent/skills/red-team-tactics/SKILL.md +1 -0
  307. package/.agent/skills/redesign-skill/SKILL.md +6 -0
  308. package/.agent/skills/review-animations/SKILL.md +5 -2
  309. package/.agent/skills/review-animations/STANDARDS.md +37 -23
  310. package/.agent/skills/rust-pro/SKILL.md +1 -0
  311. package/.agent/skills/seo-fundamentals/SKILL.md +4 -3
  312. package/.agent/skills/server-management/SKILL.md +1 -0
  313. package/.agent/skills/shadcn-ui-expert/SKILL.md +28 -22
  314. package/.agent/skills/shape/SKILL.md +9 -2
  315. package/.agent/skills/skill-creator/SKILL.md +1 -0
  316. package/.agent/skills/soft-skill/SKILL.md +6 -0
  317. package/.agent/skills/sounds-on-the-web/SKILL.md +1 -0
  318. package/.agent/skills/sql-pro/SKILL.md +1 -0
  319. package/.agent/skills/supabase-postgres-best-practices/SKILL.md +1 -0
  320. package/.agent/skills/svg-animation/SKILL.md +16 -7
  321. package/.agent/skills/swiftui-expert/SKILL.md +1 -0
  322. package/.agent/skills/swiss-design/SKILL.md +5 -0
  323. package/.agent/skills/system-design-pro/SKILL.md +1 -0
  324. package/.agent/skills/systematic-debugging/SKILL.md +1 -0
  325. package/.agent/skills/tailwind-patterns/SKILL.md +25 -11
  326. package/.agent/skills/taste-skill/SKILL.md +6 -0
  327. package/.agent/skills/tdd-workflow/SKILL.md +5 -0
  328. package/.agent/skills/test-result-analyzer/SKILL.md +1 -0
  329. package/.agent/skills/testing-patterns/SKILL.md +123 -115
  330. package/.agent/skills/thermo-nuclear-code-quality-review/SKILL.md +5 -0
  331. package/.agent/skills/thinking-protocol/SKILL.md +3 -0
  332. package/.agent/skills/to-spring-or-not-to-spring/SKILL.md +9 -8
  333. package/.agent/skills/transitions-dev/SKILL.md +19 -6
  334. package/.agent/skills/trend-researcher/SKILL.md +1 -0
  335. package/.agent/skills/typescript-advanced/SKILL.md +23 -18
  336. package/.agent/skills/typeset/SKILL.md +10 -1
  337. package/.agent/skills/ui-reasoning-engine/SKILL.md +67 -48
  338. package/.agent/skills/ui-skill-packs/SKILL.md +6 -1
  339. package/.agent/skills/ui-skills-root/SKILL.md +39 -38
  340. package/.agent/skills/ui-ux-pro-max/SKILL.md +34 -26
  341. package/.agent/skills/ui-ux-researcher/SKILL.md +1 -0
  342. package/.agent/skills/vector-search-pgvector/SKILL.md +3 -2
  343. package/.agent/skills/vue-expert/SKILL.md +22 -19
  344. package/.agent/skills/vulnerability-scanner/SKILL.md +22 -21
  345. package/.agent/skills/web-accessibility-auditor/SKILL.md +2 -1
  346. package/.agent/skills/web-design-guidelines/SKILL.md +16 -10
  347. package/.agent/skills/web-quality-audit/SKILL.md +5 -0
  348. package/.agent/skills/webapp-testing/SKILL.md +14 -13
  349. package/.agent/skills/webgpu-performance/SKILL.md +1 -0
  350. package/.agent/skills/whimsy-injector/SKILL.md +9 -5
  351. package/.agent/skills/workflow-optimizer/SKILL.md +1 -0
  352. package/.agent/skills/zero-trust-passkeys/SKILL.md +11 -6
  353. package/.agent/templates/DESIGN.md +119 -110
  354. package/.agent/templates/design-tokens.json +9 -6
  355. package/.agent/workflows/acf.md +1 -0
  356. package/.agent/workflows/api-tester.md +1 -0
  357. package/.agent/workflows/audit.md +1 -0
  358. package/.agent/workflows/brainstorm.md +1 -0
  359. package/.agent/workflows/changelog.md +1 -0
  360. package/.agent/workflows/contract.md +60 -0
  361. package/.agent/workflows/create.md +1 -0
  362. package/.agent/workflows/debug.md +1 -0
  363. package/.agent/workflows/deploy.md +1 -0
  364. package/.agent/workflows/enhance.md +1 -0
  365. package/.agent/workflows/fix-ci.md +89 -0
  366. package/.agent/workflows/fix.md +1 -0
  367. package/.agent/workflows/generate.md +1 -0
  368. package/.agent/workflows/marathon.md +1 -0
  369. package/.agent/workflows/migrate.md +1 -0
  370. package/.agent/workflows/minimal.md +9 -7
  371. package/.agent/workflows/orchestrate.md +1 -0
  372. package/.agent/workflows/performance-benchmarker.md +1 -0
  373. package/.agent/workflows/pipeline.md +26 -21
  374. package/.agent/workflows/plan.md +1 -0
  375. package/.agent/workflows/preview.md +1 -0
  376. package/.agent/workflows/refactor.md +3 -2
  377. package/.agent/workflows/review-ai.md +4 -3
  378. package/.agent/workflows/review.md +1 -0
  379. package/.agent/workflows/session.md +1 -0
  380. package/.agent/workflows/status.md +1 -0
  381. package/.agent/workflows/strengthen-skills.md +1 -0
  382. package/.agent/workflows/super-prompt.md +1 -0
  383. package/.agent/workflows/swarm.md +15 -3
  384. package/.agent/workflows/test.md +8 -7
  385. package/.agent/workflows/tribunal-backend.md +3 -2
  386. package/.agent/workflows/tribunal-cicd.md +104 -0
  387. package/.agent/workflows/tribunal-database.md +1 -0
  388. package/.agent/workflows/tribunal-frontend.md +8 -6
  389. package/.agent/workflows/tribunal-full.md +2 -1
  390. package/.agent/workflows/tribunal-mobile.md +6 -5
  391. package/.agent/workflows/tribunal-performance.md +1 -0
  392. package/.agent/workflows/tribunal-speed.md +1 -0
  393. package/.agent/workflows/tribunal-ui.md +29 -21
  394. package/.agent/workflows/ui-ux-pro-max.md +19 -15
  395. package/.claude/CLAUDE.md +442 -0
  396. package/CONTRIBUTING.md +3 -3
  397. package/README.md +105 -45
  398. package/SECURITY.md +11 -11
  399. package/bin/adapter-install.js +240 -0
  400. package/bin/global-store.js +48 -0
  401. package/bin/mcp-server.js +781 -332
  402. package/bin/proxy-server.js +113 -0
  403. package/bin/spawn-agent.js +39 -0
  404. package/bin/tk-proxy.js +34 -0
  405. package/bin/tribunal-kit.js +29 -30
  406. package/bin/wrapper.js +40 -46
  407. package/dist/cli.js +6 -0
  408. package/dist/commands/case.js +2 -0
  409. package/dist/commands/contract.js +440 -0
  410. package/dist/commands/init.js +8 -51
  411. package/dist/commands/status.js +61 -30
  412. package/dist/commands/validate.js +22 -31
  413. package/dist/index.d.ts +8 -1
  414. package/dist/tui/banner.js +77 -0
  415. package/dist/tui/index.js +21 -0
  416. package/dist/tui/reviewer-grid.js +90 -0
  417. package/dist/tui/shimmer.js +91 -0
  418. package/dist/tui/theme.js +130 -0
  419. package/dist/tui/tree.js +93 -0
  420. package/dist/tui/wizard.js +148 -0
  421. package/dist/utils/helpers.js +5 -41
  422. package/package.json +33 -15
  423. package/scripts/benchmark.js +62 -86
  424. package/scripts/build-graph.js +71 -0
  425. package/scripts/changelog.js +67 -73
  426. package/scripts/fix-vbc.js +13 -15
  427. package/scripts/fix-vbc.ps1 +2 -118
  428. package/scripts/stress_benchmark.js +358 -0
  429. package/scripts/sync-version.js +71 -41
  430. package/scripts/validate-payload.js +23 -30
  431. package/scripts/visual_audit.js +23 -13
  432. package/.agent/history/snapshots/migrate_refs.js.json +0 -11
  433. package/.agent/scripts/compile_router.py +0 -112
  434. package/.agent/scripts/migrate_skills_frontmatter.py +0 -64
@@ -0,0 +1,113 @@
1
+ const http = require('http');
2
+ const https = require('https');
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const globalStore = require('./global-store');
6
+
7
+ let proxyServer = null;
8
+
9
+ function getSystemPrompt() {
10
+ const agentPath = globalStore.getGlobalAgentPath();
11
+ const rulesPath = path.join(agentPath, 'rules', 'GEMINI.md');
12
+
13
+ let rules = 'You are governed by Tribunal Kit rules.';
14
+ if (fs.existsSync(rulesPath)) {
15
+ rules = fs.readFileSync(rulesPath, 'utf8');
16
+ }
17
+
18
+ return `<tribunal_rules>\n${rules}\n</tribunal_rules>\n`;
19
+ }
20
+
21
+ function injectRulesIntoAnthropicPayload(payloadString) {
22
+ try {
23
+ const payload = JSON.parse(payloadString);
24
+
25
+ // Inject into Anthropic's system parameter
26
+ const tribunalSystem = getSystemPrompt();
27
+
28
+ if (payload.system) {
29
+ if (Array.isArray(payload.system)) {
30
+ payload.system.unshift({ type: 'text', text: tribunalSystem });
31
+ } else if (typeof payload.system === 'string') {
32
+ payload.system = tribunalSystem + '\n' + payload.system;
33
+ }
34
+ } else {
35
+ payload.system = tribunalSystem;
36
+ }
37
+
38
+ return JSON.stringify(payload);
39
+ } catch (e) {
40
+ console.error('[Tribunal Proxy] Failed to parse payload for injection:', e);
41
+ return payloadString;
42
+ }
43
+ }
44
+
45
+ function startProxyServer(port) {
46
+ return new Promise((resolve, reject) => {
47
+ proxyServer = http.createServer((clientReq, clientRes) => {
48
+ let body = '';
49
+ clientReq.on('data', chunk => {
50
+ body += chunk.toString();
51
+ // 5MB payload limit to prevent memory exhaustion (DoS)
52
+ if (body.length > 5 * 1024 * 1024) {
53
+ console.error('[Tribunal Proxy] Request too large, aborting.');
54
+ clientReq.destroy();
55
+ }
56
+ });
57
+
58
+ clientReq.on('end', () => {
59
+ let modifiedBody = body;
60
+
61
+ // Only intercept AI chat completion endpoints
62
+ if (clientReq.url.includes('/v1/messages')) {
63
+ console.log(`[Tribunal Proxy] Intercepting request to ${clientReq.url}`);
64
+ modifiedBody = injectRulesIntoAnthropicPayload(body);
65
+ }
66
+
67
+ const options = {
68
+ hostname: 'api.anthropic.com',
69
+ port: 443,
70
+ path: clientReq.url,
71
+ method: clientReq.method,
72
+ headers: {
73
+ ...clientReq.headers,
74
+ host: 'api.anthropic.com',
75
+ 'content-length': Buffer.byteLength(modifiedBody),
76
+ },
77
+ };
78
+
79
+ const proxyReq = https.request(options, proxyRes => {
80
+ clientRes.writeHead(proxyRes.statusCode, proxyRes.headers);
81
+ proxyRes.pipe(clientRes, { end: true });
82
+ });
83
+
84
+ proxyReq.on('error', err => {
85
+ console.error('[Tribunal Proxy] Proxy request error:', err);
86
+ clientRes.writeHead(500);
87
+ clientRes.end();
88
+ });
89
+
90
+ proxyReq.write(modifiedBody);
91
+ proxyReq.end();
92
+ });
93
+ });
94
+
95
+ proxyServer.listen(port, () => {
96
+ console.log(`[Tribunal Proxy] Listening on http://localhost:${port}`);
97
+ resolve(port);
98
+ });
99
+
100
+ proxyServer.on('error', reject);
101
+ });
102
+ }
103
+
104
+ function stopProxyServer() {
105
+ if (proxyServer) {
106
+ proxyServer.close();
107
+ }
108
+ }
109
+
110
+ module.exports = {
111
+ startProxyServer,
112
+ stopProxyServer,
113
+ };
@@ -0,0 +1,39 @@
1
+ const { spawn } = require('child_process');
2
+
3
+ function spawnAgent(agentCommand, proxyPort) {
4
+ const proxyUrl = `http://localhost:${proxyPort}`;
5
+ console.log(`[Tribunal Proxy] Launching ${agentCommand} with proxy ${proxyUrl}`);
6
+
7
+ // Split command and arguments. e.g. "claude-code" or "npx claude-code"
8
+ const args = agentCommand.split(' ');
9
+ const command = args.shift();
10
+
11
+ // Inject proxy environment variables
12
+ // ANTHROPIC_BASE_URL is commonly respected by Anthropic-based CLI tools
13
+ const env = {
14
+ ...process.env,
15
+ ANTHROPIC_BASE_URL: proxyUrl,
16
+ // Note: If using HTTPS_PROXY, it would look like this:
17
+ // HTTPS_PROXY: proxyUrl,
18
+ // NODE_TLS_REJECT_UNAUTHORIZED: "0"
19
+ };
20
+
21
+ const child = spawn(command, args, {
22
+ stdio: 'inherit', // Pass stdin, stdout, stderr directly to the TTY
23
+ env,
24
+ });
25
+
26
+ child.on('close', code => {
27
+ console.log(`[Tribunal Proxy] ${command} exited with code ${code}`);
28
+ process.exit(code);
29
+ });
30
+
31
+ child.on('error', err => {
32
+ console.error(`[Tribunal Proxy] Failed to start ${command}:`, err);
33
+ process.exit(1);
34
+ });
35
+ }
36
+
37
+ module.exports = {
38
+ spawnAgent,
39
+ };
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { initializeGlobalStore } = require('./global-store');
4
+ const { startProxyServer } = require('./proxy-server');
5
+ const { spawnAgent } = require('./spawn-agent');
6
+
7
+ async function main() {
8
+ const args = process.argv.slice(2);
9
+
10
+ if (args.length === 0) {
11
+ console.error('Usage: tk-proxy <command>');
12
+ console.error('Example: tk-proxy claude-code');
13
+ process.exit(1);
14
+ }
15
+
16
+ const targetCommand = args.join(' ');
17
+
18
+ // 1. Initialize the global rules database
19
+ initializeGlobalStore();
20
+
21
+ // 2. Start the local API proxy server
22
+ // Port 0 will pick an available random port
23
+ try {
24
+ const port = await startProxyServer(0);
25
+
26
+ // 3. Spawn the target CLI agent
27
+ spawnAgent(targetCommand, port);
28
+ } catch (e) {
29
+ console.error('[Tribunal Proxy] Fatal error starting proxy:', e);
30
+ process.exit(1);
31
+ }
32
+ }
33
+
34
+ main();
@@ -26,31 +26,30 @@
26
26
  * tribunal-kit uninstall
27
27
  */
28
28
 
29
- "use strict";
29
+ 'use strict';
30
30
 
31
- const path = require("path");
31
+ const path = require('path');
32
32
 
33
33
  // Delegate core execution to the modular dist/ entry point
34
- const { main } = require("../dist/cli.js");
34
+ const { main } = require('../dist/cli.js');
35
35
 
36
36
  // Utilities re-exported for backwards compatibility with tests
37
- const { compareSemver } = require("../dist/utils/version");
38
- const { copyDir, countDir, isSelfInstall: _isSelfInstall } = require("../dist/utils/fs");
39
- const { CORE_AGENTS, CORE_SKILLS, generateIDEBridges } = require("../dist/commands/init");
40
- const { cmdMarathon: _cmdMarathon } = require("../dist/commands/marathon");
37
+ const { compareSemver } = require('../dist/utils/version');
38
+ const { copyDir, countDir, isSelfInstall: _isSelfInstall } = require('../dist/utils/fs');
39
+ const { CORE_AGENTS, CORE_SKILLS, generateIDEBridges } = require('../dist/commands/init');
40
+ const { cmdMarathon: _cmdMarathon } = require('../dist/commands/marathon');
41
41
 
42
42
  function cmdMarathon(flags, processArgs = process.argv) {
43
43
  return _cmdMarathon(flags, processArgs, flags?.quiet || false);
44
44
  }
45
45
 
46
-
47
- const PKG = require(path.resolve(__dirname, "..", "package.json"));
46
+ const PKG = require(path.resolve(__dirname, '..', 'package.json'));
48
47
 
49
48
  /**
50
49
  * Returns true if the target directory IS the tribunal-kit package itself.
51
50
  */
52
51
  function isSelfInstall(targetDir) {
53
- const kitRoot = path.resolve(__dirname, "..");
52
+ const kitRoot = path.resolve(__dirname, '..');
54
53
  return _isSelfInstall(targetDir, PKG.name, kitRoot);
55
54
  }
56
55
 
@@ -63,31 +62,31 @@ function parseArgs(argv) {
63
62
 
64
63
  for (let i = 0; i < raw.length; i++) {
65
64
  const arg = raw[i];
66
- if (!arg.startsWith("--") && !arg.startsWith("-") && !args.command) {
65
+ if (!arg.startsWith('--') && !arg.startsWith('-') && !args.command) {
67
66
  args.command = arg;
68
67
  continue;
69
68
  }
70
- if (arg === "--force") args.flags.force = true;
71
- else if (arg === "--quiet") args.flags.quiet = true;
72
- else if (arg === "--verbose") args.flags.verbose = true;
73
- else if (arg === "--dry-run") args.flags.dryRun = true;
74
- else if (arg === "--minimal") args.flags.minimal = true;
75
- else if (arg === "--token-optimized") args.flags.tokenOptimized = true;
76
- else if (arg === "--skip-update-check") args.flags.skipUpdateCheck = true;
77
- else if (arg === "--head") args.flags.head = true;
78
- else if (arg.startsWith("--path=")) {
79
- args.flags.path = arg.split("=").slice(1).join("=");
80
- } else if (arg === "--path" && raw[i + 1] && !raw[i + 1].startsWith("-")) {
69
+ if (arg === '--force') args.flags.force = true;
70
+ else if (arg === '--quiet') args.flags.quiet = true;
71
+ else if (arg === '--verbose') args.flags.verbose = true;
72
+ else if (arg === '--dry-run') args.flags.dryRun = true;
73
+ else if (arg === '--minimal') args.flags.minimal = true;
74
+ else if (arg === '--token-optimized') args.flags.tokenOptimized = true;
75
+ else if (arg === '--skip-update-check') args.flags.skipUpdateCheck = true;
76
+ else if (arg === '--head') args.flags.head = true;
77
+ else if (arg.startsWith('--path=')) {
78
+ args.flags.path = arg.split('=').slice(1).join('=');
79
+ } else if (arg === '--path' && raw[i + 1] && !raw[i + 1].startsWith('-')) {
81
80
  args.flags.path = raw[++i];
82
- } else if (arg.startsWith("--branch=")) {
83
- args.flags.branch = arg.split("=").slice(1).join("=");
84
- } else if (arg.startsWith("--log=")) {
85
- args.flags.log = arg.split("=").slice(1).join("=");
86
- } else if (arg === "--log" && raw[i + 1] && !raw[i + 1].startsWith("-")) {
81
+ } else if (arg.startsWith('--branch=')) {
82
+ args.flags.branch = arg.split('=').slice(1).join('=');
83
+ } else if (arg.startsWith('--log=')) {
84
+ args.flags.log = arg.split('=').slice(1).join('=');
85
+ } else if (arg === '--log' && raw[i + 1] && !raw[i + 1].startsWith('-')) {
87
86
  args.flags.log = raw[++i];
88
- } else if (arg.startsWith("--strategy=")) {
89
- args.flags.strategy = arg.split("=").slice(1).join("=");
90
- } else if (arg === "--strategy" && raw[i + 1] && !raw[i + 1].startsWith("-")) {
87
+ } else if (arg.startsWith('--strategy=')) {
88
+ args.flags.strategy = arg.split('=').slice(1).join('=');
89
+ } else if (arg === '--strategy' && raw[i + 1] && !raw[i + 1].startsWith('-')) {
91
90
  args.flags.strategy = raw[++i];
92
91
  }
93
92
  }
package/bin/wrapper.js CHANGED
@@ -7,34 +7,33 @@
7
7
  * falls back to the original JavaScript implementation.
8
8
  */
9
9
 
10
- const fs = require("fs");
11
- const path = require("path");
12
- const { spawnSync } = require("child_process");
13
- const os = require("os");
10
+ const fs = require('fs');
11
+ const path = require('path');
12
+ const { spawnSync } = require('child_process');
13
+ const os = require('os');
14
14
 
15
15
  // Commands that have been fully ported to Rust so far
16
16
  const RUST_COMMANDS = new Set([
17
- "init",
18
- "validate",
19
- "status",
20
- "sync",
21
- "hook",
22
- "uninstall",
23
- "memory",
24
- "min-context",
25
- "dag-schedule",
26
- "context-compress",
27
- "context-broker",
28
- "optimize-step",
29
- "impact-tier",
17
+ 'init',
18
+ 'validate',
19
+ 'status',
20
+ 'sync',
21
+ 'hook',
22
+ 'uninstall',
23
+ 'memory',
24
+ 'min-context',
25
+ 'dag-schedule',
26
+ 'context-compress',
27
+ 'context-broker',
28
+ 'optimize-step',
29
+ 'impact-tier',
30
30
  ]);
31
31
 
32
-
33
32
  // Determine the path to the compiled Rust binary
34
33
  // In a full production release, this checks optionalDependencies in node_modules
35
34
  // For development, it checks the local target/release folder
36
35
  function getBinaryPath() {
37
- if (process.env.TRIBUNAL_FORCE_JS === "1") {
36
+ if (process.env.TRIBUNAL_FORCE_JS === '1') {
38
37
  return null;
39
38
  }
40
39
 
@@ -42,8 +41,8 @@ function getBinaryPath() {
42
41
  return process.env.TRIBUNAL_CORE_PATH;
43
42
  }
44
43
 
45
- const isWindows = os.platform() === "win32";
46
- const ext = isWindows ? ".exe" : "";
44
+ const isWindows = os.platform() === 'win32';
45
+ const ext = isWindows ? '.exe' : '';
47
46
  const platform = os.platform();
48
47
  const arch = os.arch();
49
48
 
@@ -66,14 +65,14 @@ function getBinaryPath() {
66
65
 
67
66
  // Second, try to find the binary in local dev target directories
68
67
  const candidatePaths = [
69
- path.resolve(__dirname, "..", "target", "release", `tribunal-core${ext}`),
70
- path.resolve(__dirname, "..", "target", "debug", `tribunal-core${ext}`),
71
- path.resolve(__dirname, "..", "..", "target", "release", `tribunal-core${ext}`),
72
- path.resolve(__dirname, "..", "..", "target", "debug", `tribunal-core${ext}`),
73
- path.resolve(process.cwd(), "target", "release", `tribunal-core${ext}`),
74
- path.resolve(process.cwd(), "target", "debug", `tribunal-core${ext}`),
75
- path.resolve(process.cwd(), "tribunal-kit", "target", "release", `tribunal-core${ext}`),
76
- path.resolve(process.cwd(), "tribunal-kit", "target", "debug", `tribunal-core${ext}`),
68
+ path.resolve(__dirname, '..', 'target', 'release', `tribunal-core${ext}`),
69
+ path.resolve(__dirname, '..', 'target', 'debug', `tribunal-core${ext}`),
70
+ path.resolve(__dirname, '..', '..', 'target', 'release', `tribunal-core${ext}`),
71
+ path.resolve(__dirname, '..', '..', 'target', 'debug', `tribunal-core${ext}`),
72
+ path.resolve(process.cwd(), 'target', 'release', `tribunal-core${ext}`),
73
+ path.resolve(process.cwd(), 'target', 'debug', `tribunal-core${ext}`),
74
+ path.resolve(process.cwd(), 'tribunal-kit', 'target', 'release', `tribunal-core${ext}`),
75
+ path.resolve(process.cwd(), 'tribunal-kit', 'target', 'debug', `tribunal-core${ext}`),
77
76
  ];
78
77
 
79
78
  for (const candidate of candidatePaths) {
@@ -83,12 +82,12 @@ function getBinaryPath() {
83
82
  }
84
83
 
85
84
  // Third, attempt on-demand compilation if Cargo.toml exists locally and cargo is installed
86
- const cargoTomlPath = path.resolve(__dirname, "..", "Cargo.toml");
85
+ const cargoTomlPath = path.resolve(__dirname, '..', 'Cargo.toml');
87
86
  if (fs.existsSync(cargoTomlPath)) {
88
87
  try {
89
- const buildResult = spawnSync("cargo", ["build", "--release"], {
90
- cwd: path.resolve(__dirname, ".."),
91
- stdio: "ignore",
88
+ const buildResult = spawnSync('cargo', ['build', '--release'], {
89
+ cwd: path.resolve(__dirname, '..'),
90
+ stdio: 'ignore',
92
91
  timeout: 60000,
93
92
  });
94
93
  if (buildResult.status === 0) {
@@ -105,13 +104,8 @@ function getBinaryPath() {
105
104
  return null;
106
105
  }
107
106
 
108
-
109
107
  function runRustBinary(binPath, args) {
110
- const stdio = [
111
- "inherit",
112
- "inherit",
113
- "inherit",
114
- ];
108
+ const stdio = ['inherit', 'inherit', 'inherit'];
115
109
  const result = spawnSync(binPath, args, {
116
110
  stdio: stdio,
117
111
  env: process.env,
@@ -133,8 +127,8 @@ function runRustBinary(binPath, args) {
133
127
  function runLegacyFallback() {
134
128
  // Use the modular dist/ CLI with lazy-loaded commands for faster cold-start.
135
129
  // Each command module is require()'d only when invoked (~70% fewer files loaded).
136
- const { main } = require("../dist/cli.js");
137
- main().catch((err) => {
130
+ const { main } = require('../dist/cli.js');
131
+ main().catch(err => {
138
132
  console.error(`\x1b[91m✖ Fatal Error:\x1b[0m ${err.message || err}`);
139
133
  process.exit(1);
140
134
  });
@@ -145,16 +139,16 @@ function main() {
145
139
  const args = process.argv.slice(2);
146
140
 
147
141
  // Extract the command (the first non-flag argument)
148
- const command = args.find((a) => !a.startsWith("-"));
142
+ const command = args.find(a => !a.startsWith('-'));
149
143
 
150
144
  if (command && RUST_COMMANDS.has(command)) {
151
145
  const binPath = getBinaryPath();
152
146
 
153
147
  if (binPath) {
154
148
  // For the init command, Rust needs to know where the .agent template folder is.
155
- if (command === "init") {
156
- const sourceDir = path.resolve(__dirname, "..", ".agent");
157
- args.push("--source-dir", sourceDir);
149
+ if (command === 'init') {
150
+ const sourceDir = path.resolve(__dirname, '..', '.agent');
151
+ args.push('--source-dir', sourceDir);
158
152
  }
159
153
 
160
154
  // Route to Rust engine
@@ -168,7 +162,7 @@ function main() {
168
162
  // Warn if Rust command was requested but binary is missing (in verbose mode)
169
163
  if (process.env.TK_VERBOSE || process.env.VERBOSE) {
170
164
  console.warn(
171
- "\x1b[93m⚠ Rust binary not found in target/. Falling back to JS engine.\x1b[0m",
165
+ '\x1b[93m⚠ Rust binary not found in target/. Falling back to JS engine.\x1b[0m',
172
166
  );
173
167
  }
174
168
  }
package/dist/cli.js CHANGED
@@ -121,6 +121,7 @@ function cmdHelp(quiet = false) {
121
121
  (0, logger_1.log)(cmd('context-compress', 'Compress a context file while retaining VERIFY comments'));
122
122
  (0, logger_1.log)(cmd('optimize-step', 'Apply bounded SkillOpt edits from a JSON payload'));
123
123
  (0, logger_1.log)(cmd('guardrail', 'Validate .agent/ integrity (phantom refs, count mismatches, drift)'));
124
+ (0, logger_1.log)(cmd('contract', 'AI Agent Behavioral Contract Testing (init, verify, list, trace, replay)'));
124
125
  (0, logger_1.log)(cmd('impact-tier', 'Classify task governance impact tier (0-3)'));
125
126
  (0, logger_1.log)(cmd('uninstall', 'Remove .agent/ folder from project'));
126
127
  console.log();
@@ -288,6 +289,11 @@ async function runWithUpdateCheck(command, flags) {
288
289
  await cmdGuardrail(flags, process.argv, quiet);
289
290
  break;
290
291
  }
292
+ case 'contract': {
293
+ const cmdContract = loadCmd('./commands/contract', 'cmdContract');
294
+ await cmdContract(flags, process.argv, quiet);
295
+ break;
296
+ }
291
297
  case 'validate': {
292
298
  const cmdValidate = loadCmd('./commands/validate', 'cmdValidate');
293
299
  cmdValidate(flags, process.argv, quiet);
@@ -59,6 +59,8 @@ async function cmdCase(flags, processArgs, quiet = false) {
59
59
  );
60
60
  if (!quiet) {
61
61
  (0, logger_1.log)(` ${(0, logger_1.c)('cyan', '\u25b8')} Memory bridge: case law rejection stored to memory index`);
62
+ (0, logger_1.log)(` ${(0, logger_1.c)('gray', '💡')} Tip: Auto-generate a behavioral contract to prevent recurrence:`);
63
+ (0, logger_1.log)(` ${(0, logger_1.c)('cyan', 'tk contract generate --from-case latest')}`);
62
64
  }
63
65
  } catch {
64
66
  // Non-critical — case law was still saved, memory bridge is a bonus