@nahisaho/musubix-formal-verify 1.7.5

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.
Files changed (78) hide show
  1. package/README.md +62 -0
  2. package/dist/converters/EarsToSmtConverter.d.ts +102 -0
  3. package/dist/converters/EarsToSmtConverter.d.ts.map +1 -0
  4. package/dist/converters/EarsToSmtConverter.js +368 -0
  5. package/dist/converters/EarsToSmtConverter.js.map +1 -0
  6. package/dist/converters/index.d.ts +6 -0
  7. package/dist/converters/index.d.ts.map +1 -0
  8. package/dist/converters/index.js +5 -0
  9. package/dist/converters/index.js.map +1 -0
  10. package/dist/converters/types.d.ts +103 -0
  11. package/dist/converters/types.d.ts.map +1 -0
  12. package/dist/converters/types.js +7 -0
  13. package/dist/converters/types.js.map +1 -0
  14. package/dist/index.d.ts +22 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +23 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/tools/formal-verify-tools.d.ts +60 -0
  19. package/dist/tools/formal-verify-tools.d.ts.map +1 -0
  20. package/dist/tools/formal-verify-tools.js +371 -0
  21. package/dist/tools/formal-verify-tools.js.map +1 -0
  22. package/dist/tools/index.d.ts +5 -0
  23. package/dist/tools/index.d.ts.map +1 -0
  24. package/dist/tools/index.js +5 -0
  25. package/dist/tools/index.js.map +1 -0
  26. package/dist/traceability/ImpactAnalyzer.d.ts +103 -0
  27. package/dist/traceability/ImpactAnalyzer.d.ts.map +1 -0
  28. package/dist/traceability/ImpactAnalyzer.js +281 -0
  29. package/dist/traceability/ImpactAnalyzer.js.map +1 -0
  30. package/dist/traceability/TraceabilityDB.d.ts +123 -0
  31. package/dist/traceability/TraceabilityDB.d.ts.map +1 -0
  32. package/dist/traceability/TraceabilityDB.js +379 -0
  33. package/dist/traceability/TraceabilityDB.js.map +1 -0
  34. package/dist/traceability/index.d.ts +8 -0
  35. package/dist/traceability/index.d.ts.map +1 -0
  36. package/dist/traceability/index.js +6 -0
  37. package/dist/traceability/index.js.map +1 -0
  38. package/dist/traceability/types.d.ts +156 -0
  39. package/dist/traceability/types.d.ts.map +1 -0
  40. package/dist/traceability/types.js +7 -0
  41. package/dist/traceability/types.js.map +1 -0
  42. package/dist/verifiers/PostconditionVerifier.d.ts +105 -0
  43. package/dist/verifiers/PostconditionVerifier.d.ts.map +1 -0
  44. package/dist/verifiers/PostconditionVerifier.js +326 -0
  45. package/dist/verifiers/PostconditionVerifier.js.map +1 -0
  46. package/dist/verifiers/PreconditionVerifier.d.ts +87 -0
  47. package/dist/verifiers/PreconditionVerifier.d.ts.map +1 -0
  48. package/dist/verifiers/PreconditionVerifier.js +286 -0
  49. package/dist/verifiers/PreconditionVerifier.js.map +1 -0
  50. package/dist/verifiers/index.d.ts +7 -0
  51. package/dist/verifiers/index.d.ts.map +1 -0
  52. package/dist/verifiers/index.js +6 -0
  53. package/dist/verifiers/index.js.map +1 -0
  54. package/dist/verifiers/types.d.ts +109 -0
  55. package/dist/verifiers/types.d.ts.map +1 -0
  56. package/dist/verifiers/types.js +7 -0
  57. package/dist/verifiers/types.js.map +1 -0
  58. package/dist/z3/Z3Adapter.d.ts +92 -0
  59. package/dist/z3/Z3Adapter.d.ts.map +1 -0
  60. package/dist/z3/Z3Adapter.js +189 -0
  61. package/dist/z3/Z3Adapter.js.map +1 -0
  62. package/dist/z3/Z3ProcessFallback.d.ts +67 -0
  63. package/dist/z3/Z3ProcessFallback.d.ts.map +1 -0
  64. package/dist/z3/Z3ProcessFallback.js +287 -0
  65. package/dist/z3/Z3ProcessFallback.js.map +1 -0
  66. package/dist/z3/Z3WasmClient.d.ts +55 -0
  67. package/dist/z3/Z3WasmClient.d.ts.map +1 -0
  68. package/dist/z3/Z3WasmClient.js +172 -0
  69. package/dist/z3/Z3WasmClient.js.map +1 -0
  70. package/dist/z3/index.d.ts +9 -0
  71. package/dist/z3/index.d.ts.map +1 -0
  72. package/dist/z3/index.js +7 -0
  73. package/dist/z3/index.js.map +1 -0
  74. package/dist/z3/types.d.ts +82 -0
  75. package/dist/z3/types.d.ts.map +1 -0
  76. package/dist/z3/types.js +7 -0
  77. package/dist/z3/types.js.map +1 -0
  78. package/package.json +79 -0
