@zhuk/spego 0.19.1 → 0.21.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,155 @@
1
+ /**
2
+ * `spego sync`: derive a reconciliation plan from the delivery mirror and apply
3
+ * the mechanical subset — `create-epic` for every ungroomed active change and
4
+ * `close-sprint` for every finished non-closed sprint. Judgment-only warnings
5
+ * (orphan-epic, dangling-dep, dep-cycle, out-of-order-dep) are reported as
6
+ * `remaining` and never applied. `--dry-run` derives and prints the plan only.
7
+ */
8
+ import { loadBoardState } from '../../delivery/load.js';
9
+ import { deriveSyncPlan } from '../../delivery/sync.js';
10
+ import { resolveAdapter } from '../../delivery/index.js';
11
+ import { assertWorkspace } from '../../delivery/openspec-discover.js';
12
+ import { assertEpicSlugActive } from '../epic-slug.js';
13
+ import { SpegoError } from '../../errors.js';
14
+ import { renderSection, renderTable } from '../render.js';
15
+ import { runEngineCommand } from '../runtime.js';
16
+ export async function resolveEpicAdapter(engine) {
17
+ const adapter = resolveAdapter(engine.paths.projectRoot, engine.config);
18
+ try {
19
+ await assertWorkspace(engine.paths.projectRoot);
20
+ }
21
+ catch (err) {
22
+ if (err instanceof SpegoError && err.code === 'DELIVERY_ADAPTER_ERROR') {
23
+ return null;
24
+ }
25
+ throw err;
26
+ }
27
+ return adapter;
28
+ }
29
+ export async function applySyncPlan(engine, plan, adapter) {
30
+ const revisionById = new Map();
31
+ for (const row of engine.list({ type: 'sprint-plan' })) {
32
+ revisionById.set(row.id, row.revision);
33
+ }
34
+ const applied = [];
35
+ for (const action of plan.actions) {
36
+ if (action.kind === 'create-epic') {
37
+ await assertEpicSlugActive(adapter, action.slug);
38
+ const record = await engine.create({
39
+ type: 'epic',
40
+ title: action.title,
41
+ slug: action.slug,
42
+ body: '',
43
+ meta: {},
44
+ });
45
+ applied.push({
46
+ kind: 'create-epic',
47
+ slug: record.frontmatter.slug,
48
+ id: record.frontmatter.id,
49
+ revision: record.frontmatter.revision,
50
+ });
51
+ }
52
+ else if (action.kind === 'close-sprint') {
53
+ const expectedRevision = revisionById.get(action.id);
54
+ if (expectedRevision === undefined) {
55
+ throw new SpegoError('ARTIFACT_NOT_FOUND', `Sprint artifact not found for close: ${action.slug}`, { id: action.id, slug: action.slug });
56
+ }
57
+ const current = await engine.readById(action.id);
58
+ const record = await engine.update(action.id, {
59
+ expectedRevision,
60
+ meta: { ...current.frontmatter.meta, status: 'closed' },
61
+ });
62
+ applied.push({
63
+ kind: 'close-sprint',
64
+ slug: record.frontmatter.slug,
65
+ id: record.frontmatter.id,
66
+ revision: record.frontmatter.revision,
67
+ });
68
+ }
69
+ else if (action.kind === 'retire-epic') {
70
+ const record = await engine.softDelete(action.id);
71
+ applied.push({
72
+ kind: 'retire-epic',
73
+ slug: action.slug,
74
+ id: record.frontmatter.id,
75
+ revision: record.frontmatter.revision,
76
+ });
77
+ }
78
+ else {
79
+ throw new Error(`Unknown sync action kind: ${JSON.stringify(action)}`);
80
+ }
81
+ }
82
+ return applied;
83
+ }
84
+ function syncRows(actions, applied, dryRun) {
85
+ if (dryRun) {
86
+ return actions.map((action) => {
87
+ if (action.kind === 'create-epic') {
88
+ return ['create-epic', `epic:${action.slug}`, action.title];
89
+ }
90
+ if (action.kind === 'retire-epic') {
91
+ return ['retire-epic', `epic:${action.slug}`, 'retire'];
92
+ }
93
+ return ['close-sprint', `sprint:${action.slug}`, 'close'];
94
+ });
95
+ }
96
+ return applied.map((result) => {
97
+ if (result.kind === 'create-epic') {
98
+ return ['create-epic', `epic:${result.slug}`, `created → rev ${result.revision}`];
99
+ }
100
+ if (result.kind === 'retire-epic') {
101
+ return ['retire-epic', `epic:${result.slug}`, `retired → rev ${result.revision}`];
102
+ }
103
+ return ['close-sprint', `sprint:${result.slug}`, `closed → rev ${result.revision}`];
104
+ });
105
+ }
106
+ function renderSync(payload) {
107
+ const rows = syncRows(payload.actions, payload.applied, payload.dryRun);
108
+ const lines = [];
109
+ if (rows.length === 0) {
110
+ lines.push('Mirror is reconciled — no actions.');
111
+ }
112
+ else {
113
+ lines.push(renderTable(['action', 'target', 'detail'], rows));
114
+ }
115
+ if (payload.remaining.length > 0) {
116
+ const count = payload.remaining.length;
117
+ lines.push(`${count} judgment-only warning${count === 1 ? '' : 's'} remain — see \`spego board\`.`);
118
+ }
119
+ if (payload.dryRun)
120
+ lines.push('Dry run: no changes written.');
121
+ return renderSection('🔄', 'Sync', ...lines);
122
+ }
123
+ export function registerSync(program) {
124
+ program
125
+ .command('sync')
126
+ .description('Reconcile the delivery mirror: create missing epics and close finished sprints')
127
+ .option('--dry-run', 'derive and print the plan without applying')
128
+ .option('--cwd <dir>', 'project root')
129
+ .action(async (opts) => {
130
+ await runEngineCommand({ program, cwd: opts.cwd }, async (engine) => {
131
+ const { input, board } = await loadBoardState(engine, opts.cwd);
132
+ const plan = deriveSyncPlan(board, input);
133
+ if (opts.dryRun) {
134
+ const payload = {
135
+ actions: plan.actions,
136
+ applied: [],
137
+ remaining: plan.remaining,
138
+ dryRun: true,
139
+ };
140
+ return { payload, human: () => renderSync(payload) };
141
+ }
142
+ const needsAdapter = plan.actions.some((action) => action.kind === 'create-epic');
143
+ const adapter = needsAdapter ? await resolveEpicAdapter(engine) : null;
144
+ const applied = await applySyncPlan(engine, plan, adapter);
145
+ const payload = {
146
+ actions: plan.actions,
147
+ applied,
148
+ remaining: plan.remaining,
149
+ dryRun: false,
150
+ };
151
+ return { payload, human: () => renderSync(payload) };
152
+ });
153
+ });
154
+ }
155
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/cli/commands/sync.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ import { initWorkspace, workspaceStatus } from '../../workspace/init.js';
7
7
  import { renderBox, renderSection } from '../render.js';
