autodev-cli 1.4.96 → 1.4.101
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/media/profile/00-identity.md +8 -20
- package/media/profile/01-learning.md +12 -19
- package/media/profile/02-memory-mcp.md +4 -44
- package/media/profile/03-living-docs.md +10 -13
- package/media/profile/04-skill-files.md +3 -5
- package/media/profile/05-skill-creation.md +3 -14
- package/media/profile/06-core-rules.md +10 -47
- package/media/profile/07-core-loop.md +8 -25
- package/media/profile/08-thinking.md +10 -23
- package/media/profile/09-parallel-panel.md +9 -24
- package/media/profile/10-codebase-verification.md +7 -16
- package/media/profile/11-git-debug-security.md +5 -10
- package/media/profile/12-todo-format.md +3 -16
- package/media/profile/13-workflow-principles.md +3 -7
- package/media/profile/14-contracts.md +9 -12
- package/media/profile/15-soul.md +6 -8
- package/media/profile/16-journal.md +5 -32
- package/media/profile/17-issue-tracking.md +9 -14
- package/media/profile/18-knowledgebase.md +6 -9
- package/media/profile/19-subagent-context-management.md +11 -496
- package/media/profile/20-project-graph.md +23 -49
- package/out/commands/mcpOperate.js +150 -32
- package/out/commands/mcpOperate.js.map +1 -1
- package/out/core/controlSpec.d.ts +56 -0
- package/out/core/controlSpec.js +267 -0
- package/out/core/controlSpec.js.map +1 -0
- package/out/dispatcher.js +3 -1
- package/out/dispatcher.js.map +1 -1
- package/out/graphRender.d.ts +87 -0
- package/out/graphRender.js +279 -0
- package/out/graphRender.js.map +1 -0
- package/out/graphStore.d.ts +377 -2
- package/out/graphStore.js +1240 -64
- package/out/graphStore.js.map +1 -1
- package/out/journal.d.ts +35 -0
- package/out/journal.js +167 -0
- package/out/journal.js.map +1 -0
- package/out/messageBuilder.d.ts +1 -1
- package/out/messageBuilder.js +29 -29
- package/out/messageBuilder.js.map +1 -1
- package/out/openCodeHooksManager.js +41 -1
- package/out/openCodeHooksManager.js.map +1 -1
- package/out/periodicActions.d.ts +18 -0
- package/out/periodicActions.js +49 -0
- package/out/periodicActions.js.map +1 -1
- package/out/profileBuilder.d.ts +1 -1
- package/out/profileBuilder.js +31 -4
- package/out/profileBuilder.js.map +1 -1
- package/out/taskLoop.d.ts +19 -0
- package/out/taskLoop.js +227 -4
- package/out/taskLoop.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Presentation for the project graph — how nodes/subgraphs are rendered for the
|
|
4
|
+
* model. Kept SEPARATE from the store (graphStore.ts) so it is pure and unit-
|
|
5
|
+
* testable, and so Tier 1 (ranking / summaries / graph_search) can build on it.
|
|
6
|
+
*
|
|
7
|
+
* Two rules the model relies on:
|
|
8
|
+
* - Truncation is EXPLICIT — an over-cap body ends with a pointer to the full
|
|
9
|
+
* text; a token-budgeted subgraph reports what it omitted. Never a silent clip.
|
|
10
|
+
* - Uncertainty is VISIBLE — unverified inferences and incident `contradicts`
|
|
11
|
+
* edges are surfaced inline so a silently-conflicting fact can't slip past.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.DEFAULT_TOKEN_BUDGET = exports.BODY_CAP = void 0;
|
|
15
|
+
exports.fmtNode = fmtNode;
|
|
16
|
+
exports.renderMap = renderMap;
|
|
17
|
+
exports.renderSearch = renderSearch;
|
|
18
|
+
exports.renderNeighbors = renderNeighbors;
|
|
19
|
+
exports.renderToc = renderToc;
|
|
20
|
+
/** Max body chars shown inline before an explicit truncation pointer. */
|
|
21
|
+
exports.BODY_CAP = 200;
|
|
22
|
+
/** Default token budget for a rendered neighbourhood. */
|
|
23
|
+
exports.DEFAULT_TOKEN_BUDGET = 1500;
|
|
24
|
+
/**
|
|
25
|
+
* One node as a compact, citable line. `conflicts` are the node's incident
|
|
26
|
+
* `contradicts` edges (from {@link GraphStore.contradictionsFor}); when present
|
|
27
|
+
* they are appended as `⚠ contradicts [id] "name"`. A summary — authored (`≡`) or
|
|
28
|
+
* a synthesized structural rollup via `opts.summary` (`≡~`) — is preferred over the
|
|
29
|
+
* body as the node's gist (Tier 1, item 3).
|
|
30
|
+
*/
|
|
31
|
+
function fmtNode(n, conflicts, opts) {
|
|
32
|
+
const tags = [];
|
|
33
|
+
if (n.source) {
|
|
34
|
+
tags.push(`src=${n.source}`);
|
|
35
|
+
}
|
|
36
|
+
if (n.version) {
|
|
37
|
+
tags.push(`v=${n.version}`);
|
|
38
|
+
}
|
|
39
|
+
if (n.inference) {
|
|
40
|
+
tags.push('inference:unverified');
|
|
41
|
+
}
|
|
42
|
+
if (n.supersededBy) {
|
|
43
|
+
tags.push(`superseded→${n.supersededBy}`);
|
|
44
|
+
}
|
|
45
|
+
const authored = n.summary && n.summary.trim() ? n.summary.trim() : '';
|
|
46
|
+
const sumText = authored || (opts?.summary || '').trim();
|
|
47
|
+
const synthesized = authored ? false : !!opts?.synthesized;
|
|
48
|
+
if (authored && opts?.stale) {
|
|
49
|
+
tags.push('summary:stale');
|
|
50
|
+
}
|
|
51
|
+
let gist = '';
|
|
52
|
+
if (sumText) {
|
|
53
|
+
const clean = sumText.replace(/\s+/g, ' ').trim();
|
|
54
|
+
const shown = clean.length > exports.BODY_CAP ? `${clean.slice(0, exports.BODY_CAP)}…` : clean;
|
|
55
|
+
gist = ` ${synthesized ? '≡~' : '≡'} ${shown}`;
|
|
56
|
+
}
|
|
57
|
+
else if (n.body) {
|
|
58
|
+
const clean = n.body.replace(/\s+/g, ' ').trim();
|
|
59
|
+
gist = clean.length > exports.BODY_CAP
|
|
60
|
+
? ` — ${clean.slice(0, exports.BODY_CAP)}…(+${clean.length - exports.BODY_CAP} chars — full via graph_query id=${n.id})`
|
|
61
|
+
: ` — ${clean}`;
|
|
62
|
+
}
|
|
63
|
+
const conf = (conflicts && conflicts.length)
|
|
64
|
+
? conflicts.map((c) => ` ⚠ contradicts [${c.id}] "${c.name}"`).join('')
|
|
65
|
+
: '';
|
|
66
|
+
return `- [${n.id}] ${n.type} "${n.name}"${tags.length ? ' (' + tags.join(', ') + ')' : ''}${gist}${conf}`;
|
|
67
|
+
}
|
|
68
|
+
/** One map entry line: `[id] type "name" · deg=N ≡ summary`. */
|
|
69
|
+
function fmtMapEntry(e) {
|
|
70
|
+
const sum = e.summary
|
|
71
|
+
? ` ${e.synthesized ? '≡~' : '≡'} ${e.summary.replace(/\s+/g, ' ').trim().slice(0, exports.BODY_CAP)}${e.stale ? ' (stale)' : ''}`
|
|
72
|
+
: '';
|
|
73
|
+
return `- [${e.id}] ${e.type} "${e.name}" · deg=${e.degree}${sum}`;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Render the cold-start anchor index (Tier 1, item 2): the connectivity hubs plus
|
|
77
|
+
* the open questions, freshest decisions, and live contradictions — the "where do
|
|
78
|
+
* I start" entry point an agent reads at task start.
|
|
79
|
+
*/
|
|
80
|
+
function renderMap(m) {
|
|
81
|
+
const sections = [];
|
|
82
|
+
if (m.pinned && m.pinned.length) {
|
|
83
|
+
sections.push(`PINNED · core (${m.pinned.length} — always shown):\n${m.pinned.map(fmtMapEntry).join('\n')}`);
|
|
84
|
+
}
|
|
85
|
+
sections.push(`HUBS (by connectivity, ${m.hubs.length}):\n${m.hubs.map(fmtMapEntry).join('\n') || '(none — graph is sparse or unlinked)'}`);
|
|
86
|
+
if (m.questions.length) {
|
|
87
|
+
sections.push(`OPEN QUESTIONS (${m.questions.length}):\n${m.questions.map(fmtMapEntry).join('\n')}`);
|
|
88
|
+
}
|
|
89
|
+
if (m.decisions.length) {
|
|
90
|
+
sections.push(`RECENT DECISIONS (${m.decisions.length}):\n${m.decisions.map(fmtMapEntry).join('\n')}`);
|
|
91
|
+
}
|
|
92
|
+
if (m.contradictions.length) {
|
|
93
|
+
sections.push(`LIVE CONTRADICTIONS (${m.contradictions.length}):\n`
|
|
94
|
+
+ m.contradictions.map((c) => `- [${c.a.id}] "${c.a.name}" ⚔ [${c.b.id}] "${c.b.name}"`).join('\n'));
|
|
95
|
+
}
|
|
96
|
+
return `Project graph map — where to start:\n${sections.join('\n')}\n`
|
|
97
|
+
+ `Expand any [id] with graph_neighbors, or dig a question with graph_search.`;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Render a graph_search bundle (Tier 1, item 4): a ranked, citable list. Each row
|
|
101
|
+
* cites `[id]` with a one-line WHY — the matched terms and the edge-path from its
|
|
102
|
+
* seed — plus contradiction / unverified-inference flags. Vectorless + explainable.
|
|
103
|
+
*/
|
|
104
|
+
function renderSearch(res) {
|
|
105
|
+
if (!res.rows.length) {
|
|
106
|
+
return `graph_search "${res.intent}" — no nodes matched (terms: ${res.terms.join(', ') || '∅'}). Add facts with graph_add_node.`;
|
|
107
|
+
}
|
|
108
|
+
const lines = res.rows.map((r, i) => {
|
|
109
|
+
const why = [];
|
|
110
|
+
why.push(r.matched.length ? `matched {${r.matched.join(', ')}}` : 'reached via provenance');
|
|
111
|
+
if (r.via) {
|
|
112
|
+
why.push(`via ${r.via.fromId} —${r.via.edge}${r.via.dir === 'out' ? '→' : '←'}`);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
why.push('seed');
|
|
116
|
+
}
|
|
117
|
+
const flags = [];
|
|
118
|
+
if (r.inference) {
|
|
119
|
+
flags.push('⚠inference:unverified');
|
|
120
|
+
}
|
|
121
|
+
for (const c of r.conflicts) {
|
|
122
|
+
flags.push(`⚠contradicts [${c.id}]`);
|
|
123
|
+
}
|
|
124
|
+
const gist = r.summary ? `\n ${r.synthesized ? '≡~' : '≡'} ${r.summary.replace(/\s+/g, ' ').trim().slice(0, exports.BODY_CAP)}` : '';
|
|
125
|
+
const pathStr = r.path.length ? `\n path: ${res.rows[i].seedId} ▸ ${r.path.join(' ▸ ')}` : '';
|
|
126
|
+
return `${i + 1}. [${r.id}] ${r.type} "${r.name}" (score=${r.score.toFixed(3)})`
|
|
127
|
+
+ ` — ${why.join('; ')}${flags.length ? ' · ' + flags.join(' ') : ''}${gist}${pathStr}`;
|
|
128
|
+
});
|
|
129
|
+
return `graph_search "${res.intent}" — ${res.rows.length} node(s), best-first ≤${res.budget}, ${res.hops} hop(s) (terms: ${res.terms.join(', ') || '∅'}):\n`
|
|
130
|
+
+ lines.join('\n');
|
|
131
|
+
}
|
|
132
|
+
/** ~4 chars per token. */
|
|
133
|
+
function estTokens(s) { return Math.ceil(s.length / 4); }
|
|
134
|
+
/** A node line stripped to name-only (drops body/summary) — the first degradation tier. */
|
|
135
|
+
function nameOnlyLine(n, conflicts) {
|
|
136
|
+
return fmtNode({ id: n.id, type: n.type, name: n.name, source: n.source, version: n.version, inference: n.inference, supersededBy: n.supersededBy }, conflicts);
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Render a bounded neighbourhood (Tier 2, item 4). Order: center → pinned core →
|
|
140
|
+
* neighbours ranked by hop-proximity then recency. Fill to `tokenBudget`; when a
|
|
141
|
+
* node won't fit, DEGRADE in tiers rather than silently drop — (a) body→name-only,
|
|
142
|
+
* (b) substitute a branch's rollup summary for its members, (c) explicit
|
|
143
|
+
* `…N more omitted`. Center + pinned nodes ALWAYS appear (degraded if need be).
|
|
144
|
+
*/
|
|
145
|
+
function renderNeighbors(res, opts) {
|
|
146
|
+
const budget = Math.max(200, opts.tokenBudget ?? exports.DEFAULT_TOKEN_BUDGET);
|
|
147
|
+
const centerId = res.center.id;
|
|
148
|
+
const pinned = (opts.pinned || []).filter((n) => n.id !== centerId);
|
|
149
|
+
const pinnedIds = new Set(pinned.map((n) => n.id));
|
|
150
|
+
const ranked = [...res.nodes]
|
|
151
|
+
.filter((n) => n.id !== centerId && !pinnedIds.has(n.id))
|
|
152
|
+
.sort((x, y) => {
|
|
153
|
+
const dx = res.dist[x.id] ?? 99, dy = res.dist[y.id] ?? 99;
|
|
154
|
+
if (dx !== dy) {
|
|
155
|
+
return dx - dy;
|
|
156
|
+
}
|
|
157
|
+
return (y.updatedAt || '').localeCompare(x.updatedAt || '');
|
|
158
|
+
});
|
|
159
|
+
const order = [res.center, ...pinned, ...ranked];
|
|
160
|
+
// parent_of children within the candidate set — for branch rollup substitution (b).
|
|
161
|
+
const candIds = new Set(order.map((n) => n.id));
|
|
162
|
+
const childrenInSet = new Map();
|
|
163
|
+
for (const e of res.edges) {
|
|
164
|
+
if (e.type === 'parent_of' && candIds.has(e.from) && candIds.has(e.to)) {
|
|
165
|
+
const arr = childrenInSet.get(e.from);
|
|
166
|
+
if (arr) {
|
|
167
|
+
arr.push(e.to);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
childrenInSet.set(e.from, [e.to]);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
const fullLine = (n) => {
|
|
175
|
+
const es = opts.effectiveSummaryFor?.(n);
|
|
176
|
+
return fmtNode(n, opts.conflictsFor(n.id), es ? { summary: es.synthesized ? es.text : undefined, synthesized: es.synthesized } : undefined);
|
|
177
|
+
};
|
|
178
|
+
const nodeLines = [];
|
|
179
|
+
const shownIds = new Set();
|
|
180
|
+
const collapsedChildren = new Set();
|
|
181
|
+
let used = 0, degraded = 0, collapsed = 0;
|
|
182
|
+
for (const n of order) {
|
|
183
|
+
if (collapsedChildren.has(n.id)) {
|
|
184
|
+
continue;
|
|
185
|
+
} // represented by a parent's rollup line
|
|
186
|
+
const must = n.id === centerId || pinnedIds.has(n.id);
|
|
187
|
+
const full = fullLine(n);
|
|
188
|
+
const fullCost = estTokens(full);
|
|
189
|
+
if (!nodeLines.length || used + fullCost <= budget) {
|
|
190
|
+
nodeLines.push(full);
|
|
191
|
+
shownIds.add(n.id);
|
|
192
|
+
used += fullCost;
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
// (b) collapse a real branch to its rollup summary
|
|
196
|
+
const kids = childrenInSet.get(n.id);
|
|
197
|
+
const roll = kids && kids.length >= 2 ? opts.rollupFor?.(n.id) : undefined;
|
|
198
|
+
if (roll) {
|
|
199
|
+
const line = `- [${n.id}] ${n.type} "${n.name}" ≡~ ${roll.replace(/\s+/g, ' ').trim().slice(0, exports.BODY_CAP)} (branch collapsed: token_budget)`;
|
|
200
|
+
if (used + estTokens(line) <= budget) {
|
|
201
|
+
nodeLines.push(line);
|
|
202
|
+
shownIds.add(n.id);
|
|
203
|
+
used += estTokens(line);
|
|
204
|
+
collapsed++;
|
|
205
|
+
for (const k of kids) {
|
|
206
|
+
if (!shownIds.has(k)) {
|
|
207
|
+
collapsedChildren.add(k);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// (a) name-only
|
|
214
|
+
const name = `${nameOnlyLine(n, opts.conflictsFor(n.id))} (name-only: token_budget)`;
|
|
215
|
+
if (must || used + estTokens(name) <= budget) {
|
|
216
|
+
nodeLines.push(name);
|
|
217
|
+
shownIds.add(n.id);
|
|
218
|
+
used += estTokens(name);
|
|
219
|
+
degraded++;
|
|
220
|
+
continue;
|
|
221
|
+
}
|
|
222
|
+
// (c) omitted — counted below.
|
|
223
|
+
}
|
|
224
|
+
const shownEdges = res.edges.filter((e) => shownIds.has(e.from) && shownIds.has(e.to));
|
|
225
|
+
const edgeLines = shownEdges.map((e) => `- (${e.from}) -${e.type}-> (${e.to})${e.source ? ` [src=${e.source}]` : ''}`);
|
|
226
|
+
const shownFromRes = res.nodes.filter((n) => shownIds.has(n.id)).length;
|
|
227
|
+
const collapsedFromRes = res.nodes.filter((n) => collapsedChildren.has(n.id)).length;
|
|
228
|
+
const omittedNodes = Math.max(0, res.nodes.length - shownFromRes - collapsedFromRes);
|
|
229
|
+
const omittedEdges = res.edges.length - shownEdges.length;
|
|
230
|
+
let out = `Context around [${res.center.id}] "${res.center.name}":\n`
|
|
231
|
+
+ `NODES (${shownIds.size} shown${pinned.length ? `, ${pinned.filter((p) => shownIds.has(p.id)).length} pinned` : ''}):\n${nodeLines.join('\n')}\n`
|
|
232
|
+
+ `EDGES (${shownEdges.length}/${res.edges.length}):\n${edgeLines.join('\n') || '(none)'}`;
|
|
233
|
+
const notes = [];
|
|
234
|
+
if (omittedNodes > 0 || omittedEdges > 0) {
|
|
235
|
+
notes.push(`…${omittedNodes} more nodes / ${omittedEdges} edges omitted (token_budget)`);
|
|
236
|
+
}
|
|
237
|
+
if (collapsed > 0) {
|
|
238
|
+
notes.push(`${collapsed} branch(es) collapsed to a rollup summary`);
|
|
239
|
+
}
|
|
240
|
+
if (degraded > 0) {
|
|
241
|
+
notes.push(`${degraded} shown name-only`);
|
|
242
|
+
}
|
|
243
|
+
if (notes.length) {
|
|
244
|
+
out += `\n${notes.join('; ')}; expand with graph_neighbors id=… or raise token_budget`;
|
|
245
|
+
}
|
|
246
|
+
return out;
|
|
247
|
+
}
|
|
248
|
+
/** Render one TOC node (and its subtree) as an indented outline with drill hints. */
|
|
249
|
+
function renderTocNode(n, indent, lines) {
|
|
250
|
+
const pad = ' '.repeat(indent);
|
|
251
|
+
const sum = n.summary ? ` ${n.synthesized ? '≡~' : '≡'} ${n.summary.replace(/\s+/g, ' ').trim().slice(0, exports.BODY_CAP)}` : '';
|
|
252
|
+
const cc = n.childCount ? ` · ${n.childCount} child${n.childCount === 1 ? '' : 'ren'}` : '';
|
|
253
|
+
lines.push(`${pad}- [${n.id}] ${n.type} "${n.name}"${cc}${sum}`);
|
|
254
|
+
for (const c of n.children) {
|
|
255
|
+
renderTocNode(c, indent + 1, lines);
|
|
256
|
+
}
|
|
257
|
+
if (n.moreChildren) {
|
|
258
|
+
lines.push(`${' '.repeat(indent + 1)}… +${n.moreChildren} more (drill: graph_toc root=${n.id})`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Render a navigable table-of-contents (Tier 2, item 2) as an indented outline —
|
|
263
|
+
* the PageIndex-style text-stripped overview. Each line carries `[id]` to drill a
|
|
264
|
+
* branch (`graph_toc root=<id>`) and its one-line summary; over-cap children
|
|
265
|
+
* collapse to `+K more`.
|
|
266
|
+
*/
|
|
267
|
+
function renderToc(res) {
|
|
268
|
+
if (!res.roots.length) {
|
|
269
|
+
return 'graph_toc — empty (no parent_of spine or clusters yet). Add facts with a file:line source to auto-build the tree, or graph_rollup a cluster.';
|
|
270
|
+
}
|
|
271
|
+
const lines = [];
|
|
272
|
+
for (const r of res.roots) {
|
|
273
|
+
renderTocNode(r, 0, lines);
|
|
274
|
+
}
|
|
275
|
+
return `Project graph TOC${res.clustered ? ' (clustered — sparse parent_of spine)' : ''}:\n`
|
|
276
|
+
+ `${lines.join('\n')}\n`
|
|
277
|
+
+ 'Drill a branch: graph_toc root=<id>. Build the tree with file:line sources or graph_rollup.';
|
|
278
|
+
}
|
|
279
|
+
//# sourceMappingURL=graphRender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphRender.js","sourceRoot":"","sources":["../src/graphRender.ts"],"names":[],"mappings":"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"}
|