tribunal-kit 9.0.0 → 9.0.1
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 +2 -2
- package/.agent/agents/backend-specialist.md +1 -1
- package/.agent/agents/code-archaeologist.md +1 -1
- package/.agent/agents/database-architect.md +1 -1
- package/.agent/agents/debugger.md +1 -1
- package/.agent/agents/devops-engineer.md +1 -1
- package/.agent/agents/documentation-writer.md +1 -1
- package/.agent/agents/explorer-agent.md +1 -1
- package/.agent/agents/game-developer.md +1 -1
- package/.agent/agents/minimalist-reviewer.md +1 -1
- package/.agent/agents/mobile-developer.md +1 -1
- package/.agent/agents/orchestrator.md +1 -1
- package/.agent/agents/penetration-tester.md +1 -1
- package/.agent/agents/performance-optimizer.md +1 -1
- package/.agent/agents/product-manager.md +1 -1
- package/.agent/agents/product-owner.md +1 -1
- package/.agent/agents/project-planner.md +1 -1
- package/.agent/agents/qa-automation-engineer.md +1 -1
- package/.agent/agents/seo-specialist.md +1 -1
- package/.agent/agents/test-engineer.md +1 -1
- package/.agent/config/slash-commands.json +13 -1
- package/.agent/config/system-prompt.md +21 -7
- package/.agent/routing_index.json +1546 -268
- package/.agent/scripts/browser_audit.js +94 -0
- package/.agent/scripts/context_compiler.js +9 -0
- package/.agent/scripts/prompt_compiler.js +105 -13
- package/.agent/skill_topic_map.json +2 -1
- package/.agent/skills/12-principles-of-animation/SKILL.md +63 -25
- package/.agent/skills/60fps-animation/SKILL.md +68 -24
- package/.agent/skills/accessible-animation/SKILL.md +208 -44
- package/.agent/skills/adapt/SKILL.md +63 -25
- package/.agent/skills/advanced-rag-pipelines/SKILL.md +65 -25
- package/.agent/skills/agent-organizer/SKILL.md +60 -31
- package/.agent/skills/agentic-patterns/SKILL.md +60 -31
- package/.agent/skills/agentic-workflows-2026/SKILL.md +67 -27
- package/.agent/skills/ai-app-hardening/SKILL.md +67 -27
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +59 -31
- package/.agent/skills/animation-on-scroll/SKILL.md +187 -51
- package/.agent/skills/animation-systems/SKILL.md +230 -40
- package/.agent/skills/antfu-conventions/SKILL.md +64 -26
- package/.agent/skills/api-patterns/SKILL.md +61 -31
- package/.agent/skills/api-security-auditor/SKILL.md +59 -31
- package/.agent/skills/app-builder/SKILL.md +61 -31
- package/.agent/skills/appflow-wireframe/SKILL.md +62 -33
- package/.agent/skills/apple-design/SKILL.md +63 -25
- package/.agent/skills/architecture/SKILL.md +61 -31
- package/.agent/skills/audit-and-fix/SKILL.md +63 -25
- package/.agent/skills/authentication-best-practices/SKILL.md +59 -31
- package/.agent/skills/backend-security-expert/SKILL.md +61 -31
- package/.agent/skills/baseline-ui/SKILL.md +63 -25
- package/.agent/skills/bash-linux/SKILL.md +59 -31
- package/.agent/skills/behavioral-modes/SKILL.md +60 -31
- package/.agent/skills/better-colors/SKILL.md +63 -25
- package/.agent/skills/better-typography/SKILL.md +63 -36
- package/.agent/skills/better-ui/SKILL.md +64 -24
- package/.agent/skills/bolder/SKILL.md +63 -25
- package/.agent/skills/brainstorming/SKILL.md +61 -31
- package/.agent/skills/browser-audit/SKILL.md +170 -0
- package/.agent/skills/browser-native-ai/SKILL.md +64 -26
- package/.agent/skills/build-primitive/SKILL.md +63 -25
- package/.agent/skills/building-native-ui/SKILL.md +59 -31
- package/.agent/skills/cicd-pro/SKILL.md +65 -25
- package/.agent/skills/clarify/SKILL.md +63 -25
- package/.agent/skills/clean-code/SKILL.md +59 -31
- package/.agent/skills/cloud-architect/SKILL.md +65 -25
- package/.agent/skills/cobejs/SKILL.md +63 -25
- package/.agent/skills/code-review-checklist/SKILL.md +59 -31
- package/.agent/skills/codebase-design/SKILL.md +65 -25
- package/.agent/skills/colorize/SKILL.md +63 -25
- package/.agent/skills/compact-landing/SKILL.md +63 -25
- package/.agent/skills/company-logos/SKILL.md +63 -25
- package/.agent/skills/config-validator/SKILL.md +59 -31
- package/.agent/skills/containerization-pro/SKILL.md +65 -25
- package/.agent/skills/context-engineering-pro/SKILL.md +67 -27
- package/.agent/skills/create-design-md/SKILL.md +63 -25
- package/.agent/skills/critique/SKILL.md +64 -25
- package/.agent/skills/csharp-developer/SKILL.md +59 -31
- package/.agent/skills/data-validation-schemas/SKILL.md +59 -31
- package/.agent/skills/database-design/SKILL.md +61 -31
- package/.agent/skills/delight/SKILL.md +63 -25
- package/.agent/skills/deployment-procedures/SKILL.md +59 -31
- package/.agent/skills/design-lab/SKILL.md +65 -26
- package/.agent/skills/devops-engineer/SKILL.md +59 -31
- package/.agent/skills/devops-incident-responder/SKILL.md +59 -31
- package/.agent/skills/diagnosing-bugs/SKILL.md +64 -27
- package/.agent/skills/distill/SKILL.md +63 -25
- package/.agent/skills/documentation-templates/SKILL.md +59 -31
- package/.agent/skills/domain-modeling/SKILL.md +64 -26
- package/.agent/skills/duckdb-analytical-sql/SKILL.md +66 -26
- package/.agent/skills/edge-ai-mobile/SKILL.md +66 -26
- package/.agent/skills/edge-computing/SKILL.md +59 -31
- package/.agent/skills/emil-design-eng/SKILL.md +64 -24
- package/.agent/skills/error-resilience/SKILL.md +59 -31
- package/.agent/skills/expo-router-v4/SKILL.md +65 -26
- package/.agent/skills/extract-design-system/SKILL.md +59 -31
- package/.agent/skills/fabel-protocol/SKILL.md +64 -25
- package/.agent/skills/fixing-accessibility/SKILL.md +63 -25
- package/.agent/skills/fixing-metadata/SKILL.md +63 -25
- package/.agent/skills/fixing-motion-performance/SKILL.md +63 -25
- package/.agent/skills/framer-motion-expert/SKILL.md +68 -30
- package/.agent/skills/frontend-design/SKILL.md +63 -25
- package/.agent/skills/frontend-security-expert/SKILL.md +61 -31
- package/.agent/skills/game-design-expert/SKILL.md +59 -31
- package/.agent/skills/game-engineering-expert/SKILL.md +59 -31
- package/.agent/skills/generative-ui-expert/SKILL.md +64 -26
- package/.agent/skills/geo-fundamentals/SKILL.md +59 -31
- package/.agent/skills/git-pro/SKILL.md +65 -25
- package/.agent/skills/github-operations/SKILL.md +59 -31
- package/.agent/skills/gpt-taste/SKILL.md +63 -25
- package/.agent/skills/gsap-core/SKILL.md +65 -25
- package/.agent/skills/gsap-frameworks/SKILL.md +65 -25
- package/.agent/skills/gsap-performance/SKILL.md +65 -25
- package/.agent/skills/gsap-plugins/SKILL.md +65 -25
- package/.agent/skills/gsap-react/SKILL.md +65 -25
- package/.agent/skills/gsap-scrolltrigger/SKILL.md +65 -25
- package/.agent/skills/gsap-timeline/SKILL.md +65 -25
- package/.agent/skills/gsap-utils/SKILL.md +65 -25
- package/.agent/skills/harden/SKILL.md +63 -25
- package/.agent/skills/harness-protocol/SKILL.md +64 -25
- package/.agent/skills/i18n-localization/SKILL.md +59 -31
- package/.agent/skills/impeccable/SKILL.md +63 -25
- package/.agent/skills/improve-codebase-architecture/SKILL.md +64 -26
- package/.agent/skills/improve-ui/SKILL.md +63 -25
- package/.agent/skills/intelligent-routing/SKILL.md +63 -23
- package/.agent/skills/knowledge-graph/SKILL.md +64 -25
- package/.agent/skills/landing-page/SKILL.md +63 -25
- package/.agent/skills/lint-and-validate/SKILL.md +59 -31
- package/.agent/skills/llm-engineering/SKILL.md +59 -31
- package/.agent/skills/local-first/SKILL.md +59 -31
- package/.agent/skills/local-first-architecture/SKILL.md +64 -24
- package/.agent/skills/lottie-animation/SKILL.md +63 -25
- package/.agent/skills/marquee-loop/SKILL.md +63 -25
- package/.agent/skills/masked-reveal/SKILL.md +246 -55
- package/.agent/skills/mcp-builder/SKILL.md +59 -31
- package/.agent/skills/micro-interaction/SKILL.md +255 -61
- package/.agent/skills/mobile-design/SKILL.md +61 -31
- package/.agent/skills/monorepo-management/SKILL.md +59 -31
- package/.agent/skills/morphing-icons/SKILL.md +366 -51
- package/.agent/skills/motion-engineering/SKILL.md +64 -26
- package/.agent/skills/nextjs-react-expert/SKILL.md +61 -31
- package/.agent/skills/nodejs-best-practices/SKILL.md +59 -31
- package/.agent/skills/observability/SKILL.md +59 -31
- package/.agent/skills/opentelemetry-observability/SKILL.md +66 -26
- package/.agent/skills/page-transition-animation/SKILL.md +63 -25
- package/.agent/skills/parallel-agents/SKILL.md +60 -31
- package/.agent/skills/performance-profiling/SKILL.md +60 -31
- package/.agent/skills/plan-writing/SKILL.md +59 -31
- package/.agent/skills/platform-engineer/SKILL.md +59 -31
- package/.agent/skills/platform-engineering-opentofu/SKILL.md +66 -27
- package/.agent/skills/playwright-ai-e2e/SKILL.md +67 -27
- package/.agent/skills/playwright-best-practices/SKILL.md +60 -31
- package/.agent/skills/polish/SKILL.md +63 -25
- package/.agent/skills/powershell-windows/SKILL.md +59 -31
- package/.agent/skills/pricing-page/SKILL.md +63 -25
- package/.agent/skills/product-aware-heuristics/SKILL.md +63 -25
- package/.agent/skills/progressive-blur/SKILL.md +63 -25
- package/.agent/skills/project-idioms/SKILL.md +60 -36
- package/.agent/skills/property-based-testing/SKILL.md +67 -27
- package/.agent/skills/python-patterns/SKILL.md +59 -31
- package/.agent/skills/python-pro/SKILL.md +61 -31
- package/.agent/skills/quieter/SKILL.md +63 -25
- package/.agent/skills/react-doctor/SKILL.md +63 -25
- package/.agent/skills/react-specialist/SKILL.md +61 -31
- package/.agent/skills/readme-builder/SKILL.md +59 -31
- package/.agent/skills/realtime-patterns/SKILL.md +59 -31
- package/.agent/skills/red-team-tactics/SKILL.md +59 -31
- package/.agent/skills/redesign-skill/SKILL.md +63 -25
- package/.agent/skills/review-animations/SKILL.md +64 -26
- package/.agent/skills/rust-pro/SKILL.md +61 -31
- package/.agent/skills/seo-fundamentals/SKILL.md +59 -31
- package/.agent/skills/server-management/SKILL.md +59 -31
- package/.agent/skills/shadcn-ui-expert/SKILL.md +59 -31
- package/.agent/skills/shape/SKILL.md +64 -25
- package/.agent/skills/skill-creator/SKILL.md +66 -24
- package/.agent/skills/soft-skill/SKILL.md +63 -25
- package/.agent/skills/sounds-on-the-web/SKILL.md +63 -25
- package/.agent/skills/sql-pro/SKILL.md +59 -31
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +59 -31
- package/.agent/skills/svg-animation/SKILL.md +369 -51
- package/.agent/skills/swiftui-expert/SKILL.md +59 -31
- package/.agent/skills/swiss-design/SKILL.md +63 -25
- package/.agent/skills/system-design-pro/SKILL.md +65 -25
- package/.agent/skills/systematic-debugging/SKILL.md +60 -31
- package/.agent/skills/tailwind-patterns/SKILL.md +59 -31
- package/.agent/skills/taste-skill/SKILL.md +63 -25
- package/.agent/skills/tdd-workflow/SKILL.md +66 -25
- package/.agent/skills/test-result-analyzer/SKILL.md +59 -32
- package/.agent/skills/testing-patterns/SKILL.md +60 -31
- package/.agent/skills/thermo-nuclear-code-quality-review/SKILL.md +64 -26
- package/.agent/skills/thinking-protocol/SKILL.md +58 -34
- package/.agent/skills/to-spring-or-not-to-spring/SKILL.md +63 -25
- package/.agent/skills/transitions-dev/SKILL.md +63 -25
- package/.agent/skills/trend-researcher/SKILL.md +58 -32
- package/.agent/skills/typescript-advanced/SKILL.md +59 -32
- package/.agent/skills/typeset/SKILL.md +63 -25
- package/.agent/skills/ui-reasoning-engine/SKILL.md +63 -25
- package/.agent/skills/ui-skill-packs/SKILL.md +64 -24
- package/.agent/skills/ui-skills-root/SKILL.md +63 -25
- package/.agent/skills/ui-ux-pro-max/SKILL.md +64 -24
- package/.agent/skills/ui-ux-researcher/SKILL.md +58 -32
- package/.agent/skills/vector-search-pgvector/SKILL.md +66 -26
- package/.agent/skills/verification-before-completion/SKILL.md +69 -16
- package/.agent/skills/vue-expert/SKILL.md +61 -31
- package/.agent/skills/vulnerability-scanner/SKILL.md +61 -31
- package/.agent/skills/web-accessibility-auditor/SKILL.md +59 -31
- package/.agent/skills/web-design-guidelines/SKILL.md +63 -25
- package/.agent/skills/web-quality-audit/SKILL.md +63 -25
- package/.agent/skills/webapp-testing/SKILL.md +60 -31
- package/.agent/skills/webgpu-performance/SKILL.md +64 -26
- package/.agent/skills/whimsy-injector/SKILL.md +58 -32
- package/.agent/skills/workflow-optimizer/SKILL.md +58 -31
- package/.agent/skills/zero-trust-passkeys/SKILL.md +66 -26
- package/.agent/templates/sdd/implementer-prompt.md +10 -1
- package/.agent/templates/sdd/re-review-prompt.md +9 -1
- package/.agent/templates/sdd/task-reviewer-prompt.md +20 -1
- package/.agent/workflows/audit-live.md +52 -0
- package/.agent/workflows/compare-web.md +35 -0
- package/.agent/workflows/context.md +100 -0
- package/.agent/workflows/plan.md +1 -1
- package/.agent/workflows/skill-enhancement-engine.md +88 -0
- package/.agent/workflows/super-prompt.md +101 -21
- package/.agents/skills/12-principles-of-animation/SKILL.md +126 -0
- package/.agents/skills/60fps-animation/SKILL.md +164 -0
- package/.agents/skills/accessible-animation/SKILL.md +266 -0
- package/.agents/skills/adapt/SKILL.md +131 -0
- package/.agents/skills/advanced-rag-pipelines/SKILL.md +169 -0
- package/.agents/skills/agent-organizer/SKILL.md +192 -0
- package/.agents/skills/agentic-patterns/SKILL.md +356 -0
- package/.agents/skills/agentic-workflows-2026/SKILL.md +157 -0
- package/.agents/skills/ai-app-hardening/SKILL.md +125 -0
- package/.agents/skills/ai-prompt-injection-defense/SKILL.md +237 -0
- package/.agents/skills/animation-on-scroll/SKILL.md +267 -0
- package/.agents/skills/animation-systems/SKILL.md +273 -0
- package/.agents/skills/antfu-conventions/SKILL.md +129 -0
- package/.agents/skills/api-patterns/SKILL.md +293 -0
- package/.agents/skills/api-patterns/scripts/api_validator.py +211 -0
- package/.agents/skills/api-security-auditor/SKILL.md +230 -0
- package/.agents/skills/app-builder/SKILL.md +610 -0
- package/.agents/skills/app-builder/templates/SKILL.md +108 -0
- package/.agents/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/.agents/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/.agents/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/.agents/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/.agents/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/.agents/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/.agents/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/.agents/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +126 -0
- package/.agents/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +127 -0
- package/.agents/skills/app-builder/templates/nextjs-static/TEMPLATE.md +172 -0
- package/.agents/skills/app-builder/templates/nuxt-app/TEMPLATE.md +139 -0
- package/.agents/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/.agents/skills/app-builder/templates/react-native-app/TEMPLATE.md +122 -0
- package/.agents/skills/appflow-wireframe/SKILL.md +173 -0
- package/.agents/skills/apple-design/SKILL.md +164 -0
- package/.agents/skills/architecture/SKILL.md +263 -0
- package/.agents/skills/audit-and-fix/SKILL.md +136 -0
- package/.agents/skills/authentication-best-practices/SKILL.md +232 -0
- package/.agents/skills/backend-security-expert/SKILL.md +148 -0
- package/.agents/skills/baseline-ui/SKILL.md +130 -0
- package/.agents/skills/bash-linux/SKILL.md +214 -0
- package/.agents/skills/behavioral-modes/SKILL.md +275 -0
- package/.agents/skills/better-colors/SKILL.md +191 -0
- package/.agents/skills/better-typography/SKILL.md +164 -0
- package/.agents/skills/better-ui/SKILL.md +193 -0
- package/.agents/skills/bolder/SKILL.md +124 -0
- package/.agents/skills/brainstorming/SKILL.md +534 -0
- package/.agents/skills/browser-audit/SKILL.md +170 -0
- package/.agents/skills/browser-native-ai/SKILL.md +147 -0
- package/.agents/skills/build-primitive/SKILL.md +125 -0
- package/.agents/skills/building-native-ui/SKILL.md +237 -0
- package/.agents/skills/cicd-pro/SKILL.md +487 -0
- package/.agents/skills/clarify/SKILL.md +130 -0
- package/.agents/skills/clean-code/SKILL.md +442 -0
- package/.agents/skills/cloud-architect/SKILL.md +484 -0
- package/.agents/skills/cobejs/SKILL.md +145 -0
- package/.agents/skills/code-review-checklist/SKILL.md +238 -0
- package/.agents/skills/codebase-design/SKILL.md +151 -0
- package/.agents/skills/colorize/SKILL.md +132 -0
- package/.agents/skills/compact-landing/SKILL.md +125 -0
- package/.agents/skills/company-logos/SKILL.md +129 -0
- package/.agents/skills/config-validator/SKILL.md +200 -0
- package/.agents/skills/containerization-pro/SKILL.md +497 -0
- package/.agents/skills/context-engineering-pro/SKILL.md +136 -0
- package/.agents/skills/create-design-md/SKILL.md +167 -0
- package/.agents/skills/critique/SKILL.md +154 -0
- package/.agents/skills/csharp-developer/SKILL.md +553 -0
- package/.agents/skills/data-validation-schemas/SKILL.md +372 -0
- package/.agents/skills/database-design/SKILL.md +294 -0
- package/.agents/skills/database-design/scripts/schema_validator.py +172 -0
- package/.agents/skills/delight/SKILL.md +121 -0
- package/.agents/skills/deployment-procedures/SKILL.md +207 -0
- package/.agents/skills/design-lab/SKILL.md +117 -0
- package/.agents/skills/devops-engineer/SKILL.md +380 -0
- package/.agents/skills/devops-incident-responder/SKILL.md +178 -0
- package/.agents/skills/diagnosing-bugs/SKILL.md +247 -0
- package/.agents/skills/distill/SKILL.md +120 -0
- package/.agents/skills/documentation-templates/SKILL.md +326 -0
- package/.agents/skills/domain-modeling/SKILL.md +136 -0
- package/.agents/skills/duckdb-analytical-sql/SKILL.md +125 -0
- package/.agents/skills/edge-ai-mobile/SKILL.md +116 -0
- package/.agents/skills/edge-computing/SKILL.md +218 -0
- package/.agents/skills/emil-design-eng/SKILL.md +209 -0
- package/.agents/skills/error-resilience/SKILL.md +478 -0
- package/.agents/skills/expo-router-v4/SKILL.md +146 -0
- package/.agents/skills/extract-design-system/SKILL.md +195 -0
- package/.agents/skills/fabel-protocol/SKILL.md +352 -0
- package/.agents/skills/fixing-accessibility/SKILL.md +162 -0
- package/.agents/skills/fixing-metadata/SKILL.md +158 -0
- package/.agents/skills/fixing-motion-performance/SKILL.md +153 -0
- package/.agents/skills/framer-motion-expert/SKILL.md +312 -0
- package/.agents/skills/frontend-design/SKILL.md +178 -0
- package/.agents/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/.agents/skills/frontend-design/scripts/ux_audit.py +722 -0
- package/.agents/skills/frontend-security-expert/SKILL.md +131 -0
- package/.agents/skills/game-design-expert/SKILL.md +167 -0
- package/.agents/skills/game-engineering-expert/SKILL.md +183 -0
- package/.agents/skills/generative-ui-expert/SKILL.md +175 -0
- package/.agents/skills/geo-fundamentals/SKILL.md +183 -0
- package/.agents/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/.agents/skills/git-pro/SKILL.md +476 -0
- package/.agents/skills/github-operations/SKILL.md +370 -0
- package/.agents/skills/gpt-taste/SKILL.md +125 -0
- package/.agents/skills/gsap-core/SKILL.md +352 -0
- package/.agents/skills/gsap-frameworks/SKILL.md +243 -0
- package/.agents/skills/gsap-performance/SKILL.md +169 -0
- package/.agents/skills/gsap-plugins/SKILL.md +516 -0
- package/.agents/skills/gsap-react/SKILL.md +288 -0
- package/.agents/skills/gsap-scrolltrigger/SKILL.md +387 -0
- package/.agents/skills/gsap-timeline/SKILL.md +197 -0
- package/.agents/skills/gsap-utils/SKILL.md +374 -0
- package/.agents/skills/harden/SKILL.md +130 -0
- package/.agents/skills/harness-protocol/SKILL.md +115 -0
- package/.agents/skills/i18n-localization/SKILL.md +209 -0
- package/.agents/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/.agents/skills/impeccable/SKILL.md +127 -0
- package/.agents/skills/improve-codebase-architecture/SKILL.md +123 -0
- package/.agents/skills/improve-ui/SKILL.md +145 -0
- package/.agents/skills/intelligent-routing/SKILL.md +283 -0
- package/.agents/skills/knowledge-graph/SKILL.md +146 -0
- package/.agents/skills/landing-page/SKILL.md +140 -0
- package/.agents/skills/lint-and-validate/SKILL.md +299 -0
- package/.agents/skills/lint-and-validate/scripts/lint_runner.py +184 -0
- package/.agents/skills/lint-and-validate/scripts/type_coverage.py +173 -0
- package/.agents/skills/llm-engineering/SKILL.md +435 -0
- package/.agents/skills/local-first/SKILL.md +213 -0
- package/.agents/skills/local-first-architecture/SKILL.md +137 -0
- package/.agents/skills/lottie-animation/SKILL.md +137 -0
- package/.agents/skills/marquee-loop/SKILL.md +147 -0
- package/.agents/skills/masked-reveal/SKILL.md +305 -0
- package/.agents/skills/mcp-builder/SKILL.md +180 -0
- package/.agents/skills/micro-interaction/SKILL.md +321 -0
- package/.agents/skills/mobile-design/SKILL.md +320 -0
- package/.agents/skills/mobile-design/scripts/mobile_audit.py +670 -0
- package/.agents/skills/monorepo-management/SKILL.md +370 -0
- package/.agents/skills/morphing-icons/SKILL.md +423 -0
- package/.agents/skills/motion-engineering/SKILL.md +272 -0
- package/.agents/skills/nextjs-react-expert/SKILL.md +293 -0
- package/.agents/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
- package/.agents/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
- package/.agents/skills/nodejs-best-practices/SKILL.md +617 -0
- package/.agents/skills/observability/SKILL.md +378 -0
- package/.agents/skills/opentelemetry-observability/SKILL.md +125 -0
- package/.agents/skills/page-transition-animation/SKILL.md +161 -0
- package/.agents/skills/parallel-agents/SKILL.md +185 -0
- package/.agents/skills/performance-profiling/SKILL.md +305 -0
- package/.agents/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
- package/.agents/skills/plan-writing/SKILL.md +202 -0
- package/.agents/skills/platform-engineer/SKILL.md +183 -0
- package/.agents/skills/platform-engineering-opentofu/SKILL.md +133 -0
- package/.agents/skills/playwright-ai-e2e/SKILL.md +126 -0
- package/.agents/skills/playwright-best-practices/SKILL.md +224 -0
- package/.agents/skills/polish/SKILL.md +114 -0
- package/.agents/skills/powershell-windows/SKILL.md +197 -0
- package/.agents/skills/pricing-page/SKILL.md +123 -0
- package/.agents/skills/product-aware-heuristics/SKILL.md +465 -0
- package/.agents/skills/progressive-blur/SKILL.md +155 -0
- package/.agents/skills/project-idioms/SKILL.md +166 -0
- package/.agents/skills/property-based-testing/SKILL.md +124 -0
- package/.agents/skills/python-patterns/SKILL.md +295 -0
- package/.agents/skills/python-pro/SKILL.md +380 -0
- package/.agents/skills/quieter/SKILL.md +124 -0
- package/.agents/skills/react-doctor/SKILL.md +126 -0
- package/.agents/skills/react-specialist/SKILL.md +355 -0
- package/.agents/skills/readme-builder/SKILL.md +345 -0
- package/.agents/skills/realtime-patterns/SKILL.md +358 -0
- package/.agents/skills/red-team-tactics/SKILL.md +266 -0
- package/.agents/skills/redesign-skill/SKILL.md +121 -0
- package/.agents/skills/review-animations/SKILL.md +120 -0
- package/.agents/skills/review-animations/STANDARDS.md +87 -0
- package/.agents/skills/rust-pro/SKILL.md +727 -0
- package/.agents/skills/seo-fundamentals/SKILL.md +214 -0
- package/.agents/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
- package/.agents/skills/server-management/SKILL.md +253 -0
- package/.agents/skills/shadcn-ui-expert/SKILL.md +271 -0
- package/.agents/skills/shape/SKILL.md +131 -0
- package/.agents/skills/skill-creator/SKILL.md +136 -0
- package/.agents/skills/soft-skill/SKILL.md +128 -0
- package/.agents/skills/sounds-on-the-web/SKILL.md +151 -0
- package/.agents/skills/sql-pro/SKILL.md +699 -0
- package/.agents/skills/supabase-postgres-best-practices/SKILL.md +132 -0
- package/.agents/skills/svg-animation/SKILL.md +431 -0
- package/.agents/skills/swiftui-expert/SKILL.md +239 -0
- package/.agents/skills/swiss-design/SKILL.md +119 -0
- package/.agents/skills/system-design-pro/SKILL.md +393 -0
- package/.agents/skills/systematic-debugging/SKILL.md +198 -0
- package/.agents/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/.agents/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/.agents/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/.agents/skills/tailwind-patterns/SKILL.md +658 -0
- package/.agents/skills/taste-skill/SKILL.md +127 -0
- package/.agents/skills/tdd-workflow/SKILL.md +179 -0
- package/.agents/skills/test-result-analyzer/SKILL.md +345 -0
- package/.agents/skills/testing-patterns/SKILL.md +609 -0
- package/.agents/skills/testing-patterns/scripts/test_runner.py +219 -0
- package/.agents/skills/thermo-nuclear-code-quality-review/SKILL.md +137 -0
- package/.agents/skills/thinking-protocol/SKILL.md +97 -0
- package/.agents/skills/to-spring-or-not-to-spring/SKILL.md +118 -0
- package/.agents/skills/transitions-dev/SKILL.md +165 -0
- package/.agents/skills/trend-researcher/SKILL.md +273 -0
- package/.agents/skills/typescript-advanced/SKILL.md +381 -0
- package/.agents/skills/typeset/SKILL.md +135 -0
- package/.agents/skills/ui-reasoning-engine/SKILL.md +230 -0
- package/.agents/skills/ui-skill-packs/SKILL.md +132 -0
- package/.agents/skills/ui-skills-root/SKILL.md +144 -0
- package/.agents/skills/ui-ux-pro-max/SKILL.md +185 -0
- package/.agents/skills/ui-ux-researcher/SKILL.md +274 -0
- package/.agents/skills/vector-search-pgvector/SKILL.md +144 -0
- package/.agents/skills/verification-before-completion/SKILL.md +178 -0
- package/.agents/skills/vue-expert/SKILL.md +334 -0
- package/.agents/skills/vulnerability-scanner/SKILL.md +453 -0
- package/.agents/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
- package/.agents/skills/web-accessibility-auditor/SKILL.md +254 -0
- package/.agents/skills/web-design-guidelines/SKILL.md +124 -0
- package/.agents/skills/web-quality-audit/SKILL.md +122 -0
- package/.agents/skills/webapp-testing/SKILL.md +203 -0
- package/.agents/skills/webapp-testing/scripts/playwright_runner.py +173 -0
- package/.agents/skills/webgpu-performance/SKILL.md +163 -0
- package/.agents/skills/whimsy-injector/SKILL.md +380 -0
- package/.agents/skills/workflow-optimizer/SKILL.md +263 -0
- package/.agents/skills/zero-trust-passkeys/SKILL.md +156 -0
- package/.claude-plugin/marketplace.json +1 -4
- package/.hermes-plugin/plugin.yaml +1 -1
- package/.kimi-plugin/plugin.json +6 -6
- package/.opencode/INSTALL.md +2 -2
- package/.opencode/rules.md +258 -0
- package/AGENTS.md +91 -0
- package/CLAUDE.md +442 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +66 -69
- package/bin/adapter-install.js +40 -16
- package/bin/mcp-server.js +426 -0
- package/bin/proxy-server.js +18 -9
- package/bin/spawn-agent.js +9 -3
- package/bin/wrapper.js +19 -4
- package/dist/browser/audit.js +229 -0
- package/dist/browser/case_bridge.js +189 -0
- package/dist/browser/cdp.js +513 -0
- package/dist/browser/compare.js +110 -0
- package/dist/browser/discovery.js +140 -0
- package/dist/browser/idpi.js +142 -0
- package/dist/browser/index.js +89 -0
- package/dist/browser/launcher.js +154 -0
- package/dist/browser/sentinel.js +202 -0
- package/dist/browser/synapse.js +251 -0
- package/dist/browser/trimmer.js +210 -0
- package/dist/cli.js +70 -48
- package/dist/commands/audit-web.js +112 -0
- package/dist/commands/browse.js +56 -0
- package/dist/commands/compare-web.js +61 -0
- package/dist/commands/deconstruct.js +58 -0
- package/dist/commands/heal.js +99 -0
- package/dist/commands/init.js +10 -1
- package/dist/commands/sdd.js +229 -0
- package/dist/commands/uninstall.js +12 -0
- package/hooks/hooks-cursor.json +2 -8
- package/hooks/hooks.json +2 -8
- package/marketplace.json +14 -0
- package/package.json +15 -4
- package/plugin.json +26 -0
- package/scripts/clean-pycache.js +42 -0
- package/scripts/context_compiler.js +944 -0
- package/scripts/package-cores.js +113 -0
- package/scripts/skill_enhancement_engine.js +473 -0
- package/scripts/sync-skills.js +61 -0
- package/skills/12-principles-of-animation/SKILL.md +126 -0
- package/skills/60fps-animation/SKILL.md +164 -0
- package/skills/accessible-animation/SKILL.md +266 -0
- package/skills/adapt/SKILL.md +131 -0
- package/skills/advanced-rag-pipelines/SKILL.md +169 -0
- package/skills/agent-organizer/SKILL.md +192 -0
- package/skills/agentic-patterns/SKILL.md +356 -0
- package/skills/agentic-workflows-2026/SKILL.md +157 -0
- package/skills/ai-app-hardening/SKILL.md +125 -0
- package/skills/ai-prompt-injection-defense/SKILL.md +237 -0
- package/skills/animation-on-scroll/SKILL.md +267 -0
- package/skills/animation-systems/SKILL.md +273 -0
- package/skills/antfu-conventions/SKILL.md +129 -0
- package/skills/api-patterns/SKILL.md +293 -0
- package/skills/api-patterns/scripts/api_validator.py +211 -0
- package/skills/api-security-auditor/SKILL.md +230 -0
- package/skills/app-builder/SKILL.md +610 -0
- package/skills/app-builder/templates/SKILL.md +108 -0
- package/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
- package/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
- package/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
- package/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
- package/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
- package/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
- package/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
- package/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +126 -0
- package/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +127 -0
- package/skills/app-builder/templates/nextjs-static/TEMPLATE.md +172 -0
- package/skills/app-builder/templates/nuxt-app/TEMPLATE.md +139 -0
- package/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
- package/skills/app-builder/templates/react-native-app/TEMPLATE.md +122 -0
- package/skills/appflow-wireframe/SKILL.md +173 -0
- package/skills/apple-design/SKILL.md +164 -0
- package/skills/architecture/SKILL.md +263 -0
- package/skills/audit-and-fix/SKILL.md +136 -0
- package/skills/authentication-best-practices/SKILL.md +232 -0
- package/skills/backend-security-expert/SKILL.md +148 -0
- package/skills/baseline-ui/SKILL.md +130 -0
- package/skills/bash-linux/SKILL.md +214 -0
- package/skills/behavioral-modes/SKILL.md +275 -0
- package/skills/better-colors/SKILL.md +191 -0
- package/skills/better-typography/SKILL.md +164 -0
- package/skills/better-ui/SKILL.md +193 -0
- package/skills/bolder/SKILL.md +124 -0
- package/skills/brainstorming/SKILL.md +534 -0
- package/skills/browser-audit/SKILL.md +170 -0
- package/skills/browser-native-ai/SKILL.md +147 -0
- package/skills/build-primitive/SKILL.md +125 -0
- package/skills/building-native-ui/SKILL.md +237 -0
- package/skills/cicd-pro/SKILL.md +487 -0
- package/skills/clarify/SKILL.md +130 -0
- package/skills/clean-code/SKILL.md +442 -0
- package/skills/cloud-architect/SKILL.md +484 -0
- package/skills/cobejs/SKILL.md +145 -0
- package/skills/code-review-checklist/SKILL.md +238 -0
- package/skills/codebase-design/SKILL.md +151 -0
- package/skills/colorize/SKILL.md +132 -0
- package/skills/compact-landing/SKILL.md +125 -0
- package/skills/company-logos/SKILL.md +129 -0
- package/skills/config-validator/SKILL.md +200 -0
- package/skills/containerization-pro/SKILL.md +497 -0
- package/skills/context-engineering-pro/SKILL.md +136 -0
- package/skills/create-design-md/SKILL.md +167 -0
- package/skills/critique/SKILL.md +154 -0
- package/skills/csharp-developer/SKILL.md +553 -0
- package/skills/data-validation-schemas/SKILL.md +372 -0
- package/skills/database-design/SKILL.md +294 -0
- package/skills/database-design/scripts/schema_validator.py +172 -0
- package/skills/delight/SKILL.md +121 -0
- package/skills/deployment-procedures/SKILL.md +207 -0
- package/skills/design-lab/SKILL.md +117 -0
- package/skills/devops-engineer/SKILL.md +380 -0
- package/skills/devops-incident-responder/SKILL.md +178 -0
- package/skills/diagnosing-bugs/SKILL.md +247 -0
- package/skills/distill/SKILL.md +120 -0
- package/skills/documentation-templates/SKILL.md +326 -0
- package/skills/domain-modeling/SKILL.md +136 -0
- package/skills/duckdb-analytical-sql/SKILL.md +125 -0
- package/skills/edge-ai-mobile/SKILL.md +116 -0
- package/skills/edge-computing/SKILL.md +218 -0
- package/skills/emil-design-eng/SKILL.md +209 -0
- package/skills/error-resilience/SKILL.md +478 -0
- package/skills/expo-router-v4/SKILL.md +146 -0
- package/skills/extract-design-system/SKILL.md +195 -0
- package/skills/fabel-protocol/SKILL.md +352 -0
- package/skills/fixing-accessibility/SKILL.md +162 -0
- package/skills/fixing-metadata/SKILL.md +158 -0
- package/skills/fixing-motion-performance/SKILL.md +153 -0
- package/skills/framer-motion-expert/SKILL.md +312 -0
- package/skills/frontend-design/SKILL.md +178 -0
- package/skills/frontend-design/scripts/accessibility_checker.py +183 -0
- package/skills/frontend-design/scripts/ux_audit.py +722 -0
- package/skills/frontend-security-expert/SKILL.md +131 -0
- package/skills/game-design-expert/SKILL.md +167 -0
- package/skills/game-engineering-expert/SKILL.md +183 -0
- package/skills/generative-ui-expert/SKILL.md +175 -0
- package/skills/geo-fundamentals/SKILL.md +183 -0
- package/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
- package/skills/git-pro/SKILL.md +476 -0
- package/skills/github-operations/SKILL.md +370 -0
- package/skills/gpt-taste/SKILL.md +125 -0
- package/skills/gsap-core/SKILL.md +352 -0
- package/skills/gsap-frameworks/SKILL.md +243 -0
- package/skills/gsap-performance/SKILL.md +169 -0
- package/skills/gsap-plugins/SKILL.md +516 -0
- package/skills/gsap-react/SKILL.md +288 -0
- package/skills/gsap-scrolltrigger/SKILL.md +387 -0
- package/skills/gsap-timeline/SKILL.md +197 -0
- package/skills/gsap-utils/SKILL.md +374 -0
- package/skills/harden/SKILL.md +130 -0
- package/skills/harness-protocol/SKILL.md +115 -0
- package/skills/i18n-localization/SKILL.md +209 -0
- package/skills/i18n-localization/scripts/i18n_checker.py +241 -0
- package/skills/impeccable/SKILL.md +127 -0
- package/skills/improve-codebase-architecture/SKILL.md +123 -0
- package/skills/improve-ui/SKILL.md +145 -0
- package/skills/intelligent-routing/SKILL.md +283 -0
- package/skills/knowledge-graph/SKILL.md +146 -0
- package/skills/landing-page/SKILL.md +140 -0
- package/skills/lint-and-validate/SKILL.md +299 -0
- package/skills/lint-and-validate/scripts/lint_runner.py +184 -0
- package/skills/lint-and-validate/scripts/type_coverage.py +173 -0
- package/skills/llm-engineering/SKILL.md +435 -0
- package/skills/local-first/SKILL.md +213 -0
- package/skills/local-first-architecture/SKILL.md +137 -0
- package/skills/lottie-animation/SKILL.md +137 -0
- package/skills/marquee-loop/SKILL.md +147 -0
- package/skills/masked-reveal/SKILL.md +305 -0
- package/skills/mcp-builder/SKILL.md +180 -0
- package/skills/micro-interaction/SKILL.md +321 -0
- package/skills/mobile-design/SKILL.md +320 -0
- package/skills/mobile-design/scripts/mobile_audit.py +670 -0
- package/skills/monorepo-management/SKILL.md +370 -0
- package/skills/morphing-icons/SKILL.md +423 -0
- package/skills/motion-engineering/SKILL.md +272 -0
- package/skills/nextjs-react-expert/SKILL.md +293 -0
- package/skills/nextjs-react-expert/scripts/convert_rules.py +222 -0
- package/skills/nextjs-react-expert/scripts/react_performance_checker.py +252 -0
- package/skills/nodejs-best-practices/SKILL.md +617 -0
- package/skills/observability/SKILL.md +378 -0
- package/skills/opentelemetry-observability/SKILL.md +125 -0
- package/skills/page-transition-animation/SKILL.md +161 -0
- package/skills/parallel-agents/SKILL.md +185 -0
- package/skills/performance-profiling/SKILL.md +305 -0
- package/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
- package/skills/plan-writing/SKILL.md +202 -0
- package/skills/platform-engineer/SKILL.md +183 -0
- package/skills/platform-engineering-opentofu/SKILL.md +133 -0
- package/skills/playwright-ai-e2e/SKILL.md +126 -0
- package/skills/playwright-best-practices/SKILL.md +224 -0
- package/skills/polish/SKILL.md +114 -0
- package/skills/powershell-windows/SKILL.md +197 -0
- package/skills/pricing-page/SKILL.md +123 -0
- package/skills/product-aware-heuristics/SKILL.md +465 -0
- package/skills/progressive-blur/SKILL.md +155 -0
- package/skills/project-idioms/SKILL.md +166 -0
- package/skills/property-based-testing/SKILL.md +124 -0
- package/skills/python-patterns/SKILL.md +295 -0
- package/skills/python-pro/SKILL.md +380 -0
- package/skills/quieter/SKILL.md +124 -0
- package/skills/react-doctor/SKILL.md +126 -0
- package/skills/react-specialist/SKILL.md +355 -0
- package/skills/readme-builder/SKILL.md +345 -0
- package/skills/realtime-patterns/SKILL.md +358 -0
- package/skills/red-team-tactics/SKILL.md +266 -0
- package/skills/redesign-skill/SKILL.md +121 -0
- package/skills/review-animations/SKILL.md +120 -0
- package/skills/review-animations/STANDARDS.md +87 -0
- package/skills/rust-pro/SKILL.md +727 -0
- package/skills/seo-fundamentals/SKILL.md +214 -0
- package/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
- package/skills/server-management/SKILL.md +253 -0
- package/skills/shadcn-ui-expert/SKILL.md +271 -0
- package/skills/shape/SKILL.md +131 -0
- package/skills/skill-creator/SKILL.md +136 -0
- package/skills/soft-skill/SKILL.md +128 -0
- package/skills/sounds-on-the-web/SKILL.md +151 -0
- package/skills/sql-pro/SKILL.md +699 -0
- package/skills/supabase-postgres-best-practices/SKILL.md +132 -0
- package/skills/svg-animation/SKILL.md +431 -0
- package/skills/swiftui-expert/SKILL.md +239 -0
- package/skills/swiss-design/SKILL.md +119 -0
- package/skills/system-design-pro/SKILL.md +393 -0
- package/skills/systematic-debugging/SKILL.md +198 -0
- package/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/skills/tailwind-patterns/SKILL.md +658 -0
- package/skills/taste-skill/SKILL.md +127 -0
- package/skills/tdd-workflow/SKILL.md +179 -0
- package/skills/test-result-analyzer/SKILL.md +345 -0
- package/skills/testing-patterns/SKILL.md +609 -0
- package/skills/testing-patterns/scripts/test_runner.py +219 -0
- package/skills/thermo-nuclear-code-quality-review/SKILL.md +137 -0
- package/skills/thinking-protocol/SKILL.md +97 -0
- package/skills/to-spring-or-not-to-spring/SKILL.md +118 -0
- package/skills/transitions-dev/SKILL.md +165 -0
- package/skills/trend-researcher/SKILL.md +273 -0
- package/skills/typescript-advanced/SKILL.md +381 -0
- package/skills/typeset/SKILL.md +135 -0
- package/skills/ui-reasoning-engine/SKILL.md +230 -0
- package/skills/ui-skill-packs/SKILL.md +132 -0
- package/skills/ui-skills-root/SKILL.md +144 -0
- package/skills/ui-ux-pro-max/SKILL.md +185 -0
- package/skills/ui-ux-researcher/SKILL.md +274 -0
- package/skills/vector-search-pgvector/SKILL.md +144 -0
- package/skills/verification-before-completion/SKILL.md +178 -0
- package/skills/vue-expert/SKILL.md +334 -0
- package/skills/vulnerability-scanner/SKILL.md +453 -0
- package/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
- package/skills/web-accessibility-auditor/SKILL.md +254 -0
- package/skills/web-design-guidelines/SKILL.md +124 -0
- package/skills/web-quality-audit/SKILL.md +122 -0
- package/skills/webapp-testing/SKILL.md +203 -0
- package/skills/webapp-testing/scripts/playwright_runner.py +173 -0
- package/skills/webgpu-performance/SKILL.md +163 -0
- package/skills/whimsy-injector/SKILL.md +380 -0
- package/skills/workflow-optimizer/SKILL.md +263 -0
- package/skills/zero-trust-passkeys/SKILL.md +156 -0
- package/.agent/skills/api-patterns/scripts/__pycache__/api_validator.cpython-311.pyc +0 -0
- package/.agent/skills/database-design/scripts/__pycache__/schema_validator.cpython-311.pyc +0 -0
- package/.agent/skills/frontend-design/scripts/__pycache__/accessibility_checker.cpython-311.pyc +0 -0
- package/.agent/skills/frontend-design/scripts/__pycache__/ux_audit.cpython-311.pyc +0 -0
- package/.agent/skills/geo-fundamentals/scripts/__pycache__/geo_checker.cpython-311.pyc +0 -0
- package/.agent/skills/i18n-localization/scripts/__pycache__/i18n_checker.cpython-311.pyc +0 -0
- package/.agent/skills/lint-and-validate/scripts/__pycache__/lint_runner.cpython-311.pyc +0 -0
- package/.agent/skills/lint-and-validate/scripts/__pycache__/type_coverage.cpython-311.pyc +0 -0
- package/.agent/skills/mobile-design/scripts/__pycache__/mobile_audit.cpython-311.pyc +0 -0
- package/.agent/skills/nextjs-react-expert/scripts/__pycache__/convert_rules.cpython-311.pyc +0 -0
- package/.agent/skills/nextjs-react-expert/scripts/__pycache__/react_performance_checker.cpython-311.pyc +0 -0
- package/.agent/skills/performance-profiling/scripts/__pycache__/lighthouse_audit.cpython-311.pyc +0 -0
- package/.agent/skills/seo-fundamentals/scripts/__pycache__/seo_checker.cpython-311.pyc +0 -0
- package/.agent/skills/testing-patterns/scripts/__pycache__/test_runner.cpython-311.pyc +0 -0
- package/.agent/skills/vulnerability-scanner/scripts/__pycache__/security_scan.cpython-311.pyc +0 -0
- package/.agent/skills/webapp-testing/scripts/__pycache__/playwright_runner.cpython-311.pyc +0 -0
package/bin/mcp-server.js
CHANGED
|
@@ -561,6 +561,165 @@ async function handleRequest(req) {
|
|
|
561
561
|
additionalProperties: false,
|
|
562
562
|
},
|
|
563
563
|
},
|
|
564
|
+
{
|
|
565
|
+
name: 'tk_browser_navigate',
|
|
566
|
+
description:
|
|
567
|
+
'Token-efficient browser navigation. Navigates headlessly to a URL, prunes HTML using htmltrim (< 4,000 bytes / ~1,000 tokens), enforces IDPI prompt injection defense, and returns compact semantic markdown with an interactive elements tree.',
|
|
568
|
+
inputSchema: {
|
|
569
|
+
type: 'object',
|
|
570
|
+
properties: {
|
|
571
|
+
url: {
|
|
572
|
+
type: 'string',
|
|
573
|
+
description: 'The target URL to inspect (e.g. http://localhost:3000 or https://example.com)',
|
|
574
|
+
},
|
|
575
|
+
},
|
|
576
|
+
required: ['url'],
|
|
577
|
+
additionalProperties: false,
|
|
578
|
+
},
|
|
579
|
+
},
|
|
580
|
+
{
|
|
581
|
+
name: 'tk_browser_audit',
|
|
582
|
+
description:
|
|
583
|
+
'Live web quality, accessibility, console error, and Core Web Vitals auditor. Navigates headlessly to a URL, checks WCAG 2.2 contrast/aria, network failures, uncaught exceptions, and security headers. Returns structured audit report.',
|
|
584
|
+
inputSchema: {
|
|
585
|
+
type: 'object',
|
|
586
|
+
properties: {
|
|
587
|
+
url: {
|
|
588
|
+
type: 'string',
|
|
589
|
+
description: 'The target URL to audit (e.g. http://localhost:3000)',
|
|
590
|
+
},
|
|
591
|
+
},
|
|
592
|
+
required: ['url'],
|
|
593
|
+
additionalProperties: false,
|
|
594
|
+
},
|
|
595
|
+
},
|
|
596
|
+
{
|
|
597
|
+
name: 'tk_browser_compare',
|
|
598
|
+
description:
|
|
599
|
+
'Visual regression differ. Captures synchronized screenshots of two URLs (e.g. localhost dev server vs production) and computes pixel mismatch percentage to verify layout integrity before release.',
|
|
600
|
+
inputSchema: {
|
|
601
|
+
type: 'object',
|
|
602
|
+
properties: {
|
|
603
|
+
url1: {
|
|
604
|
+
type: 'string',
|
|
605
|
+
description: 'Baseline or staging URL (e.g. http://localhost:3000)',
|
|
606
|
+
},
|
|
607
|
+
url2: {
|
|
608
|
+
type: 'string',
|
|
609
|
+
description: 'Production or target URL to compare against',
|
|
610
|
+
},
|
|
611
|
+
maxDiffPercent: {
|
|
612
|
+
type: 'number',
|
|
613
|
+
description: 'Maximum allowable difference percentage before failing (default: 1.0)',
|
|
614
|
+
},
|
|
615
|
+
},
|
|
616
|
+
required: ['url1', 'url2'],
|
|
617
|
+
additionalProperties: false,
|
|
618
|
+
},
|
|
619
|
+
},
|
|
620
|
+
{
|
|
621
|
+
name: 'tk_browser_screenshot',
|
|
622
|
+
description:
|
|
623
|
+
'Captures a viewport screenshot of a target URL as base64 PNG data.',
|
|
624
|
+
inputSchema: {
|
|
625
|
+
type: 'object',
|
|
626
|
+
properties: {
|
|
627
|
+
url: {
|
|
628
|
+
type: 'string',
|
|
629
|
+
description: 'The URL to screenshot',
|
|
630
|
+
},
|
|
631
|
+
},
|
|
632
|
+
required: ['url'],
|
|
633
|
+
additionalProperties: false,
|
|
634
|
+
},
|
|
635
|
+
},
|
|
636
|
+
{
|
|
637
|
+
name: 'tk_deconstruct_component',
|
|
638
|
+
description:
|
|
639
|
+
'Reverse-engineers a live web element into a production React TSX component with Tailwind CSS classes by inspecting computed CSSOM (geometry, typography, elevation, transitions).',
|
|
640
|
+
inputSchema: {
|
|
641
|
+
type: 'object',
|
|
642
|
+
properties: {
|
|
643
|
+
url: {
|
|
644
|
+
type: 'string',
|
|
645
|
+
description: 'The URL hosting the target element',
|
|
646
|
+
},
|
|
647
|
+
selector: {
|
|
648
|
+
type: 'string',
|
|
649
|
+
description: 'CSS selector matching the element (e.g. button.primary or #pricing-card)',
|
|
650
|
+
},
|
|
651
|
+
name: {
|
|
652
|
+
type: 'string',
|
|
653
|
+
description: 'Optional PascalCase component name (e.g. PricingCard)',
|
|
654
|
+
},
|
|
655
|
+
},
|
|
656
|
+
required: ['url', 'selector'],
|
|
657
|
+
additionalProperties: false,
|
|
658
|
+
},
|
|
659
|
+
},
|
|
660
|
+
{
|
|
661
|
+
name: 'tk_heal_runtime_errors',
|
|
662
|
+
description:
|
|
663
|
+
'Runtime Sentinel error hunter. Scans a live web page or dev server for uncaught exceptions, React boundary errors, and framework overlays, localizing them to workspace source files.',
|
|
664
|
+
inputSchema: {
|
|
665
|
+
type: 'object',
|
|
666
|
+
properties: {
|
|
667
|
+
url: {
|
|
668
|
+
type: 'string',
|
|
669
|
+
description: 'The dev server or web page URL (e.g. http://localhost:3000)',
|
|
670
|
+
},
|
|
671
|
+
verify: {
|
|
672
|
+
type: 'boolean',
|
|
673
|
+
description: 'If true, verifies whether previously reported runtime errors have cleared',
|
|
674
|
+
},
|
|
675
|
+
},
|
|
676
|
+
required: ['url'],
|
|
677
|
+
additionalProperties: false,
|
|
678
|
+
},
|
|
679
|
+
},
|
|
680
|
+
{
|
|
681
|
+
name: 'tk_codify_browser_audit',
|
|
682
|
+
description:
|
|
683
|
+
'Audits a target URL and automatically codifies detected WCAG accessibility failures, missing security headers, and console errors into binding Case Law precedents.',
|
|
684
|
+
inputSchema: {
|
|
685
|
+
type: 'object',
|
|
686
|
+
properties: {
|
|
687
|
+
url: {
|
|
688
|
+
type: 'string',
|
|
689
|
+
description: 'The URL to audit and codify',
|
|
690
|
+
},
|
|
691
|
+
},
|
|
692
|
+
required: ['url'],
|
|
693
|
+
additionalProperties: false,
|
|
694
|
+
},
|
|
695
|
+
},
|
|
696
|
+
{
|
|
697
|
+
name: 'tribunal_get_context',
|
|
698
|
+
description:
|
|
699
|
+
'Generate or retrieve an elite Flight Data HUD context dossier for any file, multi-file pair, or directory. Automatically extracts public API contracts, callers, Chesterton\'s Fences, invariants, and test recipes. Supports drift checking and living vault sync.',
|
|
700
|
+
inputSchema: {
|
|
701
|
+
type: 'object',
|
|
702
|
+
properties: {
|
|
703
|
+
target: {
|
|
704
|
+
type: 'string',
|
|
705
|
+
description: 'File path, folder path, or primary file to analyze.',
|
|
706
|
+
},
|
|
707
|
+
compareWith: {
|
|
708
|
+
type: 'string',
|
|
709
|
+
description: 'Optional secondary file for multi-file interface bridge analysis.',
|
|
710
|
+
},
|
|
711
|
+
write: {
|
|
712
|
+
type: 'boolean',
|
|
713
|
+
description: 'Whether to write the generated dossier to docs/context/ and update INDEX.md (default: true).',
|
|
714
|
+
},
|
|
715
|
+
check: {
|
|
716
|
+
type: 'boolean',
|
|
717
|
+
description: 'Run vault-wide semantic drift check instead of analyzing a target.',
|
|
718
|
+
},
|
|
719
|
+
},
|
|
720
|
+
additionalProperties: false,
|
|
721
|
+
},
|
|
722
|
+
},
|
|
564
723
|
],
|
|
565
724
|
};
|
|
566
725
|
}
|
|
@@ -575,6 +734,83 @@ async function handleRequest(req) {
|
|
|
575
734
|
const reminder = repeatGuard.observe(toolName, argsObj);
|
|
576
735
|
|
|
577
736
|
const executeTool = async () => {
|
|
737
|
+
if (toolName === 'tribunal_get_context') {
|
|
738
|
+
const target = req.params?.arguments?.target;
|
|
739
|
+
const compareWith = req.params?.arguments?.compareWith;
|
|
740
|
+
const write = req.params?.arguments?.write !== false;
|
|
741
|
+
const check = req.params?.arguments?.check;
|
|
742
|
+
|
|
743
|
+
try {
|
|
744
|
+
const compiler = require('../scripts/context_compiler');
|
|
745
|
+
const workspaceRoot = process.cwd();
|
|
746
|
+
|
|
747
|
+
if (check) {
|
|
748
|
+
const drift = compiler.checkDrift(workspaceRoot);
|
|
749
|
+
return {
|
|
750
|
+
content: [
|
|
751
|
+
{
|
|
752
|
+
type: 'text',
|
|
753
|
+
text: JSON.stringify(drift, null, 2),
|
|
754
|
+
},
|
|
755
|
+
],
|
|
756
|
+
};
|
|
757
|
+
}
|
|
758
|
+
|
|
759
|
+
if (target && compareWith) {
|
|
760
|
+
const bridge = compiler.analyzeMultiFileBridge(target, compareWith, workspaceRoot);
|
|
761
|
+
const md = compiler.renderBridgeDossier(bridge);
|
|
762
|
+
if (write) {
|
|
763
|
+
const outName = `${path.basename(target).replace(/\.[^.]+$/, '')}__${path.basename(compareWith).replace(/\.[^.]+$/, '')}.bridge.md`;
|
|
764
|
+
const dest = path.join(workspaceRoot, 'docs', 'context', outName);
|
|
765
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
|
766
|
+
fs.writeFileSync(dest, md, 'utf8');
|
|
767
|
+
compiler.syncVaultIndex(workspaceRoot);
|
|
768
|
+
}
|
|
769
|
+
return {
|
|
770
|
+
content: [{ type: 'text', text: md }],
|
|
771
|
+
};
|
|
772
|
+
}
|
|
773
|
+
|
|
774
|
+
if (!target) {
|
|
775
|
+
throw new RpcError(-32602, 'Missing required argument: target (file or directory path)');
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
const absTarget = path.isAbsolute(target) ? target : path.resolve(workspaceRoot, target);
|
|
779
|
+
if (fs.existsSync(absTarget) && fs.statSync(absTarget).isDirectory()) {
|
|
780
|
+
const dirData = compiler.analyzeDirectory(absTarget, workspaceRoot);
|
|
781
|
+
const md = compiler.renderDirectoryDossier(dirData);
|
|
782
|
+
if (write) {
|
|
783
|
+
const outName = `${path.basename(absTarget)}.context.md`;
|
|
784
|
+
const dest = path.join(workspaceRoot, 'docs', 'context', outName);
|
|
785
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
|
786
|
+
fs.writeFileSync(dest, md, 'utf8');
|
|
787
|
+
compiler.syncVaultIndex(workspaceRoot);
|
|
788
|
+
}
|
|
789
|
+
return {
|
|
790
|
+
content: [{ type: 'text', text: md }],
|
|
791
|
+
};
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
const fileData = compiler.analyzeSingleFile(target, workspaceRoot);
|
|
795
|
+
const md = compiler.renderSingleFileDossier(fileData);
|
|
796
|
+
if (write) {
|
|
797
|
+
const outName = `${path.basename(target).replace(/\.[^.]+$/, '')}.context.md`;
|
|
798
|
+
const dest = path.join(workspaceRoot, 'docs', 'context', outName);
|
|
799
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
|
800
|
+
fs.writeFileSync(dest, md, 'utf8');
|
|
801
|
+
compiler.syncVaultIndex(workspaceRoot);
|
|
802
|
+
}
|
|
803
|
+
return {
|
|
804
|
+
content: [{ type: 'text', text: md }],
|
|
805
|
+
};
|
|
806
|
+
} catch (e) {
|
|
807
|
+
return {
|
|
808
|
+
content: [{ type: 'text', text: `Context Compiler Error: ${e.message}` }],
|
|
809
|
+
isError: true,
|
|
810
|
+
};
|
|
811
|
+
}
|
|
812
|
+
}
|
|
813
|
+
|
|
578
814
|
if (toolName === 'exit_plan_mode') {
|
|
579
815
|
const planContent = req.params?.arguments?.plan_content;
|
|
580
816
|
if (typeof planContent !== 'string') {
|
|
@@ -591,6 +827,196 @@ async function handleRequest(req) {
|
|
|
591
827
|
};
|
|
592
828
|
}
|
|
593
829
|
|
|
830
|
+
if (toolName === 'tk_browser_navigate') {
|
|
831
|
+
const url = req.params?.arguments?.url;
|
|
832
|
+
if (!url || typeof url !== 'string') {
|
|
833
|
+
throw new RpcError(-32602, 'Missing required argument: url (string)');
|
|
834
|
+
}
|
|
835
|
+
try {
|
|
836
|
+
const { browse } = require('../dist/browser');
|
|
837
|
+
const result = await browse(url);
|
|
838
|
+
return {
|
|
839
|
+
content: [
|
|
840
|
+
{
|
|
841
|
+
type: 'text',
|
|
842
|
+
text: result.sandboxed,
|
|
843
|
+
},
|
|
844
|
+
],
|
|
845
|
+
};
|
|
846
|
+
} catch (e) {
|
|
847
|
+
return {
|
|
848
|
+
content: [{ type: 'text', text: `Browser navigation error: ${e.message}` }],
|
|
849
|
+
isError: true,
|
|
850
|
+
};
|
|
851
|
+
}
|
|
852
|
+
}
|
|
853
|
+
|
|
854
|
+
if (toolName === 'tk_browser_audit') {
|
|
855
|
+
const url = req.params?.arguments?.url;
|
|
856
|
+
if (!url || typeof url !== 'string') {
|
|
857
|
+
throw new RpcError(-32602, 'Missing required argument: url (string)');
|
|
858
|
+
}
|
|
859
|
+
try {
|
|
860
|
+
const { auditURL } = require('../dist/browser');
|
|
861
|
+
const report = await auditURL(url);
|
|
862
|
+
return {
|
|
863
|
+
content: [
|
|
864
|
+
{
|
|
865
|
+
type: 'text',
|
|
866
|
+
text: JSON.stringify(report, null, 2),
|
|
867
|
+
},
|
|
868
|
+
],
|
|
869
|
+
};
|
|
870
|
+
} catch (e) {
|
|
871
|
+
return {
|
|
872
|
+
content: [{ type: 'text', text: `Browser audit error: ${e.message}` }],
|
|
873
|
+
isError: true,
|
|
874
|
+
};
|
|
875
|
+
}
|
|
876
|
+
}
|
|
877
|
+
|
|
878
|
+
if (toolName === 'tk_browser_compare') {
|
|
879
|
+
const url1 = req.params?.arguments?.url1;
|
|
880
|
+
const url2 = req.params?.arguments?.url2;
|
|
881
|
+
const maxDiffPercent = req.params?.arguments?.maxDiffPercent;
|
|
882
|
+
if (!url1 || !url2) {
|
|
883
|
+
throw new RpcError(-32602, 'Missing required arguments: url1 and url2 (strings)');
|
|
884
|
+
}
|
|
885
|
+
try {
|
|
886
|
+
const { compareURLs } = require('../dist/browser');
|
|
887
|
+
const result = await compareURLs(url1, url2, { maxDiffPercent });
|
|
888
|
+
return {
|
|
889
|
+
content: [
|
|
890
|
+
{
|
|
891
|
+
type: 'text',
|
|
892
|
+
text: JSON.stringify(result, null, 2),
|
|
893
|
+
},
|
|
894
|
+
],
|
|
895
|
+
};
|
|
896
|
+
} catch (e) {
|
|
897
|
+
return {
|
|
898
|
+
content: [{ type: 'text', text: `Browser compare error: ${e.message}` }],
|
|
899
|
+
isError: true,
|
|
900
|
+
};
|
|
901
|
+
}
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
if (toolName === 'tk_browser_screenshot') {
|
|
905
|
+
const url = req.params?.arguments?.url;
|
|
906
|
+
if (!url || typeof url !== 'string') {
|
|
907
|
+
throw new RpcError(-32602, 'Missing required argument: url (string)');
|
|
908
|
+
}
|
|
909
|
+
try {
|
|
910
|
+
const { launchBrowser, CdpClient, createNewTab, closeTab } = require('../dist/browser');
|
|
911
|
+
const browser = await launchBrowser();
|
|
912
|
+
let client = null;
|
|
913
|
+
let tab = null;
|
|
914
|
+
try {
|
|
915
|
+
tab = await createNewTab(browser.port);
|
|
916
|
+
client = new CdpClient();
|
|
917
|
+
await client.connect(tab.webSocketDebuggerUrl);
|
|
918
|
+
await client.initDomains();
|
|
919
|
+
await client.navigate(url);
|
|
920
|
+
const shot = await client.captureScreenshot('png');
|
|
921
|
+
return {
|
|
922
|
+
content: [
|
|
923
|
+
{
|
|
924
|
+
type: 'text',
|
|
925
|
+
text: `Screenshot captured successfully for ${url} (${Buffer.byteLength(shot, 'base64')} bytes base64 PNG).`,
|
|
926
|
+
},
|
|
927
|
+
],
|
|
928
|
+
};
|
|
929
|
+
} finally {
|
|
930
|
+
if (client) client.close();
|
|
931
|
+
if (tab && browser) await closeTab(tab.id, browser.port);
|
|
932
|
+
await browser.close();
|
|
933
|
+
}
|
|
934
|
+
} catch (e) {
|
|
935
|
+
return {
|
|
936
|
+
content: [{ type: 'text', text: `Screenshot error: ${e.message}` }],
|
|
937
|
+
isError: true,
|
|
938
|
+
};
|
|
939
|
+
}
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
if (toolName === 'tk_deconstruct_component') {
|
|
943
|
+
const url = req.params?.arguments?.url;
|
|
944
|
+
const selector = req.params?.arguments?.selector;
|
|
945
|
+
const name = req.params?.arguments?.name;
|
|
946
|
+
if (!url || !selector) {
|
|
947
|
+
throw new RpcError(-32602, 'Missing required arguments: url and selector (strings)');
|
|
948
|
+
}
|
|
949
|
+
try {
|
|
950
|
+
const { deconstructElement } = require('../dist/browser');
|
|
951
|
+
const result = await deconstructElement(url, selector, { name });
|
|
952
|
+
return {
|
|
953
|
+
content: [
|
|
954
|
+
{
|
|
955
|
+
type: 'text',
|
|
956
|
+
text: result.code,
|
|
957
|
+
},
|
|
958
|
+
],
|
|
959
|
+
};
|
|
960
|
+
} catch (e) {
|
|
961
|
+
return {
|
|
962
|
+
content: [{ type: 'text', text: `Component deconstruction error: ${e.message}` }],
|
|
963
|
+
isError: true,
|
|
964
|
+
};
|
|
965
|
+
}
|
|
966
|
+
}
|
|
967
|
+
|
|
968
|
+
if (toolName === 'tk_heal_runtime_errors') {
|
|
969
|
+
const url = req.params?.arguments?.url;
|
|
970
|
+
const verify = req.params?.arguments?.verify;
|
|
971
|
+
if (!url) {
|
|
972
|
+
throw new RpcError(-32602, 'Missing required argument: url (string)');
|
|
973
|
+
}
|
|
974
|
+
try {
|
|
975
|
+
const { captureRuntimeErrors, verifyRuntimeFix } = require('../dist/browser');
|
|
976
|
+
const result = verify
|
|
977
|
+
? await verifyRuntimeFix(url)
|
|
978
|
+
: await captureRuntimeErrors(url);
|
|
979
|
+
return {
|
|
980
|
+
content: [
|
|
981
|
+
{
|
|
982
|
+
type: 'text',
|
|
983
|
+
text: JSON.stringify(result, null, 2),
|
|
984
|
+
},
|
|
985
|
+
],
|
|
986
|
+
};
|
|
987
|
+
} catch (e) {
|
|
988
|
+
return {
|
|
989
|
+
content: [{ type: 'text', text: `Runtime Sentinel error: ${e.message}` }],
|
|
990
|
+
isError: true,
|
|
991
|
+
};
|
|
992
|
+
}
|
|
993
|
+
}
|
|
994
|
+
|
|
995
|
+
if (toolName === 'tk_codify_browser_audit') {
|
|
996
|
+
const url = req.params?.arguments?.url;
|
|
997
|
+
if (!url) {
|
|
998
|
+
throw new RpcError(-32602, 'Missing required argument: url (string)');
|
|
999
|
+
}
|
|
1000
|
+
try {
|
|
1001
|
+
const { auditURL, codifyAuditViolations } = require('../dist/browser');
|
|
1002
|
+
const report = await auditURL(url);
|
|
1003
|
+
const codified = codifyAuditViolations(report);
|
|
1004
|
+
return {
|
|
1005
|
+
content: [
|
|
1006
|
+
{
|
|
1007
|
+
type: 'text',
|
|
1008
|
+
text: JSON.stringify({ report, codified }, null, 2),
|
|
1009
|
+
},
|
|
1010
|
+
],
|
|
1011
|
+
};
|
|
1012
|
+
} catch (e) {
|
|
1013
|
+
return {
|
|
1014
|
+
content: [{ type: 'text', text: `Audit & codify error: ${e.message}` }],
|
|
1015
|
+
isError: true,
|
|
1016
|
+
};
|
|
1017
|
+
}
|
|
1018
|
+
}
|
|
1019
|
+
|
|
594
1020
|
if (toolName === 'dispatch_swarm') {
|
|
595
1021
|
const payload = req.params?.arguments?.payload;
|
|
596
1022
|
const file = req.params?.arguments?.file;
|
package/bin/proxy-server.js
CHANGED
|
@@ -51,29 +51,34 @@ function startProxyServer(port) {
|
|
|
51
51
|
// 5MB payload limit to prevent memory exhaustion (DoS)
|
|
52
52
|
if (body.length > 5 * 1024 * 1024) {
|
|
53
53
|
console.error('[Tribunal Proxy] Request too large, aborting.');
|
|
54
|
+
if (!clientRes.headersSent) {
|
|
55
|
+
clientRes.writeHead(413, { 'Content-Type': 'text/plain' });
|
|
56
|
+
clientRes.end('Payload Too Large');
|
|
57
|
+
}
|
|
54
58
|
clientReq.destroy();
|
|
55
59
|
}
|
|
56
60
|
});
|
|
57
61
|
|
|
58
62
|
clientReq.on('end', () => {
|
|
63
|
+
if (clientReq.destroyed) return;
|
|
59
64
|
let modifiedBody = body;
|
|
60
65
|
|
|
61
66
|
// Only intercept AI chat completion endpoints
|
|
62
|
-
if (clientReq.url.includes('/v1/messages')) {
|
|
67
|
+
if (clientReq.url && clientReq.url.includes('/v1/messages')) {
|
|
63
68
|
console.log(`[Tribunal Proxy] Intercepting request to ${clientReq.url}`);
|
|
64
69
|
modifiedBody = injectRulesIntoAnthropicPayload(body);
|
|
65
70
|
}
|
|
66
71
|
|
|
72
|
+
const headers = { ...clientReq.headers, host: 'api.anthropic.com' };
|
|
73
|
+
delete headers['transfer-encoding'];
|
|
74
|
+
headers['content-length'] = Buffer.byteLength(modifiedBody);
|
|
75
|
+
|
|
67
76
|
const options = {
|
|
68
77
|
hostname: 'api.anthropic.com',
|
|
69
78
|
port: 443,
|
|
70
79
|
path: clientReq.url,
|
|
71
80
|
method: clientReq.method,
|
|
72
|
-
headers
|
|
73
|
-
...clientReq.headers,
|
|
74
|
-
host: 'api.anthropic.com',
|
|
75
|
-
'content-length': Buffer.byteLength(modifiedBody),
|
|
76
|
-
},
|
|
81
|
+
headers,
|
|
77
82
|
};
|
|
78
83
|
|
|
79
84
|
const proxyReq = https.request(options, proxyRes => {
|
|
@@ -83,11 +88,15 @@ function startProxyServer(port) {
|
|
|
83
88
|
|
|
84
89
|
proxyReq.on('error', err => {
|
|
85
90
|
console.error('[Tribunal Proxy] Proxy request error:', err);
|
|
86
|
-
clientRes.
|
|
87
|
-
|
|
91
|
+
if (!clientRes.headersSent) {
|
|
92
|
+
clientRes.writeHead(502, { 'Content-Type': 'text/plain' });
|
|
93
|
+
clientRes.end('Bad Gateway');
|
|
94
|
+
}
|
|
88
95
|
});
|
|
89
96
|
|
|
90
|
-
|
|
97
|
+
if (modifiedBody && clientReq.method !== 'GET' && clientReq.method !== 'HEAD') {
|
|
98
|
+
proxyReq.write(modifiedBody);
|
|
99
|
+
}
|
|
91
100
|
proxyReq.end();
|
|
92
101
|
});
|
|
93
102
|
});
|
package/bin/spawn-agent.js
CHANGED
|
@@ -18,14 +18,20 @@ function spawnAgent(agentCommand, proxyPort) {
|
|
|
18
18
|
// NODE_TLS_REJECT_UNAUTHORIZED: "0"
|
|
19
19
|
};
|
|
20
20
|
|
|
21
|
+
const isWin = process.platform === 'win32';
|
|
21
22
|
const child = spawn(command, args, {
|
|
22
23
|
stdio: 'inherit', // Pass stdin, stdout, stderr directly to the TTY
|
|
23
24
|
env,
|
|
25
|
+
shell: isWin,
|
|
24
26
|
});
|
|
25
27
|
|
|
26
|
-
child.on('close', code => {
|
|
27
|
-
console.log(`[Tribunal Proxy] ${command} exited with code ${code}`);
|
|
28
|
-
|
|
28
|
+
child.on('close', (code, signal) => {
|
|
29
|
+
console.log(`[Tribunal Proxy] ${command} exited with code ${code !== null ? code : signal}`);
|
|
30
|
+
if (code !== null) {
|
|
31
|
+
process.exit(code);
|
|
32
|
+
} else {
|
|
33
|
+
process.exit(signal ? 128 : 1);
|
|
34
|
+
}
|
|
29
35
|
});
|
|
30
36
|
|
|
31
37
|
child.on('error', err => {
|
package/bin/wrapper.js
CHANGED
|
@@ -82,13 +82,14 @@ function getBinaryPath() {
|
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
-
// Third, attempt on-demand compilation if Cargo.toml exists locally and
|
|
85
|
+
// Third, attempt on-demand compilation if Cargo.toml exists locally and explicitly requested
|
|
86
86
|
const cargoTomlPath = path.resolve(__dirname, '..', 'Cargo.toml');
|
|
87
|
-
if (fs.existsSync(cargoTomlPath)) {
|
|
87
|
+
if (process.env.TK_AUTO_BUILD === '1' && fs.existsSync(cargoTomlPath)) {
|
|
88
88
|
try {
|
|
89
|
+
console.log('\x1b[90m⚡ Building Rust core engine (TK_AUTO_BUILD=1)...\x1b[0m');
|
|
89
90
|
const buildResult = spawnSync('cargo', ['build', '--release'], {
|
|
90
91
|
cwd: path.resolve(__dirname, '..'),
|
|
91
|
-
stdio: '
|
|
92
|
+
stdio: 'inherit',
|
|
92
93
|
timeout: 60000,
|
|
93
94
|
});
|
|
94
95
|
if (buildResult.status === 0) {
|
|
@@ -106,6 +107,15 @@ function getBinaryPath() {
|
|
|
106
107
|
}
|
|
107
108
|
|
|
108
109
|
function runRustBinary(binPath, args) {
|
|
110
|
+
// On Unix-like platforms, ensure the binary has execute permissions
|
|
111
|
+
if (os.platform() !== 'win32') {
|
|
112
|
+
try {
|
|
113
|
+
fs.chmodSync(binPath, 0o755);
|
|
114
|
+
} catch {
|
|
115
|
+
// Best-effort permission check
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
109
119
|
const stdio = ['inherit', 'inherit', 'inherit'];
|
|
110
120
|
const result = spawnSync(binPath, args, {
|
|
111
121
|
stdio: stdio,
|
|
@@ -122,7 +132,12 @@ function runRustBinary(binPath, args) {
|
|
|
122
132
|
return false; // Signal caller to fall back
|
|
123
133
|
}
|
|
124
134
|
|
|
125
|
-
|
|
135
|
+
if (result.signal) {
|
|
136
|
+
const signalCode = os.constants?.signals?.[result.signal] || 1;
|
|
137
|
+
process.exit(128 + signalCode);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
process.exit(result.status !== null && result.status !== undefined ? result.status : 1);
|
|
126
141
|
}
|
|
127
142
|
|
|
128
143
|
function runLegacyFallback() {
|