8
8
  import { runCommand } from '../runtime.js';
9
9
  const DRIFT_CODES = new Set([
10
- 'dangling-dep', 'dep-cycle', 'out-of-order-dep', 'ungroomed-change', 'orphan-epic', 'archived-in-sprint',
10
+ 'dangling-dep', 'dep-cycle', 'out-of-order-dep', 'ungroomed-change', 'orphan-epic',
11
11
  'closable-sprint',
12
12
  ]);
13
13
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/cli/commands/workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/cli/commands/workspace.ts"],"names":[],"mappings":"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"}
@@ -24,18 +24,22 @@ export declare function padRight(value: string, width: number): string;
24
24
  export declare function renderBox(title: string, rows: Array<[string, string]>): string;
25
25
  /**
26
26
  * Compute one width per column: the natural size (header vs. longest cell,
27
- * default 60), clamped by `opts.maxWidth`.
27
+ * default 60), clamped by `opts.maxWidth`. Columns listed in `opts.protect`
28
+ * skip the cap and keep their natural width.
28
29
  *
29
30
  * When `opts.totalWidth` is given and the natural widths don't fit within it
30
31
  * (accounting for the two-space separator between columns), the currently
31
- * widest column is shrunk by 1 repeatedly until it fits or every column has
32
- * hit `opts.minWidth` (default 6). Deterministic and index-stable: ties for
33
- * "widest" always shrink the lowest index first.
32
+ * widest non-protected column is shrunk by 1 repeatedly until it fits or every
33
+ * non-protected column has hit `opts.minWidth` (default 6); protected columns
34
+ * never shrink, so a budget that still can't be met leaves the table exceeding
35
+ * `totalWidth`. Deterministic and index-stable: ties for "widest" always shrink
36
+ * the lowest index first.
34
37
  */
