adr-kit 0.3.0 → 0.5.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/README.md +18 -4
- package/README.zh.md +16 -5
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +17 -9
- package/dist/cli.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +6 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/graph.d.ts +2 -0
- package/dist/commands/graph.d.ts.map +1 -1
- package/dist/commands/graph.js +8 -3
- package/dist/commands/graph.js.map +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +7 -4
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/update.d.ts +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +10 -5
- package/dist/commands/update.js.map +1 -1
- package/dist/core/adr.d.ts +6 -1
- package/dist/core/adr.d.ts.map +1 -1
- package/dist/core/adr.js +21 -1
- package/dist/core/adr.js.map +1 -1
- package/dist/core/config.d.ts +5 -6
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +21 -9
- package/dist/core/config.js.map +1 -1
- package/dist/core/graph.d.ts +18 -3
- package/dist/core/graph.d.ts.map +1 -1
- package/dist/core/graph.js +107 -12
- package/dist/core/graph.js.map +1 -1
- package/dist/core/repository.d.ts +1 -1
- package/dist/core/repository.d.ts.map +1 -1
- package/dist/core/repository.js +12 -5
- package/dist/core/repository.js.map +1 -1
- package/dist/core/templates.d.ts.map +1 -1
- package/dist/core/templates.js +13 -3
- package/dist/core/templates.js.map +1 -1
- package/dist/core/tool-integrations.d.ts +16 -1
- package/dist/core/tool-integrations.d.ts.map +1 -1
- package/dist/core/tool-integrations.js +63 -5
- package/dist/core/tool-integrations.js.map +1 -1
- package/dist/core/validate.d.ts.map +1 -1
- package/dist/core/validate.js +48 -0
- package/dist/core/validate.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -74,7 +74,8 @@ Use github.com/luochang212/adr-kit in this repository to automatically record ke
|
|
|
74
74
|
## Commands
|
|
75
75
|
|
|
76
76
|
```text
|
|
77
|
-
adrkit init [path] [--tools <list>]
|
|
77
|
+
adrkit init [path] [--tools <list>] [--workflows <list>]
|
|
78
|
+
Initialize an ADR Kit repository
|
|
78
79
|
adrkit decide <title> Record an already-made decision (default path)
|
|
79
80
|
adrkit propose <title> Create an ephemeral proposal draft
|
|
80
81
|
adrkit accept <name> Promote a draft to a decision (assigns N)
|
|
@@ -85,9 +86,10 @@ adrkit show <name> Show a decision or draft
|
|
|
85
86
|
adrkit status [--json] Show lifecycle counts and validity
|
|
86
87
|
adrkit instructions [--json] Print the next step; flag pending drafts as ready or needing work
|
|
87
88
|
adrkit validate [name] [--all] [--json] Validate one record or the repository
|
|
88
|
-
adrkit update [--tools <list>]
|
|
89
|
+
adrkit update [--tools <list>] [--workflows <list>]
|
|
90
|
+
Rewrite AI tool integrations
|
|
89
91
|
adrkit config [--json] Print the current configuration
|
|
90
|
-
adrkit graph [--mermaid|--dot|--json] [--formal-only]
|
|
92
|
+
adrkit graph [--mermaid|--dot|--json|--text] [--formal-only] [--tag <tag>]
|
|
91
93
|
Emit the decision relationship graph
|
|
92
94
|
adrkit completion <bash|zsh|fish> Print a shell completion script
|
|
93
95
|
adrkit version Print the version
|
|
@@ -102,6 +104,13 @@ adrkit version Print the version
|
|
|
102
104
|
> If your team uses Claude Code, pass `--tools claude` to also install
|
|
103
105
|
> `.claude/` copies - an exception we carry until Anthropic adopts the standard.
|
|
104
106
|
|
|
107
|
+
> [!TIP]
|
|
108
|
+
> Every integration ships all seven workflow skills by default. A small
|
|
109
|
+
> repository that only records decisions can pass
|
|
110
|
+
> `--workflows init,decide,validate` to install a lean subset; the choice is
|
|
111
|
+
> recorded in `adr/config.yaml`, `adrkit update` keeps it, and
|
|
112
|
+
> `--workflows all` restores the full set.
|
|
113
|
+
|
|
105
114
|
`<name>` resolves by title, file name, or decision number (`1`).
|
|
106
115
|
|
|
107
116
|
## Docs
|
|
@@ -121,7 +130,9 @@ Every record is YAML front matter followed by a Markdown body:
|
|
|
121
130
|
---
|
|
122
131
|
status: accepted
|
|
123
132
|
date: 2026-08-19
|
|
133
|
+
created: 2026-08-17
|
|
124
134
|
commit: abc1234
|
|
135
|
+
tags: [frontend]
|
|
125
136
|
---
|
|
126
137
|
|
|
127
138
|
# ADR: 1 Use SQLite for session storage
|
|
@@ -132,7 +143,10 @@ commit: abc1234
|
|
|
132
143
|
|
|
133
144
|
The `date` field records when the current status was reached; the CLI
|
|
134
145
|
stamps it at every lifecycle move, alongside the git `commit` the decision
|
|
135
|
-
was recorded against.
|
|
146
|
+
was recorded against. `created` is the birth date, stamped once and never
|
|
147
|
+
re-stamped, so the time axis survives later lifecycle moves. Optional
|
|
148
|
+
`tags` (kebab-case keywords) let `adrkit graph` group and filter decisions
|
|
149
|
+
by theme. Decisions are immutable history; the current facts
|
|
136
150
|
live in code, not in the record.
|
|
137
151
|
|
|
138
152
|
- **Decisions** (`adr/decisions/N-slug.md`) are `accepted` or `superseded`
|
package/README.zh.md
CHANGED
|
@@ -71,7 +71,8 @@ adrkit list
|
|
|
71
71
|
## 命令
|
|
72
72
|
|
|
73
73
|
```text
|
|
74
|
-
adrkit init [path] [--tools <list>]
|
|
74
|
+
adrkit init [path] [--tools <list>] [--workflows <list>]
|
|
75
|
+
初始化 ADR Kit 仓库
|
|
75
76
|
adrkit decide <title> 直接记录已做的决策(默认路径)
|
|
76
77
|
adrkit propose <title> 创建临时提案草稿
|
|
77
78
|
adrkit accept <name> 把草稿提升为决策(分配 N 编号)
|
|
@@ -82,9 +83,10 @@ adrkit show <name> 查看决策或草稿
|
|
|
82
83
|
adrkit status [--json] 查看生命周期计数与校验状态
|
|
83
84
|
adrkit instructions [--json] 查看下一步;标注待决草稿已就绪或需修改
|
|
84
85
|
adrkit validate [name] [--all] [--json] 校验单条记录或整个仓库
|
|
85
|
-
adrkit update [--tools <list>]
|
|
86
|
+
adrkit update [--tools <list>] [--workflows <list>]
|
|
87
|
+
重写 AI 工具集成文件
|
|
86
88
|
adrkit config [--json] 查看当前配置
|
|
87
|
-
adrkit graph [--mermaid|--dot|--json] [--formal-only]
|
|
89
|
+
adrkit graph [--mermaid|--dot|--json|--text] [--formal-only] [--tag <tag>]
|
|
88
90
|
输出决策关系图
|
|
89
91
|
adrkit completion <bash|zsh|fish> 打印 shell 补全脚本
|
|
90
92
|
adrkit version 查看版本
|
|
@@ -98,6 +100,11 @@ adrkit version 查看版本
|
|
|
98
100
|
> 如果你的团队用 Claude Code,加 `--tools claude` 会同时安装 `.claude/`
|
|
99
101
|
> 副本——这个例外我们一直背到 Anthropic 采纳标准为止。
|
|
100
102
|
|
|
103
|
+
> [!TIP]
|
|
104
|
+
> 集成默认安装全部七个工作流技能。只记录决策的小仓库可传
|
|
105
|
+
> `--workflows init,decide,validate` 装精简子集;选择会写入
|
|
106
|
+
> `adr/config.yaml`,`adrkit update` 会保持,`--workflows all` 恢复全套。
|
|
107
|
+
|
|
101
108
|
`<name>` 支持按标题、文件名或决策编号(`1`)查找。
|
|
102
109
|
|
|
103
110
|
## 文档
|
|
@@ -117,7 +124,9 @@ adrkit version 查看版本
|
|
|
117
124
|
---
|
|
118
125
|
status: accepted
|
|
119
126
|
date: 2026-08-19
|
|
127
|
+
created: 2026-08-17
|
|
120
128
|
commit: abc1234
|
|
129
|
+
tags: [frontend]
|
|
121
130
|
---
|
|
122
131
|
|
|
123
132
|
# ADR: 1 使用 SQLite 存储会话
|
|
@@ -127,8 +136,10 @@ commit: abc1234
|
|
|
127
136
|
```
|
|
128
137
|
|
|
129
138
|
`date` 字段记录当前状态达成的日期;CLI 在每次生命周期迁移时自动盖章,
|
|
130
|
-
同时盖上该决策对应的 git `commit
|
|
131
|
-
|
|
139
|
+
同时盖上该决策对应的 git `commit`。`created` 是创建日期,创建时盖一次、
|
|
140
|
+
永不重盖,让时间轴在后续生命周期迁移后依然成立。可选的 `tags`(kebab-case
|
|
141
|
+
关键词)让 `adrkit graph` 按主题分组和过滤决策。决策是不可变历史;当前
|
|
142
|
+
事实以代码为准,不在记录里。
|
|
132
143
|
|
|
133
144
|
- **决策**(`adr/decisions/N-slug.md`)是 `accepted` 或 `superseded`,
|
|
134
145
|
需要 `Problem`、`Decision`、`Alternatives considered`、`Consequences`;
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AA4DA,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAiJzC"}
|
package/dist/cli.js
CHANGED
|
@@ -22,7 +22,8 @@ Decisions are durable records in adr/decisions/. Proposals are ephemeral drafts
|
|
|
22
22
|
in adr/.drafts/ that are promoted by accept or discarded by reject.
|
|
23
23
|
|
|
24
24
|
Usage:
|
|
25
|
-
adrkit init [path] [--tools <list>]
|
|
25
|
+
adrkit init [path] [--tools <list>] [--workflows <list>]
|
|
26
|
+
Initialize an ADR Kit repository
|
|
26
27
|
adrkit decide <title> Record a decision (default path)
|
|
27
28
|
adrkit propose <title> Create an ephemeral proposal draft
|
|
28
29
|
adrkit accept <name> Promote a draft to a decision (assigns the next number)
|
|
@@ -33,9 +34,10 @@ Usage:
|
|
|
33
34
|
adrkit status [--json] Show lifecycle counts and validity
|
|
34
35
|
adrkit instructions [--json] Print the next workflow step
|
|
35
36
|
adrkit validate [name] [--all] [--json] Validate one record or the whole repo
|
|
36
|
-
adrkit update [--tools <list>]
|
|
37
|
+
adrkit update [--tools <list>] [--workflows <list>]
|
|
38
|
+
Rewrite AI tool integrations
|
|
37
39
|
adrkit config [--json] Print the current configuration
|
|
38
|
-
adrkit graph [--mermaid|--dot|--json] [--formal-only]
|
|
40
|
+
adrkit graph [--mermaid|--dot|--json|--text] [--formal-only] [--tag <tag>]
|
|
39
41
|
Emit the decision relationship graph
|
|
40
42
|
adrkit completion <bash|zsh|fish> Print a shell completion script
|
|
41
43
|
adrkit version Print the version
|
|
@@ -44,10 +46,11 @@ Usage:
|
|
|
44
46
|
|
|
45
47
|
adrkit graph visualizes the decision history: solid edges are formal
|
|
46
48
|
superseded-by links, dashed edges are ADR-N references mined from record
|
|
47
|
-
bodies, and nodes group by date.
|
|
48
|
-
|
|
49
|
-
(dot -Tpng), --
|
|
50
|
-
the
|
|
49
|
+
bodies, and nodes group by their created date. --mermaid pastes into any
|
|
50
|
+
Markdown and renders natively on GitHub (nodes are tinted by their tags),
|
|
51
|
+
--dot feeds Graphviz (dot -Tpng), --text prints a terminal-friendly tree,
|
|
52
|
+
--json exposes the graph to other tools; --tag <tag> filters to one theme,
|
|
53
|
+
--formal-only drops the mined edges.
|
|
51
54
|
|
|
52
55
|
Run from anywhere inside the project; commands discover the nearest adr/ directory.
|
|
53
56
|
`;
|
|
@@ -63,8 +66,11 @@ export function main(argv) {
|
|
|
63
66
|
'formal-only': { type: 'boolean', default: false },
|
|
64
67
|
json: { type: 'boolean', default: false },
|
|
65
68
|
mermaid: { type: 'boolean', default: false },
|
|
69
|
+
text: { type: 'boolean', default: false },
|
|
70
|
+
tag: { type: 'string' },
|
|
66
71
|
reason: { type: 'string' },
|
|
67
72
|
tools: { type: 'string' },
|
|
73
|
+
workflows: { type: 'string' },
|
|
68
74
|
help: { type: 'boolean', short: 'h', default: false },
|
|
69
75
|
version: { type: 'boolean', short: 'V', default: false },
|
|
70
76
|
},
|
|
@@ -100,7 +106,7 @@ export function main(argv) {
|
|
|
100
106
|
}
|
|
101
107
|
case 'init': {
|
|
102
108
|
const target = rest[0] ?? process.cwd();
|
|
103
|
-
console.log(initCommand(target, values.tools));
|
|
109
|
+
console.log(initCommand(target, values.tools, values.workflows));
|
|
104
110
|
return;
|
|
105
111
|
}
|
|
106
112
|
case 'propose': {
|
|
@@ -153,7 +159,7 @@ export function main(argv) {
|
|
|
153
159
|
return;
|
|
154
160
|
}
|
|
155
161
|
case 'update': {
|
|
156
|
-
console.log(updateCommand(process.cwd(), values.tools));
|
|
162
|
+
console.log(updateCommand(process.cwd(), values.tools, values.workflows));
|
|
157
163
|
return;
|
|
158
164
|
}
|
|
159
165
|
case 'config': {
|
|
@@ -165,7 +171,9 @@ export function main(argv) {
|
|
|
165
171
|
mermaid: values.mermaid,
|
|
166
172
|
dot: values.dot,
|
|
167
173
|
json: values.json,
|
|
174
|
+
text: values.text,
|
|
168
175
|
formalOnly: values['formal-only'],
|
|
176
|
+
tag: values.tag,
|
|
169
177
|
}));
|
|
170
178
|
return;
|
|
171
179
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,MAAM,IAAI,GAAG,UAAU,OAAO
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAGA,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,MAAM,CA6BjE"}
|
package/dist/commands/config.js
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import { configPath, readConfig, requireRoot } from '../core/config.js';
|
|
2
|
+
import { WORKFLOW_NAMES } from '../core/tool-integrations.js';
|
|
2
3
|
export function configCommand(cwd, asJson = false) {
|
|
3
4
|
const root = requireRoot(cwd);
|
|
4
5
|
const config = readConfig(root);
|
|
6
|
+
// A missing `workflows` key means the full set (the default); report the
|
|
7
|
+
// effective selection so `config` never hides what `update` would install.
|
|
8
|
+
const workflows = config.workflows ?? WORKFLOW_NAMES;
|
|
5
9
|
if (asJson) {
|
|
6
10
|
return JSON.stringify({
|
|
7
11
|
path: configPath(root),
|
|
8
12
|
context: config.context ?? '',
|
|
9
13
|
rules: config.rules ?? {},
|
|
10
14
|
tools: config.tools ?? [],
|
|
15
|
+
workflows,
|
|
11
16
|
}, null, 2);
|
|
12
17
|
}
|
|
13
18
|
const lines = [`config: ${configPath(root)}`, ''];
|
|
@@ -17,6 +22,7 @@ export function configCommand(cwd, asJson = false) {
|
|
|
17
22
|
if (config.tools !== undefined && config.tools.length > 0) {
|
|
18
23
|
lines.push(`tools: ${config.tools.join(', ')}`, '');
|
|
19
24
|
}
|
|
25
|
+
lines.push(`workflows: ${workflows.join(', ')}`, '');
|
|
20
26
|
lines.push(`rules: ${JSON.stringify(config.rules ?? {})}`);
|
|
21
27
|
return lines.join('\n');
|
|
22
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,MAAM,GAAG,KAAK;IACvD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,yEAAyE;IACzE,2EAA2E;IAC3E,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,cAAc,CAAC;IACrD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,IAAI,CAAC,SAAS,CACnB;YACE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC;YACtB,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;YAC7B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;YACzB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;YACzB,SAAS;SACV,EACD,IAAI,EACJ,CAAC,CACF,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,WAAW,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAClD,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,cAAc,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACrD,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
package/dist/commands/graph.d.ts
CHANGED
|
@@ -2,7 +2,9 @@ export interface GraphFormatFlags {
|
|
|
2
2
|
mermaid?: boolean;
|
|
3
3
|
dot?: boolean;
|
|
4
4
|
json?: boolean;
|
|
5
|
+
text?: boolean;
|
|
5
6
|
formalOnly?: boolean;
|
|
7
|
+
tag?: string;
|
|
6
8
|
}
|
|
7
9
|
export declare function graphCommand(cwd: string, flags: GraphFormatFlags): string;
|
|
8
10
|
//# sourceMappingURL=graph.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAgBzE"}
|
package/dist/commands/graph.js
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
import { requireRoot } from '../core/config.js';
|
|
2
2
|
import { listRecords } from '../core/repository.js';
|
|
3
|
-
import { buildDecisionGraph, dotGraph, jsonGraph, mermaidGraph } from '../core/graph.js';
|
|
3
|
+
import { buildDecisionGraph, dotGraph, jsonGraph, mermaidGraph, textTree } from '../core/graph.js';
|
|
4
4
|
export function graphCommand(cwd, flags) {
|
|
5
|
-
const formats = ['mermaid', 'dot', 'json'].filter((format) => flags[format]);
|
|
5
|
+
const formats = ['mermaid', 'dot', 'json', 'text'].filter((format) => flags[format]);
|
|
6
6
|
if (formats.length > 1) {
|
|
7
7
|
throw new Error(`--${formats.join(' and --')} are mutually exclusive; pick one output format`);
|
|
8
8
|
}
|
|
9
9
|
const root = requireRoot(cwd);
|
|
10
|
-
const graph = buildDecisionGraph(listRecords(root), {
|
|
10
|
+
const graph = buildDecisionGraph(listRecords(root), {
|
|
11
|
+
formalOnly: flags.formalOnly,
|
|
12
|
+
tag: flags.tag,
|
|
13
|
+
});
|
|
11
14
|
if (formats[0] === 'dot')
|
|
12
15
|
return dotGraph(graph);
|
|
13
16
|
if (formats[0] === 'json')
|
|
14
17
|
return jsonGraph(graph);
|
|
18
|
+
if (formats[0] === 'text')
|
|
19
|
+
return textTree(graph);
|
|
15
20
|
return mermaidGraph(graph);
|
|
16
21
|
}
|
|
17
22
|
//# sourceMappingURL=graph.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAWnG,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,KAAuB;IAC/D,MAAM,OAAO,GAAI,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAW,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAChG,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,KAAK,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,iDAAiD,CAC9E,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;QAClD,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,GAAG,EAAE,KAAK,CAAC,GAAG;KACf,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK;QAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;IACnD,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM;QAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function initCommand(targetDir: string, toolsValue?: string): string;
|
|
1
|
+
export declare function initCommand(targetDir: string, toolsValue?: string, workflowsValue?: string): string;
|
|
2
2
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAQA,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAqBnG"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { initRepository } from '../core/repository.js';
|
|
2
|
-
import { integrationSummary, parseTools, writeToolIntegrations } from '../core/tool-integrations.js';
|
|
3
|
-
export function initCommand(targetDir, toolsValue) {
|
|
2
|
+
import { integrationSummary, parseTools, parseWorkflows, writeToolIntegrations, } from '../core/tool-integrations.js';
|
|
3
|
+
export function initCommand(targetDir, toolsValue, workflowsValue) {
|
|
4
4
|
const tools = parseTools(toolsValue);
|
|
5
|
-
const
|
|
5
|
+
const workflows = parseWorkflows(workflowsValue);
|
|
6
|
+
// `undefined` keeps the config key absent: only an explicit subset is
|
|
7
|
+
// recorded, so repositories that install every workflow need no migration.
|
|
8
|
+
const { root, created } = initRepository(targetDir, tools, workflowsValue === undefined ? undefined : workflows);
|
|
6
9
|
const lines = created.map((path) => ` created ${path}`);
|
|
7
|
-
const integrations = writeToolIntegrations(root, tools);
|
|
10
|
+
const integrations = writeToolIntegrations(root, tools, workflows);
|
|
8
11
|
return [
|
|
9
12
|
`ADR Kit initialized at ${root}`,
|
|
10
13
|
...lines,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,cAAc,EACd,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,UAAU,WAAW,CAAC,SAAiB,EAAE,UAAmB,EAAE,cAAuB;IACzF,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,cAAc,CAAC,cAAc,CAAC,CAAC;IACjD,sEAAsE;IACtE,2EAA2E;IAC3E,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,cAAc,CACtC,SAAS,EACT,KAAK,EACL,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CACrD,CAAC;IACF,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACnE,OAAO;QACL,0BAA0B,IAAI,EAAE;QAChC,GAAG,KAAK;QACR,GAAG,kBAAkB,CAAC,IAAI,EAAE,YAAY,CAAC;QACzC,EAAE;QACF,OAAO;QACP,8EAA8E;QAC9E,yEAAyE;KAC1E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function updateCommand(cwd: string, toolsValue?: string): string;
|
|
1
|
+
export declare function updateCommand(cwd: string, toolsValue?: string, workflowsValue?: string): string;
|
|
2
2
|
//# sourceMappingURL=update.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAgBA,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAuB/F"}
|
package/dist/commands/update.js
CHANGED
|
@@ -1,15 +1,20 @@
|
|
|
1
|
-
import { readConfig, requireRoot, writeToolsConfig } from '../core/config.js';
|
|
2
|
-
import { integrationSummary, parseTools, removeToolIntegrations, staleIntegrationKeys, writeToolIntegrations, } from '../core/tool-integrations.js';
|
|
3
|
-
export function updateCommand(cwd, toolsValue) {
|
|
1
|
+
import { readConfig, requireRoot, writeToolsConfig, writeWorkflowsConfig, } from '../core/config.js';
|
|
2
|
+
import { integrationSummary, parseTools, parseWorkflows, removeToolIntegrations, removeWorkflowIntegrations, staleIntegrationKeys, writeToolIntegrations, } from '../core/tool-integrations.js';
|
|
3
|
+
export function updateCommand(cwd, toolsValue, workflowsValue) {
|
|
4
4
|
const root = requireRoot(cwd);
|
|
5
5
|
const config = readConfig(root);
|
|
6
6
|
// A missing `tools` key means "never chose" (the standard default applies);
|
|
7
7
|
// an empty recorded sequence is an explicit opt-out that must survive a
|
|
8
|
-
// bare update.
|
|
8
|
+
// bare update. `workflows` follows the same rule with `all` as its default.
|
|
9
9
|
const tools = parseTools(toolsValue ?? (config.tools === undefined ? undefined : config.tools.join(',')));
|
|
10
|
+
const workflowsArg = workflowsValue ?? (config.workflows === undefined ? undefined : config.workflows.join(','));
|
|
11
|
+
const workflows = parseWorkflows(workflowsArg);
|
|
10
12
|
const removed = removeToolIntegrations(root, staleIntegrationKeys(tools));
|
|
13
|
+
removeWorkflowIntegrations(root, tools, workflows);
|
|
11
14
|
writeToolsConfig(root, tools);
|
|
12
|
-
|
|
15
|
+
if (workflowsArg !== undefined)
|
|
16
|
+
writeWorkflowsConfig(root, workflows);
|
|
17
|
+
const integrations = writeToolIntegrations(root, tools, workflows);
|
|
13
18
|
const lines = [`updated AI tool integrations at ${root}`];
|
|
14
19
|
if (removed.length > 0) {
|
|
15
20
|
lines.push(` removed integrations for: ${removed.join(', ')}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,cAAc,EACd,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,UAAmB,EAAE,cAAuB;IACrF,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,4EAA4E;IAC5E,wEAAwE;IACxE,4EAA4E;IAC5E,MAAM,KAAK,GAAG,UAAU,CACtB,UAAU,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAChF,CAAC;IACF,MAAM,YAAY,GAChB,cAAc,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9F,MAAM,SAAS,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1E,0BAA0B,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACnD,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9B,IAAI,YAAY,KAAK,SAAS;QAAE,oBAAoB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACtE,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC;IAC1D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,+BAA+B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IACtD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
package/dist/core/adr.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export type AdrStatus = 'proposed' | 'accepted' | 'rejected' | 'superseded';
|
|
|
7
7
|
*/
|
|
8
8
|
export type AdrFolder = 'decisions' | 'drafts';
|
|
9
9
|
/** Canonical front matter field order; only fields that exist are written. */
|
|
10
|
-
export declare const FRONT_MATTER_ORDER: readonly ["status", "date", "
|
|
10
|
+
export declare const FRONT_MATTER_ORDER: readonly ["status", "date", "created", "commit", "superseded-by", "reason", "tags"];
|
|
11
11
|
/** Sections that only make sense during the proposal era and must not appear in an accepted decision. */
|
|
12
12
|
export declare const PROPOSAL_ERA_HEADINGS: string[];
|
|
13
13
|
/** A `YYYY-MM-DD` date value. Shared by the parser (format) and validate (calendar validity). */
|
|
@@ -30,11 +30,16 @@ export interface AdrRecord {
|
|
|
30
30
|
status: AdrStatus;
|
|
31
31
|
/** Date the current status was recorded, `YYYY-MM-DD` in local time. */
|
|
32
32
|
date: string;
|
|
33
|
+
/** Date the record was created; stamped once and never re-stamped, so the
|
|
34
|
+
* time axis survives later lifecycle moves. */
|
|
35
|
+
created?: string;
|
|
33
36
|
/** Short git hash the decision was recorded against; auto-stamped when in a git repo. */
|
|
34
37
|
commit?: string;
|
|
35
38
|
rejectionReason?: string;
|
|
36
39
|
/** For superseded decisions: the number of the decision that replaced this one. */
|
|
37
40
|
supersededBy?: number;
|
|
41
|
+
/** Optional kebab-case theme keywords; validate checks the shape. */
|
|
42
|
+
tags?: string[];
|
|
38
43
|
number?: number;
|
|
39
44
|
sections: AdrSection[];
|
|
40
45
|
/** Front matter keys outside the canonical set; validate reports them. */
|
package/dist/core/adr.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adr.d.ts","sourceRoot":"","sources":["../../src/core/adr.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;AAC5E;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE/C,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"adr.d.ts","sourceRoot":"","sources":["../../src/core/adr.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;AAC5E;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE/C,8EAA8E;AAC9E,eAAO,MAAM,kBAAkB,qFAAsF,CAAC;AAEtH,yGAAyG;AACzG,eAAO,MAAM,qBAAqB,UAAyE,CAAC;AAE5G,iGAAiG;AACjG,eAAO,MAAM,YAAY,QAA8B,CAAC;AAExD;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAMnC;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,CAAC;IAClB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb;mDAC+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yFAAyF;IACzF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mFAAmF;IACnF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC9B;AAED,qBAAa,cAAe,SAAQ,KAAK;aAGrB,IAAI,EAAE,MAAM;gBAD5B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM;CAK/B;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE9E;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAInE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAoKxD"}
|
package/dist/core/adr.js
CHANGED
|
@@ -2,7 +2,7 @@ import { readFileSync } from 'node:fs';
|
|
|
2
2
|
import { basename } from 'node:path';
|
|
3
3
|
import { parse } from 'yaml';
|
|
4
4
|
/** Canonical front matter field order; only fields that exist are written. */
|
|
5
|
-
export const FRONT_MATTER_ORDER = ['status', 'date', '
|
|
5
|
+
export const FRONT_MATTER_ORDER = ['status', 'date', 'created', 'commit', 'superseded-by', 'reason', 'tags'];
|
|
6
6
|
/** Sections that only make sense during the proposal era and must not appear in an accepted decision. */
|
|
7
7
|
export const PROPOSAL_ERA_HEADINGS = ['Proposal', 'Acceptance criteria', 'Risks', 'Plan', 'Migration plan'];
|
|
8
8
|
/** A `YYYY-MM-DD` date value. Shared by the parser (format) and validate (calendar validity). */
|
|
@@ -99,6 +99,22 @@ export function parseAdrFile(filePath) {
|
|
|
99
99
|
throw new AdrFormatError('date must be a "YYYY-MM-DD" string', filePath);
|
|
100
100
|
}
|
|
101
101
|
const date = dateText;
|
|
102
|
+
let created;
|
|
103
|
+
const createdField = fields['created'];
|
|
104
|
+
if (createdField !== undefined) {
|
|
105
|
+
if (typeof createdField !== 'string' || !DATE_PATTERN.test(createdField)) {
|
|
106
|
+
throw new AdrFormatError('created must be a "YYYY-MM-DD" string', filePath);
|
|
107
|
+
}
|
|
108
|
+
created = createdField;
|
|
109
|
+
}
|
|
110
|
+
let tags;
|
|
111
|
+
const tagsField = fields['tags'];
|
|
112
|
+
if (tagsField !== undefined) {
|
|
113
|
+
if (!Array.isArray(tagsField) || !tagsField.every((tag) => typeof tag === 'string')) {
|
|
114
|
+
throw new AdrFormatError('tags must be a list of strings', filePath);
|
|
115
|
+
}
|
|
116
|
+
tags = tagsField;
|
|
117
|
+
}
|
|
102
118
|
let commit;
|
|
103
119
|
const commitField = fields['commit'];
|
|
104
120
|
if (commitField !== undefined) {
|
|
@@ -178,6 +194,10 @@ export function parseAdrFile(filePath) {
|
|
|
178
194
|
};
|
|
179
195
|
if (commit !== undefined)
|
|
180
196
|
parsed.commit = commit;
|
|
197
|
+
if (created !== undefined)
|
|
198
|
+
parsed.created = created;
|
|
199
|
+
if (tags !== undefined)
|
|
200
|
+
parsed.tags = tags;
|
|
181
201
|
if (rejectionReason !== undefined)
|
|
182
202
|
parsed.rejectionReason = rejectionReason;
|
|
183
203
|
if (supersededBy !== undefined)
|
package/dist/core/adr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adr.js","sourceRoot":"","sources":["../../src/core/adr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAW7B,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"adr.js","sourceRoot":"","sources":["../../src/core/adr.ts"],"names":[],"mappings":"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"}
|
package/dist/core/config.d.ts
CHANGED
|
@@ -7,6 +7,8 @@ export interface AdrKitConfig {
|
|
|
7
7
|
rules?: Record<string, string[]>;
|
|
8
8
|
/** AI tool integrations selected at init time, e.g. `["claude", "codex"]`. */
|
|
9
9
|
tools?: string[];
|
|
10
|
+
/** Workflow subset for integrations, e.g. `["init", "decide", "validate"]`. */
|
|
11
|
+
workflows?: string[];
|
|
10
12
|
/** The raw parsed YAML document (for forward compatibility). */
|
|
11
13
|
raw: Record<string, unknown>;
|
|
12
14
|
}
|
|
@@ -19,11 +21,8 @@ export declare function findRoot(startDir: string): string | undefined;
|
|
|
19
21
|
export declare function requireRoot(startDir: string): string;
|
|
20
22
|
export declare function configPath(root: string): string;
|
|
21
23
|
export declare function readConfig(root: string): AdrKitConfig;
|
|
22
|
-
/**
|
|
23
|
-
* Update the `tools:` key of `adr/config.yaml` in place. Preserves other
|
|
24
|
-
* keys (`context`, `rules`, unknown keys) and comments attached to the
|
|
25
|
-
* surrounding YAML nodes. When the existing `tools` value is a sequence,
|
|
26
|
-
* reuse that node so its style and inline comments survive the rewrite.
|
|
27
|
-
*/
|
|
24
|
+
/** Update the `tools:` key; see {@link writeListConfig} for the semantics. */
|
|
28
25
|
export declare function writeToolsConfig(root: string, tools: string[]): void;
|
|
26
|
+
/** Update the `workflows:` key; see {@link writeListConfig} for the semantics. */
|
|
27
|
+
export declare function writeWorkflowsConfig(root: string, workflows: string[]): void;
|
|
29
28
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,OAAO,QAAQ,CAAC;AAC7B,eAAO,MAAM,WAAW,gBAAgB,CAAC;AAEzC,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACjC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAU7D;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQpD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAmBD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,OAAO,QAAQ,CAAC;AAC7B,eAAO,MAAM,WAAW,gBAAgB,CAAC;AAEzC,MAAM,WAAW,YAAY;IAC3B,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACjC,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,gEAAgE;IAChE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAU7D;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQpD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAmBD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CA4BrD;AA2BD,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAEpE;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAE5E"}
|
package/dist/core/config.js
CHANGED
|
@@ -52,6 +52,10 @@ export function readConfig(root) {
|
|
|
52
52
|
if (Array.isArray(raw.tools) && raw.tools.every((entry) => typeof entry === 'string')) {
|
|
53
53
|
config.tools = raw.tools;
|
|
54
54
|
}
|
|
55
|
+
if (Array.isArray(raw.workflows) &&
|
|
56
|
+
raw.workflows.every((entry) => typeof entry === 'string')) {
|
|
57
|
+
config.workflows = raw.workflows;
|
|
58
|
+
}
|
|
55
59
|
if (raw.rules !== null && typeof raw.rules === 'object' && !Array.isArray(raw.rules)) {
|
|
56
60
|
const rules = {};
|
|
57
61
|
for (const [key, value] of Object.entries(raw.rules)) {
|
|
@@ -64,28 +68,36 @@ export function readConfig(root) {
|
|
|
64
68
|
return config;
|
|
65
69
|
}
|
|
66
70
|
/**
|
|
67
|
-
*
|
|
71
|
+
* Rewrite a list-valued key of `adr/config.yaml` in place. Preserves other
|
|
68
72
|
* keys (`context`, `rules`, unknown keys) and comments attached to the
|
|
69
|
-
* surrounding YAML nodes. When the existing
|
|
70
|
-
*
|
|
73
|
+
* surrounding YAML nodes. When the existing value is a sequence, reuse that
|
|
74
|
+
* node so its style and inline comments survive the rewrite.
|
|
71
75
|
*/
|
|
72
|
-
|
|
76
|
+
function writeListConfig(root, key, values) {
|
|
73
77
|
const file = configPath(root);
|
|
74
78
|
const parsed = parseConfigDocument(readFileSync(file, 'utf8'));
|
|
75
79
|
const pair = parsed.map.items.find((item) => {
|
|
76
|
-
const
|
|
77
|
-
return
|
|
80
|
+
const itemKey = item.key;
|
|
81
|
+
return itemKey?.value === key;
|
|
78
82
|
});
|
|
79
83
|
const existing = pair?.value;
|
|
80
84
|
if (existing !== undefined && isSeq(existing)) {
|
|
81
85
|
existing.items.length = 0;
|
|
82
|
-
for (const
|
|
83
|
-
existing.items.push(parsed.document.createNode(
|
|
86
|
+
for (const value of values) {
|
|
87
|
+
existing.items.push(parsed.document.createNode(value));
|
|
84
88
|
}
|
|
85
89
|
}
|
|
86
90
|
else {
|
|
87
|
-
parsed.map.set(
|
|
91
|
+
parsed.map.set(key, values);
|
|
88
92
|
}
|
|
89
93
|
writeFileSync(file, parsed.document.toString());
|
|
90
94
|
}
|
|
95
|
+
/** Update the `tools:` key; see {@link writeListConfig} for the semantics. */
|
|
96
|
+
export function writeToolsConfig(root, tools) {
|
|
97
|
+
writeListConfig(root, 'tools', tools);
|
|
98
|
+
}
|
|
99
|
+
/** Update the `workflows:` key; see {@link writeListConfig} for the semantics. */
|
|
100
|
+
export function writeWorkflowsConfig(root, workflows) {
|
|
101
|
+
writeListConfig(root, 'workflows', workflows);
|
|
102
|
+
}
|
|
91
103
|
//# sourceMappingURL=config.js.map
|