proofscan 0.5.5 → 0.5.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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
@@ -1,4 +1,6 @@
1
1
  export * from './schema.js';
2
2
  export * from './manager.js';
3
3
  export * from './import.js';
4
+ export * from './add.js';
5
+ export * from './snapshot.js';
4
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Config snapshot management
3
+ *
4
+ * Stores snapshots of config in state/config-snapshots/
5
+ * Maintains an index file with metadata for each snapshot.
6
+ */
7
+ import type { Config } from '../types/index.js';
8
+ /** Snapshot metadata */
9
+ export interface SnapshotMeta {
10
+ id: string;
11
+ created_at: string;
12
+ note: string | null;
13
+ file_name: string;
14
+ connector_count: number;
15
+ hash: string;
16
+ }
17
+ /** Snapshot index */
18
+ export interface SnapshotIndex {
19
+ version: 1;
20
+ snapshots: SnapshotMeta[];
21
+ }
22
+ /** Snapshot with full config */
23
+ export interface Snapshot {
24
+ meta: SnapshotMeta;
25
+ config: Config;
26
+ }
27
+ /** Diff between two configs */
28
+ export interface ConfigDiff {
29
+ added: string[];
30
+ removed: string[];
31
+ changed: string[];
32
+ unchanged: string[];
33
+ }
34
+ export declare class SnapshotManager {
35
+ private snapshotDir;
36
+ private indexPath;
37
+ constructor(configDir: string);
38
+ /**
39
+ * Ensure snapshot directory exists
40
+ */
41
+ private ensureDir;
42
+ /**
43
+ * Load snapshot index
44
+ */
45
+ loadIndex(): Promise<SnapshotIndex>;
46
+ /**
47
+ * Save snapshot index
48
+ */
49
+ private saveIndex;
50
+ /**
51
+ * Compute hash of config for comparison
52
+ */
53
+ computeHash(config: Config): string;
54
+ /**
55
+ * Generate snapshot ID from timestamp
56
+ */
57
+ private generateId;
58
+ /**
59
+ * Save a snapshot of current config
60
+ */
61
+ save(config: Config, note?: string): Promise<SnapshotMeta>;
62
+ /**
63
+ * List all snapshots (newest first)
64
+ */
65
+ list(): Promise<SnapshotMeta[]>;
66
+ /**
67
+ * Get snapshot by display number (1-indexed, newest first)
68
+ */
69
+ getByNumber(num: number): Promise<Snapshot | null>;
70
+ /**
71
+ * Delete snapshot by display number
72
+ */
73
+ delete(num: number): Promise<SnapshotMeta | null>;
74
+ /**
75
+ * Find snapshot matching current config by hash
76
+ */
77
+ findMatchingSnapshot(config: Config): Promise<number | null>;
78
+ /**
79
+ * Compare two configs and return diff
80
+ */
81
+ diffConfigs(current: Config, target: Config): ConfigDiff;
82
+ }
83
+ /**
84
+ * Format snapshot for display
85
+ */
86
+ export declare function formatSnapshotLine(num: number, meta: SnapshotMeta, isCurrent?: boolean): string;
87
+ /**
88
+ * Format config diff for display
89
+ */
90
+ export declare function formatConfigDiff(diff: ConfigDiff): string;
91
+ //# sourceMappingURL=snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/config/snapshot.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAOhD,wBAAwB;AACxB,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAqB;AACrB,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,gCAAgC;AAChC,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,+BAA+B;AAC/B,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAMD,qBAAa,eAAe;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;gBAEd,SAAS,EAAE,MAAM;IAK7B;;OAEG;YACW,SAAS;IAIvB;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,aAAa,CAAC;IAazC;;OAEG;YACW,SAAS;IAKvB;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAKnC;;OAEG;IACH,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA6BhE;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAKrC;;OAEG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAsBxD;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAqBvD;;OAEG;IACG,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAalE;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU;CAiCzD;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,YAAY,EAClB,SAAS,GAAE,OAAe,GACzB,MAAM,CAeR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAqBzD"}
@@ -0,0 +1,226 @@
1
+ /**
2
+ * Config snapshot management
3
+ *
4
+ * Stores snapshots of config in state/config-snapshots/
5
+ * Maintains an index file with metadata for each snapshot.
6
+ */
7
+ import { createHash } from 'crypto';
8
+ import { join } from 'path';
9
+ import { mkdir, unlink } from 'fs/promises';
10
+ import { atomicWriteFile, readFileSafe, fileExists } from '../utils/fs.js';
11
+ // ============================================================
12
+ // Snapshot Manager
13
+ // ============================================================
14
+ export class SnapshotManager {
15
+ snapshotDir;
16
+ indexPath;
17
+ constructor(configDir) {
18
+ this.snapshotDir = join(configDir, 'config-snapshots');
19
+ this.indexPath = join(this.snapshotDir, 'index.json');
20
+ }
21
+ /**
22
+ * Ensure snapshot directory exists
23
+ */
24
+ async ensureDir() {
25
+ await mkdir(this.snapshotDir, { recursive: true });
26
+ }
27
+ /**
28
+ * Load snapshot index
29
+ */
30
+ async loadIndex() {
31
+ const content = await readFileSafe(this.indexPath);
32
+ if (!content) {
33
+ return { version: 1, snapshots: [] };
34
+ }
35
+ try {
36
+ return JSON.parse(content);
37
+ }
38
+ catch {
39
+ return { version: 1, snapshots: [] };
40
+ }
41
+ }
42
+ /**
43
+ * Save snapshot index
44
+ */
45
+ async saveIndex(index) {
46
+ await this.ensureDir();
47
+ await atomicWriteFile(this.indexPath, JSON.stringify(index, null, 2) + '\n');
48
+ }
49
+ /**
50
+ * Compute hash of config for comparison
51
+ */
52
+ computeHash(config) {
53
+ const canonical = JSON.stringify(config);
54
+ return createHash('sha256').update(canonical).digest('hex').slice(0, 16);
55
+ }
56
+ /**
57
+ * Generate snapshot ID from timestamp
58
+ */
59
+ generateId() {
60
+ return new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
61
+ }
62
+ /**
63
+ * Save a snapshot of current config
64
+ */
65
+ async save(config, note) {
66
+ await this.ensureDir();
67
+ const id = this.generateId();
68
+ const hash = this.computeHash(config);
69
+ const noteSuffix = note ? `_${note.replace(/[^a-zA-Z0-9-]/g, '_').slice(0, 30)}` : '';
70
+ const fileName = `${id}${noteSuffix}.json`;
71
+ const filePath = join(this.snapshotDir, fileName);
72
+ // Save snapshot file
73
+ await atomicWriteFile(filePath, JSON.stringify(config, null, 2) + '\n');
74
+ // Update index
75
+ const index = await this.loadIndex();
76
+ const meta = {
77
+ id,
78
+ created_at: new Date().toISOString(),
79
+ note: note || null,
80
+ file_name: fileName,
81
+ connector_count: config.connectors.length,
82
+ hash,
83
+ };
84
+ index.snapshots.unshift(meta); // newest first
85
+ await this.saveIndex(index);
86
+ return meta;
87
+ }
88
+ /**
89
+ * List all snapshots (newest first)
90
+ */
91
+ async list() {
92
+ const index = await this.loadIndex();
93
+ return index.snapshots;
94
+ }
95
+ /**
96
+ * Get snapshot by display number (1-indexed, newest first)
97
+ */
98
+ async getByNumber(num) {
99
+ const index = await this.loadIndex();
100
+ if (num < 1 || num > index.snapshots.length) {
101
+ return null;
102
+ }
103
+ const meta = index.snapshots[num - 1];
104
+ const filePath = join(this.snapshotDir, meta.file_name);
105
+ const content = await readFileSafe(filePath);
106
+ if (!content) {
107
+ return null;
108
+ }
109
+ try {
110
+ const config = JSON.parse(content);
111
+ return { meta, config };
112
+ }
113
+ catch {
114
+ return null;
115
+ }
116
+ }
117
+ /**
118
+ * Delete snapshot by display number
119
+ */
120
+ async delete(num) {
121
+ const index = await this.loadIndex();
122
+ if (num < 1 || num > index.snapshots.length) {
123
+ return null;
124
+ }
125
+ const meta = index.snapshots[num - 1];
126
+ const filePath = join(this.snapshotDir, meta.file_name);
127
+ // Remove file if exists
128
+ if (await fileExists(filePath)) {
129
+ await unlink(filePath);
130
+ }
131
+ // Remove from index
132
+ index.snapshots.splice(num - 1, 1);
133
+ await this.saveIndex(index);
134
+ return meta;
135
+ }
136
+ /**
137
+ * Find snapshot matching current config by hash
138
+ */
139
+ async findMatchingSnapshot(config) {
140
+ const hash = this.computeHash(config);
141
+ const index = await this.loadIndex();
142
+ for (let i = 0; i < index.snapshots.length; i++) {
143
+ if (index.snapshots[i].hash === hash) {
144
+ return i + 1; // 1-indexed
145
+ }
146
+ }
147
+ return null;
148
+ }
149
+ /**
150
+ * Compare two configs and return diff
151
+ */
152
+ diffConfigs(current, target) {
153
+ const currentIds = new Set(current.connectors.map(c => c.id));
154
+ const targetIds = new Set(target.connectors.map(c => c.id));
155
+ const added = [];
156
+ const removed = [];
157
+ const changed = [];
158
+ const unchanged = [];
159
+ // Find removed (in current but not in target)
160
+ for (const id of currentIds) {
161
+ if (!targetIds.has(id)) {
162
+ removed.push(id);
163
+ }
164
+ }
165
+ // Find added and changed
166
+ for (const targetConn of target.connectors) {
167
+ if (!currentIds.has(targetConn.id)) {
168
+ added.push(targetConn.id);
169
+ }
170
+ else {
171
+ // Check if changed
172
+ const currentConn = current.connectors.find(c => c.id === targetConn.id);
173
+ if (JSON.stringify(currentConn) !== JSON.stringify(targetConn)) {
174
+ changed.push(targetConn.id);
175
+ }
176
+ else {
177
+ unchanged.push(targetConn.id);
178
+ }
179
+ }
180
+ }
181
+ return { added, removed, changed, unchanged };
182
+ }
183
+ }
184
+ // ============================================================
185
+ // Formatting helpers
186
+ // ============================================================
187
+ /**
188
+ * Format snapshot for display
189
+ */
190
+ export function formatSnapshotLine(num, meta, isCurrent = false) {
191
+ const date = new Date(meta.created_at);
192
+ const dateStr = date.toLocaleString('ja-JP', {
193
+ year: 'numeric',
194
+ month: '2-digit',
195
+ day: '2-digit',
196
+ hour: '2-digit',
197
+ minute: '2-digit',
198
+ });
199
+ const note = meta.note ? ` "${meta.note}"` : '';
200
+ const current = isCurrent ? ' [current]' : '';
201
+ const connectors = `${meta.connector_count} connectors`;
202
+ return ` ${num}. ${dateStr} - ${connectors}${note}${current}`;
203
+ }
204
+ /**
205
+ * Format config diff for display
206
+ */
207
+ export function formatConfigDiff(diff) {
208
+ const lines = [];
209
+ if (diff.added.length > 0) {
210
+ lines.push(` + Added: ${diff.added.join(', ')}`);
211
+ }
212
+ if (diff.removed.length > 0) {
213
+ lines.push(` - Removed: ${diff.removed.join(', ')}`);
214
+ }
215
+ if (diff.changed.length > 0) {
216
+ lines.push(` ~ Changed: ${diff.changed.join(', ')}`);
217
+ }
218
+ if (diff.unchanged.length > 0) {
219
+ lines.push(` = Unchanged: ${diff.unchanged.join(', ')}`);
220
+ }
221
+ if (lines.length === 0) {
222
+ lines.push(' No changes');
223
+ }
224
+ return lines.join('\n');
225
+ }
226
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/config/snapshot.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "proofscan",
3
- "version": "0.5.5",
3
+ "version": "0.5.7",
4
4
  "description": "MCP Server scanner - eliminate black boxes by capturing JSON-RPC from connection to tools/list",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",