35
38
  export declare function columnWidths(columns: string[], rows: string[][], opts?: {
36
39
  maxWidth?: number;
37
40
  totalWidth?: number;
38
41
  minWidth?: number;
42
+ protect?: number[];
39
43
  }): number[];
40
44
  /**
41
45
  * Render an aligned table with a header row separated from data rows by `─`.
@@ -51,30 +55,37 @@ export declare function columnWidths(columns: string[], rows: string[][], opts?:
51
55
  * shared across several tables via `columnWidths`) instead of deriving them
52
56
  * from `rows`. An empty `rows` array still renders the header and divider so
53
57
  * callers can prepend a "no rows" hint above if they choose.
58
+ *
59
+ * Set `opts.wrapLastColumn` to wrap a last-column cell that doesn't fit onto
60
+ * continuation rows instead of truncating it with `…`. Each continuation row
61
+ * blanks every preceding column (kept at the same offset) and carries the
62
+ * next chunk of the last column, word-wrapped at the column width. Only the
63
+ * last column wraps; earlier columns still truncate as usual.
54
64
  */
55
65
  export declare function renderTable(columns: string[], rows: string[][], opts?: {
56
66
  maxWidth?: number;
57
67
  widths?: number[];
68
+ wrapLastColumn?: boolean;
58
69
  }): string;
59
70
  /**
60
- * Wrap `bodyLines` in a left rail so a group of related lines (e.g. a
71
+ * Wrap `bodyLines` in a bordered panel so a group of related lines (e.g. a
61
72
  * sprint's title and its change table) reads as one bounded section.
62
73
  *
63
74
  * ```
64
- * ╭─ Sprint sprint-1 — Sprint 1 (active) ─────
65
- * │ id change status
66
- * │ ───── ─────── ───────────
67
- * │ c4f2a add-api done
68
- * ╰────────────────────────────────────────────
75
+ * ╭─ Sprint sprint-1 — Sprint 1 (active) ─────╮
76
+ * │ id change status │
77
+ * │ ───── ─────── ─────────── │
78
+ * │ c4f2a add-api done │
79
+ * ╰───────────────────────────────────────────╯
69
80
  * ```
70
81
  *
71
- * `opts.width` is the content width in visible characters; pass it
72
- * explicitly when `bodyLines` already carry ANSI styling, since `.length` on
73
- * a styled line counts escape bytes. Defaults to the longest line in
74
- * `bodyLines`, widened if needed to fit `title`. Blank lines render as a
75
- * bare `│` with no trailing space; every other line is padded to the
76
- * content width. No right border: callers may pass already-trimmed table
77
- * rows of varying length.
82
+ * `opts.width` is the content width in visible characters. Callers passing
83
+ * ANSI-styled `bodyLines` MUST supply it explicitly: `.length` on a styled
84
+ * line counts escape bytes, so the default (longest line) would mis-size the
85
+ * panel and break the right border. Defaults to the longest line in
86
+ * `bodyLines`, widened if needed to fit `title`. Every body line is padded to
87
+ * the content width and closed on the right with ` │`, so header, divider,
88
+ * short rows, and blank rows all align on both rails.
78
89
  */