@@ -0,0 +1,379 @@
1
+ /**
2
+ * Traceability Database
3
+ *
4
+ * SQLiteベースのトレーサビリティデータベース
5
+ */
6
+ import Database from 'better-sqlite3';
7
+ /**
8
+ * トレーサビリティDB
9
+ *
10
+ * 要件↔設計↔コード↔テストのトレーサビリティを管理するSQLiteベースのデータベース。
11
+ * グラフ構造でノード間の関係を追跡し、影響分析やカバレッジ計算を支援します。
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const db = new TraceabilityDB('./trace.db');
16
+ *
17
+ * // ノードを追加
18
+ * await db.addNode({
19
+ * id: 'REQ-001',
20
+ * type: 'requirement',
21
+ * title: 'User Authentication',
22
+ * createdAt: new Date(),
23
+ * updatedAt: new Date(),
24
+ * });
25
+ *
26
+ * // リンクを追加
27
+ * await db.addLink({
28
+ * source: 'REQ-001',
29
+ * target: 'DES-001',
30
+ * type: 'implements',
31
+ * });
32
+ *
33
+ * // クエリ
34
+ * const related = await db.query('REQ-001', { direction: 'forward' });
35
+ * ```
36
+ */
37
+ export class TraceabilityDB {
38
+ db;
39
+ _dbPath;
40
+ constructor(dbPath = ':memory:') {
41
+ this._dbPath = dbPath;
42
+ this.db = new Database(dbPath);
43
+ this.initializeSchema();
44
+ }
45
+ /**
46
+ * データベーススキーマを初期化
47
+ */
48
+ initializeSchema() {
49
+ this.db.exec(`
50
+ -- ノードテーブル
51
+ CREATE TABLE IF NOT EXISTS nodes (
52
+ id TEXT PRIMARY KEY,
53
+ type TEXT NOT NULL,
54
+ title TEXT NOT NULL,
55
+ description TEXT,
56
+ version TEXT,
57
+ created_at TEXT NOT NULL,
58
+ updated_at TEXT NOT NULL,
59
+ metadata TEXT
60
+ );
61
+
62
+ -- リンクテーブル
63
+ CREATE TABLE IF NOT EXISTS links (
64
+ id TEXT PRIMARY KEY,
65
+ source TEXT NOT NULL,
66
+ target TEXT NOT NULL,
67
+ type TEXT NOT NULL,
68
+ description TEXT,
69
+ confidence REAL DEFAULT 1.0,
70
+ created_at TEXT NOT NULL,
71
+ metadata TEXT,
72
+ FOREIGN KEY (source) REFERENCES nodes(id),
73
+ FOREIGN KEY (target) REFERENCES nodes(id)
74
+ );
75
+
76
+ -- インデックス
77
+ CREATE INDEX IF NOT EXISTS idx_nodes_type ON nodes(type);
78
+ CREATE INDEX IF NOT EXISTS idx_links_source ON links(source);
79
+ CREATE INDEX IF NOT EXISTS idx_links_target ON links(target);
80
+ CREATE INDEX IF NOT EXISTS idx_links_type ON links(type);
81
+ `);
82
+ }
83
+ /**
84
+ * ノードを追加
85
+ * @throws Error 既に同じIDのノードが存在する場合
86
+ */
87
+ async addNode(input) {
88
+ // 重複チェック
89
+ const existing = await this.getNode(input.id);
90
+ if (existing) {
91
+ throw new Error(`Node with ID '${input.id}' already exists`);
92
+ }
93
+ const now = new Date();
94
+ const node = {
95
+ ...input,
96
+ createdAt: input.createdAt ?? now,
97
+ updatedAt: input.updatedAt ?? now,
98
+ };
99
+ const stmt = this.db.prepare(`
100
+ INSERT INTO nodes (id, type, title, description, version, created_at, updated_at, metadata)
101
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
102
+ `);
103
+ stmt.run(node.id, node.type, node.title, node.description ?? null, node.version ?? null, node.createdAt.toISOString(), node.updatedAt.toISOString(), node.metadata ? JSON.stringify(node.metadata) : null);
104
+ return node;
105
+ }
106
+ /**
107
+ * ノードを取得
108
+ */
109
+ async getNode(id) {
110
+ const stmt = this.db.prepare('SELECT * FROM nodes WHERE id = ?');
111
+ const row = stmt.get(id);
112
+ if (!row)
113
+ return null;
114
+ return this.rowToNode(row);
115
+ }
116
+ /**
117
+ * ノードを更新
118
+ */
119
+ async updateNode(id, updates) {
120
+ const node = await this.getNode(id);
121
+ if (!node) {
122
+ throw new Error(`Node not found: ${id}`);
123
+ }
124
+ const updated = {
125
+ ...node,
126
+ ...updates,
127
+ id, // IDは変更不可
128
+ updatedAt: new Date(),
129
+ };
130
+ const stmt = this.db.prepare(`
131
+ UPDATE nodes
132
+ SET type = ?, title = ?, description = ?, version = ?, updated_at = ?, metadata = ?
133
+ WHERE id = ?
134
+ `);
135
+ stmt.run(updated.type, updated.title, updated.description ?? null, updated.version ?? null, updated.updatedAt.toISOString(), updated.metadata ? JSON.stringify(updated.metadata) : null, id);
136
+ }
137
+ /**
138
+ * ノードを削除
139
+ */
140
+ async deleteNode(id) {
141
+ // 関連リンクも削除
142
+ this.db.prepare('DELETE FROM links WHERE source = ? OR target = ?').run(id, id);
143
+ this.db.prepare('DELETE FROM nodes WHERE id = ?').run(id);
144
+ }
145
+ /**
146
+ * ノードを削除(deleteNodeのエイリアス)
147
+ */
148
+ async removeNode(id) {
149
+ return this.deleteNode(id);
150
+ }
151
+ /**
152
+ * リンクを追加
153
+ * @throws Error ソースまたはターゲットノードが存在しない場合
154
+ */
155
+ async addLink(link) {
156
+ // ソースノードの存在チェック
157
+ const sourceNode = await this.getNode(link.source);
158
+ if (!sourceNode) {
159
+ throw new Error(`Source node not found: ${link.source}`);
160
+ }
161
+ // ターゲットノードの存在チェック
162
+ const targetNode = await this.getNode(link.target);
163
+ if (!targetNode) {
164
+ throw new Error(`Target node not found: ${link.target}`);
165
+ }
166
+ const linkId = link.id ?? this.generateLinkId(link);
167
+ const createdAt = link.createdAt ?? new Date();
168
+ const stmt = this.db.prepare(`
169
+ INSERT OR REPLACE INTO links (id, source, target, type, description, confidence, created_at, metadata)
170
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
171
+ `);
172
+ stmt.run(linkId, link.source, link.target, link.type, link.description ?? null, link.confidence ?? 1.0, createdAt.toISOString(), link.metadata ? JSON.stringify(link.metadata) : null);
173
+ return {
174
+ id: linkId,
175
+ source: link.source,
176
+ target: link.target,
177
+ type: link.type,
178
+ description: link.description,
179
+ confidence: link.confidence ?? 1.0,
180
+ createdAt,
181
+ metadata: link.metadata,
182
+ };
183
+ }
184
+ /**
185
+ * リンクを取得
186
+ */
187
+ async getLink(id) {
188
+ const stmt = this.db.prepare('SELECT * FROM links WHERE id = ?');
189
+ const row = stmt.get(id);
190
+ if (!row)
191
+ return null;
192
+ return this.rowToLink(row);
193
+ }
194
+ /**
195
+ * ノード間のリンクを取得
196
+ */
197
+ async getLinksBetween(source, target) {
198
+ const stmt = this.db.prepare('SELECT * FROM links WHERE source = ? AND target = ?');
199
+ const rows = stmt.all(source, target);
200
+ return rows.map(row => this.rowToLink(row));
201
+ }
202
+ /**
203
+ * リンクを削除
204
+ */
205
+ async deleteLink(id) {
206
+ this.db.prepare('DELETE FROM links WHERE id = ?').run(id);
207
+ }
208
+ /**
209
+ * ノードをクエリ
210
+ */
211
+ async query(nodeId, options = {}) {
212
+ const source = await this.getNode(nodeId);
213
+ const relatedNodes = [];
214
+ const links = [];
215
+ const paths = [];
216
+ const { linkTypes, nodeTypes, maxDepth = 10, direction = 'both', minConfidence = 0, } = options;
217
+ const visited = new Set();
218
+ const queue = [
219
+ { id: nodeId, depth: 0, path: [nodeId] },
220
+ ];
221
+ while (queue.length > 0) {
222
+ const current = queue.shift();
223
+ if (visited.has(current.id) || current.depth > maxDepth) {
224
+ continue;
225
+ }
226
+ visited.add(current.id);
227
+ // 関連リンクを取得
228
+ const relatedLinks = await this.getRelatedLinks(current.id, direction, linkTypes, minConfidence);
229
+ for (const link of relatedLinks) {
230
+ links.push(link);
231
+ const nextId = link.source === current.id ? link.target : link.source;
232
+ if (!visited.has(nextId)) {
233
+ const nextNode = await this.getNode(nextId);
234
+ if (nextNode && (!nodeTypes || nodeTypes.includes(nextNode.type))) {
235
+ relatedNodes.push(nextNode);
236
+ const newPath = [...current.path, nextId];
237
+ paths.push(newPath);
238
+ queue.push({
239
+ id: nextId,
240
+ depth: current.depth + 1,
241
+ path: newPath,
242
+ });
243
+ }
244
+ }
245
+ }
246
+ }
247
+ return {
248
+ source,
249
+ relatedNodes,
250
+ links,
251
+ paths,
252
+ };
253
+ }
254
+ /**
255
+ * 関連リンクを取得
256
+ */
257
+ async getRelatedLinks(nodeId, direction, linkTypes, minConfidence) {
258
+ let sql = '';
259
+ const params = [];
260
+ if (direction === 'forward') {
261
+ sql = 'SELECT * FROM links WHERE source = ?';
262
+ params.push(nodeId);
263
+ }
264
+ else if (direction === 'backward') {
265
+ sql = 'SELECT * FROM links WHERE target = ?';
266
+ params.push(nodeId);
267
+ }
268
+ else {
269
+ sql = 'SELECT * FROM links WHERE source = ? OR target = ?';
270
+ params.push(nodeId, nodeId);
271
+ }
272
+ if (linkTypes && linkTypes.length > 0) {
273
+ sql += ` AND type IN (${linkTypes.map(() => '?').join(', ')})`;
274
+ params.push(...linkTypes);
275
+ }
276
+ if (minConfidence !== undefined && minConfidence > 0) {
277
+ sql += ' AND confidence >= ?';
278
+ params.push(minConfidence);
279
+ }
280
+ const stmt = this.db.prepare(sql);
281
+ const rows = stmt.all(...params);
282
+ return rows.map(row => this.rowToLink(row));
283
+ }
284
+ /**
285
+ * タイプ別にノードを取得
286
+ */
287
+ async getNodesByType(type) {
288
+ const stmt = this.db.prepare('SELECT * FROM nodes WHERE type = ?');
289
+ const rows = stmt.all(type);
290
+ return rows.map(row => this.rowToNode(row));
291
+ }
292
+ /**
293
+ * 孤立ノードを取得
294
+ */
295
+ async getOrphanNodes() {
296
+ const stmt = this.db.prepare(`
297
+ SELECT * FROM nodes
298
+ WHERE id NOT IN (SELECT source FROM links)
299
+ AND id NOT IN (SELECT target FROM links)
300
+ `);
301
+ const rows = stmt.all();
302
+ return rows.map(row => this.rowToNode(row));
303
+ }
304
+ /**
305
+ * 統計情報を取得
306
+ */
307
+ async getStats() {
308
+ const nodeCount = this.db.prepare('SELECT COUNT(*) as count FROM nodes').get().count;
309
+ const linkCount = this.db.prepare('SELECT COUNT(*) as count FROM links').get().count;
310
+ // ノードタイプ別カウント
311
+ const nodesByTypeRows = this.db.prepare('SELECT type, COUNT(*) as count FROM nodes GROUP BY type').all();
312
+ const nodesByType = {};
313
+ for (const row of nodesByTypeRows) {
314
+ nodesByType[row.type] = row.count;
315
+ }
316
+ // リンクタイプ別カウント
317
+ const linksByTypeRows = this.db.prepare('SELECT type, COUNT(*) as count FROM links GROUP BY type').all();
318
+ const linksByType = {};
319
+ for (const row of linksByTypeRows) {
320
+ linksByType[row.type] = row.count;
321
+ }
322
+ // 孤立ノード数
323
+ const orphanNodes = (await this.getOrphanNodes()).length;
324
+ // 最終更新日時
325
+ const lastUpdatedRow = this.db.prepare('SELECT MAX(updated_at) as last FROM nodes').get();
326
+ const lastUpdated = lastUpdatedRow.last ? new Date(lastUpdatedRow.last) : null;
327
+ return {
328
+ nodeCount,
329
+ linkCount,
330
+ nodesByType,
331
+ linksByType,
332
+ orphanNodes,
333
+ lastUpdated,
334
+ };
335
+ }
336
+ /**
337
+ * データベースを閉じる
338
+ */
339
+ close() {
340
+ this.db.close();
341
+ }
342
+ /**
343
+ * リンクIDを生成
344
+ */
345
+ generateLinkId(link) {
346
+ return `${link.source}-${link.type}-${link.target}-${Date.now()}`;
347
+ }
348
+ /**
349
+ * DBの行をノードに変換
350
+ */
351
+ rowToNode(row) {
352
+ return {
353
+ id: row.id,
354
+ type: row.type,
355
+ title: row.title,
356
+ description: row.description ?? undefined,
357
+ version: row.version ?? undefined,
358
+ createdAt: new Date(row.created_at),
359
+ updatedAt: new Date(row.updated_at),
360
+ metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
361
+ };
362
+ }
363
+ /**
364
+ * DBの行をリンクに変換
365
+ */
366
+ rowToLink(row) {
367
+ return {
368
+ id: row.id,
369
+ source: row.source,
370
+ target: row.target,
371
+ type: row.type,
372
+ description: row.description ?? undefined,
373
+ confidence: row.confidence,
374
+ createdAt: new Date(row.created_at),
375
+ metadata: row.metadata ? JSON.parse(row.metadata) : undefined,
376
+ };
377
+ }
378
+ }
379
+ //# sourceMappingURL=TraceabilityDB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TraceabilityDB.js","sourceRoot":"","sources":["../../src/traceability/TraceabilityDB.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Traceability Module Exports
3
+ */
4
+ export { TraceabilityDB } from './TraceabilityDB.js';
5
+ export { ImpactAnalyzer } from './ImpactAnalyzer.js';
6
+ export type { ImpactAnalysisOptions, CoverageResult } from './ImpactAnalyzer.js';
7
+ export type { TraceLinkType, TraceNodeType, TraceNode, TraceNodeInput, TraceLink, ImpactResult, ImpactedNode, TraceQueryOptions, TraceQueryResult, TraceDbStats, } from './types.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/traceability/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACjF,YAAY,EACV,aAAa,EACb,aAAa,EACb,SAAS,EACT,cAAc,EACd,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,GACb,MAAM,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Traceability Module Exports
3
+ */
4
+ export { TraceabilityDB } from './TraceabilityDB.js';
5
+ export { ImpactAnalyzer } from './ImpactAnalyzer.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/traceability/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Traceability Types
3
+ *
4
+ * トレーサビリティDBの型定義
5
+ */
6
+ /**
7
+ * トレースリンクの種類
8
+ */
9
+ export type TraceLinkType = 'implements' | 'derives' | 'refines' | 'satisfies' | 'verifies' | 'traces' | 'depends' | 'conflicts' | 'related';
10
+ /**
11
+ * トレースノードの種類
12
+ */
13
+ export type TraceNodeType = 'requirement' | 'design' | 'component' | 'code' | 'test' | 'task';
14
+ /**
15
+ * トレースノード
16
+ */
17
+ export interface TraceNode {
18
+ /** ノードID (例: REQ-001, DES-002) */
19
+ id: string;
20
+ /** ノードタイプ */
21
+ type: TraceNodeType;
22
+ /** タイトル/説明 */
23
+ title: string;
24
+ /** 詳細情報 */
25
+ description?: string;
26
+ /** バージョン */
27
+ version?: string;
28
+ /** 作成日時 */
29
+ createdAt: Date;
30
+ /** 更新日時 */
31
+ updatedAt: Date;
32
+ /** メタデータ */
33
+ metadata?: Record<string, unknown>;
34
+ }
35
+ /**
36
+ * トレースノード入力(日時フィールドはオプショナル)
37
+ */
38
+ export interface TraceNodeInput {
39
+ /** ノードID (例: REQ-001, DES-002) */
40
+ id: string;
41
+ /** ノードタイプ */
42
+ type: TraceNodeType;
43
+ /** タイトル/説明 */
44
+ title: string;
45
+ /** 詳細情報 */
46
+ description?: string;
47
+ /** バージョン */
48
+ version?: string;
49
+ /** 作成日時(省略時は現在時刻) */
50
+ createdAt?: Date;
51
+ /** 更新日時(省略時は現在時刻) */
52
+ updatedAt?: Date;
53
+ /** メタデータ */
54
+ metadata?: Record<string, unknown>;
55
+ }
56
+ /**
57
+ * トレースリンク
58
+ */
59
+ export interface TraceLink {
60
+ /** リンクID (自動生成) */
61
+ id?: string;
62
+ /** ソースノードID */
63
+ source: string;
64
+ /** ターゲットノードID */
65
+ target: string;
66
+ /** リンクタイプ */
67
+ type: TraceLinkType;
68
+ /** リンクの説明 */
69
+ description?: string;
70
+ /** 信頼度 (0-1) */
71
+ confidence?: number;
72
+ /** 作成日時 */
73
+ createdAt?: Date;
74
+ /** メタデータ */
75
+ metadata?: Record<string, unknown>;
76
+ }
77
+ /**
78
+ * 影響分析結果
79
+ */
80
+ export interface ImpactResult {
81
+ /** 起点ノードID */
82
+ sourceId: string;
83
+ /** 影響を受けるノード */
84
+ impactedNodes: ImpactedNode[];
85
+ /** 分析深度 */
86
+ depth: number;
87
+ /** 総影響ノード数 */
88
+ totalImpacted: number;
89
+ /** 分析時間(ミリ秒) */
90
+ duration: number;
91
+ }
92
+ /**
93
+ * 影響を受けるノード
94
+ */
95
+ export interface ImpactedNode {
96
+ /** ノードID */
97
+ id: string;
98
+ /** ノードタイプ */
99
+ type: TraceNodeType;
100
+ /** タイトル */
101
+ title: string;
102
+ /** 起点からの距離(ホップ数) */
103
+ distance: number;
104
+ /** 影響パス */
105
+ path: string[];
106
+ /** リンクタイプ */
107
+ linkType: TraceLinkType;
108
+ /** 影響度 (0-1) */
109
+ impactScore: number;
110
+ }
111
+ /**
112
+ * クエリオプション
113
+ */
114
+ export interface TraceQueryOptions {
115
+ /** 検索するリンクタイプ */
116
+ linkTypes?: TraceLinkType[];
117
+ /** 検索するノードタイプ */
118
+ nodeTypes?: TraceNodeType[];
119
+ /** 最大深度 */
120
+ maxDepth?: number;
121
+ /** 方向 */
122
+ direction?: 'forward' | 'backward' | 'both';
123
+ /** 最小信頼度 */
124
+ minConfidence?: number;
125
+ }
126
+ /**
127
+ * クエリ結果
128
+ */
129
+ export interface TraceQueryResult {
130
+ /** 検索元ノード */
131
+ source: TraceNode | null;
132
+ /** 関連ノード */
133
+ relatedNodes: TraceNode[];
134
+ /** リンク */
135
+ links: TraceLink[];
136
+ /** 検索パス */
137
+ paths: string[][];
138
+ }
139
+ /**
140
+ * DB統計情報
141
+ */
142
+ export interface TraceDbStats {
143
+ /** ノード数 */
144
+ nodeCount: number;
145
+ /** リンク数 */
146
+ linkCount: number;
147
+ /** ノードタイプ別カウント */
148
+ nodesByType: Record<TraceNodeType, number>;
149
+ /** リンクタイプ別カウント */
150
+ linksByType: Record<TraceLinkType, number>;
151
+ /** 孤立ノード数 */
152
+ orphanNodes: number;
153
+ /** 最終更新日時 */
154
+ lastUpdated: Date | null;
155
+ }
156
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/traceability/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Traceability Types
3
+ *
4
+ * トレーサビリティDBの型定義
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/traceability/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}