adr-kit 0.2.5 → 0.2.7
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/README.md +47 -39
- package/README.zh.md +43 -36
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +10 -11
- package/dist/cli.js.map +1 -1
- package/dist/commands/accept.d.ts.map +1 -1
- package/dist/commands/accept.js +12 -14
- package/dist/commands/accept.js.map +1 -1
- package/dist/commands/decide.d.ts.map +1 -1
- package/dist/commands/decide.js +3 -2
- package/dist/commands/decide.js.map +1 -1
- package/dist/commands/init.js +2 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/instructions.d.ts.map +1 -1
- package/dist/commands/instructions.js +24 -25
- package/dist/commands/instructions.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +14 -14
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/propose.d.ts.map +1 -1
- package/dist/commands/propose.js +12 -5
- package/dist/commands/propose.js.map +1 -1
- package/dist/commands/reject.d.ts +1 -1
- package/dist/commands/reject.d.ts.map +1 -1
- package/dist/commands/reject.js +8 -20
- package/dist/commands/reject.js.map +1 -1
- package/dist/commands/show.d.ts.map +1 -1
- package/dist/commands/show.js +16 -2
- package/dist/commands/show.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +15 -14
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/supersede.d.ts.map +1 -1
- package/dist/commands/supersede.js +7 -2
- package/dist/commands/supersede.js.map +1 -1
- package/dist/core/adr.d.ts +10 -4
- package/dist/core/adr.d.ts.map +1 -1
- package/dist/core/adr.js +14 -23
- package/dist/core/adr.js.map +1 -1
- package/dist/core/git.d.ts +9 -0
- package/dist/core/git.d.ts.map +1 -0
- package/dist/core/git.js +22 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/repository.d.ts +11 -0
- package/dist/core/repository.d.ts.map +1 -1
- package/dist/core/repository.js +92 -16
- package/dist/core/repository.js.map +1 -1
- package/dist/core/templates.d.ts +7 -7
- package/dist/core/templates.d.ts.map +1 -1
- package/dist/core/templates.js +15 -25
- package/dist/core/templates.js.map +1 -1
- package/dist/core/tool-integrations.d.ts.map +1 -1
- package/dist/core/tool-integrations.js +33 -26
- package/dist/core/tool-integrations.js.map +1 -1
- package/dist/core/validate.d.ts +6 -0
- package/dist/core/validate.d.ts.map +1 -1
- package/dist/core/validate.js +103 -94
- package/dist/core/validate.js.map +1 -1
- package/package.json +3 -3
package/dist/core/repository.js
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync, } from 'node:fs';
|
|
2
|
-
import { basename, join, relative, resolve } from 'node:path';
|
|
2
|
+
import { basename, dirname, join, posix, relative, resolve } from 'node:path';
|
|
3
3
|
import { ADR_DIR, CONFIG_FILE, configPath } from './config.js';
|
|
4
4
|
import { parseAdrFile } from './adr.js';
|
|
5
|
-
|
|
5
|
+
/** Durable records live in one folder; status is carried in the front matter. */
|
|
6
|
+
export const FOLDERS = ['decisions'];
|
|
7
|
+
/**
|
|
8
|
+
* Ephemeral proposal drafts. Created lazily on the first `adrkit propose`,
|
|
9
|
+
* gitignored (init writes `adr/.gitignore`), never validated by `adrkit
|
|
10
|
+
* validate` and never durable until `accept` promotes one into decisions/.
|
|
11
|
+
*/
|
|
12
|
+
export const DRAFTS_DIR = '.drafts';
|
|
6
13
|
function initConfig(tools) {
|
|
7
14
|
// tools 始终作为顶层键输出:全注释的 YAML 文档会被解析为空,
|
|
8
15
|
// readConfig 的 isMap 检查会报 "top-level value must be a mapping"。
|
|
@@ -28,15 +35,17 @@ ${toolsYaml}
|
|
|
28
35
|
const INIT_README = `# Architecture Decision Records
|
|
29
36
|
|
|
30
37
|
This directory is an ADR Kit repository. Each record is plain Markdown with a
|
|
31
|
-
machine-checkable header
|
|
38
|
+
machine-checkable header. Decisions are durable; proposals are ephemeral drafts.
|
|
32
39
|
|
|
33
40
|
## Folders
|
|
34
41
|
|
|
35
42
|
| Folder | Meaning |
|
|
36
43
|
| --- | --- |
|
|
37
|
-
| \`decisions/\` |
|
|
38
|
-
|
|
|
39
|
-
|
|
44
|
+
| \`decisions/\` | Decisions, numbered sequentially, immutable history (accepted or superseded) |
|
|
45
|
+
| \`.drafts/\` | Proposal drafts, gitignored and ephemeral - promote one with \`adrkit accept\` or discard it with \`adrkit reject\` |
|
|
46
|
+
|
|
47
|
+
Rejection is recorded in a decision's \`Alternatives considered\` section, never
|
|
48
|
+
as a standalone record.
|
|
40
49
|
|
|
41
50
|
## Record format
|
|
42
51
|
|
|
@@ -44,20 +53,22 @@ Every record starts with a YAML front matter block:
|
|
|
44
53
|
|
|
45
54
|
\`\`\`markdown
|
|
46
55
|
---
|
|
47
|
-
status:
|
|
56
|
+
status: accepted | superseded
|
|
48
57
|
date: YYYY-MM-DD
|
|
58
|
+
commit: abc1234
|
|
49
59
|
---
|
|
50
60
|
|
|
51
|
-
# ADR: <title>
|
|
61
|
+
# ADR: N <title>
|
|
52
62
|
\`\`\`
|
|
53
63
|
|
|
54
|
-
|
|
64
|
+
Decisions use \`# ADR: N <title>\` and require \`Problem\`, \`Decision\`,
|
|
65
|
+
\`Alternatives considered\`, and \`Consequences\`. Superseded decisions add
|
|
55
66
|
\`superseded-by: N\`. The \`date\` field records when the current status was
|
|
56
|
-
reached; the CLI stamps it at every lifecycle move
|
|
57
|
-
|
|
58
|
-
\`Problem\`, \`
|
|
59
|
-
|
|
60
|
-
\`
|
|
67
|
+
reached; the CLI stamps it at every lifecycle move, alongside the git \`commit\`
|
|
68
|
+
the decision was recorded against. Drafts (\`adr/.drafts/\`, \`status:
|
|
69
|
+
proposed\`) require \`Problem\`, \`Proposal\`, \`Alternatives considered\`,
|
|
70
|
+
\`Acceptance criteria\`, and \`Risks\`; \`adrkit accept\` promotes one into a
|
|
71
|
+
decision, and \`adrkit reject\` discards it without leaving a record.
|
|
61
72
|
|
|
62
73
|
Run \`adrkit validate\` to check every record.
|
|
63
74
|
`;
|
|
@@ -79,6 +90,12 @@ export function initRepository(targetDir, tools = []) {
|
|
|
79
90
|
const config = configPath(root);
|
|
80
91
|
writeFileSync(config, initConfig(tools));
|
|
81
92
|
created.push(`${ADR_DIR}/${CONFIG_FILE}`);
|
|
93
|
+
// Drafts are ephemeral and must never be committed; the guard ships with init
|
|
94
|
+
// so a draft can never leak into git, even before the first propose creates
|
|
95
|
+
// the directory.
|
|
96
|
+
const gitignore = join(adrRoot, '.gitignore');
|
|
97
|
+
writeFileSync(gitignore, `${DRAFTS_DIR}\n`);
|
|
98
|
+
created.push(`${ADR_DIR}/.gitignore`);
|
|
82
99
|
const readme = join(adrRoot, 'README.md');
|
|
83
100
|
writeFileSync(readme, INIT_README);
|
|
84
101
|
created.push(`${ADR_DIR}/README.md`);
|
|
@@ -87,8 +104,16 @@ export function initRepository(targetDir, tools = []) {
|
|
|
87
104
|
export function adrRoot(root) {
|
|
88
105
|
return join(root, ADR_DIR);
|
|
89
106
|
}
|
|
107
|
+
/**
|
|
108
|
+
* Physical directory name for a folder value. The drafts folder is named
|
|
109
|
+
* `.drafts` (dot-prefixed, gitignored) while the value carried on AdrRecord is
|
|
110
|
+
* the bare `drafts`.
|
|
111
|
+
*/
|
|
112
|
+
function folderDirName(folder) {
|
|
113
|
+
return folder === 'drafts' ? DRAFTS_DIR : folder;
|
|
114
|
+
}
|
|
90
115
|
export function folderPath(root, folder) {
|
|
91
|
-
return join(adrRoot(root), folder);
|
|
116
|
+
return join(adrRoot(root), folderDirName(folder));
|
|
92
117
|
}
|
|
93
118
|
export function listRecords(root) {
|
|
94
119
|
const records = [];
|
|
@@ -208,12 +233,60 @@ export function nextDecisionNumber(root) {
|
|
|
208
233
|
}
|
|
209
234
|
export function writeRecord(root, folder, fileName, content) {
|
|
210
235
|
const path = join(folderPath(root, folder), fileName);
|
|
236
|
+
// mkdir-on-write: a target folder may not exist yet (e.g. .drafts/ before the
|
|
237
|
+
// first propose, or a decisions/ that was removed). Creating it on demand
|
|
238
|
+
// keeps every lifecycle command correct without eager directory ceremony.
|
|
239
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
211
240
|
writeFileSync(path, content);
|
|
212
241
|
return path;
|
|
213
242
|
}
|
|
214
243
|
export function removeRecord(record) {
|
|
215
244
|
rmSync(record.path);
|
|
216
245
|
}
|
|
246
|
+
/** Path to the ephemeral drafts folder (`adr/.drafts/`). */
|
|
247
|
+
export function draftsPath(root) {
|
|
248
|
+
return join(adrRoot(root), DRAFTS_DIR);
|
|
249
|
+
}
|
|
250
|
+
export function listDrafts(root) {
|
|
251
|
+
const dir = draftsPath(root);
|
|
252
|
+
if (!existsSync(dir))
|
|
253
|
+
return [];
|
|
254
|
+
const drafts = [];
|
|
255
|
+
for (const entry of readdirSync(dir)) {
|
|
256
|
+
if (!entry.endsWith('.md'))
|
|
257
|
+
continue;
|
|
258
|
+
const path = join(dir, entry);
|
|
259
|
+
try {
|
|
260
|
+
const draft = parseAdrFile(path);
|
|
261
|
+
draft.folder = 'drafts';
|
|
262
|
+
drafts.push(draft);
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
266
|
+
throw new Error(`failed to parse ${relative(root, path)}: ${message}`);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
drafts.sort((a, b) => a.fileName.localeCompare(b.fileName));
|
|
270
|
+
return drafts;
|
|
271
|
+
}
|
|
272
|
+
function draftMatchesQuery(draft, needle) {
|
|
273
|
+
if (fileNameMatchesQuery(draft.fileName, needle))
|
|
274
|
+
return true;
|
|
275
|
+
return draft.title === needle || `# ADR: ${draft.title}` === needle;
|
|
276
|
+
}
|
|
277
|
+
export function resolveDraft(root, query) {
|
|
278
|
+
const needle = query.trim();
|
|
279
|
+
const drafts = listDrafts(root);
|
|
280
|
+
const candidates = drafts.filter((draft) => draftMatchesQuery(draft, needle));
|
|
281
|
+
if (candidates.length === 0) {
|
|
282
|
+
throw new Error(`no draft proposal matches "${query}"`);
|
|
283
|
+
}
|
|
284
|
+
if (candidates.length > 1) {
|
|
285
|
+
const paths = candidates.map((draft) => relative(root, draft.path)).join(', ');
|
|
286
|
+
throw new Error(`"${query}" is ambiguous; matches: ${paths}`);
|
|
287
|
+
}
|
|
288
|
+
return candidates[0];
|
|
289
|
+
}
|
|
217
290
|
export function readRecord(record) {
|
|
218
291
|
return readFileSync(record.path, 'utf8');
|
|
219
292
|
}
|
|
@@ -225,6 +298,9 @@ export function displayName(record) {
|
|
|
225
298
|
return record.title;
|
|
226
299
|
}
|
|
227
300
|
export function relativePath(record) {
|
|
228
|
-
|
|
301
|
+
// 始终输出 POSIX 风格路径:CLI 输出是用户可见文本,Windows 上也要
|
|
302
|
+
// 显示 adr/.drafts/... 而不是 adr\.drafts\...(与其它命令的硬编码
|
|
303
|
+
// 拼接保持一致,且测试断言跨平台稳定)。
|
|
304
|
+
return posix.join(ADR_DIR, folderDirName(record.folder), basename(record.path));
|
|
229
305
|
}
|
|
230
306
|
//# sourceMappingURL=repository.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/core/repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,MAAM,EACN,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../../src/core/repository.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,SAAS,EACT,WAAW,EACX,YAAY,EACZ,MAAM,EACN,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAkC,MAAM,UAAU,CAAC;AAExE,iFAAiF;AACjF,MAAM,CAAC,MAAM,OAAO,GAAgB,CAAC,WAAW,CAAC,CAAC;AAElD;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC;AAOpC,SAAS,UAAU,CAAC,KAAe;IACjC,sCAAsC;IACtC,+DAA+D;IAC/D,MAAM,SAAS,GAAG,WAAW,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACnD,OAAO;;;;;;;;EAQP,SAAS;;;;;;;;CAQV,CAAC;AACF,CAAC;AAED,MAAM,WAAW,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCnB,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,QAAkB,EAAE;IACpE,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,2CAA2C,OAAO,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACnC,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACrC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,MAAM,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,IAAI,WAAW,EAAE,CAAC,CAAC;IAE1C,8EAA8E;IAC9E,4EAA4E;IAC5E,iBAAiB;IACjB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9C,aAAa,CAAC,SAAS,EAAE,GAAG,UAAU,IAAI,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,aAAa,CAAC,CAAC;IAEtC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC1C,aAAa,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,YAAY,CAAC,CAAC;IAErC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,MAAiB;IACtC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,MAAiB;IACxD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAC/B,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,SAAS;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpB,MAAM,WAAW,GAAG,CAAC,MAAiB,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnE,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAClE,IAAI,WAAW,KAAK,CAAC;YAAE,OAAO,WAAW,CAAC;QAC1C,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW;YAAE,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB,EAAE,MAAc;IAC5D,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC9E,OAAO,QAAQ,KAAK,MAAM,IAAI,QAAQ,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,CAAC;AACvE,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,IAAY,EAAE,MAAc;IACzD,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAC/B,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,SAAS;YACrC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;gBACvB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC5C,MAAM,WAAW,GAAG,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC9E,MAAM,QAAQ,GACZ,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC;oBACnC,CAAC,WAAW,KAAK,IAAI,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;gBACtD,IAAI,QAAQ,EAAE,CAAC;oBACb,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;gBACzE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,KAAa;IACvD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,OAAoB,CAAC;IACzB,IAAI,CAAC;QACH,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;QAC3C,IAAI,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/D,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,IAAI,UAAU,MAAM,CAAC,KAAK,EAAE,KAAK,MAAM,EAAE,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;gBAC1C,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,GAAG,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjF,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,4BAA4B,KAAK,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,GAAG,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;YAChE,GAAG,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,GAAG,GAAG,CAAC,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,MAAiB,EAAE,QAAgB,EAAE,OAAe;IAC5F,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;IACtD,8EAA8E;IAC9E,0EAA0E;IAC1E,0EAA0E;IAC1E,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;YACjC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAgB,EAAE,MAAc;IACzD,IAAI,oBAAoB,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9D,OAAO,KAAK,CAAC,KAAK,KAAK,MAAM,IAAI,UAAU,KAAK,CAAC,KAAK,EAAE,KAAK,MAAM,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,KAAa;IACtD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9E,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,GAAG,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/E,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,4BAA4B,KAAK,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,UAAU,CAAC,CAAC,CAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAiB;IAC1C,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAiB;IAC3C,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACrE,MAAM,kBAAkB,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC/D,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;IACpD,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,4CAA4C;IAC5C,mDAAmD;IACnD,sBAAsB;IACtB,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAClF,CAAC"}
|
package/dist/core/templates.d.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { type AdrRecord } from './adr.js';
|
|
2
2
|
/**
|
|
3
3
|
* Render a YAML front matter block. Fields are written in the canonical
|
|
4
|
-
* order (status, date, reason, superseded-by); only the fields
|
|
5
|
-
* `fields` are emitted.
|
|
4
|
+
* order (status, date, commit, reason, superseded-by); only the fields
|
|
5
|
+
* present in `fields` are emitted.
|
|
6
6
|
*/
|
|
7
7
|
export declare function frontMatter(fields: Record<string, string | number>): string;
|
|
8
8
|
export declare function proposalTemplate(title: string, context?: string): string;
|
|
9
|
-
export declare function decisionTemplate(number: number, title: string, context?: string): string;
|
|
10
|
-
export declare function rejectedTemplate(title: string, reason: string): string;
|
|
9
|
+
export declare function decisionTemplate(number: number, title: string, context?: string, commit?: string): string;
|
|
11
10
|
/**
|
|
12
|
-
* Convert a proposal into an accepted decision using the same mechanical
|
|
11
|
+
* Convert a draft proposal into an accepted decision using the same mechanical
|
|
13
12
|
* rewrite the format requires: Proposal becomes Decision, and the
|
|
14
|
-
* acceptance criteria and risks are folded into Consequences.
|
|
13
|
+
* acceptance criteria and risks are folded into Consequences. `commit` anchors
|
|
14
|
+
* the decision to the code state it was recorded against.
|
|
15
15
|
*/
|
|
16
|
-
export declare function proposalToDecision(proposal: AdrRecord, number: number): string;
|
|
16
|
+
export declare function proposalToDecision(proposal: AdrRecord, number: number, commit?: string): string;
|
|
17
17
|
/**
|
|
18
18
|
* Proposal sections that have no place in an accepted decision and would be
|
|
19
19
|
* silently discarded by `proposalToDecision`. Only proposal-era leftovers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/core/templates.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,UAAU,CAAC;AAoClB;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAO3E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAyBxE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/core/templates.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,UAAU,CAAC;AAoClB;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAO3E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAyBxE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAuBzG;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAqD/F;AAMD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,SAAS,GAAG,MAAM,EAAE,CAI7D;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAyBlG"}
|
package/dist/core/templates.js
CHANGED
|
@@ -32,8 +32,8 @@ ${text}
|
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
34
|
* Render a YAML front matter block. Fields are written in the canonical
|
|
35
|
-
* order (status, date, reason, superseded-by); only the fields
|
|
36
|
-
* `fields` are emitted.
|
|
35
|
+
* order (status, date, commit, reason, superseded-by); only the fields
|
|
36
|
+
* present in `fields` are emitted.
|
|
37
37
|
*/
|
|
38
38
|
export function frontMatter(fields) {
|
|
39
39
|
const ordered = {};
|
|
@@ -70,8 +70,11 @@ ${contextBlock(context)}## Problem
|
|
|
70
70
|
<!-- What could go wrong, and what the change knowingly gives up. -->
|
|
71
71
|
`;
|
|
72
72
|
}
|
|
73
|
-
export function decisionTemplate(number, title, context) {
|
|
74
|
-
|
|
73
|
+
export function decisionTemplate(number, title, context, commit) {
|
|
74
|
+
const fields = { status: 'accepted', date: todayStamp() };
|
|
75
|
+
if (commit !== undefined)
|
|
76
|
+
fields.commit = commit;
|
|
77
|
+
return `${frontMatter(fields)}
|
|
75
78
|
# ADR: ${number} ${title}
|
|
76
79
|
|
|
77
80
|
${contextBlock(context)}## Problem
|
|
@@ -92,29 +95,13 @@ ${contextBlock(context)}## Problem
|
|
|
92
95
|
<!-- What the trade-off cost and bought. -->
|
|
93
96
|
`;
|
|
94
97
|
}
|
|
95
|
-
export function rejectedTemplate(title, reason) {
|
|
96
|
-
return `${frontMatter({ status: 'rejected', date: todayStamp(), reason })}
|
|
97
|
-
# ADR: ${title}
|
|
98
|
-
|
|
99
|
-
## Problem
|
|
100
|
-
|
|
101
|
-
<!-- What problem or opportunity was this proposal addressing? -->
|
|
102
|
-
|
|
103
|
-
## Proposal
|
|
104
|
-
|
|
105
|
-
<!-- The rejected proposal. -->
|
|
106
|
-
|
|
107
|
-
## Alternatives considered
|
|
108
|
-
|
|
109
|
-
<!-- Each genuine alternative and why it lost. -->
|
|
110
|
-
`;
|
|
111
|
-
}
|
|
112
98
|
/**
|
|
113
|
-
* Convert a proposal into an accepted decision using the same mechanical
|
|
99
|
+
* Convert a draft proposal into an accepted decision using the same mechanical
|
|
114
100
|
* rewrite the format requires: Proposal becomes Decision, and the
|
|
115
|
-
* acceptance criteria and risks are folded into Consequences.
|
|
101
|
+
* acceptance criteria and risks are folded into Consequences. `commit` anchors
|
|
102
|
+
* the decision to the code state it was recorded against.
|
|
116
103
|
*/
|
|
117
|
-
export function proposalToDecision(proposal, number) {
|
|
104
|
+
export function proposalToDecision(proposal, number, commit) {
|
|
118
105
|
const problem = sectionBody(proposal, 'Problem');
|
|
119
106
|
const decision = sectionBody(proposal, 'Proposal');
|
|
120
107
|
const alternatives = sectionBody(proposal, 'Alternatives considered');
|
|
@@ -136,7 +123,10 @@ export function proposalToDecision(proposal, number) {
|
|
|
136
123
|
// being dropped: a lifecycle move must never lose written content silently.
|
|
137
124
|
const passthrough = proposal.sections.filter((candidate) => !PRESERVED_SECTIONS.includes(candidate.heading) &&
|
|
138
125
|
!DROPPED_SECTION_HEADINGS.includes(candidate.heading));
|
|
139
|
-
|
|
126
|
+
const fields = { status: 'accepted', date: todayStamp() };
|
|
127
|
+
if (commit !== undefined)
|
|
128
|
+
fields.commit = commit;
|
|
129
|
+
let output = `${frontMatter(fields)}
|
|
140
130
|
# ADR: ${number} ${proposal.title}
|
|
141
131
|
|
|
142
132
|
## Problem
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/core/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,OAAO,EACP,UAAU,GAEX,MAAM,UAAU,CAAC;AAElB,oEAAoE;AACpE,MAAM,kBAAkB,GAAG;IACzB,SAAS;IACT,UAAU;IACV,yBAAyB;IACzB,qBAAqB;IACrB,OAAO;CACR,CAAC;AAEF;;;;;GAKG;AACH,MAAM,wBAAwB,GAAG,qBAAqB,CAAC,MAAM,CAC3D,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CACnD,CAAC;AAEF;;;;GAIG;AACH,SAAS,YAAY,CAAC,OAAuB;IAC3C,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACnC,oCAAoC;IACpC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5D,OAAO;EACP,IAAI;;CAEL,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAAuC;IACjE,MAAM,OAAO,GAAoC,EAAE,CAAC;IACpD,KAAK,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACrC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAChD,CAAC;IACD,OAAO,QAAQ,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,OAAgB;IAC9D,OAAO,GAAG,WAAW,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC;SAC1D,KAAK;;EAEZ,YAAY,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;;;;;;CAoBtB,CAAC;AACF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,KAAa,EAAE,OAAgB;
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/core/templates.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-integrations.d.ts","sourceRoot":"","sources":["../../src/core/tool-integrations.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,eAAe,oEAAqE,CAAC;AAClG,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAsBtD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAID,eAAO,MAAM,SAAS,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"tool-integrations.d.ts","sourceRoot":"","sources":["../../src/core/tool-integrations.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,eAAe,oEAAqE,CAAC;AAClG,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAsBtD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAID,eAAO,MAAM,SAAS,EAAE,QAAQ,EA+M/B,CAAC;AAEF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAwB9D;AAaD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CA8BtF;AAcD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAuB1E;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE,CAErF"}
|
|
@@ -40,14 +40,16 @@ Create an \`adr/\` repository in the target directory.
|
|
|
40
40
|
adrkit init [path]
|
|
41
41
|
\`\`\`
|
|
42
42
|
|
|
43
|
-
3. Confirm the output lists \`adr/config.yaml\`, \`adr/decisions\`,
|
|
44
|
-
\`adr
|
|
43
|
+
3. Confirm the output lists \`adr/config.yaml\`, \`adr/decisions\`, and
|
|
44
|
+
\`adr/.gitignore\`. Proposals are not a separate folder: they are ephemeral
|
|
45
|
+
drafts in \`adr/.drafts/\`, created by \`adrkit propose\`.
|
|
45
46
|
|
|
46
47
|
## Rules
|
|
47
48
|
|
|
48
49
|
- Never create \`adr/\` directories by hand; use the CLI so the config and
|
|
49
50
|
README stay canonical.
|
|
50
|
-
- After init, the next action is usually \`adrkit
|
|
51
|
+
- After init, the next action is usually \`adrkit decide "<title>"\`, or
|
|
52
|
+
\`adrkit propose "<title>"\` when the decision still needs review.`,
|
|
51
53
|
},
|
|
52
54
|
{
|
|
53
55
|
name: 'adrkit-propose',
|
|
@@ -56,8 +58,9 @@ adrkit init [path]
|
|
|
56
58
|
|
|
57
59
|
## Overview
|
|
58
60
|
|
|
59
|
-
Create
|
|
60
|
-
|
|
61
|
+
Create an ephemeral proposal draft in \`adr/.drafts/\`. A draft is temporary:
|
|
62
|
+
\`adrkit accept\` promotes it into a decision, \`adrkit reject\` discards it
|
|
63
|
+
without leaving a record.
|
|
61
64
|
|
|
62
65
|
## Steps
|
|
63
66
|
|
|
@@ -67,10 +70,11 @@ expected to fail \`adrkit validate\` until every required section is filled.
|
|
|
67
70
|
adrkit propose "<title>"
|
|
68
71
|
\`\`\`
|
|
69
72
|
|
|
70
|
-
2. Edit the created
|
|
73
|
+
2. Edit the created draft. Fill every section with real content:
|
|
71
74
|
\`## Problem\`, \`## Proposal\`, \`## Alternatives considered\`,
|
|
72
75
|
\`## Acceptance criteria\`, \`## Risks\`.
|
|
73
|
-
3.
|
|
76
|
+
3. Promote the completed draft with \`adrkit accept "<title>"\`; the CLI
|
|
77
|
+
validates it before promoting.
|
|
74
78
|
|
|
75
79
|
## Rules
|
|
76
80
|
|
|
@@ -89,8 +93,8 @@ adrkit propose "<title>"
|
|
|
89
93
|
|
|
90
94
|
## Overview
|
|
91
95
|
|
|
92
|
-
|
|
93
|
-
|
|
96
|
+
Record an already-made decision directly in \`adr/decisions/\` with the next
|
|
97
|
+
\`N\` number.
|
|
94
98
|
|
|
95
99
|
## Steps
|
|
96
100
|
|
|
@@ -131,24 +135,25 @@ adrkit validate [name] [--all] [--json]
|
|
|
131
135
|
## Rules
|
|
132
136
|
|
|
133
137
|
- Treat any non-OK output as a blocker for \`adrkit accept\`.
|
|
134
|
-
-
|
|
135
|
-
|
|
138
|
+
- \`adrkit validate\` checks durable decisions only; a draft in \`adr/.drafts/\`
|
|
139
|
+
is validated by \`adrkit accept\` right before it is promoted.`,
|
|
136
140
|
},
|
|
137
141
|
{
|
|
138
142
|
name: 'adrkit-accept',
|
|
139
|
-
description: 'Use when a
|
|
143
|
+
description: 'Use when a proposal draft is complete, and the team has decided to accept it.',
|
|
140
144
|
body: `# ADR Kit Accept
|
|
141
145
|
|
|
142
146
|
## Overview
|
|
143
147
|
|
|
144
|
-
|
|
145
|
-
\`N\`
|
|
146
|
-
\`Acceptance criteria\` and \`Risks\` into \`## Consequences\`,
|
|
147
|
-
|
|
148
|
+
Promote a completed draft to a decision. The CLI validates the draft, assigns
|
|
149
|
+
the next \`N\` number, rewrites \`## Proposal\` to \`## Decision\`, folds
|
|
150
|
+
\`Acceptance criteria\` and \`Risks\` into \`## Consequences\`, writes
|
|
151
|
+
\`adr/decisions/N-*.md\`, and discards the draft from \`adr/.drafts/\`.
|
|
148
152
|
|
|
149
153
|
## Steps
|
|
150
154
|
|
|
151
|
-
1.
|
|
155
|
+
1. Review the draft with \`adrkit show "<name>"\`; every section must have real
|
|
156
|
+
content before accepting.
|
|
152
157
|
2. Run:
|
|
153
158
|
|
|
154
159
|
\`\`\`bash
|
|
@@ -159,9 +164,9 @@ adrkit accept "<name>"
|
|
|
159
164
|
|
|
160
165
|
## Rules
|
|
161
166
|
|
|
162
|
-
- Never accept an invalid
|
|
163
|
-
- Re-run \`adrkit
|
|
164
|
-
|
|
167
|
+
- Never accept an invalid draft; the command refuses.
|
|
168
|
+
- Re-run \`adrkit show "<name>"\` immediately before accepting, even if you
|
|
169
|
+
reviewed it earlier in this conversation; the repo may have changed since.
|
|
165
170
|
- Review the generated \`## Consequences\` after accepting.
|
|
166
171
|
- The command warns when a proposal contains sections that have no place in
|
|
167
172
|
an accepted decision (for example \`## Plan\`); save their content elsewhere
|
|
@@ -169,24 +174,26 @@ adrkit accept "<name>"
|
|
|
169
174
|
},
|
|
170
175
|
{
|
|
171
176
|
name: 'adrkit-reject',
|
|
172
|
-
description: 'Use when a
|
|
177
|
+
description: 'Use when a proposal draft should be declined and discarded.',
|
|
173
178
|
body: `# ADR Kit Reject
|
|
174
179
|
|
|
175
180
|
## Overview
|
|
176
181
|
|
|
177
|
-
|
|
178
|
-
|
|
182
|
+
Discard a proposal draft. The CLI deletes the draft from \`adr/.drafts/\` and
|
|
183
|
+
leaves no record - rejection lives in the winning decision's
|
|
184
|
+
\`## Alternatives considered\`, not in a standalone rejected record.
|
|
179
185
|
|
|
180
186
|
## Steps
|
|
181
187
|
|
|
182
188
|
\`\`\`bash
|
|
183
|
-
adrkit reject "<name>" --reason "<why it was rejected>"
|
|
189
|
+
adrkit reject "<name>" [--reason "<why it was rejected>"]
|
|
184
190
|
\`\`\`
|
|
185
191
|
|
|
186
192
|
## Rules
|
|
187
193
|
|
|
188
|
-
-
|
|
189
|
-
|
|
194
|
+
- \`--reason\` is optional and is only echoed; nothing is persisted. If the
|
|
195
|
+
rejection matters, record it in \`## Alternatives considered\` of the decision
|
|
196
|
+
that won.`,
|
|
190
197
|
},
|
|
191
198
|
{
|
|
192
199
|
name: 'adrkit-supersede',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-integrations.js","sourceRoot":"","sources":["../../src/core/tool-integrations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/F,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAOpD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,CAAU,CAAC;AAGlG,MAAM,gBAAgB,GAA2B;IAC/C,MAAM,EAAE,kBAAkB;IAC1B,KAAK,EAAE,iBAAiB;IACxB,MAAM,EAAE,kBAAkB;IAC1B,gBAAgB,EAAE,iBAAiB;IACnC,MAAM,EAAE,kBAAkB;CAC3B,CAAC;AAEF;;;;GAIG;AACH,MAAM,cAAc,GAAoC;IACtD,MAAM,EAAE,gBAAgB;IACxB,KAAK,EAAE,eAAe;IACtB,MAAM,EAAE,gBAAgB;IACxB,MAAM,EAAE,gBAAgB;CACzB,CAAC;AAQF,mEAAmE;AACnE,gDAAgD;AAChD,MAAM,CAAC,MAAM,SAAS,GAAe;IACnC;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,gGAAgG;QAC7G,IAAI,EAAE
|
|
1
|
+
{"version":3,"file":"tool-integrations.js","sourceRoot":"","sources":["../../src/core/tool-integrations.ts"],"names":[],"mappings":"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"}
|
package/dist/core/validate.d.ts
CHANGED
|
@@ -4,6 +4,12 @@ export interface ValidationIssue {
|
|
|
4
4
|
message: string;
|
|
5
5
|
}
|
|
6
6
|
export declare function validateRecord(root: string, record: AdrRecord): ValidationIssue[];
|
|
7
|
+
/**
|
|
8
|
+
* Validate a draft proposal in `adr/.drafts/` before `accept` promotes it.
|
|
9
|
+
* Drafts are ephemeral and deliberately outside the `adrkit validate` surface;
|
|
10
|
+
* this is the gate that keeps a half-written proposal from becoming a decision.
|
|
11
|
+
*/
|
|
12
|
+
export declare function validateDraft(root: string, draft: AdrRecord): ValidationIssue[];
|
|
7
13
|
export declare function validateRepository(root: string): ValidationIssue[];
|
|
8
14
|
/**
|
|
9
15
|
* Repository-level checks for a single record: a `superseded-by: N` reference
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/core/validate.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/core/validate.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,SAAS,EAEf,MAAM,UAAU,CAAC;AAIlB,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAiED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,eAAe,EAAE,CA0DjF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,eAAe,EAAE,CA0B/E;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,CA+ClE;AA0BD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,SAAS,EAAE,GACnB,eAAe,EAAE,CAQnB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,CAI9D"}
|