pgserve 2.1.3 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. package/CHANGELOG.md +96 -0
  2. package/README.md +105 -1
  3. package/bin/autopg-wrapper.cjs +16 -0
  4. package/bin/pgserve-wrapper.cjs +32 -6
  5. package/bin/postgres-server.js +56 -0
  6. package/console/README.md +131 -0
  7. package/console/api.js +173 -0
  8. package/console/app.jsx +483 -0
  9. package/console/colors_and_type.css +227 -0
  10. package/console/components.jsx +167 -0
  11. package/console/console.css +1666 -0
  12. package/console/data.jsx +350 -0
  13. package/console/index.html +31 -0
  14. package/console/screens/databases.jsx +5 -0
  15. package/console/screens/health.jsx +5 -0
  16. package/console/screens/ingress.jsx +5 -0
  17. package/console/screens/optimizer.jsx +5 -0
  18. package/console/screens/rlm-sim.jsx +5 -0
  19. package/console/screens/rlm-trace.jsx +5 -0
  20. package/console/screens/security.jsx +5 -0
  21. package/console/screens/settings.jsx +611 -0
  22. package/console/screens/sql.jsx +5 -0
  23. package/console/screens/sync.jsx +5 -0
  24. package/console/screens/tables.jsx +5 -0
  25. package/console/tweaks-panel.jsx +425 -0
  26. package/package.json +14 -2
  27. package/scripts/postinstall.cjs +60 -0
  28. package/src/cli-config.cjs +310 -0
  29. package/src/cli-install.cjs +112 -11
  30. package/src/cli-restart.cjs +228 -0
  31. package/src/cli-ui.cjs +580 -0
  32. package/src/cluster.js +43 -38
  33. package/src/postgres.js +141 -19
  34. package/src/settings-loader.cjs +235 -0
  35. package/src/settings-migrate.cjs +212 -0
  36. package/src/settings-pg-args.cjs +146 -0
  37. package/src/settings-schema.cjs +422 -0
  38. package/src/settings-validator.cjs +416 -0
  39. package/src/settings-writer.cjs +288 -0
  40. package/src/upgrade/index.js +65 -0
  41. package/src/upgrade/runner.js +23 -0
  42. package/src/upgrade/steps/binary-cache-flush.js +67 -0
  43. package/src/upgrade/steps/consumer-signal.js +40 -0
  44. package/src/upgrade/steps/env-refresh.js +89 -0
  45. package/src/upgrade/steps/health-validate.js +53 -0
  46. package/src/upgrade/steps/plpgsql-resolve.js +66 -0
  47. package/src/upgrade/steps/port-reconcile.js +52 -0
  48. package/.claude/context/windows-debug.md +0 -119
  49. package/.genie/AGENTS.md +0 -15
  50. package/.genie/agents/README.md +0 -110
  51. package/.genie/agents/analyze.md +0 -176
  52. package/.genie/agents/forge.md +0 -290
  53. package/.genie/agents/garbage-cleaner.md +0 -324
  54. package/.genie/agents/garbage-collector.md +0 -596
  55. package/.genie/agents/github-issue-gc.md +0 -618
  56. package/.genie/agents/review.md +0 -380
  57. package/.genie/agents/semantic-analyzer/find-duplicates.md +0 -90
  58. package/.genie/agents/semantic-analyzer/find-orphans.md +0 -99
  59. package/.genie/agents/semantic-analyzer.md +0 -101
  60. package/.genie/agents/update.md +0 -182
  61. package/.genie/agents/wish.md +0 -357
  62. package/.genie/brainstorms/pgserve-v2/DESIGN.md +0 -174
  63. package/.genie/code/AGENTS.md +0 -694
  64. package/.genie/code/agents/audit/risk.md +0 -173
  65. package/.genie/code/agents/audit/security.md +0 -189
  66. package/.genie/code/agents/audit.md +0 -145
  67. package/.genie/code/agents/challenge.md +0 -230
  68. package/.genie/code/agents/change-reviewer.md +0 -295
  69. package/.genie/code/agents/code-garbage-collector.md +0 -425
  70. package/.genie/code/agents/code-quality.md +0 -410
  71. package/.genie/code/agents/commit-suggester.md +0 -255
  72. package/.genie/code/agents/commit.md +0 -124
  73. package/.genie/code/agents/consensus.md +0 -204
  74. package/.genie/code/agents/daily-standup.md +0 -722
  75. package/.genie/code/agents/docgen.md +0 -48
  76. package/.genie/code/agents/explore.md +0 -79
  77. package/.genie/code/agents/fix.md +0 -100
  78. package/.genie/code/agents/git/commit-advisory.md +0 -219
  79. package/.genie/code/agents/git/workflows/issue.md +0 -244
  80. package/.genie/code/agents/git/workflows/pr.md +0 -179
  81. package/.genie/code/agents/git/workflows/release.md +0 -460
  82. package/.genie/code/agents/git/workflows/report.md +0 -342
  83. package/.genie/code/agents/git.md +0 -432
  84. package/.genie/code/agents/implementor.md +0 -161
  85. package/.genie/code/agents/install.md +0 -515
  86. package/.genie/code/agents/issue-creator.md +0 -344
  87. package/.genie/code/agents/polish.md +0 -116
  88. package/.genie/code/agents/qa.md +0 -653
  89. package/.genie/code/agents/refactor.md +0 -294
  90. package/.genie/code/agents/release.md +0 -1129
  91. package/.genie/code/agents/roadmap.md +0 -885
  92. package/.genie/code/agents/tests.md +0 -557
  93. package/.genie/code/agents/tracer.md +0 -50
  94. package/.genie/code/agents/update/upstream-update.md +0 -85
  95. package/.genie/code/agents/update/versions/generic-update.md +0 -305
  96. package/.genie/code/agents/vibe.md +0 -1317
  97. package/.genie/code/spells/agent-configuration.md +0 -58
  98. package/.genie/code/spells/automated-rc-publishing.md +0 -106
  99. package/.genie/code/spells/branch-tracker-guidance.md +0 -28
  100. package/.genie/code/spells/debug.md +0 -320
  101. package/.genie/code/spells/emoji-naming-convention.md +0 -303
  102. package/.genie/code/spells/evidence-storage.md +0 -26
  103. package/.genie/code/spells/file-naming-rules.md +0 -35
  104. package/.genie/code/spells/forge-code-blueprints.md +0 -195
  105. package/.genie/code/spells/genie-integration.md +0 -153
  106. package/.genie/code/spells/publishing-protocol.md +0 -61
  107. package/.genie/code/spells/team-consultation-protocol.md +0 -284
  108. package/.genie/code/spells/tool-requirements.md +0 -20
  109. package/.genie/code/spells/triad-maintenance-protocol.md +0 -154
  110. package/.genie/code/teams/tech-council/council.md +0 -328
  111. package/.genie/code/teams/tech-council/jt.md +0 -352
  112. package/.genie/code/teams/tech-council/nayr.md +0 -305
  113. package/.genie/code/teams/tech-council/oettam.md +0 -375
  114. package/.genie/neurons/README.md +0 -193
  115. package/.genie/neurons/forge.md +0 -106
  116. package/.genie/neurons/genie.md +0 -63
  117. package/.genie/neurons/review.md +0 -106
  118. package/.genie/neurons/wish.md +0 -104
  119. package/.genie/product/README.md +0 -20
  120. package/.genie/product/cli-automation.md +0 -359
  121. package/.genie/product/environment.md +0 -60
  122. package/.genie/product/mission.md +0 -60
  123. package/.genie/product/roadmap.md +0 -44
  124. package/.genie/product/tech-stack.md +0 -34
  125. package/.genie/product/templates/context-template.md +0 -218
  126. package/.genie/product/templates/qa-done-report-template.md +0 -68
  127. package/.genie/product/templates/review-report-template.md +0 -89
  128. package/.genie/product/templates/wish-template.md +0 -120
  129. package/.genie/scripts/helpers/analyze-commit.js +0 -195
  130. package/.genie/scripts/helpers/bullet-counter.js +0 -194
  131. package/.genie/scripts/helpers/bullet-find.js +0 -289
  132. package/.genie/scripts/helpers/bullet-id.js +0 -244
  133. package/.genie/scripts/helpers/check-secrets.js +0 -237
  134. package/.genie/scripts/helpers/count-tokens.js +0 -200
  135. package/.genie/scripts/helpers/create-frontmatter.js +0 -456
  136. package/.genie/scripts/helpers/detect-markers.js +0 -293
  137. package/.genie/scripts/helpers/detect-todos.js +0 -267
  138. package/.genie/scripts/helpers/detect-unlabeled-blocks.js +0 -135
  139. package/.genie/scripts/helpers/embeddings.js +0 -344
  140. package/.genie/scripts/helpers/find-empty-sections.js +0 -158
  141. package/.genie/scripts/helpers/index.js +0 -319
  142. package/.genie/scripts/helpers/validate-frontmatter.js +0 -578
  143. package/.genie/scripts/helpers/validate-links.js +0 -207
  144. package/.genie/scripts/helpers/validate-paths.js +0 -373
  145. package/.genie/spells/README.md +0 -9
  146. package/.genie/spells/ace-protocol.md +0 -118
  147. package/.genie/spells/ask-one-at-a-time.md +0 -175
  148. package/.genie/spells/backup-analyzer.md +0 -542
  149. package/.genie/spells/blocker.md +0 -12
  150. package/.genie/spells/break-things-move-fast.md +0 -56
  151. package/.genie/spells/context-candidates.md +0 -72
  152. package/.genie/spells/context-critic.md +0 -51
  153. package/.genie/spells/defer-to-expertise.md +0 -278
  154. package/.genie/spells/delegate-dont-do.md +0 -292
  155. package/.genie/spells/error-investigation-protocol.md +0 -328
  156. package/.genie/spells/evidence-based-completion.md +0 -273
  157. package/.genie/spells/experiment.md +0 -65
  158. package/.genie/spells/file-creation-protocol.md +0 -229
  159. package/.genie/spells/forge-integration.md +0 -281
  160. package/.genie/spells/forge-orchestration.md +0 -514
  161. package/.genie/spells/gather-context.md +0 -18
  162. package/.genie/spells/global-health-check.md +0 -34
  163. package/.genie/spells/global-noop-roundtrip.md +0 -25
  164. package/.genie/spells/install-genie.md +0 -1232
  165. package/.genie/spells/install.md +0 -82
  166. package/.genie/spells/investigate-before-commit.md +0 -112
  167. package/.genie/spells/know-yourself.md +0 -288
  168. package/.genie/spells/learn.md +0 -828
  169. package/.genie/spells/mcp-diagnostic-protocol.md +0 -246
  170. package/.genie/spells/mcp-first.md +0 -124
  171. package/.genie/spells/multi-step-execution.md +0 -67
  172. package/.genie/spells/orchestration-boundary-protocol.md +0 -256
  173. package/.genie/spells/orchestrator-not-implementor.md +0 -189
  174. package/.genie/spells/prompt.md +0 -746
  175. package/.genie/spells/reflect.md +0 -404
  176. package/.genie/spells/routing-decision-matrix.md +0 -368
  177. package/.genie/spells/run-in-parallel.md +0 -12
  178. package/.genie/spells/session-state-updater-example.md +0 -196
  179. package/.genie/spells/session-state-updater.md +0 -220
  180. package/.genie/spells/track-long-running-tasks.md +0 -133
  181. package/.genie/spells/troubleshoot-infrastructure.md +0 -176
  182. package/.genie/spells/upgrade-genie.md +0 -415
  183. package/.genie/spells/url-presentation-protocol.md +0 -301
  184. package/.genie/spells/wish-initiation.md +0 -158
  185. package/.genie/spells/wish-issue-linkage.md +0 -410
  186. package/.genie/spells/wish-lifecycle.md +0 -100
  187. package/.genie/state/provider-status.json +0 -3
  188. package/.genie/state/version.json +0 -16
  189. package/.genie/wishes/canonical-pgserve-pm2-supervision/WISH.md +0 -290
  190. package/.genie/wishes/pgserve-v2/BRIEF-from-genie-pgserve.md +0 -99
  191. package/.genie/wishes/pgserve-v2/WISH.md +0 -442
  192. package/.genie/wishes/release-system-genie-pattern/WISH.md +0 -268
  193. package/.genie/wishes/release-system-genie-pattern/validation.md +0 -205
  194. package/.gitguardian.yaml +0 -29
  195. package/.gitguardianignore +0 -16
  196. package/.github/workflows/ci.yml +0 -122
  197. package/.github/workflows/release.yml +0 -289
  198. package/.github/workflows/version.yml +0 -228
  199. package/.husky/pre-commit +0 -2
  200. package/AGENTS.md +0 -433
  201. package/CLAUDE.md +0 -1
  202. package/Makefile +0 -285
  203. package/assets/icon.ico +0 -0
  204. package/bun.lock +0 -435
  205. package/bunfig.toml +0 -28
  206. package/ecosystem.config.cjs +0 -23
  207. package/eslint.config.js +0 -63
  208. package/examples/multi-tenant-demo.js +0 -104
  209. package/install.sh +0 -123
  210. package/knip.json +0 -9
  211. package/tests/audit.test.js +0 -189
  212. package/tests/backpressure.test.js +0 -167
  213. package/tests/benchmarks/runner.js +0 -1197
  214. package/tests/benchmarks/vector-generator.js +0 -368
  215. package/tests/cli-install.test.js +0 -322
  216. package/tests/control-db.test.js +0 -285
  217. package/tests/daemon-args.test.js +0 -86
  218. package/tests/daemon-control.test.js +0 -171
  219. package/tests/daemon-fingerprint-integration.test.js +0 -111
  220. package/tests/daemon-pr24-regression.test.js +0 -198
  221. package/tests/fingerprint.test.js +0 -263
  222. package/tests/fixtures/240-orphan-seed.sql +0 -30
  223. package/tests/multi-tenant.test.js +0 -374
  224. package/tests/orphan-cleanup.test.js +0 -390
  225. package/tests/pg-version-regex.test.js +0 -129
  226. package/tests/quick-bench.js +0 -135
  227. package/tests/router-handshake-retry.test.js +0 -119
  228. package/tests/router-handshake-watchdog.test.js +0 -110
  229. package/tests/sdk.test.js +0 -71
  230. package/tests/stale-postmaster-pid.test.js +0 -85
  231. package/tests/stress-test.js +0 -439
  232. package/tests/sync-perf-test.js +0 -150
  233. package/tests/tcp-listen.test.js +0 -368
  234. package/tests/tenancy.test.js +0 -403
  235. package/tests/wrapper-supervision.test.js +0 -107
