@remnic/core 9.3.548 → 9.3.549
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/dist/access-cli.js +2 -2
- package/dist/access-schema.d.ts +34 -34
- package/dist/{chunk-S53PKKWK.js → chunk-KVEVLBKC.js} +230 -11
- package/dist/chunk-KVEVLBKC.js.map +1 -0
- package/dist/{chunk-OF46AKZC.js → chunk-XDMLTNIG.js} +2 -2
- package/dist/index.js +2 -2
- package/dist/migrate/from-engram.js +1 -1
- package/dist/orchestrator.js +2 -2
- package/dist/schemas.d.ts +42 -42
- package/dist/shared-context/manager.d.ts +2 -2
- package/package.json +1 -1
- package/src/migrate/from-engram.ts +282 -10
- package/dist/chunk-S53PKKWK.js.map +0 -1
- /package/dist/{chunk-OF46AKZC.js.map → chunk-XDMLTNIG.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/migrate/from-engram.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport path from \"node:path\";\nimport {\n chmod,\n copyFile,\n lstat,\n mkdir,\n open,\n readFile,\n readdir,\n rm,\n stat,\n unlink,\n writeFile,\n} from \"node:fs/promises\";\nimport { existsSync } from \"node:fs\";\nimport { resolveHomeDir } from \"../runtime/env.js\";\nimport { launchProcessSync } from \"../runtime/child-process.js\";\n\nexport interface MigrationResult {\n status: \"fresh-install\" | \"already-migrated\" | \"migrated\";\n copied: string[];\n tokensRegenerated: number;\n servicesReinstalled: string[];\n rollbackCommand: string;\n}\n\ninterface RollbackManifestEntry {\n targetPath: string;\n backupPath?: string;\n createdByMigration?: boolean;\n contentHash?: string;\n}\n\ninterface RollbackManifest {\n version: 1;\n createdAt: string;\n entries: RollbackManifestEntry[];\n}\n\ninterface ValidatedRollbackManifestEntry extends RollbackManifestEntry {\n targetPath: string;\n backupPath?: string;\n contentHash?: string;\n}\n\nexport interface MigrationOptions {\n connectorConfigPaths?: string[];\n cwd?: string;\n execCommand?: (command: string, args: string[]) => void;\n homeDir?: string;\n logger?: (message: string) => void;\n platform?: NodeJS.Platform;\n quiet?: boolean;\n}\n\nexport interface RollbackResult {\n removed: string[];\n restored: string[];\n}\n\ninterface TokenEntry {\n connector: string;\n createdAt: string;\n token: string;\n}\n\ntype PersistRollbackManifest = () => Promise<void>;\n\nconst MARKER_FILE = \".migrated-from-engram\";\nconst LOCK_FILE = \".migration.lock\";\nconst ROLLBACK_MANIFEST = \".rollback.json\";\nconst BACKUP_DIR = \".backup\";\nconst LOCK_RETRY_MS = 100;\nconst LOCK_TIMEOUT_MS = 5_000;\nconst TOKEN_STORE_MODE = 0o600;\n\nfunction resolvePlatform(options?: MigrationOptions): NodeJS.Platform {\n return options?.platform ?? process.platform;\n}\n\nfunction resolveMigrationHome(options?: MigrationOptions): string {\n return options?.homeDir ?? resolveHomeDir();\n}\n\nfunction resolveLogger(options?: MigrationOptions): (message: string) => void {\n const sink = options?.logger ?? ((message: string) => console.log(message));\n return (message: string) => {\n if (!options?.quiet) sink(`[remnic] ${message}`);\n };\n}\n\nfunction resolveExec(options?: MigrationOptions): (command: string, args: string[]) => void {\n return options?.execCommand ?? ((command: string, args: string[]) => {\n const result = launchProcessSync(command, args, { stdio: \"ignore\" });\n if (result.error) {\n throw result.error;\n }\n if (result.status !== 0) {\n const reason = result.status === null\n ? `signal ${result.signal ?? \"unknown\"}`\n : `exit code ${result.status}`;\n throw new Error(`migration command failed: ${command} ${args.join(\" \")} (${reason})`);\n }\n });\n}\n\nfunction remnicRoot(homeDir: string): string {\n return path.join(homeDir, \".remnic\");\n}\n\nfunction legacyRoot(homeDir: string): string {\n return path.join(homeDir, \".engram\");\n}\n\nfunction legacyConfigPath(homeDir: string): string {\n return path.join(homeDir, \".config\", \"engram\", \"config.json\");\n}\n\nfunction remnicConfigPath(homeDir: string): string {\n return path.join(homeDir, \".config\", \"remnic\", \"config.json\");\n}\n\nfunction markerPath(homeDir: string): string {\n return path.join(remnicRoot(homeDir), MARKER_FILE);\n}\n\nfunction lockPath(homeDir: string): string {\n return path.join(remnicRoot(homeDir), LOCK_FILE);\n}\n\nfunction rollbackManifestPath(homeDir: string): string {\n return path.join(remnicRoot(homeDir), ROLLBACK_MANIFEST);\n}\n\nfunction backupRoot(homeDir: string): string {\n return path.join(remnicRoot(homeDir), BACKUP_DIR);\n}\n\nfunction defaultRollbackCommand(): string {\n return \"remnic migrate --rollback\";\n}\n\nfunction resolveMigrationCwd(options?: MigrationOptions): string {\n return path.resolve(options?.cwd ?? process.cwd());\n}\n\nfunction resolveConnectorConfigPath(candidate: string, cwd: string): string {\n return path.isAbsolute(candidate) ? path.resolve(candidate) : path.resolve(cwd, candidate);\n}\n\nasync function ensureParent(filePath: string): Promise<void> {\n await mkdir(path.dirname(filePath), { recursive: true });\n}\n\nasync function secureTokenFilePermissions(filePath: string): Promise<void> {\n await chmod(filePath, TOKEN_STORE_MODE);\n}\n\nasync function writeOwnerOnlyFile(filePath: string, content: string): Promise<void> {\n await writeFile(filePath, content, { encoding: \"utf8\", mode: TOKEN_STORE_MODE });\n await chmod(filePath, TOKEN_STORE_MODE);\n}\n\nasync function fileContentHash(filePath: string): Promise<string> {\n return createHash(\"sha256\").update(await readFile(filePath)).digest(\"hex\");\n}\n\nasync function writeTokenStoreFile(filePath: string, content: string): Promise<void> {\n await writeOwnerOnlyFile(filePath, content);\n}\n\nfunction isRemnicTokenStorePath(filePath: string, homeDir: string): boolean {\n return path.resolve(filePath) === path.resolve(path.join(remnicRoot(homeDir), \"tokens.json\"));\n}\n\nasync function pathExistsNoFollow(filePath: string): Promise<boolean> {\n try {\n await lstat(filePath);\n return true;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") return false;\n throw error;\n }\n}\n\nasync function assertExistingRegularFileNoFollow(filePath: string, label: string): Promise<void> {\n const fileStat = await lstat(filePath);\n if (fileStat.isSymbolicLink()) {\n throw new Error(`${label} must not be a symlink: ${filePath}`);\n }\n if (!fileStat.isFile()) {\n throw new Error(`${label} must be a regular file: ${filePath}`);\n }\n}\n\nasync function isExistingRegularFileNoFollow(filePath: string): Promise<boolean> {\n try {\n const fileStat = await lstat(filePath);\n return fileStat.isFile() && !fileStat.isSymbolicLink();\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") return false;\n throw error;\n }\n}\n\nasync function copyTreeMissing(\n source: string,\n destination: string,\n copied: string[],\n manifest: RollbackManifest,\n persistManifest?: PersistRollbackManifest,\n isRoot = true,\n): Promise<void> {\n if (!existsSync(source)) return;\n const sourceStat = await lstat(source);\n if (sourceStat.isSymbolicLink()) {\n if (isRoot) {\n throw new Error(`legacy migration root must not be a symlink: ${source}`);\n }\n return;\n }\n if (sourceStat.isDirectory()) {\n await mkdir(destination, { recursive: true });\n const entries = await readdir(source, { withFileTypes: true });\n for (const entry of entries) {\n if (entry.name === MARKER_FILE || entry.name === LOCK_FILE || entry.name === ROLLBACK_MANIFEST) {\n continue;\n }\n await copyTreeMissing(\n path.join(source, entry.name),\n path.join(destination, entry.name),\n copied,\n manifest,\n persistManifest,\n false,\n );\n }\n return;\n }\n\n if (await pathExistsNoFollow(destination)) return;\n await ensureParent(destination);\n await copyFile(source, destination);\n await recordCreatedPath(destination, manifest, persistManifest);\n copied.push(destination);\n}\n\nfunction rewriteRemnicText(content: string): string {\n return content\n .replaceAll(\".engram/\", \".remnic/\")\n .replaceAll(\".engram\\\\\", \".remnic\\\\\")\n .replaceAll(\"ENGRAM_\", \"REMNIC_\")\n .replaceAll(\"{{ENGRAM_TOKEN}}\", \"{{REMNIC_TOKEN}}\")\n .replaceAll(\"${ENGRAM_AUTH_TOKEN}\", \"${REMNIC_AUTH_TOKEN}\")\n .replaceAll(\"ai.engram.daemon\", \"ai.remnic.daemon\")\n .replaceAll(\"engram.service\", \"remnic.service\");\n}\n\nfunction rewriteTokenValue(token: string): string {\n return token.startsWith(\"engram_\") ? `remnic_${token.slice(\"engram_\".length)}` : token;\n}\n\nfunction parseTokenEntries(raw: unknown): TokenEntry[] {\n if (typeof raw !== \"object\" || raw === null) return [];\n\n if (Array.isArray((raw as { tokens?: unknown }).tokens)) {\n return ((raw as { tokens: unknown[] }).tokens)\n .filter((entry): entry is TokenEntry => {\n if (typeof entry !== \"object\" || entry === null) return false;\n const candidate = entry as Partial<TokenEntry>;\n return typeof candidate.connector === \"string\" &&\n candidate.connector.length > 0 &&\n typeof candidate.token === \"string\" &&\n candidate.token.length > 0 &&\n typeof candidate.createdAt === \"string\" &&\n candidate.createdAt.length > 0;\n })\n .map((entry) => ({ ...entry }));\n }\n\n return Object.entries(raw)\n .filter(([key, value]) => key !== \"tokens\" && typeof value === \"string\" && value.length > 0)\n .map(([connector, token]) => ({\n connector,\n createdAt: new Date().toISOString(),\n token,\n }));\n}\n\nfunction isPlainJsonObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction parseRollbackManifestEntry(raw: unknown, index: number): RollbackManifestEntry {\n if (!isPlainJsonObject(raw)) {\n throw new Error(`rollback manifest entry ${index} must be an object`);\n }\n if (typeof raw.targetPath !== \"string\" || raw.targetPath.length === 0 || !path.isAbsolute(raw.targetPath)) {\n throw new Error(`rollback manifest entry ${index} has an invalid targetPath`);\n }\n if (raw.backupPath !== undefined && (typeof raw.backupPath !== \"string\" || raw.backupPath.length === 0 || !path.isAbsolute(raw.backupPath))) {\n throw new Error(`rollback manifest entry ${index} has an invalid backupPath`);\n }\n if (raw.createdByMigration !== undefined && typeof raw.createdByMigration !== \"boolean\") {\n throw new Error(`rollback manifest entry ${index} has an invalid createdByMigration flag`);\n }\n if (raw.contentHash !== undefined && (typeof raw.contentHash !== \"string\" || !/^[a-f0-9]{64}$/u.test(raw.contentHash))) {\n throw new Error(`rollback manifest entry ${index} has an invalid contentHash`);\n }\n return {\n targetPath: raw.targetPath,\n ...(raw.backupPath === undefined ? {} : { backupPath: raw.backupPath }),\n ...(raw.createdByMigration === undefined ? {} : { createdByMigration: raw.createdByMigration }),\n ...(raw.contentHash === undefined ? {} : { contentHash: raw.contentHash }),\n };\n}\n\nfunction parseRollbackManifest(raw: unknown, manifestPath: string): RollbackManifest {\n if (!isPlainJsonObject(raw)) {\n throw new Error(`rollback manifest must be an object: ${manifestPath}`);\n }\n if (raw.version !== 1) {\n throw new Error(`rollback manifest has unsupported version: ${manifestPath}`);\n }\n if (typeof raw.createdAt !== \"string\") {\n throw new Error(`rollback manifest has an invalid createdAt: ${manifestPath}`);\n }\n if (!Array.isArray(raw.entries)) {\n throw new Error(`rollback manifest entries must be an array: ${manifestPath}`);\n }\n return {\n version: 1,\n createdAt: raw.createdAt,\n entries: raw.entries.map(parseRollbackManifestEntry),\n };\n}\n\nfunction isPathInside(parentPath: string, candidatePath: string): boolean {\n const relative = path.relative(path.resolve(parentPath), path.resolve(candidatePath));\n return relative === \"\" || (!relative.startsWith(\"..\") && !path.isAbsolute(relative));\n}\n\nfunction isPathDescendant(parentPath: string, candidatePath: string): boolean {\n const relative = path.relative(path.resolve(parentPath), path.resolve(candidatePath));\n return relative !== \"\" && !relative.startsWith(\"..\") && !path.isAbsolute(relative);\n}\n\nfunction hasConnectorConfigShape(targetPath: string, homeDir: string): boolean {\n const relative = path.relative(path.resolve(homeDir), path.resolve(targetPath));\n if (relative === \".claude.json\" || relative === path.join(\".claude\", \".mcp.json\")) {\n return true;\n }\n\n return hasRepoConnectorConfigShape(relative);\n}\n\nfunction hasRepoConnectorConfigShape(relativePath: string): boolean {\n const parts = relativePath.split(path.sep);\n const last = parts.at(-1);\n const packageName = parts.at(-2);\n const packagesDir = parts.at(-3);\n return last === \".mcp.json\" &&\n packagesDir === \"packages\" &&\n (packageName === \"plugin-claude-code\" || packageName === \"plugin-codex\");\n}\n\nfunction connectorBackupPathForTarget(targetPath: string, homeDir: string): string {\n const digest = createHash(\"sha256\").update(targetPath).digest(\"hex\").slice(0, 12);\n return path.join(backupRoot(homeDir), \"mcp\", `${digest}.json`);\n}\n\nfunction isRollbackTargetAllowed(\n entry: RollbackManifestEntry,\n targetPath: string,\n homeDir: string,\n options?: MigrationOptions,\n): boolean {\n const resolvedTarget = path.resolve(targetPath);\n if (isPathDescendant(remnicRoot(homeDir), resolvedTarget)) {\n if (entry.createdByMigration && !entry.backupPath) return true;\n return Boolean(entry.backupPath) && isRemnicTokenStorePath(resolvedTarget, homeDir);\n }\n if (isPathDescendant(path.join(homeDir, \".config\", \"remnic\"), resolvedTarget)) {\n return entry.createdByMigration === true && !entry.backupPath;\n }\n\n const serviceTargets = new Set([\n path.resolve(path.join(homeDir, \"Library\", \"LaunchAgents\", \"ai.remnic.daemon.plist\")),\n path.resolve(path.join(homeDir, \".config\", \"systemd\", \"user\", \"remnic.service\")),\n ]);\n if (serviceTargets.has(resolvedTarget)) return true;\n\n const cwd = resolveMigrationCwd(options);\n const allowedConnectorPaths = new Set(\n [\n ...defaultConnectorConfigPaths(homeDir, cwd),\n ...(options?.connectorConfigPaths ?? []),\n ].map((candidate) => resolveConnectorConfigPath(candidate, cwd)),\n );\n if (allowedConnectorPaths.has(resolvedTarget)) return true;\n\n return isPathInside(homeDir, resolvedTarget) && hasConnectorConfigShape(resolvedTarget, homeDir);\n}\n\nfunction isRollbackBackupAllowed(backupPath: string, homeDir: string): boolean {\n return isPathInside(backupRoot(homeDir), backupPath);\n}\n\nasync function assertNoSymlinkPathSegments(filePath: string, trustedRoot: string, label: string): Promise<void> {\n const resolvedPath = path.resolve(filePath);\n const resolvedRoot = path.resolve(trustedRoot);\n if (!isPathInside(resolvedRoot, resolvedPath)) {\n throw new Error(`${label} is outside the trusted rollback root: ${filePath}`);\n }\n const segments = path.relative(resolvedRoot, resolvedPath).split(path.sep).filter(Boolean);\n let current = resolvedRoot;\n\n for (const [index, segment] of segments.entries()) {\n current = path.join(current, segment);\n try {\n const currentStat = await lstat(current);\n if (currentStat.isSymbolicLink()) {\n throw new Error(`${label} must not contain symlink segments: ${filePath}`);\n }\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\" && index === segments.length - 1) return;\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") {\n throw new Error(`${label} must not contain missing parent segments: ${filePath}`);\n }\n throw error;\n }\n }\n}\n\nfunction rollbackTargetSymlinkRoot(targetPath: string, homeDir: string, options?: MigrationOptions): string {\n if (isPathInside(homeDir, targetPath)) return homeDir;\n\n const cwd = resolveMigrationCwd(options);\n if (isPathInside(cwd, targetPath)) return cwd;\n\n return path.parse(targetPath).root;\n}\n\nasync function validateRollbackManifestEntries(\n manifest: RollbackManifest,\n homeDir: string,\n options?: MigrationOptions,\n): Promise<ValidatedRollbackManifestEntry[]> {\n const validated: ValidatedRollbackManifestEntry[] = [];\n\n for (const entry of manifest.entries) {\n const targetPath = path.resolve(entry.targetPath);\n if (!isRollbackTargetAllowed(entry, targetPath, homeDir, options)) {\n throw new Error(`rollback manifest target is outside migration-owned paths: ${entry.targetPath}`);\n }\n if (entry.backupPath && entry.createdByMigration) {\n throw new Error(`rollback manifest entry cannot restore and remove the same target: ${entry.targetPath}`);\n }\n const targetExists = await pathExistsNoFollow(targetPath);\n if (!entry.createdByMigration || targetExists) {\n const targetSymlinkRoot = rollbackTargetSymlinkRoot(targetPath, homeDir, options);\n await assertNoSymlinkPathSegments(targetPath, targetSymlinkRoot, \"rollback manifest target\");\n }\n if (entry.createdByMigration && targetExists) {\n await assertCreatedRollbackTargetMatchesRecord(entry, targetPath);\n }\n\n let backupPath: string | undefined;\n if (entry.backupPath) {\n backupPath = path.resolve(entry.backupPath);\n if (!isRollbackBackupAllowed(backupPath, homeDir)) {\n throw new Error(`rollback manifest backup is outside migration backup storage: ${entry.backupPath}`);\n }\n if (await pathExistsNoFollow(backupPath)) {\n await assertNoSymlinkPathSegments(backupPath, homeDir, \"rollback manifest backup\");\n await assertExistingRegularFileNoFollow(backupPath, \"rollback manifest backup\");\n }\n if (backupPath !== connectorBackupPathForTarget(targetPath, homeDir)) {\n throw new Error(`rollback manifest backup does not match target: ${entry.targetPath}`);\n }\n }\n\n validated.push({\n targetPath,\n ...(backupPath === undefined ? {} : { backupPath }),\n ...(entry.createdByMigration === undefined ? {} : { createdByMigration: entry.createdByMigration }),\n ...(entry.contentHash === undefined ? {} : { contentHash: entry.contentHash }),\n });\n }\n\n return validated;\n}\n\nasync function assertCreatedRollbackTargetMatchesRecord(\n entry: RollbackManifestEntry,\n targetPath: string,\n): Promise<boolean> {\n const targetStat = await lstat(targetPath);\n if (targetStat.isDirectory()) {\n throw new Error(`rollback manifest created target must be a file path: ${entry.targetPath}`);\n }\n if (!targetStat.isFile() || !entry.contentHash) return false;\n if (await fileContentHash(targetPath) !== entry.contentHash) {\n throw new Error(`rollback manifest created target content does not match migration record: ${entry.targetPath}`);\n }\n return true;\n}\n\nasync function rewriteTokensIfPresent(filePath: string): Promise<number> {\n if (!existsSync(filePath)) return 0;\n await assertExistingRegularFileNoFollow(filePath, \"Remnic token store\");\n await secureTokenFilePermissions(filePath);\n let raw: Record<string, unknown>;\n try {\n raw = JSON.parse(await readFile(filePath, \"utf8\")) as Record<string, unknown>;\n } catch {\n return 0;\n }\n let rewritten = 0;\n\n if (Array.isArray(raw.tokens)) {\n for (const entry of raw.tokens as Array<Record<string, unknown>>) {\n if (typeof entry.token === \"string\") {\n const next = rewriteTokenValue(entry.token);\n if (next !== entry.token) {\n entry.token = next;\n rewritten += 1;\n }\n }\n }\n } else {\n for (const [key, value] of Object.entries(raw)) {\n if (typeof value === \"string\") {\n const next = rewriteTokenValue(value);\n if (next !== value) {\n raw[key] = next;\n rewritten += 1;\n }\n }\n }\n }\n\n if (rewritten > 0) {\n await writeTokenStoreFile(filePath, `${JSON.stringify(raw, null, 2)}\\n`);\n }\n return rewritten;\n}\n\nasync function mergeLegacyTokens(\n legacyTokensPath: string,\n remnicTokensPath: string,\n homeDir: string,\n manifest: RollbackManifest,\n backupExisting: boolean,\n persistManifest?: PersistRollbackManifest,\n): Promise<number> {\n if (existsSync(legacyTokensPath)) {\n await assertExistingRegularFileNoFollow(legacyTokensPath, \"legacy Engram token store\");\n }\n if (!existsSync(remnicTokensPath)) return 0;\n await assertExistingRegularFileNoFollow(remnicTokensPath, \"Remnic token store\");\n await secureTokenFilePermissions(remnicTokensPath);\n if (!existsSync(legacyTokensPath)) return rewriteTokensIfPresent(remnicTokensPath);\n\n let remnicRaw: unknown;\n let legacyRaw: unknown;\n const originalRemnic = await readFile(remnicTokensPath, \"utf8\");\n\n try {\n remnicRaw = JSON.parse(originalRemnic) as unknown;\n legacyRaw = JSON.parse(await readFile(legacyTokensPath, \"utf8\")) as unknown;\n } catch {\n try {\n legacyRaw = JSON.parse(await readFile(legacyTokensPath, \"utf8\")) as unknown;\n } catch {\n return rewriteTokensIfPresent(remnicTokensPath);\n }\n\n const legacyEntries = parseTokenEntries(legacyRaw);\n let rewritten = 0;\n const recoveredEntries = legacyEntries.map((entry) => {\n const nextToken = rewriteTokenValue(entry.token);\n if (nextToken !== entry.token) rewritten += 1;\n return {\n ...entry,\n token: nextToken,\n };\n });\n\n if (backupExisting) {\n await backupFile(remnicTokensPath, originalRemnic, homeDir, manifest, persistManifest);\n }\n\n await writeTokenStoreFile(\n remnicTokensPath,\n `${JSON.stringify({ tokens: recoveredEntries }, null, 2)}\\n`,\n );\n return rewritten;\n }\n\n const mergedEntries = parseTokenEntries(remnicRaw);\n const legacyEntries = parseTokenEntries(legacyRaw);\n const existingConnectors = new Set(mergedEntries.map((entry) => entry.connector));\n let rewritten = 0;\n let changed = false;\n\n for (const entry of mergedEntries) {\n const nextToken = rewriteTokenValue(entry.token);\n if (nextToken !== entry.token) {\n entry.token = nextToken;\n rewritten += 1;\n changed = true;\n }\n }\n\n for (const entry of legacyEntries) {\n const nextToken = rewriteTokenValue(entry.token);\n if (nextToken !== entry.token) {\n rewritten += 1;\n }\n if (existingConnectors.has(entry.connector)) continue;\n mergedEntries.push({ ...entry, token: nextToken });\n existingConnectors.add(entry.connector);\n changed = true;\n }\n\n if (!changed) return rewritten;\n\n if (backupExisting) {\n await backupFile(remnicTokensPath, originalRemnic, homeDir, manifest, persistManifest);\n }\n\n await writeTokenStoreFile(\n remnicTokensPath,\n `${JSON.stringify({ tokens: mergedEntries }, null, 2)}\\n`,\n );\n return rewritten;\n}\n\nasync function rewriteJsonFile(\n targetPath: string,\n homeDir: string,\n manifest: RollbackManifest,\n persistManifest?: PersistRollbackManifest,\n): Promise<boolean> {\n if (!existsSync(targetPath)) return false;\n const targetStat = await lstat(targetPath);\n if (targetStat.isSymbolicLink()) return false;\n if (!targetStat.isFile()) {\n const error = new Error(`connector config must be a regular file: ${targetPath}`) as NodeJS.ErrnoException;\n error.code = targetStat.isDirectory() ? \"EISDIR\" : \"EINVAL\";\n throw error;\n }\n\n const original = await readFile(targetPath, \"utf8\");\n let parsed: unknown;\n try {\n parsed = JSON.parse(original) as unknown;\n } catch {\n return false;\n }\n if (!isPlainJsonObject(parsed)) return false;\n\n let changed = false;\n if (\n parsed.mcpServers &&\n typeof parsed.mcpServers === \"object\" &&\n !Array.isArray(parsed.mcpServers)\n ) {\n const servers = parsed.mcpServers as Record<string, unknown>;\n if (servers.engram && !servers.remnic) {\n servers.remnic = servers.engram;\n delete servers.engram;\n changed = true;\n }\n }\n\n const rewritten = rewriteRemnicText(JSON.stringify(parsed, null, 2));\n const next = `${rewritten}\\n`;\n if (!changed && next === original) return false;\n\n await backupFile(targetPath, original, homeDir, manifest, persistManifest);\n await writeFile(targetPath, next, \"utf8\");\n return true;\n}\n\nasync function backupFile(\n targetPath: string,\n originalContent: string,\n homeDir: string,\n manifest: RollbackManifest,\n persistManifest?: PersistRollbackManifest,\n): Promise<void> {\n if (manifest.entries.some((entry) => entry.targetPath === targetPath && entry.backupPath)) {\n return;\n }\n const backupPath = connectorBackupPathForTarget(targetPath, homeDir);\n await ensureParent(backupPath);\n if (isRemnicTokenStorePath(targetPath, homeDir)) {\n await writeOwnerOnlyFile(backupPath, originalContent);\n } else {\n const originalMode = (await stat(targetPath)).mode & 0o777;\n await writeFile(backupPath, originalContent, { encoding: \"utf8\", mode: originalMode });\n await chmod(backupPath, originalMode);\n }\n manifest.entries.push({ targetPath, backupPath });\n await persistManifest?.();\n}\n\nasync function recordCreatedPath(\n filePath: string,\n manifest: RollbackManifest,\n persistManifest?: PersistRollbackManifest,\n): Promise<void> {\n if (manifest.entries.some((entry) => entry.targetPath === filePath)) return;\n manifest.entries.push({\n targetPath: filePath,\n createdByMigration: true,\n contentHash: await fileContentHash(filePath),\n });\n await persistManifest?.();\n}\n\nasync function refreshCreatedPathHash(\n filePath: string,\n manifest: RollbackManifest,\n persistManifest?: PersistRollbackManifest,\n): Promise<void> {\n const entry = manifest.entries.find((candidate) =>\n candidate.targetPath === filePath && candidate.createdByMigration\n );\n if (!entry) return;\n entry.contentHash = await fileContentHash(filePath);\n await persistManifest?.();\n}\n\nfunction defaultConnectorConfigPaths(homeDir: string, cwd: string): string[] {\n return [\n path.join(homeDir, \".claude.json\"),\n path.join(homeDir, \".claude\", \".mcp.json\"),\n path.join(cwd, \"packages\", \"plugin-claude-code\", \".mcp.json\"),\n path.join(cwd, \"packages\", \"plugin-codex\", \".mcp.json\"),\n ];\n}\n\nasync function updateConnectorConfigs(\n homeDir: string,\n cwd: string,\n options: MigrationOptions | undefined,\n manifest: RollbackManifest,\n persistManifest?: PersistRollbackManifest,\n): Promise<string[]> {\n const updated: string[] = [];\n const candidates = options?.connectorConfigPaths ?? defaultConnectorConfigPaths(homeDir, cwd);\n for (const targetPath of candidates) {\n const resolvedTarget = resolveConnectorConfigPath(targetPath, cwd);\n if (await rewriteJsonFile(resolvedTarget, homeDir, manifest, persistManifest)) {\n updated.push(resolvedTarget);\n }\n }\n return updated;\n}\n\nasync function copyLegacyConfig(\n homeDir: string,\n copied: string[],\n manifest: RollbackManifest,\n persistManifest?: PersistRollbackManifest,\n): Promise<void> {\n const source = legacyConfigPath(homeDir);\n const destination = remnicConfigPath(homeDir);\n if (!existsSync(source) || existsSync(destination)) return;\n if (!(await isExistingRegularFileNoFollow(source))) return;\n await ensureParent(destination);\n const original = await readFile(source, \"utf8\");\n let next = rewriteRemnicText(original);\n try {\n const parsed = JSON.parse(next) as unknown;\n if (isPlainJsonObject(parsed) && parsed.engram && !parsed.remnic) {\n parsed.remnic = parsed.engram;\n delete parsed.engram;\n next = JSON.stringify(parsed, null, 2);\n }\n } catch {\n // Keep rewritten text when config is not JSON.\n }\n await writeFile(destination, `${next.trimEnd()}\\n`, \"utf8\");\n await recordCreatedPath(destination, manifest, persistManifest);\n copied.push(destination);\n}\n\nfunction rewriteServiceText(content: string): string {\n return rewriteRemnicText(content);\n}\n\nasync function migrateServices(\n homeDir: string,\n options: MigrationOptions | undefined,\n manifest: RollbackManifest,\n persistManifest?: PersistRollbackManifest,\n): Promise<string[]> {\n const logger = resolveLogger(options);\n const exec = resolveExec(options);\n const servicesReinstalled: string[] = [];\n const platform = resolvePlatform(options);\n\n if (platform === \"darwin\") {\n const legacyPlist = path.join(homeDir, \"Library\", \"LaunchAgents\", \"ai.engram.daemon.plist\");\n const remnicPlist = path.join(homeDir, \"Library\", \"LaunchAgents\", \"ai.remnic.daemon.plist\");\n if (existsSync(legacyPlist) && !existsSync(remnicPlist)) {\n if (!(await isExistingRegularFileNoFollow(legacyPlist))) return servicesReinstalled;\n const next = rewriteServiceText(await readFile(legacyPlist, \"utf8\"));\n await ensureParent(remnicPlist);\n await writeFile(remnicPlist, next, \"utf8\");\n await recordCreatedPath(remnicPlist, manifest, persistManifest);\n try {\n exec(\"launchctl\", [\"unload\", legacyPlist]);\n } catch {\n // Keep migration fail-open when launchd rejects unload.\n }\n try {\n exec(\"launchctl\", [\"load\", \"-w\", remnicPlist]);\n } catch {\n // Keep migration fail-open when launchd rejects load.\n }\n servicesReinstalled.push(\"ai.remnic.daemon\");\n logger(\"launchd: ai.engram.daemon unloaded, ai.remnic.daemon installed\");\n }\n return servicesReinstalled;\n }\n\n if (platform === \"linux\") {\n const legacyUnit = path.join(homeDir, \".config\", \"systemd\", \"user\", \"engram.service\");\n const remnicUnit = path.join(homeDir, \".config\", \"systemd\", \"user\", \"remnic.service\");\n if (existsSync(legacyUnit) && !existsSync(remnicUnit)) {\n if (!(await isExistingRegularFileNoFollow(legacyUnit))) return servicesReinstalled;\n const next = rewriteServiceText(await readFile(legacyUnit, \"utf8\"));\n await ensureParent(remnicUnit);\n await writeFile(remnicUnit, next, \"utf8\");\n await recordCreatedPath(remnicUnit, manifest, persistManifest);\n try {\n exec(\"systemctl\", [\"--user\", \"stop\", \"engram.service\"]);\n exec(\"systemctl\", [\"--user\", \"disable\", \"engram.service\"]);\n exec(\"systemctl\", [\"--user\", \"daemon-reload\"]);\n exec(\"systemctl\", [\"--user\", \"enable\", \"remnic.service\"]);\n exec(\"systemctl\", [\"--user\", \"start\", \"remnic.service\"]);\n } catch {\n // Keep migration fail-open when systemd is unavailable.\n }\n servicesReinstalled.push(\"remnic.service\");\n logger(\"systemd: engram.service disabled, remnic.service installed\");\n }\n }\n\n return servicesReinstalled;\n}\n\nasync function writeRollbackManifest(homeDir: string, manifest: RollbackManifest): Promise<void> {\n await ensureParent(rollbackManifestPath(homeDir));\n await writeFile(\n rollbackManifestPath(homeDir),\n `${JSON.stringify(manifest, null, 2)}\\n`,\n \"utf8\",\n );\n}\n\nasync function readRollbackManifest(homeDir: string): Promise<RollbackManifest | null> {\n const target = rollbackManifestPath(homeDir);\n let targetStat: Awaited<ReturnType<typeof lstat>>;\n try {\n targetStat = await lstat(target);\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"ENOENT\") return null;\n throw error;\n }\n if (targetStat.isSymbolicLink()) {\n throw new Error(`rollback manifest must not be a symlink: ${target}`);\n }\n if (!targetStat.isFile()) {\n throw new Error(`rollback manifest must be a regular file: ${target}`);\n }\n let parsed: unknown;\n try {\n parsed = JSON.parse(await readFile(target, \"utf8\")) as unknown;\n } catch {\n return null;\n }\n return parseRollbackManifest(parsed, target);\n}\n\nasync function acquireLock(homeDir: string): Promise<() => Promise<void>> {\n const target = lockPath(homeDir);\n await mkdir(remnicRoot(homeDir), { recursive: true });\n const started = Date.now();\n\n while (true) {\n try {\n const handle = await open(target, \"wx\");\n await handle.writeFile(`${process.pid}\\n${Date.now()}\\n`, \"utf8\");\n return async () => {\n try {\n await handle.close();\n } finally {\n await unlink(target).catch(() => undefined);\n }\n };\n } catch (error) {\n const code = (error as NodeJS.ErrnoException).code;\n if (code !== \"EEXIST\") throw error;\n\n const details = await readFile(target, \"utf8\").catch(() => null);\n if (details === null) {\n if (await removeLock(target)) continue;\n } else {\n const lines = details.split(\"\\n\");\n const pid = Number.parseInt(lines[0] ?? \"\", 10);\n const createdAt = Number.parseInt(lines[1] ?? \"\", 10);\n const malformed = !Number.isSafeInteger(pid) || pid <= 0 || !Number.isFinite(createdAt);\n const deadPid = !malformed && !processIsAlive(pid);\n if (malformed || deadPid) {\n if (await removeLockIfUnchanged(target, details)) continue;\n }\n }\n if (Date.now() - started > LOCK_TIMEOUT_MS) {\n throw new Error(`timed out waiting for migration lock: ${target}`);\n }\n await new Promise((resolve) => setTimeout(resolve, LOCK_RETRY_MS));\n }\n }\n}\n\nasync function removeLockIfUnchanged(target: string, expectedContent: string): Promise<boolean> {\n const current = await readFile(target, \"utf8\").catch(() => null);\n if (current !== expectedContent) return false;\n return removeLock(target);\n}\n\nasync function removeLock(target: string): Promise<boolean> {\n try {\n await rm(target, { force: true });\n return true;\n } catch {\n return false;\n }\n}\n\nfunction processIsAlive(pid: number): boolean {\n try {\n process.kill(pid, 0);\n return true;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === \"EPERM\") return true;\n return false;\n }\n}\n\nexport async function rollbackFromEngramMigration(options?: MigrationOptions): Promise<RollbackResult> {\n const homeDir = resolveMigrationHome(options);\n const manifest = await readRollbackManifest(homeDir);\n const exec = resolveExec(options);\n const platform = resolvePlatform(options);\n const restored: string[] = [];\n const removed: string[] = [];\n\n if (!manifest) return { restored, removed };\n const entries = await validateRollbackManifestEntries(manifest, homeDir, options);\n\n if (platform === \"darwin\") {\n const remnicPlist = path.join(homeDir, \"Library\", \"LaunchAgents\", \"ai.remnic.daemon.plist\");\n if (existsSync(remnicPlist)) {\n try {\n exec(\"launchctl\", [\"unload\", remnicPlist]);\n } catch {\n // Ignore launchctl rollback failures.\n }\n }\n } else if (platform === \"linux\") {\n try {\n exec(\"systemctl\", [\"--user\", \"stop\", \"remnic.service\"]);\n exec(\"systemctl\", [\"--user\", \"disable\", \"remnic.service\"]);\n } catch {\n // Ignore systemd rollback failures.\n }\n }\n\n for (const entry of [...entries].reverse()) {\n if (entry.backupPath && await pathExistsNoFollow(entry.backupPath)) {\n await assertNoSymlinkPathSegments(entry.backupPath, homeDir, \"rollback manifest backup\");\n await assertExistingRegularFileNoFollow(entry.backupPath, \"rollback manifest backup\");\n await ensureParent(entry.targetPath);\n await copyFile(entry.backupPath, entry.targetPath);\n if (isRemnicTokenStorePath(entry.targetPath, homeDir)) {\n await secureTokenFilePermissions(entry.targetPath);\n }\n restored.push(entry.targetPath);\n continue;\n }\n if (entry.createdByMigration && existsSync(entry.targetPath)) {\n const targetSymlinkRoot = rollbackTargetSymlinkRoot(entry.targetPath, homeDir, options);\n await assertNoSymlinkPathSegments(entry.targetPath, targetSymlinkRoot, \"rollback manifest target\");\n if (!await assertCreatedRollbackTargetMatchesRecord(entry, entry.targetPath)) continue;\n await rm(entry.targetPath, { recursive: true, force: true });\n removed.push(entry.targetPath);\n }\n }\n\n if (platform === \"linux\") {\n try {\n exec(\"systemctl\", [\"--user\", \"daemon-reload\"]);\n } catch {\n // Ignore systemd rollback failures after removing unit files.\n }\n }\n\n await rm(markerPath(homeDir), { force: true }).catch(() => undefined);\n await rm(rollbackManifestPath(homeDir), { force: true }).catch(() => undefined);\n return { restored, removed };\n}\n\nexport async function migrateFromEngram(options?: MigrationOptions): Promise<MigrationResult> {\n const homeDir = resolveMigrationHome(options);\n const cwd = resolveMigrationCwd(options);\n const logger = resolveLogger(options);\n const copied: string[] = [];\n let tokensRegenerated = 0;\n let servicesReinstalled: string[] = [];\n\n if (existsSync(markerPath(homeDir))) {\n return {\n status: \"already-migrated\",\n copied,\n tokensRegenerated,\n servicesReinstalled,\n rollbackCommand: defaultRollbackCommand(),\n };\n }\n\n const hasLegacyRoot = existsSync(legacyRoot(homeDir));\n const hasLegacyConfig = existsSync(legacyConfigPath(homeDir));\n if (!hasLegacyRoot && !hasLegacyConfig) {\n return {\n status: \"fresh-install\",\n copied,\n tokensRegenerated,\n servicesReinstalled,\n rollbackCommand: defaultRollbackCommand(),\n };\n }\n\n const releaseLock = await acquireLock(homeDir);\n try {\n if (existsSync(markerPath(homeDir))) {\n return {\n status: \"already-migrated\",\n copied,\n tokensRegenerated,\n servicesReinstalled,\n rollbackCommand: defaultRollbackCommand(),\n };\n }\n\n const manifest: RollbackManifest = await readRollbackManifest(homeDir) ?? {\n version: 1,\n createdAt: new Date().toISOString(),\n entries: [],\n };\n const persistManifest = () => writeRollbackManifest(homeDir, manifest);\n\n logger(\"First run after Engram -> Remnic rename. Migrating...\");\n await mkdir(remnicRoot(homeDir), { recursive: true });\n await persistManifest();\n await copyTreeMissing(legacyRoot(homeDir), remnicRoot(homeDir), copied, manifest, persistManifest);\n await copyLegacyConfig(homeDir, copied, manifest, persistManifest);\n\n const legacyTokens = path.join(legacyRoot(homeDir), \"tokens.json\");\n const remnicTokens = path.join(remnicRoot(homeDir), \"tokens.json\");\n if (copied.includes(remnicTokens)) {\n tokensRegenerated += await rewriteTokensIfPresent(remnicTokens);\n await refreshCreatedPathHash(remnicTokens, manifest, persistManifest);\n } else {\n tokensRegenerated += await mergeLegacyTokens(\n legacyTokens,\n remnicTokens,\n homeDir,\n manifest,\n true,\n persistManifest,\n );\n }\n if (existsSync(remnicTokens)) {\n logger(\"tokens copied to ~/.remnic/tokens.json (legacy prefixes rewritten)\");\n }\n\n const updatedConfigs = await updateConnectorConfigs(homeDir, cwd, options, manifest, persistManifest);\n for (const updated of updatedConfigs) {\n logger(`Updated connector config: ${updated}`);\n }\n\n servicesReinstalled = await migrateServices(homeDir, options, manifest, persistManifest);\n await writeRollbackManifest(homeDir, manifest);\n await writeFile(markerPath(homeDir), `${new Date().toISOString()}\\n`, \"utf8\");\n logger(\"Migration complete. Welcome to Remnic.\");\n\n return {\n status: \"migrated\",\n copied,\n tokensRegenerated,\n servicesReinstalled,\n rollbackCommand: defaultRollbackCommand(),\n };\n } finally {\n await releaseLock();\n }\n}\n"],"mappings":"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","names":["legacyEntries","rewritten"]}
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from "./chunk-BFBF3XEF.js";
|
|
10
10
|
import {
|
|
11
11
|
migrateFromEngram
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-KVEVLBKC.js";
|
|
13
13
|
import {
|
|
14
14
|
LcmEngine
|
|
15
15
|
} from "./chunk-RLV3PQGH.js";
|
|
@@ -12398,4 +12398,4 @@ export {
|
|
|
12398
12398
|
resolvePersistedMemoryRelativePath,
|
|
12399
12399
|
Orchestrator
|
|
12400
12400
|
};
|
|
12401
|
-
//# sourceMappingURL=chunk-
|
|
12401
|
+
//# sourceMappingURL=chunk-XDMLTNIG.js.map
|
package/dist/index.js
CHANGED
|
@@ -182,13 +182,13 @@ import {
|
|
|
182
182
|
saveTaxonomy,
|
|
183
183
|
validateSlug,
|
|
184
184
|
validateTaxonomy
|
|
185
|
-
} from "./chunk-
|
|
185
|
+
} from "./chunk-XDMLTNIG.js";
|
|
186
186
|
import "./chunk-5RIRL3XL.js";
|
|
187
187
|
import "./chunk-BFBF3XEF.js";
|
|
188
188
|
import {
|
|
189
189
|
migrateFromEngram,
|
|
190
190
|
rollbackFromEngramMigration
|
|
191
|
-
} from "./chunk-
|
|
191
|
+
} from "./chunk-KVEVLBKC.js";
|
|
192
192
|
import "./chunk-HHLLAQGZ.js";
|
|
193
193
|
import "./chunk-UWK5OXUJ.js";
|
|
194
194
|
import "./chunk-RLV3PQGH.js";
|
package/dist/orchestrator.js
CHANGED
|
@@ -26,10 +26,10 @@ import {
|
|
|
26
26
|
sanitizeSessionKeyForFilename,
|
|
27
27
|
shouldFilterLifecycleRecallCandidate,
|
|
28
28
|
summarizeGraphShadowComparison
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-XDMLTNIG.js";
|
|
30
30
|
import "./chunk-5RIRL3XL.js";
|
|
31
31
|
import "./chunk-BFBF3XEF.js";
|
|
32
|
-
import "./chunk-
|
|
32
|
+
import "./chunk-KVEVLBKC.js";
|
|
33
33
|
import "./chunk-HHLLAQGZ.js";
|
|
34
34
|
import "./chunk-UWK5OXUJ.js";
|
|
35
35
|
import "./chunk-RLV3PQGH.js";
|
package/dist/schemas.d.ts
CHANGED
|
@@ -7,13 +7,13 @@ declare const MemoryActionEligibilityContextSchema: z.ZodObject<{
|
|
|
7
7
|
importance: z.ZodNumber;
|
|
8
8
|
source: z.ZodEnum<["extraction", "consolidation", "replay", "manual", "unknown"]>;
|
|
9
9
|
}, "strict", z.ZodTypeAny, {
|
|
10
|
-
source: "manual" | "extraction" | "consolidation" | "replay" | "unknown";
|
|
11
10
|
confidence: number;
|
|
11
|
+
source: "unknown" | "manual" | "extraction" | "consolidation" | "replay";
|
|
12
12
|
lifecycleState: "active" | "archived" | "candidate" | "validated" | "stale";
|
|
13
13
|
importance: number;
|
|
14
14
|
}, {
|
|
15
|
-
source: "manual" | "extraction" | "consolidation" | "replay" | "unknown";
|
|
16
15
|
confidence: number;
|
|
16
|
+
source: "unknown" | "manual" | "extraction" | "consolidation" | "replay";
|
|
17
17
|
lifecycleState: "active" | "archived" | "candidate" | "validated" | "stale";
|
|
18
18
|
importance: number;
|
|
19
19
|
}>;
|
|
@@ -149,10 +149,10 @@ declare const ExtractedFactSchema: z.ZodEffects<z.ZodObject<{
|
|
|
149
149
|
observed_outcome?: string | null | undefined;
|
|
150
150
|
}>>>;
|
|
151
151
|
}, "strip", z.ZodTypeAny, {
|
|
152
|
-
tags: string[];
|
|
153
|
-
content: string;
|
|
154
152
|
category: "fact" | "preference" | "correction" | "entity" | "decision" | "relationship" | "principle" | "commitment" | "moment" | "skill" | "rule" | "procedure" | "reasoning_trace";
|
|
153
|
+
content: string;
|
|
155
154
|
confidence: number;
|
|
155
|
+
tags: string[];
|
|
156
156
|
entityRef?: string | null | undefined;
|
|
157
157
|
structuredAttributes?: Record<string, string> | null | undefined;
|
|
158
158
|
promptedByQuestion?: string | null | undefined;
|
|
@@ -178,10 +178,10 @@ declare const ExtractedFactSchema: z.ZodEffects<z.ZodObject<{
|
|
|
178
178
|
observed_outcome?: string | null | undefined;
|
|
179
179
|
} | null | undefined;
|
|
180
180
|
}, {
|
|
181
|
-
tags: string[];
|
|
182
|
-
content: string;
|
|
183
181
|
category: "fact" | "preference" | "correction" | "entity" | "decision" | "relationship" | "principle" | "commitment" | "moment" | "skill" | "rule" | "procedure" | "reasoning_trace";
|
|
182
|
+
content: string;
|
|
184
183
|
confidence: number;
|
|
184
|
+
tags: string[];
|
|
185
185
|
entityRef?: string | null | undefined;
|
|
186
186
|
structuredAttributes?: Record<string, string> | null | undefined;
|
|
187
187
|
promptedByQuestion?: string | null | undefined;
|
|
@@ -207,10 +207,10 @@ declare const ExtractedFactSchema: z.ZodEffects<z.ZodObject<{
|
|
|
207
207
|
observed_outcome?: string | null | undefined;
|
|
208
208
|
} | null | undefined;
|
|
209
209
|
}>, {
|
|
210
|
-
tags: string[];
|
|
211
|
-
content: string;
|
|
212
210
|
category: "fact" | "preference" | "correction" | "entity" | "decision" | "relationship" | "principle" | "commitment" | "moment" | "skill" | "rule" | "procedure" | "reasoning_trace";
|
|
211
|
+
content: string;
|
|
213
212
|
confidence: number;
|
|
213
|
+
tags: string[];
|
|
214
214
|
entityRef?: string | null | undefined;
|
|
215
215
|
structuredAttributes?: Record<string, string> | null | undefined;
|
|
216
216
|
promptedByQuestion?: string | null | undefined;
|
|
@@ -236,10 +236,10 @@ declare const ExtractedFactSchema: z.ZodEffects<z.ZodObject<{
|
|
|
236
236
|
observed_outcome?: string | null | undefined;
|
|
237
237
|
} | null | undefined;
|
|
238
238
|
}, {
|
|
239
|
-
tags: string[];
|
|
240
|
-
content: string;
|
|
241
239
|
category: "fact" | "preference" | "correction" | "entity" | "decision" | "relationship" | "principle" | "commitment" | "moment" | "skill" | "rule" | "procedure" | "reasoning_trace";
|
|
240
|
+
content: string;
|
|
242
241
|
confidence: number;
|
|
242
|
+
tags: string[];
|
|
243
243
|
entityRef?: string | null | undefined;
|
|
244
244
|
structuredAttributes?: Record<string, string> | null | undefined;
|
|
245
245
|
promptedByQuestion?: string | null | undefined;
|
|
@@ -457,10 +457,10 @@ declare const ProactiveExtractionResultSchema: z.ZodObject<{
|
|
|
457
457
|
observed_outcome?: string | null | undefined;
|
|
458
458
|
}>>>;
|
|
459
459
|
}, "strip", z.ZodTypeAny, {
|
|
460
|
-
tags: string[];
|
|
461
|
-
content: string;
|
|
462
460
|
category: "fact" | "preference" | "correction" | "entity" | "decision" | "relationship" | "principle" | "commitment" | "moment" | "skill" | "rule" | "procedure" | "reasoning_trace";
|
|
461
|
+
content: string;
|
|
463
462
|
confidence: number;
|
|
463
|
+
tags: string[];
|
|
464
464
|
entityRef?: string | null | undefined;
|
|
465
465
|
structuredAttributes?: Record<string, string> | null | undefined;
|
|
466
466
|
promptedByQuestion?: string | null | undefined;
|
|
@@ -486,10 +486,10 @@ declare const ProactiveExtractionResultSchema: z.ZodObject<{
|
|
|
486
486
|
observed_outcome?: string | null | undefined;
|
|
487
487
|
} | null | undefined;
|
|
488
488
|
}, {
|
|
489
|
-
tags: string[];
|
|
490
|
-
content: string;
|
|
491
489
|
category: "fact" | "preference" | "correction" | "entity" | "decision" | "relationship" | "principle" | "commitment" | "moment" | "skill" | "rule" | "procedure" | "reasoning_trace";
|
|
490
|
+
content: string;
|
|
492
491
|
confidence: number;
|
|
492
|
+
tags: string[];
|
|
493
493
|
entityRef?: string | null | undefined;
|
|
494
494
|
structuredAttributes?: Record<string, string> | null | undefined;
|
|
495
495
|
promptedByQuestion?: string | null | undefined;
|
|
@@ -515,10 +515,10 @@ declare const ProactiveExtractionResultSchema: z.ZodObject<{
|
|
|
515
515
|
observed_outcome?: string | null | undefined;
|
|
516
516
|
} | null | undefined;
|
|
517
517
|
}>, {
|
|
518
|
-
tags: string[];
|
|
519
|
-
content: string;
|
|
520
518
|
category: "fact" | "preference" | "correction" | "entity" | "decision" | "relationship" | "principle" | "commitment" | "moment" | "skill" | "rule" | "procedure" | "reasoning_trace";
|
|
519
|
+
content: string;
|
|
521
520
|
confidence: number;
|
|
521
|
+
tags: string[];
|
|
522
522
|
entityRef?: string | null | undefined;
|
|
523
523
|
structuredAttributes?: Record<string, string> | null | undefined;
|
|
524
524
|
promptedByQuestion?: string | null | undefined;
|
|
@@ -544,10 +544,10 @@ declare const ProactiveExtractionResultSchema: z.ZodObject<{
|
|
|
544
544
|
observed_outcome?: string | null | undefined;
|
|
545
545
|
} | null | undefined;
|
|
546
546
|
}, {
|
|
547
|
-
tags: string[];
|
|
548
|
-
content: string;
|
|
549
547
|
category: "fact" | "preference" | "correction" | "entity" | "decision" | "relationship" | "principle" | "commitment" | "moment" | "skill" | "rule" | "procedure" | "reasoning_trace";
|
|
548
|
+
content: string;
|
|
550
549
|
confidence: number;
|
|
550
|
+
tags: string[];
|
|
551
551
|
entityRef?: string | null | undefined;
|
|
552
552
|
structuredAttributes?: Record<string, string> | null | undefined;
|
|
553
553
|
promptedByQuestion?: string | null | undefined;
|
|
@@ -631,10 +631,10 @@ declare const ProactiveExtractionResultSchema: z.ZodObject<{
|
|
|
631
631
|
}>, "many">>>;
|
|
632
632
|
}, "strip", z.ZodTypeAny, {
|
|
633
633
|
facts: {
|
|
634
|
-
tags: string[];
|
|
635
|
-
content: string;
|
|
636
634
|
category: "fact" | "preference" | "correction" | "entity" | "decision" | "relationship" | "principle" | "commitment" | "moment" | "skill" | "rule" | "procedure" | "reasoning_trace";
|
|
635
|
+
content: string;
|
|
637
636
|
confidence: number;
|
|
637
|
+
tags: string[];
|
|
638
638
|
entityRef?: string | null | undefined;
|
|
639
639
|
structuredAttributes?: Record<string, string> | null | undefined;
|
|
640
640
|
promptedByQuestion?: string | null | undefined;
|
|
@@ -680,10 +680,10 @@ declare const ProactiveExtractionResultSchema: z.ZodObject<{
|
|
|
680
680
|
}[] | null | undefined;
|
|
681
681
|
}, {
|
|
682
682
|
facts: {
|
|
683
|
-
tags: string[];
|
|
684
|
-
content: string;
|
|
685
683
|
category: "fact" | "preference" | "correction" | "entity" | "decision" | "relationship" | "principle" | "commitment" | "moment" | "skill" | "rule" | "procedure" | "reasoning_trace";
|
|
684
|
+
content: string;
|
|
686
685
|
confidence: number;
|
|
686
|
+
tags: string[];
|
|
687
687
|
entityRef?: string | null | undefined;
|
|
688
688
|
structuredAttributes?: Record<string, string> | null | undefined;
|
|
689
689
|
promptedByQuestion?: string | null | undefined;
|
|
@@ -825,10 +825,10 @@ declare const ExtractionResultSchema: z.ZodObject<{
|
|
|
825
825
|
observed_outcome?: string | null | undefined;
|
|
826
826
|
}>>>;
|
|
827
827
|
}, "strip", z.ZodTypeAny, {
|
|
828
|
-
tags: string[];
|
|
829
|
-
content: string;
|
|
830
828
|
category: "fact" | "preference" | "correction" | "entity" | "decision" | "relationship" | "principle" | "commitment" | "moment" | "skill" | "rule" | "procedure" | "reasoning_trace";
|
|
829
|
+
content: string;
|
|
831
830
|
confidence: number;
|
|
831
|
+
tags: string[];
|
|
832
832
|
entityRef?: string | null | undefined;
|
|
833
833
|
structuredAttributes?: Record<string, string> | null | undefined;
|
|
834
834
|
promptedByQuestion?: string | null | undefined;
|
|
@@ -854,10 +854,10 @@ declare const ExtractionResultSchema: z.ZodObject<{
|
|
|
854
854
|
observed_outcome?: string | null | undefined;
|
|
855
855
|
} | null | undefined;
|
|
856
856
|
}, {
|
|
857
|
-
tags: string[];
|
|
858
|
-
content: string;
|
|
859
857
|
category: "fact" | "preference" | "correction" | "entity" | "decision" | "relationship" | "principle" | "commitment" | "moment" | "skill" | "rule" | "procedure" | "reasoning_trace";
|
|
858
|
+
content: string;
|
|
860
859
|
confidence: number;
|
|
860
|
+
tags: string[];
|
|
861
861
|
entityRef?: string | null | undefined;
|
|
862
862
|
structuredAttributes?: Record<string, string> | null | undefined;
|
|
863
863
|
promptedByQuestion?: string | null | undefined;
|
|
@@ -883,10 +883,10 @@ declare const ExtractionResultSchema: z.ZodObject<{
|
|
|
883
883
|
observed_outcome?: string | null | undefined;
|
|
884
884
|
} | null | undefined;
|
|
885
885
|
}>, {
|
|
886
|
-
tags: string[];
|
|
887
|
-
content: string;
|
|
888
886
|
category: "fact" | "preference" | "correction" | "entity" | "decision" | "relationship" | "principle" | "commitment" | "moment" | "skill" | "rule" | "procedure" | "reasoning_trace";
|
|
887
|
+
content: string;
|
|
889
888
|
confidence: number;
|
|
889
|
+
tags: string[];
|
|
890
890
|
entityRef?: string | null | undefined;
|
|
891
891
|
structuredAttributes?: Record<string, string> | null | undefined;
|
|
892
892
|
promptedByQuestion?: string | null | undefined;
|
|
@@ -912,10 +912,10 @@ declare const ExtractionResultSchema: z.ZodObject<{
|
|
|
912
912
|
observed_outcome?: string | null | undefined;
|
|
913
913
|
} | null | undefined;
|
|
914
914
|
}, {
|
|
915
|
-
tags: string[];
|
|
916
|
-
content: string;
|
|
917
915
|
category: "fact" | "preference" | "correction" | "entity" | "decision" | "relationship" | "principle" | "commitment" | "moment" | "skill" | "rule" | "procedure" | "reasoning_trace";
|
|
916
|
+
content: string;
|
|
918
917
|
confidence: number;
|
|
918
|
+
tags: string[];
|
|
919
919
|
entityRef?: string | null | undefined;
|
|
920
920
|
structuredAttributes?: Record<string, string> | null | undefined;
|
|
921
921
|
promptedByQuestion?: string | null | undefined;
|
|
@@ -1013,10 +1013,10 @@ declare const ExtractionResultSchema: z.ZodObject<{
|
|
|
1013
1013
|
}>, "many">>>;
|
|
1014
1014
|
}, "strip", z.ZodTypeAny, {
|
|
1015
1015
|
facts: {
|
|
1016
|
-
tags: string[];
|
|
1017
|
-
content: string;
|
|
1018
1016
|
category: "fact" | "preference" | "correction" | "entity" | "decision" | "relationship" | "principle" | "commitment" | "moment" | "skill" | "rule" | "procedure" | "reasoning_trace";
|
|
1017
|
+
content: string;
|
|
1019
1018
|
confidence: number;
|
|
1019
|
+
tags: string[];
|
|
1020
1020
|
entityRef?: string | null | undefined;
|
|
1021
1021
|
structuredAttributes?: Record<string, string> | null | undefined;
|
|
1022
1022
|
promptedByQuestion?: string | null | undefined;
|
|
@@ -1068,10 +1068,10 @@ declare const ExtractionResultSchema: z.ZodObject<{
|
|
|
1068
1068
|
identityReflection?: string | null | undefined;
|
|
1069
1069
|
}, {
|
|
1070
1070
|
facts: {
|
|
1071
|
-
tags: string[];
|
|
1072
|
-
content: string;
|
|
1073
1071
|
category: "fact" | "preference" | "correction" | "entity" | "decision" | "relationship" | "principle" | "commitment" | "moment" | "skill" | "rule" | "procedure" | "reasoning_trace";
|
|
1072
|
+
content: string;
|
|
1074
1073
|
confidence: number;
|
|
1074
|
+
tags: string[];
|
|
1075
1075
|
entityRef?: string | null | undefined;
|
|
1076
1076
|
structuredAttributes?: Record<string, string> | null | undefined;
|
|
1077
1077
|
promptedByQuestion?: string | null | undefined;
|
|
@@ -1285,13 +1285,13 @@ declare const ContradictionVerificationSchema: z.ZodObject<{
|
|
|
1285
1285
|
reasoning: z.ZodString;
|
|
1286
1286
|
whichIsNewer: z.ZodEnum<["first", "second", "unclear"]>;
|
|
1287
1287
|
}, "strip", z.ZodTypeAny, {
|
|
1288
|
-
reasoning: string;
|
|
1289
1288
|
confidence: number;
|
|
1289
|
+
reasoning: string;
|
|
1290
1290
|
isContradiction: boolean;
|
|
1291
1291
|
whichIsNewer: "first" | "second" | "unclear";
|
|
1292
1292
|
}, {
|
|
1293
|
-
reasoning: string;
|
|
1294
1293
|
confidence: number;
|
|
1294
|
+
reasoning: string;
|
|
1295
1295
|
isContradiction: boolean;
|
|
1296
1296
|
whichIsNewer: "first" | "second" | "unclear";
|
|
1297
1297
|
}>;
|
|
@@ -1386,8 +1386,8 @@ declare const BehaviorLoopAdjustmentSchema: z.ZodObject<{
|
|
|
1386
1386
|
reason: z.ZodString;
|
|
1387
1387
|
appliedAt: z.ZodString;
|
|
1388
1388
|
}, "strip", z.ZodTypeAny, {
|
|
1389
|
-
reason: string;
|
|
1390
1389
|
confidence: number;
|
|
1390
|
+
reason: string;
|
|
1391
1391
|
parameter: string;
|
|
1392
1392
|
previousValue: number;
|
|
1393
1393
|
nextValue: number;
|
|
@@ -1395,8 +1395,8 @@ declare const BehaviorLoopAdjustmentSchema: z.ZodObject<{
|
|
|
1395
1395
|
evidenceCount: number;
|
|
1396
1396
|
appliedAt: string;
|
|
1397
1397
|
}, {
|
|
1398
|
-
reason: string;
|
|
1399
1398
|
confidence: number;
|
|
1399
|
+
reason: string;
|
|
1400
1400
|
parameter: string;
|
|
1401
1401
|
previousValue: number;
|
|
1402
1402
|
nextValue: number;
|
|
@@ -1420,8 +1420,8 @@ declare const BehaviorLoopPolicyStateSchema: z.ZodObject<{
|
|
|
1420
1420
|
reason: z.ZodString;
|
|
1421
1421
|
appliedAt: z.ZodString;
|
|
1422
1422
|
}, "strip", z.ZodTypeAny, {
|
|
1423
|
-
reason: string;
|
|
1424
1423
|
confidence: number;
|
|
1424
|
+
reason: string;
|
|
1425
1425
|
parameter: string;
|
|
1426
1426
|
previousValue: number;
|
|
1427
1427
|
nextValue: number;
|
|
@@ -1429,8 +1429,8 @@ declare const BehaviorLoopPolicyStateSchema: z.ZodObject<{
|
|
|
1429
1429
|
evidenceCount: number;
|
|
1430
1430
|
appliedAt: string;
|
|
1431
1431
|
}, {
|
|
1432
|
-
reason: string;
|
|
1433
1432
|
confidence: number;
|
|
1433
|
+
reason: string;
|
|
1434
1434
|
parameter: string;
|
|
1435
1435
|
previousValue: number;
|
|
1436
1436
|
nextValue: number;
|
|
@@ -1447,8 +1447,8 @@ declare const BehaviorLoopPolicyStateSchema: z.ZodObject<{
|
|
|
1447
1447
|
maxDeltaPerCycle: number;
|
|
1448
1448
|
protectedParams: string[];
|
|
1449
1449
|
adjustments: {
|
|
1450
|
-
reason: string;
|
|
1451
1450
|
confidence: number;
|
|
1451
|
+
reason: string;
|
|
1452
1452
|
parameter: string;
|
|
1453
1453
|
previousValue: number;
|
|
1454
1454
|
nextValue: number;
|
|
@@ -1464,8 +1464,8 @@ declare const BehaviorLoopPolicyStateSchema: z.ZodObject<{
|
|
|
1464
1464
|
maxDeltaPerCycle: number;
|
|
1465
1465
|
protectedParams: string[];
|
|
1466
1466
|
adjustments: {
|
|
1467
|
-
reason: string;
|
|
1468
1467
|
confidence: number;
|
|
1468
|
+
reason: string;
|
|
1469
1469
|
parameter: string;
|
|
1470
1470
|
previousValue: number;
|
|
1471
1471
|
nextValue: number;
|
|
@@ -22,9 +22,9 @@ declare const SharedFeedbackEntrySchema: z.ZodObject<{
|
|
|
22
22
|
agent: string;
|
|
23
23
|
date: string;
|
|
24
24
|
reason: string;
|
|
25
|
+
confidence?: number | undefined;
|
|
25
26
|
workflow?: string | undefined;
|
|
26
27
|
tags?: string[] | undefined;
|
|
27
|
-
confidence?: number | undefined;
|
|
28
28
|
severity?: "low" | "medium" | "high" | undefined;
|
|
29
29
|
outcome?: string | undefined;
|
|
30
30
|
refs?: string[] | undefined;
|
|
@@ -36,9 +36,9 @@ declare const SharedFeedbackEntrySchema: z.ZodObject<{
|
|
|
36
36
|
agent: string;
|
|
37
37
|
date: string;
|
|
38
38
|
reason: string;
|
|
39
|
+
confidence?: number | undefined;
|
|
39
40
|
workflow?: string | undefined;
|
|
40
41
|
tags?: string[] | undefined;
|
|
41
|
-
confidence?: number | undefined;
|
|
42
42
|
severity?: "low" | "medium" | "high" | undefined;
|
|
43
43
|
outcome?: string | undefined;
|
|
44
44
|
refs?: string[] | undefined;
|
package/package.json
CHANGED