79
90
  export declare function renderPanel(title: string, bodyLines: string[], opts?: {
80
91
  width?: number;
@@ -56,21 +56,25 @@ export function renderBox(title, rows) {
56
56
  const DEFAULT_TABLE_MIN_WIDTH = 6;
57
57
  /**
58
58
  * Compute one width per column: the natural size (header vs. longest cell,
59
- * default 60), clamped by `opts.maxWidth`.
59
+ * default 60), clamped by `opts.maxWidth`. Columns listed in `opts.protect`
60
+ * skip the cap and keep their natural width.
60
61
  *
61
62
  * When `opts.totalWidth` is given and the natural widths don't fit within it
62
63
  * (accounting for the two-space separator between columns), the currently
63
- * widest column is shrunk by 1 repeatedly until it fits or every column has
64
- * hit `opts.minWidth` (default 6). Deterministic and index-stable: ties for
65
- * "widest" always shrink the lowest index first.
64
+ * widest non-protected column is shrunk by 1 repeatedly until it fits or every
65
+ * non-protected column has hit `opts.minWidth` (default 6); protected columns
66
+ * never shrink, so a budget that still can't be met leaves the table exceeding
67
+ * `totalWidth`. Deterministic and index-stable: ties for "widest" always shrink
68
+ * the lowest index first.
66
69
  */
67
70
  export function columnWidths(columns, rows, opts = {}) {
68
71
  const maxWidth = opts.maxWidth ?? DEFAULT_TABLE_MAX_WIDTH;
69
72
  const minWidth = opts.minWidth ?? DEFAULT_TABLE_MIN_WIDTH;
73
+ const protect = new Set(opts.protect ?? []);
70
74
  const widths = columns.map((col, i) => {
71
75
  const dataMax = rows.reduce((m, r) => Math.max(m, (r[i] ?? '').length), 0);
72
76
  const target = Math.max(col.length, dataMax);
73
- return Math.min(target, maxWidth);
77
+ return protect.has(i) ? target : Math.min(target, maxWidth);
74
78
  });
75
79
  if (opts.totalWidth === undefined)
76
80
  return widths;
@@ -78,6 +82,8 @@ export function columnWidths(columns, rows, opts = {}) {
78
82
  while (widths.reduce((sum, w) => sum + w, 0) + separatorWidth > opts.totalWidth) {
79
83
  let widestIndex = -1;
80
84
  for (let i = 0; i < widths.length; i++) {
85
+ if (protect.has(i))
86
+ continue;
81
87
  if (widths[i] > minWidth && (widestIndex === -1 || widths[i] > widths[widestIndex])) {
82
88
  widestIndex = i;
83
89
  }
@@ -102,46 +108,93 @@ export function columnWidths(columns, rows, opts = {}) {
102
108
  * shared across several tables via `columnWidths`) instead of deriving them
103
109
  * from `rows`. An empty `rows` array still renders the header and divider so
104
110
  * callers can prepend a "no rows" hint above if they choose.
111
+ *
112
+ * Set `opts.wrapLastColumn` to wrap a last-column cell that doesn't fit onto
113
+ * continuation rows instead of truncating it with `…`. Each continuation row
114
+ * blanks every preceding column (kept at the same offset) and carries the
115
+ * next chunk of the last column, word-wrapped at the column width. Only the
116
+ * last column wraps; earlier columns still truncate as usual.
105
117
  */
106
118
  export function renderTable(columns, rows, opts = {}) {
107
119
  const widths = opts.widths ?? columnWidths(columns, rows, { maxWidth: opts.maxWidth });
108
120
  const formatRow = (cells) => widths.map((w, i) => padRight(truncate(cells[i] ?? '', w), w)).join(' ').trimEnd();
109
121
  const header = formatRow(columns);
110
122
  const divider = widths.map((w) => '─'.repeat(w)).join(' ').trimEnd();
111
- const body = rows.map(formatRow).join('\n');
123
+ if (!opts.wrapLastColumn) {
124
+ const body = rows.map(formatRow).join('\n');
125
+ return rows.length === 0 ? `${header}\n${divider}` : `${header}\n${divider}\n${body}`;
126
+ }
127
+ const lastIndex = widths.length - 1;
128
+ const lastWidth = widths[lastIndex] ?? 0;
129
+ const body = rows
130
+ .map((cells) => {
131
+ const head = widths.slice(0, lastIndex).map((w, i) => padRight(truncate(cells[i] ?? '', w), w));
132
+ const blank = widths.slice(0, lastIndex).map((w) => ' '.repeat(w));
133
+ return wrapText(cells[lastIndex] ?? '', lastWidth)
134
+ .map((chunk, row) => [...(row === 0 ? head : blank), padRight(chunk, lastWidth)].join(' ').trimEnd())
135
+ .join('\n');
136
+ })
137
+ .join('\n');
112
138
  return rows.length === 0 ? `${header}\n${divider}` : `${header}\n${divider}\n${body}`;
113
139
  }
140
+ /** Word-wrap `value` into lines no wider than `width`, hard-breaking any single word longer than `width`. */
141
+ function wrapText(value, width) {
142
+ if (width <= 0)
143
+ return [value];
144
+ const lines = [];
145
+ let line = '';
146
+ for (const word of value.split(' ')) {
147
+ for (const piece of breakWord(word, width)) {
148
+ if (line === '')
149
+ line = piece;
150
+ else if (line.length + 1 + piece.length <= width)
151
+ line += ` ${piece}`;
152
+ else {
153
+ lines.push(line);
154
+ line = piece;
155
+ }
156
+ }
157
+ }
158
+ lines.push(line);
159
+ return lines;
160
+ }
161
+ function breakWord(word, width) {
162
+ if (word.length <= width)
163
+ return [word];
164
+ const pieces = [];
165
+ for (let i = 0; i < word.length; i += width)
166
+ pieces.push(word.slice(i, i + width));
167
+ return pieces;
168
+ }
114
169
  /**
115
- * Wrap `bodyLines` in a left rail so a group of related lines (e.g. a
170
+ * Wrap `bodyLines` in a bordered panel so a group of related lines (e.g. a
116
171
  * sprint's title and its change table) reads as one bounded section.
117
172
  *
118
173
  * ```
119
- * ╭─ Sprint sprint-1 — Sprint 1 (active) ─────
120
- * │ id change status
121
- * │ ───── ─────── ───────────
122
- * │ c4f2a add-api done
123
- * ╰────────────────────────────────────────────
174
+ * ╭─ Sprint sprint-1 — Sprint 1 (active) ─────╮
175
+ * │ id change status │
176
+ * │ ───── ─────── ─────────── │
177
+ * │ c4f2a add-api done │
178
+ * ╰───────────────────────────────────────────╯
124
179
  * ```
125
180
  *
126
- * `opts.width` is the content width in visible characters; pass it
127
- * explicitly when `bodyLines` already carry ANSI styling, since `.length` on
128
- * a styled line counts escape bytes. Defaults to the longest line in
129
- * `bodyLines`, widened if needed to fit `title`. Blank lines render as a
130
- * bare `│` with no trailing space; every other line is padded to the
131
- * content width. No right border: callers may pass already-trimmed table
132
- * rows of varying length.
181
+ * `opts.width` is the content width in visible characters. Callers passing
182
+ * ANSI-styled `bodyLines` MUST supply it explicitly: `.length` on a styled
183
+ * line counts escape bytes, so the default (longest line) would mis-size the
184
+ * panel and break the right border. Defaults to the longest line in
185
+ * `bodyLines`, widened if needed to fit `title`. Every body line is padded to
186
+ * the content width and closed on the right with ` │`, so header, divider,
187
+ * short rows, and blank rows all align on both rails.
133
188
  */
134
189
  export function renderPanel(title, bodyLines, opts = {}) {
135
190
  const bodyMax = bodyLines.reduce((m, line) => Math.max(m, line.length), 0);
136
191
  const width = Math.max(opts.width ?? bodyMax, title.length + 3);
137
- const total = width + 2;
138
- const top = `╭─ ${title} ${'─'.repeat(Math.max(1, total - title.length - 4))}`;
139
- const bottom = `╰${'─'.repeat(Math.max(1, total - 1))}`;
192
+ const total = width + 4; // `│ ` + width + ` │`
193
+ const top = `╭─ ${title} ${'─'.repeat(Math.max(1, total - title.length - 5))}╮`;
194
+ const bottom = `╰${'─'.repeat(Math.max(1, total - 2))}╯`;
140
195
  if (bodyLines.length === 0)
141
196
  return `${top}\n${bottom}`;
142
- const body = bodyLines
143
- .map((line) => (line === '' ? '│' : `│ ${padRight(line, width)}`))
144
- .join('\n');
197
+ const body = bodyLines.map((line) => `│ ${padRight(line, width)} │`).join('\n');
145
198
  return `${top}\n${body}\n${bottom}`;
146
199
  }
147
200
  /** Render a single-line section header prefixed by an emoji. */
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/cli/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/cli/render.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -21,6 +21,7 @@ import { registerSkills } from './cli/commands/skills.js';
21
21
  import { registerDelivery } from './cli/commands/delivery.js';
22
22
  import { registerBoard } from './cli/commands/board.js';
23
23
  import { registerSprints } from './cli/commands/sprints.js';
24
+ import { registerSync } from './cli/commands/sync.js';
24
25
  export function buildProgram() {
25
26
  const program = new Command();
26
27
  program
@@ -53,6 +54,7 @@ export function buildProgram() {
53
54
  registerDelivery(program);
54
55
  registerBoard(program);
55
56
  registerSprints(program);
57
+ registerSync(program);
56
58
  return program;
57
59
  }
58
60
  /**
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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"}
@@ -143,6 +143,16 @@ export const COMMAND_REGISTRY = [
143
143
  inputSchema: {},
144
144
  outputModes: ['markdown', 'json'],
145
145
  },
146
+ {
147
+ name: 'sync',
148
+ description: 'Reconcile the delivery mirror: create missing epics, close finished sprints, retire epics of archived changes',
149
+ slashName: '/spego:sync',
150
+ category: 'planning',
151
+ inputSchema: {
152
+ dryRun: { name: 'dryRun', type: 'boolean', required: false, description: 'Derive and print the plan without applying' },
153
+ },
154
+ outputModes: ['markdown', 'json'],
155
+ },
146
156
  {
147
157
  name: 'workflows',
148
158
  description: 'List available workflow skills',
@@ -153,7 +163,7 @@ export const COMMAND_REGISTRY = [
153
163
  },
154
164
  {
155
165
  name: 'board',
156
- description: 'Show the delivery board (sprints, blockers, gaps)',
166
+ description: 'Show the delivery board with per-change signals; --sync reconciles before render',
157
167
  slashName: '/spego:board',
158
168
  category: 'planning',
159
169
  inputSchema: {
@@ -162,6 +172,7 @@ export const COMMAND_REGISTRY = [
162
172
  plain: { name: 'plain', type: 'boolean', required: false, description: 'Disable ANSI color in human output' },
163
173
  archived: { name: 'archived', type: 'boolean', required: false, description: 'Include archived changes in the ungrouped list' },
164
174
  closed: { name: 'closed', type: 'boolean', required: false, description: 'Show closed and completed sprints (does not affect --archived, which only controls the ungrouped list)' },
175
+ sync: { name: 'sync', type: 'boolean', required: false, description: 'Apply the mechanical reconciliation plan before rendering' },
165
176
  },
166
177
  outputModes: ['markdown', 'json'],
167
178
  },
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/command-meta/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/command-meta/registry.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { DeliveryStatus } from './types.js';
2
- export type WarningCode = 'dangling-dep' | 'dep-cycle' | 'out-of-order-dep' | 'ungroomed-change' | 'orphan-epic' | 'archived-in-sprint' | 'closable-sprint' | 'adapter-warning' | 'adapter-unavailable';
2
+ export type WarningCode = 'dangling-dep' | 'dep-cycle' | 'out-of-order-dep' | 'ungroomed-change' | 'orphan-epic' | 'closable-sprint' | 'adapter-warning' | 'adapter-unavailable';
3
3
  export interface MirrorWarning {
4
4
  code: WarningCode;
5
5
  message: string;