tribunal-kit 5.8.5 → 6.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/.manifest.json +78 -0
- package/.agent/ARCHITECTURE.md +32 -253
- package/.agent/agents/accessibility-reviewer.md +66 -151
- package/.agent/agents/ai-code-reviewer.md +22 -2
- package/.agent/agents/anti-pattern-reviewer.md +99 -0
- package/.agent/agents/api-architect.md +19 -2
- package/.agent/agents/backend-specialist.md +25 -3
- package/.agent/agents/cloud-engineer.md +21 -0
- package/.agent/agents/code-archaeologist.md +20 -3
- package/.agent/agents/complexity-reviewer.md +22 -2
- package/.agent/agents/database-architect.md +24 -3
- package/.agent/agents/db-latency-auditor.md +22 -2
- package/.agent/agents/debugger.md +19 -3
- package/.agent/agents/dependency-reviewer.md +19 -2
- package/.agent/agents/devops-engineer.md +24 -3
- package/.agent/agents/documentation-writer.md +21 -3
- package/.agent/agents/explorer-agent.md +21 -3
- package/.agent/agents/frontend-reviewer.md +19 -3
- package/.agent/agents/frontend-specialist.md +72 -224
- package/.agent/agents/game-developer.md +22 -3
- package/.agent/agents/interaction-reviewer.md +118 -0
- package/.agent/agents/logic-reviewer.md +18 -3
- package/.agent/agents/minimalist-reviewer.md +98 -0
- package/.agent/agents/mobile-developer.md +21 -3
- package/.agent/agents/mobile-reviewer.md +22 -2
- package/.agent/agents/orchestrator.md +19 -3
- package/.agent/agents/penetration-tester.md +22 -3
- package/.agent/agents/performance-optimizer.md +21 -3
- package/.agent/agents/performance-reviewer.md +2 -0
- package/.agent/agents/precedence-reviewer.md +19 -5
- package/.agent/agents/product-manager.md +20 -3
- package/.agent/agents/product-owner.md +22 -1
- package/.agent/agents/product-reviewer.md +98 -0
- package/.agent/agents/project-planner.md +19 -3
- package/.agent/agents/qa-automation-engineer.md +24 -3
- package/.agent/agents/resilience-reviewer.md +21 -2
- package/.agent/agents/schema-reviewer.md +21 -2
- package/.agent/agents/security-auditor.md +7 -1
- package/.agent/agents/seo-specialist.md +18 -3
- package/.agent/agents/sql-reviewer.md +22 -2
- package/.agent/agents/supervisor-agent.md +22 -3
- package/.agent/agents/swarm-worker-registry.md +7 -0
- package/.agent/agents/system-architect.md +19 -0
- package/.agent/agents/test-coverage-reviewer.md +22 -2
- package/.agent/agents/test-engineer.md +21 -2
- package/.agent/agents/throughput-optimizer.md +22 -2
- package/.agent/agents/type-safety-reviewer.md +21 -2
- package/.agent/agents/ui-ux-auditor.md +44 -242
- package/.agent/agents/ui-visual-auditor.md +99 -0
- package/.agent/agents/ux-reviewer.md +104 -0
- package/.agent/agents/visual-reviewer.md +98 -0
- package/.agent/agents/vitals-reviewer.md +23 -2
- package/.agent/history/README.md +53 -0
- package/.agent/history/case-law/cases/template-case.json +19 -0
- package/.agent/history/integrity_manifest.json +63 -33
- package/.agent/history/memory/.memory.idx +2701 -1
- package/.agent/history/memory/MEMORY.md +179 -1
- package/.agent/routing_index.json +273 -690
- package/.agent/rules/GEMINI.md +11 -13
- package/.agent/rules/GEMINI_PLANNER.md +84 -0
- package/.agent/scripts/case_law_manager.js +2 -0
- package/.agent/scripts/context_broker.js +152 -0
- package/.agent/scripts/guardrail_engine.js +59 -4
- package/.agent/scripts/impact_classifier.js +167 -0
- package/.agent/scripts/minimal_change_engine.js +437 -0
- package/.agent/scripts/pipeline_engine.js +856 -0
- package/.agent/scripts/socratic_gate_policy.js +60 -0
- package/.agent/scripts/token_budget_broker.js +52 -0
- package/.agent/scripts/verify_all.js +13 -0
- package/.agent/scripts/visual_audit.js +92 -0
- package/.agent/skill_topic_map.json +218 -0
- package/.agent/skills/12-principles-of-animation/SKILL.md +19 -10
- package/.agent/skills/60fps-animation/SKILL.md +19 -10
- package/.agent/skills/accessible-animation/SKILL.md +19 -10
- package/.agent/skills/adapt/SKILL.md +19 -10
- package/.agent/skills/advanced-rag-pipelines/SKILL.md +21 -3
- package/.agent/skills/agent-organizer/SKILL.md +21 -7
- package/.agent/skills/agentic-patterns/SKILL.md +19 -7
- package/.agent/skills/agentic-workflows-2026/SKILL.md +76 -0
- package/.agent/skills/ai-app-hardening/SKILL.md +58 -0
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +21 -7
- package/.agent/skills/animation-on-scroll/SKILL.md +19 -10
- package/.agent/skills/animation-systems/SKILL.md +19 -10
- package/.agent/skills/antfu-conventions/SKILL.md +21 -10
- package/.agent/skills/api-patterns/SKILL.md +21 -7
- package/.agent/skills/api-security-auditor/SKILL.md +21 -7
- package/.agent/skills/app-builder/SKILL.md +21 -7
- package/.agent/skills/apple-design/SKILL.md +19 -10
- package/.agent/skills/architecture/SKILL.md +21 -7
- package/.agent/skills/audit-and-fix/SKILL.md +19 -10
- package/.agent/skills/authentication-best-practices/SKILL.md +21 -7
- package/.agent/skills/backend-security-expert/SKILL.md +21 -7
- package/.agent/skills/baseline-ui/SKILL.md +19 -10
- package/.agent/skills/bash-linux/SKILL.md +21 -7
- package/.agent/skills/behavioral-modes/SKILL.md +19 -7
- package/.agent/skills/better-colors/SKILL.md +19 -10
- package/.agent/skills/better-ui/SKILL.md +19 -10
- package/.agent/skills/bolder/SKILL.md +19 -10
- package/.agent/skills/brainstorming/SKILL.md +17 -7
- package/.agent/skills/browser-native-ai/SKILL.md +19 -3
- package/.agent/skills/build-primitive/SKILL.md +19 -10
- package/.agent/skills/building-native-ui/SKILL.md +21 -7
- package/.agent/skills/cicd-pro/SKILL.md +21 -10
- package/.agent/skills/clarify/SKILL.md +19 -10
- package/.agent/skills/clean-code/SKILL.md +21 -7
- package/.agent/skills/cloud-architect/SKILL.md +21 -10
- package/.agent/skills/cobejs/SKILL.md +19 -10
- package/.agent/skills/code-review-checklist/SKILL.md +21 -7
- package/.agent/skills/codebase-design/SKILL.md +21 -10
- package/.agent/skills/colorize/SKILL.md +19 -10
- package/.agent/skills/compact-landing/SKILL.md +19 -10
- package/.agent/skills/company-logos/SKILL.md +19 -10
- package/.agent/skills/config-validator/SKILL.md +21 -7
- package/.agent/skills/containerization-pro/SKILL.md +21 -10
- package/.agent/skills/context-engineering-pro/SKILL.md +69 -0
- package/.agent/skills/create-design-md/SKILL.md +19 -10
- package/.agent/skills/critique/SKILL.md +19 -10
- package/.agent/skills/csharp-developer/SKILL.md +21 -7
- package/.agent/skills/data-validation-schemas/SKILL.md +21 -7
- package/.agent/skills/database-design/SKILL.md +21 -7
- package/.agent/skills/delight/SKILL.md +19 -10
- package/.agent/skills/deployment-procedures/SKILL.md +21 -7
- package/.agent/skills/design-lab/SKILL.md +21 -10
- package/.agent/skills/devops-engineer/SKILL.md +21 -7
- package/.agent/skills/devops-incident-responder/SKILL.md +21 -7
- package/.agent/skills/diagnosing-bugs/SKILL.md +21 -10
- package/.agent/skills/distill/SKILL.md +19 -10
- package/.agent/skills/documentation-templates/SKILL.md +21 -7
- package/.agent/skills/domain-modeling/SKILL.md +21 -10
- package/.agent/skills/duckdb-analytical-sql/SKILL.md +55 -0
- package/.agent/skills/edge-ai-mobile/SKILL.md +46 -0
- package/.agent/skills/edge-computing/SKILL.md +21 -7
- package/.agent/skills/emil-design-eng/SKILL.md +19 -10
- package/.agent/skills/error-resilience/SKILL.md +21 -7
- package/.agent/skills/expo-router-v4/SKILL.md +80 -0
- package/.agent/skills/extract-design-system/SKILL.md +21 -7
- package/.agent/skills/fabel-protocol/SKILL.md +19 -2
- package/.agent/skills/fixing-accessibility/SKILL.md +19 -10
- package/.agent/skills/fixing-metadata/SKILL.md +19 -10
- package/.agent/skills/fixing-motion-performance/SKILL.md +19 -10
- package/.agent/skills/framer-motion-expert/SKILL.md +19 -6
- package/.agent/skills/frontend-design/SKILL.md +64 -201
- package/.agent/skills/frontend-security-expert/SKILL.md +21 -7
- package/.agent/skills/game-design-expert/SKILL.md +21 -7
- package/.agent/skills/game-engineering-expert/SKILL.md +21 -7
- package/.agent/skills/generative-ui-expert/SKILL.md +19 -3
- package/.agent/skills/geo-fundamentals/SKILL.md +21 -7
- package/.agent/skills/git-pro/SKILL.md +21 -10
- package/.agent/skills/github-operations/SKILL.md +21 -7
- package/.agent/skills/gpt-taste/SKILL.md +19 -10
- package/.agent/skills/gsap-core/SKILL.md +21 -4
- package/.agent/skills/gsap-frameworks/SKILL.md +21 -4
- package/.agent/skills/gsap-performance/SKILL.md +20 -5
- package/.agent/skills/gsap-plugins/SKILL.md +20 -5
- package/.agent/skills/gsap-react/SKILL.md +20 -5
- package/.agent/skills/gsap-scrolltrigger/SKILL.md +21 -4
- package/.agent/skills/gsap-timeline/SKILL.md +20 -5
- package/.agent/skills/gsap-utils/SKILL.md +20 -5
- package/.agent/skills/harden/SKILL.md +19 -10
- package/.agent/skills/harness-protocol/SKILL.md +20 -4
- package/.agent/skills/i18n-localization/SKILL.md +21 -7
- package/.agent/skills/impeccable/SKILL.md +19 -10
- package/.agent/skills/improve-codebase-architecture/SKILL.md +21 -10
- package/.agent/skills/improve-ui/SKILL.md +19 -10
- package/.agent/skills/intelligent-routing/SKILL.md +19 -7
- package/.agent/skills/knowledge-graph/SKILL.md +20 -4
- package/.agent/skills/landing-page/SKILL.md +20 -10
- package/.agent/skills/lint-and-validate/SKILL.md +21 -7
- package/.agent/skills/llm-engineering/SKILL.md +21 -7
- package/.agent/skills/local-first/SKILL.md +21 -7
- package/.agent/skills/local-first-architecture/SKILL.md +19 -10
- package/.agent/skills/lottie-animation/SKILL.md +19 -10
- package/.agent/skills/marquee-loop/SKILL.md +19 -10
- package/.agent/skills/masked-reveal/SKILL.md +19 -10
- package/.agent/skills/mcp-builder/SKILL.md +21 -7
- package/.agent/skills/micro-interaction/SKILL.md +19 -10
- package/.agent/skills/mobile-design/SKILL.md +21 -6
- package/.agent/skills/monorepo-management/SKILL.md +21 -7
- package/.agent/skills/morphing-icons/SKILL.md +19 -10
- package/.agent/skills/motion-engineering/SKILL.md +20 -7
- package/.agent/skills/nextjs-react-expert/SKILL.md +19 -7
- package/.agent/skills/nodejs-best-practices/SKILL.md +21 -7
- package/.agent/skills/observability/SKILL.md +21 -7
- package/.agent/skills/opentelemetry-observability/SKILL.md +58 -0
- package/.agent/skills/page-transition-animation/SKILL.md +19 -10
- package/.agent/skills/parallel-agents/SKILL.md +23 -7
- package/.agent/skills/performance-profiling/SKILL.md +21 -7
- package/.agent/skills/plan-writing/SKILL.md +21 -7
- package/.agent/skills/platform-engineer/SKILL.md +21 -7
- package/.agent/skills/platform-engineering-opentofu/SKILL.md +67 -0
- package/.agent/skills/playwright-ai-e2e/SKILL.md +59 -0
- package/.agent/skills/playwright-best-practices/SKILL.md +21 -7
- package/.agent/skills/polish/SKILL.md +19 -10
- package/.agent/skills/powershell-windows/SKILL.md +21 -7
- package/.agent/skills/pricing-page/SKILL.md +19 -10
- package/.agent/skills/product-aware-heuristics/SKILL.md +358 -0
- package/.agent/skills/progressive-blur/SKILL.md +19 -10
- package/.agent/skills/project-idioms/SKILL.md +20 -8
- package/.agent/skills/property-based-testing/SKILL.md +60 -0
- package/.agent/skills/python-patterns/SKILL.md +21 -7
- package/.agent/skills/python-pro/SKILL.md +21 -6
- package/.agent/skills/quieter/SKILL.md +19 -10
- package/.agent/skills/react-doctor/SKILL.md +19 -10
- package/.agent/skills/react-specialist/SKILL.md +19 -6
- package/.agent/skills/readme-builder/SKILL.md +21 -7
- package/.agent/skills/realtime-patterns/SKILL.md +21 -7
- package/.agent/skills/red-team-tactics/SKILL.md +21 -7
- package/.agent/skills/redesign-skill/SKILL.md +19 -10
- package/.agent/skills/review-animations/SKILL.md +21 -10
- package/.agent/skills/rust-pro/SKILL.md +21 -7
- package/.agent/skills/seo-fundamentals/SKILL.md +21 -7
- package/.agent/skills/server-management/SKILL.md +21 -7
- package/.agent/skills/shadcn-ui-expert/SKILL.md +21 -7
- package/.agent/skills/shape/SKILL.md +19 -10
- package/.agent/skills/skill-creator/SKILL.md +21 -7
- package/.agent/skills/soft-skill/SKILL.md +19 -10
- package/.agent/skills/sounds-on-the-web/SKILL.md +19 -10
- package/.agent/skills/sql-pro/SKILL.md +21 -7
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +21 -7
- package/.agent/skills/svg-animation/SKILL.md +19 -10
- package/.agent/skills/swiftui-expert/SKILL.md +21 -7
- package/.agent/skills/swiss-design/SKILL.md +19 -10
- package/.agent/skills/system-design-pro/SKILL.md +21 -9
- package/.agent/skills/systematic-debugging/SKILL.md +21 -7
- package/.agent/skills/tailwind-patterns/SKILL.md +21 -7
- package/.agent/skills/taste-skill/SKILL.md +19 -10
- package/.agent/skills/tdd-workflow/SKILL.md +21 -10
- package/.agent/skills/test-result-analyzer/SKILL.md +18 -6
- package/.agent/skills/testing-patterns/SKILL.md +21 -7
- package/.agent/skills/thermo-nuclear-code-quality-review/SKILL.md +21 -10
- package/.agent/skills/thinking-protocol/SKILL.md +20 -8
- package/.agent/skills/to-spring-or-not-to-spring/SKILL.md +19 -10
- package/.agent/skills/transitions-dev/SKILL.md +19 -10
- package/.agent/skills/trend-researcher/SKILL.md +17 -6
- package/.agent/skills/typescript-advanced/SKILL.md +21 -7
- package/.agent/skills/typeset/SKILL.md +19 -10
- package/.agent/skills/ui-reasoning-engine/SKILL.md +154 -0
- package/.agent/skills/ui-skill-packs/SKILL.md +77 -0
- package/.agent/skills/ui-skills-root/SKILL.md +21 -9
- package/.agent/skills/ui-ux-pro-max/SKILL.md +62 -583
- package/.agent/skills/ui-ux-researcher/SKILL.md +17 -6
- package/.agent/skills/vector-search-pgvector/SKILL.md +77 -0
- package/.agent/skills/vue-expert/SKILL.md +19 -6
- package/.agent/skills/vulnerability-scanner/SKILL.md +21 -7
- package/.agent/skills/web-accessibility-auditor/SKILL.md +21 -7
- package/.agent/skills/web-design-guidelines/SKILL.md +32 -206
- package/.agent/skills/web-quality-audit/SKILL.md +19 -10
- package/.agent/skills/webapp-testing/SKILL.md +21 -7
- package/.agent/skills/webgpu-performance/SKILL.md +19 -3
- package/.agent/skills/whimsy-injector/SKILL.md +20 -10
- package/.agent/skills/workflow-optimizer/SKILL.md +16 -6
- package/.agent/skills/zero-trust-passkeys/SKILL.md +85 -0
- package/.agent/templates/DESIGN.md +292 -0
- package/.agent/templates/design-tokens.json +137 -0
- package/.agent/workflows/acf.md +13 -6
- package/.agent/workflows/api-tester.md +15 -8
- package/.agent/workflows/audit.md +19 -8
- package/.agent/workflows/brainstorm.md +14 -9
- package/.agent/workflows/changelog.md +14 -8
- package/.agent/workflows/create.md +16 -8
- package/.agent/workflows/debug.md +15 -10
- package/.agent/workflows/deploy.md +16 -8
- package/.agent/workflows/enhance.md +15 -10
- package/.agent/workflows/fix.md +15 -8
- package/.agent/workflows/generate.md +17 -11
- package/.agent/workflows/marathon.md +15 -8
- package/.agent/workflows/migrate.md +16 -8
- package/.agent/workflows/minimal.md +94 -0
- package/.agent/workflows/orchestrate.md +15 -8
- package/.agent/workflows/performance-benchmarker.md +15 -8
- package/.agent/workflows/pipeline.md +155 -0
- package/.agent/workflows/plan.md +14 -10
- package/.agent/workflows/preview.md +14 -7
- package/.agent/workflows/refactor.md +16 -8
- package/.agent/workflows/review-ai.md +15 -7
- package/.agent/workflows/review.md +15 -7
- package/.agent/workflows/session.md +14 -7
- package/.agent/workflows/status.md +13 -7
- package/.agent/workflows/strengthen-skills.md +15 -6
- package/.agent/workflows/super-prompt.md +19 -10
- package/.agent/workflows/swarm.md +15 -7
- package/.agent/workflows/test.md +15 -8
- package/.agent/workflows/tribunal-backend.md +16 -9
- package/.agent/workflows/tribunal-database.md +15 -8
- package/.agent/workflows/tribunal-frontend.md +26 -11
- package/.agent/workflows/tribunal-full.md +41 -26
- package/.agent/workflows/tribunal-mobile.md +15 -8
- package/.agent/workflows/tribunal-performance.md +15 -8
- package/.agent/workflows/tribunal-speed.md +16 -9
- package/.agent/workflows/tribunal-ui.md +82 -0
- package/.agent/workflows/ui-ux-pro-max.md +51 -107
- package/CONTRIBUTING.md +2 -2
- package/README.md +82 -60
- package/SECURITY.md +3 -3
- package/bin/mcp-server.js +253 -57
- package/bin/wrapper.js +24 -10
- package/dist/cli.js +29 -1
- package/dist/commands/compile.js +7 -0
- package/dist/commands/context.js +8 -3
- package/dist/commands/graph.js +8 -2
- package/dist/commands/init.js +13 -2
- package/dist/commands/memory.js +120 -68
- package/dist/commands/minimal.js +71 -0
- package/dist/commands/native.js +36 -0
- package/dist/commands/optimize.js +15 -5
- package/dist/esm/index.mjs +58 -32
- package/dist/index.d.ts +50 -2
- package/dist/utils/fs.js +10 -4
- package/dist/utils/helpers.js +10 -1
- package/dist/utils/version.js +9 -2
- package/mcp_config.json +10 -1
- package/package.json +16 -10
- package/scripts/benchmark.js +16 -0
- package/scripts/sync-version.js +1 -1
- package/scripts/visual_audit.js +126 -0
package/dist/utils/version.js
CHANGED
|
@@ -119,18 +119,25 @@ function fetchLatestVersion(currentVersion) {
|
|
|
119
119
|
*
|
|
120
120
|
* Returns true if a re-invoke happened (caller should exit), false otherwise.
|
|
121
121
|
*/
|
|
122
|
+
let hasRegisteredUpdateNotifier = false;
|
|
123
|
+
|
|
122
124
|
async function autoUpdateCheck(originalArgs, currentVersion) {
|
|
123
125
|
// Recursion guard: if we're already a re-invoked process, skip
|
|
124
126
|
if (process.env.TK_SKIP_UPDATE_CHECK === '1') {
|
|
125
127
|
return false;
|
|
126
128
|
}
|
|
127
129
|
|
|
130
|
+
if (hasRegisteredUpdateNotifier) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
hasRegisteredUpdateNotifier = true;
|
|
134
|
+
|
|
128
135
|
// Fire the fetch but DON'T await it immediately — let the command run first
|
|
129
136
|
const versionPromise = fetchLatestVersion(currentVersion);
|
|
130
137
|
|
|
131
|
-
// Register a process.
|
|
138
|
+
// Register a process.once('beforeExit') hook to show the update notification
|
|
132
139
|
// AFTER the command has finished executing
|
|
133
|
-
process.
|
|
140
|
+
process.once('beforeExit', async () => {
|
|
134
141
|
try {
|
|
135
142
|
const latestVersion = await versionPromise;
|
|
136
143
|
if (!latestVersion) return;
|
package/mcp_config.json
CHANGED
|
@@ -3,7 +3,16 @@
|
|
|
3
3
|
"tribunal-kit": {
|
|
4
4
|
"command": "node",
|
|
5
5
|
"args": ["bin/mcp-server.js"],
|
|
6
|
-
"env": {
|
|
6
|
+
"env": {
|
|
7
|
+
"NODE_ENV": "production"
|
|
8
|
+
}
|
|
7
9
|
}
|
|
10
|
+
},
|
|
11
|
+
"minimal_change": {
|
|
12
|
+
"enabled": true,
|
|
13
|
+
"mode": "balanced",
|
|
14
|
+
"repository_search": true,
|
|
15
|
+
"change_budget": true,
|
|
16
|
+
"minimality_score": true
|
|
8
17
|
}
|
|
9
18
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tribunal-kit",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "6.0.1",
|
|
4
|
+
"description": "Your AI writes code that doesn't exist. Tribunal Kit stops it. The governance layer for AI coding agents — 51 specialists, 27 parallel reviewers, 183 skills, Rust core, MCP server. Works with Cursor, VSCode, Windsurf, Claude Code, and Aider.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
7
7
|
"ai-agent",
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"node": ">=18.0.0"
|
|
81
81
|
},
|
|
82
82
|
"scripts": {
|
|
83
|
-
"test": "npm run validate-payload && jest --coverage",
|
|
83
|
+
"test": "npm run validate-payload && jest --runInBand --coverage",
|
|
84
84
|
"test:unit": "jest test/unit --coverage",
|
|
85
85
|
"test:integration": "jest test/integration --coverage",
|
|
86
86
|
"preversion": "node scripts/sync-version.js",
|
|
@@ -92,21 +92,26 @@
|
|
|
92
92
|
"benchmark": "node scripts/benchmark.js",
|
|
93
93
|
"benchmark:rust": "cargo build --release && node scripts/benchmark.js",
|
|
94
94
|
"build:rust": "cargo build --release",
|
|
95
|
+
"build:core": "cargo build --release --manifest-path crates/core/Cargo.toml",
|
|
95
96
|
"test:rust": "cargo test --manifest-path crates/core/Cargo.toml",
|
|
97
|
+
"test:all": "npm run validate-payload && npm run test:rust && jest --runInBand --coverage",
|
|
98
|
+
"format": "prettier --write .",
|
|
99
|
+
"format:check": "prettier --check .",
|
|
96
100
|
"build": "npm run build:rust"
|
|
97
101
|
},
|
|
98
102
|
"devDependencies": {
|
|
99
103
|
"eslint": "^9.1.1",
|
|
100
104
|
"jest": "^30.4.2",
|
|
105
|
+
"prettier": "^3.2.5",
|
|
101
106
|
"typescript": "^5.4.5"
|
|
102
107
|
},
|
|
103
108
|
"optionalDependencies": {
|
|
104
|
-
"@tribunal-kit/core-darwin-arm64": "^
|
|
105
|
-
"@tribunal-kit/core-darwin-x64": "^
|
|
106
|
-
"@tribunal-kit/core-linux-arm64": "^
|
|
107
|
-
"@tribunal-kit/core-linux-x64": "^
|
|
108
|
-
"@tribunal-kit/core-win32-arm64": "^
|
|
109
|
-
"@tribunal-kit/core-win32-x64": "^
|
|
109
|
+
"@tribunal-kit/core-darwin-arm64": "^6.0.1",
|
|
110
|
+
"@tribunal-kit/core-darwin-x64": "^6.0.1",
|
|
111
|
+
"@tribunal-kit/core-linux-arm64": "^6.0.1",
|
|
112
|
+
"@tribunal-kit/core-linux-x64": "^6.0.1",
|
|
113
|
+
"@tribunal-kit/core-win32-arm64": "^6.0.1",
|
|
114
|
+
"@tribunal-kit/core-win32-x64": "^6.0.1"
|
|
110
115
|
},
|
|
111
116
|
"jest": {
|
|
112
117
|
"testMatch": [
|
|
@@ -116,7 +121,8 @@
|
|
|
116
121
|
"coverageDirectory": "coverage",
|
|
117
122
|
"collectCoverageFrom": [
|
|
118
123
|
"bin/**/*.js",
|
|
119
|
-
".agent/scripts/**/*.js"
|
|
124
|
+
".agent/scripts/**/*.js",
|
|
125
|
+
"dist/**/*.js"
|
|
120
126
|
]
|
|
121
127
|
}
|
|
122
128
|
}
|
package/scripts/benchmark.js
CHANGED
|
@@ -183,6 +183,22 @@ async function main() {
|
|
|
183
183
|
);
|
|
184
184
|
results.push(dagResult);
|
|
185
185
|
|
|
186
|
+
// 6. Minimal Change Governance Engine benchmark
|
|
187
|
+
console.log(c("cyan", " ▸ Benchmarking: Minimal Change Governance Engine"));
|
|
188
|
+
const minResult = await benchmark(
|
|
189
|
+
"Minimal Change Audit",
|
|
190
|
+
() => {
|
|
191
|
+
const minEngine = require("../.agent/scripts/minimal_change_engine");
|
|
192
|
+
minEngine.evaluateMinimalChange("add retry logic to API requests", {
|
|
193
|
+
files_added: 0,
|
|
194
|
+
files_modified: 1,
|
|
195
|
+
estimated_lines_added: 15,
|
|
196
|
+
});
|
|
197
|
+
},
|
|
198
|
+
20,
|
|
199
|
+
);
|
|
200
|
+
results.push(minResult);
|
|
201
|
+
|
|
186
202
|
|
|
187
203
|
// Print results table
|
|
188
204
|
console.log();
|
package/scripts/sync-version.js
CHANGED
|
@@ -80,7 +80,7 @@ function checkVersionMetadata() {
|
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
const cargoLock = readText("Cargo.lock");
|
|
83
|
-
const cargoLockVersion = cargoLock.match(/name\s*=\s*"tribunal-core"\s
|
|
83
|
+
const cargoLockVersion = cargoLock.match(/name\s*=\s*"tribunal-core"[\s\S]*?version\s*=\s*"([^"]+)"/)?.[1];
|
|
84
84
|
if (cargoLockVersion !== VERSION) {
|
|
85
85
|
fail(`Cargo.lock tribunal-core version is ${cargoLockVersion || "missing"}, expected ${VERSION}`);
|
|
86
86
|
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Automated UI Visual & Anti-Slop Audit Script
|
|
5
|
+
* Analyzes frontend files (JSX/TSX/CSS/HTML) for visual depth, color spaces, anti-slop rules, and interactive state completeness.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
const fs = require('fs');
|
|
9
|
+
const path = require('path');
|
|
10
|
+
|
|
11
|
+
function runVisualAudit(filePath) {
|
|
12
|
+
if (!fs.existsSync(filePath)) {
|
|
13
|
+
return {
|
|
14
|
+
status: 'ERROR',
|
|
15
|
+
score: 0,
|
|
16
|
+
message: `File not found: ${filePath}`,
|
|
17
|
+
violations: []
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const content = fs.readFileSync(filePath, 'utf8');
|
|
22
|
+
const violations = [];
|
|
23
|
+
let score = 100;
|
|
24
|
+
|
|
25
|
+
// 1. Purple/Violet AI cliché color check
|
|
26
|
+
const purpleRegex = /#(?:7[cC]3[aA][eE][dD]|8[bB]5[cC][fF]6|9333ea|a855f7|c084fc)/i;
|
|
27
|
+
if (purpleRegex.test(content) || /color:\s*(?:purple|violet)/i.test(content)) {
|
|
28
|
+
violations.push({
|
|
29
|
+
rule: 'NO_PURPLE_CLICHE',
|
|
30
|
+
severity: 'REJECTED',
|
|
31
|
+
description: 'Primary color uses AI cliché purple/violet (#7C3AED, #8B5CF6). Use signal orange, acid green, slate, or OKLCH blue instead.',
|
|
32
|
+
impact: -25
|
|
33
|
+
});
|
|
34
|
+
score -= 25;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// 2. Raw Hex without OKLCH or design tokens
|
|
38
|
+
const rawHexRegex = /#[0-9a-fA-F]{6}\b/g;
|
|
39
|
+
const hexMatches = content.match(rawHexRegex) || [];
|
|
40
|
+
if (hexMatches.length > 4 && !/oklch/i.test(content) && !/var\(--/i.test(content)) {
|
|
41
|
+
violations.push({
|
|
42
|
+
rule: 'USE_OKLCH_OR_TOKENS',
|
|
43
|
+
severity: 'REJECTED',
|
|
44
|
+
description: 'Found raw hex colors without modern OKLCH color spaces or design token variables.',
|
|
45
|
+
impact: -15
|
|
46
|
+
});
|
|
47
|
+
score -= 15;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// 3. Interactive state check on clickable elements
|
|
51
|
+
if (/<button|<a\b|onClick=/i.test(content)) {
|
|
52
|
+
if (!/hover:/i.test(content) && !/:hover/i.test(content)) {
|
|
53
|
+
violations.push({
|
|
54
|
+
rule: 'MISSING_HOVER_STATE',
|
|
55
|
+
severity: 'WARNING',
|
|
56
|
+
description: 'Interactive buttons/links lack visible hover state handling.',
|
|
57
|
+
impact: -10
|
|
58
|
+
});
|
|
59
|
+
score -= 10;
|
|
60
|
+
}
|
|
61
|
+
if (!/focus-visible:/i.test(content) && !/:focus/i.test(content)) {
|
|
62
|
+
violations.push({
|
|
63
|
+
rule: 'MISSING_FOCUS_INDICATOR',
|
|
64
|
+
severity: 'WARNING',
|
|
65
|
+
description: 'Interactive elements lack focus-visible outlines for keyboard accessibility.',
|
|
66
|
+
impact: -10
|
|
67
|
+
});
|
|
68
|
+
score -= 10;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// 4. Visual depth & border check for container elements
|
|
73
|
+
if (/className=["'][^"']*(?:card|container|box|panel|wrapper)[^"']*["']/i.test(content) || /<article|<section/i.test(content)) {
|
|
74
|
+
if (!/border|shadow|hairline|depth/i.test(content)) {
|
|
75
|
+
violations.push({
|
|
76
|
+
rule: 'MISSING_SURFACE_DEPTH',
|
|
77
|
+
severity: 'WARNING',
|
|
78
|
+
description: 'Container elements lack 1px luminous border or ambient shadow depth layers.',
|
|
79
|
+
impact: -15
|
|
80
|
+
});
|
|
81
|
+
score -= 15;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// 5. Hardcoded static offsets vs dynamic math
|
|
86
|
+
if (/style=\{\{[^}]*\b(?:top|left|height|width):\s*['"]\d+px['"]/i.test(content)) {
|
|
87
|
+
violations.push({
|
|
88
|
+
rule: 'HARDCODED_PIXEL_LAYOUT',
|
|
89
|
+
severity: 'WARNING',
|
|
90
|
+
description: 'Hardcoded static pixel offsets found in inline styles. Use responsive clamp() or layout bounds.',
|
|
91
|
+
impact: -10
|
|
92
|
+
});
|
|
93
|
+
score -= 10;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const finalScore = Math.max(0, score);
|
|
97
|
+
const status = violations.some(v => v.severity === 'REJECTED') ? 'REJECTED' : (violations.length > 0 ? 'WARNING' : 'APPROVED');
|
|
98
|
+
|
|
99
|
+
return {
|
|
100
|
+
status,
|
|
101
|
+
score: finalScore,
|
|
102
|
+
file: filePath,
|
|
103
|
+
violations
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// CLI Execution Support
|
|
108
|
+
if (require.main === module) {
|
|
109
|
+
const args = process.argv.slice(2);
|
|
110
|
+
const fileArgIndex = args.indexOf('--file');
|
|
111
|
+
const targetPath = fileArgIndex !== -1 ? args[fileArgIndex + 1] : args[0];
|
|
112
|
+
|
|
113
|
+
if (!targetPath) {
|
|
114
|
+
console.error('Usage: node visual_audit.js --file <path-to-file>');
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const result = runVisualAudit(path.resolve(targetPath));
|
|
119
|
+
console.log(JSON.stringify(result, null, 2));
|
|
120
|
+
|
|
121
|
+
if (result.status === 'REJECTED') {
|
|
122
|
+
process.exit(1);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
module.exports = { runVisualAudit };
|