specchain-pro 0.1.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 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { AppConfig } from '../types';
2
+ export declare class ConfigManager {
3
+ private config;
4
+ load(): Promise<AppConfig>;
5
+ save(config: AppConfig): Promise<void>;
6
+ createDefault(): Promise<void>;
7
+ get(): AppConfig;
8
+ update(updates: Partial<AppConfig>): Promise<void>;
9
+ private mergeWithDefaults;
10
+ private applyEnvironmentOverrides;
11
+ private validate;
12
+ }
13
+ export declare const configManager: ConfigManager;
14
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAA6B,MAAM,UAAU,CAAC;AAkChE,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA0B;IAElC,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC;IAmC1B,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBtC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAIpC,GAAG,IAAI,SAAS;IAaV,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxD,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,yBAAyB;IAmBjC,OAAO,CAAC,QAAQ;CAuCjB;AAGD,eAAO,MAAM,aAAa,eAAsB,CAAC"}
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.configManager = exports.ConfigManager = void 0;
7
+ const promises_1 = __importDefault(require("fs/promises"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const os_1 = __importDefault(require("os"));
10
+ const types_1 = require("../types");
11
+ const logger_1 = __importDefault(require("../utils/logger"));
12
+ const CONFIG_DIR = path_1.default.join(os_1.default.homedir(), '.specchain');
13
+ const CONFIG_FILE = path_1.default.join(CONFIG_DIR, 'config.json');
14
+ // Default configuration
15
+ const DEFAULT_CONFIG = {
16
+ ai: {
17
+ provider: 'openai',
18
+ model: 'gpt-4',
19
+ temperature: 0.7,
20
+ maxTokens: 2000,
21
+ localProvider: 'ollama',
22
+ localModel: 'llama-3.1-8b',
23
+ },
24
+ blockchain: {
25
+ network: 'testnet',
26
+ rpcUrl: 'https://sepolia.infura.io/v3/YOUR_INFURA_KEY',
27
+ contractAddress: '0x0000000000000000000000000000000000000000',
28
+ gasLimit: 500000,
29
+ keyManagement: 'keychain',
30
+ },
31
+ storage: {
32
+ basePath: path_1.default.join(os_1.default.homedir(), '.specchain'),
33
+ maxVersionHistory: 50,
34
+ },
35
+ user: {
36
+ name: '',
37
+ email: '',
38
+ defaultTags: [],
39
+ },
40
+ };
41
+ class ConfigManager {
42
+ config = null;
43
+ async load() {
44
+ try {
45
+ // Check if config file exists
46
+ try {
47
+ await promises_1.default.access(CONFIG_FILE);
48
+ }
49
+ catch {
50
+ // Config doesn't exist, create default
51
+ logger_1.default.info('Config file not found, creating default configuration');
52
+ await this.createDefault();
53
+ }
54
+ // Read config file
55
+ const configData = await promises_1.default.readFile(CONFIG_FILE, 'utf-8');
56
+ const loadedConfig = JSON.parse(configData);
57
+ // Merge with defaults (in case new fields were added)
58
+ this.config = this.mergeWithDefaults(loadedConfig);
59
+ // Override with environment variables
60
+ this.applyEnvironmentOverrides();
61
+ logger_1.default.info('Configuration loaded successfully');
62
+ return this.config;
63
+ }
64
+ catch (error) {
65
+ logger_1.default.error('Failed to load configuration', { error });
66
+ throw new types_1.SpecChainError(types_1.ErrorCode.CONFIG_INVALID, 'Failed to load configuration file', error, true, 'Check if the config file is valid JSON');
67
+ }
68
+ }
69
+ async save(config) {
70
+ try {
71
+ // Validate config before saving
72
+ this.validate(config);
73
+ // Ensure config directory exists
74
+ await promises_1.default.mkdir(CONFIG_DIR, { recursive: true });
75
+ // Write config file
76
+ await promises_1.default.writeFile(CONFIG_FILE, JSON.stringify(config, null, 2), 'utf-8');
77
+ this.config = config;
78
+ logger_1.default.info('Configuration saved successfully');
79
+ }
80
+ catch (error) {
81
+ logger_1.default.error('Failed to save configuration', { error });
82
+ throw new types_1.SpecChainError(types_1.ErrorCode.CONFIG_INVALID, 'Failed to save configuration file', error, true, 'Check file permissions and disk space');
83
+ }
84
+ }
85
+ async createDefault() {
86
+ await this.save(DEFAULT_CONFIG);
87
+ }
88
+ get() {
89
+ if (!this.config) {
90
+ throw new types_1.SpecChainError(types_1.ErrorCode.CONFIG_MISSING, 'Configuration not loaded', null, true, 'Call load() before accessing configuration');
91
+ }
92
+ return this.config;
93
+ }
94
+ async update(updates) {
95
+ const current = this.get();
96
+ const updated = { ...current, ...updates };
97
+ await this.save(updated);
98
+ }
99
+ mergeWithDefaults(loaded) {
100
+ return {
101
+ ai: { ...DEFAULT_CONFIG.ai, ...loaded.ai },
102
+ blockchain: { ...DEFAULT_CONFIG.blockchain, ...loaded.blockchain },
103
+ storage: { ...DEFAULT_CONFIG.storage, ...loaded.storage },
104
+ user: { ...DEFAULT_CONFIG.user, ...loaded.user },
105
+ };
106
+ }
107
+ applyEnvironmentOverrides() {
108
+ if (!this.config)
109
+ return;
110
+ // AI overrides
111
+ if (process.env.OPENAI_API_KEY) {
112
+ this.config.ai.apiKey = process.env.OPENAI_API_KEY;
113
+ }
114
+ // Blockchain overrides
115
+ if (process.env.BLOCKCHAIN_RPC_URL) {
116
+ this.config.blockchain.rpcUrl = process.env.BLOCKCHAIN_RPC_URL;
117
+ }
118
+ if (process.env.CONTRACT_ADDRESS) {
119
+ this.config.blockchain.contractAddress = process.env.CONTRACT_ADDRESS;
120
+ }
121
+ logger_1.default.debug('Applied environment variable overrides');
122
+ }
123
+ validate(config) {
124
+ // Validate AI config
125
+ if (!config.ai.provider || !['openai', 'local'].includes(config.ai.provider)) {
126
+ throw new types_1.SpecChainError(types_1.ErrorCode.CONFIG_INVALID, 'Invalid AI provider', { provider: config.ai.provider }, false, 'AI provider must be "openai" or "local"');
127
+ }
128
+ // Validate blockchain config
129
+ if (!config.blockchain.network ||
130
+ !['testnet', 'mainnet', 'layer2'].includes(config.blockchain.network)) {
131
+ throw new types_1.SpecChainError(types_1.ErrorCode.CONFIG_INVALID, 'Invalid blockchain network', { network: config.blockchain.network }, false, 'Network must be "testnet", "mainnet", or "layer2"');
132
+ }
133
+ // Validate storage config
134
+ if (!config.storage.basePath) {
135
+ throw new types_1.SpecChainError(types_1.ErrorCode.CONFIG_INVALID, 'Storage base path is required', null, false, 'Provide a valid storage path');
136
+ }
137
+ logger_1.default.debug('Configuration validation passed');
138
+ }
139
+ }
140
+ exports.ConfigManager = ConfigManager;
141
+ // Singleton instance
142
+ exports.configManager = new ConfigManager();
143
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,142 @@
1
+ export interface SpecDocument {
2
+ metadata: SpecMetadata;
3
+ content: SpecContent;
4
+ proof?: BlockchainProof;
5
+ lineage?: SpecLineage;
6
+ }
7
+ export interface SpecMetadata {
8
+ id: string;
9
+ author: string;
10
+ createdAt: Date;
11
+ modifiedAt: Date;
12
+ version: string;
13
+ parentSpec?: string;
14
+ tags: string[];
15
+ }
16
+ export interface SpecContent {
17
+ title: string;
18
+ overview: string;
19
+ requirements: Requirement[];
20
+ architecture: string;
21
+ implementation: string;
22
+ tags: string[];
23
+ }
24
+ export interface Requirement {
25
+ id: string;
26
+ title: string;
27
+ description: string;
28
+ priority: 'High' | 'Medium' | 'Low';
29
+ acceptanceCriteria: string[];
30
+ userStory?: string;
31
+ }
32
+ export interface BlockchainProof {
33
+ transactionId: string;
34
+ blockHash: string;
35
+ specHash: string;
36
+ timestamp: Date;
37
+ networkId: string;
38
+ layer2Network?: string;
39
+ gasUsed?: number;
40
+ }
41
+ export interface SpecLineage {
42
+ parentSpecId?: string;
43
+ parentProofId?: string;
44
+ modifications: SpecDiff[];
45
+ remixReason: string;
46
+ originalAuthor: string;
47
+ }
48
+ export interface SpecDiff {
49
+ section: string;
50
+ operation: 'add' | 'remove' | 'modify';
51
+ before?: string;
52
+ after?: string;
53
+ timestamp: Date;
54
+ }
55
+ export interface ProofResult {
56
+ transactionId: string;
57
+ blockHash: string;
58
+ timestamp: Date;
59
+ specHash: string;
60
+ networkId: string;
61
+ }
62
+ export interface VerificationResult {
63
+ isValid: boolean;
64
+ originalAuthor: string;
65
+ creationTimestamp: Date;
66
+ blockchainRecord?: ProofRecord;
67
+ message: string;
68
+ }
69
+ export interface ProofRecord {
70
+ specHash: string;
71
+ author: string;
72
+ timestamp: Date;
73
+ transactionId: string;
74
+ blockNumber: number;
75
+ }
76
+ export interface AppConfig {
77
+ ai: AIConfig;
78
+ blockchain: BlockchainConfig;
79
+ storage: StorageConfig;
80
+ user: UserConfig;
81
+ }
82
+ export interface AIConfig {
83
+ provider: 'openai' | 'local';
84
+ apiKey?: string;
85
+ model: string;
86
+ temperature: number;
87
+ maxTokens: number;
88
+ localProvider?: 'ollama' | 'lmstudio';
89
+ localModel?: string;
90
+ }
91
+ export interface BlockchainConfig {
92
+ network: 'testnet' | 'mainnet' | 'layer2';
93
+ layer2Provider?: 'base' | 'polygon' | 'arbitrum' | 'optimism';
94
+ rpcUrl: string;
95
+ contractAddress: string;
96
+ gasLimit: number;
97
+ keyManagement: 'keychain' | 'env';
98
+ }
99
+ export interface StorageConfig {
100
+ basePath: string;
101
+ maxVersionHistory: number;
102
+ }
103
+ export interface UserConfig {
104
+ name: string;
105
+ email: string;
106
+ defaultTags: string[];
107
+ }
108
+ export interface SpecSummary {
109
+ id: string;
110
+ title: string;
111
+ author: string;
112
+ createdAt: Date;
113
+ tags: string[];
114
+ verified: boolean;
115
+ }
116
+ export declare enum ErrorCode {
117
+ AI_GENERATION_FAILED = "AI_001",
118
+ AI_INVALID_INPUT = "AI_002",
119
+ AI_RATE_LIMIT = "AI_003",
120
+ BLOCKCHAIN_NETWORK_ERROR = "BC_001",
121
+ BLOCKCHAIN_TRANSACTION_FAILED = "BC_002",
122
+ BLOCKCHAIN_INSUFFICIENT_FUNDS = "BC_003",
123
+ BLOCKCHAIN_VERIFICATION_FAILED = "BC_004",
124
+ STORAGE_WRITE_FAILED = "ST_001",
125
+ STORAGE_READ_FAILED = "ST_002",
126
+ STORAGE_PERMISSION_DENIED = "ST_003",
127
+ STORAGE_DISK_FULL = "ST_004",
128
+ EXPORT_FORMAT_INVALID = "EX_001",
129
+ EXPORT_CONVERSION_FAILED = "EX_002",
130
+ CONFIG_INVALID = "CF_001",
131
+ CONFIG_MISSING = "CF_002",
132
+ NETWORK_TIMEOUT = "NT_001",
133
+ NETWORK_UNAVAILABLE = "NT_002"
134
+ }
135
+ export declare class SpecChainError extends Error {
136
+ code: ErrorCode;
137
+ details?: any | undefined;
138
+ recoverable: boolean;
139
+ suggestedAction?: string | undefined;
140
+ constructor(code: ErrorCode, message: string, details?: any | undefined, recoverable?: boolean, suggestedAction?: string | undefined);
141
+ }
142
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,OAAO,CAAC,EAAE,WAAW,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,IAAI,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpC,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,QAAQ,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,IAAI,CAAC;IACxB,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,QAAQ,CAAC;IACb,UAAU,EAAE,gBAAgB,CAAC;IAC7B,OAAO,EAAE,aAAa,CAAC;IACvB,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC1C,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,UAAU,GAAG,KAAK,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,oBAAY,SAAS;IAEnB,oBAAoB,WAAW;IAC/B,gBAAgB,WAAW;IAC3B,aAAa,WAAW;IAGxB,wBAAwB,WAAW;IACnC,6BAA6B,WAAW;IACxC,6BAA6B,WAAW;IACxC,8BAA8B,WAAW;IAGzC,oBAAoB,WAAW;IAC/B,mBAAmB,WAAW;IAC9B,yBAAyB,WAAW;IACpC,iBAAiB,WAAW;IAG5B,qBAAqB,WAAW;IAChC,wBAAwB,WAAW;IAGnC,cAAc,WAAW;IACzB,cAAc,WAAW;IAGzB,eAAe,WAAW;IAC1B,mBAAmB,WAAW;CAC/B;AAED,qBAAa,cAAe,SAAQ,KAAK;IAE9B,IAAI,EAAE,SAAS;IAEf,OAAO,CAAC,EAAE,GAAG;IACb,WAAW,EAAE,OAAO;IACpB,eAAe,CAAC,EAAE,MAAM;gBAJxB,IAAI,EAAE,SAAS,EACtB,OAAO,EAAE,MAAM,EACR,OAAO,CAAC,EAAE,GAAG,YAAA,EACb,WAAW,GAAE,OAAc,EAC3B,eAAe,CAAC,EAAE,MAAM,YAAA;CAKlC"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ // Core data types for SpecChain Pro
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.SpecChainError = exports.ErrorCode = void 0;
5
+ var ErrorCode;
6
+ (function (ErrorCode) {
7
+ // AI Errors
8
+ ErrorCode["AI_GENERATION_FAILED"] = "AI_001";
9
+ ErrorCode["AI_INVALID_INPUT"] = "AI_002";
10
+ ErrorCode["AI_RATE_LIMIT"] = "AI_003";
11
+ // Blockchain Errors
12
+ ErrorCode["BLOCKCHAIN_NETWORK_ERROR"] = "BC_001";
13
+ ErrorCode["BLOCKCHAIN_TRANSACTION_FAILED"] = "BC_002";
14
+ ErrorCode["BLOCKCHAIN_INSUFFICIENT_FUNDS"] = "BC_003";
15
+ ErrorCode["BLOCKCHAIN_VERIFICATION_FAILED"] = "BC_004";
16
+ // Storage Errors
17
+ ErrorCode["STORAGE_WRITE_FAILED"] = "ST_001";
18
+ ErrorCode["STORAGE_READ_FAILED"] = "ST_002";
19
+ ErrorCode["STORAGE_PERMISSION_DENIED"] = "ST_003";
20
+ ErrorCode["STORAGE_DISK_FULL"] = "ST_004";
21
+ // Export Errors
22
+ ErrorCode["EXPORT_FORMAT_INVALID"] = "EX_001";
23
+ ErrorCode["EXPORT_CONVERSION_FAILED"] = "EX_002";
24
+ // Configuration Errors
25
+ ErrorCode["CONFIG_INVALID"] = "CF_001";
26
+ ErrorCode["CONFIG_MISSING"] = "CF_002";
27
+ // Network Errors
28
+ ErrorCode["NETWORK_TIMEOUT"] = "NT_001";
29
+ ErrorCode["NETWORK_UNAVAILABLE"] = "NT_002";
30
+ })(ErrorCode || (exports.ErrorCode = ErrorCode = {}));
31
+ class SpecChainError extends Error {
32
+ code;
33
+ details;
34
+ recoverable;
35
+ suggestedAction;
36
+ constructor(code, message, details, recoverable = true, suggestedAction) {
37
+ super(message);
38
+ this.code = code;
39
+ this.details = details;
40
+ this.recoverable = recoverable;
41
+ this.suggestedAction = suggestedAction;
42
+ this.name = 'SpecChainError';
43
+ }
44
+ }
45
+ exports.SpecChainError = SpecChainError;
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA,oCAAoC;;;AAqIpC,IAAY,SA6BX;AA7BD,WAAY,SAAS;IACnB,YAAY;IACZ,4CAA+B,CAAA;IAC/B,wCAA2B,CAAA;IAC3B,qCAAwB,CAAA;IAExB,oBAAoB;IACpB,gDAAmC,CAAA;IACnC,qDAAwC,CAAA;IACxC,qDAAwC,CAAA;IACxC,sDAAyC,CAAA;IAEzC,iBAAiB;IACjB,4CAA+B,CAAA;IAC/B,2CAA8B,CAAA;IAC9B,iDAAoC,CAAA;IACpC,yCAA4B,CAAA;IAE5B,gBAAgB;IAChB,6CAAgC,CAAA;IAChC,gDAAmC,CAAA;IAEnC,uBAAuB;IACvB,sCAAyB,CAAA;IACzB,sCAAyB,CAAA;IAEzB,iBAAiB;IACjB,uCAA0B,CAAA;IAC1B,2CAA8B,CAAA;AAChC,CAAC,EA7BW,SAAS,yBAAT,SAAS,QA6BpB;AAED,MAAa,cAAe,SAAQ,KAAK;IAE9B;IAEA;IACA;IACA;IALT,YACS,IAAe,EACtB,OAAe,EACR,OAAa,EACb,cAAuB,IAAI,EAC3B,eAAwB;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QANR,SAAI,GAAJ,IAAI,CAAW;QAEf,YAAO,GAAP,OAAO,CAAM;QACb,gBAAW,GAAX,WAAW,CAAgB;QAC3B,oBAAe,GAAf,eAAe,CAAS;QAG/B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAXD,wCAWC"}
@@ -0,0 +1,9 @@
1
+ export declare function createCorrelationId(): string;
2
+ export declare const log: {
3
+ error: (message: string, meta?: any, correlationId?: string) => void;
4
+ warn: (message: string, meta?: any, correlationId?: string) => void;
5
+ info: (message: string, meta?: any, correlationId?: string) => void;
6
+ debug: (message: string, meta?: any, correlationId?: string) => void;
7
+ };
8
+ export default log;
9
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAkDA,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAGD,eAAO,MAAM,GAAG;qBACG,MAAM,SAAS,GAAG,kBAAkB,MAAM;oBAO3C,MAAM,SAAS,GAAG,kBAAkB,MAAM;oBAO1C,MAAM,SAAS,GAAG,kBAAkB,MAAM;qBAOzC,MAAM,SAAS,GAAG,kBAAkB,MAAM;CAM5D,CAAC;AAEF,eAAe,GAAG,CAAC"}
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.log = void 0;
7
+ exports.createCorrelationId = createCorrelationId;
8
+ const winston_1 = __importDefault(require("winston"));
9
+ const crypto_1 = __importDefault(require("crypto"));
10
+ // Sensitive data patterns to redact
11
+ const SENSITIVE_PATTERNS = [
12
+ /private[_-]?key/gi,
13
+ /api[_-]?key/gi,
14
+ /secret/gi,
15
+ /password/gi,
16
+ /0x[a-fA-F0-9]{64}/g, // Private keys
17
+ ];
18
+ // Redact sensitive data from logs
19
+ function redactSensitiveData(data) {
20
+ if (typeof data === 'string') {
21
+ let redacted = data;
22
+ SENSITIVE_PATTERNS.forEach((pattern) => {
23
+ redacted = redacted.replace(pattern, '[REDACTED]');
24
+ });
25
+ return redacted;
26
+ }
27
+ if (typeof data === 'object' && data !== null) {
28
+ const redacted = Array.isArray(data) ? [] : {};
29
+ for (const key in data) {
30
+ redacted[key] = redactSensitiveData(data[key]);
31
+ }
32
+ return redacted;
33
+ }
34
+ return data;
35
+ }
36
+ // Create logger instance
37
+ const logger = winston_1.default.createLogger({
38
+ level: process.env.LOG_LEVEL || 'info',
39
+ format: winston_1.default.format.combine(winston_1.default.format.timestamp(), winston_1.default.format.errors({ stack: true }), winston_1.default.format.json()),
40
+ defaultMeta: { service: 'specchain-pro' },
41
+ transports: [
42
+ new winston_1.default.transports.Console({
43
+ format: winston_1.default.format.combine(winston_1.default.format.colorize(), winston_1.default.format.simple()),
44
+ }),
45
+ ],
46
+ });
47
+ // Add correlation ID to logs
48
+ function createCorrelationId() {
49
+ return crypto_1.default.randomBytes(16).toString('hex');
50
+ }
51
+ // Wrapper functions with redaction
52
+ exports.log = {
53
+ error: (message, meta, correlationId) => {
54
+ logger.error(message, {
55
+ ...redactSensitiveData(meta),
56
+ correlationId,
57
+ });
58
+ },
59
+ warn: (message, meta, correlationId) => {
60
+ logger.warn(message, {
61
+ ...redactSensitiveData(meta),
62
+ correlationId,
63
+ });
64
+ },
65
+ info: (message, meta, correlationId) => {
66
+ logger.info(message, {
67
+ ...redactSensitiveData(meta),
68
+ correlationId,
69
+ });
70
+ },
71
+ debug: (message, meta, correlationId) => {
72
+ logger.debug(message, {
73
+ ...redactSensitiveData(meta),
74
+ correlationId,
75
+ });
76
+ },
77
+ };
78
+ exports.default = exports.log;
79
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "specchain-pro",
3
+ "version": "0.1.0",
4
+ "description": "AI-powered specification generation with blockchain proof-of-authorship",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "spec": "dist/cli/index.js"
8
+ },
9
+ "scripts": {
10
+ "build": "tsc",
11
+ "dev": "ts-node src/cli/index.ts",
12
+ "test": "jest",
13
+ "test:watch": "jest --watch",
14
+ "lint": "eslint src --ext .ts",
15
+ "format": "prettier --write \"src/**/*.ts\"",
16
+ "prepare": "npm run build",
17
+ "prepublishOnly": "npm run lint && npm run build"
18
+ },
19
+ "keywords": [
20
+ "specification",
21
+ "blockchain",
22
+ "ai",
23
+ "proof-of-authorship",
24
+ "cli",
25
+ "ethereum",
26
+ "layer2",
27
+ "gpt-4",
28
+ "smart-contracts",
29
+ "documentation",
30
+ "developer-tools"
31
+ ],
32
+ "author": "Luxmikant <luxmikant@outlook.com>",
33
+ "license": "MIT",
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "https://github.com/luxmikant/specchain-pro.git"
37
+ },
38
+ "bugs": {
39
+ "url": "https://github.com/luxmikant/specchain-pro/issues"
40
+ },
41
+ "homepage": "https://github.com/luxmikant/specchain-pro#readme",
42
+ "dependencies": {
43
+ "commander": "^11.1.0",
44
+ "ethers": "^6.10.0",
45
+ "openai": "^4.24.1",
46
+ "keytar": "^7.9.0",
47
+ "chalk": "^4.1.2",
48
+ "inquirer": "^8.2.6",
49
+ "ora": "^5.4.1",
50
+ "winston": "^3.11.0"
51
+ },
52
+ "devDependencies": {
53
+ "@types/node": "^20.10.6",
54
+ "@types/inquirer": "^8.2.10",
55
+ "@typescript-eslint/eslint-plugin": "^6.17.0",
56
+ "@typescript-eslint/parser": "^6.17.0",
57
+ "eslint": "^8.56.0",
58
+ "jest": "^29.7.0",
59
+ "ts-jest": "^29.1.1",
60
+ "ts-node": "^10.9.2",
61
+ "typescript": "^5.3.3",
62
+ "prettier": "^3.1.1",
63
+ "fast-check": "^3.15.0",
64
+ "@types/jest": "^29.5.11"
65
+ },
66
+ "engines": {
67
+ "node": ">=18.0.0"
68
+ }
69
+ }
@@ -0,0 +1,108 @@
1
+ # SpecChain Pro - GitHub Only Deployment Script (PowerShell)
2
+ # Deploy to GitHub without npm publishing
3
+
4
+ $ErrorActionPreference = "Stop"
5
+
6
+ Write-Host "🚀 SpecChain Pro - GitHub Deployment" -ForegroundColor Cyan
7
+ Write-Host "=====================================" -ForegroundColor Cyan
8
+ Write-Host ""
9
+
10
+ function Print-Success {
11
+ param($Message)
12
+ Write-Host "✓ $Message" -ForegroundColor Green
13
+ }
14
+
15
+ function Print-Info {
16
+ param($Message)
17
+ Write-Host "ℹ $Message" -ForegroundColor Blue
18
+ }
19
+
20
+ function Print-Warning {
21
+ param($Message)
22
+ Write-Host "âš  $Message" -ForegroundColor Yellow
23
+ }
24
+
25
+ # 1. Build project
26
+ Print-Info "Building project..."
27
+ npm run build
28
+ if ($LASTEXITCODE -ne 0) {
29
+ Write-Host "Build failed" -ForegroundColor Red
30
+ exit 1
31
+ }
32
+ Print-Success "Build successful"
33
+
34
+ # 2. Run tests
35
+ Print-Info "Running tests..."
36
+ npm test
37
+ if ($LASTEXITCODE -ne 0) {
38
+ Print-Warning "Tests not fully implemented yet"
39
+ }
40
+
41
+ # 3. Get current version
42
+ $packageJson = Get-Content "package.json" | ConvertFrom-Json
43
+ $currentVersion = $packageJson.version
44
+ Print-Info "Current version: $currentVersion"
45
+
46
+ # 4. Ask for version bump
47
+ Write-Host ""
48
+ Write-Host "Select version bump:"
49
+ Write-Host "1) Patch (bug fixes)"
50
+ Write-Host "2) Minor (new features)"
51
+ Write-Host "3) Major (breaking changes)"
52
+ Write-Host "4) Skip version bump"
53
+ $versionChoice = Read-Host "Enter choice (1-4)"
54
+
55
+ switch ($versionChoice) {
56
+ "1" {
57
+ npm version patch -m "Release v%s"
58
+ }
59
+ "2" {
60
+ npm version minor -m "Release v%s"
61
+ }
62
+ "3" {
63
+ npm version major -m "Release v%s"
64
+ }
65
+ "4" {
66
+ Print-Warning "Skipping version bump"
67
+ }
68
+ }
69
+
70
+ $packageJson = Get-Content "package.json" | ConvertFrom-Json
71
+ $newVersion = $packageJson.version
72
+ Print-Success "Version: $newVersion"
73
+
74
+ # 5. Commit and push
75
+ Print-Info "Pushing to GitHub..."
76
+ git push
77
+ if ($LASTEXITCODE -ne 0) {
78
+ Write-Host "Git push failed" -ForegroundColor Red
79
+ exit 1
80
+ }
81
+ Print-Success "Pushed to main branch"
82
+
83
+ # 6. Create and push tag
84
+ Print-Info "Creating tag v$newVersion..."
85
+ git push --tags
86
+ if ($LASTEXITCODE -ne 0) {
87
+ Write-Host "Tag push failed" -ForegroundColor Red
88
+ exit 1
89
+ }
90
+ Print-Success "Tag pushed"
91
+
92
+ # 7. Success
93
+ Write-Host ""
94
+ Write-Host "======================================" -ForegroundColor Green
95
+ Print-Success "Deployment completed!"
96
+ Write-Host "======================================" -ForegroundColor Green
97
+ Write-Host ""
98
+ Print-Info "Version $newVersion is now on GitHub"
99
+ Write-Host ""
100
+ Write-Host "Users can install with:"
101
+ Write-Host " npm install -g github:yourusername/specchain-pro"
102
+ Write-Host ""
103
+ Write-Host "Next steps:"
104
+ Write-Host " 1. Create GitHub release: https://github.com/yourusername/specchain-pro/releases/new"
105
+ Write-Host " 2. Select tag: v$newVersion"
106
+ Write-Host " 3. Add release notes from CHANGELOG.md"
107
+ Write-Host ""
108
+ Print-Success "Done! 🎉"