@xhulz/nina 0.53.3 → 0.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +1 -1
- package/releases/0.54.0/core/GAPS.md +125 -0
- package/releases/0.54.0/core/answered.json +68 -0
- package/releases/0.54.0/core/defaults/tree/.claude/agents/architect.md +1 -0
- package/releases/0.54.0/core/defaults/tree/.claude/agents/dba.md +3 -0
- package/releases/0.54.0/core/defaults/tree/.claude/agents/devops.md +1 -0
- package/releases/0.54.0/core/defaults/tree/.claude/agents/implementer.md +1 -0
- package/releases/0.54.0/core/defaults/tree/.claude/agents/integration-tester.md +3 -0
- package/releases/0.54.0/core/defaults/tree/.claude/agents/qa.md +7 -0
- package/releases/0.54.0/core/defaults/tree/.claude/agents/reviewer.md +3 -0
- package/releases/0.54.0/core/defaults/tree/.claude/agents/secops.md +3 -0
- package/releases/0.54.0/core/defaults/tree/.claude/agents/solidity-auditor.md +3 -0
- package/releases/0.54.0/core/defaults/tree/.claude/agents/solidity-dev.md +3 -0
- package/releases/0.54.0/core/tree/.claude/agents/architect.md +129 -0
- package/releases/0.54.0/core/tree/.claude/agents/dba.md +117 -0
- package/releases/0.54.0/core/tree/.claude/agents/devops.md +118 -0
- package/releases/0.54.0/core/tree/.claude/agents/implementer.md +163 -0
- package/releases/0.54.0/core/tree/.claude/agents/integration-tester.md +168 -0
- package/releases/0.54.0/core/tree/.claude/agents/planner.md +132 -0
- package/releases/0.54.0/core/tree/.claude/agents/qa.md +150 -0
- package/releases/0.54.0/core/tree/.claude/agents/reviewer.md +184 -0
- package/releases/0.54.0/core/tree/.claude/agents/secops.md +120 -0
- package/releases/0.54.0/core/tree/.claude/agents/solidity-auditor.md +126 -0
- package/releases/0.54.0/core/tree/.claude/agents/solidity-dev.md +123 -0
- package/releases/0.54.0/core/tree/.claude/agents-overview.md +64 -0
- package/releases/0.54.0/core/tree/.claude/frontend.md +10 -0
- package/releases/0.54.0/core/tree/.claude/graph.md +75 -0
- package/releases/0.54.0/core/tree/.claude/patterns.md +251 -0
- package/releases/0.54.0/core/tree/.claude/pills/README.md +150 -0
- package/releases/0.54.0/core/tree/.claude/pipeline.md +101 -0
- package/releases/0.54.0/core/tree/.claude/retrieval.md +103 -0
- package/releases/0.54.0/core/tree/.claude/router.md +202 -0
- package/releases/0.54.0/core/tree/.claude/templates/integration.md +48 -0
- package/releases/0.54.0/core/tree/CLAUDE.md +164 -0
- package/releases/0.54.0/core/tree/scripts/cost-watch.mjs +25 -0
- package/releases/0.54.0/core/tree/scripts/edit-guard.mjs +24 -0
- package/releases/0.54.0/core/tree/scripts/harness-check.mjs +71 -0
- package/releases/0.54.0/core/tree/scripts/loop-gate.mjs +19 -0
- package/releases/0.54.0/core/vocabulary.json +13 -0
- package/releases/0.54.0/surfaces/blockchain/tree/.claude/agents/architect.md +5 -0
- package/releases/0.54.0/surfaces/blockchain/tree/.claude/agents/devops.md +5 -0
- package/releases/0.54.0/surfaces/blockchain/tree/.claude/agents/reviewer.md +5 -0
- package/releases/0.54.0/surfaces/blockchain/tree/.claude/agents/solidity-auditor.md +18 -0
- package/releases/0.54.0/surfaces/blockchain/tree/.claude/agents/solidity-dev.md +16 -0
- package/releases/0.54.0/surfaces/blockchain/tree/.claude/agents-overview.md +6 -0
- package/releases/0.54.0/surfaces/blockchain/tree/.claude/graph.md +11 -0
- package/releases/0.54.0/surfaces/blockchain/tree/.claude/router.md +6 -0
- package/releases/0.54.0/surfaces/blockchain/tree/CLAUDE.md +12 -0
- package/releases/0.54.0/surfaces/d1/tree/.claude/agents/dba.md +15 -0
- package/releases/0.54.0/surfaces/d1/tree/.claude/agents/devops.md +2 -0
- package/releases/0.54.0/surfaces/d1/tree/.claude/agents/implementer.md +2 -0
- package/releases/0.54.0/surfaces/d1/tree/.claude/patterns.md +8 -0
- package/releases/0.54.0/surfaces/d1/tree/CLAUDE.md +2 -0
- package/releases/0.54.0/surfaces/db/tree/.claude/agents/architect.md +5 -0
- package/releases/0.54.0/surfaces/db/tree/.claude/agents/dba.md +54 -0
- package/releases/0.54.0/surfaces/db/tree/.claude/agents/devops.md +5 -0
- package/releases/0.54.0/surfaces/db/tree/.claude/agents/implementer.md +2 -0
- package/releases/0.54.0/surfaces/db/tree/.claude/agents/integration-tester.md +10 -0
- package/releases/0.54.0/surfaces/db/tree/.claude/agents/planner.md +2 -0
- package/releases/0.54.0/surfaces/db/tree/.claude/agents/reviewer.md +22 -0
- package/releases/0.54.0/surfaces/db/tree/.claude/agents/secops.md +2 -0
- package/releases/0.54.0/surfaces/db/tree/.claude/agents-overview.md +5 -0
- package/releases/0.54.0/surfaces/db/tree/.claude/graph.md +8 -0
- package/releases/0.54.0/surfaces/db/tree/.claude/patterns.md +22 -0
- package/releases/0.54.0/surfaces/db/tree/.claude/pipeline.md +13 -0
- package/releases/0.54.0/surfaces/db/tree/.claude/retrieval.md +5 -0
- package/releases/0.54.0/surfaces/db/tree/.claude/router.md +4 -0
- package/releases/0.54.0/surfaces/db/tree/CLAUDE.md +17 -0
- package/releases/0.54.0/surfaces/drizzle/tree/.claude/agents/dba.md +9 -0
- package/releases/0.54.0/surfaces/drizzle/tree/.claude/agents/devops.md +5 -0
- package/releases/0.54.0/surfaces/drizzle/tree/.claude/agents/implementer.md +2 -0
- package/releases/0.54.0/surfaces/drizzle/tree/.claude/patterns.md +7 -0
- package/releases/0.54.0/surfaces/edge-cf/tree/.claude/agents/architect.md +14 -0
- package/releases/0.54.0/surfaces/edge-cf/tree/.claude/agents/dba.md +2 -0
- package/releases/0.54.0/surfaces/edge-cf/tree/.claude/agents/devops.md +29 -0
- package/releases/0.54.0/surfaces/edge-cf/tree/.claude/agents/implementer.md +14 -0
- package/releases/0.54.0/surfaces/edge-cf/tree/.claude/agents/integration-tester.md +11 -0
- package/releases/0.54.0/surfaces/edge-cf/tree/.claude/agents/qa.md +3 -0
- package/releases/0.54.0/surfaces/edge-cf/tree/.claude/agents/reviewer.md +8 -0
- package/releases/0.54.0/surfaces/edge-cf/tree/.claude/agents/secops.md +8 -0
- package/releases/0.54.0/surfaces/edge-cf/tree/.claude/patterns.md +17 -0
- package/releases/0.54.0/surfaces/edge-cf/tree/.claude/retrieval.md +8 -0
- package/releases/0.54.0/surfaces/edge-cf/tree/CLAUDE.md +27 -0
- package/releases/0.54.0/surfaces/frontend/tree/.claude/agents/architect.md +20 -0
- package/releases/0.54.0/surfaces/frontend/tree/.claude/agents/devops.md +28 -0
- package/releases/0.54.0/surfaces/frontend/tree/.claude/agents/implementer.md +25 -0
- package/releases/0.54.0/surfaces/frontend/tree/.claude/agents/qa.md +17 -0
- package/releases/0.54.0/surfaces/frontend/tree/.claude/agents/reviewer.md +56 -0
- package/releases/0.54.0/surfaces/frontend/tree/.claude/patterns.md +8 -0
- package/releases/0.54.0/surfaces/frontend/tree/.claude/retrieval.md +2 -0
- package/releases/0.54.0/surfaces/frontend/tree/.claude/router.md +14 -0
- package/releases/0.54.0/surfaces/frontend/tree/CLAUDE.md +5 -0
- package/releases/0.54.0/surfaces/integrations/tree/.claude/agents/architect.md +16 -0
- package/releases/0.54.0/surfaces/integrations/tree/.claude/agents/implementer.md +12 -0
- package/releases/0.54.0/surfaces/integrations/tree/.claude/agents/integration-tester.md +20 -0
- package/releases/0.54.0/surfaces/integrations/tree/.claude/agents/planner.md +2 -0
- package/releases/0.54.0/surfaces/integrations/tree/.claude/agents/reviewer.md +21 -0
- package/releases/0.54.0/surfaces/integrations/tree/.claude/agents/secops.md +2 -0
- package/releases/0.54.0/surfaces/integrations/tree/.claude/agents-overview.md +8 -0
- package/releases/0.54.0/surfaces/integrations/tree/.claude/graph.md +10 -0
- package/releases/0.54.0/surfaces/integrations/tree/.claude/patterns.md +38 -0
- package/releases/0.54.0/surfaces/integrations/tree/.claude/pipeline.md +16 -0
- package/releases/0.54.0/surfaces/integrations/tree/.claude/retrieval.md +16 -0
- package/releases/0.54.0/surfaces/integrations/tree/.claude/router.md +6 -0
- package/releases/0.54.0/surfaces/integrations/tree/CLAUDE.md +17 -0
- package/releases/0.54.0/surfaces/money/tree/.claude/agents/architect.md +12 -0
- package/releases/0.54.0/surfaces/money/tree/.claude/agents/dba.md +14 -0
- package/releases/0.54.0/surfaces/money/tree/.claude/agents/implementer.md +11 -0
- package/releases/0.54.0/surfaces/money/tree/.claude/agents/integration-tester.md +3 -0
- package/releases/0.54.0/surfaces/money/tree/.claude/agents/reviewer.md +23 -0
- package/releases/0.54.0/surfaces/money/tree/.claude/agents/secops.md +5 -0
- package/releases/0.54.0/surfaces/money/tree/.claude/agents/solidity-auditor.md +4 -0
- package/releases/0.54.0/surfaces/money/tree/.claude/agents/solidity-dev.md +4 -0
- package/releases/0.54.0/surfaces/money/tree/.claude/graph.md +2 -0
- package/releases/0.54.0/surfaces/money/tree/.claude/patterns.md +49 -0
- package/releases/0.54.0/surfaces/money/tree/.claude/pipeline.md +2 -0
- package/releases/0.54.0/surfaces/money/tree/.claude/retrieval.md +2 -0
- package/releases/0.54.0/surfaces/money/tree/CLAUDE.md +11 -0
- package/releases/0.54.0/surfaces/pii/tree/.claude/agents/dba.md +2 -0
- package/releases/0.54.0/surfaces/pii/tree/.claude/agents/devops.md +8 -0
- package/releases/0.54.0/surfaces/pii/tree/.claude/agents/reviewer.md +8 -0
- package/releases/0.54.0/surfaces/pii/tree/.claude/agents/secops.md +2 -0
- package/releases/0.54.0/surfaces/pii/tree/.claude/agents/solidity-auditor.md +5 -0
- package/releases/0.54.0/surfaces/pii/tree/CLAUDE.md +5 -0
- package/releases/0.54.0/surfaces/prisma/tree/.claude/agents/architect.md +2 -0
- package/releases/0.54.0/surfaces/prisma/tree/.claude/agents/dba.md +42 -0
- package/releases/0.54.0/surfaces/prisma/tree/.claude/agents/devops.md +11 -0
- package/releases/0.54.0/surfaces/prisma/tree/.claude/agents/implementer.md +2 -0
- package/releases/0.54.0/surfaces/prisma/tree/.claude/agents/integration-tester.md +2 -0
- package/releases/0.54.0/surfaces/prisma/tree/.claude/agents/reviewer.md +2 -0
- package/releases/0.54.0/surfaces/prisma/tree/.claude/patterns.md +15 -0
- package/releases/0.54.0/surfaces/prisma/tree/CLAUDE.md +5 -0
- package/releases/0.55.0/core/GAPS.md +125 -0
- package/releases/0.55.0/core/answered.json +68 -0
- package/releases/0.55.0/core/defaults/tree/.claude/agents/architect.md +1 -0
- package/releases/0.55.0/core/defaults/tree/.claude/agents/dba.md +3 -0
- package/releases/0.55.0/core/defaults/tree/.claude/agents/devops.md +1 -0
- package/releases/0.55.0/core/defaults/tree/.claude/agents/implementer.md +1 -0
- package/releases/0.55.0/core/defaults/tree/.claude/agents/integration-tester.md +3 -0
- package/releases/0.55.0/core/defaults/tree/.claude/agents/qa.md +7 -0
- package/releases/0.55.0/core/defaults/tree/.claude/agents/reviewer.md +3 -0
- package/releases/0.55.0/core/defaults/tree/.claude/agents/secops.md +3 -0
- package/releases/0.55.0/core/defaults/tree/.claude/agents/solidity-auditor.md +3 -0
- package/releases/0.55.0/core/defaults/tree/.claude/agents/solidity-dev.md +3 -0
- package/releases/0.55.0/core/tree/.claude/agents/architect.md +130 -0
- package/releases/0.55.0/core/tree/.claude/agents/dba.md +119 -0
- package/releases/0.55.0/core/tree/.claude/agents/design-reviewer.md +75 -0
- package/releases/0.55.0/core/tree/.claude/agents/devops.md +118 -0
- package/releases/0.55.0/core/tree/.claude/agents/implementer.md +163 -0
- package/releases/0.55.0/core/tree/.claude/agents/integration-tester.md +170 -0
- package/releases/0.55.0/core/tree/.claude/agents/planner.md +132 -0
- package/releases/0.55.0/core/tree/.claude/agents/qa.md +150 -0
- package/releases/0.55.0/core/tree/.claude/agents/reviewer.md +187 -0
- package/releases/0.55.0/core/tree/.claude/agents/secops.md +120 -0
- package/releases/0.55.0/core/tree/.claude/agents/solidity-auditor.md +126 -0
- package/releases/0.55.0/core/tree/.claude/agents/solidity-dev.md +123 -0
- package/releases/0.55.0/core/tree/.claude/agents-overview.md +65 -0
- package/releases/0.55.0/core/tree/.claude/frontend.md +10 -0
- package/releases/0.55.0/core/tree/.claude/graph.md +79 -0
- package/releases/0.55.0/core/tree/.claude/patterns.md +251 -0
- package/releases/0.55.0/core/tree/.claude/pills/README.md +150 -0
- package/releases/0.55.0/core/tree/.claude/pipeline.md +101 -0
- package/releases/0.55.0/core/tree/.claude/retrieval.md +103 -0
- package/releases/0.55.0/core/tree/.claude/router.md +205 -0
- package/releases/0.55.0/core/tree/.claude/templates/integration.md +48 -0
- package/releases/0.55.0/core/tree/CLAUDE.md +166 -0
- package/releases/0.55.0/core/tree/scripts/cost-watch.mjs +25 -0
- package/releases/0.55.0/core/tree/scripts/edit-guard.mjs +24 -0
- package/releases/0.55.0/core/tree/scripts/harness-check.mjs +71 -0
- package/releases/0.55.0/core/tree/scripts/loop-gate.mjs +19 -0
- package/releases/0.55.0/core/vocabulary.json +14 -0
- package/releases/0.55.0/surfaces/blockchain/tree/.claude/agents/architect.md +5 -0
- package/releases/0.55.0/surfaces/blockchain/tree/.claude/agents/devops.md +5 -0
- package/releases/0.55.0/surfaces/blockchain/tree/.claude/agents/reviewer.md +5 -0
- package/releases/0.55.0/surfaces/blockchain/tree/.claude/agents/solidity-auditor.md +18 -0
- package/releases/0.55.0/surfaces/blockchain/tree/.claude/agents/solidity-dev.md +16 -0
- package/releases/0.55.0/surfaces/blockchain/tree/.claude/agents-overview.md +6 -0
- package/releases/0.55.0/surfaces/blockchain/tree/.claude/graph.md +11 -0
- package/releases/0.55.0/surfaces/blockchain/tree/.claude/router.md +6 -0
- package/releases/0.55.0/surfaces/blockchain/tree/CLAUDE.md +12 -0
- package/releases/0.55.0/surfaces/d1/tree/.claude/agents/dba.md +15 -0
- package/releases/0.55.0/surfaces/d1/tree/.claude/agents/devops.md +2 -0
- package/releases/0.55.0/surfaces/d1/tree/.claude/agents/implementer.md +2 -0
- package/releases/0.55.0/surfaces/d1/tree/.claude/patterns.md +8 -0
- package/releases/0.55.0/surfaces/d1/tree/CLAUDE.md +2 -0
- package/releases/0.55.0/surfaces/db/tree/.claude/agents/architect.md +5 -0
- package/releases/0.55.0/surfaces/db/tree/.claude/agents/dba.md +54 -0
- package/releases/0.55.0/surfaces/db/tree/.claude/agents/devops.md +5 -0
- package/releases/0.55.0/surfaces/db/tree/.claude/agents/implementer.md +2 -0
- package/releases/0.55.0/surfaces/db/tree/.claude/agents/integration-tester.md +10 -0
- package/releases/0.55.0/surfaces/db/tree/.claude/agents/planner.md +2 -0
- package/releases/0.55.0/surfaces/db/tree/.claude/agents/reviewer.md +22 -0
- package/releases/0.55.0/surfaces/db/tree/.claude/agents/secops.md +2 -0
- package/releases/0.55.0/surfaces/db/tree/.claude/agents-overview.md +5 -0
- package/releases/0.55.0/surfaces/db/tree/.claude/graph.md +8 -0
- package/releases/0.55.0/surfaces/db/tree/.claude/patterns.md +22 -0
- package/releases/0.55.0/surfaces/db/tree/.claude/pipeline.md +13 -0
- package/releases/0.55.0/surfaces/db/tree/.claude/retrieval.md +5 -0
- package/releases/0.55.0/surfaces/db/tree/.claude/router.md +4 -0
- package/releases/0.55.0/surfaces/db/tree/CLAUDE.md +17 -0
- package/releases/0.55.0/surfaces/drizzle/tree/.claude/agents/dba.md +9 -0
- package/releases/0.55.0/surfaces/drizzle/tree/.claude/agents/devops.md +5 -0
- package/releases/0.55.0/surfaces/drizzle/tree/.claude/agents/implementer.md +2 -0
- package/releases/0.55.0/surfaces/drizzle/tree/.claude/patterns.md +7 -0
- package/releases/0.55.0/surfaces/edge-cf/tree/.claude/agents/architect.md +14 -0
- package/releases/0.55.0/surfaces/edge-cf/tree/.claude/agents/dba.md +2 -0
- package/releases/0.55.0/surfaces/edge-cf/tree/.claude/agents/devops.md +29 -0
- package/releases/0.55.0/surfaces/edge-cf/tree/.claude/agents/implementer.md +14 -0
- package/releases/0.55.0/surfaces/edge-cf/tree/.claude/agents/integration-tester.md +11 -0
- package/releases/0.55.0/surfaces/edge-cf/tree/.claude/agents/qa.md +3 -0
- package/releases/0.55.0/surfaces/edge-cf/tree/.claude/agents/reviewer.md +8 -0
- package/releases/0.55.0/surfaces/edge-cf/tree/.claude/agents/secops.md +8 -0
- package/releases/0.55.0/surfaces/edge-cf/tree/.claude/patterns.md +17 -0
- package/releases/0.55.0/surfaces/edge-cf/tree/.claude/retrieval.md +8 -0
- package/releases/0.55.0/surfaces/edge-cf/tree/CLAUDE.md +27 -0
- package/releases/0.55.0/surfaces/frontend/tree/.claude/agents/architect.md +20 -0
- package/releases/0.55.0/surfaces/frontend/tree/.claude/agents/devops.md +28 -0
- package/releases/0.55.0/surfaces/frontend/tree/.claude/agents/implementer.md +25 -0
- package/releases/0.55.0/surfaces/frontend/tree/.claude/agents/qa.md +17 -0
- package/releases/0.55.0/surfaces/frontend/tree/.claude/agents/reviewer.md +56 -0
- package/releases/0.55.0/surfaces/frontend/tree/.claude/patterns.md +8 -0
- package/releases/0.55.0/surfaces/frontend/tree/.claude/retrieval.md +2 -0
- package/releases/0.55.0/surfaces/frontend/tree/.claude/router.md +14 -0
- package/releases/0.55.0/surfaces/frontend/tree/CLAUDE.md +5 -0
- package/releases/0.55.0/surfaces/integrations/tree/.claude/agents/architect.md +16 -0
- package/releases/0.55.0/surfaces/integrations/tree/.claude/agents/implementer.md +12 -0
- package/releases/0.55.0/surfaces/integrations/tree/.claude/agents/integration-tester.md +20 -0
- package/releases/0.55.0/surfaces/integrations/tree/.claude/agents/planner.md +2 -0
- package/releases/0.55.0/surfaces/integrations/tree/.claude/agents/reviewer.md +21 -0
- package/releases/0.55.0/surfaces/integrations/tree/.claude/agents/secops.md +2 -0
- package/releases/0.55.0/surfaces/integrations/tree/.claude/agents-overview.md +8 -0
- package/releases/0.55.0/surfaces/integrations/tree/.claude/graph.md +10 -0
- package/releases/0.55.0/surfaces/integrations/tree/.claude/patterns.md +38 -0
- package/releases/0.55.0/surfaces/integrations/tree/.claude/pipeline.md +16 -0
- package/releases/0.55.0/surfaces/integrations/tree/.claude/retrieval.md +16 -0
- package/releases/0.55.0/surfaces/integrations/tree/.claude/router.md +6 -0
- package/releases/0.55.0/surfaces/integrations/tree/CLAUDE.md +17 -0
- package/releases/0.55.0/surfaces/money/tree/.claude/agents/architect.md +12 -0
- package/releases/0.55.0/surfaces/money/tree/.claude/agents/dba.md +14 -0
- package/releases/0.55.0/surfaces/money/tree/.claude/agents/implementer.md +11 -0
- package/releases/0.55.0/surfaces/money/tree/.claude/agents/integration-tester.md +3 -0
- package/releases/0.55.0/surfaces/money/tree/.claude/agents/reviewer.md +23 -0
- package/releases/0.55.0/surfaces/money/tree/.claude/agents/secops.md +5 -0
- package/releases/0.55.0/surfaces/money/tree/.claude/agents/solidity-auditor.md +4 -0
- package/releases/0.55.0/surfaces/money/tree/.claude/agents/solidity-dev.md +4 -0
- package/releases/0.55.0/surfaces/money/tree/.claude/graph.md +2 -0
- package/releases/0.55.0/surfaces/money/tree/.claude/patterns.md +49 -0
- package/releases/0.55.0/surfaces/money/tree/.claude/pipeline.md +2 -0
- package/releases/0.55.0/surfaces/money/tree/.claude/retrieval.md +2 -0
- package/releases/0.55.0/surfaces/money/tree/CLAUDE.md +11 -0
- package/releases/0.55.0/surfaces/pii/tree/.claude/agents/dba.md +2 -0
- package/releases/0.55.0/surfaces/pii/tree/.claude/agents/devops.md +8 -0
- package/releases/0.55.0/surfaces/pii/tree/.claude/agents/reviewer.md +8 -0
- package/releases/0.55.0/surfaces/pii/tree/.claude/agents/secops.md +2 -0
- package/releases/0.55.0/surfaces/pii/tree/.claude/agents/solidity-auditor.md +5 -0
- package/releases/0.55.0/surfaces/pii/tree/CLAUDE.md +5 -0
- package/releases/0.55.0/surfaces/prisma/tree/.claude/agents/architect.md +2 -0
- package/releases/0.55.0/surfaces/prisma/tree/.claude/agents/dba.md +42 -0
- package/releases/0.55.0/surfaces/prisma/tree/.claude/agents/devops.md +11 -0
- package/releases/0.55.0/surfaces/prisma/tree/.claude/agents/implementer.md +2 -0
- package/releases/0.55.0/surfaces/prisma/tree/.claude/agents/integration-tester.md +2 -0
- package/releases/0.55.0/surfaces/prisma/tree/.claude/agents/reviewer.md +2 -0
- package/releases/0.55.0/surfaces/prisma/tree/.claude/patterns.md +15 -0
- package/releases/0.55.0/surfaces/prisma/tree/CLAUDE.md +5 -0
- package/src/commands/check.mjs +107 -6
- package/src/commands/learn.mjs +44 -17
- package/src/commands/pills.mjs +6 -2
- package/src/commands/stats.mjs +28 -9
- package/src/dashboard.html +3 -2
- package/src/office.html +2 -2
- package/src/transcripts.mjs +15 -2
package/src/commands/stats.mjs
CHANGED
|
@@ -459,7 +459,7 @@ const CYCLE_ENDS = { qa: 'PASS', devops: 'DEPLOYED', secops: 'SECURE' };
|
|
|
459
459
|
* was captured under (`core`) carries it: over every round, "0 of 16 loop-backs named their issues" read
|
|
460
460
|
* reports written before the rule existed as breaking it. Releases are never rewritten, so neither is this.
|
|
461
461
|
*/
|
|
462
|
-
const RULE_SINCE = { issues: '0.22.0', stepFiles: '0.28.8' };
|
|
462
|
+
const RULE_SINCE = { issues: '0.22.0', stepFiles: '0.28.8', stepLines: '0.55.0' };
|
|
463
463
|
|
|
464
464
|
/**
|
|
465
465
|
* Whether a round ran under a release that carries a rule. One captured before rounds recorded their pin
|
|
@@ -558,8 +558,8 @@ export function cyclesOf(records) {
|
|
|
558
558
|
*
|
|
559
559
|
* @param {object[]} records - The runs in the window.
|
|
560
560
|
*/
|
|
561
|
-
function proportionReport(records, stepLimit = () => null) {
|
|
562
|
-
const d = proportionData(records, stepLimit);
|
|
561
|
+
function proportionReport(records, stepLimit = () => null, lineLimit = () => null) {
|
|
562
|
+
const d = proportionData(records, stepLimit, lineLimit);
|
|
563
563
|
if (!d) return;
|
|
564
564
|
console.log(
|
|
565
565
|
heading(
|
|
@@ -584,6 +584,14 @@ function proportionReport(records, stepLimit = () => null) {
|
|
|
584
584
|
),
|
|
585
585
|
);
|
|
586
586
|
}
|
|
587
|
+
if (d.overLines) {
|
|
588
|
+
console.log(
|
|
589
|
+
note(
|
|
590
|
+
`${d.overLines.count} implementer round(s) wrote more lines than one step may (${d.overLines.limit}); the largest wrote ${d.overLines.largest}. The architect forecasts a step's lines and splits it past them.`,
|
|
591
|
+
'warn',
|
|
592
|
+
),
|
|
593
|
+
);
|
|
594
|
+
}
|
|
587
595
|
}
|
|
588
596
|
|
|
589
597
|
/**
|
|
@@ -593,8 +601,9 @@ function proportionReport(records, stepLimit = () => null) {
|
|
|
593
601
|
*
|
|
594
602
|
* @param {object[]} records - The rounds in the window.
|
|
595
603
|
* @param {(project: string) => number|null} [stepLimit] - The most files one implementer run may write, by project.
|
|
604
|
+
* @param {(project: string) => number|null} [lineLimit] - The most lines, by project.
|
|
596
605
|
*/
|
|
597
|
-
export function proportionData(records, stepLimit = () => null) {
|
|
606
|
+
export function proportionData(records, stepLimit = () => null, lineLimit = () => null) {
|
|
598
607
|
const measured = records.filter((r) => WRITERS.has(r.role) && typeof r.files_touched === 'number');
|
|
599
608
|
if (measured.length === 0) return null;
|
|
600
609
|
const cycles = cyclesOf(records);
|
|
@@ -629,6 +638,14 @@ export function proportionData(records, stepLimit = () => null) {
|
|
|
629
638
|
return limit !== null && r.files_touched > limit;
|
|
630
639
|
});
|
|
631
640
|
const largest = over.length ? over.reduce((a, b) => (b.files_touched > a.files_touched ? b : a)) : null;
|
|
641
|
+
// And its lines: a step forecast at about 640 lines came to 2,546 in three files, under the file limit, and every
|
|
642
|
+
// gate read each of its rounds.
|
|
643
|
+
const longer = records.filter((r) => {
|
|
644
|
+
if (r.role !== 'implementer' || typeof r.lines_written !== 'number' || !ranUnder(r, 'stepLines')) return false;
|
|
645
|
+
const limit = lineLimit(r.project);
|
|
646
|
+
return limit !== null && r.lines_written > limit;
|
|
647
|
+
});
|
|
648
|
+
const longest = longer.length ? longer.reduce((a, b) => (b.lines_written > a.lines_written ? b : a)) : null;
|
|
632
649
|
return {
|
|
633
650
|
rows: rows.map(({ label, cycles: n, designed }) => ({ label, cycles: n, designed })),
|
|
634
651
|
built,
|
|
@@ -637,18 +654,20 @@ export function proportionData(records, stepLimit = () => null) {
|
|
|
637
654
|
over: largest
|
|
638
655
|
? { count: over.length, limit: stepLimit(largest.project), largest: largest.files_touched, readM: typeof largest.tokens?.read === 'number' ? Math.round(largest.tokens.read / 1e6) : null }
|
|
639
656
|
: null,
|
|
657
|
+
overLines: longest ? { count: longer.length, limit: lineLimit(longest.project), largest: longest.lines_written } : null,
|
|
640
658
|
};
|
|
641
659
|
}
|
|
642
660
|
|
|
643
661
|
/**
|
|
644
662
|
* The most files one implementer run may write in each measured project, as its pinned release states it
|
|
645
663
|
* (`{{STEP_FILES}}`, which the project may declare to change), or null where the release has no such
|
|
646
|
-
* limit or the project cannot be found.
|
|
664
|
+
* limit or the project cannot be found. With `STEP_LINES`, the most lines.
|
|
647
665
|
*
|
|
648
666
|
* @param {{root: string}} ctx - CLI context, for the releases.
|
|
667
|
+
* @param {'STEP_FILES'|'STEP_LINES'} [key] - Which limit.
|
|
649
668
|
* @returns {(project: string) => number|null}
|
|
650
669
|
*/
|
|
651
|
-
function stepLimitOf(ctx) {
|
|
670
|
+
function stepLimitOf(ctx, key = 'STEP_FILES') {
|
|
652
671
|
const known = new Map();
|
|
653
672
|
return (project) => {
|
|
654
673
|
if (!known.has(project)) {
|
|
@@ -657,7 +676,7 @@ function stepLimitOf(ctx) {
|
|
|
657
676
|
const found = decodeProjectDir(project);
|
|
658
677
|
const profile = found ? JSON.parse(readFileSync(join(found, HARNESS, 'profile.json'), 'utf8')) : null;
|
|
659
678
|
const layers = profile ? layerRootFor(ctx.root, profile.core) : null;
|
|
660
|
-
const value = profile?.vocabulary?.
|
|
679
|
+
const value = profile?.vocabulary?.[key] ?? (layers?.dir ? defaultVocabulary(layers.dir)[key] : undefined);
|
|
661
680
|
const n = Number(value);
|
|
662
681
|
limit = value !== undefined && value !== null && value !== '' && Number.isFinite(n) && n > 0 ? n : null;
|
|
663
682
|
} catch {
|
|
@@ -735,7 +754,7 @@ export function statsData(records, ctx) {
|
|
|
735
754
|
stages: stageData(records),
|
|
736
755
|
cost: costData(ran),
|
|
737
756
|
context: contextData(ran),
|
|
738
|
-
proportion: proportionData(ran, stepLimitOf(ctx)),
|
|
757
|
+
proportion: proportionData(ran, stepLimitOf(ctx), stepLimitOf(ctx, 'STEP_LINES')),
|
|
739
758
|
};
|
|
740
759
|
}
|
|
741
760
|
|
|
@@ -939,7 +958,7 @@ export async function stats(argv, ctx) {
|
|
|
939
958
|
costReport(records.filter((r) => r.status !== 'denied'));
|
|
940
959
|
contextReport(records.filter((r) => r.status !== 'denied'));
|
|
941
960
|
modelReport(records.filter((r) => r.status !== 'denied'));
|
|
942
|
-
proportionReport(records.filter((r) => r.status !== 'denied'), stepLimitOf(ctx));
|
|
961
|
+
proportionReport(records.filter((r) => r.status !== 'denied'), stepLimitOf(ctx), stepLimitOf(ctx, 'STEP_LINES'));
|
|
943
962
|
|
|
944
963
|
// What the pipeline learned, against what it had to learn from. A loop-back is the raw
|
|
945
964
|
// material and a pill is the product, so the two numbers belong on the same screen: the
|
package/src/dashboard.html
CHANGED
|
@@ -308,7 +308,7 @@ const RENDER = {
|
|
|
308
308
|
card('graduate · made rules?', `${d.open.length} open`, `${d.ready.length} at ${d.at}+ · ${d.madeHere} made a rule here${d.relapses.length ? ` · ${d.relapses.length} watched` : ''}`),
|
|
309
309
|
card('loops', d.gated ? (d.activity ? String(d.activity.rounds) : '—') : 'no gate', d.activity ? `rounds on capped edges · ${d.activity.held} sent to you` : d.gated ? 'no ledger yet' : 'caps are instructions'),
|
|
310
310
|
),
|
|
311
|
-
d.late.length ? [el('h3', {}, 'capture · sent back with nothing written down'), d.late.map((o) => el('div', { class: 'note' }, el('span', { class: 'role' }, o.role), ` ${o.count}
|
|
311
|
+
d.late.length ? [el('h3', {}, 'capture · sent back with nothing written down'), d.late.map((o) => el('div', { class: 'note' }, el('span', { class: 'role' }, o.role), ` sent back ${o.count} time(s) ${o.since ? `since its newest lesson (${o.since})` : 'and no lesson at all'}`, el('ul', { class: 'list soft' }, o.recent.map((r) => el('li', {}, `${when(r.ts)} · ${r.desc ?? '(no description)'}`)))))] : null,
|
|
312
312
|
el('h3', {}, 'verify · is each stage sent back less since its lessons?'),
|
|
313
313
|
el('p', { class: 'note soft', style: 'margin-bottom:12px' }, `For each lesson, the share of its stage's rounds that a later stage sent back, in the ${d.window} days before it was written and the ${d.window} after — lower is better. A change is called only when it is larger than chance moves a share at that many rounds. The other stages, over the same days, say whether everything moved at once: then it was the work that changed, not the lesson.`),
|
|
314
314
|
groups.length ? groups.map(comparison) : el('p', { class: 'note faint' }, 'No lesson could be measured yet.'),
|
|
@@ -358,7 +358,8 @@ const RENDER = {
|
|
|
358
358
|
table(['stage', 'rounds', 'n', 'turns', 'calls/turn', 'starts at', 'peak', 'prompt'], d.context.rows.map((r, i, all) => [i > 0 && all[i - 1].role === r.role ? '' : el('span', { class: 'role' }, r.role), el('span', { class: 'faint' }, r.label), String(r.n), String(r.turns), r.callsPerTurn.toFixed(2), kTokens(r.start), kTokens(r.peak), r.prompt === null ? '—' : r.prompt.toLocaleString('en-US')]), [2, 3, 4, 5, 6, 7])] : null,
|
|
359
359
|
d.proportion ? [el('h3', {}, 'proportion · the size of a change against its chain'),
|
|
360
360
|
table(['largest write', 'cycles', 'with a planner or architect', ''], d.proportion.rows.map((r) => [r.label, String(r.cycles), r.cycles ? `${r.designed} (${pct(r.designed, r.cycles)})` : '—', bar([[r.cycles ? r.designed / r.cycles : 0, 'var(--pink)']])]), [1, 2]),
|
|
361
|
-
d.proportion.over ? el('p', { class: 'note warn' }, `${d.proportion.over.count} implementer round(s) wrote more files than one step may (${d.proportion.over.limit}); the largest wrote ${d.proportion.over.largest}.`) : null
|
|
361
|
+
d.proportion.over ? el('p', { class: 'note warn' }, `${d.proportion.over.count} implementer round(s) wrote more files than one step may (${d.proportion.over.limit}); the largest wrote ${d.proportion.over.largest}.`) : null,
|
|
362
|
+
d.proportion.overLines ? el('p', { class: 'note warn' }, `${d.proportion.overLines.count} implementer round(s) wrote more lines than one step may (${d.proportion.overLines.limit}); the largest wrote ${d.proportion.overLines.largest}.`) : null] : null,
|
|
362
363
|
);
|
|
363
364
|
},
|
|
364
365
|
};
|
package/src/office.html
CHANGED
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
* drawn here, in pixels, on a small canvas scaled up; nothing is fetched from anywhere else. The view starts close
|
|
60
60
|
* enough to read and follows the work around the floor; dragging, the wheel and the buttons take it over.
|
|
61
61
|
*/
|
|
62
|
-
const ROOM = /*NINA_ROOM*/null || { project: 'demo', stages: ['planner', 'architect', 'implementer', 'reviewer', 'qa', 'dba', 'integration-tester', 'devops', 'secops'], many: ['architect', 'implementer', 'reviewer'], owner: 'you', replay: false };
|
|
62
|
+
const ROOM = /*NINA_ROOM*/null || { project: 'demo', stages: ['planner', 'architect', 'design-reviewer', 'implementer', 'reviewer', 'qa', 'dba', 'integration-tester', 'devops', 'secops'], many: ['architect', 'implementer', 'reviewer'], owner: 'you', replay: false };
|
|
63
63
|
|
|
64
64
|
// ─── palette and sprites ──────────────────────────────────────────────────────────────────────
|
|
65
65
|
const C = {
|
|
@@ -163,7 +163,7 @@ const GARDEN = 52;
|
|
|
163
163
|
|
|
164
164
|
/** The rooms, by phase, in the order the work moves through them. A stage not named here works in build. */
|
|
165
165
|
const PHASES = [
|
|
166
|
-
{ key: 'design', name: 'design', side: 'left', roles: ['planner', 'architect'] },
|
|
166
|
+
{ key: 'design', name: 'design', side: 'left', roles: ['planner', 'architect', 'design-reviewer'] },
|
|
167
167
|
{ key: 'build', name: 'build', side: 'left', roles: ['implementer', 'solidity-dev'] },
|
|
168
168
|
{ key: 'review', name: 'review & gates', side: 'right', roles: ['reviewer', 'dba', 'integration-tester', 'solidity-auditor'] },
|
|
169
169
|
{ key: 'lab', name: 'test lab', side: 'right', roles: ['qa'] },
|
package/src/transcripts.mjs
CHANGED
|
@@ -75,6 +75,7 @@ const VERDICTS = [
|
|
|
75
75
|
export const ROLE_TOKENS = {
|
|
76
76
|
planner: ['PLAN-READY', 'BLOCKED'],
|
|
77
77
|
architect: ['SPEC-READY', 'BLOCKED'],
|
|
78
|
+
'design-reviewer': ['APPROVED', 'REJECTED'],
|
|
78
79
|
implementer: ['DIFF-READY', 'BLOCKED'],
|
|
79
80
|
'solidity-dev': ['DIFF-READY', 'BLOCKED'],
|
|
80
81
|
reviewer: ['APPROVED', 'REJECTED'],
|
|
@@ -120,6 +121,9 @@ export function classifyVerdict(result, role) {
|
|
|
120
121
|
/** The tools that write a file, and where each names it. */
|
|
121
122
|
const WRITES = { Edit: 'file_path', Write: 'file_path', MultiEdit: 'file_path', NotebookEdit: 'notebook_path' };
|
|
122
123
|
|
|
124
|
+
/** How many lines a text written through an edit tool holds: none for an empty one, a last newline ending one. */
|
|
125
|
+
const linesIn = (text) => (typeof text === 'string' && text.length > 0 ? text.replace(/\n$/, '').split('\n').length : 0);
|
|
126
|
+
|
|
123
127
|
/** The line under a declared verdict that names what the report sends back. */
|
|
124
128
|
const ISSUES = /^\s*ISSUES:(.*)$/;
|
|
125
129
|
|
|
@@ -642,7 +646,7 @@ async function attachAgentDetail(projectDir, dispatches) {
|
|
|
642
646
|
if (
|
|
643
647
|
run.agent_read_bytes === size &&
|
|
644
648
|
!('resumes' in run) &&
|
|
645
|
-
[...records, ...later].every((r) => settled(r) && 'round' in r && 'lessons_read' in r && 'tokens' in r && 'files_touched' in r && 'effort' in r && 'turns' in r && 'prompt_chars' in r)
|
|
649
|
+
[...records, ...later].every((r) => settled(r) && 'round' in r && 'lessons_read' in r && 'tokens' in r && 'files_touched' in r && 'lines_written' in r && 'effort' in r && 'turns' in r && 'prompt_chars' in r)
|
|
646
650
|
) {
|
|
647
651
|
continue;
|
|
648
652
|
}
|
|
@@ -670,6 +674,11 @@ async function attachAgentDetail(projectDir, dispatches) {
|
|
|
670
674
|
usage: new Map(),
|
|
671
675
|
/** The files the round wrote through the edit tools. Only their number is kept. */
|
|
672
676
|
written: new Set(),
|
|
677
|
+
/**
|
|
678
|
+
* The lines it wrote there, by file: a file's last whole write, and each edit's new text after it — what the
|
|
679
|
+
* run wrote, not its diff: an edit made twice counts twice, and a file a shell command changed not at all.
|
|
680
|
+
*/
|
|
681
|
+
lines: new Map(),
|
|
673
682
|
/** The tool calls the round made, by id: over its turns, how many calls each turn sent at once. */
|
|
674
683
|
calls: new Set(),
|
|
675
684
|
/** How long the prompt that opened the round was, in characters; never the prompt. */
|
|
@@ -708,7 +717,10 @@ async function attachAgentDetail(projectDir, dispatches) {
|
|
|
708
717
|
try {
|
|
709
718
|
for (const block of JSON.parse(line)?.message?.content ?? []) {
|
|
710
719
|
const path = block?.type === 'tool_use' ? block.input?.[WRITES[block.name]] : null;
|
|
711
|
-
if (typeof path
|
|
720
|
+
if (typeof path !== 'string') continue;
|
|
721
|
+
round.written.add(path);
|
|
722
|
+
const added = { Edit: () => linesIn(block.input.new_string), MultiEdit: () => (Array.isArray(block.input.edits) ? block.input.edits : []).reduce((n, e) => n + linesIn(e?.new_string), 0), NotebookEdit: () => linesIn(block.input.new_source) }[block.name];
|
|
723
|
+
round.lines.set(path, block.name === 'Write' ? linesIn(block.input.content) : (round.lines.get(path) ?? 0) + (added?.() ?? 0));
|
|
712
724
|
}
|
|
713
725
|
} catch {
|
|
714
726
|
// A torn line loses one edit, not the run's.
|
|
@@ -795,6 +807,7 @@ async function attachAgentDetail(projectDir, dispatches) {
|
|
|
795
807
|
record.usage_model = spent.model;
|
|
796
808
|
record.effort = spent.effort;
|
|
797
809
|
record.files_touched = round.written.size;
|
|
810
|
+
record.lines_written = [...round.lines.values()].reduce((a, b) => a + b, 0);
|
|
798
811
|
record.skills = [...round.skills];
|
|
799
812
|
record.lessons_read = round.lessonsRead.size;
|
|
800
813
|
record.lessons_listed = round.lessonsListed;
|