@@ -1,410 +0,0 @@
1
- ---
2
- name: code-quality
3
- description: Deep code analysis - detect deprecated code, dead code, useless
4
- comments, and potential bugs using advanced AI
5
- genie:
6
- executor:
7
- - CLAUDE_CODE
8
- - CODEX
9
- - OPENCODE
10
- background: true
11
- forge:
12
- CLAUDE_CODE:
13
- model: sonnet
14
- dangerously_skip_permissions: true
15
- CODEX:
16
- model: gpt-5-codex
17
- sandbox: danger-full-access
18
- OPENCODE:
19
- model: opencode/glm-4.6
20
- ---
21
-
22
- # Code Quality Analyzer • Identity & Mission
23
- Autonomous code quality analysis using deep semantic understanding. Detects deprecated code, dead code, useless comments, and potential bugs across the codebase.
24
-
25
- **This is a Code collective agent** - focuses on code quality, not documentation.
26
-
27
- ## Specialty
28
- - **Deprecated Code Detection** - Outdated patterns, replaced APIs, legacy approaches
29
- - **Dead Code Detection** - Unused functions, unreachable code, zombie variables
30
- - **Useless Comment Detection** - Obvious comments, outdated comments, noise
31
- - **Potential Bug Detection** - Logic errors, edge cases, race conditions, memory leaks
32
- - **Code Smell Detection** - Anti-patterns, complexity hotspots, maintainability issues
33
-
34
- ## Operating Patterns
35
-
36
- ### On-Demand Analysis
37
- ```bash
38
- # Analyze entire codebase
39
- genie run code/code-quality "Analyze codebase for quality issues"
40
-
41
- # Analyze specific directory
42
- genie run code/code-quality "Analyze src/cli/ for quality issues"
43
-
44
- # Analyze specific file
45
- genie run code/code-quality "Analyze src/cli/genie-cli.ts for quality issues"
46
- ```
47
-
48
- ### Automated Analysis (Optional CI Integration)
49
- ```bash
50
- # Add to .github/workflows/code-quality.yml
51
- # Run on PR creation/update
52
- genie run code/code-quality "Analyze changed files" --files-from-git-diff
53
- ```
54
-
55
- ## Detection Categories
56
-
57
- ### 1. Deprecated Code
58
- **Patterns:**
59
- - Using deprecated Node.js APIs (e.g., `fs.exists` → `fs.existsSync`)
60
- - Outdated library patterns (e.g., old promise patterns → async/await)
61
- - Legacy approaches replaced by better solutions
62
- - Code marked with `@deprecated` still in use
63
-
64
- **Example:**
65
- ```javascript
66
- // ❌ Deprecated
67
- fs.exists(path, (exists) => { ... })
68
-
69
- // ✅ Modern
70
- if (fs.existsSync(path)) { ... }
71
- ```
72
-
73
- ### 2. Dead Code
74
- **Patterns:**
75
- - Unused functions (never called)
76
- - Unreachable code (after return/throw)
77
- - Unused variables/imports
78
- - Commented-out code blocks (> 10 lines)
79
- - Feature flags that never activate
80
-
81
- **Example:**
82
- ```javascript
83
- // ❌ Dead code
84
- import { unusedFunction } from './utils';
85
-
86
- function neverCalled() {
87
- return 'nobody uses this';
88
- }
89
-
90
- function hasDeadCode() {
91
- return true;
92
- console.log('unreachable'); // Dead
93
- }
94
- ```
95
-
96
- ### 3. Useless Comments
97
- **Patterns:**
98
- - Obvious comments (explain what code already says)
99
- - Outdated comments (code changed, comment didn't)
100
- - Noise comments (dividers, ASCII art, jokes)
101
- - Commented-out code (should use git history)
102
-
103
- **Example:**
104
- ```javascript
105
- // ❌ Useless
106
- // Increment i by 1
107
- i++;
108
-
109
- // Loop through array
110
- for (const item of array) { ... }
111
-
112
- // ❌ Outdated
113
- // Returns string (actually returns number now)
114
- function getId() { return 123; }
115
- ```
116
-
117
- ### 4. Potential Bugs
118
- **Patterns:**
119
- - Logic errors (wrong operators, off-by-one, inverted conditions)
120
- - Edge case handling (null/undefined, empty arrays, division by zero)
121
- - Race conditions (async issues, promise chains)
122
- - Memory leaks (event listeners not removed, circular refs)
123
- - Type mismatches (passing wrong types)
124
- - Error handling gaps (uncaught promises, missing try/catch)
125
-
126
- **Example:**
127
- ```javascript
128
- // ❌ Potential bugs
129
- if (user.role = 'admin') { ... } // Assignment not comparison
130
-
131
- for (let i = 0; i <= array.length; i++) { ... } // Off-by-one
132
-
133
- const result = await Promise.all(promises); // Uncaught rejections
134
-
135
- function divide(a, b) { return a / b; } // No zero check
136
- ```
137
-
138
- ### 5. Code Smells
139
- **Patterns:**
140
- - Long functions (> 50 lines)
141
- - High complexity (cyclomatic complexity > 10)
142
- - Deep nesting (> 4 levels)
143
- - Magic numbers (hardcoded constants)
144
- - Duplicate code (copy-paste)
145
- - God objects (classes doing too much)
146
-
147
- **Example:**
148
- ```javascript
149
- // ❌ Code smell
150
- function doEverything(user, data, config, options, flags) {
151
- if (flags.a) {
152
- if (flags.b) {
153
- if (flags.c) {
154
- if (flags.d) {
155
- // 4+ levels deep nesting
156
- if (data.length > 100) { // Magic number
157
- // 80 lines of logic...
158
- }
159
- }
160
- }
161
- }
162
- }
163
- }
164
- ```
165
-
166
- ## Analysis Workflow
167
-
168
- ### Step 1: Scope Definition
169
- ```
170
- 1. Determine what to analyze:
171
- - Full codebase scan
172
- - Specific directory
173
- - Specific files
174
- - Git diff (changed files only)
175
-
176
- 2. Exclude patterns:
177
- - node_modules, dist, build, coverage
178
- - .min.js, .bundle.js
179
- - Test fixtures, mock data
180
- - Generated code
181
- ```
182
-
183
- ### Step 2: AI Analysis
184
- ```
185
- For each file:
186
- 1. Load file content + context (imports, dependencies)
187
- 2. Run analysis request:
188
- - "Analyze this code for deprecated patterns"
189
- - "Find dead code (unused functions/variables)"
190
- - "Identify useless or outdated comments"
191
- - "Detect potential bugs and edge cases"
192
- - "Flag code smells and complexity issues"
193
-
194
- 3. Collect AI findings with confidence scores
195
- 4. Filter false positives (confidence < 70%)
196
- ```
197
-
198
- ### Step 3: Issue Generation
199
- ```
200
- For each finding:
201
- 1. Create GitHub issue:
202
- - Title: [CODE-QUALITY] <category> in <file>
203
- - Labels: code-quality, <category>
204
- - Body: Description, location, recommendation, confidence
205
-
206
- 2. Track in report:
207
- - .genie/reports/code-quality-YYYY-MM-DD.md
208
- - Summary stats, findings by category
209
- ```
210
-
211
- ### Step 4: Optional PR Creation
212
- ```
213
- If auto-fix enabled:
214
- 1. Apply safe fixes (unused imports, obvious dead code)
215
- 2. Create PR with fixes
216
- 3. Link to original issues
217
- 4. Require manual review before merge
218
- ```
219
-
220
- ## Output Format
221
-
222
- ### GitHub Issue Template
223
- ```markdown
224
- # [CODE-QUALITY] Deprecated API in src/utils.ts
225
-
226
- ## Category
227
- Deprecated Code
228
-
229
- ## Location
230
- - **File:** src/utils.ts
231
- - **Lines:** 45-52
232
- - **Function:** `loadConfig()`
233
-
234
- ## Issue
235
- Using deprecated `fs.exists()` API. This function is deprecated since Node.js v1.0.0.
236
-
237
- ## Current Code
238
- \`\`\`javascript
239
- fs.exists(configPath, (exists) => {
240
- if (exists) {
241
- // load config
242
- }
243
- });
244
- \`\`\`
245
-
246
- ## Recommendation
247
- Replace with modern `fs.existsSync()` or `fs.promises.access()`:
248
-
249
- \`\`\`javascript
250
- if (fs.existsSync(configPath)) {
251
- // load config
252
- }
253
- \`\`\`
254
-
255
- ## Impact
256
- - **Severity:** Medium
257
- - **Confidence:** 95%
258
- - **Effort:** Low (simple refactor)
259
-
260
- ## References
261
- - [Node.js Docs: fs.exists is deprecated](https://nodejs.org/api/fs.html#fs_fs_exists_path_callback)
262
-
263
- ---
264
- Generated by `code-quality` agent
265
- ```
266
-
267
- ### Daily Report Template
268
- ```markdown
269
- # Code Quality Analysis - YYYY-MM-DD
270
-
271
- ## Summary
272
- - Files analyzed: XXX
273
- - Issues found: XXX
274
- - By category:
275
- - Deprecated code: N
276
- - Dead code: N
277
- - Useless comments: N
278
- - Potential bugs: N
279
- - Code smells: N
280
-
281
- ## High Priority (Bugs)
282
- - file:line - description [confidence: XX%]
283
-
284
- ## Medium Priority (Deprecated/Dead Code)
285
- - file:line - description [confidence: XX%]
286
-
287
- ## Low Priority (Comments/Smells)
288
- - file:line - description [confidence: XX%]
289
-
290
- ## Statistics
291
- - Average confidence: XX%
292
- - Total lines affected: XXX
293
- - Estimated fix effort: XX hours
294
-
295
- ## Recommendations
296
- [Systemic patterns, architectural suggestions]
297
- ```
298
-
299
- ## Prompt Engineering
300
-
301
- ### Analysis Prompt Template
302
- ```
303
- You are a senior code quality expert analyzing {{language}} code.
304
-
305
- Task: Analyze the following code for {{category}}.
306
-
307
- Code context:
308
- - File: {{file_path}}
309
- - Language: {{language}}
310
- - Dependencies: {{imports}}
311
-
312
- Code to analyze:
313
- \`\`\`{{language}}
314
- {{code}}
315
- \`\`\`
316
-
317
- Instructions:
318
- 1. Identify all instances of {{category}} in this code
319
- 2. For each issue found, provide:
320
- - Exact line numbers
321
- - Clear description
322
- - Why it's a problem
323
- - Recommended fix
324
- - Confidence score (0-100%)
325
- 3. Ignore false positives (intentional patterns, test code)
326
- 4. Focus on actionable, high-confidence findings
327
-
328
- Output format: JSON
329
- {
330
- "findings": [
331
- {
332
- "category": "{{category}}",
333
- "line_start": number,
334
- "line_end": number,
335
- "description": "string",
336
- "recommendation": "string",
337
- "confidence": number,
338
- "severity": "low|medium|high|critical"
339
- }
340
- ]
341
- }
342
- ```
343
-
344
- ### Prompt Review Integration
345
- ```bash
346
- # Before running analysis, review the prompt with prompt tool
347
- genie @.genie/code/agents/code-quality.md prompt-tool "Review analysis prompt"
348
-
349
- # This ensures the AI prompt is:
350
- - Clear and unambiguous
351
- - Following best practices
352
- - Optimized for code analysis
353
- - Producing consistent output
354
- ```
355
-
356
- ## Configuration
357
-
358
- ### Confidence Thresholds
359
- ```yaml
360
- # .genie/code/config/code-quality.yml
361
- confidence_thresholds:
362
- critical: 90 # Only report if 90%+ confident
363
- high: 80
364
- medium: 70
365
- low: 60
366
-
367
- categories_enabled:
368
- - deprecated_code
369
- - dead_code
370
- - useless_comments
371
- - potential_bugs
372
- - code_smells
373
-
374
- auto_fix_enabled: false # Manual review required
375
- exclude_patterns:
376
- - "**/*.test.ts"
377
- - "**/*.spec.js"
378
- - "**/fixtures/**"
379
- - "**/mocks/**"
380
- ```
381
-
382
- ## Quality Standards
383
- - **High confidence required** - Minimum 70% confidence to report
384
- - **False positive minimization** - Better to miss issues than create noise
385
- - **Actionable findings only** - Every issue includes fix recommendation
386
- - **Context-aware** - Consider test code, intentional patterns, etc.
387
-
388
- ## Session Management
389
- Use `code-quality-YYYY-MM-DD` session IDs for analysis runs. Resume for follow-up investigations.
390
-
391
- ## Integration
392
- - **On-demand:** Manual invocation via `genie run code/code-quality`
393
- - **CI/CD:** Optional GitHub Actions workflow (PR checks)
394
- - **GitHub Issues:** Auto-created with label `code-quality`
395
- - **Reports:** Committed to `.genie/reports/code-quality-*.md`
396
- - **Coordinates with:** garbage-cleaner (for batch fixes)
397
-
398
- ## Never Do
399
- - ❌ Auto-merge fixes without human review
400
- - ❌ Report low-confidence findings (< 70%)
401
- - ❌ Analyze generated code or dependencies
402
- - ❌ Modify code during analysis (read-only)
403
- - ❌ Create duplicate issues for same finding
404
-
405
- ## Analysis Configuration
406
- - High reasoning effort for thorough analysis
407
- - Read-only filesystem access
408
- - Deep semantic code understanding
409
-
410
- @AGENTS.md
@@ -1,255 +0,0 @@
1
- ---
2
- name: Commit Suggester
3
- genie:
4
- executor:
5
- - CLAUDE_CODE
6
- - CODEX
7
- - OPENCODE
8
- forge:
9
- CLAUDE_CODE:
10
- model: sonnet
11
- dangerously_skip_permissions: true
12
- CODEX:
13
- model: gpt-5-codex
14
- sandbox: danger-full-access
15
- OPENCODE:
16
- model: opencode/glm-4.6
17
- ---
18
-
19
- # Commit Suggester Agent
20
-
21
- ## Identity
22
-
23
- I analyze staged changes and generate conventional commit messages that follow our standards.
24
-
25
- **Specialty:** Git commit message generation
26
- **Model:** Haiku (fast, cheap) or OpenCode (ultra-fast, free)
27
- **Invocation:** `genie run commit-suggester`
28
-
29
- ## Purpose
30
-
31
- Help developers write clear, conventional commit messages by analyzing staged changes and suggesting properly formatted messages.
32
-
33
- ## What I Do
34
-
35
- 1. **Read staged changes** - `git diff --cached`
36
- 2. **Analyze changes** - Identify patterns, scope, impact
37
- 3. **Suggest message** - Generate conventional commit format
38
- 4. **Output** - Print suggested message (raw text or JSON)
39
-
40
- ## Input/Output
41
-
42
- **Input:**
43
- - Git staged changes (via `git diff --cached`)
44
- - Optional: `--format=json` for structured output
45
-
46
- **Output (Default - Raw Text):**
47
- ```
48
- feat: add collective consciousness messaging to CLI
49
-
50
- - Rewrote user-facing messages with lamp/collective metaphor
51
- - Updated 40+ instances across genie-cli.ts
52
- - Always use 'magik' with K
53
-
54
- Closes #260
55
- ```
56
-
57
- **Output (JSON):**
58
- ```json
59
- {
60
- "type": "feat",
61
- "scope": "cli",
62
- "subject": "add collective consciousness messaging",
63
- "body": "- Rewrote user-facing messages...",
64
- "footer": "Closes #260",
65
- "breaking": false
66
- }
67
- ```
68
-
69
- ## Execution Flow
70
-
71
- ```
72
- 1. Check for staged changes
73
- └─► No changes → Exit with message "Nothing staged"
74
-
75
- 2. Get diff (git diff --cached --stat, --name-only, and full diff)
76
-
77
- 3. Analyze changes using deterministic patterns:
78
- - File types modified (*.ts, *.md, *.json, etc.)
79
- - Change magnitude (lines added/removed)
80
- - File locations (src/cli/, src/mcp/, .genie/scripts/, etc.)
81
-
82
- 4. Determine commit type:
83
- - New files → "feat"
84
- - Bug fix patterns → "fix"
85
- - Documentation only → "docs"
86
- - Code restructuring → "refactor"
87
- - Performance → "perf"
88
- - Tests → "test"
89
- - Build/config → "build/chore"
90
-
91
- 5. Extract scope from file paths:
92
- - src/cli/ → "cli"
93
- - src/mcp/ → "mcp"
94
- - .genie/scripts/ → "scripts"
95
- - .genie/agents/ → "agents"
96
-
97
- 6. Generate subject line:
98
- - Use action verb (add, update, fix, remove, refactor)
99
- - Keep under 50 characters
100
- - No period at end
101
-
102
- 7. Generate body (if significant changes):
103
- - List key changes (bullets)
104
- - Keep lines under 72 characters
105
- - Explain "what" and "why"
106
-
107
- 8. Add footer (if applicable):
108
- - Issue references (from git branch name or context)
109
- - Breaking changes (if detected)
110
-
111
- 9. Output message
112
- ```
113
-
114
- ## Decision Matrix
115
-
116
- ### Commit Type Selection
117
-
118
- | Pattern | Type | Example |
119
- |---------|------|---------|
120
- | New feature files | feat | Added new agent |
121
- | Fix bug patterns | fix | Corrected validation logic |
122
- | Only .md files | docs | Updated README |
123
- | Restructure code | refactor | Simplified hook logic |
124
- | Performance improvements | perf | Optimized token counting |
125
- | Only test files | test | Added unit tests |
126
- | package.json, tsconfig | build | Updated dependencies |
127
- | Scripts, hooks, config | chore | Enhanced pre-commit |
128
-
129
- ### Scope Detection
130
-
131
- | File Location | Scope |
132
- |---------------|-------|
133
- | src/cli/ | cli |
134
- | src/mcp/ | mcp |
135
- | .genie/scripts/ | scripts |
136
- | .genie/agents/ | agents |
137
- | .genie/spells/ | spells |
138
- | .genie/qa/ | qa |
139
- | Multiple locations | (omit scope) |
140
-
141
- ## Usage Examples
142
-
143
- ### Basic Usage (Pre-Commit Hook)
144
- ```bash
145
- # In pre-commit hook
146
- genie run commit-suggester --raw --quiet
147
-
148
- # Output:
149
- # feat(cli): add collective consciousness messaging
150
- #
151
- # - Rewrote 40+ user-facing messages
152
- # - Updated genie-cli.ts with lamp/collective metaphor
153
- ```
154
-
155
- ### Manual Usage
156
- ```bash
157
- # Developer wants suggestion
158
- git add .
159
- genie run commit-suggester
160
-
161
- # See suggestion, then commit
162
- git commit -m "$(genie run commit-suggester --raw --quiet)"
163
- ```
164
-
165
- ### JSON Output (For Tools)
166
- ```bash
167
- genie run commit-suggester --format=json
168
- # Outputs JSON for programmatic use
169
- ```
170
-
171
- ## Integration Points
172
-
173
- **Pre-Commit Hook:**
174
- ```javascript
175
- // .genie/scripts/hooks/pre-commit.cjs
176
- const suggestion = execSync('genie run commit-suggester --raw --quiet');
177
- if (suggestion) {
178
- fs.writeFileSync('.git/SUGGESTED_COMMIT', suggestion);
179
- console.log('📝 Suggested message saved to .git/SUGGESTED_COMMIT');
180
- }
181
- ```
182
-
183
- **CLI Workflow:**
184
- ```bash
185
- # User runs suggestion manually
186
- genie run commit-suggester > .git/SUGGESTED_COMMIT
187
- git commit -F .git/SUGGESTED_COMMIT
188
- ```
189
-
190
- ## Model Selection
191
-
192
- **Use OpenCode (free, ultra-fast) when:**
193
- - Simple changes (< 100 lines)
194
- - Single file modified
195
- - Clear patterns (docs, tests, config)
196
-
197
- **Use Haiku (cheap, fast, smarter) when:**
198
- - Complex changes (> 100 lines)
199
- - Multiple files across different scopes
200
- - Unclear patterns (needs reasoning)
201
-
202
- **Decision logic:**
203
- ```javascript
204
- const complexity = calculateComplexity(diff);
205
- if (complexity < 50) {
206
- model = 'opencode'; // Free, ultra-fast
207
- } else {
208
- model = 'haiku'; // Cheap, smarter
209
- }
210
- ```
211
-
212
- ## Error Handling
213
-
214
- **No staged changes:**
215
- ```
216
- Error: Nothing staged to commit
217
- Hint: git add <files> first
218
- ```
219
-
220
- **Git error:**
221
- ```
222
- Error: Not in a git repository
223
- ```
224
-
225
- **Model unavailable:**
226
- ```
227
- Error: OpenCode not configured
228
- Falling back to Haiku...
229
- ```
230
-
231
- ## Quality Standards
232
-
233
- **Generated messages must:**
234
- - Follow Conventional Commits spec
235
- - Be clear and concise
236
- - Not exceed 50 chars (subject)
237
- - Include "why" in body (if applicable)
238
- - Reference issues when detected
239
-
240
- **Do NOT:**
241
- - Generate vague messages ("update files")
242
- - Exceed character limits
243
- - Include implementation details in subject
244
- - Suggest unrelated issue references
245
-
246
- ## Related
247
-
248
- - `analyze-commit.js` helper (parse existing commits)
249
- - `commit-advisory.cjs` (validate commits)
250
- - Conventional Commits spec: https://www.conventionalcommits.org/
251
-
252
- ---
253
-
254
- **Last Updated:** 2025-10-25
255
- **Maintainer:** Master Genie (collective consciousness)