@xhulz/nina 0.54.0 → 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.
Files changed (138) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/releases/0.55.0/core/GAPS.md +125 -0
  4. package/releases/0.55.0/core/answered.json +68 -0
  5. package/releases/0.55.0/core/defaults/tree/.claude/agents/architect.md +1 -0
  6. package/releases/0.55.0/core/defaults/tree/.claude/agents/dba.md +3 -0
  7. package/releases/0.55.0/core/defaults/tree/.claude/agents/devops.md +1 -0
  8. package/releases/0.55.0/core/defaults/tree/.claude/agents/implementer.md +1 -0
  9. package/releases/0.55.0/core/defaults/tree/.claude/agents/integration-tester.md +3 -0
  10. package/releases/0.55.0/core/defaults/tree/.claude/agents/qa.md +7 -0
  11. package/releases/0.55.0/core/defaults/tree/.claude/agents/reviewer.md +3 -0
  12. package/releases/0.55.0/core/defaults/tree/.claude/agents/secops.md +3 -0
  13. package/releases/0.55.0/core/defaults/tree/.claude/agents/solidity-auditor.md +3 -0
  14. package/releases/0.55.0/core/defaults/tree/.claude/agents/solidity-dev.md +3 -0
  15. package/releases/0.55.0/core/tree/.claude/agents/architect.md +130 -0
  16. package/releases/0.55.0/core/tree/.claude/agents/dba.md +119 -0
  17. package/releases/0.55.0/core/tree/.claude/agents/design-reviewer.md +75 -0
  18. package/releases/0.55.0/core/tree/.claude/agents/devops.md +118 -0
  19. package/releases/0.55.0/core/tree/.claude/agents/implementer.md +163 -0
  20. package/releases/0.55.0/core/tree/.claude/agents/integration-tester.md +170 -0
  21. package/releases/0.55.0/core/tree/.claude/agents/planner.md +132 -0
  22. package/releases/0.55.0/core/tree/.claude/agents/qa.md +150 -0
  23. package/releases/0.55.0/core/tree/.claude/agents/reviewer.md +187 -0
  24. package/releases/0.55.0/core/tree/.claude/agents/secops.md +120 -0
  25. package/releases/0.55.0/core/tree/.claude/agents/solidity-auditor.md +126 -0
  26. package/releases/0.55.0/core/tree/.claude/agents/solidity-dev.md +123 -0
  27. package/releases/0.55.0/core/tree/.claude/agents-overview.md +65 -0
  28. package/releases/0.55.0/core/tree/.claude/frontend.md +10 -0
  29. package/releases/0.55.0/core/tree/.claude/graph.md +79 -0
  30. package/releases/0.55.0/core/tree/.claude/patterns.md +251 -0
  31. package/releases/0.55.0/core/tree/.claude/pills/README.md +150 -0
  32. package/releases/0.55.0/core/tree/.claude/pipeline.md +101 -0
  33. package/releases/0.55.0/core/tree/.claude/retrieval.md +103 -0
  34. package/releases/0.55.0/core/tree/.claude/router.md +205 -0
  35. package/releases/0.55.0/core/tree/.claude/templates/integration.md +48 -0
  36. package/releases/0.55.0/core/tree/CLAUDE.md +166 -0
  37. package/releases/0.55.0/core/tree/scripts/cost-watch.mjs +25 -0
  38. package/releases/0.55.0/core/tree/scripts/edit-guard.mjs +24 -0
  39. package/releases/0.55.0/core/tree/scripts/harness-check.mjs +71 -0
  40. package/releases/0.55.0/core/tree/scripts/loop-gate.mjs +19 -0
  41. package/releases/0.55.0/core/vocabulary.json +14 -0
  42. package/releases/0.55.0/surfaces/blockchain/tree/.claude/agents/architect.md +5 -0
  43. package/releases/0.55.0/surfaces/blockchain/tree/.claude/agents/devops.md +5 -0
  44. package/releases/0.55.0/surfaces/blockchain/tree/.claude/agents/reviewer.md +5 -0
  45. package/releases/0.55.0/surfaces/blockchain/tree/.claude/agents/solidity-auditor.md +18 -0
  46. package/releases/0.55.0/surfaces/blockchain/tree/.claude/agents/solidity-dev.md +16 -0
  47. package/releases/0.55.0/surfaces/blockchain/tree/.claude/agents-overview.md +6 -0
  48. package/releases/0.55.0/surfaces/blockchain/tree/.claude/graph.md +11 -0
  49. package/releases/0.55.0/surfaces/blockchain/tree/.claude/router.md +6 -0
  50. package/releases/0.55.0/surfaces/blockchain/tree/CLAUDE.md +12 -0
  51. package/releases/0.55.0/surfaces/d1/tree/.claude/agents/dba.md +15 -0
  52. package/releases/0.55.0/surfaces/d1/tree/.claude/agents/devops.md +2 -0
  53. package/releases/0.55.0/surfaces/d1/tree/.claude/agents/implementer.md +2 -0
  54. package/releases/0.55.0/surfaces/d1/tree/.claude/patterns.md +8 -0
  55. package/releases/0.55.0/surfaces/d1/tree/CLAUDE.md +2 -0
  56. package/releases/0.55.0/surfaces/db/tree/.claude/agents/architect.md +5 -0
  57. package/releases/0.55.0/surfaces/db/tree/.claude/agents/dba.md +54 -0
  58. package/releases/0.55.0/surfaces/db/tree/.claude/agents/devops.md +5 -0
  59. package/releases/0.55.0/surfaces/db/tree/.claude/agents/implementer.md +2 -0
  60. package/releases/0.55.0/surfaces/db/tree/.claude/agents/integration-tester.md +10 -0
  61. package/releases/0.55.0/surfaces/db/tree/.claude/agents/planner.md +2 -0
  62. package/releases/0.55.0/surfaces/db/tree/.claude/agents/reviewer.md +22 -0
  63. package/releases/0.55.0/surfaces/db/tree/.claude/agents/secops.md +2 -0
  64. package/releases/0.55.0/surfaces/db/tree/.claude/agents-overview.md +5 -0
  65. package/releases/0.55.0/surfaces/db/tree/.claude/graph.md +8 -0
  66. package/releases/0.55.0/surfaces/db/tree/.claude/patterns.md +22 -0
  67. package/releases/0.55.0/surfaces/db/tree/.claude/pipeline.md +13 -0
  68. package/releases/0.55.0/surfaces/db/tree/.claude/retrieval.md +5 -0
  69. package/releases/0.55.0/surfaces/db/tree/.claude/router.md +4 -0
  70. package/releases/0.55.0/surfaces/db/tree/CLAUDE.md +17 -0
  71. package/releases/0.55.0/surfaces/drizzle/tree/.claude/agents/dba.md +9 -0
  72. package/releases/0.55.0/surfaces/drizzle/tree/.claude/agents/devops.md +5 -0
  73. package/releases/0.55.0/surfaces/drizzle/tree/.claude/agents/implementer.md +2 -0
  74. package/releases/0.55.0/surfaces/drizzle/tree/.claude/patterns.md +7 -0
  75. package/releases/0.55.0/surfaces/edge-cf/tree/.claude/agents/architect.md +14 -0
  76. package/releases/0.55.0/surfaces/edge-cf/tree/.claude/agents/dba.md +2 -0
  77. package/releases/0.55.0/surfaces/edge-cf/tree/.claude/agents/devops.md +29 -0
  78. package/releases/0.55.0/surfaces/edge-cf/tree/.claude/agents/implementer.md +14 -0
  79. package/releases/0.55.0/surfaces/edge-cf/tree/.claude/agents/integration-tester.md +11 -0
  80. package/releases/0.55.0/surfaces/edge-cf/tree/.claude/agents/qa.md +3 -0
  81. package/releases/0.55.0/surfaces/edge-cf/tree/.claude/agents/reviewer.md +8 -0
  82. package/releases/0.55.0/surfaces/edge-cf/tree/.claude/agents/secops.md +8 -0
  83. package/releases/0.55.0/surfaces/edge-cf/tree/.claude/patterns.md +17 -0
  84. package/releases/0.55.0/surfaces/edge-cf/tree/.claude/retrieval.md +8 -0
  85. package/releases/0.55.0/surfaces/edge-cf/tree/CLAUDE.md +27 -0
  86. package/releases/0.55.0/surfaces/frontend/tree/.claude/agents/architect.md +20 -0
  87. package/releases/0.55.0/surfaces/frontend/tree/.claude/agents/devops.md +28 -0
  88. package/releases/0.55.0/surfaces/frontend/tree/.claude/agents/implementer.md +25 -0
  89. package/releases/0.55.0/surfaces/frontend/tree/.claude/agents/qa.md +17 -0
  90. package/releases/0.55.0/surfaces/frontend/tree/.claude/agents/reviewer.md +56 -0
  91. package/releases/0.55.0/surfaces/frontend/tree/.claude/patterns.md +8 -0
  92. package/releases/0.55.0/surfaces/frontend/tree/.claude/retrieval.md +2 -0
  93. package/releases/0.55.0/surfaces/frontend/tree/.claude/router.md +14 -0
  94. package/releases/0.55.0/surfaces/frontend/tree/CLAUDE.md +5 -0
  95. package/releases/0.55.0/surfaces/integrations/tree/.claude/agents/architect.md +16 -0
  96. package/releases/0.55.0/surfaces/integrations/tree/.claude/agents/implementer.md +12 -0
  97. package/releases/0.55.0/surfaces/integrations/tree/.claude/agents/integration-tester.md +20 -0
  98. package/releases/0.55.0/surfaces/integrations/tree/.claude/agents/planner.md +2 -0
  99. package/releases/0.55.0/surfaces/integrations/tree/.claude/agents/reviewer.md +21 -0
  100. package/releases/0.55.0/surfaces/integrations/tree/.claude/agents/secops.md +2 -0
  101. package/releases/0.55.0/surfaces/integrations/tree/.claude/agents-overview.md +8 -0
  102. package/releases/0.55.0/surfaces/integrations/tree/.claude/graph.md +10 -0
  103. package/releases/0.55.0/surfaces/integrations/tree/.claude/patterns.md +38 -0
  104. package/releases/0.55.0/surfaces/integrations/tree/.claude/pipeline.md +16 -0
  105. package/releases/0.55.0/surfaces/integrations/tree/.claude/retrieval.md +16 -0
  106. package/releases/0.55.0/surfaces/integrations/tree/.claude/router.md +6 -0
  107. package/releases/0.55.0/surfaces/integrations/tree/CLAUDE.md +17 -0
  108. package/releases/0.55.0/surfaces/money/tree/.claude/agents/architect.md +12 -0
  109. package/releases/0.55.0/surfaces/money/tree/.claude/agents/dba.md +14 -0
  110. package/releases/0.55.0/surfaces/money/tree/.claude/agents/implementer.md +11 -0
  111. package/releases/0.55.0/surfaces/money/tree/.claude/agents/integration-tester.md +3 -0
  112. package/releases/0.55.0/surfaces/money/tree/.claude/agents/reviewer.md +23 -0
  113. package/releases/0.55.0/surfaces/money/tree/.claude/agents/secops.md +5 -0
  114. package/releases/0.55.0/surfaces/money/tree/.claude/agents/solidity-auditor.md +4 -0
  115. package/releases/0.55.0/surfaces/money/tree/.claude/agents/solidity-dev.md +4 -0
  116. package/releases/0.55.0/surfaces/money/tree/.claude/graph.md +2 -0
  117. package/releases/0.55.0/surfaces/money/tree/.claude/patterns.md +49 -0
  118. package/releases/0.55.0/surfaces/money/tree/.claude/pipeline.md +2 -0
  119. package/releases/0.55.0/surfaces/money/tree/.claude/retrieval.md +2 -0
  120. package/releases/0.55.0/surfaces/money/tree/CLAUDE.md +11 -0
  121. package/releases/0.55.0/surfaces/pii/tree/.claude/agents/dba.md +2 -0
  122. package/releases/0.55.0/surfaces/pii/tree/.claude/agents/devops.md +8 -0
  123. package/releases/0.55.0/surfaces/pii/tree/.claude/agents/reviewer.md +8 -0
  124. package/releases/0.55.0/surfaces/pii/tree/.claude/agents/secops.md +2 -0
  125. package/releases/0.55.0/surfaces/pii/tree/.claude/agents/solidity-auditor.md +5 -0
  126. package/releases/0.55.0/surfaces/pii/tree/CLAUDE.md +5 -0
  127. package/releases/0.55.0/surfaces/prisma/tree/.claude/agents/architect.md +2 -0
  128. package/releases/0.55.0/surfaces/prisma/tree/.claude/agents/dba.md +42 -0
  129. package/releases/0.55.0/surfaces/prisma/tree/.claude/agents/devops.md +11 -0
  130. package/releases/0.55.0/surfaces/prisma/tree/.claude/agents/implementer.md +2 -0
  131. package/releases/0.55.0/surfaces/prisma/tree/.claude/agents/integration-tester.md +2 -0
  132. package/releases/0.55.0/surfaces/prisma/tree/.claude/agents/reviewer.md +2 -0
  133. package/releases/0.55.0/surfaces/prisma/tree/.claude/patterns.md +15 -0
  134. package/releases/0.55.0/surfaces/prisma/tree/CLAUDE.md +5 -0
  135. package/src/commands/stats.mjs +28 -9
  136. package/src/dashboard.html +2 -1
  137. package/src/office.html +2 -2
  138. package/src/transcripts.mjs +15 -2
@@ -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 === 'string') round.written.add(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;