gennady 0.8.4-draft.2 → 0.8.4-draft.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ai/directives/sdd-v2/root.directive.xml +36 -3
- package/ai/directives/sdd-v2/router.directive.xml +22 -1
- package/ai/kit/templates/sdd-v2/root.directive.hbs +11 -3
- package/ai/kit/templates/sdd-v2/router.directive.hbs +22 -1
- package/ai/skills/agent-inbox/SKILL.md +1 -1
- package/ai/skills/sdd/SKILL.md +5 -3
- package/ai/skills/sdd-audit/SKILL.md +5 -2
- package/ai/skills/sdd-check/SKILL.md +2 -2
- package/ai/skills/sdd-code-review/SKILL.md +4 -1
- package/ai/skills/sdd-critic/SKILL.md +5 -2
- package/ai/skills/sdd-execute/SKILL.md +5 -2
- package/ai/skills/sdd-reconcile/SKILL.md +5 -2
- package/ai/skills/sdd-scaffold/SKILL.md +5 -2
- package/dist/ai/directives/sdd-v2/root.directive.xml +36 -3
- package/dist/ai/directives/sdd-v2/router.directive.xml +22 -1
- package/dist/ai/kit/templates/sdd-v2/root.directive.hbs +11 -3
- package/dist/ai/kit/templates/sdd-v2/router.directive.hbs +22 -1
- package/dist/ai/skills/agent-inbox/SKILL.md +1 -1
- package/dist/ai/skills/sdd/SKILL.md +5 -3
- package/dist/ai/skills/sdd-audit/SKILL.md +5 -2
- package/dist/ai/skills/sdd-check/SKILL.md +2 -2
- package/dist/ai/skills/sdd-code-review/SKILL.md +4 -1
- package/dist/ai/skills/sdd-critic/SKILL.md +5 -2
- package/dist/ai/skills/sdd-execute/SKILL.md +5 -2
- package/dist/ai/skills/sdd-reconcile/SKILL.md +5 -2
- package/dist/ai/skills/sdd-scaffold/SKILL.md +5 -2
- package/dist/chunks/{classify-mr-stage.logic-BiCHTmPp.js → classify-mr-stage.logic-CazmQDwZ.js} +2 -2
- package/dist/chunks/{config-index-9VHWSDQD.js → config-index-DU8-FEjq.js} +1 -1
- package/dist/chunks/{devtools-b0DwO1x_.js → devtools-1JmXJjUG.js} +1 -1
- package/dist/chunks/{eval.cmd-CwNPaNJd.js → eval.cmd-CBANnOFG.js} +1 -1
- package/dist/chunks/{help-D5cXtdMI.js → help-DVloaFF5.js} +1 -1
- package/dist/chunks/{index-BVnJEutp.js → index-2xhpqJtd.js} +2 -2
- package/dist/chunks/{index-RR5OUxje.js → index-AxsLBUAx.js} +14 -14
- package/dist/chunks/{index-CUkeTGqM.js → index-B7sydB0W.js} +2 -2
- package/dist/chunks/{index-CMCn9ErF.js → index-BKxk4zOz.js} +2 -2
- package/dist/chunks/{index-Db13NlHh.js → index-BNMmX_Mv.js} +21 -21
- package/dist/chunks/{index-CmQO-RmM.js → index-BPzldG3a.js} +2 -2
- package/dist/chunks/{index-BOQl7F_Z.js → index-BQlFDvKW.js} +2 -2
- package/dist/chunks/{index-RzkvIfJQ.js → index-Baq7RL1L.js} +3 -3
- package/dist/chunks/index-BbPiwvY9.js +2 -0
- package/dist/chunks/{index-ClJLPEUB.js → index-BreGNLJ_.js} +1 -1
- package/dist/chunks/{index-DjSafAkN.js → index-BslPwGtM.js} +2 -2
- package/dist/chunks/{index-DiMFxS0z.js → index-BtCUN2fZ.js} +16 -16
- package/dist/chunks/{index-CS0VbiLD.js → index-C10-EOdB.js} +1 -1
- package/dist/chunks/{index-2BOEcJIa.js → index-C4JmZLaj.js} +2 -2
- package/dist/chunks/index-CA-JKLr4.js +2 -0
- package/dist/chunks/{index-43GiH--T.js → index-CG_jJZVu.js} +2 -2
- package/dist/chunks/{index-BdkFKsMm.js → index-CGyP2uDE.js} +3 -3
- package/dist/chunks/{index-BOKv0b01.js → index-CPl1s9XJ.js} +2 -2
- package/dist/chunks/{index-DIPrBH-4.js → index-CSxE4cEm.js} +9 -9
- package/dist/chunks/{index-Cm7U1-fU.js → index-CWR5EzXx.js} +2 -2
- package/dist/chunks/{index-BwN5llCR.js → index-Camql5kL.js} +2 -2
- package/dist/chunks/{index-Drh-J9O7.js → index-CdUiTipO.js} +7 -7
- package/dist/chunks/{index-Cn029KTN.js → index-Crg61pK5.js} +2 -2
- package/dist/chunks/{index-Dja2O-hV.js → index-Cv9ZYXso.js} +1 -1
- package/dist/chunks/{index-Ck8v_Gv7.js → index-D7ADMlG3.js} +1 -1
- package/dist/chunks/index-DNl2gC8l.js +158 -0
- package/dist/chunks/{index-BYIzl-Ut.js → index-DVJA0qVm.js} +36 -36
- package/dist/chunks/{index-BAEIZVx0.js → index-DcFJhkY1.js} +2 -2
- package/dist/chunks/{index-Dx5_CB2E.js → index-DdEd-L3x.js} +2 -2
- package/dist/chunks/{index-DVmqMmgb.js → index-DkGA1eW_.js} +32 -32
- package/dist/chunks/{index-3k7mPX1e.js → index-Dnwxlti3.js} +1 -1
- package/dist/chunks/{index-CrizvxOJ.js → index-DqdEJDi2.js} +2 -2
- package/dist/chunks/{index-BIPebtDl.js → index-DqiwmBt4.js} +1 -1
- package/dist/chunks/{index-DS4MhAw-.js → index-PfuqBWjY.js} +2 -2
- package/dist/chunks/{index-BmFT1Kx2.js → index-SVP6RfVl.js} +2 -2
- package/dist/chunks/{index-CDxV4b81.js → index-Y8wu48Q0.js} +1 -1
- package/dist/chunks/index-_ewSKppm.js +2 -0
- package/dist/chunks/{index-Ctcr_Qeu.js → index-aBVtCLIJ.js} +2 -2
- package/dist/chunks/index-dNdz9j6d.js +2 -0
- package/dist/chunks/{index-BFUkVkSo.js → index-gskOpu3H.js} +16 -16
- package/dist/chunks/{index-CXpkT25O.js → index-pBSLMn5Q.js} +3 -3
- package/dist/chunks/index-sqPhX5Io.js +2 -0
- package/dist/chunks/{index-BzmR4Es2.js → index-vfrjhUD1.js} +39 -39
- package/dist/chunks/{index-J2NvjjDV.js → index-xGF5XC_i.js} +2 -2
- package/dist/chunks/{run-review-command.logic-CA2Rjymb.js → run-review-command.logic-B9GoCxh-.js} +24 -24
- package/dist/chunks/{serve.cmd-RxYS6WoN.js → serve.cmd-UXkaeaPI.js} +2 -2
- package/dist/chunks/{services-Csd556Tv.js → services-BYCeGBlO.js} +4 -4
- package/dist/chunks/{shared-B5CTGvpG.js → shared-B3cXL2Np.js} +1178 -1117
- package/dist/chunks/{stats-index-BLztvK69.js → stats-index-AIAnnp9S.js} +2 -2
- package/dist/gennady.js +46 -46
- package/dist/index.js +4 -4
- package/dist/shared/sdd/ladder.d.ts +42 -0
- package/dist/shared/sdd/module-specs.d.ts +7 -0
- package/dist/shared/sdd/tracker.d.ts +9 -0
- package/package.json +1 -1
- package/dist/chunks/classify-mr-stage.logic-ClmhzQPQ.js +0 -53
- package/dist/chunks/config-index-RFeqlDWs.js +0 -104
- package/dist/chunks/devtools-p8tmPuLn.js +0 -79
- package/dist/chunks/eval.cmd-ewU5lcUY.js +0 -34
- package/dist/chunks/help-DzGnMNi2.js +0 -7
- package/dist/chunks/index--AXFi0ty.js +0 -89
- package/dist/chunks/index-64TSesTc.js +0 -186
- package/dist/chunks/index-9Gv5trS_.js +0 -125
- package/dist/chunks/index-B1DQIryA.js +0 -2
- package/dist/chunks/index-B1PiBeQ3.js +0 -2
- package/dist/chunks/index-B4rzuhkt.js +0 -183
- package/dist/chunks/index-B97HJjkg.js +0 -159
- package/dist/chunks/index-BF6qypm0.js +0 -131
- package/dist/chunks/index-BK84ZQsh.js +0 -128
- package/dist/chunks/index-BRVIirjj.js +0 -141
- package/dist/chunks/index-BXnryCGW.js +0 -96
- package/dist/chunks/index-BaZm7Otb.js +0 -2
- package/dist/chunks/index-Bhk746A2.js +0 -129
- package/dist/chunks/index-Bi-eY_dY.js +0 -164
- package/dist/chunks/index-BjumU69g.js +0 -2
- package/dist/chunks/index-BkWXcpXU.js +0 -16979
- package/dist/chunks/index-BlY4jQIA.js +0 -168
- package/dist/chunks/index-C0iy7GxD.js +0 -140
- package/dist/chunks/index-CCBTXczb.js +0 -56
- package/dist/chunks/index-CDAfkSrr.js +0 -2
- package/dist/chunks/index-CDHymWzC.js +0 -102
- package/dist/chunks/index-CNfXJAao.js +0 -2
- package/dist/chunks/index-CQsae1nq.js +0 -207
- package/dist/chunks/index-CVmd0prf.js +0 -2
- package/dist/chunks/index-CZuTNeNm.js +0 -2
- package/dist/chunks/index-CasNhhrL.js +0 -96
- package/dist/chunks/index-Ce7GWENF.js +0 -377
- package/dist/chunks/index-Cf-02TAg.js +0 -265
- package/dist/chunks/index-CfjQWSrh.js +0 -52
- package/dist/chunks/index-Chr7gBBz.js +0 -443
- package/dist/chunks/index-Ci875Zlg.js +0 -346
- package/dist/chunks/index-CwA6RzIB.js +0 -3793
- package/dist/chunks/index-D1dI63ej.js +0 -46
- package/dist/chunks/index-DCS32A2i.js +0 -663
- package/dist/chunks/index-DOFoNxvb.js +0 -131
- package/dist/chunks/index-DVkCEuws.js +0 -136
- package/dist/chunks/index-DkadaaXq.js +0 -658
- package/dist/chunks/index-Dn11CLtk.js +0 -7
- package/dist/chunks/index-Do3spFJT.js +0 -340
- package/dist/chunks/index-DrFRZ0Yg.js +0 -2
- package/dist/chunks/index-DvEQhXi2.js +0 -1054
- package/dist/chunks/index-GiS0x6jg.js +0 -90
- package/dist/chunks/index-NacvqeQ5.js +0 -69
- package/dist/chunks/index-RNJhFzdr.js +0 -227
- package/dist/chunks/index-R_vUB6CL.js +0 -2
- package/dist/chunks/index-TQft1s5H.js +0 -20
- package/dist/chunks/index-ZmQRP38W.js +0 -26969
- package/dist/chunks/index-jdOZ4AkD.js +0 -143
- package/dist/chunks/index-kNa21kUI.js +0 -279
- package/dist/chunks/index-v4AV9kAc.js +0 -108
- package/dist/chunks/run-review-command.logic-CU1Slmc_.js +0 -331
- package/dist/chunks/serve.cmd-dWu_k_G_.js +0 -162
- package/dist/chunks/services-CwvXl2MB.js +0 -46832
- package/dist/chunks/shared-DSZTUx5b.js +0 -4509
- package/dist/chunks/stats-index-H6ALcjxy.js +0 -66
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { s as e } from "./shared-
|
|
2
|
-
import { b as u, p, o as d } from "./services-
|
|
1
|
+
import { s as e } from "./shared-B3cXL2Np.js";
|
|
2
|
+
import { b as u, p, o as d } from "./services-BYCeGBlO.js";
|
|
3
3
|
function i(t) {
|
|
4
4
|
const r = t.find((n) => n.startsWith("--days=")), o = r ? Number(r.slice(7)) : (() => {
|
|
5
5
|
const n = t.indexOf("--days");
|
package/dist/gennady.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { a as s } from "./chunks/shared-
|
|
2
|
+
import { a as s } from "./chunks/shared-B3cXL2Np.js";
|
|
3
3
|
import "node:fs";
|
|
4
4
|
import "node:path";
|
|
5
5
|
import "node:url";
|
|
6
|
-
const r = "0.8.4-draft.
|
|
6
|
+
const r = "0.8.4-draft.3", i = /* @__PURE__ */ new Set(["help", "--help", "-h"]), o = /* @__PURE__ */ new Set(["--version", "-v"]), t = process.argv[2];
|
|
7
7
|
o.has(t) && (console.log(r), process.exit(0));
|
|
8
8
|
(!t || i.has(t)) && (await import("./chunks/help.cmd-B3JddBhg.js"), process.exit(0));
|
|
9
9
|
s({ name: "gennady", version: r });
|
|
@@ -36,7 +36,7 @@ if (p.some((a) => i.has(a))) {
|
|
|
36
36
|
), console.info(" exit 0 = все прогоны PASS; exit 1 = хотя бы один FAIL")) : await import("./chunks/help-Bb-4xa8Y.js").then((e) => e.printHelp()), a = !0;
|
|
37
37
|
break;
|
|
38
38
|
case "inbox-context":
|
|
39
|
-
await import("./chunks/help-
|
|
39
|
+
await import("./chunks/help-DVloaFF5.js").then((e) => e.printHelp()), a = !0;
|
|
40
40
|
break;
|
|
41
41
|
case "inbox-review-plan":
|
|
42
42
|
console.info("gennady inbox-review-plan — детерминированный план ревью MR"), console.info(
|
|
@@ -156,136 +156,136 @@ if (p.some((a) => i.has(a))) {
|
|
|
156
156
|
}
|
|
157
157
|
switch (t) {
|
|
158
158
|
case "cat":
|
|
159
|
-
await import("./chunks/index-
|
|
159
|
+
await import("./chunks/index-Crg61pK5.js");
|
|
160
160
|
break;
|
|
161
161
|
case "review":
|
|
162
|
-
await import("./chunks/index-
|
|
162
|
+
await import("./chunks/index-DdEd-L3x.js");
|
|
163
163
|
break;
|
|
164
164
|
case "vcs-reply":
|
|
165
|
-
await import("./chunks/index-
|
|
165
|
+
await import("./chunks/index-CA-JKLr4.js");
|
|
166
166
|
break;
|
|
167
167
|
case "review-verify":
|
|
168
|
-
await import("./chunks/index-
|
|
168
|
+
await import("./chunks/index-BreGNLJ_.js");
|
|
169
169
|
break;
|
|
170
170
|
case "review-issues":
|
|
171
|
-
await import("./chunks/index-
|
|
171
|
+
await import("./chunks/index-CG_jJZVu.js");
|
|
172
172
|
break;
|
|
173
173
|
case "inbox":
|
|
174
|
-
process.argv[3] === "config" ? await import("./chunks/config-index-
|
|
174
|
+
process.argv[3] === "config" ? await import("./chunks/config-index-DU8-FEjq.js") : process.argv[3] === "serve" ? await import("./chunks/serve.cmd-UXkaeaPI.js") : process.argv[3] === "stats" ? await import("./chunks/stats-index-AIAnnp9S.js") : process.argv[3] === "eval" ? await import("./chunks/eval.cmd-CBANnOFG.js") : await import("./chunks/index-Baq7RL1L.js");
|
|
175
175
|
break;
|
|
176
176
|
case "inbox-context":
|
|
177
|
-
await import("./chunks/index-
|
|
177
|
+
await import("./chunks/index-CGyP2uDE.js");
|
|
178
178
|
break;
|
|
179
179
|
case "inbox-review-plan":
|
|
180
|
-
await import("./chunks/index-
|
|
180
|
+
await import("./chunks/index-sqPhX5Io.js");
|
|
181
181
|
break;
|
|
182
182
|
case "inbox-eval":
|
|
183
|
-
await import("./chunks/index-
|
|
183
|
+
await import("./chunks/index-D7ADMlG3.js");
|
|
184
184
|
break;
|
|
185
185
|
case "vcs-worktree":
|
|
186
|
-
await import("./chunks/index-
|
|
186
|
+
await import("./chunks/index-2xhpqJtd.js");
|
|
187
187
|
break;
|
|
188
188
|
case "resolve-conflicts":
|
|
189
|
-
await import("./chunks/index-
|
|
189
|
+
await import("./chunks/index-BtCUN2fZ.js");
|
|
190
190
|
break;
|
|
191
191
|
case "commit":
|
|
192
|
-
await import("./chunks/index-
|
|
192
|
+
await import("./chunks/index-pBSLMn5Q.js");
|
|
193
193
|
break;
|
|
194
194
|
case "remote-console":
|
|
195
|
-
await import("./chunks/index-
|
|
195
|
+
await import("./chunks/index-DcFJhkY1.js");
|
|
196
196
|
break;
|
|
197
197
|
case "lint":
|
|
198
|
-
await import("./chunks/index-
|
|
198
|
+
await import("./chunks/index-DkGA1eW_.js");
|
|
199
199
|
break;
|
|
200
200
|
case "alt-opinion":
|
|
201
|
-
await import("./chunks/index-
|
|
201
|
+
await import("./chunks/index-DqiwmBt4.js");
|
|
202
202
|
break;
|
|
203
203
|
case "agent-mon":
|
|
204
|
-
await import("./chunks/index-
|
|
204
|
+
await import("./chunks/index-xGF5XC_i.js");
|
|
205
205
|
break;
|
|
206
206
|
case "sync":
|
|
207
|
-
await import("./chunks/index-
|
|
207
|
+
await import("./chunks/index-CSxE4cEm.js");
|
|
208
208
|
break;
|
|
209
209
|
case "sync-skills":
|
|
210
|
-
await import("./chunks/index-
|
|
210
|
+
await import("./chunks/index-vfrjhUD1.js");
|
|
211
211
|
break;
|
|
212
212
|
case "orient":
|
|
213
|
-
await import("./chunks/index-
|
|
213
|
+
await import("./chunks/index-Dnwxlti3.js");
|
|
214
214
|
break;
|
|
215
215
|
case "agents-rules":
|
|
216
216
|
await import("./chunks/index-CtJKSOL0.js");
|
|
217
217
|
break;
|
|
218
218
|
case "run":
|
|
219
|
-
await import("./chunks/index-
|
|
219
|
+
await import("./chunks/index-C10-EOdB.js");
|
|
220
220
|
break;
|
|
221
221
|
case "vcs-approve":
|
|
222
|
-
await import("./chunks/index-
|
|
222
|
+
await import("./chunks/index-BbPiwvY9.js");
|
|
223
223
|
break;
|
|
224
224
|
case "testcov":
|
|
225
|
-
await import("./chunks/index-
|
|
225
|
+
await import("./chunks/index-Cv9ZYXso.js");
|
|
226
226
|
break;
|
|
227
227
|
case "vcs-diff":
|
|
228
|
-
await import("./chunks/index-
|
|
228
|
+
await import("./chunks/index-B7sydB0W.js");
|
|
229
229
|
break;
|
|
230
230
|
case "vcs-pipeline":
|
|
231
|
-
await import("./chunks/index-
|
|
231
|
+
await import("./chunks/index-Camql5kL.js");
|
|
232
232
|
break;
|
|
233
233
|
case "vcs-todo":
|
|
234
|
-
await import("./chunks/index-
|
|
234
|
+
await import("./chunks/index-BKxk4zOz.js");
|
|
235
235
|
break;
|
|
236
236
|
case "vcs-job":
|
|
237
|
-
await import("./chunks/index-
|
|
237
|
+
await import("./chunks/index-BslPwGtM.js");
|
|
238
238
|
break;
|
|
239
239
|
case "vcs-job-log":
|
|
240
|
-
await import("./chunks/index-
|
|
240
|
+
await import("./chunks/index-DqdEJDi2.js");
|
|
241
241
|
break;
|
|
242
242
|
case "vcs-draft-note":
|
|
243
|
-
await import("./chunks/index-
|
|
243
|
+
await import("./chunks/index-dNdz9j6d.js");
|
|
244
244
|
break;
|
|
245
245
|
case "vcs-mr-create":
|
|
246
|
-
await import("./chunks/index-
|
|
246
|
+
await import("./chunks/index-BQlFDvKW.js");
|
|
247
247
|
break;
|
|
248
248
|
case "vcs-mr-edit":
|
|
249
|
-
await import("./chunks/index
|
|
249
|
+
await import("./chunks/index-CWR5EzXx.js");
|
|
250
250
|
break;
|
|
251
251
|
case "vcs-discussions":
|
|
252
|
-
await import("./chunks/index-
|
|
252
|
+
await import("./chunks/index-SVP6RfVl.js");
|
|
253
253
|
break;
|
|
254
254
|
case "vcs-react":
|
|
255
|
-
await import("./chunks/index-
|
|
255
|
+
await import("./chunks/index-_ewSKppm.js");
|
|
256
256
|
break;
|
|
257
257
|
case "sdd-state":
|
|
258
|
-
await import("./chunks/index-
|
|
258
|
+
await import("./chunks/index-DNl2gC8l.js");
|
|
259
259
|
break;
|
|
260
260
|
case "sdd-check":
|
|
261
|
-
await import("./chunks/index-
|
|
261
|
+
await import("./chunks/index-DVJA0qVm.js");
|
|
262
262
|
break;
|
|
263
263
|
case "sdd-extract":
|
|
264
|
-
await import("./chunks/index-
|
|
264
|
+
await import("./chunks/index-aBVtCLIJ.js");
|
|
265
265
|
break;
|
|
266
266
|
case "sdd-new":
|
|
267
|
-
await import("./chunks/index-
|
|
267
|
+
await import("./chunks/index-CPl1s9XJ.js");
|
|
268
268
|
break;
|
|
269
269
|
case "sdd-verify":
|
|
270
|
-
await import("./chunks/index-
|
|
270
|
+
await import("./chunks/index-Y8wu48Q0.js");
|
|
271
271
|
break;
|
|
272
272
|
case "sdd-log":
|
|
273
|
-
await import("./chunks/index-
|
|
273
|
+
await import("./chunks/index-BPzldG3a.js");
|
|
274
274
|
break;
|
|
275
275
|
case "sdd-sync":
|
|
276
|
-
await import("./chunks/index-
|
|
276
|
+
await import("./chunks/index-BNMmX_Mv.js");
|
|
277
277
|
break;
|
|
278
278
|
case "sdd-task":
|
|
279
|
-
await import("./chunks/index-
|
|
279
|
+
await import("./chunks/index-AxsLBUAx.js");
|
|
280
280
|
break;
|
|
281
281
|
case "sdd-migrate":
|
|
282
|
-
await import("./chunks/index-
|
|
282
|
+
await import("./chunks/index-CdUiTipO.js");
|
|
283
283
|
break;
|
|
284
284
|
case "mr-stats":
|
|
285
|
-
await import("./chunks/index-
|
|
285
|
+
await import("./chunks/index-PfuqBWjY.js");
|
|
286
286
|
break;
|
|
287
287
|
case "yagni":
|
|
288
|
-
await import("./chunks/index-
|
|
288
|
+
await import("./chunks/index-gskOpu3H.js");
|
|
289
289
|
break;
|
|
290
290
|
default:
|
|
291
291
|
await import("./chunks/help.cmd-B3JddBhg.js"), process.exit(0);
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { u,
|
|
2
|
-
import { G as y,
|
|
3
|
-
import { az as C, aA as O, aB as T, aC as L, ao as
|
|
1
|
+
import { u, aJ as m } from "./chunks/shared-B3cXL2Np.js";
|
|
2
|
+
import { G as y, aK as d, aL as A, aM as f, aN as R } from "./chunks/shared-B3cXL2Np.js";
|
|
3
|
+
import { az as C, aA as O, aB as T, aC as L, ao as $ } from "./chunks/services-BYCeGBlO.js";
|
|
4
4
|
class h {
|
|
5
5
|
/**
|
|
6
6
|
* @purpose Create an instance with default settings (Ollama local).
|
|
@@ -178,7 +178,7 @@ export {
|
|
|
178
178
|
f as parseGitDiff,
|
|
179
179
|
T as remoteConsoleClient,
|
|
180
180
|
L as serializeRemoteConsoleArg,
|
|
181
|
-
|
|
181
|
+
$ as startRemoteConsoleServer,
|
|
182
182
|
R as unguard,
|
|
183
183
|
u as unguardOrThrow
|
|
184
184
|
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/** @purpose Exact-name presence of the three gate scripts checked at the Infrastructure rung. */
|
|
2
|
+
export type LadderGates = {
|
|
3
|
+
/** @purpose `typecheck` npm script declared. */
|
|
4
|
+
typecheck: boolean;
|
|
5
|
+
/** @purpose `test` npm script declared. */
|
|
6
|
+
test: boolean;
|
|
7
|
+
/** @purpose `lint` npm script declared. */
|
|
8
|
+
lint: boolean;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* @purpose Deterministic inputs for the readiness ladder — a reduction of what sdd-state already gathers.
|
|
12
|
+
* @invariant `scopesApproved` <= `scopesTotal`; `tasksDone` <= `tasksTotal` whenever both are non-null.
|
|
13
|
+
*/
|
|
14
|
+
export type LadderInput = {
|
|
15
|
+
/** @purpose Project name parsed from the portal's `# ` heading, or null when absent/untitled. */
|
|
16
|
+
projectName: string | null;
|
|
17
|
+
/** @purpose Whether specs/README.md (the portal) exists. */
|
|
18
|
+
portalPresent: boolean;
|
|
19
|
+
/** @purpose Scope count from the portal Scopes table. */
|
|
20
|
+
scopesTotal: number;
|
|
21
|
+
/** @purpose Scopes whose status is `done` (approved). */
|
|
22
|
+
scopesApproved: number;
|
|
23
|
+
/** @purpose Count of module-classified spec files (MODULE_VISION marker) anywhere under specs/. */
|
|
24
|
+
moduleSpecCount: number;
|
|
25
|
+
/** @purpose Whether a parseable package.json exists — the rung reads not-configured when false. */
|
|
26
|
+
packageJsonPresent: boolean;
|
|
27
|
+
/** @purpose Exact-name presence of the three gate scripts. */
|
|
28
|
+
gates: LadderGates;
|
|
29
|
+
/** @purpose Total tickets across the project task rollup (specs/3-tasks.md), or null when absent/unparseable. */
|
|
30
|
+
tasksTotal: number | null;
|
|
31
|
+
/** @purpose Done tickets across the rollup; meaningful only when tasksTotal is non-null. */
|
|
32
|
+
tasksDone: number | null;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* @purpose Render the five-rung SDD readiness ladder card, verbatim text the router shows the operator.
|
|
36
|
+
* @invariant Rung order is fixed: Portal, Scopes, Modules, Infrastructure, Tasks — product rungs before infra.
|
|
37
|
+
* @invariant Infrastructure never blocks Scopes/Modules; the scan reaches it only once both are closed, gating only the path to Tasks.
|
|
38
|
+
* @invariant Icons are restricted to the fixed set ✅ ⬜ 🏗 👉.
|
|
39
|
+
* @param s Deterministic ladder inputs gathered by sdd-state.
|
|
40
|
+
* @returns The card as one multi-line string, ready to print verbatim.
|
|
41
|
+
*/
|
|
42
|
+
export declare function renderLadder(s: LadderInput): string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @purpose Recursively count `.spec.md` files under a specs/ tree that carry the MODULE_VISION marker.
|
|
3
|
+
* @invariant Read-only; a scope spec (SCOPE_TYPE, no MODULE_VISION) or the portal (README.md) is not counted.
|
|
4
|
+
* @param specsDir Absolute path to the project's specs/ directory.
|
|
5
|
+
* @returns Count of module-classified spec files; 0 when specsDir is absent or holds none.
|
|
6
|
+
*/
|
|
7
|
+
export declare function countModuleSpecs(specsDir: string): number;
|
|
@@ -68,3 +68,12 @@ export declare function recomputeRollupProgress(content: string, resolveRows: (i
|
|
|
68
68
|
text: string;
|
|
69
69
|
updated: string[];
|
|
70
70
|
};
|
|
71
|
+
/**
|
|
72
|
+
* @purpose Sum a rollup table's existing Tasks/Done cells as literal numbers — read-only, no recompute.
|
|
73
|
+
* @param content Full markdown of the rollup file (e.g. `specs/3-tasks.md`).
|
|
74
|
+
* @returns Summed `{totalTasks, totalDone}` across every row, or null when no rollup table exists.
|
|
75
|
+
*/
|
|
76
|
+
export declare function sumRollupProgress(content: string): {
|
|
77
|
+
totalTasks: number;
|
|
78
|
+
totalDone: number;
|
|
79
|
+
} | null;
|
package/package.json
CHANGED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { b as d } from "./shared-B5CTGvpG.js";
|
|
2
|
-
import { a as f } from "./services-Csd556Tv.js";
|
|
3
|
-
function h(s, r) {
|
|
4
|
-
const a = s?.trim().replace(/^https?:\/\//, "").replace(/\/+$/, "");
|
|
5
|
-
if (a) return a;
|
|
6
|
-
if (r?.trim())
|
|
7
|
-
return r.trim().replace(/^https?:\/\//, "").replace(/\/+$/, "");
|
|
8
|
-
const e = d();
|
|
9
|
-
if (!e?.host)
|
|
10
|
-
throw new Error(
|
|
11
|
-
"Не удалось определить GitLab host. Укажите --vcs-host=<host> или запустите команду в репозитории с настроенным origin remote."
|
|
12
|
-
);
|
|
13
|
-
return e.host;
|
|
14
|
-
}
|
|
15
|
-
function b(s, r) {
|
|
16
|
-
const a = process.env.GITLAB_PERSONAL_TOKEN;
|
|
17
|
-
if (!a)
|
|
18
|
-
throw new Error(
|
|
19
|
-
"Не найден токен доступа GitLab. Установите GITLAB_PERSONAL_TOKEN и повторите попытку."
|
|
20
|
-
);
|
|
21
|
-
const e = h(s, r);
|
|
22
|
-
if (!/gitlab/i.test(e))
|
|
23
|
-
throw new Error(`Провайдер "${e}" пока не поддерживается.`);
|
|
24
|
-
const n = `https://${e}/api/v4`;
|
|
25
|
-
return new f({ token: a, baseUrl: n });
|
|
26
|
-
}
|
|
27
|
-
function v(s) {
|
|
28
|
-
return s.flatMap((r) => r?.notes ?? []);
|
|
29
|
-
}
|
|
30
|
-
function p(s, r, a, e = !1) {
|
|
31
|
-
if (e && a === "reviewer") return "review_needed";
|
|
32
|
-
const n = (t) => Date.parse(t.updated_at ?? t.created_at ?? "") || 0, i = s.filter((t) => !t.system), u = i.filter((t) => t.author?.username === r), l = i.filter((t) => t.author?.username && t.author.username !== r), o = u.length > 0 ? Math.max(...u.map(n)) : null, c = l.length > 0 ? Math.max(...l.map(n)) : null;
|
|
33
|
-
return a === "reviewer" && o === null ? "review_needed" : c !== null && (o === null || c > o) || o !== null && s.filter((m) => m.system && m.body).some((m) => n(m) > o && /added \d+ commit/.test(m.body ?? "")) ? "reply_needed" : o !== null ? "awaiting_reply" : "idle";
|
|
34
|
-
}
|
|
35
|
-
function N(s) {
|
|
36
|
-
const r = (e) => Date.parse(e.updated_at ?? e.created_at ?? "") || 0, a = s.filter((e) => !e.system && e.author?.username);
|
|
37
|
-
return a.length === 0 ? "" : a.reduce((e, n) => r(n) >= r(e) ? n : e).author?.username ?? "";
|
|
38
|
-
}
|
|
39
|
-
function A(s, r, a, e = !1) {
|
|
40
|
-
const n = (t) => Date.parse(t.updated_at ?? t.created_at ?? "") || 0, i = s.filter((t) => !t.system), u = i.filter((t) => t.author?.username === r), l = u.length > 0 ? Math.max(...u.map(n)) : null, o = i.filter((t) => t.author?.username && t.author.username !== r).filter((t) => l === null || n(t) > l).map((t) => ({
|
|
41
|
-
author: t.author?.username ?? "",
|
|
42
|
-
at: t.updated_at ?? t.created_at ?? "",
|
|
43
|
-
body: t.body ?? ""
|
|
44
|
-
})), c = p(s, r, a, e);
|
|
45
|
-
return { stage: c, role: a, needsReview: c === "review_needed", openNotes: o };
|
|
46
|
-
}
|
|
47
|
-
export {
|
|
48
|
-
A as a,
|
|
49
|
-
b,
|
|
50
|
-
p as c,
|
|
51
|
-
v as f,
|
|
52
|
-
N as l
|
|
53
|
-
};
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { existsSync as w, statSync as v } from "node:fs";
|
|
2
|
-
import { isAbsolute as O } from "node:path";
|
|
3
|
-
import { createInterface as S } from "node:readline";
|
|
4
|
-
import { b as k, c as x, s as p, d as h, v as B } from "./services-Csd556Tv.js";
|
|
5
|
-
function b(e) {
|
|
6
|
-
const o = /* @__PURE__ */ new Map();
|
|
7
|
-
for (let t = 0; t < e.length; t++) {
|
|
8
|
-
const r = e[t];
|
|
9
|
-
if (r === "--set" && e[t + 1] !== void 0) {
|
|
10
|
-
const i = e[t + 1].indexOf("=");
|
|
11
|
-
i > 0 && o.set(e[t + 1].slice(0, i), e[t + 1].slice(i + 1)), t++;
|
|
12
|
-
} else if (r.startsWith("--set=")) {
|
|
13
|
-
const i = r.slice(6), s = i.indexOf("=");
|
|
14
|
-
s > 0 && o.set(i.slice(0, s), i.slice(s + 1));
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
return o;
|
|
18
|
-
}
|
|
19
|
-
function C(e) {
|
|
20
|
-
const o = [];
|
|
21
|
-
for (let t = 0; t < e.length; t++) {
|
|
22
|
-
const r = e[t];
|
|
23
|
-
r === "--unset" && e[t + 1] !== void 0 ? (o.push(e[t + 1]), t++) : r.startsWith("--unset=") && o.push(r.slice(8));
|
|
24
|
-
}
|
|
25
|
-
return o;
|
|
26
|
-
}
|
|
27
|
-
function d(e, o) {
|
|
28
|
-
return e.includes(o);
|
|
29
|
-
}
|
|
30
|
-
function m(e) {
|
|
31
|
-
return e ? O(e) ? w(e) ? v(e).isDirectory() ? null : `"${e}" не является директорией` : `Путь "${e}" не существует` : "reposBase должен быть абсолютным путём" : "reposBase не может быть пустым";
|
|
32
|
-
}
|
|
33
|
-
function F(e) {
|
|
34
|
-
return e ? null : "vcsHost не может быть пустым";
|
|
35
|
-
}
|
|
36
|
-
function l(e) {
|
|
37
|
-
return JSON.stringify({ ok: !1, error: "CONFIG", detail: e });
|
|
38
|
-
}
|
|
39
|
-
function u(e) {
|
|
40
|
-
const { valid: o } = B(e), { version: t, ...r } = e;
|
|
41
|
-
return JSON.stringify({ configured: o, ...r });
|
|
42
|
-
}
|
|
43
|
-
async function q() {
|
|
44
|
-
const e = process.argv.slice(2), o = k(e), t = x(o);
|
|
45
|
-
if (d(e, "--path"))
|
|
46
|
-
return console.info(t), 0;
|
|
47
|
-
if (d(e, "--init")) {
|
|
48
|
-
const s = S({ input: process.stdin, output: process.stdout }), n = (c) => new Promise((y) => s.question(c, y));
|
|
49
|
-
let f = "";
|
|
50
|
-
for (; ; ) {
|
|
51
|
-
f = await n("reposBase (абсолютный путь): ");
|
|
52
|
-
const c = m(f);
|
|
53
|
-
if (!c) break;
|
|
54
|
-
console.error(c);
|
|
55
|
-
}
|
|
56
|
-
let a = "";
|
|
57
|
-
for (; ; ) {
|
|
58
|
-
a = await n("vcsHost: ");
|
|
59
|
-
const c = F(a);
|
|
60
|
-
if (!c) break;
|
|
61
|
-
console.error(c);
|
|
62
|
-
}
|
|
63
|
-
s.close();
|
|
64
|
-
const g = { version: 1, reposBase: f, vcsHost: a };
|
|
65
|
-
try {
|
|
66
|
-
await p(t, g);
|
|
67
|
-
} catch (c) {
|
|
68
|
-
return console.error(l(c.message)), 1;
|
|
69
|
-
}
|
|
70
|
-
return console.info(u(g)), 0;
|
|
71
|
-
}
|
|
72
|
-
const r = b(e), i = C(e);
|
|
73
|
-
if (r.size > 0 || i.length > 0) {
|
|
74
|
-
for (const [n, f] of r)
|
|
75
|
-
if (n === "reposBase") {
|
|
76
|
-
const a = m(f);
|
|
77
|
-
if (a)
|
|
78
|
-
return console.error(l(a)), 1;
|
|
79
|
-
}
|
|
80
|
-
let s;
|
|
81
|
-
try {
|
|
82
|
-
s = await h(t) ?? { version: 1 };
|
|
83
|
-
} catch (n) {
|
|
84
|
-
return console.error(l(n.message)), 1;
|
|
85
|
-
}
|
|
86
|
-
for (const [n, f] of r)
|
|
87
|
-
s[n] = f;
|
|
88
|
-
for (const n of i)
|
|
89
|
-
delete s[n];
|
|
90
|
-
try {
|
|
91
|
-
await p(t, s);
|
|
92
|
-
} catch (n) {
|
|
93
|
-
return console.error(l(n.message)), 1;
|
|
94
|
-
}
|
|
95
|
-
return console.info(u(s)), 0;
|
|
96
|
-
}
|
|
97
|
-
try {
|
|
98
|
-
const s = await h(t);
|
|
99
|
-
return s ? (console.info(u(s)), 0) : (console.info(JSON.stringify({ configured: !1 })), 0);
|
|
100
|
-
} catch (s) {
|
|
101
|
-
return console.error(l(s.message)), 1;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
process.exit(await q());
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { an as l } from "./services-CwvXl2MB.js";
|
|
2
|
-
var o, s;
|
|
3
|
-
function u() {
|
|
4
|
-
return s || (s = 1, o = function() {
|
|
5
|
-
throw new Error(
|
|
6
|
-
"ws does not work in the browser. Browser clients must use the native WebSocket object"
|
|
7
|
-
);
|
|
8
|
-
}), o;
|
|
9
|
-
}
|
|
10
|
-
var c = u();
|
|
11
|
-
const i = /* @__PURE__ */ l(c), t = globalThis;
|
|
12
|
-
t.WebSocket ||= i;
|
|
13
|
-
t.window ||= globalThis;
|
|
14
|
-
t.self ||= globalThis;
|
|
15
|
-
t.window.__REACT_DEVTOOLS_COMPONENT_FILTERS__ = [
|
|
16
|
-
{
|
|
17
|
-
// ComponentFilterElementType
|
|
18
|
-
type: 1,
|
|
19
|
-
// ElementTypeHostComponent
|
|
20
|
-
value: 7,
|
|
21
|
-
isEnabled: !0
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
// ComponentFilterDisplayName
|
|
25
|
-
type: 2,
|
|
26
|
-
value: "InternalApp",
|
|
27
|
-
isEnabled: !0,
|
|
28
|
-
isValid: !0
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
// ComponentFilterDisplayName
|
|
32
|
-
type: 2,
|
|
33
|
-
value: "InternalAppContext",
|
|
34
|
-
isEnabled: !0,
|
|
35
|
-
isValid: !0
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
// ComponentFilterDisplayName
|
|
39
|
-
type: 2,
|
|
40
|
-
value: "InternalStdoutContext",
|
|
41
|
-
isEnabled: !0,
|
|
42
|
-
isValid: !0
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
// ComponentFilterDisplayName
|
|
46
|
-
type: 2,
|
|
47
|
-
value: "InternalStderrContext",
|
|
48
|
-
isEnabled: !0,
|
|
49
|
-
isValid: !0
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
// ComponentFilterDisplayName
|
|
53
|
-
type: 2,
|
|
54
|
-
value: "InternalStdinContext",
|
|
55
|
-
isEnabled: !0,
|
|
56
|
-
isValid: !0
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
// ComponentFilterDisplayName
|
|
60
|
-
type: 2,
|
|
61
|
-
value: "InternalFocusContext",
|
|
62
|
-
isEnabled: !0,
|
|
63
|
-
isValid: !0
|
|
64
|
-
}
|
|
65
|
-
];
|
|
66
|
-
const a = {}, d = async () => new Promise((r) => {
|
|
67
|
-
const e = new i("ws://localhost:8097"), n = setTimeout(() => {
|
|
68
|
-
e.terminate(), r(!1);
|
|
69
|
-
}, 2e3);
|
|
70
|
-
n.unref(), e.on("open", () => {
|
|
71
|
-
clearTimeout(n), e.terminate(), r(!0);
|
|
72
|
-
}), e.on("error", () => {
|
|
73
|
-
clearTimeout(n), e.terminate(), r(!1);
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
await d() ? (a.initialize(), a.connectToDevTools()) : console.warn(`DEV is set to true, but the React DevTools server is not running. Start it with:
|
|
77
|
-
|
|
78
|
-
$ npx react-devtools
|
|
79
|
-
`);
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { join as d } from "node:path";
|
|
2
|
-
import { l, S as f, E, D as x, q as h } from "./services-Csd556Tv.js";
|
|
3
|
-
function c(o, r) {
|
|
4
|
-
const n = o.find((a) => a.startsWith(`${r}=`));
|
|
5
|
-
if (n) return n.slice(r.length + 1);
|
|
6
|
-
const t = o.indexOf(r);
|
|
7
|
-
return t !== -1 ? o[t + 1] : void 0;
|
|
8
|
-
}
|
|
9
|
-
async function w(o = process.argv) {
|
|
10
|
-
const r = o.slice(3), n = c(r, "--mr");
|
|
11
|
-
if (!n)
|
|
12
|
-
return console.error("Error: --mr <url> is required"), 1;
|
|
13
|
-
const t = c(r, "--runs")?.split(",").map((e) => e.trim()).filter(Boolean), a = c(r, "--report");
|
|
14
|
-
try {
|
|
15
|
-
l.info("[inboxEvalCmd#run] [idle → running]", { mr: n, runsFilter: t });
|
|
16
|
-
const i = new f().getStateDir(), g = d(i, "agent-inbox", "events.jsonl"), u = new E(g), m = new x(u), p = a ?? d(i, "agent-inbox", "eval-reports", (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-")), s = await h({
|
|
17
|
-
mr: n,
|
|
18
|
-
journal: u,
|
|
19
|
-
decisionJournal: m,
|
|
20
|
-
reportsDir: p,
|
|
21
|
-
runFilter: t
|
|
22
|
-
});
|
|
23
|
-
return console.log(`Eval report: ${p}/eval-report.json`), console.log(`Verdict: ${s.verdict}`), console.log(
|
|
24
|
-
`Runs: ${s.runs.filter((v) => v.status === "pass").length}/${s.runs.length} passed`
|
|
25
|
-
), l.info("[inboxEvalCmd#run] [running → done]", { verdict: s.verdict }), s.verdict === "pass" ? 0 : 1;
|
|
26
|
-
} catch (e) {
|
|
27
|
-
const i = new Error("[inboxEvalCmd#run] Eval run failed", { cause: e });
|
|
28
|
-
return l.error("[inboxEvalCmd#run] [running → failed]", { error: i }), console.error(`Error: ${e.message ?? String(e)}`), 1;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
process.exit(await w());
|
|
32
|
-
export {
|
|
33
|
-
w as run
|
|
34
|
-
};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { s as o } from "./shared-B5CTGvpG.js";
|
|
2
|
-
function n() {
|
|
3
|
-
console.info(o.bold("gennady inbox-context — атомарный сбор контекста MR")), console.info(""), console.info(" gennady inbox-context --ref <group/project!iid> [флаги]"), console.info(""), console.info(o.bold("Флаги:")), console.info(" --ref <ref> MR ref (обязателен)"), console.info(" --vcs-host=<host> GitLab host (автодетект из origin)"), console.info(" --skip-worktree Без клона — changeset и worktree пусты"), console.info(" --skip-threads Без обсуждений — threads/stage пусты"), console.info(" --repos-base=<dir> База поиска клонов (default ~/Developer)"), console.info(" --state-dir=<dir> Директория состояния (default ~/.gennady)"), console.info(" --json Вывод в JSON (по умолчанию)"), console.info(""), console.info(o.bold("Вывод (JSON):")), console.info(" ref, title, webUrl — идентификация MR"), console.info(" worktree — path, base, diffRefs, repoLayout"), console.info(" changeset — files [{path, status, plus, minus}], totals, byCategory"), console.info(" stage — review_needed | reply_needed | awaiting_reply | idle"), console.info(" openQuestions, lastAuthor — из обсуждений"), console.info(" threads — { all, drafts } — полные треды и черновики"), console.info(" package — role, author, reviewers, description, approvedBy");
|
|
4
|
-
}
|
|
5
|
-
export {
|
|
6
|
-
n as printHelp
|
|
7
|
-
};
|