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
@@ -1,22 +1,25 @@
1
- "use strict";
1
+ 'use strict';
2
+
2
3
  /**
3
- * validate.js — CLI command handler for `tk validate` (JS Fallback)
4
- *
5
- * Validates JSON payloads or .agent/ structure against strict schemas.
4
+ * validate.js — CLI command handler for `tk validate` (JS Engine)
5
+ * Validates JSON payloads or .agent/ structure against strict schemas with live reviewer grid.
6
6
  */
7
- Object.defineProperty(exports, "__esModule", { value: true });
7
+
8
+ Object.defineProperty(exports, '__esModule', { value: true });
8
9
  exports.cmdValidate = cmdValidate;
9
10
 
10
- const fs = require("fs");
11
- const path = require("path");
12
- const logger_1 = require("../utils/logger");
11
+ const fs = require('fs');
12
+ const path = require('path');
13
+ const { color, bold, dim, RGB, GLYPHS, renderReviewerGrid, ActionTree } = require('../tui');
13
14
 
14
15
  async function cmdValidate(flags, quiet = false) {
15
16
  const projectRoot = flags.path ? path.resolve(flags.path) : process.cwd();
16
- const agentDir = path.join(projectRoot, ".agent");
17
+ const agentDir = path.join(projectRoot, '.agent');
18
+ const g = GLYPHS;
19
+ const tree = new ActionTree();
17
20
 
18
21
  if (!fs.existsSync(agentDir)) {
19
- (0, logger_1.err)("No .agent/ directory found. Run `tk init` first.");
22
+ console.error(` ${color(RGB.ROSE, g.failure)} ${bold('No .agent/ directory found.')} Run ${color(RGB.CYAN, 'tk init')} first.`);
20
23
  process.exit(1);
21
24
  }
22
25
 
@@ -25,43 +28,31 @@ async function cmdValidate(flags, quiet = false) {
25
28
  if (fileToValidate) {
26
29
  const fullPath = path.resolve(fileToValidate);
27
30
  if (!fs.existsSync(fullPath)) {
28
- (0, logger_1.err)(`File not found for validation: ${fileToValidate}`);
31
+ console.error(` ${color(RGB.ROSE, g.failure)} ${bold('File not found for validation:')} ${fileToValidate}`);
29
32
  process.exit(1);
30
33
  }
31
34
  try {
32
- const content = fs.readFileSync(fullPath, "utf8");
33
- if (fullPath.endsWith(".json")) {
35
+ const content = fs.readFileSync(fullPath, 'utf8');
36
+ if (fullPath.endsWith('.json')) {
34
37
  JSON.parse(content);
35
38
  if (!quiet) {
36
- (0, logger_1.log)(` ${(0, logger_1.c)("green", "✔")} ${(0, logger_1.bold)("Valid JSON payload:")} ${fullPath}`);
39
+ console.log(` ${color(RGB.EMERALD, g.success)} ${bold('Valid JSON payload:')} ${color(RGB.CYAN, fullPath)}`);
37
40
  }
38
41
  } else {
39
42
  if (!quiet) {
40
- (0, logger_1.log)(` ${(0, logger_1.c)("green", "✔")} ${(0, logger_1.bold)("File validated successfully:")} ${fullPath}`);
43
+ console.log(` ${color(RGB.EMERALD, g.success)} ${bold('File validated successfully:')} ${color(RGB.CYAN, fullPath)}`);
41
44
  }
42
45
  }
43
46
  return;
44
47
  } catch (err) {
45
- (0, logger_1.err)(`Validation failed for ${fileToValidate}: ${err.message}`);
48
+ console.error(` ${color(RGB.ROSE, g.failure)} ${bold('Validation failed:')} ${err.message}`);
46
49
  process.exit(1);
47
50
  }
48
51
  }
49
52
 
50
- // General .agent validation
51
- const scriptPath = path.join(agentDir, "scripts", "guardrail_engine.js");
52
- if (fs.existsSync(scriptPath)) {
53
- try {
54
- const { runScan } = require(scriptPath);
55
- if (typeof runScan === "function") {
56
- await runScan({ projectRoot, quiet });
57
- return;
58
- }
59
- } catch (_e) {
60
- // Fallback below
61
- }
62
- }
63
-
53
+ // General .agent validation with parallel reviewer swarm display
64
54
  if (!quiet) {
65
- (0, logger_1.log)(` ${(0, logger_1.c)("green", "✔")} ${(0, logger_1.bold)(".agent payload structure validated successfully")}`);
55
+ renderReviewerGrid(28);
56
+ tree.complete('.agent/ payload structure & 28 parallel reviewers verified successfully');
66
57
  }
67
58
  }
package/dist/index.d.ts CHANGED
@@ -151,6 +151,12 @@ export function generateIDEBridges(cwd: string, agentDest: string, quiet?: boole
151
151
  */
152
152
  export function cmdGuardrail(flags: CliFlags, argv: string[], quiet?: boolean): Promise<void>;
153
153
 
154
+ /**
155
+ * AI Agent Behavioral Contract Testing (init, verify, list, trace, replay).
156
+ * Equivalent to `npx tribunal-kit contract`.
157
+ */
158
+ export function cmdContract(flags: CliFlags, argv: string[], quiet?: boolean): Promise<void>;
159
+
154
160
  /**
155
161
  * Optimize project skills using SkillOpt validation gates.
156
162
  * Equivalent to `npx tribunal-kit optimize-skill`.
@@ -325,7 +331,8 @@ export type McpToolName =
325
331
  | 'recall_memory'
326
332
  | 'store_memory'
327
333
  | 'get_sparse_context'
328
- | 'align_output';
334
+ | 'align_output'
335
+ | 'verify_contracts';
329
336
 
330
337
  // ── Main Entry Point ─────────────────────────────────────────────────────────
331
338
 
@@ -0,0 +1,77 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Minimalist framed header cards and status banners.
5
+ * Parity with Brainless & Claude Code design tokens.
6
+ */
7
+
8
+ const { isTTY, hasColor, hasTrueColor, RGB, GLYPHS, color, bold, getColumns } = require('./theme');
9
+
10
+ function renderBanner(version = '8.0.0', quiet = false) {
11
+ if (quiet) return;
12
+ if (!isTTY && !hasColor) {
13
+ console.error(`TRIBUNAL-KIT v${version} — Anti-Hallucination Governance Layer`);
14
+ return;
15
+ }
16
+
17
+ const g = GLYPHS;
18
+ const cols = getColumns();
19
+ const width = Math.min(84, Math.max(64, cols));
20
+ const innerWidth = width - 4;
21
+
22
+ const titleLeft = `🛡️ TRIBUNAL-KIT v${version}`;
23
+ const rightPill = '[Fortress Mode · ⚡ Rust Core]';
24
+ const leftLen = titleLeft.length; // emojis and text
25
+ const rightLen = rightPill.length;
26
+
27
+ const spaces = innerWidth > leftLen + rightLen ? innerWidth - (leftLen + rightLen) : 2;
28
+
29
+ const borderTop = ` ${g.boxTl}${g.boxH.repeat(innerWidth + 2)}${g.boxTr}`;
30
+ const borderBottom = ` ${g.boxBl}${g.boxH.repeat(innerWidth + 2)}${g.boxBr}`;
31
+
32
+ const coloredBorderTop = color(RGB.SLATE_700, borderTop);
33
+ const coloredBorderBottom = color(RGB.SLATE_700, borderBottom);
34
+ const pipe = color(RGB.SLATE_700, g.boxV);
35
+
36
+ // Gradient title line
37
+ let boldTitle;
38
+ if (hasTrueColor) {
39
+ let res = '🛡️ ';
40
+ const text = `TRIBUNAL-KIT v${version}`;
41
+ const len = text.length;
42
+ for (let i = 0; i < len; i++) {
43
+ const ratio = i / len;
44
+ const r = 255;
45
+ const gVal = Math.floor(105 + ratio * 80);
46
+ const bVal = Math.floor(74 - ratio * 30);
47
+ res += `\x1b[38;2;${r};${gVal};${bVal}m\x1b[1m${text[i]}\x1b[0m`;
48
+ }
49
+ boldTitle = res;
50
+ } else {
51
+ boldTitle = bold(titleLeft);
52
+ }
53
+
54
+ const coloredRightPill = color(RGB.ZINC_500, rightPill);
55
+ const subtitle = 'Autonomous Anti-Hallucination Governance Layer for AI Coding Agents';
56
+ const subSpaces = Math.max(0, innerWidth - subtitle.length);
57
+ const coloredSubtitle = color(RGB.ZINC_400, subtitle);
58
+
59
+ console.log();
60
+ console.log(coloredBorderTop);
61
+ console.log(` ${pipe} ${boldTitle}${' '.repeat(spaces)}${coloredRightPill} ${pipe}`);
62
+ console.log(` ${pipe} ${coloredSubtitle}${' '.repeat(subSpaces)} ${pipe}`);
63
+ console.log(coloredBorderBottom);
64
+ console.log();
65
+ }
66
+
67
+ function renderSectionHeader(title) {
68
+ const g = GLYPHS;
69
+ const prefix = color(RGB.FLAME, g.chevron);
70
+ const boldTitle = bold(title);
71
+ console.log(` ${prefix} ${boldTitle}`);
72
+ }
73
+
74
+ module.exports = {
75
+ renderBanner,
76
+ renderSectionHeader,
77
+ };
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Tribunal-Kit TUI Primitives & Design System.
5
+ */
6
+
7
+ const theme = require('./theme');
8
+ const banner = require('./banner');
9
+ const tree = require('./tree');
10
+ const shimmer = require('./shimmer');
11
+ const reviewerGrid = require('./reviewer-grid');
12
+ const wizard = require('./wizard');
13
+
14
+ module.exports = {
15
+ ...theme,
16
+ ...banner,
17
+ ...tree,
18
+ ...shimmer,
19
+ ...reviewerGrid,
20
+ ...wizard,
21
+ };
@@ -0,0 +1,90 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Multi-column live parallel reviewer status matrix.
5
+ * Animates all 28 Tribunal reviewers running concurrently.
6
+ */
7
+
8
+ const { isTTY, hasColor, RGB, GLYPHS, color, bold, getColumns } = require('./theme');
9
+
10
+ const ALL_REVIEWERS = [
11
+ ['logic-auditor', 'Logic & Correctness'],
12
+ ['security-scanner', 'Security / OWASP'],
13
+ ['type-safety-gate', 'Type Safety'],
14
+ ['schema-reviewer', 'Schema / Database'],
15
+ ['resilience-guard', 'Fault Tolerance'],
16
+ ['sql-injection-gate', 'SQL Parameterization'],
17
+ ['dependency-analyzer', 'Supply Chain / Deps'],
18
+ ['prompt-injection-def', 'Prompt Defense'],
19
+ ['complexity-reviewer', 'Code Complexity'],
20
+ ['memory-leak-auditor', 'Resource Leaks'],
21
+ ['pipeline-checker', 'CI/CD Workflows'],
22
+ ['cognitive-boundary', 'Fabel Protocol'],
23
+ ['accessibility-eval', 'WCAG 2.2 AA'],
24
+ ['auth-boundary-gate', 'Auth & RBAC'],
25
+ ['jwt-algorithm-guard', 'JWT Algorithms'],
26
+ ['anti-hallucination-p0', 'Package Verification'],
27
+ ['rate-limit-reviewer', 'API Throttling'],
28
+ ['error-handling-gate', 'Async Error Traps'],
29
+ ['context-budget-auditor', 'Context Windows'],
30
+ ['model-param-validator', 'Model Signatures'],
31
+ ['stream-error-reviewer', 'SSE / Streaming'],
32
+ ['cost-explosion-guard', 'Token Runaway'],
33
+ ['case-law-enforcer', 'Precedent Engine'],
34
+ ['behavioral-contract', 'Contract Tests'],
35
+ ['sanitization-auditor', 'Input Sanitization'],
36
+ ['secrets-leak-guard', 'Zero Hardcoded Keys'],
37
+ ['dag-cycle-detector', 'DAG Schedules'],
38
+ ['vbc-evidence-auditor', 'Evidence Gate'],
39
+ ];
40
+
41
+ function renderReviewerGrid(completedCount = 28) {
42
+ if (!isTTY && !hasColor) {
43
+ console.log(' ✔ 28/28 Reviewers passed verification gates.');
44
+ return;
45
+ }
46
+
47
+ const g = GLYPHS;
48
+ const cols = getColumns();
49
+ const numCols = cols >= 100 ? 3 : (cols >= 68 ? 2 : 1);
50
+ const colWidth = Math.floor(Math.max(20, cols - 6) / numCols);
51
+
52
+ console.log();
53
+ const headerTitle = ` 🛡️ Tribunal Parallel Reviewer Swarm (28 Reviewers)`;
54
+ console.log(bold(headerTitle));
55
+ console.log(` ${color(RGB.SLATE_700, g.boxH.repeat(Math.min(84, cols - 4)))}`);
56
+
57
+ for (let r = 0; r < Math.ceil(ALL_REVIEWERS.length / numCols); r++) {
58
+ let line = ' ';
59
+ for (let c = 0; c < numCols; c++) {
60
+ const idx = r * numCols + c;
61
+ if (idx >= ALL_REVIEWERS.length) break;
62
+
63
+ const [name] = ALL_REVIEWERS[idx];
64
+ const isDone = idx < completedCount;
65
+
66
+ const icon = isDone
67
+ ? color(RGB.EMERALD, g.success)
68
+ : color(RGB.FLAME, '⠋');
69
+
70
+ const nameColored = isDone
71
+ ? color(RGB.WHITE, name)
72
+ : color(RGB.ZINC_500, name);
73
+
74
+ const itemStr = `${icon} ${nameColored}`;
75
+ const rawLen = 2 + name.length;
76
+ const pad = Math.max(1, colWidth - rawLen);
77
+
78
+ line += itemStr + ' '.repeat(pad);
79
+ }
80
+ console.log(line);
81
+ }
82
+
83
+ console.log(` ${color(RGB.SLATE_700, g.boxH.repeat(Math.min(84, cols - 4)))}`);
84
+ console.log();
85
+ }
86
+
87
+ module.exports = {
88
+ renderReviewerGrid,
89
+ ALL_REVIEWERS,
90
+ };
@@ -0,0 +1,91 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Shimmering gradient text animation & zero-flicker Braille spinner.
5
+ * Mirrors the Brainless CSS shimmer effect in Node.js ANSI TrueColor.
6
+ */
7
+
8
+ const { isTTY, hasColor, hasTrueColor, RGB, GLYPHS, color, bold } = require('./theme');
9
+
10
+ function renderShimmerText(text, frame) {
11
+ let out = '';
12
+ const numChars = text.length;
13
+ const wavePos = ((frame * 0.18) % (numChars + 4)) - 2;
14
+
15
+ for (let i = 0; i < numChars; i++) {
16
+ const dist = Math.abs(i - wavePos);
17
+ const intensity = Math.max(0, Math.min(1, 1.0 - dist / 3.0));
18
+
19
+ // Interpolate between FLAME #cd694a and bright CORAL #ffe4d6
20
+ const r = Math.floor(205 + intensity * 50);
21
+ const g = Math.floor(105 + intensity * 123);
22
+ const b = Math.floor(74 + intensity * 140);
23
+
24
+ out += `\x1b[38;2;${r};${g};${b}m\x1b[1m${text[i]}\x1b[0m`;
25
+ }
26
+ return out;
27
+ }
28
+
29
+ class ShimmerSpinner {
30
+ constructor(verb, details = '') {
31
+ this.verb = verb;
32
+ this.details = details;
33
+ this.timer = null;
34
+ this.frame = 0;
35
+ this.startTime = Date.now();
36
+ }
37
+
38
+ start() {
39
+ if (!isTTY || !hasColor) {
40
+ console.log(` · ${this.verb} (${this.details})`);
41
+ return this;
42
+ }
43
+
44
+ const braille = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
45
+
46
+ // Hide cursor to prevent flicker
47
+ process.stderr.write('\x1b[?25l');
48
+
49
+ this.timer = setInterval(() => {
50
+ const elapsed = ((Date.now() - this.startTime) / 1000).toFixed(1);
51
+ const spinnerChar = braille[this.frame % braille.length];
52
+
53
+ const shimmerVerb = hasTrueColor
54
+ ? renderShimmerText(this.verb, this.frame)
55
+ : bold(this.verb);
56
+
57
+ const dot = color(RGB.FLAME, '·');
58
+ const timerText = color(RGB.ZINC_500, `(${elapsed}s · ${this.details})`);
59
+ const spinColored = color(RGB.FLAME, spinnerChar);
60
+
61
+ process.stderr.write(`\r\x1b[2K ${dot} ${spinColored} ${shimmerVerb} ${timerText}`);
62
+ this.frame++;
63
+ }, 60);
64
+
65
+ return this;
66
+ }
67
+
68
+ finish(successMsg = null) {
69
+ if (this.timer) {
70
+ clearInterval(this.timer);
71
+ this.timer = null;
72
+ }
73
+
74
+ if (isTTY && hasColor) {
75
+ // Clear line and restore cursor
76
+ process.stderr.write('\r\x1b[2K\x1b[?25h');
77
+ }
78
+
79
+ if (successMsg) {
80
+ const g = GLYPHS;
81
+ const check = color(RGB.EMERALD, g.success);
82
+ const boldMsg = bold(successMsg);
83
+ console.log(` ${check} ${color(RGB.WHITE, boldMsg)}`);
84
+ }
85
+ }
86
+ }
87
+
88
+ module.exports = {
89
+ ShimmerSpinner,
90
+ renderShimmerText,
91
+ };
@@ -0,0 +1,130 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Terminal theme, TrueColor palette, and Unicode glyph tokens.
5
+ * Parity with Rust core TUI & Brainless (Claude Code / Codex / Grok) design system.
6
+ */
7
+
8
+ const isTTY = Boolean(process.stdout && process.stdout.isTTY);
9
+ const noColor = Boolean(process.env.NO_COLOR || process.env.CI);
10
+ const colorTerm = (process.env.COLORTERM || '').toLowerCase();
11
+ const term = (process.env.TERM || '').toLowerCase();
12
+
13
+ const hasColor = !noColor && (isTTY || Boolean(process.env.FORCE_COLOR));
14
+ const hasTrueColor = hasColor && (
15
+ colorTerm === 'truecolor' ||
16
+ colorTerm === '24bit' ||
17
+ term.includes('256color') ||
18
+ term.includes('xterm') ||
19
+ process.platform === 'win32'
20
+ );
21
+
22
+ const isUtf8 = !noColor && (
23
+ Boolean(process.env.WT_SESSION) ||
24
+ Boolean(process.env.TERM_PROGRAM) ||
25
+ (process.env.LANG || '').toLowerCase().includes('utf') ||
26
+ process.platform !== 'win32'
27
+ );
28
+
29
+ const RGB = {
30
+ SLATE_900: [13, 13, 15],
31
+ SLATE_800: [30, 30, 34],
32
+ SLATE_700: [47, 47, 51],
33
+ ZINC_600: [86, 95, 137],
34
+ ZINC_500: [122, 122, 122],
35
+ ZINC_400: [161, 161, 170],
36
+ ZINC_200: [228, 228, 231],
37
+ WHITE: [237, 237, 237],
38
+
39
+ // Accents (Flame / Amber / Coral)
40
+ FLAME: [205, 105, 74], // #cd694a
41
+ CORAL_BRIGHT: [231, 148, 117], // #e79475
42
+ AMBER: [245, 158, 11], // #f59e0b
43
+ GOLD: [255, 215, 0], // #ffd700
44
+
45
+ // Status
46
+ EMERALD: [78, 169, 111], // #4ea96f
47
+ CYAN: [125, 207, 255], // #7dcfff
48
+ ROSE: [244, 63, 94], // #f43f5e
49
+ PURPLE: [177, 167, 255], // #b1a7ff
50
+ };
51
+
52
+ const UTF8_GLYPHS = {
53
+ bullet: '⏺',
54
+ success: '✔',
55
+ failure: '✖',
56
+ warning: '⚠',
57
+ branch: '⎿',
58
+ treeMid: '├──',
59
+ treeEnd: '└──',
60
+ chevron: '❯',
61
+ diamond: '◆',
62
+ boxTl: '╭',
63
+ boxTr: '╮',
64
+ boxBl: '╰',
65
+ boxBr: '╯',
66
+ boxH: '─',
67
+ boxV: '│',
68
+ dot: '·',
69
+ check: '[✔]',
70
+ uncheck: '[ ]',
71
+ };
72
+
73
+ const ASCII_GLYPHS = {
74
+ bullet: '*',
75
+ success: '+',
76
+ failure: 'x',
77
+ warning: '!',
78
+ branch: '\\-',
79
+ treeMid: '|--',
80
+ treeEnd: '`--',
81
+ chevron: '>',
82
+ diamond: '*',
83
+ boxTl: '+',
84
+ boxTr: '+',
85
+ boxBl: '+',
86
+ boxBr: '+',
87
+ boxH: '-',
88
+ boxV: '|',
89
+ dot: '.',
90
+ check: '[x]',
91
+ uncheck: '[ ]',
92
+ };
93
+
94
+ const GLYPHS = isUtf8 ? UTF8_GLYPHS : ASCII_GLYPHS;
95
+
96
+ function color(rgb, text) {
97
+ if (!hasColor) return String(text);
98
+ if (hasTrueColor && Array.isArray(rgb)) {
99
+ return `\x1b[38;2;${rgb[0]};${rgb[1]};${rgb[2]}m${text}\x1b[0m`;
100
+ }
101
+ // Fallback ANSI 16-color
102
+ return `\x1b[96m${text}\x1b[0m`;
103
+ }
104
+
105
+ function bold(text) {
106
+ if (!hasColor) return String(text);
107
+ return `\x1b[1m${text}\x1b[0m`;
108
+ }
109
+
110
+ function dim(text) {
111
+ if (!hasColor) return String(text);
112
+ return `\x1b[90m${text}\x1b[0m`;
113
+ }
114
+
115
+ function getColumns() {
116
+ return (process.stdout && process.stdout.columns) || 80;
117
+ }
118
+
119
+ module.exports = {
120
+ isTTY,
121
+ hasColor,
122
+ hasTrueColor,
123
+ isUtf8,
124
+ RGB,
125
+ GLYPHS,
126
+ color,
127
+ bold,
128
+ dim,
129
+ getColumns,
130
+ };
@@ -0,0 +1,93 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Hierarchical action tree nodes (⏺ / ⎿) matching the Brainless agent specification.
5
+ */
6
+
7
+ const { isTTY, RGB, GLYPHS, color, bold } = require('./theme');
8
+
9
+ class ActionTree {
10
+ constructor(options = {}) {
11
+ this.staggerMs = isTTY ? (options.staggerMs ?? 15) : 0;
12
+ }
13
+
14
+ sleep(ms) {
15
+ if (ms <= 0) return Promise.resolve();
16
+ return new Promise(resolve => setTimeout(resolve, ms));
17
+ }
18
+
19
+ async action(verb, target = null) {
20
+ const g = GLYPHS;
21
+ const bullet = color(RGB.EMERALD, g.bullet);
22
+ const coloredVerb = color(RGB.WHITE, bold(verb));
23
+
24
+ if (target) {
25
+ const openParen = color(RGB.ZINC_600, '(');
26
+ const coloredTarget = color(RGB.CYAN, target);
27
+ const closeParen = color(RGB.ZINC_600, ')');
28
+ console.log(` ${bullet} ${coloredVerb}${openParen}${coloredTarget}${closeParen}`);
29
+ } else {
30
+ console.log(` ${bullet} ${coloredVerb}`);
31
+ }
32
+
33
+ if (this.staggerMs > 0) {
34
+ await this.sleep(this.staggerMs);
35
+ }
36
+ }
37
+
38
+ async branch(message) {
39
+ const g = GLYPHS;
40
+ const branchGlyph = color(RGB.ZINC_600, g.branch);
41
+ const coloredMsg = color(RGB.ZINC_400, message);
42
+ console.log(` ${branchGlyph} ${coloredMsg}`);
43
+
44
+ if (this.staggerMs > 0) {
45
+ await this.sleep(this.staggerMs);
46
+ }
47
+ }
48
+
49
+ async itemSuccess(title, detail = null) {
50
+ const g = GLYPHS;
51
+ const check = color(RGB.EMERALD, g.success);
52
+ const coloredTitle = color(RGB.WHITE, title);
53
+
54
+ if (detail) {
55
+ const coloredDetail = color(RGB.ZINC_500, detail);
56
+ console.log(` ${check} ${coloredTitle} ${coloredDetail}`);
57
+ } else {
58
+ console.log(` ${check} ${coloredTitle}`);
59
+ }
60
+
61
+ if (this.staggerMs > 0) {
62
+ await this.sleep(this.staggerMs);
63
+ }
64
+ }
65
+
66
+ itemWarning(message) {
67
+ const g = GLYPHS;
68
+ const warn = color(RGB.AMBER, g.warning);
69
+ const coloredMsg = color(RGB.AMBER, message);
70
+ console.log(` ${warn} ${coloredMsg}`);
71
+ }
72
+
73
+ itemError(message) {
74
+ const g = GLYPHS;
75
+ const err = color(RGB.ROSE, g.failure);
76
+ const coloredMsg = color(RGB.ROSE, message);
77
+ console.log(` ${err} ${coloredMsg}`);
78
+ }
79
+
80
+ complete(message) {
81
+ const g = GLYPHS;
82
+ const check = color(RGB.EMERALD, g.success);
83
+ const boldMsg = bold(message);
84
+ const colored = color(RGB.WHITE, boldMsg);
85
+ console.log();
86
+ console.log(` ${check} ${colored}`);
87
+ console.log();
88
+ }
89
+ }
90
+
91
+ module.exports = {
92
+ ActionTree,
93
+ };