@musubix/decisions 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,106 @@
1
+ /**
2
+ * @musubix/decisions - ADR Manager
3
+ *
4
+ * Architecture Decision Records management for MUSUBIX v3.0
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ /**
9
+ * ADR status
10
+ */
11
+ export type ADRStatus = 'proposed' | 'accepted' | 'deprecated' | 'superseded';
12
+ /**
13
+ * ADR draft for creation
14
+ */
15
+ export interface ADRDraft {
16
+ title: string;
17
+ context: string;
18
+ decision: string;
19
+ rationale?: string;
20
+ alternatives?: string[];
21
+ consequences?: string[];
22
+ relatedRequirements?: string[];
23
+ decider?: string;
24
+ }
25
+ /**
26
+ * ADR filter
27
+ */
28
+ export interface ADRFilter {
29
+ status?: ADRStatus;
30
+ keyword?: string;
31
+ }
32
+ /**
33
+ * Architecture Decision Record
34
+ */
35
+ export interface ADR {
36
+ /** ID (e.g., "0001") */
37
+ id: string;
38
+ /** Title */
39
+ title: string;
40
+ /** Status */
41
+ status: ADRStatus;
42
+ /** Date (YYYY-MM-DD) */
43
+ date: string;
44
+ /** Person who made the decision */
45
+ decider: string;
46
+ /** Context/background */
47
+ context: string;
48
+ /** The decision made */
49
+ decision: string;
50
+ /** Rationale for the decision */
51
+ rationale: string;
52
+ /** Alternatives considered */
53
+ alternatives: string[];
54
+ /** Consequences of the decision */
55
+ consequences: string[];
56
+ /** Related requirement IDs */
57
+ relatedRequirements: string[];
58
+ /** Related ADR IDs */
59
+ relatedADRs: string[];
60
+ }
61
+ /**
62
+ * Decision manager interface
63
+ */
64
+ export interface IDecisionManager {
65
+ create(draft: ADRDraft): Promise<ADR>;
66
+ get(id: string): Promise<ADR | undefined>;
67
+ list(filter?: ADRFilter): Promise<ADR[]>;
68
+ update(id: string, updates: Partial<ADR>): Promise<ADR>;
69
+ accept(id: string): Promise<ADR>;
70
+ deprecate(id: string, supersededBy?: string): Promise<ADR>;
71
+ generateIndex(): Promise<void>;
72
+ search(query: string): Promise<ADR[]>;
73
+ findByRequirement(reqId: string): Promise<ADR[]>;
74
+ }
75
+ /**
76
+ * Create a new decision manager
77
+ */
78
+ export declare function createDecisionManager(basePath: string): IDecisionManager;
79
+ /**
80
+ * Decision manager implementation
81
+ */
82
+ export declare class DecisionManager implements IDecisionManager {
83
+ private basePath;
84
+ private adrs;
85
+ private loaded;
86
+ constructor(basePath: string);
87
+ private getNextId;
88
+ private getFilePath;
89
+ private formatADR;
90
+ private parseADR;
91
+ private loadAll;
92
+ create(draft: ADRDraft): Promise<ADR>;
93
+ get(id: string): Promise<ADR | undefined>;
94
+ list(filter?: ADRFilter): Promise<ADR[]>;
95
+ update(id: string, updates: Partial<ADR>): Promise<ADR>;
96
+ accept(id: string): Promise<ADR>;
97
+ deprecate(id: string, supersededBy?: string): Promise<ADR>;
98
+ generateIndex(): Promise<void>;
99
+ search(query: string): Promise<ADR[]>;
100
+ findByRequirement(reqId: string): Promise<ADR[]>;
101
+ }
102
+ /**
103
+ * ADR template content
104
+ */
105
+ export declare const ADR_TEMPLATE = "# ADR-NNNN: \u30BF\u30A4\u30C8\u30EB\n\n| \u9805\u76EE | \u5185\u5BB9 |\n|------|------|\n| **\u30B9\u30C6\u30FC\u30BF\u30B9** | Proposed |\n| **\u65E5\u4ED8** | YYYY-MM-DD |\n| **\u6C7A\u5B9A\u8005** | \u540D\u524D |\n| **\u95A2\u9023\u8981\u4EF6** | REQ-XXX-NNN |\n\n## \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\n\n[\u6C7A\u5B9A\u304C\u5FC5\u8981\u306B\u306A\u3063\u305F\u80CC\u666F\u30FB\u554F\u984C]\n\n## \u6C7A\u5B9A\n\n[\u63A1\u7528\u3057\u305F\u89E3\u6C7A\u7B56]\n\n## \u7406\u7531\n\n[\u306A\u305C\u3053\u306E\u6C7A\u5B9A\u306B\u81F3\u3063\u305F\u304B]\n\n## \u4EE3\u66FF\u6848\n\n- [\u691C\u8A0E\u3057\u305F\u304C\u63A1\u7528\u3057\u306A\u304B\u3063\u305F\u68481]\n- [\u691C\u8A0E\u3057\u305F\u304C\u63A1\u7528\u3057\u306A\u304B\u3063\u305F\u68482]\n\n## \u5F71\u97FF\n\n- [\u3053\u306E\u6C7A\u5B9A\u306B\u3088\u308B\u5F71\u97FF1]\n- [\u3053\u306E\u6C7A\u5B9A\u306B\u3088\u308B\u30C8\u30EC\u30FC\u30C9\u30AA\u30D5]\n\n## \u95A2\u9023\n\n- [\u95A2\u9023ADR](./NNNN-title.md)\n- [\u95A2\u9023\u8981\u4EF6](../specs/REQ-XXX.md)\n";
106
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,306 @@
1
+ /**
2
+ * @musubix/decisions - ADR Manager
3
+ *
4
+ * Architecture Decision Records management for MUSUBIX v3.0
5
+ *
6
+ * @packageDocumentation
7
+ */
8
+ // ============================================================
9
+ // Factory Function
10
+ // ============================================================
11
+ /**
12
+ * Create a new decision manager
13
+ */
14
+ export function createDecisionManager(basePath) {
15
+ return new DecisionManager(basePath);
16
+ }
17
+ // ============================================================
18
+ // Implementation
19
+ // ============================================================
20
+ import * as fs from 'node:fs/promises';
21
+ import * as path from 'node:path';
22
+ /**
23
+ * Decision manager implementation
24
+ */
25
+ export class DecisionManager {
26
+ basePath;
27
+ adrs = new Map();
28
+ loaded = false;
29
+ constructor(basePath) {
30
+ this.basePath = basePath;
31
+ }
32
+ getNextId() {
33
+ const ids = Array.from(this.adrs.keys())
34
+ .map(id => parseInt(id, 10))
35
+ .filter(n => !isNaN(n));
36
+ const maxId = ids.length > 0 ? Math.max(...ids) : 0;
37
+ return String(maxId + 1).padStart(4, '0');
38
+ }
39
+ getFilePath(id, title) {
40
+ const slug = title
41
+ .toLowerCase()
42
+ .replace(/[^a-z0-9]+/g, '-')
43
+ .replace(/^-|-$/g, '');
44
+ return path.join(this.basePath, `${id}-${slug}.md`);
45
+ }
46
+ formatADR(adr) {
47
+ return `# ADR-${adr.id}: ${adr.title}
48
+
49
+ | 項目 | 内容 |
50
+ |------|------|
51
+ | **ステータス** | ${adr.status.charAt(0).toUpperCase() + adr.status.slice(1)} |
52
+ | **日付** | ${adr.date} |
53
+ | **決定者** | ${adr.decider} |
54
+ | **関連要件** | ${adr.relatedRequirements.join(', ') || '-'} |
55
+
56
+ ## コンテキスト
57
+
58
+ ${adr.context}
59
+
60
+ ## 決定
61
+
62
+ ${adr.decision}
63
+
64
+ ## 理由
65
+
66
+ ${adr.rationale}
67
+
68
+ ## 代替案
69
+
70
+ ${adr.alternatives.length > 0 ? adr.alternatives.map(a => `- ${a}`).join('\n') : '- なし'}
71
+
72
+ ## 影響
73
+
74
+ ${adr.consequences.length > 0 ? adr.consequences.map(c => `- ${c}`).join('\n') : '- なし'}
75
+
76
+ ## 関連
77
+
78
+ ${adr.relatedADRs.length > 0 ? adr.relatedADRs.map(r => `- [ADR-${r}](./${r}-*.md)`).join('\n') : '- なし'}
79
+ `;
80
+ }
81
+ parseADR(content, filePath) {
82
+ const fileName = path.basename(filePath, '.md');
83
+ const idMatch = fileName.match(/^(\d{4})-/);
84
+ if (!idMatch)
85
+ return null;
86
+ const id = idMatch[1];
87
+ const titleMatch = content.match(/^# ADR-\d{4}: (.+)$/m);
88
+ const statusMatch = content.match(/\*\*ステータス\*\*\s*\|\s*(\w+)/);
89
+ const dateMatch = content.match(/\*\*日付\*\*\s*\|\s*(\d{4}-\d{2}-\d{2})/);
90
+ const deciderMatch = content.match(/\*\*決定者\*\*\s*\|\s*(.+?)\s*\|/);
91
+ const reqMatch = content.match(/\*\*関連要件\*\*\s*\|\s*(.+?)\s*\|/);
92
+ const contextMatch = content.match(/## コンテキスト\n\n([\s\S]*?)(?=\n## )/);
93
+ const decisionMatch = content.match(/## 決定\n\n([\s\S]*?)(?=\n## )/);
94
+ const rationaleMatch = content.match(/## 理由\n\n([\s\S]*?)(?=\n## )/);
95
+ const alternativesMatch = content.match(/## 代替案\n\n([\s\S]*?)(?=\n## )/);
96
+ const consequencesMatch = content.match(/## 影響\n\n([\s\S]*?)(?=\n## |$)/);
97
+ const parseList = (text) => {
98
+ if (!text)
99
+ return [];
100
+ return text
101
+ .split('\n')
102
+ .filter(line => line.startsWith('- '))
103
+ .map(line => line.slice(2).trim())
104
+ .filter(item => item !== 'なし');
105
+ };
106
+ return {
107
+ id,
108
+ title: titleMatch?.[1] ?? '',
109
+ status: statusMatch?.[1]?.toLowerCase() ?? 'proposed',
110
+ date: dateMatch?.[1] ?? new Date().toISOString().slice(0, 10),
111
+ decider: deciderMatch?.[1]?.trim() ?? '',
112
+ context: contextMatch?.[1]?.trim() ?? '',
113
+ decision: decisionMatch?.[1]?.trim() ?? '',
114
+ rationale: rationaleMatch?.[1]?.trim() ?? '',
115
+ alternatives: parseList(alternativesMatch?.[1]),
116
+ consequences: parseList(consequencesMatch?.[1]),
117
+ relatedRequirements: reqMatch?.[1] !== '-' ? reqMatch?.[1]?.split(',').map(s => s.trim()) ?? [] : [],
118
+ relatedADRs: [],
119
+ };
120
+ }
121
+ async loadAll() {
122
+ if (this.loaded)
123
+ return;
124
+ try {
125
+ const files = await fs.readdir(this.basePath);
126
+ for (const file of files) {
127
+ if (file.endsWith('.md') && /^\d{4}-/.test(file)) {
128
+ const content = await fs.readFile(path.join(this.basePath, file), 'utf-8');
129
+ const adr = this.parseADR(content, file);
130
+ if (adr) {
131
+ this.adrs.set(adr.id, adr);
132
+ }
133
+ }
134
+ }
135
+ this.loaded = true;
136
+ }
137
+ catch {
138
+ // Directory doesn't exist
139
+ this.loaded = true;
140
+ }
141
+ }
142
+ async create(draft) {
143
+ await this.loadAll();
144
+ await fs.mkdir(this.basePath, { recursive: true });
145
+ const id = this.getNextId();
146
+ const adr = {
147
+ id,
148
+ title: draft.title,
149
+ status: 'proposed',
150
+ date: new Date().toISOString().slice(0, 10),
151
+ decider: draft.decider ?? 'Unknown',
152
+ context: draft.context,
153
+ decision: draft.decision,
154
+ rationale: draft.rationale ?? '',
155
+ alternatives: draft.alternatives ?? [],
156
+ consequences: draft.consequences ?? [],
157
+ relatedRequirements: draft.relatedRequirements ?? [],
158
+ relatedADRs: [],
159
+ };
160
+ const filePath = this.getFilePath(id, draft.title);
161
+ await fs.writeFile(filePath, this.formatADR(adr), 'utf-8');
162
+ this.adrs.set(id, adr);
163
+ return adr;
164
+ }
165
+ async get(id) {
166
+ await this.loadAll();
167
+ return this.adrs.get(id);
168
+ }
169
+ async list(filter) {
170
+ await this.loadAll();
171
+ let results = Array.from(this.adrs.values());
172
+ if (filter?.status) {
173
+ results = results.filter(adr => adr.status === filter.status);
174
+ }
175
+ if (filter?.keyword) {
176
+ const keyword = filter.keyword.toLowerCase();
177
+ results = results.filter(adr => adr.title.toLowerCase().includes(keyword) ||
178
+ adr.context.toLowerCase().includes(keyword) ||
179
+ adr.decision.toLowerCase().includes(keyword));
180
+ }
181
+ return results.sort((a, b) => a.id.localeCompare(b.id));
182
+ }
183
+ async update(id, updates) {
184
+ await this.loadAll();
185
+ const adr = this.adrs.get(id);
186
+ if (!adr) {
187
+ throw new Error(`ADR not found: ${id}`);
188
+ }
189
+ const updated = { ...adr, ...updates, id: adr.id };
190
+ const filePath = this.getFilePath(id, updated.title);
191
+ await fs.writeFile(filePath, this.formatADR(updated), 'utf-8');
192
+ this.adrs.set(id, updated);
193
+ return updated;
194
+ }
195
+ async accept(id) {
196
+ return this.update(id, { status: 'accepted' });
197
+ }
198
+ async deprecate(id, supersededBy) {
199
+ const updates = {
200
+ status: supersededBy ? 'superseded' : 'deprecated',
201
+ };
202
+ if (supersededBy) {
203
+ const adr = await this.get(id);
204
+ if (adr) {
205
+ updates.relatedADRs = [...adr.relatedADRs, supersededBy];
206
+ }
207
+ }
208
+ return this.update(id, updates);
209
+ }
210
+ async generateIndex() {
211
+ await this.loadAll();
212
+ await fs.mkdir(this.basePath, { recursive: true });
213
+ const adrs = await this.list();
214
+ const byStatus = {
215
+ proposed: [],
216
+ accepted: [],
217
+ deprecated: [],
218
+ superseded: [],
219
+ };
220
+ for (const adr of adrs) {
221
+ byStatus[adr.status].push(adr);
222
+ }
223
+ const content = `# Architecture Decision Records
224
+
225
+ このディレクトリには、プロジェクトのアーキテクチャ決定記録(ADR)が含まれています。
226
+
227
+ ## 概要
228
+
229
+ | ステータス | 件数 |
230
+ |-----------|------|
231
+ | Accepted | ${byStatus.accepted.length} |
232
+ | Proposed | ${byStatus.proposed.length} |
233
+ | Deprecated | ${byStatus.deprecated.length} |
234
+ | Superseded | ${byStatus.superseded.length} |
235
+
236
+ ## Accepted
237
+
238
+ ${byStatus.accepted.length > 0
239
+ ? byStatus.accepted.map(a => `- [ADR-${a.id}: ${a.title}](./${a.id}-${a.title.toLowerCase().replace(/[^a-z0-9]+/g, '-')}.md)`).join('\n')
240
+ : '- なし'}
241
+
242
+ ## Proposed
243
+
244
+ ${byStatus.proposed.length > 0
245
+ ? byStatus.proposed.map(a => `- [ADR-${a.id}: ${a.title}](./${a.id}-${a.title.toLowerCase().replace(/[^a-z0-9]+/g, '-')}.md)`).join('\n')
246
+ : '- なし'}
247
+
248
+ ## Deprecated / Superseded
249
+
250
+ ${[...byStatus.deprecated, ...byStatus.superseded].length > 0
251
+ ? [...byStatus.deprecated, ...byStatus.superseded].map(a => `- [ADR-${a.id}: ${a.title}](./${a.id}-${a.title.toLowerCase().replace(/[^a-z0-9]+/g, '-')}.md) (${a.status})`).join('\n')
252
+ : '- なし'}
253
+ `;
254
+ await fs.writeFile(path.join(this.basePath, 'index.md'), content, 'utf-8');
255
+ }
256
+ async search(query) {
257
+ return this.list({ keyword: query });
258
+ }
259
+ async findByRequirement(reqId) {
260
+ await this.loadAll();
261
+ return Array.from(this.adrs.values()).filter(adr => adr.relatedRequirements.includes(reqId));
262
+ }
263
+ }
264
+ // ============================================================
265
+ // Template
266
+ // ============================================================
267
+ /**
268
+ * ADR template content
269
+ */
270
+ export const ADR_TEMPLATE = `# ADR-NNNN: タイトル
271
+
272
+ | 項目 | 内容 |
273
+ |------|------|
274
+ | **ステータス** | Proposed |
275
+ | **日付** | YYYY-MM-DD |
276
+ | **決定者** | 名前 |
277
+ | **関連要件** | REQ-XXX-NNN |
278
+
279
+ ## コンテキスト
280
+
281
+ [決定が必要になった背景・問題]
282
+
283
+ ## 決定
284
+
285
+ [採用した解決策]
286
+
287
+ ## 理由
288
+
289
+ [なぜこの決定に至ったか]
290
+
291
+ ## 代替案
292
+
293
+ - [検討したが採用しなかった案1]
294
+ - [検討したが採用しなかった案2]
295
+
296
+ ## 影響
297
+
298
+ - [この決定による影響1]
299
+ - [この決定によるトレードオフ]
300
+
301
+ ## 関連
302
+
303
+ - [関連ADR](./NNNN-title.md)
304
+ - [関連要件](../specs/REQ-XXX.md)
305
+ `;
306
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@musubix/decisions",
3
+ "version": "3.0.0",
4
+ "description": "ADR (Architecture Decision Records) Manager for MUSUBIX",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "scripts": {
18
+ "build": "tsc",
19
+ "test": "vitest run",
20
+ "test:watch": "vitest",
21
+ "clean": "rm -rf dist",
22
+ "typecheck": "tsc --noEmit"
23
+ },
24
+ "keywords": [
25
+ "musubix",
26
+ "adr",
27
+ "architecture-decision-records",
28
+ "documentation"
29
+ ],
30
+ "author": "nahisaho",
31
+ "license": "MIT",
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "git+https://github.com/nahisaho/MUSUBIX.git",
35
+ "directory": "packages/decisions"
36
+ },
37
+ "engines": {
38
+ "node": ">=20.0.0"
39
+ },
40
+ "devDependencies": {
41
+ "typescript": "^5.3.0",
42
+ "vitest": "^4.0.16"
43
+ }
44
+ }