@bookedsolid/reagent 0.7.1 → 0.10.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 (127) hide show
  1. package/README.md +277 -140
  2. package/agents/engineering/motion-designer-interactive.md +5 -4
  3. package/agents/engineering/pr-voice-reviewer.md +229 -0
  4. package/agents/engineering/qa-engineer-automation.md +5 -4
  5. package/agents/engineering/qa-engineer-manual.md +5 -4
  6. package/agents/engineering/qa-lead.md +5 -4
  7. package/agents/engineering/security-engineer-appsec.md +5 -4
  8. package/agents/engineering/security-engineer-compliance.md +5 -4
  9. package/agents/engineering/security-qa-engineer.md +5 -4
  10. package/agents/engineering/technical-writer.md +5 -4
  11. package/agents/product-owner.md +152 -0
  12. package/agents/reagent-orchestrator.md +8 -0
  13. package/commands/pm-status.md +230 -0
  14. package/commands/review-pr.md +197 -0
  15. package/dist/cli/commands/catalyze/gap-detector.d.ts.map +1 -1
  16. package/dist/cli/commands/catalyze/gap-detector.js +1 -3
  17. package/dist/cli/commands/catalyze/gap-detector.js.map +1 -1
  18. package/dist/cli/commands/daemon/index.d.ts +5 -0
  19. package/dist/cli/commands/daemon/index.d.ts.map +1 -0
  20. package/dist/cli/commands/daemon/index.js +59 -0
  21. package/dist/cli/commands/daemon/index.js.map +1 -0
  22. package/dist/cli/commands/daemon/restart.d.ts +10 -0
  23. package/dist/cli/commands/daemon/restart.d.ts.map +1 -0
  24. package/dist/cli/commands/daemon/restart.js +20 -0
  25. package/dist/cli/commands/daemon/restart.js.map +1 -0
  26. package/dist/cli/commands/daemon/start.d.ts +2 -0
  27. package/dist/cli/commands/daemon/start.d.ts.map +1 -0
  28. package/dist/cli/commands/daemon/start.js +143 -0
  29. package/dist/cli/commands/daemon/start.js.map +1 -0
  30. package/dist/cli/commands/daemon/status.d.ts +2 -0
  31. package/dist/cli/commands/daemon/status.d.ts.map +1 -0
  32. package/dist/cli/commands/daemon/status.js +90 -0
  33. package/dist/cli/commands/daemon/status.js.map +1 -0
  34. package/dist/cli/commands/daemon/stop.d.ts +2 -0
  35. package/dist/cli/commands/daemon/stop.d.ts.map +1 -0
  36. package/dist/cli/commands/daemon/stop.js +73 -0
  37. package/dist/cli/commands/daemon/stop.js.map +1 -0
  38. package/dist/cli/commands/init/claude-hooks.d.ts +1 -1
  39. package/dist/cli/commands/init/claude-hooks.d.ts.map +1 -1
  40. package/dist/cli/commands/init/claude-hooks.js +10 -4
  41. package/dist/cli/commands/init/claude-hooks.js.map +1 -1
  42. package/dist/cli/commands/init/index.d.ts.map +1 -1
  43. package/dist/cli/commands/init/index.js +5 -1
  44. package/dist/cli/commands/init/index.js.map +1 -1
  45. package/dist/cli/commands/init/policy.d.ts.map +1 -1
  46. package/dist/cli/commands/init/policy.js +21 -0
  47. package/dist/cli/commands/init/policy.js.map +1 -1
  48. package/dist/cli/commands/init/types.d.ts +16 -0
  49. package/dist/cli/commands/init/types.d.ts.map +1 -1
  50. package/dist/cli/index.js +9 -0
  51. package/dist/cli/index.js.map +1 -1
  52. package/dist/config/daemon-loader.d.ts +16 -0
  53. package/dist/config/daemon-loader.d.ts.map +1 -0
  54. package/dist/config/daemon-loader.js +76 -0
  55. package/dist/config/daemon-loader.js.map +1 -0
  56. package/dist/config/gateway-config.d.ts.map +1 -1
  57. package/dist/config/gateway-config.js +6 -0
  58. package/dist/config/gateway-config.js.map +1 -1
  59. package/dist/config/policy-loader.d.ts +27 -0
  60. package/dist/config/policy-loader.d.ts.map +1 -1
  61. package/dist/config/policy-loader.js +103 -10
  62. package/dist/config/policy-loader.js.map +1 -1
  63. package/dist/gateway/circuit-breaker.d.ts +60 -0
  64. package/dist/gateway/circuit-breaker.d.ts.map +1 -0
  65. package/dist/gateway/circuit-breaker.js +104 -0
  66. package/dist/gateway/circuit-breaker.js.map +1 -0
  67. package/dist/gateway/collision-detector.d.ts +31 -0
  68. package/dist/gateway/collision-detector.d.ts.map +1 -0
  69. package/dist/gateway/collision-detector.js +53 -0
  70. package/dist/gateway/collision-detector.js.map +1 -0
  71. package/dist/gateway/middleware/blocked-paths.js +2 -2
  72. package/dist/gateway/middleware/blocked-paths.js.map +1 -1
  73. package/dist/gateway/middleware/circuit-breaker.d.ts +12 -0
  74. package/dist/gateway/middleware/circuit-breaker.d.ts.map +1 -0
  75. package/dist/gateway/middleware/circuit-breaker.js +44 -0
  76. package/dist/gateway/middleware/circuit-breaker.js.map +1 -0
  77. package/dist/gateway/middleware/injection.d.ts +23 -0
  78. package/dist/gateway/middleware/injection.d.ts.map +1 -0
  79. package/dist/gateway/middleware/injection.js +129 -0
  80. package/dist/gateway/middleware/injection.js.map +1 -0
  81. package/dist/gateway/middleware/policy.js +2 -2
  82. package/dist/gateway/middleware/policy.js.map +1 -1
  83. package/dist/gateway/middleware/rate-limit.d.ts +13 -0
  84. package/dist/gateway/middleware/rate-limit.d.ts.map +1 -0
  85. package/dist/gateway/middleware/rate-limit.js +32 -0
  86. package/dist/gateway/middleware/rate-limit.js.map +1 -0
  87. package/dist/gateway/middleware/redact.d.ts.map +1 -1
  88. package/dist/gateway/middleware/redact.js +7 -0
  89. package/dist/gateway/middleware/redact.js.map +1 -1
  90. package/dist/gateway/middleware/result-size-cap.d.ts +14 -0
  91. package/dist/gateway/middleware/result-size-cap.d.ts.map +1 -0
  92. package/dist/gateway/middleware/result-size-cap.js +49 -0
  93. package/dist/gateway/middleware/result-size-cap.js.map +1 -0
  94. package/dist/gateway/native-tools.js +1 -1
  95. package/dist/gateway/native-tools.js.map +1 -1
  96. package/dist/gateway/rate-limiter.d.ts +47 -0
  97. package/dist/gateway/rate-limiter.d.ts.map +1 -0
  98. package/dist/gateway/rate-limiter.js +89 -0
  99. package/dist/gateway/rate-limiter.js.map +1 -0
  100. package/dist/gateway/server.d.ts.map +1 -1
  101. package/dist/gateway/server.js +27 -1
  102. package/dist/gateway/server.js.map +1 -1
  103. package/dist/gateway/tool-proxy.js +1 -1
  104. package/dist/gateway/tool-proxy.js.map +1 -1
  105. package/dist/types/daemon.d.ts +45 -0
  106. package/dist/types/daemon.d.ts.map +1 -0
  107. package/dist/types/daemon.js +2 -0
  108. package/dist/types/daemon.js.map +1 -0
  109. package/dist/types/gateway.d.ts +9 -0
  110. package/dist/types/gateway.d.ts.map +1 -1
  111. package/dist/types/policy.d.ts +1 -0
  112. package/dist/types/policy.d.ts.map +1 -1
  113. package/hooks/_lib/discord.sh +75 -0
  114. package/hooks/blocked-paths-enforcer.sh +0 -1
  115. package/hooks/changeset-security-gate.sh +143 -0
  116. package/hooks/commit-review-gate.sh +12 -4
  117. package/hooks/import-guard.sh +14 -0
  118. package/hooks/network-exfil-guard.sh +20 -2
  119. package/hooks/pr-issue-link-gate.sh +65 -0
  120. package/hooks/push-review-gate.sh +17 -2
  121. package/hooks/rate-limit-guard.sh +26 -2
  122. package/hooks/reagent-notify.sh +65 -0
  123. package/hooks/security-disclosure-gate.sh +146 -0
  124. package/husky/pre-push.sh +84 -0
  125. package/package.json +10 -2
  126. package/profiles/bst-internal.json +12 -2
  127. package/profiles/client-engagement.json +12 -2
