@ai-dossier/cli 0.56.0 → 0.57.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.
@@ -0,0 +1,475 @@
1
+ "use strict";
2
+ /**
3
+ * `ai-dossier batch compose` core (#773, #770 P3 "selection = admission").
4
+ *
5
+ * The batch pipeline used to admit members by keyword AFTER humans/models had already selected
6
+ * them — a hand-picked five-issue set collapsed to one member only after ~425k decision-grade
7
+ * classifier tokens (#770). This module previews admission BEFORE any model spend: it runs the
8
+ * deterministic `classify prescreen` (prescreen:v2, #772) plus the readiness screen
9
+ * batch-issues-preparation Step 1/5 applies, and proposes a composition that honours the
10
+ * scheduler's batch invariants — at most `max_full_review_members` (default 2, #771) `review=full`
11
+ * members, one base branch, `min_members` (default 3) to `max_members` (default 6) — preferring
12
+ * members that share a workspace package so the repo's expensive gate stage runs once for all.
13
+ *
14
+ * Pure and dependency-free (no `gh`, network, fs, or model) — same discipline as `prescreen.ts`.
15
+ * All I/O (fetching issues, dependency states, the sched queue) lives in `commands/batch.ts`.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.NOT_A_UNIT_LABELS = exports.DATA_MUTATION_PHRASES = exports.MIN_FORMABLE_MEMBERS = exports.DEFAULT_MAX_MEMBERS = exports.DEFAULT_MIN_MEMBERS = exports.COMPOSE_SCHEMA = void 0;
19
+ exports.matchDataMutation = matchDataMutation;
20
+ exports.notAUnitReason = notAUnitReason;
21
+ exports.workspaceOf = workspaceOf;
22
+ exports.inferPackages = inferPackages;
23
+ exports.assessIssue = assessIssue;
24
+ exports.composeBatch = composeBatch;
25
+ exports.applyPickDependencies = applyPickDependencies;
26
+ const hard_block_labels_1 = require("./hard-block-labels");
27
+ const prescreen_1 = require("./prescreen");
28
+ /** Version of the `batch compose --json` contract. Bump on any breaking shape change. */
29
+ exports.COMPOSE_SCHEMA = 'batch-compose:v1';
30
+ /** Default floor below which a composition is reported `under-min` and backfill is proposed (#770 P4). */
31
+ exports.DEFAULT_MIN_MEMBERS = 3;
32
+ /** Default (and hard) member ceiling — batch-issues-preparation Step 5 constraint 3 (≤ 6 members). */
33
+ exports.DEFAULT_MAX_MEMBERS = 6;
34
+ /** Fewer admissible members than this and no batch should form — hand the survivor to full-cycle (#770 P4). */
35
+ exports.MIN_FORMABLE_MEMBERS = 2;
36
+ // --- data mutation ------------------------------------------------------------------------------
37
+ /**
38
+ * Phrases that mark an issue as production data mutation / ops — the one class #770 P1 keeps
39
+ * out of shared PRs ("prod data mutation/ops"): a batch reverts per commit, a data change does
40
+ * not revert with it. Deliberately ACTION phrases, not bare words or places: "backfill" alone is batch
41
+ * vocabulary (this very feature proposes "backfill candidates"), "migration" alone is already a
42
+ * `review=full` text-floor hit, "delete" alone is ordinary code prose, and "production data" /
43
+ * "prod db" name a place an issue merely talks about (an IAM or pentest issue) — measured on the
44
+ * imboard backlog, those place phrases excluded five issues that mutate nothing. Matched against the
45
+ * same change-surface text the prescreen text floor scans (`floorScanText` — reference sections,
46
+ * provenance clauses and quoted spans removed), whole-word, case-insensitive.
47
+ */
48
+ exports.DATA_MUTATION_PHRASES = [
49
+ 'data migration',
50
+ 'migration script',
51
+ 'migrate data',
52
+ 'migrate existing data',
53
+ 'migrate existing records',
54
+ 'migrate existing documents',
55
+ 'data backfill',
56
+ 'backfill script',
57
+ 'backfill existing',
58
+ 'backfill job',
59
+ 'backfill production',
60
+ 'one-off script',
61
+ 'one-time script',
62
+ 'bulk delete',
63
+ 'bulk update',
64
+ 'data cleanup',
65
+ 'data repair',
66
+ 'data fix',
67
+ 'purge script',
68
+ 'purge production',
69
+ 'modify production data',
70
+ 'update production data',
71
+ 'delete production data',
72
+ 'write to production',
73
+ ];
74
+ function escapeRegExp(s) {
75
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
76
+ }
77
+ const DATA_MUTATION_RES = exports.DATA_MUTATION_PHRASES.map((p) => [p, new RegExp(`\\b${escapeRegExp(p).replace(/[\s-]+/g, '[\\s-]+')}\\b`, 'i')]);
78
+ /** First data-mutation phrase the change-surface text matches, or null. */
79
+ function matchDataMutation(text) {
80
+ for (const [phrase, re] of DATA_MUTATION_RES)
81
+ if (re.test(text))
82
+ return phrase;
83
+ return null;
84
+ }
85
+ // --- not an implementable unit -----------------------------------------------------------------
86
+ /**
87
+ * Labels marking an issue as something other than one implementable change — a tracker, a
88
+ * decision, parked or research work (#770 P1: "decisions/epics/trackers" never share a PR;
89
+ * batch-issues-preparation Step 5 "Is it a tracker or a decision?"). The hard-block labels
90
+ * (`epic`, `decomposed`, …) are reported separately as `hard-block-label`.
91
+ */
92
+ exports.NOT_A_UNIT_LABELS = [
93
+ 'tracker',
94
+ 'decision',
95
+ 'question',
96
+ 'discussion',
97
+ 'research',
98
+ 'parked',
99
+ 'on-hold',
100
+ 'wontfix',
101
+ 'duplicate',
102
+ ];
103
+ /** Title shapes of the same classes: `[PARKED] …`, `[tracker] …`, `research: …`, `Decision: …`, `RFC: …`. */
104
+ const NOT_A_UNIT_TITLE_RE = /^\s*(?:\[\s*(?:parked|tracker|epic|decision|research|rfc|discussion|question|on[\s-]?hold)\b[^\]]*\]|(?:tracker|epic|decision|research|rfc|discussion|question)\s*(?:\([^)]*\))?\s*:)/i;
105
+ /** A body section headed "Decision needed" / "Decision required" — an options table, not a spec. */
106
+ const DECISION_HEADING_RE = /^[ \t]{0,3}#{1,6}[ \t]+decision[ \t]+(?:needed|required)\b/im;
107
+ /** Why the issue is not one implementable unit, or null. */
108
+ function notAUnitReason(title, body, labels) {
109
+ const lower = labels.map((l) => l.toLowerCase());
110
+ const label = exports.NOT_A_UNIT_LABELS.find((l) => lower.includes(l));
111
+ if (label !== undefined)
112
+ return `Carries the '${label}' label.`;
113
+ if (NOT_A_UNIT_TITLE_RE.test(title))
114
+ return 'Title marks it as a tracker/decision/research/parked item.';
115
+ if (DECISION_HEADING_RE.test(body))
116
+ return "Body has a 'Decision needed' section — a decision, not a spec.";
117
+ return null;
118
+ }
119
+ // --- package inference --------------------------------------------------------------------------
120
+ /** Directory names whose CHILD is the workspace package (`packages/sched`, `apps/web`, …). */
121
+ const WORKSPACE_PARENTS = new Set(['packages', 'apps', 'libs', 'services', 'plugins', 'modules']);
122
+ /**
123
+ * Path-like tokens: at least one `/`, only path characters. Filtered further in
124
+ * {@link isPathToken} so prose like "and/or" or "ci/cd" is not a path.
125
+ */
126
+ const PATH_TOKEN_RE = /(?<![\w/.:#@-])(?:\.\/)?((?:[\w.-]+\/)+[\w.-]*)/g;
127
+ /** Most packages reported per issue — the body is untrusted, keep the output bounded. */
128
+ const MAX_PACKAGES = 8;
129
+ function isPathToken(token) {
130
+ const segments = token.split('/').filter((s) => s !== '');
131
+ if (segments.length === 0)
132
+ return false;
133
+ if (segments.some((s) => s === '..' || /^\d+$/.test(s)))
134
+ return false;
135
+ const last = segments[segments.length - 1];
136
+ // A file (`x.ts`), an explicit directory (`dir/`), or anything under a workspace parent
137
+ // (`packages/sched`). A bare `a/b/c` is NOT enough — prose like "active/disabled/pending"
138
+ // looks exactly like that and produced phantom packages on a real backlog.
139
+ return (/\.[A-Za-z0-9]{1,6}$/.test(last) ||
140
+ token.endsWith('/') ||
141
+ segments.slice(0, -1).some((s) => WORKSPACE_PARENTS.has(s)));
142
+ }
143
+ /** The workspace package a repo-relative path belongs to: `…/packages/<x>/…` → `packages/<x>`, else its first segment. */
144
+ function workspaceOf(path) {
145
+ const segments = path
146
+ .replace(/^\.\//, '')
147
+ .split('/')
148
+ .filter((s) => s !== '');
149
+ for (let i = 0; i < segments.length - 1; i++) {
150
+ if (WORKSPACE_PARENTS.has(segments[i]))
151
+ return `${segments[i]}/${segments[i + 1]}`;
152
+ }
153
+ // A lone file at the repo root (`package.json`) belongs to no workspace.
154
+ return segments.length >= 2 ? segments[0] : null;
155
+ }
156
+ /**
157
+ * Workspace packages an issue is predicted to touch. A plan:v1 artifact's predicted files win
158
+ * (they are the plan's own claim); otherwise path tokens named in the change-surface body
159
+ * (reference sections and provenance removed, but quoted spans KEPT — backticked paths are the
160
+ * main signal here). Sorted, de-duplicated, capped at {@link MAX_PACKAGES}.
161
+ */
162
+ function inferPackages(body, predictedFiles) {
163
+ const paths = predictedFiles !== undefined && predictedFiles.length > 0
164
+ ? [...predictedFiles]
165
+ : [...(0, prescreen_1.stripReferenceMaterial)(body).matchAll(PATH_TOKEN_RE)]
166
+ // A sentence-ending period is punctuation, not part of the path.
167
+ .map((m) => m[1].replace(/\.+$/, ''))
168
+ .filter(isPathToken);
169
+ const out = new Set();
170
+ for (const p of paths) {
171
+ const ws = workspaceOf(p);
172
+ if (ws !== null)
173
+ out.add(ws);
174
+ }
175
+ return [...out].sort().slice(0, MAX_PACKAGES);
176
+ }
177
+ // --- assessment ---------------------------------------------------------------------------------
178
+ /** Labels that mark an issue as already claimed by a running cycle. */
179
+ const IN_PROGRESS_LABEL = 'in-progress';
180
+ /** A batch ANCHOR (batch-epic) — the batch's own tracking issue, never a member. */
181
+ const BATCH_ANCHOR_LABEL = 'batch-epic';
182
+ /** The one runstate phase that does NOT mean a cycle is in flight (classifier record). */
183
+ const CLASSIFY_PHASE = 'classify';
184
+ /**
185
+ * Deterministic admission for one issue: readiness (batch-issues-preparation Step 1/5) +
186
+ * prescreen:v2 (#772) + data-mutation. Records EVERY exclusion reason, not just the first, so an
187
+ * operator sees the whole picture of why a pick cannot join.
188
+ */
189
+ function assessIssue(input, rules = 'v2') {
190
+ const base = { issue: input.issue, source: input.source, title: input.title };
191
+ if (input.error !== undefined) {
192
+ return {
193
+ ...base,
194
+ admissible: false,
195
+ review: 'full',
196
+ packages: [],
197
+ prescreen: [],
198
+ excluded: [{ code: 'unreadable', message: input.error }],
199
+ };
200
+ }
201
+ const excluded = [];
202
+ const labels = input.labels.map((l) => l.toLowerCase());
203
+ if (input.state.toUpperCase() !== 'OPEN') {
204
+ excluded.push({ code: 'closed', message: `Issue is ${input.state || 'not open'}.` });
205
+ }
206
+ if (input.assignees.length > 0) {
207
+ excluded.push({
208
+ code: 'assigned',
209
+ message: `Assigned to ${input.assignees.map((a) => `@${a}`).join(', ')}.`,
210
+ });
211
+ }
212
+ if (labels.includes(IN_PROGRESS_LABEL)) {
213
+ excluded.push({ code: 'in-progress', message: `Carries the '${IN_PROGRESS_LABEL}' label.` });
214
+ }
215
+ if (labels.includes(BATCH_ANCHOR_LABEL)) {
216
+ excluded.push({
217
+ code: 'batch-anchor',
218
+ message: `Carries '${BATCH_ANCHOR_LABEL}' — a batch anchor, not an implementable unit.`,
219
+ });
220
+ }
221
+ if (input.latestPhase && input.latestPhase !== CLASSIFY_PHASE) {
222
+ excluded.push({
223
+ code: 'in-flight',
224
+ message: `Latest runstate milestone is phase '${input.latestPhase}' — a cycle is in flight or parked.`,
225
+ });
226
+ }
227
+ if (input.schedStatus) {
228
+ excluded.push({
229
+ code: 'sched-active',
230
+ message: `Already an active scheduler queue entry (status '${input.schedStatus}').`,
231
+ });
232
+ }
233
+ const verdict = (0, prescreen_1.prescreenIssue)({
234
+ title: input.title,
235
+ body: input.body,
236
+ labels: input.labels,
237
+ predictedFiles: input.predictedFiles,
238
+ openDependencies: input.openDependencies,
239
+ });
240
+ const hardBlock = (0, hard_block_labels_1.pickHardBlockLabel)(input.labels);
241
+ if (hardBlock !== null) {
242
+ excluded.push({
243
+ code: 'hard-block-label',
244
+ message: `Carries hard-block label '${hardBlock}'.`,
245
+ });
246
+ }
247
+ for (const dep of input.openDependencies ?? []) {
248
+ excluded.push({
249
+ code: 'open-dependency',
250
+ message: `Depends on #${dep}, which is open and not among the operator's picks.`,
251
+ });
252
+ }
253
+ for (const dep of input.unknownDependencies ?? []) {
254
+ excluded.push({
255
+ code: 'open-dependency',
256
+ message: `Depends on #${dep}, whose state could not be read — treated as open.`,
257
+ });
258
+ }
259
+ // prescreen:v2 keeps path-floor / >8-files as EXCLUDING checks (#772's schema): a plan:v1
260
+ // artifact that predicts risk-floor paths or a large diff is a deliberate full-cycle case, so
261
+ // only a text-floor hit rides a batch as a review=full member (#770 Option A).
262
+ const floorExclusions = verdict.reasons.filter((r) => r.check === 'path-floor' || r.check === 'file-count');
263
+ if (floorExclusions.length > 0) {
264
+ excluded.push({
265
+ code: 'prescreen-full',
266
+ message: `prescreen:v2 verdict full — ${floorExclusions.map((r) => r.message).join(' ')}`,
267
+ });
268
+ }
269
+ const notUnit = notAUnitReason(input.title, input.body, input.labels);
270
+ if (notUnit !== null)
271
+ excluded.push({ code: 'not-a-unit', message: notUnit });
272
+ const dataMutation = matchDataMutation((0, prescreen_1.floorScanText)(input.title, input.body, input.labels));
273
+ if (dataMutation !== null) {
274
+ excluded.push({
275
+ code: 'data-mutation',
276
+ message: `Change surface mentions '${dataMutation}' — production data mutation/ops never shares a PR.`,
277
+ });
278
+ }
279
+ if (rules === 'legacy') {
280
+ // Pre-#772 prescreen:v1: whole title+body+labels (quoted spans blanked, nothing else),
281
+ // and ANY keyword hit forced mode=full — which batch-issues-preparation never batched.
282
+ const v1Text = (0, prescreen_1.stripQuotedSpans)(`${input.title}\n${input.body}\n${input.labels.join(' ')}`);
283
+ const hit = prescreen_1.TEXT_FLOOR_PATTERNS.map((p) => [p.name, p.match(v1Text)]).find(([, kw]) => kw !== null);
284
+ if (hit) {
285
+ excluded.push({
286
+ code: 'legacy-full',
287
+ message: `Legacy rules: '${hit[0]}' keyword '${hit[1]}' forced mode=full, and full-mode issues were never batched.`,
288
+ });
289
+ }
290
+ }
291
+ return {
292
+ ...base,
293
+ admissible: excluded.length === 0,
294
+ review: verdict.review,
295
+ packages: inferPackages(input.body, input.predictedFiles),
296
+ prescreen: verdict.reasons,
297
+ excluded,
298
+ };
299
+ }
300
+ /**
301
+ * Order candidates against the current member set: sharing a package first, then `light` before
302
+ * `full` (a full slot is scarce — the cap), then more shared packages first, then issue number ascending
303
+ * (older first). With no members yet, "shared" means shared with the other candidates, so the
304
+ * seed comes from the largest package cluster.
305
+ */
306
+ function rank(candidates, members) {
307
+ const memberPkgs = new Set(members.flatMap((m) => m.packages));
308
+ const ranked = candidates.map((a) => {
309
+ let shared;
310
+ if (members.length > 0) {
311
+ shared = a.packages.filter((p) => memberPkgs.has(p));
312
+ }
313
+ else {
314
+ shared = a.packages.filter((p) => candidates.some((o) => o.issue !== a.issue && o.packages.includes(p)));
315
+ }
316
+ return { a, shared };
317
+ });
318
+ ranked.sort((x, y) => {
319
+ const sx = x.shared.length > 0 ? 1 : 0;
320
+ const sy = y.shared.length > 0 ? 1 : 0;
321
+ if (sx !== sy)
322
+ return sy - sx;
323
+ if (x.a.review !== y.a.review)
324
+ return x.a.review === 'light' ? -1 : 1;
325
+ if (x.shared.length !== y.shared.length)
326
+ return y.shared.length - x.shared.length;
327
+ return x.a.issue - y.a.issue;
328
+ });
329
+ return ranked;
330
+ }
331
+ /**
332
+ * Greedy, deterministic fill: repeatedly take the best-ranked candidate (re-ranked after each
333
+ * pick, so package affinity follows the growing member set) until `target` members, skipping a
334
+ * `review=full` candidate once the cap is reached. Returns what it took and what it skipped.
335
+ */
336
+ function fill(pool, members, target, maxFullReview) {
337
+ const taken = [];
338
+ const capped = [];
339
+ let remaining = [...pool];
340
+ let fullCount = members.filter((m) => m.review === 'full').length;
341
+ while (members.length + taken.length < target && remaining.length > 0) {
342
+ const next = rank(remaining, [...members, ...taken]).find((r) => r.a.review === 'light' || fullCount < maxFullReview);
343
+ if (next === undefined)
344
+ break;
345
+ taken.push(next.a);
346
+ if (next.a.review === 'full')
347
+ fullCount++;
348
+ remaining = remaining.filter((c) => c.issue !== next.a.issue);
349
+ }
350
+ for (const c of remaining) {
351
+ if (c.review === 'full' && fullCount >= maxFullReview)
352
+ capped.push(c);
353
+ }
354
+ return { taken, capped };
355
+ }
356
+ function toMember(a, source) {
357
+ return {
358
+ issue: a.issue,
359
+ title: a.title,
360
+ review: a.review,
361
+ source,
362
+ packages: a.packages,
363
+ review_reasons: a.review === 'full' ? a.prescreen.map((r) => r.message) : [],
364
+ };
365
+ }
366
+ /**
367
+ * Propose a composition from assessed issues. Picks first (they are the operator's intent) —
368
+ * all admissible picks join, bounded by `maxMembers` and the `review=full` cap; then, while the
369
+ * set is below its target (`minMembers` with picks, `maxMembers` from the backlog alone), backfill
370
+ * from admissible backlog issues. Member order: picks, then backfill, each in selection order.
371
+ */
372
+ function composeBatch(assessed, opts) {
373
+ const admissible = assessed.filter((a) => a.admissible);
374
+ const picks = admissible.filter((a) => a.source === 'pick');
375
+ const backlog = admissible.filter((a) => a.source === 'backlog');
376
+ const held = [];
377
+ const hold = (a, reason) => held.push({
378
+ issue: a.issue,
379
+ title: a.title,
380
+ review: a.review,
381
+ source: a.source,
382
+ packages: a.packages,
383
+ reason,
384
+ });
385
+ // 1. Operator picks — every admissible pick, up to the caps.
386
+ const pickFill = fill(picks, [], opts.maxMembers, opts.maxFullReview);
387
+ const members = pickFill.taken.map((a) => toMember(a, 'pick'));
388
+ const takenPicks = new Set(pickFill.taken.map((a) => a.issue));
389
+ for (const a of picks) {
390
+ if (takenPicks.has(a.issue))
391
+ continue;
392
+ hold(a, pickFill.capped.includes(a) ? 'review-full-cap' : 'max-members');
393
+ }
394
+ // 2. Backfill / backlog fill.
395
+ const target = opts.picksMode ? Math.min(opts.minMembers, opts.maxMembers) : opts.maxMembers;
396
+ const backFill = fill(backlog, pickFill.taken, target, opts.maxFullReview);
397
+ for (const a of backFill.taken)
398
+ members.push(toMember(a, opts.picksMode ? 'backfill' : 'backlog'));
399
+ const takenBack = new Set(backFill.taken.map((a) => a.issue));
400
+ // The ranked preview is relative to the admitted picks — what the operator chose.
401
+ const backfill = opts.picksMode
402
+ ? rank(backlog, pickFill.taken).map((r, i) => ({
403
+ rank: i + 1,
404
+ issue: r.a.issue,
405
+ title: r.a.title,
406
+ review: r.a.review,
407
+ packages: r.a.packages,
408
+ shared_packages: r.shared,
409
+ selected: takenBack.has(r.a.issue),
410
+ }))
411
+ : [];
412
+ if (!opts.picksMode) {
413
+ for (const a of backlog) {
414
+ if (takenBack.has(a.issue))
415
+ continue;
416
+ hold(a, backFill.capped.includes(a) ? 'review-full-cap' : 'max-members');
417
+ }
418
+ }
419
+ const counts = new Map();
420
+ for (const m of members)
421
+ for (const p of m.packages)
422
+ counts.set(p, (counts.get(p) ?? 0) + 1);
423
+ const shared = [...counts.entries()]
424
+ .filter(([, n]) => n >= 2)
425
+ .map(([p]) => p)
426
+ .sort();
427
+ let status;
428
+ let recommendation;
429
+ if (members.length >= opts.minMembers) {
430
+ status = 'ok';
431
+ recommendation = `Form one batch of ${members.length} on '${opts.baseBranch}' (${members.filter((m) => m.review === 'full').length} review=full).`;
432
+ }
433
+ else if (members.length >= exports.MIN_FORMABLE_MEMBERS) {
434
+ status = 'under-min';
435
+ recommendation = `Only ${members.length} admissible member(s), below min_members=${opts.minMembers} — widen the backlog query or accept a small batch.`;
436
+ }
437
+ else {
438
+ status = 'no-batch';
439
+ recommendation =
440
+ members.length === 1
441
+ ? `Do not form a batch — run #${members[0].issue} as a full-cycle issue.`
442
+ : 'Do not form a batch — nothing admissible.';
443
+ }
444
+ return { status, members, held, backfill, shared_packages: shared, recommendation };
445
+ }
446
+ /**
447
+ * A pick that depends on ANOTHER pick is admissible only while that pick is: when the depended-on
448
+ * pick is excluded (and still open), the dependent would ship without it. Applied to a fixpoint,
449
+ * so a chain A → B → C collapses when C is excluded. Mutates and returns `assessed`.
450
+ */
451
+ function applyPickDependencies(assessed, pickDeps, isOpen) {
452
+ const byIssue = new Map(assessed.map((a) => [a.issue, a]));
453
+ let changed = true;
454
+ while (changed) {
455
+ changed = false;
456
+ for (const a of assessed) {
457
+ if (!a.admissible)
458
+ continue;
459
+ for (const dep of pickDeps.get(a.issue) ?? []) {
460
+ const d = byIssue.get(dep);
461
+ if (d === undefined || d.admissible || !isOpen(dep))
462
+ continue;
463
+ a.excluded.push({
464
+ code: 'open-dependency',
465
+ message: `Depends on #${dep}, a pick that cannot join this batch (${d.excluded.map((e) => e.code).join(', ')}).`,
466
+ });
467
+ a.admissible = false;
468
+ changed = true;
469
+ break;
470
+ }
471
+ }
472
+ }
473
+ return assessed;
474
+ }
475
+ //# sourceMappingURL=batch-compose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch-compose.js","sourceRoot":"","sources":["../src/batch-compose.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  const commander_1 = require("commander");
8
8
  // Package info
9
9
  const pkg = require('../package.json');
10
+ const batch_1 = require("./commands/batch");
10
11
  const cache_1 = require("./commands/cache");
11
12
  const cap_1 = require("./commands/cap");
12
13
  const checksum_1 = require("./commands/checksum");
@@ -106,6 +107,7 @@ Agent-friendly: Run \`ai-dossier --agent\` for machine-readable capabilities.`);
106
107
  (0, traces_1.registerTracesCommand)(commander_1.program);
107
108
  (0, runstate_1.registerRunstateCommand)(commander_1.program);
108
109
  (0, classify_1.registerClassifyCommand)(commander_1.program);
110
+ (0, batch_1.registerBatchCommand)(commander_1.program);
109
111
  (0, plan_1.registerPlanCommand)(commander_1.program);
110
112
  (0, sched_1.registerSchedCommand)(commander_1.program);
111
113
  (0, cap_1.registerCapCommand)(commander_1.program);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * `ai-dossier batch compose` (#773, #770 P3) — preview which issues may share a batch PR, with
3
+ * zero model tokens. Runs prescreen:v2 + the deterministic readiness screen over the operator's
4
+ * picks and/or the backlog and proposes a composition honouring the scheduler's batch invariants
5
+ * (≤ `max_full_review_members` review=full members, one base branch, 3–6 members), listing ranked
6
+ * backfill candidates when the picks fall short.
7
+ *
8
+ * I/O only: `gh` (issue reads), and a READ-ONLY look at the local sched queue/config. Never a
9
+ * model call, never a write (no labels, comments, or queue changes) — composing is a preview;
10
+ * batch-issues-preparation (or the operator) acts on it. Exits 0 once arguments validate; the
11
+ * `status` field is the payload, not a pass/fail gate (same contract as `classify prescreen`).
12
+ */
13
+ import type { Command } from 'commander';
14
+ import { type AssessedIssue, COMPOSE_SCHEMA, type ComposeRules, type CompositionResult } from '../batch-compose';
15
+ export interface ComposeReport extends CompositionResult {
16
+ schema: typeof COMPOSE_SCHEMA;
17
+ repo: string | null;
18
+ project: string;
19
+ base_branch: string;
20
+ rules: ComposeRules;
21
+ params: {
22
+ min_members: number;
23
+ max_members: number;
24
+ max_full_review: number;
25
+ picks: number[];
26
+ backlog: {
27
+ queried: boolean;
28
+ labels: string[];
29
+ search: string | null;
30
+ limit: number;
31
+ };
32
+ };
33
+ /** Draft `sched enqueue --from-manifest` entries — batch-issues-preparation adds batch/anchor/run_id/tier/deps. */
34
+ manifest_entries: Array<{
35
+ issue: number;
36
+ mode: 'slot';
37
+ review: 'light' | 'full';
38
+ base_branch: string;
39
+ }>;
40
+ excluded: Array<{
41
+ issue: number;
42
+ title: string;
43
+ source: 'pick' | 'backlog';
44
+ reasons: AssessedIssue['excluded'];
45
+ }>;
46
+ counts: {
47
+ assessed: number;
48
+ admissible: number;
49
+ excluded: number;
50
+ };
51
+ /** Always 0 — the whole point of this command (#773 AC2). */
52
+ model_calls: 0;
53
+ degraded: boolean;
54
+ warnings: string[];
55
+ }
56
+ /** Registers the `batch` command tree (currently just `compose`). */
57
+ export declare function registerBatchCommand(program: Command): void;
58
+ //# sourceMappingURL=batch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../src/commands/batch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAeH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EACL,KAAK,aAAa,EAGlB,cAAc,EAEd,KAAK,YAAY,EACjB,KAAK,iBAAiB,EAIvB,MAAM,kBAAkB,CAAC;AA4L1B,MAAM,WAAW,aAAc,SAAQ,iBAAiB;IACtD,MAAM,EAAE,OAAO,cAAc,CAAC;IAC9B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;QACxB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE;YAAE,OAAO,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;KACvF,CAAC;IACF,mHAAmH;IACnH,gBAAgB,EAAE,KAAK,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,QAAQ,EAAE,KAAK,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;QAC3B,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;KACpC,CAAC,CAAC;IACH,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,6DAA6D;IAC7D,WAAW,EAAE,CAAC,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAkOD,qEAAqE;AACrE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiD3D"}