@rasensio/aidlc 1.65.0 → 1.67.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.
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +12 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/roadmap.d.ts +20 -3
- package/dist/commands/roadmap.d.ts.map +1 -1
- package/dist/commands/roadmap.js +60 -15
- package/dist/commands/roadmap.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +9 -2
- package/dist/commands/update.js.map +1 -1
- package/dist/compile/adapters/claude-code.d.ts +18 -1
- package/dist/compile/adapters/claude-code.d.ts.map +1 -1
- package/dist/compile/adapters/claude-code.js +66 -3
- package/dist/compile/adapters/claude-code.js.map +1 -1
- package/dist/compile/adapters/codex.d.ts +33 -2
- package/dist/compile/adapters/codex.d.ts.map +1 -1
- package/dist/compile/adapters/codex.js +106 -17
- package/dist/compile/adapters/codex.js.map +1 -1
- package/dist/compile/agents.d.ts +53 -0
- package/dist/compile/agents.d.ts.map +1 -0
- package/dist/compile/agents.js +97 -0
- package/dist/compile/agents.js.map +1 -0
- package/dist/compile/loaders.d.ts.map +1 -1
- package/dist/compile/loaders.js +1 -0
- package/dist/compile/loaders.js.map +1 -1
- package/dist/compile/reviewer-guard.d.ts +47 -0
- package/dist/compile/reviewer-guard.d.ts.map +1 -0
- package/dist/compile/reviewer-guard.js +106 -0
- package/dist/compile/reviewer-guard.js.map +1 -0
- package/dist/core/types.d.ts +25 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/doctor/migrations/index.d.ts.map +1 -1
- package/dist/doctor/migrations/index.js +5 -0
- package/dist/doctor/migrations/index.js.map +1 -1
- package/dist/doctor/migrations/roadmap-mermaid-graphs.d.ts +22 -0
- package/dist/doctor/migrations/roadmap-mermaid-graphs.d.ts.map +1 -0
- package/dist/doctor/migrations/roadmap-mermaid-graphs.js +74 -0
- package/dist/doctor/migrations/roadmap-mermaid-graphs.js.map +1 -0
- package/dist/roadmap/graph.d.ts +73 -28
- package/dist/roadmap/graph.d.ts.map +1 -1
- package/dist/roadmap/graph.js +184 -125
- package/dist/roadmap/graph.js.map +1 -1
- package/dist/roadmap/next.d.ts +5 -0
- package/dist/roadmap/next.d.ts.map +1 -1
- package/dist/roadmap/next.js +7 -1
- package/dist/roadmap/next.js.map +1 -1
- package/dist/roadmap/open-browser.d.ts +34 -0
- package/dist/roadmap/open-browser.d.ts.map +1 -0
- package/dist/roadmap/open-browser.js +40 -0
- package/dist/roadmap/open-browser.js.map +1 -0
- package/dist/roadmap/paths.d.ts +5 -1
- package/dist/roadmap/paths.d.ts.map +1 -1
- package/dist/roadmap/paths.js +5 -9
- package/dist/roadmap/paths.js.map +1 -1
- package/dist/roadmap/view-assets.d.ts +18 -0
- package/dist/roadmap/view-assets.d.ts.map +1 -0
- package/dist/roadmap/view-assets.js +301 -0
- package/dist/roadmap/view-assets.js.map +1 -0
- package/dist/roadmap/view-html.d.ts +37 -0
- package/dist/roadmap/view-html.d.ts.map +1 -0
- package/dist/roadmap/view-html.js +317 -0
- package/dist/roadmap/view-html.js.map +1 -0
- package/dist/roadmap/view-model.d.ts +93 -0
- package/dist/roadmap/view-model.d.ts.map +1 -0
- package/dist/roadmap/view-model.js +194 -0
- package/dist/roadmap/view-model.js.map +1 -0
- package/package.json +2 -2
package/dist/roadmap/graph.js
CHANGED
|
@@ -1,143 +1,202 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* The roadmap's dependency map, laid out (html-roadmap-view/AC-27..AC-29, AC-34).
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* `depends_on` becomes a forest: each item sits under its first dependency, so it is
|
|
5
|
+
* drawn once, and gets a dashed link to each further one. Edges point from the
|
|
6
|
+
* dependency to the item that needs it. An id no item carries becomes a `missing` node
|
|
7
|
+
* rather than being dropped — a typo in `depends_on` silently blocks `roadmap next`, and
|
|
8
|
+
* the map is where it shows.
|
|
6
9
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* move
|
|
11
|
-
*
|
|
12
|
-
* Edges point from the dependency to the item that needs it (`A --> B`: B depends on A).
|
|
13
|
-
* An edge to an id no item carries is drawn to a `missing` node rather than dropped — a
|
|
14
|
-
* typo in `depends_on` silently blocks `roadmap next`, and the graph is where it shows.
|
|
10
|
+
* Laid out here, at generation time, and not in the browser: the same items always give
|
|
11
|
+
* the same coordinates, and the page script is left with events alone. This module
|
|
12
|
+
* replaced the two committed Mermaid files the roadmap used to keep
|
|
13
|
+
* (`graph-backlog.mmd`, `graph-full.mmd`), which every move rebuilt in whichever checkout
|
|
14
|
+
* ran it; the `roadmap-mermaid-graphs` doctor migration removes them.
|
|
15
15
|
*
|
|
16
16
|
* @module
|
|
17
17
|
*/
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const
|
|
28
|
-
'%% Generated by aidlc from .aidlc/roadmap/ — do not edit.',
|
|
29
|
-
'%% Rebuilt on every item move; after a move by hand run `aidlc roadmap graph`.',
|
|
30
|
-
];
|
|
31
|
-
const CLASS_DEFS = {
|
|
32
|
-
inbox: 'fill:#eef2ff,stroke:#6366f1',
|
|
33
|
-
backlog: 'fill:#fef9c3,stroke:#ca8a04',
|
|
34
|
-
'in-progress': 'fill:#dbeafe,stroke:#2563eb',
|
|
35
|
-
done: 'fill:#dcfce7,stroke:#16a34a',
|
|
36
|
-
hold: 'fill:#f3f4f6,stroke:#6b7280',
|
|
37
|
-
missing: 'fill:#fee2e2,stroke:#dc2626,stroke-dasharray:4 2',
|
|
38
|
-
};
|
|
39
|
-
/** A Mermaid-safe node id. Item ids are `item-YYYYMMDD-slug`; anything else is folded. */
|
|
40
|
-
function nodeId(key) {
|
|
41
|
-
return `n_${key.replace(/[^A-Za-z0-9]/g, '_')}`;
|
|
42
|
-
}
|
|
43
|
-
/** `in-progress` is not a valid Mermaid class or subgraph id. */
|
|
44
|
-
function className(status) {
|
|
45
|
-
return status.replace('-', '_');
|
|
46
|
-
}
|
|
18
|
+
/** Node box size, and the grid it sits on, in SVG user units. */
|
|
19
|
+
export const NODE_W = 240;
|
|
20
|
+
export const NODE_H = 48;
|
|
21
|
+
const COL_W = 300;
|
|
22
|
+
const ROW_H = 64;
|
|
23
|
+
const PAD = 16;
|
|
24
|
+
/** Space between two packed trees, and between the forest and the unlinked grid. */
|
|
25
|
+
const TREE_GAP = 64;
|
|
26
|
+
/** Fewest unlinked items to a row, however narrow the forest. */
|
|
27
|
+
const UNLINKED_PER_ROW = 4;
|
|
47
28
|
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
29
|
+
* Lay out the dependency forest. Pure: the same items in the same order give the same
|
|
30
|
+
* coordinates, because every tie is broken by input order (AC-34).
|
|
31
|
+
*
|
|
32
|
+
* An item sits under its first dependency and gets a dashed link to each further one, so
|
|
33
|
+
* it is drawn once however many things it needs (AC-27). Following first dependencies can
|
|
34
|
+
* loop (AC-29); each loop is cut at the member earliest in input order, which becomes a
|
|
35
|
+
* root and keeps its link to the rest as a dashed edge. Without the cut a loop has no
|
|
36
|
+
* root, so its members are never placed and come out with no coordinates.
|
|
51
37
|
*/
|
|
52
|
-
function
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
.
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
: [];
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
/** Every item under `root`, as graph nodes, in status order then file name. */
|
|
71
|
-
export function readNodes(root) {
|
|
72
|
-
return ROADMAP_STATUSES.flatMap((status) => listStatusAt(root, status).map(toNode));
|
|
73
|
-
}
|
|
74
|
-
/** Render one view as Mermaid source. Pure: same nodes in, same bytes out. */
|
|
75
|
-
export function renderGraph(all, view) {
|
|
76
|
-
const nodes = view === 'backlog' ? all.filter((n) => n.status === 'backlog') : [...all];
|
|
77
|
-
const known = new Map(all.map((n) => [n.key, n]));
|
|
78
|
-
const shown = new Set(nodes.map((n) => n.key));
|
|
79
|
-
const lines = [...HEADER, 'flowchart LR'];
|
|
80
|
-
const nodeLine = (n) => `${n.nodeId}[${label(n.label)}]:::${className(n.status)}`;
|
|
81
|
-
if (view === 'full') {
|
|
82
|
-
for (const status of ROADMAP_STATUSES) {
|
|
83
|
-
const group = nodes.filter((n) => n.status === status);
|
|
84
|
-
if (group.length === 0)
|
|
38
|
+
export function layoutMap(items) {
|
|
39
|
+
const refOfKey = new Map();
|
|
40
|
+
for (const item of items)
|
|
41
|
+
if (!refOfKey.has(item.key))
|
|
42
|
+
refOfKey.set(item.key, item.ref);
|
|
43
|
+
const missingIds = [...new Set(items.flatMap((i) => i.deps).filter((d) => !refOfKey.has(d)))].sort();
|
|
44
|
+
const missing = missingIds.map((id, n) => ({ ref: `m${n}`, id }));
|
|
45
|
+
const refOfDep = new Map([...refOfKey, ...missing.map((m) => [m.id, m.ref])]);
|
|
46
|
+
const order = [...items.map((i) => i.ref), ...missing.map((m) => m.ref)];
|
|
47
|
+
const position = new Map(order.map((ref, n) => [ref, n]));
|
|
48
|
+
const byOrder = (a, b) => position.get(a) - position.get(b);
|
|
49
|
+
const links = {};
|
|
50
|
+
for (const ref of order)
|
|
51
|
+
links[ref] = { needs: [], neededBy: [] };
|
|
52
|
+
for (const item of items) {
|
|
53
|
+
for (const dep of item.deps) {
|
|
54
|
+
const target = refOfDep.get(dep);
|
|
55
|
+
if (target === item.ref || links[item.ref].needs.includes(target))
|
|
85
56
|
continue;
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
lines.push(` ${nodeLine(n)}`);
|
|
89
|
-
lines.push(' end');
|
|
57
|
+
links[item.ref].needs.push(target);
|
|
58
|
+
links[target].neededBy.push(item.ref);
|
|
90
59
|
}
|
|
91
60
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
const
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
if (
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
missing.add(dep);
|
|
105
|
-
edges.push(` ${nodeId(dep)} -.-> ${n.nodeId}`);
|
|
61
|
+
const linked = order.filter((ref) => links[ref].needs.length > 0 || links[ref].neededBy.length > 0);
|
|
62
|
+
const parent = new Map(linked.map((ref) => [ref, links[ref].needs[0] ?? null]));
|
|
63
|
+
// Cut parent loops. 1 = on the current walk, 2 = settled.
|
|
64
|
+
const state = new Map();
|
|
65
|
+
for (const start of linked) {
|
|
66
|
+
const path = [];
|
|
67
|
+
let cur = start;
|
|
68
|
+
while (cur !== null && state.get(cur) !== 2) {
|
|
69
|
+
if (state.get(cur) === 1) {
|
|
70
|
+
const loop = path.slice(path.indexOf(cur));
|
|
71
|
+
parent.set([...loop].sort(byOrder)[0], null);
|
|
72
|
+
break;
|
|
106
73
|
}
|
|
107
|
-
|
|
74
|
+
state.set(cur, 1);
|
|
75
|
+
path.push(cur);
|
|
76
|
+
cur = parent.get(cur) ?? null;
|
|
108
77
|
}
|
|
78
|
+
for (const p of path)
|
|
79
|
+
state.set(p, 2);
|
|
109
80
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
used.add('missing');
|
|
116
|
-
for (const [cls, style] of Object.entries(CLASS_DEFS)) {
|
|
117
|
-
if (used.has(cls))
|
|
118
|
-
lines.push(` classDef ${className(cls)} ${style}`);
|
|
81
|
+
const children = new Map(linked.map((ref) => [ref, []]));
|
|
82
|
+
for (const ref of linked) {
|
|
83
|
+
const p = parent.get(ref);
|
|
84
|
+
if (p != null)
|
|
85
|
+
children.get(p).push(ref);
|
|
119
86
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
*
|
|
125
|
-
* @returns Absolute paths of the files written.
|
|
126
|
-
*/
|
|
127
|
-
export function writeGraphs(root) {
|
|
128
|
-
if (!existsSync(root))
|
|
129
|
-
return [];
|
|
130
|
-
const nodes = readNodes(root);
|
|
131
|
-
const written = [];
|
|
132
|
-
for (const view of Object.keys(GRAPH_FILES)) {
|
|
133
|
-
const file = join(root, GRAPH_FILES[view]);
|
|
134
|
-
const next = renderGraph(nodes, view);
|
|
135
|
-
const current = existsSync(file) ? readFileSync(file, 'utf8') : null;
|
|
136
|
-
if (current === next)
|
|
137
|
-
continue;
|
|
138
|
-
writeFileSync(file, next, 'utf8');
|
|
139
|
-
written.push(file);
|
|
87
|
+
const edges = [];
|
|
88
|
+
for (const ref of linked) {
|
|
89
|
+
for (const dep of links[ref].needs)
|
|
90
|
+
edges.push({ from: dep, to: ref, dashed: dep !== parent.get(ref) });
|
|
140
91
|
}
|
|
141
|
-
|
|
92
|
+
// Tidy tree, left to right: depth is the column, each leaf takes the next row of its
|
|
93
|
+
// tree, a parent sits midway between its first and last child.
|
|
94
|
+
const row = new Map();
|
|
95
|
+
const depth = new Map();
|
|
96
|
+
const treeOf = new Map();
|
|
97
|
+
let nextRow = 0;
|
|
98
|
+
const place = (ref, d, tree) => {
|
|
99
|
+
depth.set(ref, d);
|
|
100
|
+
treeOf.set(ref, tree);
|
|
101
|
+
const kids = children.get(ref);
|
|
102
|
+
if (kids.length === 0) {
|
|
103
|
+
row.set(ref, nextRow++);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
for (const kid of kids)
|
|
107
|
+
place(kid, d + 1, tree);
|
|
108
|
+
row.set(ref, (row.get(kids[0]) + row.get(kids[kids.length - 1])) / 2);
|
|
109
|
+
};
|
|
110
|
+
const roots = linked.filter((ref) => parent.get(ref) === null);
|
|
111
|
+
const trees = roots.map((root, t) => {
|
|
112
|
+
nextRow = 0;
|
|
113
|
+
place(root, 0, t);
|
|
114
|
+
const members = linked.filter((ref) => treeOf.get(ref) === t);
|
|
115
|
+
const depthMax = Math.max(...members.map((ref) => depth.get(ref)));
|
|
116
|
+
return { width: depthMax * COL_W + NODE_W, height: (nextRow - 1) * ROW_H + NODE_H, x: 0, y: 0 };
|
|
117
|
+
});
|
|
118
|
+
// Shelf-pack the trees, in order, into rows. Stacked in one column, this repository's 23
|
|
119
|
+
// small trees made a strip so tall that fitting it to a screen shrank labels to a fifth
|
|
120
|
+
// of their size. Each possible first-row width is tried and the packing closest to 16:9
|
|
121
|
+
// kept, ties to the narrower — a single estimated width quantises badly when trees are
|
|
122
|
+
// alike (24 equal trees came out taller than wide).
|
|
123
|
+
const pack = (target) => {
|
|
124
|
+
let x = 0;
|
|
125
|
+
let y = 0;
|
|
126
|
+
let shelf = 0;
|
|
127
|
+
let width = 0;
|
|
128
|
+
const at = trees.map((t) => {
|
|
129
|
+
if (x > 0 && x + t.width > target) {
|
|
130
|
+
x = 0;
|
|
131
|
+
y += shelf + TREE_GAP;
|
|
132
|
+
shelf = 0;
|
|
133
|
+
}
|
|
134
|
+
const spot = { x, y };
|
|
135
|
+
width = Math.max(width, x + t.width);
|
|
136
|
+
x += t.width + TREE_GAP;
|
|
137
|
+
shelf = Math.max(shelf, t.height);
|
|
138
|
+
return spot;
|
|
139
|
+
});
|
|
140
|
+
return { width, height: y + shelf, at };
|
|
141
|
+
};
|
|
142
|
+
let best = pack(0);
|
|
143
|
+
let firstRow = -TREE_GAP;
|
|
144
|
+
for (const t of trees) {
|
|
145
|
+
firstRow += t.width + TREE_GAP;
|
|
146
|
+
const candidate = pack(firstRow);
|
|
147
|
+
const off = (p) => Math.abs(Math.log(p.width / p.height / (16 / 9)));
|
|
148
|
+
if (off(candidate) < off(best))
|
|
149
|
+
best = candidate;
|
|
150
|
+
}
|
|
151
|
+
trees.forEach((t, n) => Object.assign(t, best.at[n]));
|
|
152
|
+
const forestHeight = trees.length > 0 ? best.height : 0;
|
|
153
|
+
const targetWidth = Math.max(best.width, NODE_W);
|
|
154
|
+
const descendants = (ref, next) => {
|
|
155
|
+
const seen = new Set();
|
|
156
|
+
const stack = [...next(ref)];
|
|
157
|
+
while (stack.length > 0) {
|
|
158
|
+
const r = stack.pop();
|
|
159
|
+
if (r === ref || seen.has(r))
|
|
160
|
+
continue;
|
|
161
|
+
seen.add(r);
|
|
162
|
+
stack.push(...next(r));
|
|
163
|
+
}
|
|
164
|
+
return [...seen].sort(byOrder);
|
|
165
|
+
};
|
|
166
|
+
const nodes = linked.map((ref) => ({
|
|
167
|
+
ref,
|
|
168
|
+
x: PAD + trees[treeOf.get(ref)].x + depth.get(ref) * COL_W,
|
|
169
|
+
y: PAD + trees[treeOf.get(ref)].y + Math.round(row.get(ref) * ROW_H),
|
|
170
|
+
depth: depth.get(ref),
|
|
171
|
+
parent: parent.get(ref) ?? null,
|
|
172
|
+
subtree: descendants(ref, (r) => children.get(r) ?? []),
|
|
173
|
+
chain: [...new Set([...descendants(ref, (r) => links[r].needs), ...descendants(ref, (r) => links[r].neededBy)])].sort(byOrder),
|
|
174
|
+
}));
|
|
175
|
+
const linkedSet = new Set(linked);
|
|
176
|
+
const unlinkedTop = trees.length > 0 ? forestHeight + TREE_GAP : 0;
|
|
177
|
+
// As wide as the forest, so showing them does not turn the map back into a strip.
|
|
178
|
+
const perRow = Math.max(UNLINKED_PER_ROW, Math.floor((targetWidth + COL_W - NODE_W) / COL_W));
|
|
179
|
+
const unlinked = items
|
|
180
|
+
.filter((i) => !linkedSet.has(i.ref))
|
|
181
|
+
.map((i, n) => ({
|
|
182
|
+
ref: i.ref,
|
|
183
|
+
x: PAD + (n % perRow) * COL_W,
|
|
184
|
+
y: PAD + unlinkedTop + Math.floor(n / perRow) * ROW_H,
|
|
185
|
+
}));
|
|
186
|
+
const size = (boxes) => boxes.length === 0
|
|
187
|
+
? { width: 0, height: 0 }
|
|
188
|
+
: {
|
|
189
|
+
width: Math.max(...boxes.map((b) => b.x)) + NODE_W + PAD,
|
|
190
|
+
height: Math.max(...boxes.map((b) => b.y)) + NODE_H + PAD,
|
|
191
|
+
};
|
|
192
|
+
return {
|
|
193
|
+
nodes,
|
|
194
|
+
missing,
|
|
195
|
+
edges,
|
|
196
|
+
unlinked,
|
|
197
|
+
links,
|
|
198
|
+
linkedSize: size(nodes),
|
|
199
|
+
fullSize: size([...nodes, ...unlinked]),
|
|
200
|
+
};
|
|
142
201
|
}
|
|
143
202
|
//# sourceMappingURL=graph.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/roadmap/graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/roadmap/graph.ts"],"names":[],"mappings":"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"}
|
package/dist/roadmap/next.d.ts
CHANGED
|
@@ -54,4 +54,9 @@ export declare function parsePriority(raw: unknown): number | null | 'bad';
|
|
|
54
54
|
/** Priority ascending, unranked last, then file name — total, so the pick is stable. */
|
|
55
55
|
export declare function compareCandidates(a: NextCandidate, b: NextCandidate): number;
|
|
56
56
|
export declare function pickNext(cwd: string): NextResult;
|
|
57
|
+
/**
|
|
58
|
+
* `pickNext` against an explicit roadmap root — what `aidlc roadmap view` calls, so the
|
|
59
|
+
* board marks as ready exactly what `roadmap next` would offer (html-roadmap-view/AC-17).
|
|
60
|
+
*/
|
|
61
|
+
export declare function pickNextAt(root: string): NextResult;
|
|
57
62
|
//# sourceMappingURL=next.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../../src/roadmap/next.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAA0C,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAEtF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,GAAG,SAAS,GAAG,UAAU,CAAC;IAChD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,MAAM,GAAG,IAAI,CAErF;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,yGAAyG;IACzG,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC;CACpD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,CAIjE;AAED,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,MAAM,CAO5E;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,
|
|
1
|
+
{"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../../src/roadmap/next.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAA0C,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAEtF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,cAAc,GAAG,SAAS,GAAG,UAAU,CAAC;IAChD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,GAAG,MAAM,GAAG,IAAI,CAErF;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,yGAAyG;IACzG,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC;CACpD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,CAIjE;AAED,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,MAAM,CAO5E;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAEhD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CA8CnD"}
|
package/dist/roadmap/next.js
CHANGED
|
@@ -50,7 +50,13 @@ export function compareCandidates(a, b) {
|
|
|
50
50
|
return a.file < b.file ? -1 : a.file > b.file ? 1 : 0;
|
|
51
51
|
}
|
|
52
52
|
export function pickNext(cwd) {
|
|
53
|
-
|
|
53
|
+
return pickNextAt(roadmapRoot(cwd));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* `pickNext` against an explicit roadmap root — what `aidlc roadmap view` calls, so the
|
|
57
|
+
* board marks as ready exactly what `roadmap next` would offer (html-roadmap-view/AC-17).
|
|
58
|
+
*/
|
|
59
|
+
export function pickNextAt(root) {
|
|
54
60
|
const doneIds = new Set();
|
|
55
61
|
for (const item of listStatusAt(root, 'done')) {
|
|
56
62
|
if (item.id)
|
package/dist/roadmap/next.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next.js","sourceRoot":"","sources":["../../src/roadmap/next.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAoB,MAAM,YAAY,CAAC;AAetF;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAqC;IACpE,OAAO,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB,IAAI,CAAC,UAAU,GAAG,CAAC;AACtF,CAAC;AAUD;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/E,OAAO,GAAG,CAAC;AACb,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,iBAAiB,CAAC,CAAgB,EAAE,CAAgB;IAClE,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QACnC,OAAO,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IACjC,CAAC;IACD,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,
|
|
1
|
+
{"version":3,"file":"next.js","sourceRoot":"","sources":["../../src/roadmap/next.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Open a file in the default browser (html-roadmap-view/AC-1, AC-5).
|
|
3
|
+
*
|
|
4
|
+
* One launcher per platform, always given an argument vector and never a shell string, so
|
|
5
|
+
* a path cannot become a command. That rules out `cmd /c start` on Windows, which is a
|
|
6
|
+
* shell; `explorer.exe <file>` hands the file to its default handler without one.
|
|
7
|
+
*
|
|
8
|
+
* Resolves as soon as the launcher has started or failed to. It never waits for the exit:
|
|
9
|
+
* `xdg-open` can block until the browser it started is closed.
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
/** The part of a child process this needs — what a test fake has to provide. */
|
|
14
|
+
export interface Launched {
|
|
15
|
+
once(event: 'spawn', listener: () => void): unknown;
|
|
16
|
+
once(event: 'error', listener: (err: Error) => void): unknown;
|
|
17
|
+
unref(): void;
|
|
18
|
+
}
|
|
19
|
+
export type Spawn = (cmd: string, args: string[]) => Launched;
|
|
20
|
+
export type OpenResult = {
|
|
21
|
+
ok: true;
|
|
22
|
+
} | {
|
|
23
|
+
ok: false;
|
|
24
|
+
error: string;
|
|
25
|
+
};
|
|
26
|
+
export declare function launcherFor(platform: NodeJS.Platform, file: string): {
|
|
27
|
+
cmd: string;
|
|
28
|
+
args: string[];
|
|
29
|
+
};
|
|
30
|
+
export declare function openInBrowser(file: string, opts?: {
|
|
31
|
+
platform?: NodeJS.Platform;
|
|
32
|
+
spawn?: Spawn;
|
|
33
|
+
}): Promise<OpenResult>;
|
|
34
|
+
//# sourceMappingURL=open-browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open-browser.d.ts","sourceRoot":"","sources":["../../src/roadmap/open-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,gFAAgF;AAChF,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC;IACpD,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC;IAC9D,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,QAAQ,CAAC;AAE9D,MAAM,MAAM,UAAU,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAIpG;AAID,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAO,GACvD,OAAO,CAAC,UAAU,CAAC,CAgBrB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Open a file in the default browser (html-roadmap-view/AC-1, AC-5).
|
|
3
|
+
*
|
|
4
|
+
* One launcher per platform, always given an argument vector and never a shell string, so
|
|
5
|
+
* a path cannot become a command. That rules out `cmd /c start` on Windows, which is a
|
|
6
|
+
* shell; `explorer.exe <file>` hands the file to its default handler without one.
|
|
7
|
+
*
|
|
8
|
+
* Resolves as soon as the launcher has started or failed to. It never waits for the exit:
|
|
9
|
+
* `xdg-open` can block until the browser it started is closed.
|
|
10
|
+
*
|
|
11
|
+
* @module
|
|
12
|
+
*/
|
|
13
|
+
import { spawn as nodeSpawn } from 'node:child_process';
|
|
14
|
+
export function launcherFor(platform, file) {
|
|
15
|
+
if (platform === 'darwin')
|
|
16
|
+
return { cmd: 'open', args: [file] };
|
|
17
|
+
if (platform === 'win32')
|
|
18
|
+
return { cmd: 'explorer.exe', args: [file] };
|
|
19
|
+
return { cmd: 'xdg-open', args: [file] };
|
|
20
|
+
}
|
|
21
|
+
const realSpawn = (cmd, args) => nodeSpawn(cmd, args, { stdio: 'ignore', detached: true });
|
|
22
|
+
export function openInBrowser(file, opts = {}) {
|
|
23
|
+
const { cmd, args } = launcherFor(opts.platform ?? process.platform, file);
|
|
24
|
+
return new Promise((resolve) => {
|
|
25
|
+
let child;
|
|
26
|
+
try {
|
|
27
|
+
child = (opts.spawn ?? realSpawn)(cmd, args);
|
|
28
|
+
}
|
|
29
|
+
catch (e) {
|
|
30
|
+
resolve({ ok: false, error: e.message });
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
child.once('error', (err) => resolve({ ok: false, error: `${cmd}: ${err.message}` }));
|
|
34
|
+
child.once('spawn', () => {
|
|
35
|
+
child.unref();
|
|
36
|
+
resolve({ ok: true });
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=open-browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open-browser.js","sourceRoot":"","sources":["../../src/roadmap/open-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAaxD,MAAM,UAAU,WAAW,CAAC,QAAyB,EAAE,IAAY;IACjE,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;IAChE,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;IACvE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,SAAS,GAAU,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAElG,MAAM,UAAU,aAAa,CAC3B,IAAY,EACZ,OAAsD,EAAE;IAExD,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,KAAe,CAAC;QACpB,IAAI,CAAC;YACH,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACpD,OAAO;QACT,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QACtF,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YACvB,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/roadmap/paths.d.ts
CHANGED
|
@@ -238,7 +238,11 @@ export declare function writeHistoryEntry(raw: string, status: RoadmapStatus, at
|
|
|
238
238
|
* says whether the item is parked or declined (inbox-intake-bar/AC-15). Optional here
|
|
239
239
|
* because this function moves items in every direction, and the rule about `hold/`
|
|
240
240
|
* belongs to the flow that decided to park something, not to the file mover.
|
|
241
|
-
*
|
|
241
|
+
*
|
|
242
|
+
* Writes the item and nothing else (html-roadmap-view/AC-35). It used to rebuild two
|
|
243
|
+
* committed Mermaid graphs as well, so every promotion left two shared generated files
|
|
244
|
+
* modified in whichever checkout ran it; `aidlc roadmap view` now draws the roadmap on
|
|
245
|
+
* demand, outside the working tree.
|
|
242
246
|
*
|
|
243
247
|
* @returns The new absolute path.
|
|
244
248
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/roadmap/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/roadmap/paths.ts"],"names":[],"mappings":"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"}
|
package/dist/roadmap/paths.js
CHANGED
|
@@ -16,7 +16,6 @@ import { existsSync, readFileSync, readdirSync, realpathSync, renameSync, writeF
|
|
|
16
16
|
import { basename, dirname, isAbsolute, join } from 'node:path';
|
|
17
17
|
import { parse as parseYaml } from 'yaml';
|
|
18
18
|
import { primaryWorkingTree } from '../concurrency/common-dir.js';
|
|
19
|
-
import { writeGraphs } from './graph.js';
|
|
20
19
|
/** The five status directories, in lifecycle order. */
|
|
21
20
|
export const ROADMAP_STATUSES = ['inbox', 'backlog', 'in-progress', 'done', 'hold'];
|
|
22
21
|
/** Repo-relative roadmap root. */
|
|
@@ -412,7 +411,11 @@ export function writeHistoryEntry(raw, status, at, reason) {
|
|
|
412
411
|
* says whether the item is parked or declined (inbox-intake-bar/AC-15). Optional here
|
|
413
412
|
* because this function moves items in every direction, and the rule about `hold/`
|
|
414
413
|
* belongs to the flow that decided to park something, not to the file mover.
|
|
415
|
-
*
|
|
414
|
+
*
|
|
415
|
+
* Writes the item and nothing else (html-roadmap-view/AC-35). It used to rebuild two
|
|
416
|
+
* committed Mermaid graphs as well, so every promotion left two shared generated files
|
|
417
|
+
* modified in whichever checkout ran it; `aidlc roadmap view` now draws the roadmap on
|
|
418
|
+
* demand, outside the working tree.
|
|
416
419
|
*
|
|
417
420
|
* @returns The new absolute path.
|
|
418
421
|
*/
|
|
@@ -426,13 +429,6 @@ export function moveItem(item, cwd, status, at, reason) {
|
|
|
426
429
|
mkdirSync(dir, { recursive: true });
|
|
427
430
|
const target = join(dir, item.filename);
|
|
428
431
|
renameSync(item.file, target);
|
|
429
|
-
// The move has happened; a graph that fails to rebuild must not undo or fail it.
|
|
430
|
-
try {
|
|
431
|
-
writeGraphs(root);
|
|
432
|
-
}
|
|
433
|
-
catch {
|
|
434
|
-
// `aidlc roadmap graph` rebuilds it and reports the error.
|
|
435
|
-
}
|
|
436
432
|
return target;
|
|
437
433
|
}
|
|
438
434
|
/**
|