@@ -0,0 +1,230 @@
1
+ Scan open PRs, report pipeline state, merge ready work to dev, and keep the staging promotion PR current.
2
+
3
+ ## Usage
4
+
5
+ ```
6
+ /pm-status
7
+ ```
8
+
9
+ No arguments. The command operates on the current repo derived from `gh repo view`.
10
+
11
+ ---
12
+
13
+ ## Step 1 — Check prerequisites
14
+
15
+ Before anything else:
16
+
17
+ 1. Read `.reagent/policy.yaml` — confirm autonomy level is L1 or higher. L0 blocks all writes; report and stop.
18
+ 2. Check for `.reagent/HALT` — if the file exists, stop immediately: "Agent operations frozen. Check .reagent/HALT."
19
+ 3. Verify `gh` CLI is available: `gh --version`
20
+ 4. Resolve the current repo: `gh repo view --json nameWithOwner --jq '.nameWithOwner'`
21
+
22
+ Store the result as `{owner}/{repo}` for all subsequent API calls.
23
+
24
+ ---
25
+
26
+ ## Step 2 — Scan open PRs
27
+
28
+ Fetch all open PRs in a single call:
29
+
30
+ ```bash
31
+ gh pr list \
32
+ --repo {owner}/{repo} \
33
+ --state open \
34
+ --json number,title,headRefName,baseRefName,statusCheckRollup,isDraft,mergeable,labels \
35
+ --limit 50
36
+ ```
37
+
38
+ Parse the JSON array and categorize each PR into exactly one bucket:
39
+
40
+ | Bucket | Criteria |
41
+ | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
42
+ | **release-pending** | `baseRefName == "main"` AND (`headRefName == "changeset-release/main"` OR title contains "version packages") |
43
+ | **staging-promotion** | `baseRefName == "staging"` AND `headRefName == "dev"` |
44
+ | **ready** | `baseRefName == "dev"` AND `isDraft == false` AND all entries in `statusCheckRollup` have `state == "SUCCESS"` AND `statusCheckRollup` is non-empty |
45
+ | **blocked** | `baseRefName == "dev"` AND `isDraft == false` AND any entry in `statusCheckRollup` has `state == "FAILURE"` or `state == "ERROR"` |
46
+ | **ci-pending** | `baseRefName == "dev"` AND `isDraft == false` AND any entry in `statusCheckRollup` has `state == "PENDING"` or `state == "IN_PROGRESS"` AND no entries are FAILURE/ERROR |
47
+ | **other** | anything that does not match the above |
48
+
49
+ A PR with an empty `statusCheckRollup` and `baseRefName == "dev"` falls into **ci-pending** — treat missing CI data as "not yet confirmed green".
50
+
51
+ Store the categorized lists for use in Step 3 and Step 4.
52
+
53
+ ---
54
+
55
+ ## Step 3 — Report current state
56
+
57
+ Print the following report. Omit sections that have no entries rather than printing empty headings.
58
+
59
+ ```
60
+ ## PM Status — {owner}/{repo}
61
+
62
+ ### Release Pipeline
63
+ [Release pending PR #{N}: "{title}" — {mergeable state, e.g. "MERGEABLE" or checks status}]
64
+ [Staging promotion PR #{N}: up to date | needs update]
65
+ [No staging promotion PR — create one after the first dev merge]
66
+
67
+ ### PRs Ready to Merge → dev
68
+ - PR #{N}: {title}
69
+
70
+ ### PRs Blocked
71
+ - PR #{N}: {title} — failing: {comma-separated check names with state FAILURE or ERROR}
72
+
73
+ ### PRs Still in CI
74
+ - PR #{N}: {title} — waiting on: {comma-separated check names with state PENDING or IN_PROGRESS}
75
+
76
+ ### Other PRs
77
+ - PR #{N}: {title} (base: {baseRefName} ← {headRefName})
78
+ ```
79
+
80
+ For the release pipeline line: if the release PR exists, print its number, title, and whether `statusCheckRollup` is all green. If no release PR exists, omit the release line entirely.
81
+
82
+ For the staging promotion line: if a staging promotion PR exists, print its number. If dev merges will happen in Step 4, mark it "needs update"; otherwise "up to date". If no staging promotion PR exists, print the "create one" placeholder.
83
+
84
+ ---
85
+
86
+ ## Step 4 — Take actions
87
+
88
+ Work through sub-steps in order. Each sub-step is conditional.
89
+
90
+ ### 4a — Merge ready PRs to dev
91
+
92
+ For each PR in the **ready** bucket, in ascending PR number order:
93
+
94
+ ```bash
95
+ gh pr merge {N} \
96
+ --repo {owner}/{repo} \
97
+ --merge \
98
+ --subject "{PR title}"
99
+ ```
100
+
101
+ After each merge succeeds, print: "Merged PR #{N} → dev: {title}"
102
+
103
+ Collect the merged PR numbers and titles as `NEWLY_MERGED` for use in 4b and 4c.
104
+
105
+ If a merge fails (non-zero exit), print the error and continue to the next PR — do not abort the entire run. Add the failed PR to a `MERGE_FAILURES` list and report it at the end.
106
+
107
+ ### 4b — Create staging promotion PR (if none exists)
108
+
109
+ Trigger condition: `NEWLY_MERGED` is non-empty AND no staging-promotion PR was found in Step 2.
110
+
111
+ Build a bullet list from `NEWLY_MERGED`:
112
+
113
+ ```
114
+ - PR #{N}: {title}
115
+ ```
116
+
117
+ Then run:
118
+
119
+ ```bash
120
+ gh pr create \
121
+ --repo {owner}/{repo} \
122
+ --base staging \
123
+ --head dev \
124
+ --title "chore: promote dev → staging" \
125
+ --body "$(cat <<'EOF'
126
+ ## Staging Promotion
127
+
128
+ This PR promotes the current `dev` branch to `staging` for pre-release validation.
129
+
130
+ ### Included work
131
+ {bullet list of NEWLY_MERGED PRs}
132
+
133
+ ### Checklist
134
+ - [ ] All CI checks passing on dev
135
+ - [ ] CHANGELOG reviewed
136
+ - [ ] No open security advisories blocking release
137
+
138
+ 🔁 Updated automatically by reagent PM workflow
139
+ EOF
140
+ )"
141
+ ```
142
+
143
+ On success, print: "Created staging promotion PR → {pr url}"
144
+
145
+ ### 4c — Update existing staging promotion PR
146
+
147
+ Trigger condition: `NEWLY_MERGED` is non-empty AND a staging-promotion PR was found in Step 2.
148
+
149
+ Steps:
150
+
151
+ 1. Fetch the current PR body:
152
+
153
+ ```bash
154
+ gh pr view {staging_pr_number} --repo {owner}/{repo} --json body --jq '.body'
155
+ ```
156
+
157
+ 2. Locate the `### Included work` section. Append the new entries from `NEWLY_MERGED` as additional bullet lines immediately before the next `###` heading (or end of body if none follows).
158
+
159
+ 3. Push the updated body:
160
+
161
+ ```bash
162
+ gh pr edit {staging_pr_number} \
163
+ --repo {owner}/{repo} \
164
+ --body "{updated body}"
165
+ ```
166
+
167
+ 4. For each PR in `NEWLY_MERGED`, post a comment:
168
+
169
+ ```bash
170
+ gh pr comment {staging_pr_number} \
171
+ --repo {owner}/{repo} \
172
+ --body "Added: PR #{N} — {title}"
173
+ ```
174
+
175
+ Print after each comment: "Updated staging promotion PR #{staging_pr_number} — added PR #{N}"
176
+
177
+ ### 4d — Release PR advisory
178
+
179
+ Trigger condition: a release-pending PR exists AND all entries in its `statusCheckRollup` have `state == "SUCCESS"`.
180
+
181
+ Print:
182
+
183
+ ```
184
+ Release PR #{N} is green and ready to merge. Run:
185
+ gh pr merge {N} --repo {owner}/{repo} --merge
186
+ to cut the release.
187
+ ```
188
+
189
+ Do NOT merge the release PR automatically. Always require explicit human approval before the release PR is touched.
190
+
191
+ If the release PR exists but checks are not all green, print:
192
+ "Release PR #{N} is not yet green — waiting on CI before it can merge."
193
+
194
+ ---
195
+
196
+ ## Step 5 — Final summary
197
+
198
+ After all actions complete, print a one-block summary:
199
+
200
+ ```
201
+ --- PM Status Complete ---
202
+ Merged to dev: {count} PR(s) [{#N, #N, ...} or "none"]
203
+ Merge failures: {count} PR(s) [{#N, #N, ...} or "none"]
204
+ Staging PR: created | updated | unchanged | none
205
+ Release PR: green and ready | waiting on CI | none
206
+ ```
207
+
208
+ ---
209
+
210
+ ## Error handling
211
+
212
+ | Situation | Action |
213
+ | ------------------------------- | ------------------------------------------------------------------------------------------------- |
214
+ | HALT file present | Stop immediately — "Agent operations frozen. Check .reagent/HALT." |
215
+ | Autonomy level L0 | Stop — "L0 policy: all writes require explicit approval. Report only — no merges or PR creation." |
216
+ | `gh` not installed | Stop — "gh CLI not found. Install it and run gh auth login." |
217
+ | `gh repo view` fails | Stop — "Cannot resolve repo. Confirm this directory has a GitHub remote." |
218
+ | PR list returns empty | Report "No open PRs found." and exit cleanly |
219
+ | Merge fails on one PR | Log the error, continue with remaining ready PRs, report failures in summary |
220
+ | Staging PR body parse fails | Skip append, post a comment with the raw list instead, warn the user |
221
+ | Release PR auto-merge attempted | Block — this command never auto-merges release PRs regardless of instruction |
222
+
223
+ ---
224
+
225
+ ## Notes
226
+
227
+ - This command reads CI state from `statusCheckRollup` at the time it runs. Re-run after CI completes to pick up newly green PRs.
228
+ - The `--merge` strategy is used for all dev merges to preserve a linear history on dev. If the repo enforces squash or rebase, adjust accordingly.
229
+ - Draft PRs are never merged regardless of CI state — mark them ready for review first.
230
+ - The staging promotion PR body uses `🔁` to signal it was machine-generated. Do not remove this marker — it is used to identify the PR in future runs.
@@ -0,0 +1,197 @@
1
+ Fetch a pull request diff, run code-reviewer analysis, translate findings to owner voice, and post a single batched inline GitHub review.
2
+
3
+ ## Usage
4
+
5
+ ```
6
+ /review-pr <PR#> [--tier standard|senior|chief] [--task T-NNN]
7
+ ```
8
+
9
+ **Arguments:**
10
+
11
+ - `<PR#>` — pull request number (required)
12
+ - `--tier` — review depth: `standard` (default), `senior`, or `chief`
13
+ - `--task` — optional JSONL task ID to mark `completed` after the review posts (e.g. `--task T-047`)
14
+
15
+ ---
16
+
17
+ ## Step 1 — Check prerequisites
18
+
19
+ Before anything else:
20
+
21
+ 1. Read `.reagent/policy.yaml` — confirm autonomy level is L1 or higher
22
+ 2. Check for `.reagent/HALT` — if present, stop immediately
23
+ 3. Verify `gh` CLI is available: `gh --version`
24
+ 4. Confirm caller is in a git repo with a GitHub remote: `gh repo view --json nameWithOwner`
25
+
26
+ Extract `owner/repo` for use in API calls.
27
+
28
+ ---
29
+
30
+ ## Step 2 — Fetch PR context
31
+
32
+ Run these in parallel:
33
+
34
+ ```bash
35
+ gh pr view <PR#> --json title,body,headRefName,baseRefName,state,commits
36
+ gh pr diff <PR#>
37
+ gh pr view <PR#> --json commits --jq '.commits[-1].oid'
38
+ ```
39
+
40
+ Store:
41
+
42
+ - `COMMIT_SHA` — the latest commit OID (use in the review payload)
43
+ - `PR_TITLE` — for context
44
+ - `PR_DIFF` — the full diff text (pass to code-reviewer)
45
+
46
+ If the PR is merged or closed, warn the user: "PR #N is already closed — review will post but won't block a merge."
47
+
48
+ If `gh pr diff` returns an empty diff, stop and report: "Empty diff — nothing to review."
49
+
50
+ ---
51
+
52
+ ## Step 3 — Run code-reviewer analysis
53
+
54
+ Invoke the `code-reviewer` agent with the diff and the specified tier.
55
+
56
+ **Pass this context to code-reviewer:**
57
+
58
+ ```
59
+ Tier: <standard|senior|chief>
60
+
61
+ Review the following git diff and produce structured findings as a JSON array.
62
+ Each finding must include:
63
+ - file: string (file path from diff header)
64
+ - line: number (line number in the NEW file)
65
+ - start_line?: number (for multi-line spans, the start line)
66
+ - severity: "high" | "medium" | "low"
67
+ - issue: string (the specific problem — no hedging)
68
+ - suggestion_code?: string (the corrected code, if applicable)
69
+
70
+ Output ONLY the JSON array. No prose. No markdown wrapper. Example:
71
+ [
72
+ {
73
+ "file": "src/gateway/middleware/chain.ts",
74
+ "line": 42,
75
+ "severity": "high",
76
+ "issue": "Non-null assertion will throw if upstream returns undefined",
77
+ "suggestion_code": "const result = upstream ?? defaultValue;"
78
+ }
79
+ ]
80
+
81
+ If there are no findings, output: []
82
+
83
+ DIFF:
84
+ <paste full diff here>
85
+ ```
86
+
87
+ Capture the JSON array output as `FINDINGS`.
88
+
89
+ If `FINDINGS` is `[]` or empty, set `FINDINGS = []` and proceed — the voice reviewer will write a clean summary.
90
+
91
+ ---
92
+
93
+ ## Step 4 — Run pr-voice-reviewer
94
+
95
+ Invoke the `pr-voice-reviewer` agent with `FINDINGS` and `COMMIT_SHA`.
96
+
97
+ **Pass this context:**
98
+
99
+ ```
100
+ Commit SHA: <COMMIT_SHA>
101
+
102
+ Translate the following code-reviewer findings into a GitHub review payload
103
+ written in the project owner's voice. Follow the pr-voice-reviewer agent
104
+ instructions exactly.
105
+
106
+ Findings:
107
+ <FINDINGS as JSON>
108
+ ```
109
+
110
+ Capture the full JSON payload as `REVIEW_PAYLOAD`.
111
+
112
+ Validate the payload has:
113
+
114
+ - `commit_id` matching `COMMIT_SHA`
115
+ - `body` (non-empty string)
116
+ - `event` one of: `REQUEST_CHANGES`, `COMMENT`, `APPROVE`
117
+ - `comments` array (may be empty if findings were empty)
118
+
119
+ ---
120
+
121
+ ## Step 5 — Post batched review
122
+
123
+ Post the review in a single API call:
124
+
125
+ ```bash
126
+ gh api repos/{owner}/{repo}/pulls/<PR#>/reviews \
127
+ --method POST \
128
+ --input - <<'PAYLOAD'
129
+ <REVIEW_PAYLOAD as JSON>
130
+ PAYLOAD
131
+ ```
132
+
133
+ On success (HTTP 200/201):
134
+
135
+ - Report: "Review posted — <event> on PR #N (<N> inline comments)"
136
+ - Print the review URL from the response (`html_url`)
137
+
138
+ On failure:
139
+
140
+ - Print the full error response
141
+ - Do NOT retry automatically — report to user and stop
142
+
143
+ ---
144
+
145
+ ## Step 6 — Close task (if --task was provided)
146
+
147
+ If `--task T-NNN` was passed, call `task_update` to mark it resolved:
148
+
149
+ ```
150
+ task_update({
151
+ id: "<T-NNN>",
152
+ status: "completed",
153
+ commit_ref: "<COMMIT_SHA>",
154
+ description: "Code review posted — <N> findings on PR #<PR#>. See <html_url>"
155
+ })
156
+ ```
157
+
158
+ If `task_update` fails (task not found, MCP unavailable), warn the user but do not fail the overall command — the review already posted.
159
+
160
+ ---
161
+
162
+ ## Step 7 — Report summary
163
+
164
+ Output a clean summary:
165
+
166
+ ```
167
+ PR #<N>: <title>
168
+ Tier: <standard|senior|chief>
169
+ Findings: <count> (<high> high, <medium> medium, <low> low)
170
+ Event: REQUEST_CHANGES | COMMENT | APPROVE
171
+ Review: <html_url>
172
+ Task: T-NNN → completed (or "no task linked")
173
+ ```
174
+
175
+ ---
176
+
177
+ ## Error handling
178
+
179
+ | Situation | Action |
180
+ | ---------------------------------- | ------------------------------------------------------------------ |
181
+ | PR not found | Stop — "PR #N not found. Check the number and repo." |
182
+ | HALT file present | Stop — "Agent operations frozen. Check .reagent/HALT." |
183
+ | Empty diff | Stop — "Empty diff — nothing to review." |
184
+ | code-reviewer returns invalid JSON | Stop — "code-reviewer output was not valid JSON. Raw output: ..." |
185
+ | GitHub API error | Stop — print full error, do not retry |
186
+ | Already reviewed this commit | Warn but continue — GitHub allows multiple reviews per commit |
187
+ | task_update fails | Warn but continue — review already posted; close the task manually |
188
+ | --task references unknown task ID | Warn but continue — skip the update, don't block the review |
189
+
190
+ ---
191
+
192
+ ## Notes
193
+
194
+ - GitHub suggestion syntax in comment bodies renders as an "Apply suggestion" button in the PR UI. The pr-voice-reviewer agent handles this formatting.
195
+ - Multi-line comments require both `start_line` and `line` in the comments array. The `start_line` must be less than `line`. If they're equal, omit `start_line`.
196
+ - The review posts as the authenticated `gh` user — make sure `gh auth status` shows the correct account before running.
197
+ - For large diffs (>500 lines), the code-reviewer may miss context across files. Consider running `--tier senior` or `--tier chief` for better coverage.
@@ -1 +1 @@
1
- {"version":3,"file":"gap-detector.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/catalyze/gap-detector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAO,WAAW,EAAE,MAAM,YAAY,CAAC;AAgXlE;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,aAAa,GAAG,WAAW,CA0C/D"}
1
+ {"version":3,"file":"gap-detector.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/catalyze/gap-detector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAO,WAAW,EAAE,MAAM,YAAY,CAAC;AA8WlE;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,aAAa,GAAG,WAAW,CA0C/D"}
@@ -68,8 +68,6 @@ function detectAstroGaps(analysis) {
68
68
  });
