@snapback/cli 1.1.12 → 1.1.14
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 +9 -9
- package/dist/{analysis-Z53F5FT2.js → analysis-C6XVLBAL.js} +3 -3
- package/dist/{analysis-Z53F5FT2.js.map → analysis-C6XVLBAL.js.map} +1 -1
- package/dist/{chunk-KPETDXQO.js → chunk-2TOJVUVJ.js} +296 -33
- package/dist/chunk-2TOJVUVJ.js.map +1 -0
- package/dist/chunk-5EQLSU5B.js +385 -0
- package/dist/chunk-5EQLSU5B.js.map +1 -0
- package/dist/{chunk-YOVA65PS.js → chunk-A3TUM7U4.js} +320 -63
- package/dist/chunk-A3TUM7U4.js.map +1 -0
- package/dist/{chunk-ISVRGBWT.js → chunk-LEXNOXPV.js} +6030 -632
- package/dist/chunk-LEXNOXPV.js.map +1 -0
- package/dist/{chunk-G7QXHNGB.js → chunk-OJNDAPC2.js} +41 -15
- package/dist/chunk-OJNDAPC2.js.map +1 -0
- package/dist/{chunk-NKBZIXCN.js → chunk-Q5XZ3DCB.js} +5 -5
- package/dist/{chunk-NKBZIXCN.js.map → chunk-Q5XZ3DCB.js.map} +1 -1
- package/dist/chunk-QLCHTUT5.js +1067 -0
- package/dist/chunk-QLCHTUT5.js.map +1 -0
- package/dist/dist-D2SHOZMS.js +8 -0
- package/dist/{dist-7UKXVKH3.js.map → dist-D2SHOZMS.js.map} +1 -1
- package/dist/{dist-7UKXVKH3.js → dist-L76VXYJ5.js} +3 -3
- package/dist/{dist-VDK7WEF4.js.map → dist-L76VXYJ5.js.map} +1 -1
- package/dist/dist-RPM72FHJ.js +5 -0
- package/dist/{dist-WKLJSPJT.js.map → dist-RPM72FHJ.js.map} +1 -1
- package/dist/index.js +38672 -24130
- package/dist/index.js.map +1 -1
- package/dist/learning-pruner-YSZSOOOC.js +7 -0
- package/dist/learning-pruner-YSZSOOOC.js.map +1 -0
- package/dist/{secure-credentials-6UMEU22H.js → secure-credentials-A4QHHOE2.js} +14 -6
- package/dist/secure-credentials-A4QHHOE2.js.map +1 -0
- package/dist/{snapback-dir-T3CRQRY6.js → snapback-dir-6QUSO6Y3.js} +3 -3
- package/dist/{snapback-dir-T3CRQRY6.js.map → snapback-dir-6QUSO6Y3.js.map} +1 -1
- package/dist/storage-H366UNAR.js +6 -0
- package/dist/storage-H366UNAR.js.map +1 -0
- package/package.json +8 -9
- package/dist/chunk-G7QXHNGB.js.map +0 -1
- package/dist/chunk-ISVRGBWT.js.map +0 -1
- package/dist/chunk-KPETDXQO.js.map +0 -1
- package/dist/chunk-YOVA65PS.js.map +0 -1
- package/dist/dist-VDK7WEF4.js +0 -5
- package/dist/dist-WKLJSPJT.js +0 -8
- package/dist/secure-credentials-6UMEU22H.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../packages/intelligence/src/storage/ConfigStore.ts","../../../packages/intelligence/src/storage/JsonlStore.ts","../../../packages/intelligence/src/types/intent.ts","../../../packages/intelligence/src/storage/StateStore.ts"],"names":["ConfigStore","config","cache","rootDir","resolvePath","relativePath","join","loadArchitecture","architecture","archPath","existsSync","readFileSync","loadConstraints","constraints","constraintsPath","constraintsFile","loadPatterns","patterns","patternsPath","patternsDir","loadContextFile","filename","filePath","getStaticContext","timestamp","Date","toISOString","_cache_control","type","clearCache","contextFileExists","listAvailableContextFiles","contextFiles","filter","f","loadJsonl","filepath","split","line","trim","map","JSON","parse","e","console","error","appendJsonl","data","dir","dirname","mkdirSync","recursive","appendFileSync","stringify","appendJsonlAsync","existing","writeFile","writeJsonl","records","content","r","writeFileSync","findInJsonl","predicate","find","updateInJsonl","updater","updated","newRecords","record","countInJsonl","length","generateId","prefix","contractsGenerateId","DEFAULT_INTENT_CONFIG","maxResults","minScore","intentWeight","componentWeight","fileAffinityWeight","keywordWeight","includeRelated","inferComponentType","normalized","toLowerCase","pop","includes","endsWith","startsWith","undefined","generateFileAffinityPatterns","filePaths","Set","parts","add","slice","ext","Array","from","matchGlob","pattern","text","regexPattern","replace","regex","RegExp","test","MAGIC_BYTES","Buffer","HEADER_SIZE","CURRENT_VERSION","FLAG_ENCRYPTED","createEmptyState","schemaVersion","lastModified","learnings","violations","sessions","pendingSync","syncVersion","syncStatus","StateStore","statePath","encrypt","encryptionKey","state","dirty","options","snapbackDir","Error","load","raw","promises","readFile","deserialize","save","serialized","serialize","mkdir","tempPath","rename","getState","isDirty","getLearnings","tier","l","addLearning","learning","newLearning","id","randomUUID","createdAt","accessCount","appliedCount","relevanceScore","push","updateLearning","updates","index","findIndex","archiveLearning","learningId","archived","archivedAt","deleteLearning","splice","getArchivedLearnings","retrieveByIntent","context","fullConfig","componentType","inferDominantComponentType","files","scored","score","scoreLearning","totalScore","matchReasons","reasons","sort","a","b","expandWithRelated","enrichWithIntentMetadata","existingMeta","intentMetadata","componentTypes","Boolean","fileAffinities","intents","intent","relatedLearnings","intentSuccessCount","linkLearnings","learningId1","learningId2","learning1","learning2","meta","intentMatch","componentMatch","fileAffinityMatch","keywordMatch","relationshipMatch","matchCount","file","some","keywords","kw","types","t","counts","Map","set","get","entries","_maxResults","visited","s","toAdd","item","relatedId","has","getViolations","recordViolation","violation","v","count","lastSeen","newViolation","firstSeen","removeViolation","violationId","getPatterns","addPattern","newPattern","usageCount","getSessions","saveSession","session","Object","assign","lastCheckpoint","newSession","taskDescription","startedAt","snapshotId","appliedLearnings","updateSessionLearnings","sessionId","learningIds","getProjectContext","projectContext","setProjectContext","getPendingSync","queueForSync","p","patternKey","newItem","queuedAt","retryCount","removeSyncedItems","ids","idSet","incrementRetryCount","getSyncStatus","setSyncStatus","status","getSyncVersion","incrementSyncVersion","markSynced","lastSynced","lastSyncError","getLastSynced","setSyncError","message","json","jsonBuffer","compressed","gzipSync","level","payload","flags","encryptPayload","header","alloc","copy","writeUInt8","concat","magic","subarray","equals","version","readUInt8","decryptPayload","decompressed","gunzipSync","toString","iv","randomBytes","cipher","createCipheriv","encrypted","update","final","authTag","getAuthTag","decipher","createDecipheriv","setAuthTag","migrateFromJsonl","learningsDir","errors","migrated","learningFiles","lines","legacy","trigger","action","source","domain","substring","violationsPath","description","whatHappened","reason","whyItHappened","prevention","howToPrevent","deriveEncryptionKey","workspaceId","machineId","pbkdf2Sync","getMachineId","os","require","hostname","platform","arch","cpus","model","createHash","digest"],"mappings":"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","file":"chunk-QLCHTUT5.js","sourcesContent":["/**\n * Config Store\n *\n * Loads and caches configuration from context files.\n * Provides static context for Anthropic prompt caching.\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport type { CacheableContext, ResolvedConfig } from \"../types/config.js\";\n\n/**\n * Config Store for loading architecture, constraints, and patterns\n */\nexport class ConfigStore {\n\tprivate config: ResolvedConfig;\n\tprivate cache: {\n\t\tarchitecture?: string;\n\t\tconstraints?: string;\n\t\tpatterns?: string;\n\t\ttimestamp?: string;\n\t} = {};\n\n\tconstructor(config: ResolvedConfig) {\n\t\tthis.config = config;\n\t}\n\n\t/**\n\t * Get the root directory for intelligence data\n\t */\n\tget rootDir(): string {\n\t\treturn this.config.rootDir;\n\t}\n\n\t/**\n\t * Resolve a path relative to rootDir\n\t */\n\tresolvePath(relativePath: string): string {\n\t\treturn path.join(this.config.rootDir, relativePath);\n\t}\n\n\t/**\n\t * Load architecture documentation\n\t */\n\tloadArchitecture(): string {\n\t\tif (this.cache.architecture) {\n\t\t\treturn this.cache.architecture;\n\t\t}\n\n\t\tconst archPath = this.resolvePath(\"ARCHITECTURE.md\");\n\t\tif (fs.existsSync(archPath)) {\n\t\t\tthis.cache.architecture = fs.readFileSync(archPath, \"utf-8\");\n\t\t} else {\n\t\t\tthis.cache.architecture = \"\";\n\t\t}\n\t\treturn this.cache.architecture;\n\t}\n\n\t/**\n\t * Load constraints/rules\n\t */\n\tloadConstraints(): string {\n\t\tif (this.cache.constraints) {\n\t\t\treturn this.cache.constraints;\n\t\t}\n\n\t\tconst constraintsPath = this.resolvePath(this.config.constraintsFile);\n\t\tif (fs.existsSync(constraintsPath)) {\n\t\t\tthis.cache.constraints = fs.readFileSync(constraintsPath, \"utf-8\");\n\t\t} else {\n\t\t\tthis.cache.constraints = \"\";\n\t\t}\n\t\treturn this.cache.constraints;\n\t}\n\n\t/**\n\t * Load codebase patterns\n\t */\n\tloadPatterns(): string {\n\t\tif (this.cache.patterns) {\n\t\t\treturn this.cache.patterns;\n\t\t}\n\n\t\tconst patternsPath = this.resolvePath(path.join(this.config.patternsDir, \"codebase-patterns.md\"));\n\t\tif (fs.existsSync(patternsPath)) {\n\t\t\tthis.cache.patterns = fs.readFileSync(patternsPath, \"utf-8\");\n\t\t} else {\n\t\t\tthis.cache.patterns = \"\";\n\t\t}\n\t\treturn this.cache.patterns;\n\t}\n\n\t/**\n\t * Load any context file by name\n\t */\n\tloadContextFile(filename: string): string {\n\t\tconst filePath = this.resolvePath(filename);\n\t\tif (fs.existsSync(filePath)) {\n\t\t\treturn fs.readFileSync(filePath, \"utf-8\");\n\t\t}\n\t\treturn \"\";\n\t}\n\n\t/**\n\t * Get static context suitable for prompt caching\n\t *\n\t * Content changes rarely - cache for 5+ minutes.\n\t * Marked with cache_control for Anthropic prompt caching.\n\t *\n\t * @see https://docs.anthropic.com/claude/docs/prompt-caching\n\t */\n\tgetStaticContext(): CacheableContext {\n\t\treturn {\n\t\t\tarchitecture: this.loadArchitecture(),\n\t\t\tconstraints: this.loadConstraints(),\n\t\t\tpatterns: this.loadPatterns(),\n\t\t\ttimestamp: new Date().toISOString(),\n\t\t\t_cache_control: { type: \"ephemeral\" },\n\t\t};\n\t}\n\n\t/**\n\t * Clear the cache (for testing or after file changes)\n\t */\n\tclearCache(): void {\n\t\tthis.cache = {};\n\t}\n\n\t/**\n\t * Check if a context file exists\n\t */\n\tcontextFileExists(filename: string): boolean {\n\t\treturn fs.existsSync(this.resolvePath(filename));\n\t}\n\n\t/**\n\t * List all context files that exist\n\t */\n\tlistAvailableContextFiles(): string[] {\n\t\treturn this.config.contextFiles.filter((f) => this.contextFileExists(f));\n\t}\n}\n","/**\n * JSONL Store\n *\n * Atomic JSONL file operations for learnings, violations, and interactions.\n * Uses atomically package for safe writes that prevent corruption.\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { generateId as contractsGenerateId } from \"@snapback/contracts/id-generator\";\nimport { writeFile } from \"atomically\";\n\n/**\n * Load all records from a JSONL file\n */\nexport function loadJsonl<T>(filepath: string): T[] {\n\tif (!fs.existsSync(filepath)) {\n\t\treturn [];\n\t}\n\ttry {\n\t\treturn fs\n\t\t\t.readFileSync(filepath, \"utf-8\")\n\t\t\t.split(/\\r?\\n/) // Cross-platform: handles both \\n (Unix) and \\r\\n (Windows)\n\t\t\t.filter((line) => line.trim())\n\t\t\t.map((line) => JSON.parse(line) as T);\n\t} catch (e) {\n\t\tconsole.error(`[JsonlStore] Error loading ${filepath}:`, e);\n\t\treturn [];\n\t}\n}\n\n/**\n * Append a record to a JSONL file (sync)\n */\nexport function appendJsonl<T>(filepath: string, data: T): void {\n\tconst dir = path.dirname(filepath);\n\tif (!fs.existsSync(dir)) {\n\t\tfs.mkdirSync(dir, { recursive: true });\n\t}\n\tfs.appendFileSync(filepath, `${JSON.stringify(data)}\\n`);\n}\n\n/**\n * Append a record to a JSONL file (async, atomic)\n */\nexport async function appendJsonlAsync<T>(filepath: string, data: T): Promise<void> {\n\tconst dir = path.dirname(filepath);\n\tif (!fs.existsSync(dir)) {\n\t\tfs.mkdirSync(dir, { recursive: true });\n\t}\n\ttry {\n\t\tconst existing = fs.existsSync(filepath) ? fs.readFileSync(filepath, \"utf-8\") : \"\";\n\t\tawait writeFile(filepath, `${existing + JSON.stringify(data)}\\n`);\n\t} catch {\n\t\t// Fallback to sync append\n\t\tfs.appendFileSync(filepath, `${JSON.stringify(data)}\\n`);\n\t}\n}\n\n/**\n * Write all records to a JSONL file (atomic replace)\n */\nexport async function writeJsonl<T>(filepath: string, records: T[]): Promise<void> {\n\tconst dir = path.dirname(filepath);\n\tif (!fs.existsSync(dir)) {\n\t\tfs.mkdirSync(dir, { recursive: true });\n\t}\n\tconst content = `${records.map((r) => JSON.stringify(r)).join(\"\\n\")}\\n`;\n\ttry {\n\t\tawait writeFile(filepath, content);\n\t} catch {\n\t\t// Fallback to sync write\n\t\tfs.writeFileSync(filepath, content);\n\t}\n}\n\n/**\n * Find a record by predicate\n */\nexport function findInJsonl<T>(filepath: string, predicate: (item: T) => boolean): T | undefined {\n\tconst records = loadJsonl<T>(filepath);\n\treturn records.find(predicate);\n}\n\n/**\n * Update a record that matches the predicate\n */\nexport async function updateInJsonl<T>(\n\tfilepath: string,\n\tpredicate: (item: T) => boolean,\n\tupdater: (item: T) => T,\n): Promise<boolean> {\n\tconst records = loadJsonl<T>(filepath);\n\tlet updated = false;\n\n\tconst newRecords = records.map((record) => {\n\t\tif (predicate(record)) {\n\t\t\tupdated = true;\n\t\t\treturn updater(record);\n\t\t}\n\t\treturn record;\n\t});\n\n\tif (updated) {\n\t\tawait writeJsonl(filepath, newRecords);\n\t}\n\n\treturn updated;\n}\n\n/**\n * Count records matching a predicate\n */\nexport function countInJsonl<T>(filepath: string, predicate?: (item: T) => boolean): number {\n\tconst records = loadJsonl<T>(filepath);\n\tif (!predicate) {\n\t\treturn records.length;\n\t}\n\treturn records.filter(predicate).length;\n}\n\n/**\n * Generate a unique ID - delegates to @snapback/contracts\n * Re-exported for backwards compatibility\n */\nexport function generateId(prefix = \"ID\"): string {\n\treturn contractsGenerateId(prefix);\n}\n","/**\n * Task Intent Types for Context-Aware Learning Retrieval\n *\n * Based on research from Cursor RAG pipeline and A-MEM agentic memory systems\n * Enables semantic matching of learnings to specific task contexts\n *\n * @module types/intent\n */\n\n/**\n * Task intent categories for learning retrieval\n * Maps to specific development activities that require different pattern sets\n */\nexport type TaskIntent = \"implement\" | \"debug\" | \"refactor\" | \"test\" | \"review\" | \"explore\";\n\n/**\n * Component type classification for file affinity\n * Enables filtering learnings by component type regardless of file path\n */\nexport type ComponentType = \"hook\" | \"component\" | \"api\" | \"migration\" | \"test\" | \"util\" | \"type\" | \"config\" | \"tool\";\n\n/**\n * Task intent metadata attached to learnings\n * Enables multi-dimensional retrieval beyond simple keyword matching\n */\nexport interface IntentMetadata {\n\t/** Primary task intents this learning applies to */\n\tintents: TaskIntent[];\n\t/** Component types this learning is relevant for */\n\tcomponentTypes: ComponentType[];\n\t/** File glob patterns this learning commonly applies to */\n\tfileAffinities: string[];\n\t/** Semantic embedding vector for similarity search (future: vector DB) */\n\tsemanticEmbedding?: number[];\n\t/** Related learning IDs (Zettelkasten-style links) */\n\trelatedLearnings: string[];\n\t/** Number of times this intent-context pair was successful */\n\tintentSuccessCount: Record<TaskIntent, number>;\n}\n\n/**\n * Task context provided when requesting learnings\n * Used to match against IntentMetadata for precision retrieval\n */\nexport interface TaskContext {\n\t/** What the user/agent is trying to do */\n\tintent: TaskIntent;\n\t/** Files being worked on */\n\tfiles: string[];\n\t/** Optional keywords for additional filtering */\n\tkeywords?: string[];\n\t/** Optional component type hint from file analysis */\n\tcomponentType?: ComponentType;\n}\n\n/**\n * Scored learning result from intent-aware retrieval\n */\nexport interface ScoredLearning {\n\tlearningId: string;\n\tscore: number;\n\tmatchReasons: {\n\t\tintentMatch: boolean;\n\t\tcomponentMatch: boolean;\n\t\tfileAffinityMatch: boolean;\n\t\tkeywordMatch: boolean;\n\t\trelationshipMatch: boolean;\n\t};\n}\n\n/**\n * Intent-based retrieval configuration\n */\nexport interface IntentRetrievalConfig {\n\t/** Maximum learnings to return */\n\tmaxResults: number;\n\t/** Minimum score threshold (0-1) */\n\tminScore: number;\n\t/** Weight for intent matching (default: 0.4) */\n\tintentWeight: number;\n\t/** Weight for component type matching (default: 0.3) */\n\tcomponentWeight: number;\n\t/** Weight for file affinity matching (default: 0.2) */\n\tfileAffinityWeight: number;\n\t/** Weight for keyword matching (default: 0.1) */\n\tkeywordWeight: number;\n\t/** Include related learnings via graph traversal */\n\tincludeRelated: boolean;\n}\n\n/**\n * Default retrieval configuration\n */\nexport const DEFAULT_INTENT_CONFIG: IntentRetrievalConfig = {\n\tmaxResults: 10,\n\tminScore: 0.3,\n\tintentWeight: 0.4,\n\tcomponentWeight: 0.3,\n\tfileAffinityWeight: 0.2,\n\tkeywordWeight: 0.1,\n\tincludeRelated: true,\n};\n\n/**\n * Infer component type from file path\n */\nexport function inferComponentType(filePath: string): ComponentType | undefined {\n\tconst normalized = filePath.toLowerCase();\n\tconst filename = normalized.split(\"/\").pop() ?? \"\";\n\n\tif (normalized.includes(\"test\") || normalized.endsWith(\".test.ts\") || normalized.endsWith(\".spec.ts\")) {\n\t\treturn \"test\";\n\t}\n\tif (normalized.includes(\"hooks/\") || filename.startsWith(\"use-\")) {\n\t\treturn \"hook\";\n\t}\n\tif (normalized.includes(\"components/\") || normalized.endsWith(\".tsx\") || normalized.endsWith(\".jsx\")) {\n\t\treturn \"component\";\n\t}\n\tif (normalized.includes(\"api/\") || normalized.includes(\"routes/\") || normalized.includes(\"endpoints/\")) {\n\t\treturn \"api\";\n\t}\n\tif (normalized.includes(\"migrations/\") || normalized.includes(\"drizzle/\")) {\n\t\treturn \"migration\";\n\t}\n\tif (normalized.includes(\"utils/\") || normalized.includes(\"lib/\")) {\n\t\treturn \"util\";\n\t}\n\tif (normalized.includes(\"types/\") || normalized.endsWith(\".d.ts\")) {\n\t\treturn \"type\";\n\t}\n\tif (normalized.includes(\"config\") || normalized.endsWith(\".config.ts\") || normalized.endsWith(\".config.js\")) {\n\t\treturn \"config\";\n\t}\n\tif (normalized.includes(\"tools/\") || normalized.includes(\"mcp/\")) {\n\t\treturn \"tool\";\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Generate file affinity patterns from file paths\n * Used to create glob patterns that match similar files\n */\nexport function generateFileAffinityPatterns(filePaths: string[]): string[] {\n\tconst patterns = new Set<string>();\n\n\tfor (const filePath of filePaths) {\n\t\tconst parts = filePath.split(\"/\");\n\n\t\t// Add directory patterns\n\t\tif (parts.length > 1) {\n\t\t\tpatterns.add(`${parts[0]}/**`); // Top-level dir\n\t\t\tif (parts.length > 2) {\n\t\t\t\tpatterns.add(`${parts.slice(0, 2).join(\"/\")}/**`); // 2-level dir\n\t\t\t}\n\t\t}\n\n\t\t// Add extension pattern\n\t\tconst ext = filePath.split(\".\").pop();\n\t\tif (ext) {\n\t\t\tpatterns.add(`**/*.${ext}`);\n\t\t}\n\n\t\t// Add filename pattern (e.g., \"use-*.ts\" for hooks)\n\t\tconst filename = parts[parts.length - 1];\n\t\tif (filename?.startsWith(\"use-\")) {\n\t\t\tpatterns.add(\"**/use-*.ts\");\n\t\t\tpatterns.add(\"**/use-*.tsx\");\n\t\t}\n\t}\n\n\treturn Array.from(patterns);\n}\n","/**\n * StateStore - Binary State Storage with IP Protection\n *\n * Stores internal SnapBack state (learnings, violations, patterns, sessions)\n * in a compressed binary format to:\n * 1. Protect IP (can't casually browse detection logic)\n * 2. Reduce disk usage (~70% compression)\n * 3. Optionally encrypt for pro tier users\n *\n * File format: state.bin\n * - Magic bytes: \"SNAPBACK\" (8 bytes)\n * - Version: uint8 (1 byte)\n * - Flags: uint8 (1 byte) - bit 0: encrypted\n * - Reserved: 6 bytes\n * - Payload: gzip-compressed JSON (optionally AES-256-GCM encrypted)\n *\n * @module storage/StateStore\n */\n\nimport * as crypto from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport * as zlib from \"node:zlib\";\nimport type {\n\tComponentType,\n\tIntentMetadata,\n\tIntentRetrievalConfig,\n\tScoredLearning,\n\tTaskContext,\n\tTaskIntent,\n} from \"../types/intent.js\";\nimport { DEFAULT_INTENT_CONFIG, generateFileAffinityPatterns, inferComponentType } from \"../types/intent.js\";\n\n/**\n * Simple glob pattern matching (internal, no external dependency)\n * Supports ** (any path), * (any chars), and ? (single char)\n */\nfunction matchGlob(pattern: string, text: string): boolean {\n\tconst regexPattern = pattern\n\t\t.replace(/[.+^${}()|[\\]\\\\]/g, \"\\\\$&\") // Escape special regex chars\n\t\t.replace(/\\*\\*/g, \"<<<GLOBSTAR>>>\") // Temp placeholder for **\n\t\t.replace(/\\*/g, \"[^/]*\") // * → any chars except /\n\t\t.replace(/<<<GLOBSTAR>>>/g, \".*\") // ** → any chars\n\t\t.replace(/\\?/g, \".\"); // ? → single char\n\n\tconst regex = new RegExp(`^${regexPattern}$`, \"i\");\n\treturn regex.test(text);\n}\n\n// Magic bytes for file identification\nconst MAGIC_BYTES = Buffer.from(\"SNAPBACK\", \"utf8\");\nconst HEADER_SIZE = 16; // 8 magic + 1 version + 1 flags + 6 reserved\nconst CURRENT_VERSION = 1;\n\n// Flags\nconst FLAG_ENCRYPTED = 0x01;\n\n/**\n * Learning record stored in state\n */\nexport interface StoredLearning {\n\tid: string;\n\ttype: \"pattern\" | \"pitfall\" | \"efficiency\" | \"discovery\" | \"workflow\";\n\ttrigger: string;\n\taction: string;\n\tkeywords?: string[];\n\tsource?: \"survey\" | \"manual\" | \"violation\" | \"curated\";\n\ttier: \"hot\" | \"warm\" | \"cold\";\n\tdomain?: string;\n\tcreatedAt: string;\n\tlastAccessed?: string;\n\taccessCount: number;\n\tappliedCount: number;\n\trelevanceScore: number;\n\tarchived?: boolean; // Phase 2.6b: Mark as archived (excluded from matching)\n\tarchivedAt?: string; // Phase 2.6b: ISO timestamp of archival\n\t// Phase 2.6c: Intent-aware retrieval metadata\n\tintentMetadata?: IntentMetadata;\n}\n\n/**\n * Violation record stored in state\n */\nexport interface StoredViolation {\n\tid: string;\n\ttype: string;\n\tfile: string;\n\tdescription: string;\n\treason?: string;\n\tprevention: string;\n\tcount: number;\n\tfirstSeen: string;\n\tlastSeen: string;\n\tpromotedToPattern?: boolean;\n}\n\n/**\n * Pattern record stored in state\n */\nexport interface StoredPattern {\n\tid: string;\n\tname: string;\n\tdescription: string;\n\ttrigger: string;\n\taction: string;\n\tsource: \"violation\" | \"manual\" | \"curated\";\n\tconfidence: number;\n\tusageCount: number;\n\tcreatedAt: string;\n}\n\n/**\n * Session checkpoint stored in state\n */\nexport interface StoredSession {\n\tid: string;\n\ttaskDescription?: string;\n\tstartedAt: string;\n\tlastCheckpoint: string;\n\tsnapshotId?: string;\n\tcontext?: Record<string, unknown>;\n\tappliedLearnings?: string[]; // Learning IDs applied in this session (Phase 2.6a)\n}\n\n/**\n * Pending sync item (learning waiting to be synced to cloud)\n */\nexport interface PendingSyncItem {\n\tid: string;\n\ttype: \"learning\" | \"violation\";\n\tpatternKey: string;\n\tpatternType: string;\n\tconfidence: number;\n\tqueuedAt: string;\n\tretryCount: number;\n}\n\n/**\n * Project context stored in state\n */\nexport interface StoredProjectContext {\n\tversion: number;\n\tgenerated: string;\n\ttechStack: {\n\t\tprimary: string[];\n\t\ttesting?: string[];\n\t\tinfra?: string[];\n\t};\n\tarchitecture?: {\n\t\tpattern: string;\n\t\tlayers: string[];\n\t\tentryPoints?: string[];\n\t};\n\tconventions?: Record<string, string>;\n\timportantFiles?: string[];\n\tdoNotTouch?: string[];\n}\n\n/**\n * Sync status for CRDT synchronization\n */\nexport type SyncStatus = \"syncing\" | \"synced\" | \"error\" | \"pending\";\n\n/**\n * Complete internal state\n */\nexport interface InternalState {\n\t/** Schema version for migrations */\n\tschemaVersion: number;\n\t/** Last modified timestamp */\n\tlastModified: string;\n\t/** Workspace ID this state belongs to */\n\tworkspaceId?: string;\n\t/** Tiered learnings */\n\tlearnings: StoredLearning[];\n\t/** Violation tracking */\n\tviolations: StoredViolation[];\n\t/** Promoted patterns */\n\tpatterns: StoredPattern[];\n\t/** Session checkpoints */\n\tsessions: StoredSession[];\n\t/** Pending sync queue (items waiting to sync to cloud) */\n\tpendingSync: PendingSyncItem[];\n\t/** Project context */\n\tprojectContext?: StoredProjectContext;\n\t/** CRDT sync version for conflict resolution */\n\tsyncVersion: number;\n\t/** Last successful sync timestamp */\n\tlastSynced?: string;\n\t/** Current sync status */\n\tsyncStatus: SyncStatus;\n\t/** Last sync error message (cleared on success) */\n\tlastSyncError?: string;\n}\n\n/**\n * StateStore options\n */\nexport interface StateStoreOptions {\n\t/** Path to .snapback directory */\n\tsnapbackDir: string;\n\t/** Enable encryption (requires encryptionKey) */\n\tencrypt?: boolean;\n\t/** Encryption key (32 bytes for AES-256) */\n\tencryptionKey?: Buffer;\n}\n\n/**\n * Default empty state\n */\nfunction createEmptyState(): InternalState {\n\treturn {\n\t\tschemaVersion: 1,\n\t\tlastModified: new Date().toISOString(),\n\t\tlearnings: [],\n\t\tviolations: [],\n\t\tpatterns: [],\n\t\tsessions: [],\n\t\tpendingSync: [],\n\t\tsyncVersion: 0,\n\t\tsyncStatus: \"pending\",\n\t};\n}\n\n/**\n * StateStore - Binary state storage with compression and optional encryption\n */\nexport class StateStore {\n\tprivate readonly statePath: string;\n\tprivate readonly encrypt: boolean;\n\tprivate readonly encryptionKey?: Buffer;\n\tprivate state: InternalState;\n\tprivate dirty = false;\n\n\tconstructor(options: StateStoreOptions) {\n\t\tthis.statePath = path.join(options.snapbackDir, \"state.bin\");\n\t\tthis.encrypt = options.encrypt ?? false;\n\t\tthis.encryptionKey = options.encryptionKey;\n\n\t\tif (this.encrypt && (!this.encryptionKey || this.encryptionKey.length !== 32)) {\n\t\t\tthrow new Error(\"Encryption requires a 32-byte key\");\n\t\t}\n\n\t\tthis.state = createEmptyState();\n\t}\n\n\t/**\n\t * Load state from disk\n\t */\n\tasync load(): Promise<InternalState> {\n\t\tif (!fs.existsSync(this.statePath)) {\n\t\t\tthis.state = createEmptyState();\n\t\t\treturn this.state;\n\t\t}\n\n\t\ttry {\n\t\t\tconst raw = await fs.promises.readFile(this.statePath);\n\t\t\tthis.state = this.deserialize(raw);\n\t\t\treturn this.state;\n\t\t} catch (error) {\n\t\t\tconsole.error(\"[StateStore] Failed to load state, starting fresh:\", error);\n\t\t\tthis.state = createEmptyState();\n\t\t\treturn this.state;\n\t\t}\n\t}\n\n\t/**\n\t * Save state to disk\n\t */\n\tasync save(): Promise<void> {\n\t\tthis.state.lastModified = new Date().toISOString();\n\n\t\tconst serialized = this.serialize(this.state);\n\n\t\t// Ensure directory exists\n\t\tconst dir = path.dirname(this.statePath);\n\t\tif (!fs.existsSync(dir)) {\n\t\t\tawait fs.promises.mkdir(dir, { recursive: true });\n\t\t}\n\n\t\t// Atomic write via temp file\n\t\tconst tempPath = `${this.statePath}.tmp`;\n\t\tawait fs.promises.writeFile(tempPath, serialized);\n\t\tawait fs.promises.rename(tempPath, this.statePath);\n\n\t\tthis.dirty = false;\n\t}\n\n\t/**\n\t * Get current state (readonly)\n\t */\n\tgetState(): Readonly<InternalState> {\n\t\treturn this.state;\n\t}\n\n\t/**\n\t * Check if state has unsaved changes\n\t */\n\tisDirty(): boolean {\n\t\treturn this.dirty;\n\t}\n\n\t// ============================================================================\n\t// LEARNINGS\n\t// ============================================================================\n\n\tgetLearnings(tier?: \"hot\" | \"warm\" | \"cold\"): StoredLearning[] {\n\t\tif (!tier) {\n\t\t\treturn [...this.state.learnings];\n\t\t}\n\t\treturn this.state.learnings.filter((l) => l.tier === tier);\n\t}\n\n\taddLearning(\n\t\tlearning: Omit<StoredLearning, \"id\" | \"createdAt\" | \"accessCount\" | \"appliedCount\" | \"relevanceScore\">,\n\t): StoredLearning {\n\t\tconst newLearning: StoredLearning = {\n\t\t\t...learning,\n\t\t\tid: crypto.randomUUID(),\n\t\t\tcreatedAt: new Date().toISOString(),\n\t\t\taccessCount: 0,\n\t\t\tappliedCount: 0,\n\t\t\trelevanceScore: 1.0,\n\t\t};\n\t\tthis.state.learnings.push(newLearning);\n\t\tthis.dirty = true;\n\t\treturn newLearning;\n\t}\n\n\tupdateLearning(id: string, updates: Partial<StoredLearning>): boolean {\n\t\tconst index = this.state.learnings.findIndex((l) => l.id === id);\n\t\tif (index === -1) {\n\t\t\treturn false;\n\t\t}\n\t\tthis.state.learnings[index] = { ...this.state.learnings[index], ...updates };\n\t\tthis.dirty = true;\n\t\treturn true;\n\t}\n\n\t/**\n\t * Archive a learning (Phase 2.6b: set archived flag, preserve data)\n\t */\n\tarchiveLearning(learningId: string): boolean {\n\t\tconst learning = this.state.learnings.find((l) => l.id === learningId);\n\t\tif (!learning) {\n\t\t\treturn false;\n\t\t}\n\t\tlearning.archived = true;\n\t\tlearning.archivedAt = new Date().toISOString();\n\t\tthis.dirty = true;\n\t\treturn true;\n\t}\n\n\t/**\n\t * Delete a learning permanently (Phase 2.6b: remove from state)\n\t */\n\tdeleteLearning(learningId: string): boolean {\n\t\tconst index = this.state.learnings.findIndex((l) => l.id === learningId);\n\t\tif (index === -1) {\n\t\t\treturn false;\n\t\t}\n\t\tthis.state.learnings.splice(index, 1);\n\t\tthis.dirty = true;\n\t\treturn true;\n\t}\n\n\t/**\n\t * Get archived learnings (Phase 2.6b)\n\t */\n\tgetArchivedLearnings(): StoredLearning[] {\n\t\treturn this.state.learnings.filter((l) => l.archived === true);\n\t}\n\n\t// ============================================================================\n\t// INTENT-AWARE RETRIEVAL (Phase 2.6c)\n\t// ============================================================================\n\n\t/**\n\t * Retrieve learnings using task-intent graph indexing\n\t * Based on Cursor RAG + A-MEM research patterns\n\t *\n\t * @param context - Task context with intent, files, and keywords\n\t * @param config - Optional retrieval configuration\n\t * @returns Scored learnings ranked by relevance\n\t */\n\tretrieveByIntent(context: TaskContext, config: Partial<IntentRetrievalConfig> = {}): ScoredLearning[] {\n\t\tconst fullConfig: IntentRetrievalConfig = { ...DEFAULT_INTENT_CONFIG, ...config };\n\n\t\t// Infer component type from files if not provided\n\t\tconst componentType = context.componentType ?? this.inferDominantComponentType(context.files);\n\n\t\t// Score all non-archived learnings\n\t\tconst scored: ScoredLearning[] = [];\n\t\tfor (const learning of this.state.learnings) {\n\t\t\tif (learning.archived) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst score = this.scoreLearning(learning, context, componentType, fullConfig);\n\t\t\tif (score.totalScore >= fullConfig.minScore) {\n\t\t\t\tscored.push({\n\t\t\t\t\tlearningId: learning.id,\n\t\t\t\t\tscore: score.totalScore,\n\t\t\t\t\tmatchReasons: score.reasons,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Sort by score descending\n\t\tscored.sort((a, b) => b.score - a.score);\n\n\t\t// Include related learnings via graph traversal\n\t\tif (fullConfig.includeRelated) {\n\t\t\tthis.expandWithRelated(scored, fullConfig.maxResults);\n\t\t}\n\n\t\treturn scored.slice(0, fullConfig.maxResults);\n\t}\n\n\t/**\n\t * Enrich a learning with intent metadata\n\t * Called when creating/updating learnings with file context\n\t */\n\tenrichWithIntentMetadata(\n\t\tlearningId: string,\n\t\tcontext: { intent: TaskIntent; files: string[]; keywords?: string[] },\n\t): boolean {\n\t\tconst learning = this.state.learnings.find((l) => l.id === learningId);\n\t\tif (!learning) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst existingMeta = learning.intentMetadata;\n\t\tconst componentTypes = context.files.map((f) => inferComponentType(f)).filter(Boolean) as ComponentType[];\n\t\tconst fileAffinities = generateFileAffinityPatterns(context.files);\n\n\t\t// Merge with existing metadata\n\t\tlearning.intentMetadata = {\n\t\t\tintents: existingMeta ? Array.from(new Set([...existingMeta.intents, context.intent])) : [context.intent],\n\t\t\tcomponentTypes: existingMeta\n\t\t\t\t? Array.from(new Set([...existingMeta.componentTypes, ...componentTypes]))\n\t\t\t\t: componentTypes,\n\t\t\tfileAffinities: existingMeta\n\t\t\t\t? Array.from(new Set([...existingMeta.fileAffinities, ...fileAffinities]))\n\t\t\t\t: fileAffinities,\n\t\t\trelatedLearnings: existingMeta?.relatedLearnings ?? [],\n\t\t\tintentSuccessCount: {\n\t\t\t\t...(existingMeta?.intentSuccessCount ?? {}),\n\t\t\t\t[context.intent]: (existingMeta?.intentSuccessCount?.[context.intent] ?? 0) + 1,\n\t\t\t} as Record<TaskIntent, number>,\n\t\t};\n\n\t\tthis.dirty = true;\n\t\treturn true;\n\t}\n\n\t/**\n\t * Link two learnings together (Zettelkasten-style)\n\t */\n\tlinkLearnings(learningId1: string, learningId2: string): boolean {\n\t\tconst learning1 = this.state.learnings.find((l) => l.id === learningId1);\n\t\tconst learning2 = this.state.learnings.find((l) => l.id === learningId2);\n\t\tif (!learning1 || !learning2) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Ensure metadata exists\n\t\tif (!learning1.intentMetadata) {\n\t\t\tlearning1.intentMetadata = {\n\t\t\t\tintents: [],\n\t\t\t\tcomponentTypes: [],\n\t\t\t\tfileAffinities: [],\n\t\t\t\trelatedLearnings: [],\n\t\t\t\tintentSuccessCount: {} as Record<TaskIntent, number>,\n\t\t\t};\n\t\t}\n\t\tif (!learning2.intentMetadata) {\n\t\t\tlearning2.intentMetadata = {\n\t\t\t\tintents: [],\n\t\t\t\tcomponentTypes: [],\n\t\t\t\tfileAffinities: [],\n\t\t\t\trelatedLearnings: [],\n\t\t\t\tintentSuccessCount: {} as Record<TaskIntent, number>,\n\t\t\t};\n\t\t}\n\n\t\t// Bidirectional link\n\t\tif (!learning1.intentMetadata.relatedLearnings.includes(learningId2)) {\n\t\t\tlearning1.intentMetadata.relatedLearnings.push(learningId2);\n\t\t}\n\t\tif (!learning2.intentMetadata.relatedLearnings.includes(learningId1)) {\n\t\t\tlearning2.intentMetadata.relatedLearnings.push(learningId1);\n\t\t}\n\n\t\tthis.dirty = true;\n\t\treturn true;\n\t}\n\n\t/**\n\t * Private: Score a learning against task context\n\t */\n\tprivate scoreLearning(\n\t\tlearning: StoredLearning,\n\t\tcontext: TaskContext,\n\t\tcomponentType: ComponentType | undefined,\n\t\tconfig: IntentRetrievalConfig,\n\t): { totalScore: number; reasons: ScoredLearning[\"matchReasons\"] } {\n\t\tconst meta = learning.intentMetadata;\n\t\tconst reasons: ScoredLearning[\"matchReasons\"] = {\n\t\t\tintentMatch: false,\n\t\t\tcomponentMatch: false,\n\t\t\tfileAffinityMatch: false,\n\t\t\tkeywordMatch: false,\n\t\t\trelationshipMatch: false,\n\t\t};\n\n\t\tlet totalScore = 0;\n\n\t\t// Intent matching\n\t\tif (meta?.intents.includes(context.intent)) {\n\t\t\treasons.intentMatch = true;\n\t\t\ttotalScore += config.intentWeight;\n\t\t}\n\n\t\t// Component type matching\n\t\tif (componentType && meta?.componentTypes.includes(componentType)) {\n\t\t\treasons.componentMatch = true;\n\t\t\ttotalScore += config.componentWeight;\n\t\t}\n\n\t\t// File affinity matching (glob patterns)\n\t\tif (meta?.fileAffinities.length) {\n\t\t\tconst matchCount = context.files.filter((file) =>\n\t\t\t\tmeta.fileAffinities.some((pattern) => matchGlob(pattern, file)),\n\t\t\t).length;\n\t\t\tif (matchCount > 0) {\n\t\t\t\treasons.fileAffinityMatch = true;\n\t\t\t\ttotalScore += config.fileAffinityWeight * (matchCount / context.files.length);\n\t\t\t}\n\t\t}\n\n\t\t// Keyword matching\n\t\tif (context.keywords?.length && learning.keywords?.length) {\n\t\t\tconst matchCount = context.keywords.filter((kw) => learning.keywords?.includes(kw)).length;\n\t\t\tif (matchCount > 0) {\n\t\t\t\treasons.keywordMatch = true;\n\t\t\t\ttotalScore += config.keywordWeight * (matchCount / context.keywords.length);\n\t\t\t}\n\t\t}\n\n\t\treturn { totalScore, reasons };\n\t}\n\n\t/**\n\t * Private: Infer dominant component type from file list\n\t */\n\tprivate inferDominantComponentType(files: string[]): ComponentType | undefined {\n\t\tconst types = files.map((f) => inferComponentType(f)).filter((t): t is ComponentType => t !== undefined);\n\t\tif (types.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Return most common type\n\t\tconst counts = new Map<ComponentType, number>();\n\t\tfor (const type of types) {\n\t\t\tcounts.set(type, (counts.get(type) ?? 0) + 1);\n\t\t}\n\t\treturn Array.from(counts.entries()).sort((a, b) => b[1] - a[1])[0]?.[0];\n\t}\n\n\t/**\n\t * Private: Expand results with related learnings via graph traversal\n\t */\n\tprivate expandWithRelated(scored: ScoredLearning[], _maxResults: number): void {\n\t\tconst visited = new Set<string>(scored.map((s) => s.learningId));\n\t\tconst toAdd: ScoredLearning[] = [];\n\n\t\tfor (const item of scored) {\n\t\t\tconst learning = this.state.learnings.find((l) => l.id === item.learningId);\n\t\t\tif (!learning?.intentMetadata?.relatedLearnings.length) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tfor (const relatedId of learning.intentMetadata.relatedLearnings) {\n\t\t\t\tif (visited.has(relatedId)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tvisited.add(relatedId);\n\n\t\t\t\t// Add related learning with reduced score\n\t\t\t\ttoAdd.push({\n\t\t\t\t\tlearningId: relatedId,\n\t\t\t\t\tscore: item.score * 0.7, // Related learnings get 70% of parent score\n\t\t\t\t\tmatchReasons: {\n\t\t\t\t\t\tintentMatch: false,\n\t\t\t\t\t\tcomponentMatch: false,\n\t\t\t\t\t\tfileAffinityMatch: false,\n\t\t\t\t\t\tkeywordMatch: false,\n\t\t\t\t\t\trelationshipMatch: true,\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// Merge and re-sort\n\t\tscored.push(...toAdd);\n\t\tscored.sort((a, b) => b.score - a.score);\n\t}\n\n\t// ============================================================================\n\t// VIOLATIONS\n\t// ============================================================================\n\n\tgetViolations(): StoredViolation[] {\n\t\treturn [...this.state.violations];\n\t}\n\n\trecordViolation(violation: Omit<StoredViolation, \"id\" | \"count\" | \"firstSeen\" | \"lastSeen\">): StoredViolation {\n\t\t// Check if violation of this type/file already exists\n\t\tconst existing = this.state.violations.find((v) => v.type === violation.type && v.file === violation.file);\n\n\t\tif (existing) {\n\t\t\texisting.count++;\n\t\t\texisting.lastSeen = new Date().toISOString();\n\t\t\tthis.dirty = true;\n\t\t\treturn existing;\n\t\t}\n\n\t\tconst newViolation: StoredViolation = {\n\t\t\t...violation,\n\t\t\tid: crypto.randomUUID(),\n\t\t\tcount: 1,\n\t\t\tfirstSeen: new Date().toISOString(),\n\t\t\tlastSeen: new Date().toISOString(),\n\t\t};\n\t\tthis.state.violations.push(newViolation);\n\t\tthis.dirty = true;\n\t\treturn newViolation;\n\t}\n\n\t/**\n\t * Remove a violation by ID\n\t *\n\t * @param violationId - Violation ID to remove\n\t * @returns true if violation was removed, false if not found\n\t */\n\tremoveViolation(violationId: string): boolean {\n\t\tconst index = this.state.violations.findIndex((v) => v.id === violationId);\n\t\tif (index === -1) {\n\t\t\treturn false;\n\t\t}\n\t\tthis.state.violations.splice(index, 1);\n\t\tthis.dirty = true;\n\t\treturn true;\n\t}\n\n\t// ============================================================================\n\t// PATTERNS\n\t// ============================================================================\n\n\tgetPatterns(): StoredPattern[] {\n\t\treturn [...this.state.patterns];\n\t}\n\n\taddPattern(pattern: Omit<StoredPattern, \"id\" | \"createdAt\" | \"usageCount\">): StoredPattern {\n\t\tconst newPattern: StoredPattern = {\n\t\t\t...pattern,\n\t\t\tid: crypto.randomUUID(),\n\t\t\tcreatedAt: new Date().toISOString(),\n\t\t\tusageCount: 0,\n\t\t};\n\t\tthis.state.patterns.push(newPattern);\n\t\tthis.dirty = true;\n\t\treturn newPattern;\n\t}\n\n\t// ============================================================================\n\t// SESSIONS\n\t// ============================================================================\n\n\tgetSessions(): StoredSession[] {\n\t\treturn [...this.state.sessions];\n\t}\n\n\tsaveSession(\n\t\tsession: Partial<StoredSession> & {\n\t\t\ttaskDescription?: string;\n\t\t\tstartedAt: string;\n\t\t\tsnapshotId?: string;\n\t\t\tcontext?: Record<string, unknown>;\n\t\t\tappliedLearnings?: string[]; // Phase 2.6a: Track applied learning IDs\n\t\t},\n\t): StoredSession {\n\t\tconst existing = session.id ? this.state.sessions.find((s) => s.id === session.id) : undefined;\n\t\tif (existing) {\n\t\t\tObject.assign(existing, session, { lastCheckpoint: new Date().toISOString() });\n\t\t\tthis.dirty = true;\n\t\t\treturn existing;\n\t\t}\n\n\t\tconst newSession: StoredSession = {\n\t\t\tid: session.id || crypto.randomUUID(),\n\t\t\ttaskDescription: session.taskDescription,\n\t\t\tstartedAt: session.startedAt,\n\t\t\tsnapshotId: session.snapshotId,\n\t\t\tcontext: session.context,\n\t\t\tappliedLearnings: session.appliedLearnings || [], // Initialize empty array if not provided\n\t\t\tlastCheckpoint: new Date().toISOString(),\n\t\t};\n\t\tthis.state.sessions.push(newSession);\n\t\tthis.dirty = true;\n\t\treturn newSession;\n\t}\n\n\t/**\n\t * Update applied learnings for a session (Phase 2.6a)\n\t * Atomic operation for repetition avoidance\n\t */\n\tupdateSessionLearnings(sessionId: string, learningIds: string[]): boolean {\n\t\tconst session = this.state.sessions.find((s) => s.id === sessionId);\n\t\tif (!session) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Merge with existing appliedLearnings (deduplicate)\n\t\tconst existing = new Set(session.appliedLearnings || []);\n\t\tfor (const id of learningIds) {\n\t\t\texisting.add(id);\n\t\t}\n\t\tsession.appliedLearnings = Array.from(existing);\n\t\tsession.lastCheckpoint = new Date().toISOString();\n\t\tthis.dirty = true;\n\t\treturn true;\n\t}\n\n\t// ============================================================================\n\t// PROJECT CONTEXT\n\t// ============================================================================\n\n\tgetProjectContext(): StoredProjectContext | undefined {\n\t\treturn this.state.projectContext;\n\t}\n\n\tsetProjectContext(context: StoredProjectContext): void {\n\t\tthis.state.projectContext = context;\n\t\tthis.dirty = true;\n\t}\n\n\t// ============================================================================\n\t// SYNC QUEUE\n\t// ============================================================================\n\n\t/**\n\t * Get pending sync items\n\t */\n\tgetPendingSync(): PendingSyncItem[] {\n\t\treturn [...(this.state.pendingSync || [])];\n\t}\n\n\t/**\n\t * Queue an item for cloud sync\n\t */\n\tqueueForSync(item: Omit<PendingSyncItem, \"id\" | \"queuedAt\" | \"retryCount\">): PendingSyncItem {\n\t\t// Deduplicate by patternKey\n\t\tconst existing = this.state.pendingSync?.find((p) => p.patternKey === item.patternKey);\n\t\tif (existing) {\n\t\t\treturn existing;\n\t\t}\n\n\t\tconst newItem: PendingSyncItem = {\n\t\t\t...item,\n\t\t\tid: crypto.randomUUID(),\n\t\t\tqueuedAt: new Date().toISOString(),\n\t\t\tretryCount: 0,\n\t\t};\n\n\t\tif (!this.state.pendingSync) {\n\t\t\tthis.state.pendingSync = [];\n\t\t}\n\t\tthis.state.pendingSync.push(newItem);\n\t\tthis.dirty = true;\n\t\treturn newItem;\n\t}\n\n\t/**\n\t * Remove synced items from queue\n\t */\n\tremoveSyncedItems(ids: string[]): void {\n\t\tif (!this.state.pendingSync) {\n\t\t\treturn;\n\t\t}\n\t\tconst idSet = new Set(ids);\n\t\tthis.state.pendingSync = this.state.pendingSync.filter((p) => !idSet.has(p.id));\n\t\tthis.dirty = true;\n\t}\n\n\t/**\n\t * Increment retry count for failed items\n\t */\n\tincrementRetryCount(ids: string[]): void {\n\t\tif (!this.state.pendingSync) {\n\t\t\treturn;\n\t\t}\n\t\tconst idSet = new Set(ids);\n\t\tfor (const item of this.state.pendingSync) {\n\t\t\tif (idSet.has(item.id)) {\n\t\t\t\titem.retryCount++;\n\t\t\t}\n\t\t}\n\t\tthis.dirty = true;\n\t}\n\n\t// ============================================================================\n\t// SYNC METADATA (Phase 1: Intelligence New Platform)\n\t// ============================================================================\n\n\t/**\n\t * Get current sync status\n\t */\n\tgetSyncStatus(): SyncStatus {\n\t\treturn this.state.syncStatus;\n\t}\n\n\t/**\n\t * Set sync status\n\t */\n\tsetSyncStatus(status: SyncStatus): void {\n\t\tthis.state.syncStatus = status;\n\t\tthis.dirty = true;\n\t}\n\n\t/**\n\t * Get current sync version (for CRDT conflict resolution)\n\t */\n\tgetSyncVersion(): number {\n\t\treturn this.state.syncVersion;\n\t}\n\n\t/**\n\t * Increment sync version and return new value\n\t */\n\tincrementSyncVersion(): number {\n\t\tthis.state.syncVersion++;\n\t\tthis.dirty = true;\n\t\treturn this.state.syncVersion;\n\t}\n\n\t/**\n\t * Mark state as successfully synced with timestamp\n\t * Clears any previous sync error\n\t */\n\tmarkSynced(): void {\n\t\tthis.state.syncStatus = \"synced\";\n\t\tthis.state.lastSynced = new Date().toISOString();\n\t\tthis.state.lastSyncError = undefined;\n\t\tthis.dirty = true;\n\t}\n\n\t/**\n\t * Get last synced timestamp\n\t */\n\tgetLastSynced(): string | undefined {\n\t\treturn this.state.lastSynced;\n\t}\n\n\t/**\n\t * Set sync error status with optional message\n\t */\n\tsetSyncError(message?: string): void {\n\t\tthis.state.syncStatus = \"error\";\n\t\tthis.state.lastSyncError = message;\n\t\tthis.dirty = true;\n\t}\n\n\t// ============================================================================\n\t// SERIALIZATION\n\t// ============================================================================\n\n\tprivate serialize(state: InternalState): Buffer {\n\t\t// Convert to JSON\n\t\tconst json = JSON.stringify(state);\n\t\tconst jsonBuffer = Buffer.from(json, \"utf8\");\n\n\t\t// Compress with gzip\n\t\tconst compressed = zlib.gzipSync(jsonBuffer, { level: 9 });\n\n\t\t// Optionally encrypt\n\t\tlet payload = compressed;\n\t\tlet flags = 0;\n\n\t\tif (this.encrypt && this.encryptionKey) {\n\t\t\tpayload = this.encryptPayload(compressed);\n\t\t\tflags |= FLAG_ENCRYPTED;\n\t\t}\n\n\t\t// Build header\n\t\tconst header = Buffer.alloc(HEADER_SIZE);\n\t\tMAGIC_BYTES.copy(header, 0);\n\t\theader.writeUInt8(CURRENT_VERSION, 8);\n\t\theader.writeUInt8(flags, 9);\n\t\t// Reserved bytes 10-15 are already zero\n\n\t\t// Combine header + payload\n\t\treturn Buffer.concat([header, payload]);\n\t}\n\n\tprivate deserialize(raw: Buffer): InternalState {\n\t\tif (raw.length < HEADER_SIZE) {\n\t\t\tthrow new Error(\"Invalid state file: too small\");\n\t\t}\n\n\t\t// Verify magic bytes\n\t\tconst magic = raw.subarray(0, 8);\n\t\tif (!magic.equals(MAGIC_BYTES)) {\n\t\t\tthrow new Error(\"Invalid state file: bad magic bytes\");\n\t\t}\n\n\t\t// Read header\n\t\tconst version = raw.readUInt8(8);\n\t\tconst flags = raw.readUInt8(9);\n\n\t\tif (version > CURRENT_VERSION) {\n\t\t\tthrow new Error(`State file version ${version} is newer than supported ${CURRENT_VERSION}`);\n\t\t}\n\n\t\t// Extract payload\n\t\tlet payload = raw.subarray(HEADER_SIZE);\n\n\t\t// Decrypt if needed\n\t\tif (flags & FLAG_ENCRYPTED) {\n\t\t\tif (!this.encryptionKey) {\n\t\t\t\tthrow new Error(\"State file is encrypted but no key provided\");\n\t\t\t}\n\t\t\tpayload = this.decryptPayload(payload);\n\t\t}\n\n\t\t// Decompress\n\t\tconst decompressed = zlib.gunzipSync(payload);\n\n\t\t// Parse JSON\n\t\tconst json = decompressed.toString(\"utf8\");\n\t\treturn JSON.parse(json) as InternalState;\n\t}\n\n\tprivate encryptPayload(data: Buffer): Buffer {\n\t\tif (!this.encryptionKey) {\n\t\t\tthrow new Error(\"No encryption key\");\n\t\t}\n\n\t\t// Generate random IV\n\t\tconst iv = crypto.randomBytes(12);\n\n\t\t// Create cipher\n\t\tconst cipher = crypto.createCipheriv(\"aes-256-gcm\", this.encryptionKey, iv);\n\n\t\t// Encrypt\n\t\tconst encrypted = Buffer.concat([cipher.update(data), cipher.final()]);\n\n\t\t// Get auth tag\n\t\tconst authTag = cipher.getAuthTag();\n\n\t\t// Format: IV (12) + AuthTag (16) + Encrypted data\n\t\treturn Buffer.concat([iv, authTag, encrypted]);\n\t}\n\n\tprivate decryptPayload(data: Buffer): Buffer {\n\t\tif (!this.encryptionKey) {\n\t\t\tthrow new Error(\"No encryption key\");\n\t\t}\n\n\t\tif (data.length < 28) {\n\t\t\tthrow new Error(\"Encrypted payload too small\");\n\t\t}\n\n\t\t// Extract components\n\t\tconst iv = data.subarray(0, 12);\n\t\tconst authTag = data.subarray(12, 28);\n\t\tconst encrypted = data.subarray(28);\n\n\t\t// Create decipher\n\t\tconst decipher = crypto.createDecipheriv(\"aes-256-gcm\", this.encryptionKey, iv);\n\t\tdecipher.setAuthTag(authTag);\n\n\t\t// Decrypt\n\t\treturn Buffer.concat([decipher.update(encrypted), decipher.final()]);\n\t}\n\n\t// ============================================================================\n\t// MIGRATION\n\t// ============================================================================\n\n\t/**\n\t * Migrate from legacy JSONL files to binary state\n\t */\n\tasync migrateFromJsonl(learningsDir: string, patternsDir: string): Promise<{ migrated: number; errors: string[] }> {\n\t\tconst errors: string[] = [];\n\t\tlet migrated = 0;\n\n\t\t// Migrate learnings\n\t\tconst learningFiles = [\"hot.jsonl\", \"warm.jsonl\", \"cold.jsonl\", \"user-learnings.jsonl\", \"learnings.jsonl\"];\n\t\tfor (const file of learningFiles) {\n\t\t\tconst filePath = path.join(learningsDir, file);\n\t\t\tif (fs.existsSync(filePath)) {\n\t\t\t\ttry {\n\t\t\t\t\tconst content = fs.readFileSync(filePath, \"utf8\");\n\t\t\t\t\tconst lines = content.split(\"\\n\").filter((l) => l.trim());\n\t\t\t\t\tfor (const line of lines) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst legacy = JSON.parse(line);\n\t\t\t\t\t\t\t// Determine tier from filename or default to warm\n\t\t\t\t\t\t\tconst tier = file.startsWith(\"hot\") ? \"hot\" : file.startsWith(\"cold\") ? \"cold\" : \"warm\";\n\t\t\t\t\t\t\tthis.addLearning({\n\t\t\t\t\t\t\t\ttype: legacy.type || \"pattern\",\n\t\t\t\t\t\t\t\ttrigger: legacy.trigger || \"\",\n\t\t\t\t\t\t\t\taction: legacy.action || \"\",\n\t\t\t\t\t\t\t\tkeywords: legacy.keywords,\n\t\t\t\t\t\t\t\tsource: legacy.source,\n\t\t\t\t\t\t\t\ttier: legacy.tier || tier,\n\t\t\t\t\t\t\t\tdomain: legacy.domain,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tmigrated++;\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\terrors.push(`Failed to parse learning: ${line.substring(0, 50)}...`);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\terrors.push(`Failed to read ${file}: ${e}`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Migrate violations\n\t\tconst violationsPath = path.join(patternsDir, \"violations.jsonl\");\n\t\tif (fs.existsSync(violationsPath)) {\n\t\t\ttry {\n\t\t\t\tconst content = fs.readFileSync(violationsPath, \"utf8\");\n\t\t\t\tconst lines = content.split(\"\\n\").filter((l) => l.trim());\n\t\t\t\tfor (const line of lines) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst legacy = JSON.parse(line);\n\t\t\t\t\t\tthis.recordViolation({\n\t\t\t\t\t\t\ttype: legacy.type || \"unknown\",\n\t\t\t\t\t\t\tfile: legacy.file || \"\",\n\t\t\t\t\t\t\tdescription: legacy.description || legacy.whatHappened || \"\",\n\t\t\t\t\t\t\treason: legacy.reason || legacy.whyItHappened,\n\t\t\t\t\t\t\tprevention: legacy.prevention || legacy.howToPrevent || \"\",\n\t\t\t\t\t\t});\n\t\t\t\t\t\tmigrated++;\n\t\t\t\t\t} catch {\n\t\t\t\t\t\terrors.push(`Failed to parse violation: ${line.substring(0, 50)}...`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terrors.push(`Failed to read violations.jsonl: ${e}`);\n\t\t\t}\n\t\t}\n\n\t\t// Save migrated state\n\t\tawait this.save();\n\n\t\treturn { migrated, errors };\n\t}\n}\n\n/**\n * Derive an encryption key from workspace ID + machine ID\n * This ensures the same key is generated on each run without storing it\n */\nexport function deriveEncryptionKey(workspaceId: string, machineId: string): Buffer {\n\treturn crypto.pbkdf2Sync(\n\t\tworkspaceId,\n\t\tmachineId,\n\t\t100000, // iterations\n\t\t32, // key length (256 bits)\n\t\t\"sha256\",\n\t);\n}\n\n/**\n * Get machine-specific ID for encryption key derivation\n */\nexport function getMachineId(): string {\n\t// Use a combination of platform-specific values\n\tconst os = require(\"node:os\");\n\tconst parts = [os.hostname(), os.platform(), os.arch(), os.cpus()[0]?.model || \"unknown\"];\n\treturn crypto.createHash(\"sha256\").update(parts.join(\":\")).digest(\"hex\").substring(0, 32);\n}\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
export { APIUsageSchema, AdvisoryEngine, AnalysisMetadataStore, ArchitectureLayer, CALIBRATION_THRESHOLDS, CODE_SYNONYMS, CONFIDENCE_THRESHOLDS, Composer, ConfidenceCalculator, ConfidenceEngine, ConfigStore, ConsecutiveModificationRule, Context7MCPClient, ContextAggregator, ContextEngine, CriticalValidationError, DEFAULT_ADVISORY_CONFIG, DEFAULT_BUDGET_CONFIG, DEFAULT_FRAGILITY_CONFIG, DEFAULT_INTENT_CONFIG, DEFAULT_RISK_WEIGHTS, DEFAULT_SESSION_LIMITS, DEFAULT_THRESHOLD_ADJUSTMENTS, DependencyLayer, DimensionMismatchError, DocsValidationSchema, EMBEDDING_DEFAULTS, EmbeddingError, FragileFileRule, GapAnalyzer, GenericSuggestionsRule, GitHubCommitSchema, GitHubContextSchema, GitHubIssueSchema, GitHubMCPClient, GitHubPRSchema, HybridRetriever, ISSUE_THRESHOLDS, ImportValidationSchema, IntegrationConfigSchema, Intelligence, IntelligenceCache, IntelligenceConfigSchema, ConfidenceCalculator2 as KnowledgeConfidenceCalculator, KnowledgeStore, LearningEngine, LearningEvaluationService, LearningMatcher, LoopDetectionRule, LoopDetector, MockDetector, PROMOTION_THRESHOLDS, PatternDetector, PatternQueryEngine, PatternValidationSchema, PerformanceLayer, PhantomDependencyDetector, PipelineLoadError, PipelineTimeoutError, PolicyEngine, QUERY_TYPE_KEYWORDS, RECENCY_HALF_LIFE_DAYS, ReleaseHealthSchema, RiskEngine, SOURCE_TYPE_WEIGHTS, STATUS_PENALTIES, SarifFormatter, SecretDetector, SecurityLayer, SemanticRetriever, SentryContextSchema, SentryErrorSchema, SentryMCPClient, SessionManager, SimilarIssueSchema, SkippedTestRule, StateStore, SyncWorker, SyntaxLayer, TestLayer, TypeLayer, ValidationError, ValidationPipeline, VectorDimensionError, ViolationHistoryRule, ViolationTracker, WorkspaceProfiler, YjsAdapter, apiPatterns, appendJsonl, appendJsonlAsync, astroConfig, authPatterns, batchRerankingScores, calculateComplexity, calculateContext7RiskScore, calculateGitHubRiskScore, calculateHistoricalBoost, calculateMetadataBoost, calculateRerankingScore, calculateSentryRiskScore, classifyQuery, cosineSimilarity, createBuiltInMatchers, createComposer, createContext7MCPClient, createContextAggregator, createContextAggregatorFromEnv, createGitHubMCPClient, createIntelligenceCache, createPatternQueryEngine, createRiskEngine, createSentryMCPClient, daemonPatterns, detectFrameworks, detectPrimaryFramework, dotProduct, cosineSimilarity as embeddingCosineSimilarity, errorHandlingMatchers, euclideanDistance, evaluate, expandQuery, expressConfig, extractDocsRiskFactors, extractGitHubRiskFactors, extractSentryRiskFactors, formatRiskAssessment, batchEmbeddings as generateBatchEmbeddings, getEmbedding as generateEmbedding, generateFileAffinityPatterns, generateId, getAllFrameworks, getConfidenceLevel, getCurrentModel, getEmbedding, getEmbeddingDimension, getEmbeddingPipeline, getErrorSummary, getFramework, getFrameworksByCategory, getImprovementSuggestions, getLoadError, getRetrievalStrategy, getWeightsForType, inferComponentType, isPipelineReady, isValidFramework, loadJsonl, loadPolicyConfig, magnitude, manhattanDistance, nestjsConfig, nextjsConfig, normalize, performanceMatchers, preloadPipeline as preloadEmbeddings, preloadPipeline, reactViteConfig, resetPipeline, scoreErrorContext, scoreFileOverlap, scoreRecency, scoreRiskLevel, scoreSnapshots, securityMatchers, streamEmbeddings, testingMatchers, validateWeights, writeJsonl } from './chunk-LEXNOXPV.js';
|
|
3
|
+
import './chunk-OJNDAPC2.js';
|
|
4
|
+
import './chunk-QAKFE3NE.js';
|
|
5
|
+
import './chunk-6MR2TINI.js';
|
|
6
|
+
import './chunk-BW7RALUZ.js';
|
|
7
|
+
//# sourceMappingURL=dist-D2SHOZMS.js.map
|
|
8
|
+
//# sourceMappingURL=dist-D2SHOZMS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"dist-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"dist-D2SHOZMS.js"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
export { AIPresenceDetector, AI_EXTENSION_IDS, ApiError, AuthenticationError, AuthorizationError, BurstHeuristicsDetector, ConfigDetector, CorruptedDataError, CursorDetector, DEFAULT_EXPERIENCE_THRESHOLDS, DEFAULT_MAX_SIZE, DEFAULT_RISK_THRESHOLDS, DEFAULT_THRESHOLDS, DefaultRiskAnalyzer, DeviceAuthClient, DiffCalculator, DistributedTokenManager, EncryptionService, ExperienceClassifier, FileChangeAnalyzer, FileConflictResolver, ID_PREFIX, InputValidationError, LRUCache, LocalStorage, MemoryStorage, MissingContentError, NoOpLogger, NodeTimerService, PathValidationError, PrivacySanitizer, PrivacyValidator, ProtectionClient, ProtectionDecisionEngine, ProtectionManager, RISK_FACTOR_DESCRIPTIONS, RateLimitError, RateLimiter, RetryPresets, RiskAnalyzer, SNAPBACK_LAYER_RULES, SessionCoordinator, SessionDeduplication, SessionManager, SessionRecovery, SessionRollback, SessionSummaryGenerator, SessionTagger, SnapBackError, SnapBackRCParser, StorageError as SnapBackStorageError, StorageFullError as SnapBackStorageFullError, StorageLockError as SnapBackStorageLockError, Snapback, SnapbackClient as SnapbackAnalyticsClient, SnapbackClient, SnapshotClient, SnapshotCreationError, SnapshotDeletionService, SnapshotDuplicateError, SnapshotError, SnapshotIconStrategy, SnapshotManager, SnapshotNamingStrategy, SnapshotNotFoundError, SnapshotProtectedError, SnapshotRestoreError, SnapshotVerificationError, SnapshotVersionError, StorageBroker, StorageBrokerAdapter, StorageConnectionError, StorageError2 as StorageError, StorageFullError2 as StorageFullError, StorageIOError, StorageLockError2 as StorageLockError, THRESHOLDS, TokenBucket, ValidationError, all, allOrErrors, analyze, andThen, applyAutomaticFix, areEqual, assertDefined, assertNonEmptyArray, assertNonEmptyString, assertPathWithinRoot, assertPositiveNumber, atomicWriteFile, atomicWriteFileSync, calculateBackoff, configureInvariant, createChangeSummary, createConfig, createDashboardMetricsClient, createDeviceAuthClient, createRule, createScopedInvariant, createSnapshotWithRetry, createSnapshotWithRetrySafe, createThresholds, createTokenBucket, defaultConfig, describeRiskFactor, describeRiskFactors, diagnoseSnapshotFailure, ensureSnapBackError, err, evaluatePolicy, formatDiagnosis, fromPromise, fromPromiseWith, generateAuditId, generateCheckpointId, generateId2 as generateId, generateSessionId, generateSnapshotId, getBlobPath, getDepth, getInvariantConfig, getStandardRiskFactors, getViolationCounts, hashContent, hashFilePath, hashWorkspaceId, ingestTelemetry, invariant, isApiError, isConsumptionAllowed, isConsumptionDenied, isErr, isKnownRiskFactor, isOk, isRateLimitAllowed, isRateLimitDenied, isRetryableError, isSnapBackError, isSnapshotError, isStorageError, isValidId, isValidationError, isWithin, makeSafeSessionFinalizedEvent, makeSafeSessionStartedEvent, map, mapErr, match, normalize, ok, parseIdPrefix, parseIdTimestamp, randomId, resetThresholds, resetViolationCounts, runArchCheck, sequence, sha256, softInvariant, tap, tapErr, toError2 as toError, toPromise, toError as toSnapBackError, tryAll, tryCatch, tryCatchAsync, typeInvariant, unwrap, unwrapOr, unwrapOrElse, updateThresholds, withRetry } from './chunk-
|
|
2
|
+
export { AIPresenceDetector, AI_EXTENSION_IDS, ApiError, AuthenticationError, AuthorizationError, BurstHeuristicsDetector, ConfigDetector, CorruptedDataError, CursorDetector, DEFAULT_EXPERIENCE_THRESHOLDS, DEFAULT_MAX_SIZE, DEFAULT_RISK_THRESHOLDS, DEFAULT_THRESHOLDS, DefaultRiskAnalyzer, DeviceAuthClient, DiffCalculator, DistributedTokenManager, EncryptionService, ExperienceClassifier, FileChangeAnalyzer, FileConflictResolver, ID_PREFIX, InputValidationError, LRUCache, LocalStorage, MemoryStorage, MissingContentError, NoOpLogger, NodeTimerService, PathValidationError, PrivacySanitizer, PrivacyValidator, ProtectionClient, ProtectionDecisionEngine, ProtectionManager, RISK_FACTOR_DESCRIPTIONS, RateLimitError, RateLimiter, RetryPresets, RiskAnalyzer, SNAPBACK_LAYER_RULES, SessionCoordinator, SessionDeduplication, SessionManager, SessionRecovery, SessionRollback, SessionSummaryGenerator, SessionTagger, SnapBackError, SnapBackRCParser, StorageError as SnapBackStorageError, StorageFullError as SnapBackStorageFullError, StorageLockError as SnapBackStorageLockError, Snapback, SnapbackClient as SnapbackAnalyticsClient, SnapbackClient, SnapshotClient, SnapshotCreationError, SnapshotDeletionService, SnapshotDuplicateError, SnapshotError, SnapshotIconStrategy, SnapshotManager, SnapshotNamingStrategy, SnapshotNotFoundError, SnapshotProtectedError, SnapshotRestoreError, SnapshotVerificationError, SnapshotVersionError, StorageBroker, StorageBrokerAdapter, StorageConnectionError, StorageError2 as StorageError, StorageFullError2 as StorageFullError, StorageIOError, StorageLockError2 as StorageLockError, THRESHOLDS, TokenBucket, ValidationError, all, allOrErrors, analyze, andThen, applyAutomaticFix, areEqual, assertDefined, assertNonEmptyArray, assertNonEmptyString, assertPathWithinRoot, assertPositiveNumber, atomicWriteFile, atomicWriteFileSync, calculateBackoff, configureInvariant, createChangeSummary, createConfig, createDashboardMetricsClient, createDeviceAuthClient, createRule, createScopedInvariant, createSnapshotWithRetry, createSnapshotWithRetrySafe, createThresholds, createTokenBucket, defaultConfig, describeRiskFactor, describeRiskFactors, diagnoseSnapshotFailure, ensureSnapBackError, err, evaluatePolicy, formatDiagnosis, fromPromise, fromPromiseWith, generateAuditId, generateCheckpointId, generateId2 as generateId, generateSessionId, generateSnapshotId, getBlobPath, getDepth, getInvariantConfig, getStandardRiskFactors, getViolationCounts, hashContent, hashFilePath, hashWorkspaceId, ingestTelemetry, invariant, isApiError, isConsumptionAllowed, isConsumptionDenied, isErr, isKnownRiskFactor, isOk, isRateLimitAllowed, isRateLimitDenied, isRetryableError, isSnapBackError, isSnapshotError, isStorageError, isValidId, isValidationError, isWithin, makeSafeSessionFinalizedEvent, makeSafeSessionStartedEvent, map, mapErr, match, normalize, ok, parseIdPrefix, parseIdTimestamp, randomId, resetThresholds, resetViolationCounts, runArchCheck, sequence, sha256, softInvariant, tap, tapErr, toError2 as toError, toPromise, toError as toSnapBackError, tryAll, tryCatch, tryCatchAsync, typeInvariant, unwrap, unwrapOr, unwrapOrElse, updateThresholds, withRetry } from './chunk-A3TUM7U4.js';
|
|
3
3
|
import './chunk-BW7RALUZ.js';
|
|
4
|
-
//# sourceMappingURL=dist-
|
|
5
|
-
//# sourceMappingURL=dist-
|
|
4
|
+
//# sourceMappingURL=dist-L76VXYJ5.js.map
|
|
5
|
+
//# sourceMappingURL=dist-L76VXYJ5.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"dist-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"dist-L76VXYJ5.js"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
export { createManagedMetadata, detectAIClients, detectMCPProcesses, detectWorkspaceConfig, getClient, getClientConfigPath, getConfiguredClients, getOrCreateIdentity, getServerKey, getSnapbackConfigDir, getSnapbackMCPConfig, injectWorkspacePath, isCommandExecutable2 as isCommandExecutable, isOwnedByThisInstall, isSnapbackMCPRunning, readClientConfig, removeSnapbackConfig, repairClientConfig, resetIdentityCache, resolveNodePath, validateClientConfig, validateConfig, validateWorkspacePath, writeClientConfig } from './chunk-2TOJVUVJ.js';
|
|
3
|
+
import './chunk-BW7RALUZ.js';
|
|
4
|
+
//# sourceMappingURL=dist-RPM72FHJ.js.map
|
|
5
|
+
//# sourceMappingURL=dist-RPM72FHJ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"dist-
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"dist-RPM72FHJ.js"}
|