tribunal-kit 5.8.2 → 5.8.3
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 +13 -13
- package/.agent/agents/complexity-reviewer.md +53 -0
- package/.agent/agents/precedence-reviewer.md +12 -12
- package/.agent/agents/swarm-worker-registry.md +3 -3
- package/.agent/history/memory/.memory.idx +153 -1
- package/.agent/history/memory/MEMORY.md +11 -1
- package/.agent/rules/GEMINI.md +31 -28
- package/.agent/skills/app-builder/SKILL.md +1 -1
- package/.agent/skills/lint-and-validate/SKILL.md +2 -2
- package/.agent/skills/project-idioms/SKILL.md +7 -7
- package/.agent/skills/test-result-analyzer/SKILL.md +1 -1
- package/.agent/workflows/fix.md +2 -2
- package/.agent/workflows/generate.md +1 -1
- package/.agent/workflows/preview.md +5 -5
- package/.agent/workflows/status.md +1 -1
- package/.agent/workflows/tribunal-full.md +3 -3
- package/.agent/workflows/tribunal-speed.md +1 -1
- package/package.json +7 -7
package/.agent/ARCHITECTURE.md
CHANGED
|
@@ -42,7 +42,7 @@ Type any of these in your AI IDE chat:
|
|
|
42
42
|
| ----------------------- | -------------------------------------------------------------------------------------- | ----------------------------------- |
|
|
43
43
|
| `/generate` | Full Tribunal: Maker → Parallel Review → Human Gate | `workflows/generate.md` |
|
|
44
44
|
| `/review` | Audit existing code (no generation) | `workflows/review.md` |
|
|
45
|
-
| `/tribunal-full` | ALL
|
|
45
|
+
| `/tribunal-full` | ALL 20 reviewers at once — maximum coverage | `workflows/tribunal-full.md` |
|
|
46
46
|
| `/tribunal-backend` | Logic + Security + Deps + Types | `workflows/tribunal-backend.md` |
|
|
47
47
|
| `/tribunal-frontend` | Logic + Security + Frontend + Types | `workflows/tribunal-frontend.md` |
|
|
48
48
|
| `/tribunal-database` | Logic + Security + SQL | `workflows/tribunal-database.md` |
|
|
@@ -71,7 +71,7 @@ Type any of these in your AI IDE chat:
|
|
|
71
71
|
|
|
72
72
|
---
|
|
73
73
|
|
|
74
|
-
## The
|
|
74
|
+
## The 20 Tribunal Reviewers
|
|
75
75
|
|
|
76
76
|
| Agent | File | Activates When |
|
|
77
77
|
| ------------------------ | ---------------------------------- | ----------------------------------------------------------------------------------- |
|
|
@@ -150,7 +150,7 @@ The Swarm system decomposes complex multi-domain goals into independent sub-task
|
|
|
150
150
|
| `agent-organizer` | Specialist agent operations |
|
|
151
151
|
| `project-planner` | 4-phase structured planning |
|
|
152
152
|
| `backend-specialist` | API, server, auth |
|
|
153
|
-
| `
|
|
153
|
+
| `csharp-developer` | C# / .NET architecture |
|
|
154
154
|
| `python-pro` | Python backend development |
|
|
155
155
|
| `frontend-specialist` | Web UI / Components |
|
|
156
156
|
| `react-specialist` | React / Next.js architecture |
|
|
@@ -228,17 +228,17 @@ All scripts live in `.agent/scripts/`:
|
|
|
228
228
|
| -------------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------- |
|
|
229
229
|
| `checklist.js` | Priority-ordered project audit | `node .agent/scripts/checklist.js .` |
|
|
230
230
|
| `verify_all.js` | Full pre-deploy validation | `node .agent/scripts/verify_all.js` |
|
|
231
|
-
| `auto_preview.
|
|
231
|
+
| `auto_preview.js` | Local dev server management | `node .agent/scripts/auto_preview.js start` |
|
|
232
232
|
| `session_manager.js` | Multi-session state tracking | `node .agent/scripts/session_manager.js status` |
|
|
233
|
-
| `lint_runner.
|
|
234
|
-
| `test_runner.
|
|
233
|
+
| `lint_runner.js` | Standalone lint runner | `node .agent/scripts/lint_runner.js . --fix` |
|
|
234
|
+
| `test_runner.js` | Auto-detecting test runner | `node .agent/scripts/test_runner.js . --coverage` |
|
|
235
235
|
| `security_scan.js` | OWASP-aware source code scanner | `node .agent/scripts/security_scan.js .` |
|
|
236
|
-
| `dependency_analyzer.
|
|
237
|
-
| `schema_validator.
|
|
238
|
-
| `bundle_analyzer.
|
|
239
|
-
| `strengthen_skills.
|
|
236
|
+
| `dependency_analyzer.js` | Unused/phantom dep checker | `node .agent/scripts/dependency_analyzer.js . --audit` |
|
|
237
|
+
| `schema_validator.js` | DB schema validator | `node .agent/scripts/schema_validator.js .` |
|
|
238
|
+
| `bundle_analyzer.js` | JS/TS bundle size analyzer | `node .agent/scripts/bundle_analyzer.js . --build` |
|
|
239
|
+
| `strengthen_skills.js` | Appends Tribunal guardrails (LLM Traps + Pre-Flight + VBC) to skills missing them | `node .agent/scripts/strengthen_skills.js . --dry-run` |
|
|
240
240
|
| `swarm_dispatcher.js` | Validate Orchestrator micro-worker JSON payloads | `node .agent/scripts/swarm_dispatcher.js --file payload.json` |
|
|
241
|
-
| `skill_integrator.
|
|
241
|
+
| `skill_integrator.js` | Map active skills to executable scripts | `node .agent/scripts/skill_integrator.js` |
|
|
242
242
|
| `test_swarm_dispatcher.js` | Unit tests for swarm_dispatcher | `npx jest test/integration/swarm_dispatcher.test.js` |
|
|
243
243
|
|
|
244
244
|
---
|
|
@@ -267,12 +267,12 @@ Script failures follow cascade rules:
|
|
|
267
267
|
.agent/
|
|
268
268
|
├── ARCHITECTURE.md ← This file
|
|
269
269
|
├── GEMINI.md ← Root behavior config (includes /swarm routing)
|
|
270
|
-
├── agents/ ← 43 specialist + reviewer agents (
|
|
270
|
+
├── agents/ ← 43 specialist + reviewer agents (20 reviewers + 23 domain)
|
|
271
271
|
│ ├── supervisor-agent.md ← Swarm triage, dispatch, synthesis
|
|
272
272
|
│ ├── swarm-worker-contracts.md ← WorkerRequest/WorkerResult schemas
|
|
273
273
|
│ └── swarm-worker-registry.md ← Task type → agent routing map
|
|
274
274
|
├── rules/GEMINI.md ← Master rules (P0 priority)
|
|
275
|
-
├── scripts/ ←
|
|
275
|
+
├── scripts/ ← 29 JS automation scripts
|
|
276
276
|
├── skills/ ← 106 modular skill packages (all hardened)
|
|
277
277
|
├── patterns/ ← 5 ADK skill base patterns
|
|
278
278
|
├── history/ ← Case Law + Skill Evolution data (user-generated, preserved on update)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: complexity-reviewer
|
|
3
|
+
description: Enforces the Dependency Ladder to prevent over-engineering. Audits every generated code snippet for redundant dependencies, unnecessary abstractions, premature optimization, and custom implementations of standard library or native platform features. Activates automatically on all /generate, /review, and /tribunal-* commands.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
last-updated: 2026-07-18
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Complexity Reviewer — The Pragmatist
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Core Mandate
|
|
13
|
+
|
|
14
|
+
You have one job: enforce the **Dependency Ladder** and prevent over-engineering. Audit code changes to ensure that the developer has chosen the simplest possible implementation and avoided unnecessary dependencies.
|
|
15
|
+
|
|
16
|
+
**Your burden of proof:** Every custom utility or imported package must justify its existence. If a feature can be implemented using native platform elements, standard library functions, or packages already present in `package.json`, you must reject the proposal and guide the developer back down the ladder.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## The 6 Rungs of the Dependency Ladder
|
|
21
|
+
|
|
22
|
+
Before code is accepted, you must verify that the implementation sits at the lowest successful rung:
|
|
23
|
+
|
|
24
|
+
1. **Existence**: Does the feature actually need to exist?
|
|
25
|
+
2. **Stdlib**: Can this be done with the language standard library?
|
|
26
|
+
3. **Platform**: Can the native platform (HTML5, CSS, Web APIs, standard browser features) handle it?
|
|
27
|
+
4. **Installed Dep**: Can an already-installed dependency solve it?
|
|
28
|
+
5. **One Line**: Can this be solved in a single line of custom code?
|
|
29
|
+
6. **Minimum**: Write the absolute minimum custom code that works (no premature abstractions).
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Section 1: Common Over-Engineering Patterns to Reject
|
|
34
|
+
|
|
35
|
+
| Anti-Pattern | Why It's Rejected | Real Alternative (Lower Rung) |
|
|
36
|
+
| :--- | :--- | :--- |
|
|
37
|
+
| Importing `lodash` or similar utility library | Standard library handles most collections/strings | Use native `Array.prototype` methods or modern JS features |
|
|
38
|
+
| Custom React/Vue slider/carousel component | Heavy, complex, prone to accessibility bugs | Native CSS Scroll Snap or standard platform elements |
|
|
39
|
+
| Hand-rolling custom cryptographic / hashing utils | Prone to security vulnerabilities and bugs | Use standard Node.js `crypto` or Web Crypto API |
|
|
40
|
+
| Elaborate helper/wrapper layers for simple APIs | Wastes context, adds cognitive overhead | Direct API consumption (Keep It Simple) |
|
|
41
|
+
| Adding new NPM packages for simple tasks | Bloats bundle, introduces supply-chain risk | Write a simple pure function locally |
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Section 2: Review Verdict Guidelines
|
|
46
|
+
|
|
47
|
+
Your review should output one of two verdicts:
|
|
48
|
+
|
|
49
|
+
### 1. `✅ APPROVED`
|
|
50
|
+
The code is simple, uses native platform capabilities, does not introduce unnecessary dependencies, and follows the Dependency Ladder.
|
|
51
|
+
|
|
52
|
+
### 2. `❌ REJECTED`
|
|
53
|
+
The code is over-engineered, introduces a redundant dependency, or implements custom logic where a standard library/platform API exists. Provide a clear alternative showing how to rewrite the code at a lower rung.
|
|
@@ -59,7 +59,7 @@ Keywords to flag:
|
|
|
59
59
|
Run the following command to search for relevant precedents:
|
|
60
60
|
|
|
61
61
|
```bash
|
|
62
|
-
|
|
62
|
+
node .agent/scripts/case_law_manager.js search-cases --query "<extracted keywords>"
|
|
63
63
|
```
|
|
64
64
|
|
|
65
65
|
This uses **TF-IDF weighted cosine similarity**. No LLM is called. No tokens consumed.
|
|
@@ -95,7 +95,7 @@ reviewer delivers a verdict.
|
|
|
95
95
|
□ Developer explicitly overrides this precedent (requires human approval)
|
|
96
96
|
|
|
97
97
|
To override, run:
|
|
98
|
-
|
|
98
|
+
node .agent/scripts/case_law_manager.js add-case
|
|
99
99
|
And record a new case with verdict: APPROVED_WITH_CONDITIONS
|
|
100
100
|
```
|
|
101
101
|
|
|
@@ -109,7 +109,7 @@ reviewer delivers a verdict.
|
|
|
109
109
|
Summary : [REASON_SUMMARY]
|
|
110
110
|
|
|
111
111
|
The proposed code may be related to a past decision. Review before approving.
|
|
112
|
-
Run:
|
|
112
|
+
Run: node .agent/scripts/case_law_manager.js show --id [ID]
|
|
113
113
|
```
|
|
114
114
|
|
|
115
115
|
### If similarity score < 0.2 → CLEAR
|
|
@@ -131,7 +131,7 @@ Case Law, prompt the developer:
|
|
|
131
131
|
The [reviewer-name] just rejected code for a new reason not in Case Law.
|
|
132
132
|
Record this decision to prevent future repetition:
|
|
133
133
|
|
|
134
|
-
|
|
134
|
+
node .agent/scripts/case_law_manager.js add-case
|
|
135
135
|
|
|
136
136
|
This takes < 60 seconds and permanently strengthens your Tribunal.
|
|
137
137
|
```
|
|
@@ -148,7 +148,7 @@ rejection as a new case. This is NOT optional — the Supreme Court depends on i
|
|
|
148
148
|
**Action:** Run the following command (non-interactive, no human input needed):
|
|
149
149
|
|
|
150
150
|
```bash
|
|
151
|
-
|
|
151
|
+
node .agent/scripts/case_law_manager.js auto-record \
|
|
152
152
|
--diff "<the rejected code snippet>" \
|
|
153
153
|
--reason "<the reviewer's rejection reason>" \
|
|
154
154
|
--domain <domain> \
|
|
@@ -229,23 +229,23 @@ Human Gate receives your hold as a hard blocker alongside their verdicts.
|
|
|
229
229
|
|
|
230
230
|
```bash
|
|
231
231
|
# Search Case Law (TF-IDF cosine — zero tokens)
|
|
232
|
-
|
|
232
|
+
node .agent/scripts/case_law_manager.js search-cases --query "useEffect dependency"
|
|
233
233
|
|
|
234
234
|
# Record a new rejection (interactive)
|
|
235
|
-
|
|
235
|
+
node .agent/scripts/case_law_manager.js add-case
|
|
236
236
|
|
|
237
237
|
# Auto-record a rejection (non-interactive — for AI agents)
|
|
238
|
-
|
|
238
|
+
node .agent/scripts/case_law_manager.js auto-record --diff "code" --reason "why" --domain security
|
|
239
239
|
|
|
240
240
|
# View full case
|
|
241
|
-
|
|
241
|
+
node .agent/scripts/case_law_manager.js show --id 7
|
|
242
242
|
|
|
243
243
|
# Overrule a past precedent
|
|
244
|
-
|
|
244
|
+
node .agent/scripts/case_law_manager.js overrule --id 7 --reason "no longer applicable"
|
|
245
245
|
|
|
246
246
|
# See all cases
|
|
247
|
-
|
|
247
|
+
node .agent/scripts/case_law_manager.js list
|
|
248
248
|
|
|
249
249
|
# Export full history
|
|
250
|
-
|
|
250
|
+
node .agent/scripts/case_law_manager.js export
|
|
251
251
|
```
|
|
@@ -16,7 +16,7 @@ All agents listed here MUST exist as `.md` files in `.agent/agents/`.
|
|
|
16
16
|
| `research` | performance, profiling, optimization | `performance-optimizer` |
|
|
17
17
|
| `generate_code` | api, route, endpoint, server, express, auth, jwt | `backend-specialist` |
|
|
18
18
|
| `generate_code` | python, fastapi, django, flask | `python-pro` |
|
|
19
|
-
| `generate_code` | c#, .net, blazor, aspnet | `
|
|
19
|
+
| `generate_code` | c#, .net, blazor, aspnet | `csharp-developer` |
|
|
20
20
|
| `generate_code` | component, hook, react, next, ui, css | `frontend-specialist` |
|
|
21
21
|
| `generate_code` | mobile, react native, flutter, ios, android | `mobile-developer` |
|
|
22
22
|
| `generate_code` | docker, ci, cd, deploy, github actions, cloud | `devops-engineer` |
|
|
@@ -54,7 +54,7 @@ Quick reference for Supervisor triage. Full instructions are in each agent's `.m
|
|
|
54
54
|
| -------------------------- | ------------------------------------------------ | ----------------------- |
|
|
55
55
|
| `backend-specialist.md` | REST APIs, auth flows, server logic | React components |
|
|
56
56
|
| `python-pro.md` | FastAPI, Django, data scripts | Node/TypeScript code |
|
|
57
|
-
| `
|
|
57
|
+
| `csharp-developer` | .NET 8+, C#, Blazor, AOT | Python or Node backends |
|
|
58
58
|
| `frontend-specialist.md` | Web UI, CSS, components | Server code |
|
|
59
59
|
| `react-specialist.md` | Advanced React patterns, Next.js architecture | Vue or mobile |
|
|
60
60
|
| `vue-expert.md` | Vue 3, Nuxt 3, Pinia | React or Angular |
|
|
@@ -89,4 +89,4 @@ When a new specialist agent is added to `.agent/agents/`, update this registry:
|
|
|
89
89
|
|
|
90
90
|
1. Add a row to the **Primary Routing Table** for each `type` and keyword combination it handles
|
|
91
91
|
2. Add a row to the **Agent Capability Summary** with "Best For" and "Do NOT Use For" guidance
|
|
92
|
-
3. Run `
|
|
92
|
+
3. Run `node .agent/scripts/verify_all.js` to verify consistency
|
|
@@ -1991,7 +1991,159 @@
|
|
|
1991
1991
|
"token_estimate": 18,
|
|
1992
1992
|
"source": "manual",
|
|
1993
1993
|
"session_id": null
|
|
1994
|
+
},
|
|
1995
|
+
{
|
|
1996
|
+
"id": 132,
|
|
1997
|
+
"memory_type": "semantic",
|
|
1998
|
+
"content": "❌ Overriding project idioms without explicit justification -> ✅ Idioms represent team decisions; flag deviations with reasoning",
|
|
1999
|
+
"tags": [
|
|
2000
|
+
"project-idiom",
|
|
2001
|
+
"auto-learned"
|
|
2002
|
+
],
|
|
2003
|
+
"created_at": "1784396209Z",
|
|
2004
|
+
"last_accessed": "1784396209Z",
|
|
2005
|
+
"access_count": 0,
|
|
2006
|
+
"token_estimate": 32,
|
|
2007
|
+
"source": "manual",
|
|
2008
|
+
"session_id": null
|
|
2009
|
+
},
|
|
2010
|
+
{
|
|
2011
|
+
"id": 133,
|
|
2012
|
+
"memory_type": "semantic",
|
|
2013
|
+
"content": "❌ Applying idioms from one project to a different project -> ✅ Idioms are project-specific; verify they apply to the current codebase",
|
|
2014
|
+
"tags": [
|
|
2015
|
+
"project-idiom",
|
|
2016
|
+
"auto-learned"
|
|
2017
|
+
],
|
|
2018
|
+
"created_at": "1784396209Z",
|
|
2019
|
+
"last_accessed": "1784396209Z",
|
|
2020
|
+
"access_count": 0,
|
|
2021
|
+
"token_estimate": 34,
|
|
2022
|
+
"source": "manual",
|
|
2023
|
+
"session_id": null
|
|
2024
|
+
},
|
|
2025
|
+
{
|
|
2026
|
+
"id": 134,
|
|
2027
|
+
"memory_type": "semantic",
|
|
2028
|
+
"content": "❌ **Forbidden:** Declaring a task complete because the output \"looks correct.\"",
|
|
2029
|
+
"tags": [
|
|
2030
|
+
"project-idiom",
|
|
2031
|
+
"auto-learned"
|
|
2032
|
+
],
|
|
2033
|
+
"created_at": "1784396209Z",
|
|
2034
|
+
"last_accessed": "1784396209Z",
|
|
2035
|
+
"access_count": 0,
|
|
2036
|
+
"token_estimate": 20,
|
|
2037
|
+
"source": "manual",
|
|
2038
|
+
"session_id": null
|
|
2039
|
+
},
|
|
2040
|
+
{
|
|
2041
|
+
"id": 135,
|
|
2042
|
+
"memory_type": "semantic",
|
|
2043
|
+
"content": "✅ **Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.",
|
|
2044
|
+
"tags": [
|
|
2045
|
+
"project-idiom",
|
|
2046
|
+
"auto-learned"
|
|
2047
|
+
],
|
|
2048
|
+
"created_at": "1784396209Z",
|
|
2049
|
+
"last_accessed": "1784396209Z",
|
|
2050
|
+
"access_count": 0,
|
|
2051
|
+
"token_estimate": 54,
|
|
2052
|
+
"source": "manual",
|
|
2053
|
+
"session_id": null
|
|
2054
|
+
},
|
|
2055
|
+
{
|
|
2056
|
+
"id": 136,
|
|
2057
|
+
"memory_type": "semantic",
|
|
2058
|
+
"content": "[ ] Have I reviewed the user's specific constraints and requests?",
|
|
2059
|
+
"tags": [
|
|
2060
|
+
"project-idiom",
|
|
2061
|
+
"auto-learned"
|
|
2062
|
+
],
|
|
2063
|
+
"created_at": "1784396209Z",
|
|
2064
|
+
"last_accessed": "1784396209Z",
|
|
2065
|
+
"access_count": 0,
|
|
2066
|
+
"token_estimate": 17,
|
|
2067
|
+
"source": "manual",
|
|
2068
|
+
"session_id": null
|
|
2069
|
+
},
|
|
2070
|
+
{
|
|
2071
|
+
"id": 137,
|
|
2072
|
+
"memory_type": "semantic",
|
|
2073
|
+
"content": "[ ] Have I checked the environment for relevant existing implementations?",
|
|
2074
|
+
"tags": [
|
|
2075
|
+
"project-idiom",
|
|
2076
|
+
"auto-learned"
|
|
2077
|
+
],
|
|
2078
|
+
"created_at": "1784396209Z",
|
|
2079
|
+
"last_accessed": "1784396209Z",
|
|
2080
|
+
"access_count": 0,
|
|
2081
|
+
"token_estimate": 19,
|
|
2082
|
+
"source": "manual",
|
|
2083
|
+
"session_id": null
|
|
2084
|
+
},
|
|
2085
|
+
{
|
|
2086
|
+
"id": 138,
|
|
2087
|
+
"memory_type": "semantic",
|
|
2088
|
+
"content": "❌ **Forbidden:** Declaring a task complete because the output \"looks correct.\"",
|
|
2089
|
+
"tags": [
|
|
2090
|
+
"project-idiom",
|
|
2091
|
+
"auto-learned"
|
|
2092
|
+
],
|
|
2093
|
+
"created_at": "1784396209Z",
|
|
2094
|
+
"last_accessed": "1784396209Z",
|
|
2095
|
+
"access_count": 0,
|
|
2096
|
+
"token_estimate": 20,
|
|
2097
|
+
"source": "manual",
|
|
2098
|
+
"session_id": null
|
|
2099
|
+
},
|
|
2100
|
+
{
|
|
2101
|
+
"id": 139,
|
|
2102
|
+
"memory_type": "semantic",
|
|
2103
|
+
"content": "✅ **Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.",
|
|
2104
|
+
"tags": [
|
|
2105
|
+
"project-idiom",
|
|
2106
|
+
"auto-learned"
|
|
2107
|
+
],
|
|
2108
|
+
"created_at": "1784396209Z",
|
|
2109
|
+
"last_accessed": "1784396209Z",
|
|
2110
|
+
"access_count": 0,
|
|
2111
|
+
"token_estimate": 54,
|
|
2112
|
+
"source": "manual",
|
|
2113
|
+
"session_id": null
|
|
2114
|
+
},
|
|
2115
|
+
{
|
|
2116
|
+
"id": 140,
|
|
2117
|
+
"memory_type": "procedural",
|
|
2118
|
+
"content": "Run `echo 'No build step required for this project'` to build the project",
|
|
2119
|
+
"tags": [
|
|
2120
|
+
"build-script",
|
|
2121
|
+
"build",
|
|
2122
|
+
"auto-learned"
|
|
2123
|
+
],
|
|
2124
|
+
"created_at": "1784396209Z",
|
|
2125
|
+
"last_accessed": "1784396209Z",
|
|
2126
|
+
"access_count": 0,
|
|
2127
|
+
"token_estimate": 19,
|
|
2128
|
+
"source": "manual",
|
|
2129
|
+
"session_id": null
|
|
2130
|
+
},
|
|
2131
|
+
{
|
|
2132
|
+
"id": 141,
|
|
2133
|
+
"memory_type": "procedural",
|
|
2134
|
+
"content": "Run `npm run validate-payload && jest --coverage` to test the project",
|
|
2135
|
+
"tags": [
|
|
2136
|
+
"build-script",
|
|
2137
|
+
"test",
|
|
2138
|
+
"auto-learned"
|
|
2139
|
+
],
|
|
2140
|
+
"created_at": "1784396209Z",
|
|
2141
|
+
"last_accessed": "1784396209Z",
|
|
2142
|
+
"access_count": 0,
|
|
2143
|
+
"token_estimate": 18,
|
|
2144
|
+
"source": "manual",
|
|
2145
|
+
"session_id": null
|
|
1994
2146
|
}
|
|
1995
2147
|
],
|
|
1996
|
-
"next_id":
|
|
2148
|
+
"next_id": 142
|
|
1997
2149
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 🧠 Tribunal Memory Index
|
|
2
2
|
> Auto-generated by `tribunal-kit memory export`. Do not edit manually.
|
|
3
|
-
> Entries:
|
|
3
|
+
> Entries: 141 | Semantic: 113 | Procedural: 28 | Episodic: 0 | Working: 0
|
|
4
4
|
|
|
5
5
|
## SEMANTIC (Permanent Facts)
|
|
6
6
|
| ID | Content | Tags | Source | Created |
|
|
@@ -110,6 +110,14 @@
|
|
|
110
110
|
| 127 | [ ] Have I checked the environment for relevant existing implementations? | project-idiom, auto-learned | manual | 1784187808Z |
|
|
111
111
|
| 128 | ❌ **Forbidden:** Declaring a task complete because the output "looks correct." | project-idiom, auto-learned | manual | 1784187808Z |
|
|
112
112
|
| 129 | ✅ **Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended. | project-idiom, auto-learned | manual | 1784187808Z |
|
|
113
|
+
| 132 | ❌ Overriding project idioms without explicit justification -> ✅ Idioms represent team decisions; flag deviations with reasoning | project-idiom, auto-learned | manual | 1784396209Z |
|
|
114
|
+
| 133 | ❌ Applying idioms from one project to a different project -> ✅ Idioms are project-specific; verify they apply to the current codebase | project-idiom, auto-learned | manual | 1784396209Z |
|
|
115
|
+
| 134 | ❌ **Forbidden:** Declaring a task complete because the output "looks correct." | project-idiom, auto-learned | manual | 1784396209Z |
|
|
116
|
+
| 135 | ✅ **Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended. | project-idiom, auto-learned | manual | 1784396209Z |
|
|
117
|
+
| 136 | [ ] Have I reviewed the user's specific constraints and requests? | project-idiom, auto-learned | manual | 1784396209Z |
|
|
118
|
+
| 137 | [ ] Have I checked the environment for relevant existing implementations? | project-idiom, auto-learned | manual | 1784396209Z |
|
|
119
|
+
| 138 | ❌ **Forbidden:** Declaring a task complete because the output "looks correct." | project-idiom, auto-learned | manual | 1784396209Z |
|
|
120
|
+
| 139 | ✅ **Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended. | project-idiom, auto-learned | manual | 1784396209Z |
|
|
113
121
|
|
|
114
122
|
## PROCEDURAL (How-To Recipes)
|
|
115
123
|
| ID | Content | Tags | Source | Created |
|
|
@@ -140,4 +148,6 @@
|
|
|
140
148
|
| 121 | Run `npm run validate-payload && jest --coverage` to test the project | build-script, test, auto-learned | manual | 1783790009Z |
|
|
141
149
|
| 130 | Run `echo 'No build step required for this project'` to build the project | build-script, build, auto-learned | manual | 1784187808Z |
|
|
142
150
|
| 131 | Run `npm run validate-payload && jest --coverage` to test the project | build-script, test, auto-learned | manual | 1784187808Z |
|
|
151
|
+
| 140 | Run `echo 'No build step required for this project'` to build the project | build-script, build, auto-learned | manual | 1784396209Z |
|
|
152
|
+
| 141 | Run `npm run validate-payload && jest --coverage` to test the project | build-script, test, auto-learned | manual | 1784396209Z |
|
|
143
153
|
|
package/.agent/rules/GEMINI.md
CHANGED
|
@@ -78,7 +78,7 @@ Every code or design request activates an agent. This is not optional.
|
|
|
78
78
|
| ------------------------------------------------------- | --------------------------- |
|
|
79
79
|
| API / server / backend | `backend-specialist` |
|
|
80
80
|
| API contract design / REST / GraphQL | `api-architect` |
|
|
81
|
-
| C# / .NET / Blazor | `
|
|
81
|
+
| C# / .NET / Blazor | `csharp-developer` |
|
|
82
82
|
| Python / FastAPI / Django | `python-pro` |
|
|
83
83
|
| Database / schema / SQL | `database-architect` |
|
|
84
84
|
| Advanced SQL queries | `sql-pro` |
|
|
@@ -114,7 +114,7 @@ Every code or design request activates an agent. This is not optional.
|
|
|
114
114
|
| System design / scale / capacity planning | `system-architect` |
|
|
115
115
|
| Cloud infrastructure / AWS / Terraform / Docker / CI-CD | `cloud-engineer` |
|
|
116
116
|
|
|
117
|
-
> **Agent vs Skill:** Some entries above (e.g., `python-pro`, `vue-expert`, `
|
|
117
|
+
> **Agent vs Skill:** Some entries above (e.g., `python-pro`, `vue-expert`, `csharp-developer`, `sql-pro`, `react-specialist`, `platform-engineer`, `devops-incident-responder`) are **skills** loaded from `skills/SKILL.md`, not full agent definitions in `agents/`. The routing and announcement protocol still applies — load the skill's rules and announce it. If an `.md` file exists in `agents/`, it takes priority (P1) over the skill (P2).
|
|
118
118
|
|
|
119
119
|
**When activated, announce the agent:**
|
|
120
120
|
|
|
@@ -215,8 +215,8 @@ The Human Gate is never skipped. No code is written to a file without explicit u
|
|
|
215
215
|
|
|
216
216
|
**Reviewer assignment by domain:**
|
|
217
217
|
|
|
218
|
-
| Code type | Reviewers
|
|
219
|
-
| --------------------- |
|
|
218
|
+
| Code type | Reviewers |
|
|
219
|
+
| --------------------- | ----------------------------------------------------------------------------- |
|
|
220
220
|
| Backend/API | logic + security + dependency + type-safety + resilience + schema + complexity-reviewer |
|
|
221
221
|
| Frontend/React | logic + security + frontend + type-safety + ui-ux-auditor + review-animations + complexity-reviewer |
|
|
222
222
|
| Database/SQL | logic + security + sql + schema + complexity-reviewer |
|
|
@@ -281,17 +281,17 @@ These scripts live in `.agent/scripts/`. Agents and skills can invoke them:
|
|
|
281
281
|
|
|
282
282
|
| Script | Purpose | When |
|
|
283
283
|
| -------------------------- | ------------------------------------------------- | --------------------------------------------- |
|
|
284
|
-
| `checklist.
|
|
285
|
-
| `verify_all.
|
|
286
|
-
| `auto_preview.
|
|
284
|
+
| `checklist.js` | Priority audit: Security→Lint→Schema→Tests→UX→SEO | Before/after any major change |
|
|
285
|
+
| `verify_all.js` | Full pre-deploy validation suite | Pre-deploy |
|
|
286
|
+
| `auto_preview.js` | Start/stop/restart local dev server | After /create or /enhance |
|
|
287
287
|
| `session_manager.js` | Track session state between conversations | Multi-session work |
|
|
288
|
-
| `lint_runner.
|
|
289
|
-
| `test_runner.
|
|
290
|
-
| `security_scan.
|
|
291
|
-
| `dependency_analyzer.
|
|
292
|
-
| `schema_validator.
|
|
293
|
-
| `bundle_analyzer.
|
|
294
|
-
| `skill_integrator.
|
|
288
|
+
| `lint_runner.js` | Standalone lint runner (ESLint, Prettier, Ruff) | Every code change |
|
|
289
|
+
| `test_runner.js` | Standalone test runner (Jest, Vitest, pytest, Go) | After logic changes |
|
|
290
|
+
| `security_scan.js` | Deep OWASP-aware source code security scan | Always on deploy, /audit |
|
|
291
|
+
| `dependency_analyzer.js` | Unused/phantom deps, npm audit | Weekly, /audit |
|
|
292
|
+
| `schema_validator.js` | Database schema validation (Prisma, SQL) | After DB changes |
|
|
293
|
+
| `bundle_analyzer.js` | JS/TS bundle size analysis | Before deploy |
|
|
294
|
+
| `skill_integrator.js` | Maps active skills to their executable scripts | Automatically when skills are invoked |
|
|
295
295
|
| `swarm_dispatcher.js` | Validate Orchestrator micro-worker JSON payloads | After /orchestrate, before dispatching agents |
|
|
296
296
|
| `test_swarm_dispatcher.js` | Unit tests for swarm_dispatcher | After modifying swarm_dispatcher.js |
|
|
297
297
|
|
|
@@ -301,12 +301,12 @@ These scripts live in `.agent/scripts/`. Agents and skills can invoke them:
|
|
|
301
301
|
node .agent/scripts/checklist.js .
|
|
302
302
|
node .agent/scripts/verify_all.js
|
|
303
303
|
node .agent/scripts/security_scan.js .
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
304
|
+
node .agent/scripts/lint_runner.js . --fix
|
|
305
|
+
node .agent/scripts/test_runner.js . --coverage
|
|
306
|
+
node .agent/scripts/dependency_analyzer.js . --audit
|
|
307
|
+
node .agent/scripts/schema_validator.js .
|
|
308
|
+
node .agent/scripts/bundle_analyzer.js . --build
|
|
309
|
+
node .agent/scripts/skill_integrator.js
|
|
310
310
|
node .agent/scripts/swarm_dispatcher.js --file payload.json
|
|
311
311
|
npx jest test/integration/swarm_dispatcher.test.js
|
|
312
312
|
```
|
|
@@ -409,18 +409,21 @@ Before modifying any file:
|
|
|
409
409
|
## Fabel-5 Cognitive Boundaries (Wellbeing, Evenhandedness, Memory)
|
|
410
410
|
|
|
411
411
|
### User Wellbeing & Safety
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
412
|
+
|
|
413
|
+
- **No Psychoanalysis / Diagnosis**: Reflect what is said without diagnosing or assigning psychological narratives (e.g. "you restrict because of trauma"). Suggest professional help without clinical labels.
|
|
414
|
+
- **Self-Harm Interruptions**: Never suggest physical substitutes (holding ice, snapping rubber bands, drawing lines) or mimic self-harm. They reinforce the self-harm loop.
|
|
415
|
+
- **No Over-reliance**: Do not thank the user for reaching out, encourage them to stay, or reiterate willingness to continue. Avoid conversational dependencies.
|
|
416
|
+
- **Positive Paths**: Acknowledge distress without reflective listening that amplifies negative spirals. Keep paths to external help open.
|
|
416
417
|
|
|
417
418
|
### Moral & Political Evenhandedness
|
|
418
|
-
|
|
419
|
-
|
|
419
|
+
|
|
420
|
+
- **Nuance Over Brevity**: Reject requests for simple yes/no or one-word answers on contested political, ethical, or policy issues. Give a fair, balanced overview of existing positions.
|
|
421
|
+
- **Opposing Perspectives**: Conclude arguments for positions by presenting opposing viewpoints or empirical disputes even if the user/AI agrees with the primary view.
|
|
420
422
|
|
|
421
423
|
### Memory & Preference Boundaries
|
|
422
|
-
|
|
423
|
-
|
|
424
|
+
|
|
425
|
+
- **Invisible Integration**: Integrate remembered user context silently without attribution or observation verbs ("I notice in your profile...", "Based on your memory...").
|
|
426
|
+
- **Expertise Tuning**: Match language and technical depth to the user's stated background without lecturing.
|
|
424
427
|
|
|
425
428
|
---
|
|
426
429
|
|
|
@@ -185,8 +185,8 @@ repos:
|
|
|
185
185
|
|
|
186
186
|
| Script | Purpose | Run With |
|
|
187
187
|
| -------------------------- | ----------------------------------------- | ------------------------------------------------ |
|
|
188
|
-
|
|
|
189
|
-
| `scripts/type_coverage.py`
|
|
188
|
+
| `.agent/scripts/lint_runner.js` | Runs project linting and reports findings | `node .agent/scripts/lint_runner.js <project_path>` |
|
|
189
|
+
| `scripts/type_coverage.py` | Measures TypeScript type coverage | `python scripts/type_coverage.py <project_path>` |
|
|
190
190
|
|
|
191
191
|
---
|
|
192
192
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
name: project-idioms
|
|
3
3
|
description: >
|
|
4
4
|
Auto-evolved skill containing project-specific architectural idioms extracted
|
|
5
|
-
from the developer's own code decisions. Generated by skill_evolution.
|
|
5
|
+
from the developer's own code decisions. Generated by skill_evolution.js.
|
|
6
6
|
Commit this file to share your Engineering Culture across the team.
|
|
7
7
|
Every agent MUST respect these idioms above generic defaults.
|
|
8
8
|
version: auto
|
|
@@ -33,7 +33,7 @@ routing:
|
|
|
33
33
|
## How Idioms Are Born
|
|
34
34
|
|
|
35
35
|
1. Developer commits code that **differs** from what the AI proposed.
|
|
36
|
-
2. `skill_evolution.
|
|
36
|
+
2. `skill_evolution.js digest` extracts the architectural delta (semantic filter).
|
|
37
37
|
3. A minimal LLM prompt (< 500 tokens) identifies the **WHY** behind the change.
|
|
38
38
|
4. The idiom is recorded here with a stable pattern + reason pair.
|
|
39
39
|
5. All future code generations must align with these idioms.
|
|
@@ -54,16 +54,16 @@ Run after committing or staging a meaningful architectural change:
|
|
|
54
54
|
|
|
55
55
|
```bash
|
|
56
56
|
# Analyze staged changes (default)
|
|
57
|
-
|
|
57
|
+
node .agent/scripts/skill_evolution.js digest
|
|
58
58
|
|
|
59
59
|
# Preview without writing
|
|
60
|
-
|
|
60
|
+
node .agent/scripts/skill_evolution.js digest --dry-run
|
|
61
61
|
|
|
62
62
|
# Analyze last commit instead of staged
|
|
63
|
-
|
|
63
|
+
node .agent/scripts/skill_evolution.js digest --head
|
|
64
64
|
|
|
65
65
|
# Check current idiom count and token savings
|
|
66
|
-
|
|
66
|
+
node .agent/scripts/skill_evolution.js status
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
---
|
|
@@ -87,7 +87,7 @@ python .agent/scripts/skill_evolution.py status
|
|
|
87
87
|
Last digest: `never`
|
|
88
88
|
Total cycles: `0`
|
|
89
89
|
|
|
90
|
-
Run `
|
|
90
|
+
Run `node .agent/scripts/skill_evolution.js status` to see full statistics.
|
|
91
91
|
|
|
92
92
|
---
|
|
93
93
|
|
|
@@ -21,7 +21,7 @@ You are a specialist in analyzing test output — not writing tests, but _unders
|
|
|
21
21
|
- After a test run with multiple failures.
|
|
22
22
|
- When the user says "tests are failing", "analyze test results", "what broke?", or "test failed".
|
|
23
23
|
- During CI/CD pipeline debugging.
|
|
24
|
-
- When `test_runner.
|
|
24
|
+
- When `test_runner.js` or any test command exits with failures.
|
|
25
25
|
- When paired with `systematic-debugging` for deep root-cause investigation.
|
|
26
26
|
|
|
27
27
|
## Analysis Pipeline
|
package/.agent/workflows/fix.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Auto-fix known issues with lint, formatting, imports, and TypeScript errors. Runs lint_runner.
|
|
2
|
+
description: Auto-fix known issues with lint, formatting, imports, and TypeScript errors. Runs lint_runner.js and auto-fixers. Human approval required before applying any changes. Shows a diff of what will change before writing to disk.
|
|
3
3
|
required-skills: lint-and-validate, clean-code
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -55,7 +55,7 @@ Read BEFORE fixing:
|
|
|
55
55
|
|
|
56
56
|
```bash
|
|
57
57
|
# 1. Run lint with auto-fix
|
|
58
|
-
|
|
58
|
+
node .agent/scripts/lint_runner.js . --fix
|
|
59
59
|
|
|
60
60
|
# 2. Fix remaining TypeScript errors (auto-detectable only)
|
|
61
61
|
npx tsc --noEmit 2>&1 | grep "error TS"
|
|
@@ -128,7 +128,7 @@ complexity-reviewer→ Enforces the Dependency Ladder to prevent over-engineerin
|
|
|
128
128
|
| `aria`, `wcag`, `a11y`, `accessibility` | `accessibility-reviewer` + `ui-ux-auditor` |
|
|
129
129
|
| `import`, `package`, `npm`, `require` | `dependency-reviewer` |
|
|
130
130
|
|
|
131
|
-
> For maximum safety on critical code: use `/tribunal-full` for all
|
|
131
|
+
> For maximum safety on critical code: use `/tribunal-full` for all 20 reviewers simultaneously.
|
|
132
132
|
|
|
133
133
|
---
|
|
134
134
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Preview server start, stop, and status check. Local development server management. Uses auto_preview.
|
|
2
|
+
description: Preview server start, stop, and status check. Local development server management. Uses auto_preview.js for automated lifecycle control. Shows current URL and hot-reload status.
|
|
3
3
|
required-skills: bash-linux, frontend-specialist
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -34,16 +34,16 @@ Read BEFORE managing preview:
|
|
|
34
34
|
|
|
35
35
|
```bash
|
|
36
36
|
# Start
|
|
37
|
-
|
|
37
|
+
node .agent/scripts/auto_preview.js start
|
|
38
38
|
|
|
39
39
|
# Stop
|
|
40
|
-
|
|
40
|
+
node .agent/scripts/auto_preview.js stop
|
|
41
41
|
|
|
42
42
|
# Restart
|
|
43
|
-
|
|
43
|
+
node .agent/scripts/auto_preview.js restart
|
|
44
44
|
|
|
45
45
|
# Status
|
|
46
|
-
|
|
46
|
+
node .agent/scripts/auto_preview.js status
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
---
|
|
@@ -44,7 +44,7 @@ git log --oneline -5
|
|
|
44
44
|
find src/ -name "*.ts" -o -name "*.tsx" -newer package.json 2>/dev/null | head -10
|
|
45
45
|
|
|
46
46
|
# 4. Server status (non-blocking)
|
|
47
|
-
|
|
47
|
+
node .agent/scripts/auto_preview.js status 2>/dev/null
|
|
48
48
|
|
|
49
49
|
# 5. Quick type check
|
|
50
50
|
npx tsc --noEmit 2>&1 | tail -5
|
|
@@ -68,7 +68,7 @@ Tier 4: Performance Swarm (token-scoped specialists)
|
|
|
68
68
|
|
|
69
69
|
## Active Reviewers by Code Type
|
|
70
70
|
|
|
71
|
-
Not all
|
|
71
|
+
Not all 20 reviewers produce meaningful findings on all code types. Active reviewers detect their first finding immediately — inactive reviewers auto-pass with "N/A for this code type."
|
|
72
72
|
|
|
73
73
|
| Code Under Review | Critical Reviewers |
|
|
74
74
|
| :------------------ | :---------------------------------------------------------------- |
|
|
@@ -86,7 +86,7 @@ Not all 19 reviewers produce meaningful findings on all code types. Active revie
|
|
|
86
86
|
## Verdict Aggregation
|
|
87
87
|
|
|
88
88
|
```
|
|
89
|
-
All
|
|
89
|
+
All 20 verdicts are collected. Aggregated result:
|
|
90
90
|
|
|
91
91
|
If ANY reviewer = ❌ REJECTED → Global verdict: ❌ REJECTED (must fix before Human Gate)
|
|
92
92
|
If any reviewer = ⚠️ WARNING → Global verdict: ⚠️ WARNINGS (proceed with attention)
|
|
@@ -124,7 +124,7 @@ After 3 failed attempts:
|
|
|
124
124
|
|
|
125
125
|
| Outcome | Next Command |
|
|
126
126
|
| :------------------------- | :--------------------------------------------- |
|
|
127
|
-
| All
|
|
127
|
+
| All 20 reviewers approve | → `/deploy` — highest confidence state |
|
|
128
128
|
| Reject with multiple fixes | → `/fix` for simple issues, `/debug` for logic |
|
|
129
129
|
| Performance rejection | → `/tribunal-speed` for granular profiling |
|
|
130
130
|
| Security rejection | → Immediate `/tribunal-backend` to resolve |
|
|
@@ -181,7 +181,7 @@ If a specialist fails after 3 retries:
|
|
|
181
181
|
| :------------------------- | :------------------------------- | :--------------------- | :--------------------------------------- |
|
|
182
182
|
| `/tribunal-performance` | logic + performance-reviewer | Generic CWV check | Quick single-file perf scan |
|
|
183
183
|
| `/tribunal-speed` | vitals + db-latency + throughput | Deep 3-domain parallel | Full-stack perf audit |
|
|
184
|
-
| `/tribunal-full` | All
|
|
184
|
+
| `/tribunal-full` | All 20 agents | Everything | Maximum coverage (security + perf + all) |
|
|
185
185
|
| `/performance-benchmarker` | Lighthouse + bundle | Measurement only | Get actual scores, not code review |
|
|
186
186
|
|
|
187
187
|
---
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tribunal-kit",
|
|
3
|
-
"version": "5.8.
|
|
3
|
+
"version": "5.8.3",
|
|
4
4
|
"description": "The operating system for AI software engineering — governance, memory, review pipelines, and reusable skills for every coding agent. 43 specialist agents, 34 workflows, 20 parallel Tribunal code reviewers, MCP server, Rust core engine, and long-running autonomous agent harness for Cursor, VSCode, Windsurf, Claude Code, and Aider.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -99,12 +99,12 @@
|
|
|
99
99
|
"typescript": "^5.4.5"
|
|
100
100
|
},
|
|
101
101
|
"optionalDependencies": {
|
|
102
|
-
"@tribunal-kit/core-darwin-arm64": "^5.8.
|
|
103
|
-
"@tribunal-kit/core-darwin-x64": "^5.8.
|
|
104
|
-
"@tribunal-kit/core-linux-arm64": "^5.8.
|
|
105
|
-
"@tribunal-kit/core-linux-x64": "^5.8.
|
|
106
|
-
"@tribunal-kit/core-win32-arm64": "^5.8.
|
|
107
|
-
"@tribunal-kit/core-win32-x64": "^5.8.
|
|
102
|
+
"@tribunal-kit/core-darwin-arm64": "^5.8.3",
|
|
103
|
+
"@tribunal-kit/core-darwin-x64": "^5.8.3",
|
|
104
|
+
"@tribunal-kit/core-linux-arm64": "^5.8.3",
|
|
105
|
+
"@tribunal-kit/core-linux-x64": "^5.8.3",
|
|
106
|
+
"@tribunal-kit/core-win32-arm64": "^5.8.3",
|
|
107
|
+
"@tribunal-kit/core-win32-x64": "^5.8.3"
|
|
108
108
|
},
|
|
109
109
|
"jest": {
|
|
110
110
|
"testMatch": [
|