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.
- package/.agent/ARCHITECTURE.md +9 -6
- package/.agent/agents/accessibility-reviewer.md +23 -16
- package/.agent/agents/ai-code-reviewer.md +25 -21
- package/.agent/agents/anti-pattern-reviewer.md +12 -7
- package/.agent/agents/api-architect.md +1 -0
- package/.agent/agents/backend-specialist.md +23 -22
- package/.agent/agents/cloud-engineer.md +1 -0
- package/.agent/agents/code-archaeologist.md +1 -0
- package/.agent/agents/complexity-reviewer.md +10 -7
- package/.agent/agents/database-architect.md +3 -2
- package/.agent/agents/db-latency-auditor.md +6 -2
- package/.agent/agents/debugger.md +3 -2
- package/.agent/agents/dependency-reviewer.md +1 -0
- package/.agent/agents/devops-engineer.md +9 -8
- package/.agent/agents/documentation-writer.md +6 -5
- package/.agent/agents/explorer-agent.md +1 -0
- package/.agent/agents/frontend-reviewer.md +21 -17
- package/.agent/agents/frontend-specialist.md +23 -20
- package/.agent/agents/game-developer.md +1 -0
- package/.agent/agents/interaction-reviewer.md +10 -5
- package/.agent/agents/logic-reviewer.md +3 -0
- package/.agent/agents/minimalist-reviewer.md +6 -0
- package/.agent/agents/mobile-developer.md +7 -6
- package/.agent/agents/mobile-reviewer.md +14 -13
- package/.agent/agents/orchestrator.md +3 -0
- package/.agent/agents/penetration-tester.md +1 -0
- package/.agent/agents/performance-optimizer.md +6 -5
- package/.agent/agents/performance-reviewer.md +6 -6
- package/.agent/agents/pipeline-reviewer.md +144 -0
- package/.agent/agents/precedence-reviewer.md +1 -0
- package/.agent/agents/product-manager.md +1 -0
- package/.agent/agents/product-owner.md +1 -0
- package/.agent/agents/product-reviewer.md +12 -7
- package/.agent/agents/project-planner.md +3 -0
- package/.agent/agents/qa-automation-engineer.md +50 -43
- package/.agent/agents/resilience-reviewer.md +1 -0
- package/.agent/agents/schema-reviewer.md +1 -0
- package/.agent/agents/security-auditor.md +24 -24
- package/.agent/agents/seo-specialist.md +33 -23
- package/.agent/agents/sql-reviewer.md +5 -4
- package/.agent/agents/supervisor-agent.md +12 -2
- package/.agent/agents/swarm-worker-contracts.md +13 -13
- package/.agent/agents/swarm-worker-registry.md +51 -51
- package/.agent/agents/system-architect.md +1 -0
- package/.agent/agents/test-coverage-reviewer.md +25 -22
- package/.agent/agents/test-engineer.md +12 -11
- package/.agent/agents/throughput-optimizer.md +45 -40
- package/.agent/agents/type-safety-reviewer.md +5 -4
- package/.agent/agents/ui-ux-auditor.md +6 -4
- package/.agent/agents/ui-visual-auditor.md +3 -0
- package/.agent/agents/ux-reviewer.md +11 -6
- package/.agent/agents/visual-reviewer.md +11 -6
- package/.agent/agents/vitals-reviewer.md +5 -4
- package/.agent/config/claude.json +18 -0
- package/.agent/config/plugin.json +102 -0
- package/.agent/config/slash-commands.json +103 -0
- package/.agent/config/specialist-registry.json +415 -0
- package/.agent/config/system-prompt.md +191 -0
- package/.agent/history/architecture-graph.yaml +302 -3
- package/.agent/history/graph-cache.json +515 -45
- package/.agent/history/memory/.memory.idx +1532 -1
- package/.agent/history/memory/MEMORY.md +102 -1
- package/.agent/history/memory.db +0 -0
- package/.agent/history/snapshots/bin__adapter-install.js.json +13 -0
- package/.agent/history/snapshots/bin__global-store.js.json +15 -0
- package/.agent/history/snapshots/bin__mcp-server.js.json +19 -0
- package/.agent/history/snapshots/bin__proxy-server.js.json +20 -0
- package/.agent/history/snapshots/bin__spawn-agent.js.json +12 -0
- package/.agent/history/snapshots/bin__tk-proxy.js.json +21 -0
- package/.agent/history/snapshots/bin__tribunal-kit.js.json +9 -7
- package/.agent/history/snapshots/bin__wrapper.js.json +14 -0
- package/.agent/history/snapshots/eslint.config.js.json +1 -2
- package/.agent/history/snapshots/scripts__benchmark.js.json +14 -0
- package/.agent/history/snapshots/scripts__changelog.js.json +1 -2
- package/.agent/history/snapshots/scripts__fix-vbc.js.json +11 -0
- package/.agent/history/snapshots/scripts__stress_benchmark.js.json +15 -0
- package/.agent/history/snapshots/scripts__sync-version.js.json +1 -2
- package/.agent/history/snapshots/scripts__validate-payload.js.json +1 -2
- package/.agent/history/snapshots/scripts__visual_audit.js.json +11 -0
- package/.agent/history/snapshots/test__integration__bridges.test.js.json +1 -2
- package/.agent/history/snapshots/test__integration__graceful_degradation.test.js.json +12 -0
- package/.agent/history/snapshots/test__integration__init.test.js.json +1 -2
- package/.agent/history/snapshots/test__integration__minimal_change_pipeline.test.js.json +13 -0
- package/.agent/history/snapshots/test__integration__parallel_tribunal.test.js.json +12 -0
- package/.agent/history/snapshots/test__integration__routing.test.js.json +1 -2
- package/.agent/history/snapshots/test__integration__swarm_dispatcher.test.js.json +1 -2
- package/.agent/history/snapshots/test__integration__sync_status.test.js.json +13 -0
- package/.agent/history/snapshots/test__integration__wave2.test.js.json +1 -2
- package/.agent/history/snapshots/test__integration__wrapper.test.js.json +13 -0
- package/.agent/history/snapshots/test__unit__align.test.js.json +10 -0
- package/.agent/history/snapshots/test__unit__args.test.js.json +3 -3
- package/.agent/history/snapshots/test__unit__audit_release.test.js.json +16 -0
- package/.agent/history/snapshots/test__unit__case_law_manager.test.js.json +1 -2
- package/.agent/history/snapshots/test__unit__cicd_validator.test.js.json +12 -0
- package/.agent/history/snapshots/test__unit__compile.test.js.json +10 -0
- package/.agent/history/snapshots/test__unit__context_broker.test.js.json +1 -2
- package/.agent/history/snapshots/test__unit__contract_engine.test.js.json +13 -0
- package/.agent/history/snapshots/test__unit__copyDir.test.js.json +3 -3
- package/.agent/history/snapshots/test__unit__graph_tools.test.js.json +1 -2
- package/.agent/history/snapshots/test__unit__guardrail_engine.test.js.json +10 -0
- package/.agent/history/snapshots/test__unit__impact_classifier.test.js.json +12 -0
- package/.agent/history/snapshots/test__unit__init.test.js.json +14 -0
- package/.agent/history/snapshots/test__unit__inner_loop_validator.test.js.json +1 -2
- package/.agent/history/snapshots/test__unit__integrity_manifest.test.js.json +13 -0
- package/.agent/history/snapshots/test__unit__learn.test.js.json +11 -0
- package/.agent/history/snapshots/test__unit__marathon.test.js.json +22 -0
- package/.agent/history/snapshots/test__unit__mcp_server.test.js.json +16 -0
- package/.agent/history/snapshots/test__unit__memory.test.js.json +13 -0
- package/.agent/history/snapshots/test__unit__minimal_change.test.js.json +10 -0
- package/.agent/history/snapshots/test__unit__native.test.js.json +10 -0
- package/.agent/history/snapshots/test__unit__optimize.test.js.json +13 -0
- package/.agent/history/snapshots/test__unit__path_resolution.test.js.json +14 -0
- package/.agent/history/snapshots/test__unit__production_readiness_evidence.test.js.json +21 -0
- package/.agent/history/snapshots/test__unit__selfInstall.test.js.json +3 -3
- package/.agent/history/snapshots/test__unit__semver.test.js.json +3 -3
- package/.agent/history/snapshots/test__unit__skill_evolution.test.js.json +11 -0
- package/.agent/history/snapshots/test__unit__stress.test.js.json +15 -0
- package/.agent/history/snapshots/test__unit__swarm_dispatcher.test.js.json +3 -3
- package/.agent/history/snapshots/test__unit__utils.test.js.json +10 -0
- package/.agent/mcp_config.json +1 -6
- package/.agent/routing_index.json +2033 -263
- package/.agent/rules/GEMINI.md +11 -9
- package/.agent/rules/GEMINI_PLANNER.md +19 -21
- package/.agent/scripts/_colors.js +52 -54
- package/.agent/scripts/_utils.js +52 -53
- package/.agent/scripts/ast_context_loader.js +137 -0
- package/.agent/scripts/auto_preview.js +39 -43
- package/.agent/scripts/bundle_analyzer.js +47 -60
- package/.agent/scripts/case_law_manager.js +200 -294
- package/.agent/scripts/checklist.js +73 -94
- package/.agent/scripts/cicd_validator.js +305 -0
- package/.agent/scripts/context_broker.js +317 -412
- package/.agent/scripts/contract_engine.js +402 -0
- package/.agent/scripts/dependency_analyzer.js +112 -124
- package/.agent/scripts/graph_builder.js +75 -103
- package/.agent/scripts/graph_visualizer.js +10 -12
- package/.agent/scripts/graph_zoom.js +38 -55
- package/.agent/scripts/guardrail_engine.js +195 -145
- package/.agent/scripts/impact_classifier.js +55 -30
- package/.agent/scripts/inner_loop_validator.js +108 -159
- package/.agent/scripts/integrity_manifest.js +59 -67
- package/.agent/scripts/lint_runner.js +65 -75
- package/.agent/scripts/marathon_harness.js +131 -208
- package/.agent/scripts/memory_engine.js +581 -0
- package/.agent/scripts/minify_context.js +29 -33
- package/.agent/scripts/minimal_change_engine.js +95 -87
- package/.agent/scripts/mutation_runner.js +46 -62
- package/.agent/scripts/payload_schemas.js +146 -0
- package/.agent/scripts/pipeline_engine.js +320 -209
- package/.agent/scripts/prompt_compiler.js +166 -93
- package/.agent/scripts/schema_validator.js +73 -121
- package/.agent/scripts/security_scan.js +88 -117
- package/.agent/scripts/session_manager.js +52 -69
- package/.agent/scripts/signal_detector.js +24 -22
- package/.agent/scripts/skill_evolution.js +184 -245
- package/.agent/scripts/skill_integrator.js +35 -48
- package/.agent/scripts/socratic_gate_policy.js +15 -12
- package/.agent/scripts/strengthen_skills.js +29 -33
- package/.agent/scripts/swarm_dispatcher.js +397 -200
- package/.agent/scripts/test_runner.js +54 -56
- package/.agent/scripts/token_budget_broker.js +126 -13
- package/.agent/scripts/trace_engine.js +126 -0
- package/.agent/scripts/verify_all.js +76 -93
- package/.agent/scripts/visual_audit.js +16 -21
- package/.agent/skill_topic_map.json +22 -3
- package/.agent/skills/12-principles-of-animation/SKILL.md +7 -0
- package/.agent/skills/60fps-animation/SKILL.md +7 -0
- package/.agent/skills/accessible-animation/SKILL.md +5 -1
- package/.agent/skills/adapt/SKILL.md +7 -1
- package/.agent/skills/advanced-rag-pipelines/SKILL.md +1 -0
- package/.agent/skills/agent-organizer/SKILL.md +1 -0
- package/.agent/skills/agentic-patterns/SKILL.md +33 -25
- package/.agent/skills/agentic-workflows-2026/SKILL.md +6 -2
- package/.agent/skills/ai-app-hardening/SKILL.md +9 -8
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +7 -6
- package/.agent/skills/animation-on-scroll/SKILL.md +24 -15
- package/.agent/skills/animation-systems/SKILL.md +11 -10
- package/.agent/skills/antfu-conventions/SKILL.md +7 -2
- package/.agent/skills/api-patterns/SKILL.md +14 -10
- package/.agent/skills/api-security-auditor/SKILL.md +15 -14
- package/.agent/skills/app-builder/SKILL.md +1 -0
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +2 -2
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +1 -1
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +12 -12
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +3 -3
- package/.agent/skills/apple-design/SKILL.md +8 -7
- package/.agent/skills/architecture/SKILL.md +3 -2
- package/.agent/skills/audit-and-fix/SKILL.md +8 -5
- package/.agent/skills/authentication-best-practices/SKILL.md +9 -8
- package/.agent/skills/backend-security-expert/SKILL.md +1 -0
- package/.agent/skills/baseline-ui/SKILL.md +8 -7
- package/.agent/skills/bash-linux/SKILL.md +1 -0
- package/.agent/skills/behavioral-modes/SKILL.md +1 -0
- package/.agent/skills/better-colors/SKILL.md +11 -7
- package/.agent/skills/better-typography/SKILL.md +30 -16
- package/.agent/skills/better-ui/SKILL.md +17 -10
- package/.agent/skills/bolder/SKILL.md +6 -0
- package/.agent/skills/brainstorming/SKILL.md +6 -4
- package/.agent/skills/browser-native-ai/SKILL.md +5 -4
- package/.agent/skills/build-primitive/SKILL.md +5 -0
- package/.agent/skills/building-native-ui/SKILL.md +1 -0
- package/.agent/skills/cicd-pro/SKILL.md +2 -1
- package/.agent/skills/clarify/SKILL.md +19 -14
- package/.agent/skills/clean-code/SKILL.md +16 -15
- package/.agent/skills/cloud-architect/SKILL.md +1 -0
- package/.agent/skills/cobejs/SKILL.md +7 -9
- package/.agent/skills/code-review-checklist/SKILL.md +1 -0
- package/.agent/skills/codebase-design/SKILL.md +7 -2
- package/.agent/skills/colorize/SKILL.md +8 -3
- package/.agent/skills/compact-landing/SKILL.md +8 -3
- package/.agent/skills/company-logos/SKILL.md +6 -0
- package/.agent/skills/config-validator/SKILL.md +10 -9
- package/.agent/skills/containerization-pro/SKILL.md +6 -5
- package/.agent/skills/context-engineering-pro/SKILL.md +5 -4
- package/.agent/skills/create-design-md/SKILL.md +13 -5
- package/.agent/skills/critique/SKILL.md +10 -8
- package/.agent/skills/csharp-developer/SKILL.md +1 -0
- package/.agent/skills/data-validation-schemas/SKILL.md +28 -23
- package/.agent/skills/database-design/SKILL.md +2 -1
- package/.agent/skills/delight/SKILL.md +6 -0
- package/.agent/skills/deployment-procedures/SKILL.md +2 -1
- package/.agent/skills/design-lab/SKILL.md +5 -0
- package/.agent/skills/devops-engineer/SKILL.md +3 -2
- package/.agent/skills/devops-incident-responder/SKILL.md +2 -1
- package/.agent/skills/diagnosing-bugs/SKILL.md +12 -2
- package/.agent/skills/distill/SKILL.md +7 -2
- package/.agent/skills/documentation-templates/SKILL.md +3 -2
- package/.agent/skills/domain-modeling/SKILL.md +12 -4
- package/.agent/skills/duckdb-analytical-sql/SKILL.md +7 -3
- package/.agent/skills/edge-ai-mobile/SKILL.md +5 -1
- package/.agent/skills/edge-computing/SKILL.md +9 -8
- package/.agent/skills/emil-design-eng/SKILL.md +43 -27
- package/.agent/skills/error-resilience/SKILL.md +34 -16
- package/.agent/skills/expo-router-v4/SKILL.md +2 -1
- package/.agent/skills/extract-design-system/SKILL.md +12 -11
- package/.agent/skills/fabel-protocol/SKILL.md +24 -17
- package/.agent/skills/fixing-accessibility/SKILL.md +23 -16
- package/.agent/skills/fixing-metadata/SKILL.md +24 -13
- package/.agent/skills/fixing-motion-performance/SKILL.md +7 -5
- package/.agent/skills/framer-motion-expert/SKILL.md +29 -15
- package/.agent/skills/frontend-design/SKILL.md +21 -13
- package/.agent/skills/frontend-security-expert/SKILL.md +1 -0
- package/.agent/skills/game-design-expert/SKILL.md +1 -0
- package/.agent/skills/game-engineering-expert/SKILL.md +1 -0
- package/.agent/skills/generative-ui-expert/SKILL.md +3 -2
- package/.agent/skills/geo-fundamentals/SKILL.md +2 -1
- package/.agent/skills/git-pro/SKILL.md +10 -9
- package/.agent/skills/github-operations/SKILL.md +2 -1
- package/.agent/skills/gpt-taste/SKILL.md +7 -0
- package/.agent/skills/gsap-core/SKILL.md +26 -22
- package/.agent/skills/gsap-frameworks/SKILL.md +6 -5
- package/.agent/skills/gsap-performance/SKILL.md +4 -3
- package/.agent/skills/gsap-plugins/SKILL.md +34 -33
- package/.agent/skills/gsap-react/SKILL.md +9 -8
- package/.agent/skills/gsap-scrolltrigger/SKILL.md +34 -33
- package/.agent/skills/gsap-timeline/SKILL.md +18 -15
- package/.agent/skills/gsap-utils/SKILL.md +25 -24
- package/.agent/skills/harden/SKILL.md +9 -3
- package/.agent/skills/harness-protocol/SKILL.md +1 -0
- package/.agent/skills/i18n-localization/SKILL.md +10 -9
- package/.agent/skills/impeccable/SKILL.md +5 -0
- package/.agent/skills/improve-codebase-architecture/SKILL.md +10 -5
- package/.agent/skills/improve-ui/SKILL.md +12 -5
- package/.agent/skills/intelligent-routing/SKILL.md +7 -6
- package/.agent/skills/knowledge-graph/SKILL.md +1 -0
- package/.agent/skills/landing-page/SKILL.md +1 -0
- package/.agent/skills/lint-and-validate/SKILL.md +9 -4
- package/.agent/skills/llm-engineering/SKILL.md +55 -54
- package/.agent/skills/local-first/SKILL.md +20 -19
- package/.agent/skills/local-first-architecture/SKILL.md +6 -1
- package/.agent/skills/lottie-animation/SKILL.md +7 -3
- package/.agent/skills/marquee-loop/SKILL.md +1 -0
- package/.agent/skills/masked-reveal/SKILL.md +17 -4
- package/.agent/skills/mcp-builder/SKILL.md +13 -10
- package/.agent/skills/micro-interaction/SKILL.md +20 -5
- package/.agent/skills/mobile-design/SKILL.md +26 -15
- package/.agent/skills/monorepo-management/SKILL.md +3 -2
- package/.agent/skills/morphing-icons/SKILL.md +16 -6
- package/.agent/skills/motion-engineering/SKILL.md +19 -15
- package/.agent/skills/nextjs-react-expert/SKILL.md +26 -21
- package/.agent/skills/nodejs-best-practices/SKILL.md +89 -76
- package/.agent/skills/observability/SKILL.md +45 -44
- package/.agent/skills/opentelemetry-observability/SKILL.md +2 -1
- package/.agent/skills/page-transition-animation/SKILL.md +6 -3
- package/.agent/skills/parallel-agents/SKILL.md +7 -2
- package/.agent/skills/performance-profiling/SKILL.md +24 -13
- package/.agent/skills/plan-writing/SKILL.md +1 -0
- package/.agent/skills/platform-engineer/SKILL.md +3 -2
- package/.agent/skills/platform-engineering-opentofu/SKILL.md +1 -0
- package/.agent/skills/playwright-ai-e2e/SKILL.md +3 -2
- package/.agent/skills/playwright-best-practices/SKILL.md +29 -28
- package/.agent/skills/polish/SKILL.md +13 -12
- package/.agent/skills/powershell-windows/SKILL.md +1 -0
- package/.agent/skills/pricing-page/SKILL.md +8 -3
- package/.agent/skills/product-aware-heuristics/SKILL.md +122 -72
- package/.agent/skills/progressive-blur/SKILL.md +9 -4
- package/.agent/skills/project-idioms/SKILL.md +1 -0
- package/.agent/skills/property-based-testing/SKILL.md +10 -12
- package/.agent/skills/python-patterns/SKILL.md +1 -0
- package/.agent/skills/python-pro/SKILL.md +1 -0
- package/.agent/skills/quieter/SKILL.md +6 -0
- package/.agent/skills/react-doctor/SKILL.md +6 -0
- package/.agent/skills/react-specialist/SKILL.md +32 -28
- package/.agent/skills/readme-builder/SKILL.md +1 -0
- package/.agent/skills/realtime-patterns/SKILL.md +34 -33
- package/.agent/skills/red-team-tactics/SKILL.md +1 -0
- package/.agent/skills/redesign-skill/SKILL.md +6 -0
- package/.agent/skills/review-animations/SKILL.md +5 -2
- package/.agent/skills/review-animations/STANDARDS.md +37 -23
- package/.agent/skills/rust-pro/SKILL.md +1 -0
- package/.agent/skills/seo-fundamentals/SKILL.md +4 -3
- package/.agent/skills/server-management/SKILL.md +1 -0
- package/.agent/skills/shadcn-ui-expert/SKILL.md +28 -22
- package/.agent/skills/shape/SKILL.md +9 -2
- package/.agent/skills/skill-creator/SKILL.md +1 -0
- package/.agent/skills/soft-skill/SKILL.md +6 -0
- package/.agent/skills/sounds-on-the-web/SKILL.md +1 -0
- package/.agent/skills/sql-pro/SKILL.md +1 -0
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +1 -0
- package/.agent/skills/svg-animation/SKILL.md +16 -7
- package/.agent/skills/swiftui-expert/SKILL.md +1 -0
- package/.agent/skills/swiss-design/SKILL.md +5 -0
- package/.agent/skills/system-design-pro/SKILL.md +1 -0
- package/.agent/skills/systematic-debugging/SKILL.md +1 -0
- package/.agent/skills/tailwind-patterns/SKILL.md +25 -11
- package/.agent/skills/taste-skill/SKILL.md +6 -0
- package/.agent/skills/tdd-workflow/SKILL.md +5 -0
- package/.agent/skills/test-result-analyzer/SKILL.md +1 -0
- package/.agent/skills/testing-patterns/SKILL.md +123 -115
- package/.agent/skills/thermo-nuclear-code-quality-review/SKILL.md +5 -0
- package/.agent/skills/thinking-protocol/SKILL.md +3 -0
- package/.agent/skills/to-spring-or-not-to-spring/SKILL.md +9 -8
- package/.agent/skills/transitions-dev/SKILL.md +19 -6
- package/.agent/skills/trend-researcher/SKILL.md +1 -0
- package/.agent/skills/typescript-advanced/SKILL.md +23 -18
- package/.agent/skills/typeset/SKILL.md +10 -1
- package/.agent/skills/ui-reasoning-engine/SKILL.md +67 -48
- package/.agent/skills/ui-skill-packs/SKILL.md +6 -1
- package/.agent/skills/ui-skills-root/SKILL.md +39 -38
- package/.agent/skills/ui-ux-pro-max/SKILL.md +34 -26
- package/.agent/skills/ui-ux-researcher/SKILL.md +1 -0
- package/.agent/skills/vector-search-pgvector/SKILL.md +3 -2
- package/.agent/skills/vue-expert/SKILL.md +22 -19
- package/.agent/skills/vulnerability-scanner/SKILL.md +22 -21
- package/.agent/skills/web-accessibility-auditor/SKILL.md +2 -1
- package/.agent/skills/web-design-guidelines/SKILL.md +16 -10
- package/.agent/skills/web-quality-audit/SKILL.md +5 -0
- package/.agent/skills/webapp-testing/SKILL.md +14 -13
- package/.agent/skills/webgpu-performance/SKILL.md +1 -0
- package/.agent/skills/whimsy-injector/SKILL.md +9 -5
- package/.agent/skills/workflow-optimizer/SKILL.md +1 -0
- package/.agent/skills/zero-trust-passkeys/SKILL.md +11 -6
- package/.agent/templates/DESIGN.md +119 -110
- package/.agent/templates/design-tokens.json +9 -6
- package/.agent/workflows/acf.md +1 -0
- package/.agent/workflows/api-tester.md +1 -0
- package/.agent/workflows/audit.md +1 -0
- package/.agent/workflows/brainstorm.md +1 -0
- package/.agent/workflows/changelog.md +1 -0
- package/.agent/workflows/contract.md +60 -0
- package/.agent/workflows/create.md +1 -0
- package/.agent/workflows/debug.md +1 -0
- package/.agent/workflows/deploy.md +1 -0
- package/.agent/workflows/enhance.md +1 -0
- package/.agent/workflows/fix-ci.md +89 -0
- package/.agent/workflows/fix.md +1 -0
- package/.agent/workflows/generate.md +1 -0
- package/.agent/workflows/marathon.md +1 -0
- package/.agent/workflows/migrate.md +1 -0
- package/.agent/workflows/minimal.md +9 -7
- package/.agent/workflows/orchestrate.md +1 -0
- package/.agent/workflows/performance-benchmarker.md +1 -0
- package/.agent/workflows/pipeline.md +26 -21
- package/.agent/workflows/plan.md +1 -0
- package/.agent/workflows/preview.md +1 -0
- package/.agent/workflows/refactor.md +3 -2
- package/.agent/workflows/review-ai.md +4 -3
- package/.agent/workflows/review.md +1 -0
- package/.agent/workflows/session.md +1 -0
- package/.agent/workflows/status.md +1 -0
- package/.agent/workflows/strengthen-skills.md +1 -0
- package/.agent/workflows/super-prompt.md +1 -0
- package/.agent/workflows/swarm.md +15 -3
- package/.agent/workflows/test.md +8 -7
- package/.agent/workflows/tribunal-backend.md +3 -2
- package/.agent/workflows/tribunal-cicd.md +104 -0
- package/.agent/workflows/tribunal-database.md +1 -0
- package/.agent/workflows/tribunal-frontend.md +8 -6
- package/.agent/workflows/tribunal-full.md +2 -1
- package/.agent/workflows/tribunal-mobile.md +6 -5
- package/.agent/workflows/tribunal-performance.md +1 -0
- package/.agent/workflows/tribunal-speed.md +1 -0
- package/.agent/workflows/tribunal-ui.md +29 -21
- package/.agent/workflows/ui-ux-pro-max.md +19 -15
- package/.claude/CLAUDE.md +442 -0
- package/CONTRIBUTING.md +3 -3
- package/README.md +105 -45
- package/SECURITY.md +11 -11
- package/bin/adapter-install.js +240 -0
- package/bin/global-store.js +48 -0
- package/bin/mcp-server.js +781 -332
- package/bin/proxy-server.js +113 -0
- package/bin/spawn-agent.js +39 -0
- package/bin/tk-proxy.js +34 -0
- package/bin/tribunal-kit.js +29 -30
- package/bin/wrapper.js +40 -46
- package/dist/cli.js +6 -0
- package/dist/commands/case.js +2 -0
- package/dist/commands/contract.js +440 -0
- package/dist/commands/init.js +8 -51
- package/dist/commands/status.js +61 -30
- package/dist/commands/validate.js +22 -31
- package/dist/index.d.ts +8 -1
- package/dist/tui/banner.js +77 -0
- package/dist/tui/index.js +21 -0
- package/dist/tui/reviewer-grid.js +90 -0
- package/dist/tui/shimmer.js +91 -0
- package/dist/tui/theme.js +130 -0
- package/dist/tui/tree.js +93 -0
- package/dist/tui/wizard.js +148 -0
- package/dist/utils/helpers.js +5 -41
- package/package.json +33 -15
- package/scripts/benchmark.js +62 -86
- package/scripts/build-graph.js +71 -0
- package/scripts/changelog.js +67 -73
- package/scripts/fix-vbc.js +13 -15
- package/scripts/fix-vbc.ps1 +2 -118
- package/scripts/stress_benchmark.js +358 -0
- package/scripts/sync-version.js +71 -41
- package/scripts/validate-payload.js +23 -30
- package/scripts/visual_audit.js +23 -13
- package/.agent/history/snapshots/migrate_refs.js.json +0 -11
- package/.agent/scripts/compile_router.py +0 -112
- package/.agent/scripts/migrate_skills_frontmatter.py +0 -64
|
@@ -1,22 +1,25 @@
|
|
|
1
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
2
3
|
/**
|
|
3
|
-
* validate.js — CLI command handler for `tk validate` (JS
|
|
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
|
-
|
|
7
|
+
|
|
8
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
8
9
|
exports.cmdValidate = cmdValidate;
|
|
9
10
|
|
|
10
|
-
const fs = require(
|
|
11
|
-
const path = require(
|
|
12
|
-
const
|
|
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,
|
|
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
|
-
(
|
|
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
|
-
(
|
|
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,
|
|
33
|
-
if (fullPath.endsWith(
|
|
35
|
+
const content = fs.readFileSync(fullPath, 'utf8');
|
|
36
|
+
if (fullPath.endsWith('.json')) {
|
|
34
37
|
JSON.parse(content);
|
|
35
38
|
if (!quiet) {
|
|
36
|
-
|
|
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
|
-
|
|
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
|
-
(
|
|
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
|
-
(
|
|
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
|
+
};
|
package/dist/tui/tree.js
ADDED
|
@@ -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
|
+
};
|