69
69
  }
70
70
  // Gate: astro check
71
- const scripts = analysis.targetDir ? {} : {};
72
- void scripts; // Placeholder — real scripts are read during stack analysis
73
71
  gaps.push({
74
72
  id: nextId(),
75
73
  severity: 'critical',
@@ -353,7 +351,7 @@ export function detectGaps(analysis) {
353
351
  gaps,
354
352
  totalRecommendedHooks: BASE_HOOKS.length,
355
353
  installedHookCount: analysis.installedHooks.length,
356
- totalRecommendedGates: 5, // Base estimate — varies by project type
354
+ totalRecommendedGates: gaps.filter((g) => g.category === 'gate').length,
357
355
  };
358
356
  }
359
357
  //# sourceMappingURL=gap-detector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gap-detector.js","sourceRoot":"","sources":["../../../../src/cli/commands/catalyze/gap-detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gap-detector.js","sourceRoot":"","sources":["../../../../src/cli/commands/catalyze/gap-detector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Entry point for `reagent daemon <subcommand> [options]`.
3
+ */
4
+ export declare function runDaemon(args: string[]): void;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/daemon/index.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CA0B9C"}
@@ -0,0 +1,59 @@
1
+ import { runDaemonStart } from './start.js';
2
+ import { runDaemonStop } from './stop.js';
3
+ import { runDaemonStatus } from './status.js';
4
+ import { runDaemonRestart } from './restart.js';
5
+ /**
6
+ * Entry point for `reagent daemon <subcommand> [options]`.
7
+ */
8
+ export function runDaemon(args) {
9
+ const [sub, ...rest] = args;
10
+ if (!sub || sub === 'help' || sub === '--help' || sub === '-h') {
11
+ printDaemonHelp();
12
+ return;
13
+ }
14
+ switch (sub) {
15
+ case 'start':
16
+ runDaemonStart(rest);
17
+ break;
18
+ case 'stop':
19
+ runDaemonStop(rest);
20
+ break;
21
+ case 'status':
22
+ runDaemonStatus(rest);
23
+ break;
24
+ case 'restart':
25
+ runDaemonRestart(rest);
26
+ break;
27
+ default:
28
+ console.error(`\nUnknown daemon subcommand: ${sub}`);
29
+ printDaemonHelp();
30
+ process.exit(1);
31
+ }
32
+ }
33
+ function printDaemonHelp() {
34
+ console.log(`
35
+ reagent daemon — persistent HTTP/SSE multi-project MCP gateway
36
+
37
+ Usage:
38
+ reagent daemon <subcommand> [options]
39
+
40
+ Subcommands:
41
+ start Start the daemon in the background
42
+ stop Stop the running daemon
43
+ status Show daemon health and active sessions
44
+ restart Gracefully restart the daemon
45
+
46
+ Options for start:
47
+ --port <port> Override the listen port (default: 7777)
48
+ --bind <addr> Override the bind address (default: 127.0.0.1)
49
+ --foreground Run in foreground instead of backgrounding
50
+
51
+ Examples:
52
+ reagent daemon start
53
+ reagent daemon start --port 8888
54
+ reagent daemon status
55
+ reagent daemon stop
56
+ reagent daemon restart
57
+ `);
58
+ }
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/commands/daemon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAE5B,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC/D,eAAe,EAAE,CAAC;QAClB,OAAO;IACT,CAAC;IAED,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,OAAO;YACV,cAAc,CAAC,IAAI,CAAC,CAAC;YACrB,MAAM;QACR,KAAK,MAAM;YACT,aAAa,CAAC,IAAI,CAAC,CAAC;YACpB,MAAM;QACR,KAAK,QAAQ;YACX,eAAe,CAAC,IAAI,CAAC,CAAC;YACtB,MAAM;QACR,KAAK,SAAS;YACZ,gBAAgB,CAAC,IAAI,CAAC,CAAC;YACvB,MAAM;QACR;YACE,OAAO,CAAC,KAAK,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;YACrD,eAAe,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;CAuBb,CAAC,CAAC;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Graceful restart: stop the running daemon (SIGTERM + poll for exit),
3
+ * then start a fresh instance once the process has actually exited.
4
+ *
5
+ * runDaemonStop accepts an onDone callback that fires only after the daemon
6
+ * process is confirmed dead, preventing the new instance from racing the old
7
+ * one for the port binding.
8
+ */
9
+ export declare function runDaemonRestart(args: string[]): void;
10
+ //# sourceMappingURL=restart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restart.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/daemon/restart.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAQrD"}
@@ -0,0 +1,20 @@
1
+ import { runDaemonStop } from './stop.js';
2
+ import { runDaemonStart } from './start.js';
3
+ /**
4
+ * Graceful restart: stop the running daemon (SIGTERM + poll for exit),
5
+ * then start a fresh instance once the process has actually exited.
6
+ *
7
+ * runDaemonStop accepts an onDone callback that fires only after the daemon
8
+ * process is confirmed dead, preventing the new instance from racing the old
9
+ * one for the port binding.
10
+ */
11
+ export function runDaemonRestart(args) {
12
+ console.log('\nRestarting reagent daemon...');
13
+ runDaemonStop([], () => {
14
+ // Brief pause so the OS can release the port binding before re-launch.
15
+ setTimeout(() => {
16
+ runDaemonStart(args);
17
+ }, 200);
18
+ });
19
+ }
20
+ //# sourceMappingURL=restart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restart.js","sourceRoot":"","sources":["../../../../src/cli/commands/daemon/restart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAc;IAC7C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE;QACrB,uEAAuE;QACvE,UAAU,CAAC,GAAG,EAAE;YACd,cAAc,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runDaemonStart(args: string[]): void;
2
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/daemon/start.ts"],"names":[],"mappings":"AAiFA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CA4FnD"}