@vreko/cli 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +45 -0
  3. package/dist/CeremonyView-LQS7FTMK.js +134 -0
  4. package/dist/CeremonyView-LQS7FTMK.js.map +1 -0
  5. package/dist/InitApp-7K5DTYSW.js +1479 -0
  6. package/dist/InitApp-7K5DTYSW.js.map +1 -0
  7. package/dist/SkippedTestDetector-PJSKSOZR.js +7 -0
  8. package/dist/SkippedTestDetector-PJSKSOZR.js.map +1 -0
  9. package/dist/TuiApp-FX23XQBK.js +8 -0
  10. package/dist/TuiApp-FX23XQBK.js.map +1 -0
  11. package/dist/analysis-ABEO6RTN.js +8 -0
  12. package/dist/analysis-ABEO6RTN.js.map +1 -0
  13. package/dist/auth-XNBEBNPY.js +7669 -0
  14. package/dist/auth-XNBEBNPY.js.map +1 -0
  15. package/dist/ceremony-M7CXVBVA.js +45 -0
  16. package/dist/ceremony-M7CXVBVA.js.map +1 -0
  17. package/dist/chunk-A3QSZJPD.js +3147 -0
  18. package/dist/chunk-A3QSZJPD.js.map +1 -0
  19. package/dist/chunk-ASGZ5B6C.js +3969 -0
  20. package/dist/chunk-ASGZ5B6C.js.map +1 -0
  21. package/dist/chunk-DMXC2JTC.js +58 -0
  22. package/dist/chunk-DMXC2JTC.js.map +1 -0
  23. package/dist/chunk-EEBSK2IH.js +161 -0
  24. package/dist/chunk-EEBSK2IH.js.map +1 -0
  25. package/dist/chunk-EWOJGXRX.js +22 -0
  26. package/dist/chunk-EWOJGXRX.js.map +1 -0
  27. package/dist/chunk-F7GEJLP7.js +2389 -0
  28. package/dist/chunk-F7GEJLP7.js.map +1 -0
  29. package/dist/chunk-GOYL3F4T.js +605 -0
  30. package/dist/chunk-GOYL3F4T.js.map +1 -0
  31. package/dist/chunk-GRMRYWYS.js +17 -0
  32. package/dist/chunk-GRMRYWYS.js.map +1 -0
  33. package/dist/chunk-GSUGROXB.js +1951 -0
  34. package/dist/chunk-GSUGROXB.js.map +1 -0
  35. package/dist/chunk-H7773ONB.js +50 -0
  36. package/dist/chunk-H7773ONB.js.map +1 -0
  37. package/dist/chunk-HFQHU5LC.js +445 -0
  38. package/dist/chunk-HFQHU5LC.js.map +1 -0
  39. package/dist/chunk-IVHUBLJD.js +318 -0
  40. package/dist/chunk-IVHUBLJD.js.map +1 -0
  41. package/dist/chunk-KJWKY4L4.js +14 -0
  42. package/dist/chunk-KJWKY4L4.js.map +1 -0
  43. package/dist/chunk-MJVY2XUN.js +1793 -0
  44. package/dist/chunk-MJVY2XUN.js.map +1 -0
  45. package/dist/chunk-QWZVCJII.js +1797 -0
  46. package/dist/chunk-QWZVCJII.js.map +1 -0
  47. package/dist/chunk-VTSNRV3V.js +3237 -0
  48. package/dist/chunk-VTSNRV3V.js.map +1 -0
  49. package/dist/chunk-W5B4GTXR.js +1466 -0
  50. package/dist/chunk-W5B4GTXR.js.map +1 -0
  51. package/dist/chunk-WZEZLVOW.js +4995 -0
  52. package/dist/chunk-WZEZLVOW.js.map +1 -0
  53. package/dist/chunk-YPTTIXKC.js +199 -0
  54. package/dist/chunk-YPTTIXKC.js.map +1 -0
  55. package/dist/chunk-Z55UGM6X.js +6360 -0
  56. package/dist/chunk-Z55UGM6X.js.map +1 -0
  57. package/dist/chunk-ZIIRQODJ.js +110 -0
  58. package/dist/chunk-ZIIRQODJ.js.map +1 -0
  59. package/dist/chunk-ZSUQ4FMB.js +77 -0
  60. package/dist/chunk-ZSUQ4FMB.js.map +1 -0
  61. package/dist/client-JMTSZS3V.js +10 -0
  62. package/dist/client-JMTSZS3V.js.map +1 -0
  63. package/dist/deprecated-snap.js +19 -0
  64. package/dist/deprecated-snap.js.map +1 -0
  65. package/dist/dist-2KWBZFLA.js +14 -0
  66. package/dist/dist-2KWBZFLA.js.map +1 -0
  67. package/dist/dist-5ZYKNNU3.js +7 -0
  68. package/dist/dist-5ZYKNNU3.js.map +1 -0
  69. package/dist/dist-CP3RFHPI.js +11 -0
  70. package/dist/dist-CP3RFHPI.js.map +1 -0
  71. package/dist/gecko-53ITAGG6.js +56 -0
  72. package/dist/gecko-53ITAGG6.js.map +1 -0
  73. package/dist/guards-QAFC64NO.js +7 -0
  74. package/dist/guards-QAFC64NO.js.map +1 -0
  75. package/dist/index.js +57785 -0
  76. package/dist/index.js.map +1 -0
  77. package/dist/init-command-246JIVXM.js +7 -0
  78. package/dist/init-command-246JIVXM.js.map +1 -0
  79. package/dist/init-core-KAI7LCXZ.js +12 -0
  80. package/dist/init-core-KAI7LCXZ.js.map +1 -0
  81. package/dist/init-scan-RZNYDTUV.js +1919 -0
  82. package/dist/init-scan-RZNYDTUV.js.map +1 -0
  83. package/dist/local-service-adapter-6KNN6WQL.js +8 -0
  84. package/dist/local-service-adapter-6KNN6WQL.js.map +1 -0
  85. package/dist/secure-credentials-JXWAQLS2.js +306 -0
  86. package/dist/secure-credentials-JXWAQLS2.js.map +1 -0
  87. package/dist/tui-TPJPUS2R.js +111 -0
  88. package/dist/tui-TPJPUS2R.js.map +1 -0
  89. package/dist/vreko-dir-O3RLG7PI.js +8 -0
  90. package/dist/vreko-dir-O3RLG7PI.js.map +1 -0
  91. package/package.json +132 -0
  92. package/scripts/check-banned-words.ts +152 -0
  93. package/scripts/hooks/posttooluse-file-notify.sh +108 -0
  94. package/scripts/hooks/pretooluse-fragile-guard.sh +82 -0
  95. package/scripts/post-install-notice.js +24 -0
  96. package/scripts/postinstall.mjs +84 -0
  97. package/scripts/preuninstall.mjs +34 -0
  98. package/scripts/verify-jsx-transform.mjs +55 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../packages/contracts/dist/local-service/schemas/health.js","../../../packages/contracts/dist/local-service/schemas/ai-config.js","../../../packages/contracts/dist/local-service/schemas/results.js","../../../packages/contracts/dist/local-service/artifact.js","../../../packages/contracts/dist/local-service/schemas/config.js","../../../packages/contracts/dist/local-service/schemas/cli-output.js","../../../packages/local-service-client/src/types.ts","../../../packages/local-service-client/src/connection/ipc.ts","../../../packages/local-service-client/src/connection/reconnect.ts","../../../packages/local-service-client/src/methods/context.ts","../../../packages/local-service-client/src/methods/daemon.ts","../../../packages/local-service-client/src/methods/detection.ts","../../../packages/local-service-client/src/methods/health.ts","../../../packages/local-service-client/src/methods/intelligence.ts","../../../packages/local-service-client/src/methods/learning.ts","../../../packages/local-service-client/src/methods/mcp.ts","../../../packages/local-service-client/src/methods/momentum.ts","../../../packages/local-service-client/src/methods/protection.ts","../../../packages/local-service-client/src/methods/session.ts","../../../packages/local-service-client/src/methods/snapshot.ts","../../../packages/local-service-client/src/methods/supervisor.ts","../../../packages/local-service-client/src/methods/sync.ts","../../../packages/local-service-client/src/methods/validation.ts","../../../packages/local-service-client/src/methods/violation.ts","../../../packages/local-service-client/src/methods/watch.ts","../../../packages/local-service-client/src/methods/workspace.ts","../../../packages/local-service-client/src/client.ts","../src/service-adapter/local-service-adapter.ts"],"names":["DaemonHealthState","z","enum","SubsystemName","SubsystemStatus","object","state","reason","string","optional","lastTransition","datetime","nullable","DaemonHealthReport","uptime","number","nonnegative","subsystems","record","degradedReason","timestamp","previousState","currentState","report","extend","memoryMb","memoryLimitMb","positive","ipcQueueDepth","activeRequests","lastCleanShutdown","boolean","supervisorMode","components","ipcServer","fileWatcher","syncService","intelligenceService","AITool","FileAccessRule","pattern","permission","source","tool","filePath","fileName","lastModifiedAt","rawContent","protectedFiles","array","focusedDomains","explicitInstructions","toolPermissions","workflowConstraints","fileAccessRules","behaviorRules","vrekoInstructionsPresent","vrekoSectionHash","id","conflictType","tools","files","description","severity","recommendation","detectedAt","priority","default","exists","lastModified","SessionContextResult","fragileFilesInScope","path","fragility","coChangePatternsInScope","target","confidence","concurrentSessionWarning","sessionId","workspacePath","touchedFiles","taskId","startedAt","metadata","task","keywords","aiToolsDetected","highestRiskLevel","context","learnings","type","trigger","action","relevanceScore","success","coherenceScore","min","max","duration","filesModified","learningsCaptured","snapshotsCreated","SessionSummarySchema","workspace","endedAt","restoresTriggered","aiEditsDetected","protectionLevel","SessionPatternSchema","filesInvolved","promotedToHot","SessionLearningsSchema","patterns","totalNew","totalPromoted","totalPruned","PitfallWarningSchema","risk","outcome","PitfallsAvoidedSchema","warnings","estimatedTimeSaved","IntelligenceMetricsSchema","tokenSavingsEstimate","contextReusageRate","intelligenceEventsTotal","TimelineEventSchema","summary","detail","CeremonyPayloadSchema","pitfalls","metrics","timeline","superRefine","payload","ctx","sessionStart","sessionEnd","Date","now","event","addIssue","code","message","patternCount","length","totalLearnings","CoherenceScoreSchema","discriminatedUnion","literal","value","level","approximateValue","pitfallsAvoided","tokensSaved","insights","carryForward","commitMessage","ceremony","topLearnings","content","captureMethod","active","snapshotCount","tier","isNew","LearningSearchEntry","results","total","query","FragileFileEntry","CoChangeEntry","LearningApiSchema","fragileFiles","coChanges","compiled","compiledTokens","learningCount","fragileFileCount","coChangePatternCount","tokenCount","fromCache","score","factors","gitRisk","multiplier","uncommittedChanges","detachedHead","onMainBranch","fatigue","riskBoost","rollbackWarning","poisoning","detected","fileRisks","rollbackCount","describe","int","items","fileA","fileB","frequency","occurrences","relationship","lastObserved","learningsCount","patternsCount","fragileFilesCount","coChangePatternsCount","totalSessions","linesAnalyzed","totalSnapshots","totalRestores","snapshotsToday","snapshotsThisWeek","linesAnalyzedToday","restoresThisWeek","patternsThisWeek","healthScore","healthTrajectory","risksPrevented","risksPreventedContext","accuracy","coherencePercent","preventedToRecoveredRatio","file","suggestion","status","vitals","trajectory","pressure","pulse","session","totalToolCalls","filesTouched","candidates","window","surfaceable","wording","coChangePartners","kind","union","captured","domain","error","recorded","patternId","notes","revertedWithin5Min","accuracyImpact","unknown","sessions","hasMore","nextCursor","updated","snapshotId","deletedCount","passthrough","protected","renamed","hash","generatedAt","owner","daemon","idleTimeoutMinutes","maxWorkspaces","maxClients","drainWindowMs","logLevel","crashLoopThreshold","updateBehavior","supervisor","mode","IssueSchema","fix","StartStatusOutput","ok","serviceRunning","bootProfile","tui","WorkspaceStatusOutput","initialized","loggedIn","user","email","syncEnabled","framework","packageManager","typescript","typescriptStrict","protection","count","violations","recent","snapshots","totalSize","intelligence","overallRisk","topDriver","snapshotFrequency","topologyWarning","fileCap","reachedAt","issues","JsonRpcClientError","Error","data","name","ConnectionTimeoutError","RequestTimeoutError","requestId","getDefaultSocketPath","platform","homeDir","homedir","vrekoPath","join","existsSync","IpcConnection","socket","buffer","listeners","socketPath","timeout","options","connect","Promise","resolve","reject","createConnection","timeoutId","settled","cleanup","__name","clearTimeout","setTimeout","destroy","unref","once","setupSocketHandlers","removeAllListeners","on","chunk","toString","processBuffer","hadError","undefined","emit","newlineIndex","indexOf","line","slice","trim","JSON","parse","send","request","destroyed","stringify","write","close","end","isConnected","handler","off","args","ReconnectManager","isReconnecting","abortController","maxAttempts","initialDelay","maxDelay","backoffMultiplier","start","connectFn","onAttempt","onFailed","AbortController","pRetryOptions","retries","factor","minTimeout","maxTimeout","randomize","signal","onFailedAttempt","attemptNumber","pRetry","reset","stop","abort","isActive","getCurrentAttempt","createContextMethods","call","get","params","validate","checkPatterns","createDaemonMethods","ping","shutdown","reload","createDetectionMethods","check","createHealthMethods","createIntelligenceMethods","capture","snapshot","createLearningMethods","add","search","list","prune","evaluate","updateSession","gc","seed","consolidate","createMCPMethods","snapshotCreated","fileModified","createMomentumMethods","refresh","sync","createProtectionMethods","levels","set","listDaemon","createSessionMethods","current","createSnapshotMethods","create","restore","diff","delete","createSupervisorMethods","register","heartbeat","systemHealth","createSyncMethods","force","queue","createValidationMethods","quick","comprehensive","createViolationMethods","createWatchMethods","subscribe","unsubscribe","fileChanged","createWorkspaceMethods","analyze","VrekoLocalClient","connection","reconnectManager","nextId","pending","Map","eventHandlers","initializeParams","health","detection","learning","validation","violation","momentum","watch","mcp","autoReconnect","maxReconnectAttempts","reconnectDelay","maxReconnectDelay","callFn","bind","setupConnectionHandlers","notification","method","response","result","setState","entries","clear","attemptReconnect","initialize","attempt","jsonrpc","catch","getState","getServicePidPath","getServiceSocketPath","process","env","VREKO_DAEMON_SOCKET","getReadyMarkerPath","cleanupStaleArtifacts","pidPath","readyPath","cleaned","unlinkSync","push","stderr","isServiceRunning","pid","Number","parseInt","readFileSync","isNaN","kill","isServiceHealthy","client","protocolVersion","clientInfo","version","capabilities","notifications","readServicePid","createServiceClient","connectServiceClient","pruneLearningsViaDaemon","workspaceRoot","String","gcLearningsViaDaemon","operation","dryRun","listLearningsViaDaemon","limit","searchLearningsViaDaemon","createSessionViaDaemon","createdAt","lastActivityAt","endSessionViaDaemon","getSessionStatusViaDaemon","formatDuration","ms","seconds","Math","floor","minutes","hours","days","formatBytes","bytes","units","unitIndex","toFixed","getLogPath","DAEMON_GENERATION","getDaemonVersion","generation"],"mappings":"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","file":"chunk-GSUGROXB.js","sourcesContent":["/**\n * Daemon Health Contracts\n *\n * Canonical health state schema for the daemon. The daemon is the single\n * source of truth for health state - extensions and CLI consumers MUST\n * import these types, never redefine them locally.\n *\n * Design principles (see ADR in .vreko-swarm/anti-patterns.md):\n * - Daemon declares health; clients consume (gRPC health.proto pattern)\n * - Liveness separate from readiness (Kubernetes probe pattern)\n * - Hysteresis prevents flapping (Schmitt trigger)\n * - Push-first, poll-fallback (gRPC Watch pattern)\n *\n * @module @vreko/contracts/local-service/schemas/health\n */\nimport { z } from \"zod\";\n// =============================================================================\n// Health State Enum\n// =============================================================================\n/**\n * Canonical daemon health states.\n *\n * - healthy: All subsystems operational\n * - degraded: Some subsystems impaired but core functionality available\n * - unhealthy: Critical subsystems down, cannot serve requests reliably\n * - unknown: State not yet determined (startup, reconnection)\n */\nexport const DaemonHealthState = z.enum([\"healthy\", \"degraded\", \"unhealthy\", \"unknown\"]);\n// =============================================================================\n// Subsystem Names\n// =============================================================================\n/**\n * Named subsystems tracked by the health authority.\n * Each reports independently; the authority aggregates into a single state.\n */\nexport const SubsystemName = z.enum([\"ipc\", \"mcp\", \"supervisor\", \"fileWatcher\", \"sessions\", \"sync\"]);\n// =============================================================================\n// Subsystem Status\n// =============================================================================\n/**\n * Individual subsystem health report.\n */\nexport const SubsystemStatus = z.object({\n /** Current health state of this subsystem */\n state: DaemonHealthState,\n /** Human-readable reason for current state (omitted when healthy) */\n reason: z.string().optional(),\n /** ISO8601 timestamp of last state transition */\n lastTransition: z.string().datetime().nullable(),\n});\n// =============================================================================\n// Daemon Health Report\n// =============================================================================\n/**\n * Complete health report returned by health/check.\n *\n * The `state` field is the aggregate - worst-of-all subsystems with\n * hysteresis applied (degraded requires 3 consecutive failures;\n * recovery requires 5 consecutive successes).\n */\nexport const DaemonHealthReport = z.object({\n /** Aggregate health state (worst of all subsystems, with hysteresis) */\n state: DaemonHealthState,\n /** Daemon uptime in milliseconds */\n uptime: z.number().nonnegative(),\n /** Per-subsystem health breakdown */\n subsystems: z.record(SubsystemName, SubsystemStatus),\n /** ISO8601 timestamp of last aggregate state transition */\n lastTransition: z.string().datetime().nullable(),\n /** Human-readable reason for degraded/unhealthy state */\n degradedReason: z.string().optional(),\n /** ISO8601 timestamp of this report */\n timestamp: z.string().datetime(),\n});\n// =============================================================================\n// Health Changed Notification\n// =============================================================================\n/**\n * Payload for $/health-changed push notification.\n * Sent by daemon whenever the aggregate health state transitions.\n */\nexport const HealthChangedNotification = z.object({\n /** Previous aggregate state */\n previousState: DaemonHealthState,\n /** New aggregate state */\n currentState: DaemonHealthState,\n /** Human-readable reason for the transition */\n reason: z.string(),\n /** Unix timestamp (ms) when the transition occurred */\n timestamp: z.number().nonnegative(),\n /** Full health report at time of transition */\n report: DaemonHealthReport,\n});\n// =============================================================================\n// Health Check Response V2 (Phase 18 - daemon lifecycle v2)\n// =============================================================================\n/**\n * Extended health check response with daemon resource state, lifecycle state,\n * and component breakdown. Introduced in Phase 18 alongside supervisor mode\n * detection and structured Sentry error taxonomy.\n */\nexport const HealthCheckResponseV2 = DaemonHealthReport.extend({\n // Daemon resource state\n memoryMb: z.number().nonnegative(),\n memoryLimitMb: z.number().positive(),\n ipcQueueDepth: z.number().nonnegative(),\n activeRequests: z.number().nonnegative(),\n // Lifecycle state\n lastCleanShutdown: z.boolean(),\n supervisorMode: z.enum([\"launchd\", \"systemd\", \"extension\", \"none\"]),\n // Component breakdown\n components: z.object({\n ipcServer: z.enum([\"ok\", \"degraded\"]),\n fileWatcher: z.enum([\"ok\", \"degraded\", \"unavailable\"]),\n syncService: z.enum([\"ok\", \"degraded\", \"disabled\"]),\n intelligenceService: z.enum([\"ok\", \"degraded\"]),\n }),\n});\n","/**\n * AI Config Intelligence Schemas\n *\n * Phase 6-A: AI Config Detection + Parsing\n *\n * @module @vreko/contracts/local-service/schemas/ai-config\n */\nimport { z } from \"zod\";\n// =============================================================================\n// AI Tool Types\n// =============================================================================\n/**\n * Supported AI coding tools\n */\nexport const AITool = z.enum([\n \"cursor\",\n \"claude-code\",\n \"copilot\",\n \"windsurf\",\n \"cline\",\n \"universal\", // AGENTS.md\n]);\n// =============================================================================\n// File Access Rules\n// =============================================================================\n/**\n * File access permission rule extracted from AI config\n */\nexport const FileAccessRule = z.object({\n pattern: z.string(), // glob pattern\n permission: z.enum([\"allow\", \"deny\", \"caution\"]),\n source: z.string(), // Which instruction line this came from\n});\n// =============================================================================\n// Parsed AI Config (Enhanced)\n// =============================================================================\n/**\n * Parsed AI configuration file with extracted intelligence\n */\nexport const ParsedAIConfig = z.object({\n // Identity\n tool: AITool,\n filePath: z.string(),\n fileName: z.string(),\n lastModifiedAt: z.number(),\n rawContent: z.string(), // Stored verbatim for change detection\n // Extracted intelligence\n protectedFiles: z.array(z.string()), // File patterns the tool was told to avoid\n focusedDomains: z.array(z.string()), // Areas tool was told to prioritize\n explicitInstructions: z.array(z.string()), // Extracted rule statements\n toolPermissions: z.array(z.string()), // Capabilities granted to agent\n workflowConstraints: z.array(z.string()), // Sequences or gates in the config\n fileAccessRules: z.array(FileAccessRule),\n behaviorRules: z.array(z.string()),\n // Computed\n vrekoInstructionsPresent: z.boolean(), // Does this file include Vreko guidance?\n vrekoSectionHash: z.string().nullable(), // Hash of Vreko-managed section\n});\n// =============================================================================\n// AI Config Conflicts (Enhanced)\n// =============================================================================\n/**\n * AI configuration conflict between tools\n */\nexport const AIConfigConflict = z.object({\n id: z.string(),\n conflictType: z.enum([\"file-access\", \"workflow\", \"behavior\", \"scope-overlap\", \"coverage-gap\"]),\n tools: z.array(AITool),\n files: z.array(z.string()), // Files affected by the conflict\n description: z.string(),\n severity: z.enum([\"info\", \"warn\", \"error\"]),\n recommendation: z.string(),\n detectedAt: z.number(),\n});\n// =============================================================================\n// Detection Targets\n// =============================================================================\n/**\n * AI config detection target definition\n */\nexport const AIConfigTarget = z.object({\n fileName: z.string().optional(),\n pattern: z.string().optional(),\n tool: AITool,\n priority: z.number().default(0),\n});\n/**\n * AI config file detection result (not to be confused with AIDetectionResult in entities.ts)\n */\nexport const AIConfigDetectionResult = z.object({\n filePath: z.string(),\n tool: AITool,\n exists: z.boolean(),\n lastModified: z.number().nullable(),\n});\n","// ESM imports fixed for Node.js v22+\n/**\n * Result Schemas for Daemon IPC Methods\n *\n * Zod schemas for validating daemon method return values.\n * These schemas document the actual return shapes from daemon services.\n *\n * Used by:\n * - MCP v2 tools for parsing daemon responses\n * - Protocol handler for result validation (optional, non-blocking)\n *\n * @module @vreko/contracts/local-service/schemas/results\n */\nimport { z } from \"zod\";\nimport { LearningApiSchema } from \"../../types/learning.js\";\n// =============================================================================\n// Session Result Schemas\n// =============================================================================\n/**\n * Session context from baseline enrichment\n */\nexport const SessionContextResult = z.object({\n /** Fragile files within scope of current task */\n fragileFilesInScope: z.array(z.object({\n path: z.string(),\n fragility: z.number(),\n reason: z.string().optional(),\n })),\n /** Co-change patterns within scope */\n coChangePatternsInScope: z.array(z.object({\n source: z.string(),\n target: z.string(),\n confidence: z.number(),\n })),\n /** Warning about concurrent sessions */\n concurrentSessionWarning: z\n .object({\n sessionId: z.string(),\n workspacePath: z.string(),\n touchedFiles: z.array(z.string()),\n })\n .nullable(),\n});\n/**\n * Session start result - returned by session/start\n */\nexport const SessionBeginResult = z.object({\n /** Session ID (primary identifier) */\n id: z.string(),\n /** Task ID (alias for extension compatibility) */\n taskId: z.string().optional(),\n /** Workspace path */\n workspacePath: z.string(),\n /** Session start timestamp (ISO string) */\n startedAt: z.string(),\n /** Current session state */\n state: z.enum([\"active\", \"ended\"]),\n /** Session metadata */\n metadata: z.object({\n task: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n aiToolsDetected: z.array(z.string()).optional(),\n highestRiskLevel: z.enum([\"low\", \"medium\", \"high\"]).optional(),\n }),\n /** Files touched in this session */\n touchedFiles: z.array(z.string()).optional(),\n /** Baseline context enrichment */\n context: SessionContextResult.nullable(),\n /** Learnings loaded for this session (from enrichment) */\n learnings: z\n .array(z.object({\n id: z.string().optional(),\n type: z.string().optional(),\n trigger: z.string(),\n action: z.string(),\n relevanceScore: z.number().optional(),\n }))\n .optional(),\n});\n/**\n * Session end-daemon result - returned by session/end-daemon\n */\nexport const SessionEndDaemonResult = z.object({\n /** Whether the session was ended successfully */\n success: z.boolean(),\n /** Session ID that was ended */\n sessionId: z.string().optional(),\n /** Coherence score (0-1) */\n coherenceScore: z.number().min(0).max(1).optional(),\n /** Session duration in milliseconds */\n duration: z.number().optional(),\n /** Number of files modified */\n filesModified: z.number().optional(),\n /** Number of learnings captured */\n learningsCaptured: z.number().optional(),\n /** Number of snapshots created */\n snapshotsCreated: z.number().optional(),\n});\n/**\n * Session review result - returned by session/review (ceremony data)\n *\n * March 18 spec: Now includes full CeremonyPayload structure for\n * extension surfaces compatibility.\n */\nexport const SessionSummarySchema = z.object({\n sessionId: z.string(),\n workspace: z.string(),\n startedAt: z.number(),\n endedAt: z.number().nullable(),\n duration: z.number(),\n filesModified: z.number(),\n snapshotsCreated: z.number(),\n restoresTriggered: z.number(),\n aiEditsDetected: z.number(),\n protectionLevel: z.enum([\"standard\", \"heightened\", \"maximum\"]),\n});\nexport const SessionPatternSchema = z.object({\n type: z.enum([\"co-change\", \"fragile-file\", \"temporal\", \"behavioral\"]),\n description: z.string(),\n confidence: z.number().min(0).max(1),\n filesInvolved: z.array(z.string()),\n promotedToHot: z.boolean(),\n});\nexport const SessionLearningsSchema = z.object({\n patterns: z.array(SessionPatternSchema),\n totalNew: z.number(),\n totalPromoted: z.number(),\n totalPruned: z.number(),\n});\nexport const PitfallWarningSchema = z.object({\n trigger: z.string(),\n risk: z.string(),\n outcome: z.enum([\"heeded\", \"dismissed\", \"auto-resolved\"]),\n filesInvolved: z.array(z.string()),\n timestamp: z.number(),\n});\nexport const PitfallsAvoidedSchema = z.object({\n warnings: z.array(PitfallWarningSchema),\n estimatedTimeSaved: z.number(),\n});\nexport const IntelligenceMetricsSchema = z.object({\n tokenSavingsEstimate: z.number(),\n coherenceScore: z.number().min(0).max(100),\n contextReusageRate: z.number().min(0).max(1),\n intelligenceEventsTotal: z.number(),\n});\nexport const TimelineEventSchema = z.object({\n timestamp: z.number(),\n type: z.enum([\n \"session-start\",\n \"session-end\",\n \"snapshot-created\",\n \"snapshot-restored\",\n \"learning-added\",\n \"learning-promoted\",\n \"warning-fired\",\n \"ai-edit-detected\",\n \"protection-changed\",\n \"fragile-detected\",\n \"risk-spike\",\n ]),\n summary: z.string(),\n detail: z.string().optional(),\n filesInvolved: z.array(z.string()).optional(),\n severity: z.enum([\"info\", \"warning\", \"critical\"]).optional(),\n});\n/**\n * Full ceremony payload matching March 18 spec.\n * This is the canonical structure for closing ceremony data.\n *\n * Validation rules (superRefine):\n * - Timeline events must be within session duration\n * - Metrics.coherenceScore should align with filesModified count\n * - learnings.totalNew + totalPromoted should match patterns count\n */\nexport const CeremonyPayloadSchema = z\n .object({\n summary: SessionSummarySchema,\n learnings: SessionLearningsSchema,\n pitfalls: PitfallsAvoidedSchema,\n metrics: IntelligenceMetricsSchema,\n timeline: z.array(TimelineEventSchema),\n})\n .superRefine((payload, ctx) => {\n // Validate timeline events are within session bounds\n const sessionStart = payload.summary.startedAt;\n const sessionEnd = payload.summary.endedAt ?? Date.now();\n for (const event of payload.timeline) {\n if (event.timestamp < sessionStart) {\n ctx.addIssue({\n code: \"custom\",\n message: `Timeline event ${event.type} has timestamp before session start`,\n path: [\"timeline\"],\n });\n }\n if (event.timestamp > sessionEnd) {\n ctx.addIssue({\n code: \"custom\",\n message: `Timeline event ${event.type} has timestamp after session end`,\n path: [\"timeline\"],\n });\n }\n }\n // Validate learning counts are consistent\n const patternCount = payload.learnings.patterns.length;\n const totalLearnings = payload.learnings.totalNew + payload.learnings.totalPromoted;\n if (patternCount > 0 && totalLearnings === 0) {\n ctx.addIssue({\n code: \"custom\",\n message: \"Learnings has patterns but totalNew + totalPromoted is 0\",\n path: [\"learnings\"],\n });\n }\n // Validate metrics coherence\n if (payload.metrics.coherenceScore > 100) {\n ctx.addIssue({\n code: \"custom\",\n message: \"coherenceScore must be between 0-100\",\n path: [\"metrics\", \"coherenceScore\"],\n });\n }\n // Cross-validate: if many files modified but low intelligence events, flag\n if (payload.summary.filesModified > 10 && payload.metrics.intelligenceEventsTotal < 5) {\n ctx.addIssue({\n code: \"custom\",\n message: \"High file modification count with low intelligence events - possible under-instrumentation\",\n path: [\"metrics\"],\n });\n }\n});\n// =============================================================================\n// Coherence Score - Discriminated Union for Type-Safe Scoring\n// =============================================================================\n/**\n * Coherence score discriminator types for type-safe pattern matching.\n * Using discriminated union enables exhaustive checking with ts-pattern.\n */\nexport const CoherenceScoreSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"numeric\"),\n value: z.number().min(0).max(1),\n }),\n z.object({\n type: z.literal(\"categorical\"),\n level: z.enum([\"high\", \"medium\", \"low\", \"scattered\"]),\n /** Optional numeric approximation for analytics */\n approximateValue: z.number().min(0).max(1).optional(),\n }),\n]);\n/**\n * Helper to create categorical coherence score with approximate value\n */\nexport function createCategoricalCoherence(level) {\n const approximateValues = {\n high: 0.85,\n medium: 0.6,\n low: 0.35,\n scattered: 0.15,\n };\n return {\n type: \"categorical\",\n level,\n approximateValue: approximateValues[level],\n };\n}\n/**\n * Helper to create numeric coherence score\n */\nexport function createNumericCoherence(value) {\n return { type: \"numeric\", value };\n}\n/**\n * Session review result - returned by session/review (ceremony data)\n * Legacy format for backward compatibility.\n */\nexport const SessionReviewResult = z.object({\n /** Session ID */\n sessionId: z.string(),\n /** Files modified during session */\n filesModified: z.number(),\n /** Snapshots created during session */\n snapshotsCreated: z.number(),\n /** Learnings captured during session */\n learningsCaptured: z.number(),\n /** Pitfalls avoided (proactive warnings heeded) */\n pitfallsAvoided: z.number().optional(),\n /** Estimated token savings */\n tokensSaved: z.number().optional(),\n /** Coherence score - discriminated union for type-safe handling */\n coherenceScore: CoherenceScoreSchema.optional(),\n /** Key insights from the session */\n insights: z.array(z.string()).optional(),\n /** Items to carry forward to next session */\n carryForward: z.array(z.string()).optional(),\n /** Commit message suggestion */\n commitMessage: z.string().optional(),\n /** Full ceremony payload (March 18 spec) */\n ceremony: CeremonyPayloadSchema.optional(),\n /** Top learnings from ceremony */\n topLearnings: z\n .array(z.object({\n content: z.string(),\n captureMethod: z.string(),\n confidence: z.number(),\n }))\n .optional(),\n /** Duration in ms */\n duration: z.number().optional(),\n});\n/**\n * Session current result - returned by session/current\n */\nexport const SessionCurrentResult = z.object({\n /** Whether there's an active session */\n active: z.boolean(),\n /** Current session ID if active */\n id: z.string().optional(),\n /** Task ID if active */\n taskId: z.string().optional(),\n /** Task description */\n task: z.string().optional(),\n /** Session start timestamp */\n startedAt: z.string().optional(),\n /** Files modified count */\n filesModified: z.number().optional(),\n /** Snapshot count */\n snapshotCount: z.number().optional(),\n});\n// =============================================================================\n// Learning Result Schemas\n// =============================================================================\n/**\n * Learning add result - returned by learning/add\n */\nexport const LearningAddResult = z.object({\n /** Whether the learning was added successfully */\n success: z.boolean(),\n /** Learning ID */\n id: z.string(),\n /** Tier assigned (hot, warm, cold) */\n tier: z.enum([\"hot\", \"warm\", \"cold\"]),\n /** Whether this is a new learning vs update */\n isNew: z.boolean().optional(),\n});\n/**\n * Learning search result entry\n */\nexport const LearningSearchEntry = z.object({\n /** Learning ID */\n id: z.string(),\n /** Learning type */\n type: z.string().optional(),\n /** Trigger condition */\n trigger: z.string(),\n /** Action to take */\n action: z.string(),\n /** Relevance score (0-1) */\n relevanceScore: z.number().min(0).max(1).optional(),\n /** Source of the learning */\n source: z.string().optional(),\n /** Tier of the learning */\n tier: z.enum([\"hot\", \"warm\", \"cold\"]).optional(),\n});\n/**\n * Learning search result - returned by learning/search\n */\nexport const LearningSearchResult = z.object({\n /** Search results */\n results: z.array(LearningSearchEntry),\n /** Total matching learnings */\n total: z.number().optional(),\n /** Query that was searched */\n query: z.string().optional(),\n});\n// =============================================================================\n// Context Result Schemas\n// =============================================================================\n/**\n * Fragile file entry in context/get result\n */\nexport const FragileFileEntry = z.object({\n /** File path */\n path: z.string(),\n /** Fragility score (0-1) */\n fragility: z.number().min(0).max(1),\n /** Reason for fragility */\n reason: z.string().optional(),\n});\n/**\n * Co-change pattern entry in context/get result\n */\nexport const CoChangeEntry = z.object({\n /** Source file */\n source: z.string(),\n /** Target file (changes when source changes) */\n target: z.string(),\n /** Confidence score (0-1) */\n confidence: z.number().min(0).max(1),\n});\n/**\n * Context get result - returned by context/get\n *\n * Phase 2: Now includes proper API types with LearningApiSchema.\n * The `learnings` field contains elevated, deduplicated learnings.\n */\nexport const ContextGetResult = z.object({\n /** Elevated, deduplicated learnings (LearningApi format) */\n learnings: z.array(LearningApiSchema),\n /** Fragile files in scope */\n fragileFiles: z.array(FragileFileEntry).optional(),\n /** Co-change patterns */\n coChanges: z.array(CoChangeEntry).optional(),\n /** Files that were queried */\n files: z.array(z.string()),\n /** Compiled wire format context (for LLM consumption) */\n compiled: z.string(),\n /** Token estimate for compiled context */\n compiledTokens: z.number(),\n /** Estimated tokens saved vs natural language */\n tokensSaved: z.number(),\n /** Metadata about what's included */\n metadata: z\n .object({\n /** Number of learnings included */\n learningCount: z.number().optional(),\n /** Number of fragile files included */\n fragileFileCount: z.number().optional(),\n /** Number of co-change patterns included */\n coChangePatternCount: z.number().optional(),\n /** Estimated token count */\n tokenCount: z.number().optional(),\n /** Whether context was loaded from cache */\n fromCache: z.boolean().optional(),\n })\n .optional(),\n});\n// =============================================================================\n// Risk Assessment Result Schemas\n// =============================================================================\n/**\n * Risk assessment result - returned by risk/assess\n *\n * Composite of all 6 intelligence pillars.\n */\nexport const RiskAssessResult = z.object({\n /** Composite risk score */\n score: z.number(),\n /** Action recommendation */\n action: z.enum([\"PROCEED\", \"PROCEED_WITH_SNAPSHOT\", \"WARN\", \"BLOCK\"]),\n /** Risk level classification */\n level: z.enum([\"L\", \"M\", \"H\"]),\n /** Contributing factors from all pillars */\n factors: z.array(z.object({\n source: z.string(),\n score: z.number(),\n description: z.string(),\n })),\n /** Git risk pillar data */\n gitRisk: z\n .object({\n multiplier: z.number(),\n uncommittedChanges: z.boolean().optional(),\n detachedHead: z.boolean().optional(),\n onMainBranch: z.boolean().optional(),\n })\n .optional(),\n /** Fatigue pillar data */\n fatigue: z\n .object({\n level: z.enum([\"rested\", \"normal\", \"elevated\", \"fatigued\"]),\n riskBoost: z.number(),\n })\n .optional(),\n /** Rollback warning from pillar 2 */\n rollbackWarning: z\n .object({\n confidence: z.number(),\n message: z.string(),\n riskBoost: z.number(),\n })\n .optional(),\n /** Poisoning detection from pillar 5 */\n poisoning: z\n .object({\n detected: z.boolean(),\n files: z.array(z.string()).optional(),\n riskBoost: z.number().optional(),\n })\n .optional(),\n /** Per-file risk breakdown */\n fileRisks: z\n .record(z.string(), z.object({\n fragility: z.number(),\n rollbackCount: z.number().optional(),\n reason: z.string().optional(),\n }))\n .optional(),\n /** Co-change alerts */\n coChanges: z\n .array(z.object({\n source: z.string(),\n target: z.string(),\n confidence: z.number(),\n }))\n .optional(),\n});\n// =============================================================================\n// Pulse / LLM Hint Schemas (ext_ambient/AMBIENT-01)\n// =============================================================================\n/**\n * LLM hint string - deterministic advisory prose composed by the MCP pulse tool.\n *\n * Consumed by:\n * - `vreko_pulse` MCP response (top-level `llmHint` field on ToolResult)\n * - `vreko pulse` CLI command (AMBIENT-02)\n * - Claude Code PreToolUse hook (AMBIENT-06, `jq -r '.llmHint // empty'`)\n *\n * Constraints:\n * - Always starts with \"You are in <workspace>\" or a known edge-case sentinel\n * (\"No active session...\", \"Session open, no files tracked yet...\", \"Pulse unavailable...\").\n * - Never exceeds 400 word-tokens (tiktoken proxy via space-split).\n * - Composition is deterministic - no LLM generation. See\n * `.vreko-swarm/specs/ext_ambient/03-vreko-pulse-llm-hint-spec.md`.\n */\nexport const LlmHintSchema = z\n .string()\n .describe(\"LLM hint for vreko_pulse - deterministic advisory prose, ≤400 word-tokens\");\n// CoherenceScore type is already exported above at line 218\n// =============================================================================\n// Intelligence Namespace Result Schemas (VALID-01)\n// These schemas define the IPC response contracts for intelligence/* methods.\n// =============================================================================\n/**\n * Response schema for intelligence/fragile-files.\n * Contract: { files: FragileFileEntry[], total: number }\n */\nexport const IntelligenceFragileFilesResult = z.object({\n /** Array of fragile file entries in contract shape */\n files: z.array(FragileFileEntry),\n /** Total count of files returned */\n total: z.number().int().nonnegative(),\n});\n// =============================================================================\n// Intelligence Namespace Result Schemas — Batch A (VALID-03)\n// =============================================================================\n/**\n * Response schema for intelligence/co-changes.\n */\nexport const IntelligenceCoChangesResult = z.object({\n items: z.array(z.object({\n fileA: z.string(),\n fileB: z.string(),\n frequency: z.number(),\n occurrences: z.number(),\n relationship: z.string(),\n reason: z.string(),\n lastObserved: z.string(), // ISO date string\n })),\n total: z.number().int().nonnegative(),\n});\n/**\n * Response schema for intelligence/summary.\n */\nexport const IntelligenceSummaryResult = z.object({\n learningsCount: z.number().int().nonnegative(),\n patternsCount: z.number().int().nonnegative(),\n fragileFilesCount: z.number().int().nonnegative(),\n coChangePatternsCount: z.number().int().nonnegative(),\n totalSessions: z.number().int().nonnegative(),\n linesAnalyzed: z.number().int().nonnegative(),\n totalSnapshots: z.number().int().nonnegative(),\n totalRestores: z.number().int().nonnegative(),\n snapshotsToday: z.number().int().nonnegative(),\n snapshotsThisWeek: z.number().int().nonnegative(),\n linesAnalyzedToday: z.number().int().nonnegative(),\n restoresThisWeek: z.number().int().nonnegative(),\n patternsThisWeek: z.number().int().nonnegative(),\n healthScore: z.number(),\n healthTrajectory: z.string(),\n risksPrevented: z.number().int().nonnegative(),\n risksPreventedContext: z.string().optional(),\n accuracy: z.number(),\n coherencePercent: z.number().int(),\n preventedToRecoveredRatio: z.number(),\n});\n/**\n * Response schema for intelligence/warnings.\n */\nexport const IntelligenceWarningsResult = z.object({\n warnings: z.array(z.object({\n code: z.string(),\n level: z.enum([\"info\", \"warning\", \"error\"]),\n message: z.string(),\n file: z.string().optional(),\n suggestion: z.string().optional(),\n })),\n total: z.number().int().nonnegative(),\n});\n/**\n * Response schema for intelligence/health.\n */\nexport const IntelligenceHealthResult = z.object({\n score: z.number().int().min(0).max(100),\n status: z.enum([\"healthy\", \"warning\", \"critical\"]),\n accuracy: z.number(),\n metrics: z.object({\n vitals: z\n .object({\n trajectory: z.string(),\n pressure: z.number(),\n pulse: z.string(),\n })\n .nullable(),\n session: z\n .object({\n duration: z.number(),\n totalToolCalls: z.number().int(),\n filesTouched: z.number().int(),\n })\n .nullable(),\n }),\n});\n/**\n * Response schema for intelligence/recurrence-candidates.\n */\nexport const IntelligenceRecurrenceCandidatesResult = z.object({\n candidates: z.array(z.object({\n file: z.string(),\n window: z.string(),\n confidence: z.number(),\n surfaceable: z.boolean(),\n wording: z.string(),\n coChangePartners: z.array(z.string()),\n kind: z.string(),\n })),\n total: z.number().int().nonnegative(),\n});\n/**\n * Response schema for intelligence/capture.\n * Returns either a success or error shape (discriminated on captured boolean).\n */\nexport const IntelligenceCaptureResult = z.union([\n z.object({\n captured: z.literal(true),\n domain: z.string(),\n type: z.string(),\n outcome: z.string().optional(),\n risksPreventedContext: z.string().optional(),\n }),\n z.object({\n captured: z.literal(false),\n error: z.string(),\n }),\n]);\n/**\n * Response schema for intelligence/outcome.\n * Returns success shape.\n */\nexport const IntelligenceOutcomeResult = z.object({\n recorded: z.boolean(),\n patternId: z.string().optional(),\n outcome: z.string().optional(),\n notes: z.string().optional(),\n revertedWithin5Min: z.boolean().optional(),\n accuracyImpact: z.string().optional(),\n});\n/**\n * Response schema for intelligence/indexPatterns.\n * Returns stub (empty patterns).\n */\nexport const IntelligenceIndexPatternsResult = z.object({\n patterns: z.array(z.unknown()),\n total: z.number().int().nonnegative(),\n});\n// =============================================================================\n// Session Namespace Result Schemas — Batch B (VALID-03)\n// =============================================================================\n/**\n * Response schema for session/end.\n */\nexport const SessionEndResult = z.object({\n success: z.boolean(),\n});\n/**\n * Response schema for session/list.\n * Returns sessions array with pagination flag.\n */\nexport const SessionListResult = z.object({\n sessions: z.array(z.unknown()), // SessionType shape varies; z.unknown() permits all valid sessions\n hasMore: z.boolean(),\n});\n/**\n * Response schema for session/status.\n */\nexport const SessionStatusResult = z.unknown();\n/**\n * Response schema for session/list-ceremonies.\n */\nexport const SessionListCeremoniesResult = z.object({\n sessions: z.array(z.unknown()),\n hasMore: z.boolean().optional(),\n nextCursor: z.string().optional(),\n});\n/**\n * Response schema for session/changes.\n */\nexport const SessionChangesResult = z.unknown();\n/**\n * Response schema for session/update-task.\n */\nexport const SessionUpdateTaskResult = z.object({\n updated: z.boolean(),\n});\n// =============================================================================\n// Snapshot Namespace Result Schemas — Batch C (VALID-03)\n// Note: Many snapshot operations return complex schemas. Where the return shape\n// is complex or service-specific, z.unknown() is used as a structural passthrough.\n// These can be tightened in a follow-up as the service contracts are formalized.\n// =============================================================================\n/**\n * Response schema for snapshot/create.\n * Returns snapshot metadata or error — complex shape, passthrough.\n */\nexport const SnapshotCreateResult = z.unknown();\n/**\n * Response schema for snapshot/get.\n * Returns snapshot entity — complex shape, passthrough.\n */\nexport const SnapshotGetResult = z.unknown();\n/**\n * Response schema for snapshot/list.\n * Returns array of snapshots — complex shape, passthrough.\n */\nexport const SnapshotListResult = z.unknown();\n/**\n * Response schema for snapshot/restore.\n * Returns restore result — complex shape, passthrough.\n */\nexport const SnapshotRestoreResult = z.unknown();\n/**\n * Response schema for snapshot/diff.\n * Returns diff result — complex shape, passthrough.\n */\nexport const SnapshotDiffResult = z.unknown();\n/**\n * Response schema for snapshot/delete.\n */\nexport const SnapshotDeleteResult = z.object({\n success: z.boolean(),\n snapshotId: z.string().optional(),\n});\n/**\n * Response schema for snapshot/create-daemon.\n * Returns daemon-style snapshot metadata — passthrough.\n */\nexport const SnapshotCreateDaemonResult = z.unknown();\n/**\n * Response schema for snapshot/bulk-delete.\n */\nexport const SnapshotBulkDeleteResult = z\n .object({\n deletedCount: z.number().int().nonnegative().optional(),\n success: z.boolean().optional(),\n})\n .passthrough();\n/**\n * Response schema for snapshot/protect.\n */\nexport const SnapshotProtectResult = z\n .object({\n protected: z.boolean().optional(),\n success: z.boolean().optional(),\n})\n .passthrough();\n/**\n * Response schema for snapshot/unprotect.\n */\nexport const SnapshotUnprotectResult = z\n .object({\n protected: z.boolean().optional(),\n success: z.boolean().optional(),\n})\n .passthrough();\n/**\n * Response schema for snapshot/rename.\n */\nexport const SnapshotRenameResult = z\n .object({\n renamed: z.boolean().optional(),\n success: z.boolean().optional(),\n})\n .passthrough();\n","/**\n * Artifact File Schema (ext_ambient/AMBIENT-03)\n *\n * Generic envelope for any markdown/text artifact the daemon writes under\n * `.vreko/docs/` (and eventually elsewhere). The `owner` discriminator\n * lets consumers tell daemon-generated files apart from user-authored\n * additions so no write path overwrites hand-edited content.\n *\n * Consumed by:\n * - `DocsEmitter` projector (writes markdown under .vreko/docs/)\n * - `PointerService` (AMBIENT-04 - materializes pointer references)\n *\n * @module @vreko/contracts/local-service/artifact\n */\nimport { z } from \"zod\";\nexport const ArtifactFileSchema = z.object({\n /** Absolute path to the file on disk. */\n path: z.string(),\n /** Serialized artifact content (markdown/text). */\n content: z.string(),\n /** SHA-256 of `content` - used for skip-if-unchanged checks. */\n hash: z.string(),\n /** Milliseconds since epoch when the artifact was generated. */\n generatedAt: z.number(),\n /**\n * Who owns this file. `vreko` = daemon may overwrite; `user` = hands off.\n * DocsEmitter only writes files it owns; any path a user has taken over\n * (tracked via a separate manifest in future phases) must be skipped.\n */\n owner: z.enum([\"vreko\", \"user\"]),\n});\n","import { z } from \"zod\";\nexport const DaemonConfig = z.object({\n daemon: z\n .object({\n memoryLimitMb: z.number().positive().default(512),\n idleTimeoutMinutes: z.number().positive().default(15),\n maxWorkspaces: z.number().positive().default(50),\n maxClients: z.number().positive().int().default(10),\n drainWindowMs: z.number().positive().default(15000),\n logLevel: z.enum([\"debug\", \"info\", \"warn\", \"error\"]).default(\"info\"),\n crashLoopThreshold: z.number().positive().int().default(3),\n updateBehavior: z.enum([\"auto\", \"prompt\", \"never\"]).default(\"auto\"),\n })\n .default({}),\n supervisor: z\n .object({\n mode: z.enum([\"auto\", \"extension\", \"os\"]).default(\"auto\"),\n })\n .default({}),\n});\n","/**\n * CLI JSON Output Schemas\n *\n * Zod schemas for JSON output shapes emitted by CLI commands.\n * These are the canonical contracts for machine-readable CLI output.\n * CLI commands use .parse() before JSON.stringify to enforce the shape.\n *\n * @module @vreko/contracts/local-service/schemas/cli-output\n */\nimport { z } from \"zod\";\nconst IssueSchema = z.object({\n id: z.string(),\n severity: z.enum([\"warning\", \"error\"]),\n description: z.string(),\n fix: z.string().optional(),\n});\n/**\n * StartStatusOutput - canonical shape for `vr start --json` output.\n * Both success and error paths must produce an object matching this schema\n * so machine consumers (scripts, CI, agent integrations) get a stable envelope.\n */\nexport const StartStatusOutput = z.discriminatedUnion(\"ok\", [\n z.object({\n ok: z.literal(true),\n serviceRunning: z.boolean(),\n bootProfile: z.string(),\n tui: z.boolean(),\n }),\n z.object({\n ok: z.literal(false),\n error: z.string(),\n }),\n]);\nexport const WorkspaceStatusOutput = z.object({\n initialized: z.boolean(),\n loggedIn: z.boolean(),\n user: z\n .object({\n email: z.string(),\n tier: z.enum([\"free\", \"pro\"]),\n })\n .optional(),\n workspace: z\n .object({\n id: z.string().optional(),\n tier: z.string().optional(),\n syncEnabled: z.boolean().optional(),\n })\n .optional(),\n vitals: z\n .object({\n framework: z.string().optional(),\n packageManager: z.string().optional(),\n typescript: z.boolean().optional(),\n typescriptStrict: z.boolean().optional(),\n })\n .optional(),\n session: z\n .object({\n id: z.string(),\n task: z.string().optional(),\n startedAt: z.string(),\n snapshotCount: z.number(),\n })\n .optional(),\n protection: z.object({\n count: z.number(),\n patterns: z.array(z.string()),\n }),\n violations: z.object({\n total: z.number(),\n recent: z.number(),\n }),\n snapshots: z.object({\n count: z.number(),\n totalSize: z.string(),\n }),\n intelligence: z\n .object({\n overallRisk: z.string(),\n confidence: z.number(),\n topDriver: z.string(),\n snapshotFrequency: z.string(),\n })\n .optional(),\n topologyWarning: z\n .object({\n fileCap: z.number(),\n reachedAt: z.string(),\n workspacePath: z.string(),\n })\n .optional(),\n issues: z.array(IssueSchema),\n});\n","/**\n * Type re-exports from @vreko/contracts for convenience\n *\n * @module @vreko/local-service-client/types\n */\n\n// Import types for local use\nimport type { ErrorData } from \"@vreko/contracts/local-service\";\n\n// Re-export all protocol types and interfaces\n// Re-export all entity types (using the TypeScript type exports with \"Type\" suffix)\n// Re-export all request parameter types\nexport type {\n\tAnalyzeGroupingParamsType,\n\tAnalyzeRiskParamsType,\n\tDetectionCheckParamsType,\n\tDetectionSignalType as DetectionSignal,\n\tErrorData,\n\tHealthCheckParamsType,\n\tInitializeParamsType,\n\tJsonRpcError,\n\tJsonRpcErrorResponse,\n\tJsonRpcNotification,\n\tJsonRpcRequest,\n\tJsonRpcResponse,\n\tLocalServiceMethod,\n\tProtectionDecisionType as ProtectionDecision,\n\tProtectionEvaluateParamsType,\n\tProtectionFactorType as ProtectionFactor,\n\tProtectionLevelsParamsType,\n\tProtectionLevelType as ProtectionLevel,\n\tProtectionSetParamsType,\n\tProtocolVersionType,\n\tRiskFactorType as RiskFactor,\n\tRiskLevelType as RiskLevel,\n\tSessionCurrentParamsType,\n\tSessionEndParamsType,\n\tSessionListParamsType,\n\tSessionStartParamsType,\n\tSessionStateType as SessionState,\n\tSessionType as Session,\n\tSnapshotCreateParamsType,\n\tSnapshotDeleteParamsType,\n\tSnapshotDiffParamsType,\n\tSnapshotGetParamsType,\n\tSnapshotListParamsType,\n\tSnapshotRestoreParamsType,\n\tSnapshotTriggerType as SnapshotTrigger,\n\tSnapshotType as Snapshot,\n\tSyncTriggerParamsType,\n\tTierType as Tier,\n} from \"@vreko/contracts/local-service\";\nexport {\n\tERROR_MESSAGES,\n\tPROTOCOL_VERSION,\n\tProtocolErrorCode,\n} from \"@vreko/contracts/local-service\";\n\n/**\n * Client configuration options\n */\nexport interface ClientOptions {\n\t/**\n\t * Socket path (Unix) or pipe name (Windows)\n\t * Defaults to platform-specific path\n\t */\n\tsocketPath?: string;\n\n\t/**\n\t * Default request timeout in milliseconds\n\t * @default 30000\n\t */\n\ttimeout?: number;\n\n\t/**\n\t * Enable auto-reconnect on connection loss\n\t * @default true\n\t */\n\tautoReconnect?: boolean;\n\n\t/**\n\t * Maximum reconnection attempts\n\t * @default 5\n\t */\n\tmaxReconnectAttempts?: number;\n\n\t/**\n\t * Initial reconnect delay in milliseconds\n\t * @default 1000\n\t */\n\treconnectDelay?: number;\n\n\t/**\n\t * Maximum reconnect delay in milliseconds (for exponential backoff)\n\t * @default 30000\n\t */\n\tmaxReconnectDelay?: number;\n}\n\n/**\n * Client connection state\n */\nexport type ConnectionState = \"disconnected\" | \"connecting\" | \"connected\" | \"reconnecting\" | \"closed\";\n\n/**\n * Client events\n */\nexport interface ClientEvents {\n\t/** Emitted when connection state changes */\n\tstateChange: (state: ConnectionState) => void;\n\t/** Emitted when connection is established */\n\tconnected: () => void;\n\t/** Emitted when connection is lost */\n\tdisconnected: (error?: Error) => void;\n\t/** Emitted when reconnecting */\n\treconnecting: (attempt: number, maxAttempts: number) => void;\n\t/** Emitted when max reconnect attempts reached */\n\treconnectFailed: () => void;\n\t/** Emitted when server sends a notification */\n\tnotification: (method: string, params: unknown) => void;\n\t/** Emitted on errors */\n\terror: (error: Error) => void;\n}\n\n/**\n * JSON-RPC error class\n */\nexport class JsonRpcClientError extends Error {\n\tpublic readonly code: number;\n\tpublic readonly data?: ErrorData;\n\n\tconstructor(message: string, code: number, data?: ErrorData) {\n\t\tsuper(message);\n\t\tthis.name = \"JsonRpcClientError\";\n\t\tthis.code = code;\n\t\tthis.data = data;\n\t}\n}\n\n/**\n * Connection timeout error\n */\nexport class ConnectionTimeoutError extends Error {\n\tconstructor(message = \"Connection timeout\") {\n\t\tsuper(message);\n\t\tthis.name = \"ConnectionTimeoutError\";\n\t}\n}\n\n/**\n * Request timeout error\n */\nexport class RequestTimeoutError extends Error {\n\tconstructor(\n\t\tmessage = \"Request timeout\",\n\t\tpublic requestId?: string | number,\n\t) {\n\t\tsuper(message);\n\t\tthis.name = \"RequestTimeoutError\";\n\t}\n}\n","/**\n * IPC connection implementation using Unix sockets / named pipes\n *\n * Memory Leak Fixes (SB-190):\n * - setupSocketHandlers() now removes old listeners before adding new ones\n * - connect() destroys socket on error to prevent orphaned handles\n * - connect() uses settled flag to prevent timeout/success race\n * - send() captures socket reference to prevent TOCTOU\n * - close() removes all listeners and destroys socket\n * - Buffer is reset on error to prevent corruption\n *\n * @module @vreko/local-service-client/connection/ipc\n */\n\nimport { existsSync } from \"node:fs\";\nimport * as net from \"node:net\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport type { JsonRpcErrorResponse, JsonRpcNotification, JsonRpcRequest, JsonRpcResponse } from \"../types.js\";\nimport { ConnectionTimeoutError } from \"../types.js\";\n\nexport const SOCKET_FILENAME = \"service.sock\";\n\n/**\n * Get platform-specific socket path\n */\nexport function getDefaultSocketPath(): string {\n\tconst platform = os.platform();\n\n\tif (platform === \"win32\") {\n\t\t// Windows named pipe\n\t\treturn \"\\\\\\\\.\\\\pipe\\\\vreko-service\";\n\t}\n\n\t// Unix socket (macOS/Linux) - check .vreko first, fall back to .vreko for 90-day compat\n\tconst homeDir = os.homedir();\n\tconst vrekoPath = path.join(homeDir, \".vreko\", \"service.sock\");\n\tif (existsSync(vrekoPath)) {\n\t\treturn vrekoPath;\n\t}\n\treturn path.join(homeDir, \".vreko\", \"service.sock\");\n}\n\n/**\n * IPC connection options\n */\nexport interface IpcConnectionOptions {\n\t/** Socket path (Unix) or pipe name (Windows) */\n\tsocketPath?: string;\n\t/** Connection timeout in ms */\n\ttimeout?: number;\n}\n\n/**\n * IPC connection events\n */\nexport interface IpcConnectionEvents {\n\t/** Emitted when message is received */\n\tmessage: (data: JsonRpcResponse | JsonRpcErrorResponse | JsonRpcNotification) => void;\n\t/** Emitted when connection is closed */\n\tclose: (error?: Error) => void;\n\t/** Emitted on errors */\n\terror: (error: Error) => void;\n}\n\n/**\n * IPC connection using Unix sockets or named pipes\n */\nexport class IpcConnection {\n\tprivate socket: net.Socket | null = null;\n\tprivate buffer = \"\";\n\tprivate listeners: Partial<IpcConnectionEvents> = {};\n\tprivate readonly socketPath: string;\n\tprivate readonly timeout: number;\n\n\tconstructor(options: IpcConnectionOptions = {}) {\n\t\tthis.socketPath = options.socketPath ?? getDefaultSocketPath();\n\t\tthis.timeout = options.timeout ?? 5000;\n\t}\n\n\t/**\n\t * Connect to the IPC socket\n\t *\n\t * Fixed race conditions:\n\t * - Uses settled flag to prevent timeout firing after successful connect\n\t * - Destroys socket on error to prevent orphaned handles\n\t * - Cleanup function ensures timeout is always cleared\n\t */\n\tasync connect(): Promise<void> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst socket = net.createConnection({ path: this.socketPath });\n\t\t\tlet timeoutId: NodeJS.Timeout | null = null;\n\t\t\tlet settled = false;\n\n\t\t\tconst cleanup = () => {\n\t\t\t\tif (timeoutId) {\n\t\t\t\t\tclearTimeout(timeoutId);\n\t\t\t\t\ttimeoutId = null;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\t// Set up timeout\n\t\t\tif (this.timeout > 0) {\n\t\t\t\ttimeoutId = setTimeout(() => {\n\t\t\t\t\tif (settled) {\n\t\t\t\t\t\treturn; // Already connected or errored\n\t\t\t\t\t}\n\t\t\t\t\tsettled = true;\n\t\t\t\t\tcleanup();\n\t\t\t\t\tsocket.destroy();\n\t\t\t\t\treject(new ConnectionTimeoutError(`Connection timeout after ${this.timeout}ms`));\n\t\t\t\t}, this.timeout);\n\t\t\t\ttimeoutId.unref();\n\t\t\t}\n\n\t\t\tsocket.once(\"connect\", () => {\n\t\t\t\tif (settled) {\n\t\t\t\t\treturn; // Timeout already fired\n\t\t\t\t}\n\t\t\t\tsettled = true;\n\t\t\t\tcleanup();\n\t\t\t\tthis.socket = socket;\n\t\t\t\tthis.setupSocketHandlers();\n\t\t\t\tresolve();\n\t\t\t});\n\n\t\t\tsocket.once(\"error\", (error) => {\n\t\t\t\tif (settled) {\n\t\t\t\t\treturn; // Already handled\n\t\t\t\t}\n\t\t\t\tsettled = true;\n\t\t\t\tcleanup();\n\t\t\t\tsocket.destroy(); // Ensure socket is destroyed on error\n\t\t\t\treject(error);\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Set up socket event handlers\n\t *\n\t * IMPORTANT: Removes old listeners before adding new ones to prevent\n\t * memory leak on reconnect. Without this, each reconnect would add\n\t * duplicate handlers that never get garbage collected.\n\t */\n\tprivate setupSocketHandlers(): void {\n\t\tif (!this.socket) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remove old listeners before adding new ones (prevents leak on reconnect)\n\t\tthis.socket.removeAllListeners(\"data\");\n\t\tthis.socket.removeAllListeners(\"close\");\n\t\tthis.socket.removeAllListeners(\"error\");\n\n\t\tthis.socket.on(\"data\", (chunk) => {\n\t\t\tthis.buffer += chunk.toString(\"utf8\");\n\t\t\tthis.processBuffer();\n\t\t});\n\n\t\tthis.socket.on(\"close\", (hadError) => {\n\t\t\tconst error = hadError ? new Error(\"Socket closed with error\") : undefined;\n\t\t\tthis.emit(\"close\", error);\n\t\t\tthis.socket = null;\n\t\t\tthis.buffer = \"\"; // Reset buffer on close\n\t\t});\n\n\t\tthis.socket.on(\"error\", (error) => {\n\t\t\tthis.emit(\"error\", error);\n\t\t\t// Reset buffer on error to prevent corruption from partial messages\n\t\t\tthis.buffer = \"\";\n\t\t});\n\t}\n\n\t/**\n\t * Process incoming data buffer (newline-delimited JSON)\n\t */\n\tprivate processBuffer(): void {\n\t\tlet newlineIndex: number;\n\t\twhile ((newlineIndex = this.buffer.indexOf(\"\\n\")) !== -1) {\n\t\t\tconst line = this.buffer.slice(0, newlineIndex);\n\t\t\tthis.buffer = this.buffer.slice(newlineIndex + 1);\n\n\t\t\tif (line.trim().length === 0) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tconst message = JSON.parse(line);\n\t\t\t\tthis.emit(\"message\", message);\n\t\t\t} catch (error) {\n\t\t\t\tthis.emit(\"error\", new Error(`Failed to parse JSON-RPC message: ${(error as Error).message}`));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Send a JSON-RPC request\n\t *\n\t * TOCTOU Fix: Captures socket reference at start to prevent race condition\n\t * where socket becomes null between the check and the write.\n\t */\n\tasync send(request: JsonRpcRequest): Promise<void> {\n\t\t// Capture reference to prevent TOCTOU race\n\t\tconst socket = this.socket;\n\t\tif (!socket || socket.destroyed) {\n\t\t\tthrow new Error(\"Socket not connected\");\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst data = `${JSON.stringify(request)}\\n`;\n\t\t\tsocket.write(data, \"utf8\", (error: Error | null | undefined) => {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t} else {\n\t\t\t\t\tresolve();\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Close the connection\n\t *\n\t * Proper cleanup:\n\t * - Removes all listeners to prevent memory leaks\n\t * - Calls end() for graceful close\n\t * - Calls destroy() to ensure immediate cleanup\n\t * - Resets buffer to prevent stale data on reconnect\n\t */\n\tclose(): void {\n\t\tif (this.socket) {\n\t\t\t// Remove all listeners to prevent memory leaks\n\t\t\tthis.socket.removeAllListeners();\n\t\t\t// End gracefully then destroy\n\t\t\tthis.socket.end();\n\t\t\tthis.socket.destroy();\n\t\t\tthis.socket = null;\n\t\t}\n\t\tthis.buffer = \"\";\n\t}\n\n\t/**\n\t * Check if connected\n\t */\n\tisConnected(): boolean {\n\t\treturn this.socket !== null && !this.socket.destroyed;\n\t}\n\n\t/**\n\t * Register event listener\n\t */\n\ton<K extends keyof IpcConnectionEvents>(event: K, handler: IpcConnectionEvents[K]): void {\n\t\tthis.listeners[event] = handler;\n\t}\n\n\t/**\n\t * Remove event listener\n\t */\n\toff<K extends keyof IpcConnectionEvents>(event: K): void {\n\t\tdelete this.listeners[event];\n\t}\n\n\t/**\n\t * Emit event\n\t */\n\tprivate emit<K extends keyof IpcConnectionEvents>(event: K, ...args: Parameters<IpcConnectionEvents[K]>): void {\n\t\tconst handler = this.listeners[event];\n\t\tif (handler) {\n\t\t\t// @ts-expect-error - Type inference limitation with variadic args\n\t\t\thandler(...args);\n\t\t}\n\t}\n}\n","/**\n * Auto-reconnection logic with exponential backoff using p-retry\n *\n * This is a lightweight wrapper around p-retry that maintains backward compatibility\n * with the original ReconnectManager API while consolidating retry logic.\n *\n * @module @vreko/local-service-client/connection/reconnect\n */\n\nimport pRetry, { type Options as PRetryOptions } from \"p-retry\";\n\n/**\n * Reconnection strategy options\n */\nexport interface ReconnectOptions {\n\t/** Maximum number of reconnection attempts */\n\tmaxAttempts: number;\n\t/** Initial delay in ms */\n\tinitialDelay: number;\n\t/** Maximum delay in ms (for exponential backoff cap) */\n\tmaxDelay: number;\n\t/** Backoff multiplier */\n\tbackoffMultiplier: number;\n}\n\n/**\n * Reconnection manager with exponential backoff (p-retry wrapper)\n *\n * This class now delegates retry logic to p-retry for consistency across the codebase.\n */\nexport class ReconnectManager {\n\tprivate isReconnecting = false;\n\tprivate abortController: AbortController | null = null;\n\tprivate readonly options: ReconnectOptions;\n\n\tconstructor(options: Partial<ReconnectOptions> = {}) {\n\t\tthis.options = {\n\t\t\tmaxAttempts: options.maxAttempts ?? 5,\n\t\t\tinitialDelay: options.initialDelay ?? 1000,\n\t\t\tmaxDelay: options.maxDelay ?? 30000,\n\t\t\tbackoffMultiplier: options.backoffMultiplier ?? 2,\n\t\t};\n\t}\n\n\t/**\n\t * Start reconnection process\n\t */\n\tasync start(\n\t\tconnectFn: () => Promise<void>,\n\t\tonAttempt?: (attempt: number, maxAttempts: number) => void,\n\t\tonFailed?: () => void,\n\t): Promise<void> {\n\t\tif (this.isReconnecting) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.isReconnecting = true;\n\t\tthis.abortController = new AbortController();\n\n\t\tconst pRetryOptions: PRetryOptions = {\n\t\t\tretries: this.options.maxAttempts,\n\t\t\tfactor: this.options.backoffMultiplier,\n\t\t\tminTimeout: this.options.initialDelay,\n\t\t\tmaxTimeout: this.options.maxDelay,\n\t\t\trandomize: false, // Maintain original deterministic behavior\n\t\t\tsignal: this.abortController.signal,\n\t\t\tonFailedAttempt: (error) => {\n\t\t\t\tif (onAttempt) {\n\t\t\t\t\tonAttempt(error.attemptNumber, this.options.maxAttempts);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\n\t\ttry {\n\t\t\tawait pRetry(connectFn, pRetryOptions);\n\t\t\tthis.reset();\n\t\t} catch (error) {\n\t\t\tthis.reset();\n\t\t\tif (onFailed) {\n\t\t\t\tonFailed();\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/**\n\t * Stop reconnection process\n\t */\n\tstop(): void {\n\t\tif (this.abortController) {\n\t\t\tthis.abortController.abort();\n\t\t\tthis.abortController = null;\n\t\t}\n\t\tthis.reset();\n\t}\n\n\t/**\n\t * Reset reconnection state\n\t */\n\tprivate reset(): void {\n\t\tthis.isReconnecting = false;\n\t}\n\n\t/**\n\t * Check if currently reconnecting\n\t */\n\tisActive(): boolean {\n\t\treturn this.isReconnecting;\n\t}\n\n\t/**\n\t * Get current attempt number (not tracked in p-retry wrapper)\n\t * @deprecated p-retry handles attempt tracking internally\n\t */\n\tgetCurrentAttempt(): number {\n\t\t// This method is deprecated but kept for backward compatibility\n\t\treturn this.isReconnecting ? 1 : 0;\n\t}\n}\n","/**\n * Context method wrappers\n *\n * @module @vreko/local-service-client/methods/context\n */\n\nimport type {\n\tContextCheckPatternsParamsType,\n\tContextGetParamsType,\n\tContextValidateParamsType,\n} from \"@vreko/contracts/local-service\";\nimport type { CallFn } from \"./health.js\";\n\nexport interface ContextGetResponse {\n\tpatterns: Array<{ name: string; description: string }>;\n\tconstraints: Array<{ domain: string; name: string; value: string | number; description: string }>;\n\tlearnings: Array<{ type: string; trigger: string; action: string; relevanceScore: number }>;\n\tfiles: string[];\n}\n\nexport interface ContextValidateResponse {\n\tvalid: boolean;\n\tcontextPath: string;\n\tworkspace: string;\n}\n\nexport interface ContextCheckPatternsResponse {\n\tpassed: boolean;\n\ttotalIssues: number;\n\tfocusPoints: unknown[];\n}\n\nexport interface ContextMethods {\n\tget(params: ContextGetParamsType): Promise<ContextGetResponse>;\n\tvalidate(params: ContextValidateParamsType): Promise<ContextValidateResponse>;\n\tcheckPatterns(params: ContextCheckPatternsParamsType): Promise<ContextCheckPatternsResponse>;\n}\n\nexport function createContextMethods(call: CallFn): ContextMethods {\n\treturn {\n\t\tget: (params) => call<ContextGetResponse>(\"context/get\", params),\n\t\tvalidate: (params) => call<ContextValidateResponse>(\"context/validate\", params),\n\t\tcheckPatterns: (params) => call<ContextCheckPatternsResponse>(\"context/check-patterns\", params),\n\t};\n}\n","/**\n * Daemon lifecycle method wrappers\n *\n * @module @vreko/local-service-client/methods/daemon\n */\n\nimport type { CallFn } from \"./health.js\";\n\nexport interface DaemonPingResponse {\n\tpong: true;\n\tuptime: number;\n\tversion: string;\n}\n\nexport interface DaemonStatusResponse {\n\tpid: number;\n\tversion: string;\n\tuptime: number;\n\tstartedAt: string;\n\tworkspaces: number;\n\tconnections: number;\n\tmemoryUsage: { heapUsed: number; heapTotal: number; rss: number };\n\tlastActivity: number;\n\t/** Idle timeout in milliseconds */\n\tidleTimeout: number;\n\t/** Authentication status from CLI credentials */\n\tauth?: {\n\t\tauthenticated: boolean;\n\t\tuser?: string;\n\t\ttier?: string;\n\t};\n}\n\nexport interface DaemonShutdownResponse {\n\tshutting_down: true;\n}\n\nexport interface DaemonReloadResponse {\n\treloaded: true;\n}\n\nexport interface DaemonMethods {\n\tping(): Promise<DaemonPingResponse>;\n\tstatus(): Promise<DaemonStatusResponse>;\n\tshutdown(): Promise<DaemonShutdownResponse>;\n\treload(): Promise<DaemonReloadResponse>;\n}\n\nexport function createDaemonMethods(call: CallFn): DaemonMethods {\n\treturn {\n\t\tping: () => call<DaemonPingResponse>(\"daemon/ping\"),\n\t\tstatus: () => call<DaemonStatusResponse>(\"daemon/status\"),\n\t\tshutdown: () => call<DaemonShutdownResponse>(\"daemon/shutdown\"),\n\t\treload: () => call<DaemonReloadResponse>(\"daemon/reload\"),\n\t};\n}\n","/**\n * AI detection method wrappers\n *\n * @module @vreko/local-service-client/methods/detection\n */\n\nimport type { DetectionCheckParamsType, DetectionSignal } from \"../types.js\";\nimport type { CallFn } from \"./health.js\";\n\n/**\n * Detection check response\n */\nexport interface DetectionCheckResponse {\n\t/** Whether AI tool activity was detected */\n\tdetected: boolean;\n\t/** Confidence score (0-1, higher = more confident) */\n\tconfidence: number;\n\t/** Detection signals found */\n\tsignals: DetectionSignal[];\n\t/** Recommended protection level based on detection */\n\trecommendedLevel?: \"watch\" | \"warn\" | \"block\";\n}\n\n/**\n * Detection methods namespace\n */\nexport interface DetectionMethods {\n\t/**\n\t * Check for AI tool activity in file changes\n\t */\n\tcheck(params: DetectionCheckParamsType): Promise<DetectionCheckResponse>;\n}\n\n/**\n * Create detection methods namespace\n */\nexport function createDetectionMethods(call: CallFn): DetectionMethods {\n\treturn {\n\t\tcheck: (params) => call<DetectionCheckResponse>(\"detection/check\", params),\n\t};\n}\n","/**\n * Health check method wrappers\n *\n * @module @vreko/local-service-client/methods/health\n */\n\nimport type { HealthCheckParamsType, LocalServiceMethod } from \"../types.js\";\n\n/**\n * Function signature for making JSON-RPC calls\n */\nexport type CallFn = <TResult = unknown>(method: LocalServiceMethod, params?: unknown) => Promise<TResult>;\n\n/**\n * Health check response\n */\nexport interface HealthCheckResponse {\n\t/** Service is healthy and accepting requests */\n\thealthy: boolean;\n\t/** Service uptime in seconds */\n\tuptime: number;\n\t/** Active connections count */\n\tconnections: number;\n\t/** Service version */\n\tversion?: string;\n\t/** How the daemon is supervised. Added in HealthCheckResponseV2 (contracts). */\n\tsupervisorMode?: \"launchd\" | \"systemd\" | \"extension\" | \"none\";\n\t/** Additional diagnostic information (if verbose=true) */\n\tdiagnostics?: {\n\t\t/** Memory usage in bytes */\n\t\tmemoryUsage: number;\n\t\t/** CPU usage percentage */\n\t\tcpuUsage: number;\n\t\t/** Active sessions count */\n\t\tactiveSessions: number;\n\t\t/** Total snapshots count */\n\t\ttotalSnapshots: number;\n\t};\n}\n\n/**\n * Ping response\n */\nexport interface HealthPingResponse {\n\t/** Server response (\"pong\") */\n\tmessage: \"pong\";\n\t/** Server timestamp in milliseconds */\n\ttimestamp: number;\n}\n\n/**\n * Health methods namespace\n */\nexport interface HealthMethods {\n\t/**\n\t * Check service health status\n\t */\n\tcheck(params?: HealthCheckParamsType): Promise<HealthCheckResponse>;\n\n\t/**\n\t * Simple ping to verify service is responsive\n\t */\n\tping(): Promise<HealthPingResponse>;\n}\n\n/**\n * Create health methods namespace\n */\nexport function createHealthMethods(call: CallFn): HealthMethods {\n\treturn {\n\t\tcheck: (params) => call<HealthCheckResponse>(\"health/check\", params),\n\t\tping: () => call<HealthPingResponse>(\"health/ping\"),\n\t};\n}\n","/**\n * Intelligence method wrappers\n *\n * @module @vreko/local-service-client/methods/intelligence\n */\n\nimport type {\n\tIntelligenceCaptureParamsType,\n\tIntelligenceOutcomeParamsType,\n\tIntelligenceSnapshot,\n\tIntelligenceSnapshotParamsType,\n} from \"@vreko/contracts/local-service\";\nimport type { CallFn } from \"./health.js\";\n\nexport interface IntelligenceCaptureResponse {\n\tcaptured: boolean;\n\tdomain: string;\n\ttype: string;\n\terror?: string;\n}\n\nexport interface IntelligenceOutcomeResponse {\n\trecorded: boolean;\n\tpatternId: string;\n\toutcome: string;\n\tnotes?: string;\n}\n\nexport interface IntelligenceMethods {\n\tcapture(params: IntelligenceCaptureParamsType): Promise<IntelligenceCaptureResponse>;\n\toutcome(params: IntelligenceOutcomeParamsType): Promise<IntelligenceOutcomeResponse>;\n\tsnapshot(\n\t\tparams: IntelligenceSnapshotParamsType,\n\t): Promise<IntelligenceSnapshot | { error: string; workspace: string }>;\n}\n\nexport function createIntelligenceMethods(call: CallFn): IntelligenceMethods {\n\treturn {\n\t\tcapture: (params) => call<IntelligenceCaptureResponse>(\"intelligence/capture\", params),\n\t\toutcome: (params) => call<IntelligenceOutcomeResponse>(\"intelligence/outcome\", params),\n\t\tsnapshot: (params) => call<IntelligenceSnapshot>(\"intelligence/snapshot\", params),\n\t};\n}\n","/**\n * Learning method wrappers\n *\n * @module @vreko/local-service-client/methods/learning\n */\n\nimport type {\n\tLearningAddParamsType,\n\tLearningEvaluateParamsType,\n\tLearningGCParamsType,\n\tLearningListParamsType,\n\tLearningPruneParamsType,\n\tLearningSearchParamsType,\n\tLearningUpdateSessionParamsType,\n} from \"@vreko/contracts/local-service\";\nimport type { CallFn } from \"./health.js\";\n\nexport interface LearningAddResponse {\n\tsuccess: boolean;\n\ttype: string;\n\ttrigger: string;\n\taction: string;\n}\n\nexport interface LearningSearchResponse {\n\tlearnings: Array<{ type: string; trigger: string; action: string; relevanceScore: number }>;\n\ttotal: number;\n}\n\nexport interface LearningListResponse {\n\tlearnings: Array<{ type: string; trigger: string; action: string }>;\n\ttotal: number;\n}\n\nexport interface LearningPruneResponse {\n\tpruned: number;\n\tremaining: number;\n}\n\nexport interface LearningEvaluateResponse {\n\tapplicable: Array<{ type: string; trigger: string; action: string; relevanceScore: number }>;\n\tmode: string;\n\tcommandName: string;\n}\n\nexport interface LearningUpdateSessionResponse {\n\tsuccess: boolean;\n\tsessionId: string;\n\tupdated: number;\n}\n\nexport interface LearningGCResponse {\n\toperation: string;\n\tdryRun: boolean;\n\tarchived: number;\n\tdeleted: number;\n\tremaining: number;\n}\n\nexport interface LearningSeedParams {\n\tworkspace: string;\n\tlearnings?: Array<{\n\t\tid?: string;\n\t\ttype: string;\n\t\ttier?: string;\n\t\ttrigger: string;\n\t\taction: string;\n\t\tsolution?: string;\n\t\tsource?: string;\n\t\ttimestamp?: string;\n\t\tpriority?: string;\n\t\tdomain?: string;\n\t}>;\n\tframework?: string;\n\tforce?: boolean;\n}\n\nexport interface LearningSeedResponse {\n\tseeded: boolean;\n\tlearningsAdded: number;\n\ttiers: { hot: number; warm: number; cold: number };\n\talreadySeeded: boolean;\n\tframework: string | null;\n}\n\nexport interface LearningConsolidateParams {\n\tworkspace: string;\n\tthreshold?: number;\n\tdryRun?: boolean;\n}\n\nexport interface LearningConsolidateResponse {\n\tsuccess: boolean;\n\toriginalCount: number;\n\tconsolidatedCount: number;\n\tduplicatesFound: number;\n\treductionPercent: number;\n\tarchivePath?: string;\n\tdryRun: boolean;\n}\n\nexport interface LearningMethods {\n\tadd(params: LearningAddParamsType): Promise<LearningAddResponse>;\n\tsearch(params: LearningSearchParamsType): Promise<LearningSearchResponse>;\n\tlist(params: LearningListParamsType): Promise<LearningListResponse>;\n\tprune(params: LearningPruneParamsType): Promise<LearningPruneResponse>;\n\tevaluate(params: LearningEvaluateParamsType): Promise<LearningEvaluateResponse>;\n\tupdateSession(params: LearningUpdateSessionParamsType): Promise<LearningUpdateSessionResponse>;\n\tgc(params: LearningGCParamsType): Promise<LearningGCResponse>;\n\tseed(params: LearningSeedParams): Promise<LearningSeedResponse>;\n\tconsolidate(params: LearningConsolidateParams): Promise<LearningConsolidateResponse>;\n}\n\nexport function createLearningMethods(call: CallFn): LearningMethods {\n\treturn {\n\t\tadd: (params) => call<LearningAddResponse>(\"learning/add\", params),\n\t\tsearch: (params) => call<LearningSearchResponse>(\"learning/search\", params),\n\t\tlist: (params) => call<LearningListResponse>(\"learning/list\", params),\n\t\tprune: (params) => call<LearningPruneResponse>(\"learning/prune\", params),\n\t\tevaluate: (params) => call<LearningEvaluateResponse>(\"learning/evaluate\", params),\n\t\tupdateSession: (params) => call<LearningUpdateSessionResponse>(\"learning/update-session\", params),\n\t\tgc: (params) => call<LearningGCResponse>(\"learning/gc\", params),\n\t\tseed: (params) => call<LearningSeedResponse>(\"learning/seed\", params),\n\t\tconsolidate: (params) => call<LearningConsolidateResponse>(\"learning/consolidate\", params),\n\t};\n}\n","/**\n * MCP coordination method wrappers\n *\n * @module @vreko/local-service-client/methods/mcp\n */\n\nimport type { MCPFileModifiedParamsType, MCPSnapshotCreatedParamsType } from \"@vreko/contracts/local-service\";\nimport type { CallFn } from \"./health.js\";\n\nexport interface MCPAcknowledgeResponse {\n\tacknowledged: boolean;\n}\n\nexport interface MCPMethods {\n\tsnapshotCreated(params: MCPSnapshotCreatedParamsType): Promise<MCPAcknowledgeResponse>;\n\tfileModified(params: MCPFileModifiedParamsType): Promise<MCPAcknowledgeResponse>;\n}\n\nexport function createMCPMethods(call: CallFn): MCPMethods {\n\treturn {\n\t\tsnapshotCreated: (params) => call<MCPAcknowledgeResponse>(\"mcp/snapshot-created\", params),\n\t\tfileModified: (params) => call<MCPAcknowledgeResponse>(\"mcp/file-modified\", params),\n\t};\n}\n","/**\n * Momentum method wrappers\n *\n * @module @vreko/local-service-client/methods/momentum\n */\n\nimport type {\n\tMomentumRefreshParamsType,\n\tMomentumScoreParamsType,\n\tMomentumStatusParamsType,\n\tMomentumSyncParamsType,\n} from \"@vreko/contracts/local-service\";\nimport type { CallFn } from \"./health.js\";\n\nexport interface MomentumRefreshResponse {\n\trefreshed: boolean;\n\tsince: string;\n\tfull: boolean;\n\tscores: Record<string, unknown>;\n\ttimestamp: number;\n}\n\nexport interface MomentumScoreResponse {\n\tfilePath: string;\n\tscore: number;\n\tfactors: { changeFrequency: number; complexity: number; recency: number };\n\ttimestamp: number;\n}\n\nexport interface MomentumSyncResponse {\n\tsynced: boolean;\n\tquick: boolean;\n\tfilesAnalyzed: number;\n\ttimestamp: number;\n}\n\nexport interface MomentumStatusResponse {\n\tactive: boolean;\n\tlastSync: string | null;\n\tfileCount: number;\n\taverageScore: number;\n}\n\nexport interface MomentumMethods {\n\trefresh(params: MomentumRefreshParamsType): Promise<MomentumRefreshResponse>;\n\tscore(params: MomentumScoreParamsType): Promise<MomentumScoreResponse>;\n\tsync(params: MomentumSyncParamsType): Promise<MomentumSyncResponse>;\n\tstatus(params: MomentumStatusParamsType): Promise<MomentumStatusResponse>;\n}\n\nexport function createMomentumMethods(call: CallFn): MomentumMethods {\n\treturn {\n\t\trefresh: (params) => call<MomentumRefreshResponse>(\"momentum/refresh\", params),\n\t\tscore: (params) => call<MomentumScoreResponse>(\"momentum/score\", params),\n\t\tsync: (params) => call<MomentumSyncResponse>(\"momentum/sync\", params),\n\t\tstatus: (params) => call<MomentumStatusResponse>(\"momentum/status\", params),\n\t};\n}\n","/**\n * Protection policy method wrappers\n *\n * @module @vreko/local-service-client/methods/protection\n */\n\nimport type {\n\tProtectionDecision,\n\tProtectionEvaluateParamsType,\n\tProtectionLevel,\n\tProtectionLevelsParamsType,\n\tProtectionSetParamsType,\n} from \"../types.js\";\nimport type { CallFn } from \"./health.js\";\n\n/**\n * Protection levels response\n */\nexport interface ProtectionLevelsResponse {\n\t/** Map of file path to protection level */\n\tlevels: Record<string, ProtectionLevel>;\n}\n\n/**\n * Protection set response\n */\nexport interface ProtectionSetResponse {\n\t/** File path */\n\tfilePath: string;\n\t/** New protection level */\n\tlevel: ProtectionLevel;\n\t/** Whether this is a custom rule (vs automatic) */\n\tisCustom: boolean;\n}\n\n/**\n * Protected file entry from daemon list\n */\nexport interface ProtectedFileDaemonEntry {\n\tpattern: string;\n\tlevel: ProtectionLevel;\n\t[key: string]: unknown;\n}\n\n/**\n * Protection methods namespace\n */\nexport interface ProtectionMethods {\n\t/**\n\t * Evaluate protection policy for a file\n\t */\n\tevaluate(params: ProtectionEvaluateParamsType): Promise<ProtectionDecision>;\n\n\t/**\n\t * Get protection levels for multiple files\n\t */\n\tlevels(params: ProtectionLevelsParamsType): Promise<ProtectionLevelsResponse>;\n\n\t/**\n\t * Set custom protection level for a file/pattern\n\t */\n\tset(params: ProtectionSetParamsType): Promise<ProtectionSetResponse>;\n\n\t/**\n\t * List daemon-managed protected files for a workspace\n\t */\n\tlistDaemon(params: { workspace: string }): Promise<ProtectedFileDaemonEntry[]>;\n}\n\n/**\n * Create protection methods namespace\n */\nexport function createProtectionMethods(call: CallFn): ProtectionMethods {\n\treturn {\n\t\tevaluate: (params) => call<ProtectionDecision>(\"protection/evaluate\", params),\n\t\tlevels: (params) => call<ProtectionLevelsResponse>(\"protection/levels\", params),\n\t\tset: (params) => call<ProtectionSetResponse>(\"protection/set\", params),\n\t\tlistDaemon: (params) => call<ProtectedFileDaemonEntry[]>(\"protection/list-daemon\", params),\n\t};\n}\n","/**\n * Session management method wrappers\n *\n * @module @vreko/local-service-client/methods/session\n */\n\nimport type {\n\tSession,\n\tSessionCurrentParamsType,\n\tSessionEndParamsType,\n\tSessionListParamsType,\n\tSessionStartParamsType,\n} from \"../types.js\";\nimport type { CallFn } from \"./health.js\";\n\n/**\n * Session list response\n */\nexport interface SessionListResponse {\n\t/** List of sessions */\n\tsessions: Session[];\n\t/** Pagination cursor for next page (null if no more) */\n\tnextCursor: string | null;\n\t/** Total count (if available) */\n\ttotalCount?: number;\n}\n\n/**\n * Session vitals response (workspace health metrics)\n */\nexport interface SessionVitalsResponse {\n\tframework?: string;\n\tpackageManager?: string;\n\ttypescript?: { enabled: boolean; strict: boolean };\n\t[key: string]: unknown;\n}\n\n/**\n * Session methods namespace\n */\nexport interface SessionMethods {\n\t/**\n\t * Get current active session\n\t */\n\tcurrent(params?: SessionCurrentParamsType): Promise<Session | null>;\n\n\t/**\n\t * Start a new session\n\t */\n\tstart(params: SessionStartParamsType): Promise<Session>;\n\n\t/**\n\t * End the current or specified session\n\t */\n\tend(params?: SessionEndParamsType): Promise<Session>;\n\n\t/**\n\t * List sessions with optional filters\n\t */\n\tlist(params?: SessionListParamsType): Promise<SessionListResponse>;\n\n\t/**\n\t * Get real-time workspace vitals (framework, package manager, TypeScript config)\n\t */\n\tvitals(params: { workspacePath: string }): Promise<SessionVitalsResponse>;\n}\n\n/**\n * Create session methods namespace\n */\nexport function createSessionMethods(call: CallFn): SessionMethods {\n\treturn {\n\t\tcurrent: (params) => call<Session | null>(\"session/current\", params),\n\t\tstart: (params) => call<Session>(\"session/start\", params),\n\t\tend: (params) => call<Session>(\"session/end\", params),\n\t\tlist: (params) => call<SessionListResponse>(\"session/list\", params),\n\t\tvitals: (params) => call<SessionVitalsResponse>(\"session/vitals\", params),\n\t};\n}\n","/**\n * Snapshot management method wrappers\n *\n * @module @vreko/local-service-client/methods/snapshot\n */\n\nimport type {\n\tSnapshot,\n\tSnapshotCreateParamsType,\n\tSnapshotDeleteParamsType,\n\tSnapshotDiffParamsType,\n\tSnapshotGetParamsType,\n\tSnapshotListParamsType,\n\tSnapshotRestoreParamsType,\n} from \"../types.js\";\nimport type { CallFn } from \"./health.js\";\n\n/**\n * Snapshot list response\n */\nexport interface SnapshotListResponse {\n\t/** List of snapshots */\n\tsnapshots: Snapshot[];\n\t/** Pagination cursor for next page (null if no more) */\n\tnextCursor: string | null;\n\t/** Total count matching filters (if available) */\n\ttotalCount?: number;\n}\n\n/**\n * Snapshot restore response\n */\nexport interface SnapshotRestoreResponse {\n\t/** Restored snapshot */\n\tsnapshot: Snapshot;\n\t/** Path where snapshot was restored */\n\trestoredPath: string;\n\t/** Backup snapshot created before restore (if createBackup=true) */\n\tbackupSnapshot?: Snapshot;\n\t/** Preview of changes (if dryRun=true) */\n\tpreview?: {\n\t\t/** Number of lines changed */\n\t\tlinesChanged: number;\n\t\t/** Unified diff preview */\n\t\tdiff: string;\n\t};\n}\n\n/**\n * Snapshot diff response\n */\nexport interface SnapshotDiffResponse {\n\t/** Base snapshot ID */\n\tbaseSnapshotId: string;\n\t/** Compare snapshot ID (or \"current\" if comparing to current file) */\n\tcompareSnapshotId: string | \"current\";\n\t/** Unified or split diff output */\n\tdiff: string;\n\t/** Diff statistics */\n\tstats: {\n\t\t/** Lines added */\n\t\tadditions: number;\n\t\t/** Lines removed */\n\t\tdeletions: number;\n\t\t/** Files changed */\n\t\tfilesChanged: number;\n\t};\n}\n\n/**\n * Snapshot delete response\n */\nexport interface SnapshotDeleteResponse {\n\t/** Number of snapshots deleted */\n\tdeletedCount: number;\n\t/** IDs of deleted snapshots */\n\tdeletedIds: string[];\n\t/** Preview information (if dryRun=true) */\n\tpreview?: {\n\t\t/** Snapshots that would be deleted */\n\t\tsnapshotsToDelete: Snapshot[];\n\t\t/** Total size in bytes that would be freed */\n\t\tbytesFreed: number;\n\t};\n}\n\n/**\n * Snapshot methods namespace\n */\nexport interface SnapshotMethods {\n\t/**\n\t * Create a new snapshot\n\t */\n\tcreate(params: SnapshotCreateParamsType): Promise<Snapshot>;\n\n\t/**\n\t * Get a specific snapshot by ID\n\t */\n\tget(params: SnapshotGetParamsType): Promise<Snapshot>;\n\n\t/**\n\t * List snapshots with optional filters\n\t */\n\tlist(params?: SnapshotListParamsType): Promise<SnapshotListResponse>;\n\n\t/**\n\t * Restore a snapshot to disk\n\t */\n\trestore(params: SnapshotRestoreParamsType): Promise<SnapshotRestoreResponse>;\n\n\t/**\n\t * Generate diff between snapshots\n\t */\n\tdiff(params: SnapshotDiffParamsType): Promise<SnapshotDiffResponse>;\n\n\t/**\n\t * Delete snapshots\n\t */\n\tdelete(params: SnapshotDeleteParamsType): Promise<SnapshotDeleteResponse>;\n}\n\n/**\n * Create snapshot methods namespace\n */\nexport function createSnapshotMethods(call: CallFn): SnapshotMethods {\n\treturn {\n\t\tcreate: (params) => call<Snapshot>(\"snapshot/create\", params),\n\t\tget: (params) => call<Snapshot>(\"snapshot/get\", params),\n\t\tlist: (params) => call<SnapshotListResponse>(\"snapshot/list\", params),\n\t\trestore: (params) => call<SnapshotRestoreResponse>(\"snapshot/restore\", params),\n\t\tdiff: (params) => call<SnapshotDiffResponse>(\"snapshot/diff\", params),\n\t\tdelete: (params) => call<SnapshotDeleteResponse>(\"snapshot/delete\", params),\n\t};\n}\n","/**\n * Supervisor method wrappers\n *\n * @module @vreko/local-service-client/methods/supervisor\n */\n\nimport type {\n\tSupervisorHeartbeatParamsType,\n\tSupervisorRegisterParamsType,\n\tSystemHealthParamsType,\n} from \"@vreko/contracts/local-service\";\nimport type { CallFn } from \"./health.js\";\n\nexport interface SupervisorRegisterResponse {\n\tregistered: boolean;\n\tpid: number;\n\ttype: string;\n}\n\nexport interface SupervisorHeartbeatResponse {\n\tacknowledged: boolean;\n\terror?: string;\n}\n\nexport interface SystemHealthResponse {\n\tstatus: string;\n\tuptime: number;\n\tworkspaces: number;\n\tactiveSessions: number;\n\tsupervisedComponents: number;\n\tmemory?: { heapUsed: number; heapTotal: number; rss: number };\n\tcomponents?: Array<{ pid: number; type: string; lastHeartbeat: string; workspace: string }>;\n}\n\nexport interface SupervisorMethods {\n\tregister(params: SupervisorRegisterParamsType): Promise<SupervisorRegisterResponse>;\n\theartbeat(params: SupervisorHeartbeatParamsType): Promise<SupervisorHeartbeatResponse>;\n\tsystemHealth(params?: SystemHealthParamsType): Promise<SystemHealthResponse>;\n}\n\nexport function createSupervisorMethods(call: CallFn): SupervisorMethods {\n\treturn {\n\t\tregister: (params) => call<SupervisorRegisterResponse>(\"supervisor/register\", params),\n\t\theartbeat: (params) => call<SupervisorHeartbeatResponse>(\"supervisor/heartbeat\", params),\n\t\tsystemHealth: (params) => call<SystemHealthResponse>(\"system/health\", params),\n\t};\n}\n","/**\n * Sync method wrappers\n *\n * @module @vreko/local-service-client/methods/sync\n */\n\nimport type {\n\tSyncForceParamsType,\n\tSyncQueueParamsType,\n\tSyncStartParamsType,\n\tSyncStatusParamsDaemonType,\n\tSyncStopParamsType,\n} from \"@vreko/contracts/local-service\";\nimport type { CallFn } from \"./health.js\";\n\nexport interface SyncStatusResponse {\n\trunning: boolean;\n\tlastSync: string | null;\n\tpendingItems: number;\n\tstatus: string;\n}\n\nexport interface SyncForceResponse {\n\ttriggered: boolean;\n\terror?: string;\n}\n\nexport interface SyncStopResponse {\n\tstopped: boolean;\n}\n\nexport interface SyncStartResponse {\n\tstarted: boolean;\n\terror?: string;\n}\n\nexport interface SyncQueueResponse {\n\titems: unknown[];\n\ttotal: number;\n}\n\nexport interface SyncMethods {\n\tstatus(params: SyncStatusParamsDaemonType): Promise<SyncStatusResponse>;\n\tforce(params: SyncForceParamsType): Promise<SyncForceResponse>;\n\tstop(params: SyncStopParamsType): Promise<SyncStopResponse>;\n\tstart(params: SyncStartParamsType): Promise<SyncStartResponse>;\n\tqueue(params: SyncQueueParamsType): Promise<SyncQueueResponse>;\n}\n\nexport function createSyncMethods(call: CallFn): SyncMethods {\n\treturn {\n\t\tstatus: (params) => call<SyncStatusResponse>(\"sync/status-daemon\", params),\n\t\tforce: (params) => call<SyncForceResponse>(\"sync/force\", params),\n\t\tstop: (params) => call<SyncStopResponse>(\"sync/stop\", params),\n\t\tstart: (params) => call<SyncStartResponse>(\"sync/start\", params),\n\t\tqueue: (params) => call<SyncQueueResponse>(\"sync/queue\", params),\n\t};\n}\n","/**\n * Validation method wrappers\n *\n * @module @vreko/local-service-client/methods/validation\n */\n\nimport type { ValidateComprehensiveParamsType, ValidateQuickParamsType } from \"@vreko/contracts/local-service\";\nimport type { CallFn } from \"./health.js\";\n\nexport interface ValidateQuickResponse {\n\tpassed: boolean;\n\tchecks: {\n\t\ttypescript: { passed: boolean; errors: number };\n\t\tlint: { passed: boolean; errors: number };\n\t\ttests: { passed: boolean; errors: number };\n\t};\n\tfileCount: number;\n\tduration: number;\n}\n\nexport interface ValidateComprehensiveResponse {\n\tpassed: boolean;\n\tconfidence: number;\n\ttotalIssues: number;\n\trecommendation: string;\n\tfocusPoints: unknown[];\n\tlayers: unknown[];\n}\n\nexport interface ValidationMethods {\n\tquick(params: ValidateQuickParamsType): Promise<ValidateQuickResponse>;\n\tcomprehensive(params: ValidateComprehensiveParamsType): Promise<ValidateComprehensiveResponse>;\n}\n\nexport function createValidationMethods(call: CallFn): ValidationMethods {\n\treturn {\n\t\tquick: (params) => call<ValidateQuickResponse>(\"validate/quick\", params),\n\t\tcomprehensive: (params) => call<ValidateComprehensiveResponse>(\"validate/comprehensive\", params),\n\t};\n}\n","/**\n * Violation method wrappers\n *\n * @module @vreko/local-service-client/methods/violation\n */\n\nimport type { ViolationListParamsType, ViolationReportParamsType } from \"@vreko/contracts/local-service\";\nimport type { CallFn } from \"./health.js\";\n\nexport interface ViolationReportResponse {\n\treported: boolean;\n\ttype: string;\n\tfile: string;\n\tstatus: unknown;\n}\n\nexport interface ViolationListResponse {\n\tviolations: unknown[];\n\ttotal: number;\n}\n\nexport interface ViolationMethods {\n\treport(params: ViolationReportParamsType): Promise<ViolationReportResponse>;\n\tlist(params: ViolationListParamsType): Promise<ViolationListResponse>;\n}\n\nexport function createViolationMethods(call: CallFn): ViolationMethods {\n\treturn {\n\t\treport: (params) => call<ViolationReportResponse>(\"violation/report\", params),\n\t\tlist: (params) => call<ViolationListResponse>(\"violation/list\", params),\n\t};\n}\n","/**\n * Watch (file watcher) method wrappers\n *\n * @module @vreko/local-service-client/methods/watch\n */\n\nimport type {\n\tWatchFileChangedParamsType,\n\tWatchSubscribeParamsType,\n\tWatchUnsubscribeParamsType,\n} from \"@vreko/contracts/local-service\";\nimport type { CallFn } from \"./health.js\";\n\nexport interface WatchSubscribeResponse {\n\tsubscribed: boolean;\n\tpatterns: string[];\n}\n\nexport interface WatchUnsubscribeResponse {\n\tunsubscribed: boolean;\n}\n\nexport interface WatchFileChangedResponse {\n\treceived: boolean;\n\tfile: string;\n\ttimestamp: number;\n}\n\nexport interface WatchMethods {\n\tsubscribe(params: WatchSubscribeParamsType): Promise<WatchSubscribeResponse>;\n\tunsubscribe(params: WatchUnsubscribeParamsType): Promise<WatchUnsubscribeResponse>;\n\tfileChanged(params: WatchFileChangedParamsType): Promise<WatchFileChangedResponse>;\n}\n\nexport function createWatchMethods(call: CallFn): WatchMethods {\n\treturn {\n\t\tsubscribe: (params) => call<WatchSubscribeResponse>(\"watch/subscribe\", params),\n\t\tunsubscribe: (params) => call<WatchUnsubscribeResponse>(\"watch/unsubscribe\", params),\n\t\tfileChanged: (params) => call<WatchFileChangedResponse>(\"watch/file-changed\", params),\n\t};\n}\n","/**\n * Workspace method wrappers\n *\n * @module @vreko/local-service-client/methods/workspace\n */\n\nimport type { CallFn } from \"./health.js\";\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport type AnalysisPhase = \"structure\" | \"git\" | \"baseline\" | \"learnings\" | \"readiness\";\n\nexport interface AnalysisProgress {\n\tphase: AnalysisPhase;\n\tprogress: number;\n\tmessage?: string;\n}\n\nexport interface ReadinessAssessment {\n\tscore: number;\n\tlevel: \"ready\" | \"partial\" | \"minimal\";\n\tfactors: {\n\t\thasBaseline: boolean;\n\t\thasLearnings: boolean;\n\t\thasProfile: boolean;\n\t\thealthScore: number;\n\t};\n\trecommendations: string[];\n}\n\nexport interface WorkspaceProfile {\n\tframework: {\n\t\tid: string;\n\t\tname: string;\n\t\tconfidence: number;\n\t};\n\thealthScore: number;\n\tgaps?: Array<{\n\t\ttype: string;\n\t\tseverity: \"critical\" | \"warning\" | \"info\";\n\t\tmessage: string;\n\t}>;\n}\n\nexport interface WorkspaceAnalyzeParams {\n\tworkspace: string;\n\tskipBaseline?: boolean;\n\tskipLearnings?: boolean;\n\tforceSeedLearnings?: boolean;\n}\n\nexport interface WorkspaceAnalyzeResponse {\n\tworkspace: string;\n\tprofile: WorkspaceProfile | null;\n\tbaselineJobId: string | null;\n\tlearningsSeeded: {\n\t\tseeded: boolean;\n\t\tcount: number;\n\t\ttiers: { hot: number; warm: number; cold: number };\n\t\talreadySeeded: boolean;\n\t};\n\treadiness: ReadinessAssessment;\n\tduration: number;\n\tanalyzedAt: string;\n}\n\nexport interface WorkspaceStatusParams {\n\tworkspace: string;\n}\n\nexport interface WorkspaceStatusResponse {\n\tworkspace: string;\n\thasProfile: boolean;\n\tbaselineStatus: string;\n\tlearningsCount: number;\n}\n\n// =============================================================================\n// Methods\n// =============================================================================\n\nexport interface WorkspaceMethods {\n\tanalyze(params: WorkspaceAnalyzeParams): Promise<WorkspaceAnalyzeResponse>;\n\tstatus(params: WorkspaceStatusParams): Promise<WorkspaceStatusResponse>;\n}\n\nexport function createWorkspaceMethods(call: CallFn): WorkspaceMethods {\n\treturn {\n\t\tanalyze: (params) => call<WorkspaceAnalyzeResponse>(\"workspace/analyze\", params),\n\t\tstatus: (params) => call<WorkspaceStatusResponse>(\"workspace/status\", params),\n\t};\n}\n","/**\n * Vreko Local Service Client\n *\n * TypeScript client for connecting to vrekod via IPC (Unix sockets / named pipes).\n * Provides type-safe method wrappers for all Local Service Protocol methods.\n *\n * @module @vreko/local-service-client\n *\n * @example\n * ```typescript\n * import { VrekoLocalClient } from '@vreko/local-service-client';\n *\n * const client = new VrekoLocalClient();\n * await client.connect();\n *\n * // Initialize connection\n * await client.initialize({\n * protocolVersion: '1.0.0',\n * clientInfo: { name: 'my-app', version: '1.0.0' }\n * });\n *\n * // Create a snapshot\n * const snapshot = await client.snapshot.create({\n * filePath: '/path/to/file.ts',\n * content: 'const x = 1;',\n * trigger: 'save'\n * });\n *\n * await client.close();\n * ```\n */\n\nimport { getDefaultSocketPath, IpcConnection } from \"./connection/ipc.js\";\nimport { ReconnectManager } from \"./connection/reconnect.js\";\nimport { createContextMethods } from \"./methods/context.js\";\nimport { createDaemonMethods } from \"./methods/daemon.js\";\nimport { createDetectionMethods } from \"./methods/detection.js\";\nimport { createHealthMethods } from \"./methods/health.js\";\nimport type {\n\tContextMethods,\n\tDaemonMethods,\n\tDetectionMethods,\n\tHealthMethods,\n\tIntelligenceMethods,\n\tLearningMethods,\n\tMCPMethods,\n\tMomentumMethods,\n\tProtectionMethods,\n\tSessionMethods,\n\tSnapshotMethods,\n\tSupervisorMethods,\n\tSyncMethods,\n\tValidationMethods,\n\tViolationMethods,\n\tWatchMethods,\n\tWorkspaceMethods,\n} from \"./methods/index.js\";\nimport { createIntelligenceMethods } from \"./methods/intelligence.js\";\nimport { createLearningMethods } from \"./methods/learning.js\";\nimport { createMCPMethods } from \"./methods/mcp.js\";\nimport { createMomentumMethods } from \"./methods/momentum.js\";\nimport { createProtectionMethods } from \"./methods/protection.js\";\nimport { createSessionMethods } from \"./methods/session.js\";\nimport { createSnapshotMethods } from \"./methods/snapshot.js\";\nimport { createSupervisorMethods } from \"./methods/supervisor.js\";\nimport { createSyncMethods } from \"./methods/sync.js\";\nimport { createValidationMethods } from \"./methods/validation.js\";\nimport { createViolationMethods } from \"./methods/violation.js\";\nimport { createWatchMethods } from \"./methods/watch.js\";\nimport { createWorkspaceMethods } from \"./methods/workspace.js\";\nimport type {\n\tClientEvents,\n\tClientOptions,\n\tConnectionState,\n\tJsonRpcErrorResponse,\n\tJsonRpcNotification,\n\tJsonRpcRequest,\n\tJsonRpcResponse,\n\tLocalServiceMethod,\n} from \"./types.js\";\nimport { JsonRpcClientError, RequestTimeoutError } from \"./types.js\";\n\n/**\n * Pending request tracker\n */\ninterface PendingRequest {\n\tresolve: (value: unknown) => void;\n\treject: (error: Error) => void;\n\ttimeout: NodeJS.Timeout;\n}\n\n/**\n * Vreko Local Service Client\n *\n * Main client class for interacting with vrekod daemon.\n */\nexport class VrekoLocalClient {\n\tprivate connection: IpcConnection;\n\tprivate reconnectManager: ReconnectManager;\n\tprivate state: ConnectionState = \"disconnected\";\n\tprivate nextId = 1;\n\tprivate pending = new Map<string | number, PendingRequest>();\n\tprivate eventHandlers: Partial<ClientEvents> = {};\n\tprivate options: Required<ClientOptions>;\n\t/** Stored params from the last initialize() call - replayed after auto-reconnect */\n\tprivate initializeParams: Parameters<VrekoLocalClient[\"initialize\"]>[0] | null = null;\n\n\t// Method namespaces - original\n\tpublic readonly health: HealthMethods;\n\tpublic readonly session: SessionMethods;\n\tpublic readonly snapshot: SnapshotMethods;\n\tpublic readonly protection: ProtectionMethods;\n\tpublic readonly detection: DetectionMethods;\n\t// Method namespaces - new domains\n\tpublic readonly learning: LearningMethods;\n\tpublic readonly context: ContextMethods;\n\tpublic readonly validation: ValidationMethods;\n\tpublic readonly violation: ViolationMethods;\n\tpublic readonly sync: SyncMethods;\n\tpublic readonly intelligence: IntelligenceMethods;\n\tpublic readonly momentum: MomentumMethods;\n\tpublic readonly watch: WatchMethods;\n\tpublic readonly mcp: MCPMethods;\n\tpublic readonly supervisor: SupervisorMethods;\n\tpublic readonly daemon: DaemonMethods;\n\tpublic readonly workspace: WorkspaceMethods;\n\n\tconstructor(options: ClientOptions = {}) {\n\t\tthis.options = {\n\t\t\tsocketPath: options.socketPath ?? getDefaultSocketPath(),\n\t\t\ttimeout: options.timeout ?? 30000,\n\t\t\tautoReconnect: options.autoReconnect ?? true,\n\t\t\tmaxReconnectAttempts: options.maxReconnectAttempts ?? 5,\n\t\t\treconnectDelay: options.reconnectDelay ?? 1000,\n\t\t\tmaxReconnectDelay: options.maxReconnectDelay ?? 30000,\n\t\t};\n\n\t\tthis.connection = new IpcConnection({\n\t\t\tsocketPath: this.options.socketPath,\n\t\t\ttimeout: 5000, // Connection timeout\n\t\t});\n\n\t\tthis.reconnectManager = new ReconnectManager({\n\t\t\tmaxAttempts: this.options.maxReconnectAttempts,\n\t\t\tinitialDelay: this.options.reconnectDelay,\n\t\t\tmaxDelay: this.options.maxReconnectDelay,\n\t\t});\n\n\t\t// Bind method namespaces - original\n\t\tconst callFn = this.call.bind(this);\n\t\tthis.health = createHealthMethods(callFn);\n\t\tthis.session = createSessionMethods(callFn);\n\t\tthis.snapshot = createSnapshotMethods(callFn);\n\t\tthis.protection = createProtectionMethods(callFn);\n\t\tthis.detection = createDetectionMethods(callFn);\n\t\t// Bind method namespaces - new domains\n\t\tthis.learning = createLearningMethods(callFn);\n\t\tthis.context = createContextMethods(callFn);\n\t\tthis.validation = createValidationMethods(callFn);\n\t\tthis.violation = createViolationMethods(callFn);\n\t\tthis.sync = createSyncMethods(callFn);\n\t\tthis.intelligence = createIntelligenceMethods(callFn);\n\t\tthis.momentum = createMomentumMethods(callFn);\n\t\tthis.watch = createWatchMethods(callFn);\n\t\tthis.mcp = createMCPMethods(callFn);\n\t\tthis.supervisor = createSupervisorMethods(callFn);\n\t\tthis.daemon = createDaemonMethods(callFn);\n\t\tthis.workspace = createWorkspaceMethods(callFn);\n\n\t\tthis.setupConnectionHandlers();\n\t}\n\n\t/**\n\t * Set up IPC connection event handlers\n\t */\n\tprivate setupConnectionHandlers(): void {\n\t\tthis.connection.on(\"message\", (message) => {\n\t\t\t// Check if it's a notification (no id field)\n\t\t\tif (\"method\" in message && !(\"id\" in message)) {\n\t\t\t\tconst notification = message as JsonRpcNotification;\n\t\t\t\tthis.emit(\"notification\", notification.method, notification.params);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Handle response\n\t\t\tconst response = message as JsonRpcResponse | JsonRpcErrorResponse;\n\n\t\t\t// Ignore responses with null id (parse errors)\n\t\t\tif (response.id === null) {\n\t\t\t\tthis.emit(\"error\", new Error(\"Received error response with null id\"));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst pending = this.pending.get(response.id);\n\n\t\t\tif (!pending) {\n\t\t\t\t// Unexpected response - emit error\n\t\t\t\tthis.emit(\"error\", new Error(`Received response for unknown request ID: ${response.id}`));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Clear timeout\n\t\t\tclearTimeout(pending.timeout);\n\t\t\tthis.pending.delete(response.id);\n\n\t\t\t// Handle error response\n\t\t\tif (\"error\" in response) {\n\t\t\t\tconst error = new JsonRpcClientError(response.error.message, response.error.code, response.error.data);\n\t\t\t\tpending.reject(error);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Handle success response\n\t\t\tpending.resolve(response.result);\n\t\t});\n\n\t\tthis.connection.on(\"close\", (error) => {\n\t\t\t// Don't override \"closed\" - close() sets it synchronously before socket teardown\n\t\t\tif (this.state !== \"closed\") {\n\t\t\t\tthis.setState(\"disconnected\");\n\t\t\t}\n\t\t\tthis.emit(\"disconnected\", error);\n\n\t\t\t// Clear all pending requests\n\t\t\tfor (const [, pending] of this.pending.entries()) {\n\t\t\t\tclearTimeout(pending.timeout);\n\t\t\t\tpending.reject(new Error(\"Connection closed\"));\n\t\t\t}\n\t\t\tthis.pending.clear();\n\n\t\t\t// Attempt reconnection only if not intentionally closed\n\t\t\tif (this.options.autoReconnect && this.state !== \"closed\" && !this.reconnectManager.isActive()) {\n\t\t\t\tthis.attemptReconnect();\n\t\t\t}\n\t\t});\n\n\t\tthis.connection.on(\"error\", (error) => {\n\t\t\tthis.emit(\"error\", error);\n\t\t});\n\t}\n\n\t/**\n\t * Attempt to reconnect\n\t */\n\tprivate async attemptReconnect(): Promise<void> {\n\t\tthis.setState(\"reconnecting\");\n\n\t\ttry {\n\t\t\tawait this.reconnectManager.start(\n\t\t\t\tasync () => {\n\t\t\t\t\tawait this.connection.connect();\n\t\t\t\t\t// Replay the initialize handshake - the server assigns a new clientId\n\t\t\t\t\t// for every socket connection, so the server-side initializedClients Set\n\t\t\t\t\t// won't recognise this connection until we re-initialize.\n\t\t\t\t\tif (this.initializeParams) {\n\t\t\t\t\t\tawait this.initialize(this.initializeParams);\n\t\t\t\t\t}\n\t\t\t\t\tthis.setState(\"connected\");\n\t\t\t\t\tthis.emit(\"connected\");\n\t\t\t\t},\n\t\t\t\t(attempt, maxAttempts) => {\n\t\t\t\t\tthis.emit(\"reconnecting\", attempt, maxAttempts);\n\t\t\t\t},\n\t\t\t\t() => {\n\t\t\t\t\tthis.emit(\"reconnectFailed\");\n\t\t\t\t},\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tthis.setState(\"disconnected\");\n\t\t\tthis.emit(\"error\", error as Error);\n\t\t}\n\t}\n\n\t/**\n\t * Connect to the local service\n\t */\n\tasync connect(): Promise<void> {\n\t\tif (this.state === \"connected\" || this.state === \"connecting\") {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setState(\"connecting\");\n\n\t\ttry {\n\t\t\tawait this.connection.connect();\n\t\t\tthis.setState(\"connected\");\n\t\t\tthis.emit(\"connected\");\n\t\t} catch (error) {\n\t\t\tthis.setState(\"disconnected\");\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\t/**\n\t * Close the connection\n\t */\n\tclose(): void {\n\t\tthis.reconnectManager.stop();\n\t\tthis.connection.close();\n\t\tthis.setState(\"closed\");\n\n\t\t// Clear all pending requests\n\t\tfor (const [, pending] of this.pending.entries()) {\n\t\t\tclearTimeout(pending.timeout);\n\t\t\tpending.reject(new Error(\"Client closed\"));\n\t\t}\n\t\tthis.pending.clear();\n\t}\n\n\t/**\n\t * Make a JSON-RPC method call\n\t */\n\tasync call<TResult = unknown>(method: LocalServiceMethod, params?: unknown): Promise<TResult> {\n\t\tif (!this.connection.isConnected()) {\n\t\t\tthrow new Error(\"Not connected to service\");\n\t\t}\n\n\t\tconst id = this.nextId++;\n\t\tconst request: JsonRpcRequest = {\n\t\t\tjsonrpc: \"2.0\",\n\t\t\tid,\n\t\t\tmethod,\n\t\t\tparams,\n\t\t};\n\n\t\treturn new Promise<TResult>((resolve, reject) => {\n\t\t\t// Set up timeout - unref so a pending timeout doesn't keep the CLI process alive\n\t\t\tconst timeout = setTimeout(() => {\n\t\t\t\tthis.pending.delete(id);\n\t\t\t\treject(new RequestTimeoutError(`Request timeout after ${this.options.timeout}ms`, id));\n\t\t\t}, this.options.timeout).unref();\n\n\t\t\t// Track pending request\n\t\t\tthis.pending.set(id, {\n\t\t\t\tresolve: resolve as (value: unknown) => void,\n\t\t\t\treject,\n\t\t\t\ttimeout,\n\t\t\t});\n\n\t\t\t// Send request\n\t\t\tthis.connection.send(request).catch((error) => {\n\t\t\t\tclearTimeout(timeout);\n\t\t\t\tthis.pending.delete(id);\n\t\t\t\treject(error);\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Initialize the client connection\n\t *\n\t * Must be called before any other method calls.\n\t * Params are stored and automatically replayed after auto-reconnect.\n\t */\n\tasync initialize(params: {\n\t\tprotocolVersion: string;\n\t\tclientInfo: { name: string; version: string };\n\t\tcapabilities?: {\n\t\t\tnotifications?: boolean;\n\t\t\tbinaryContent?: boolean;\n\t\t};\n\t}): Promise<{\n\t\tprotocolVersion: string;\n\t\tserverInfo: { name: string; version: string };\n\t\tcapabilities: {\n\t\t\tnotifications: boolean;\n\t\t\tbinaryContent: boolean;\n\t\t};\n\t}> {\n\t\t// Store params so they can be replayed after auto-reconnect\n\t\tthis.initializeParams = params;\n\t\treturn this.call(\"initialize\", params);\n\t}\n\n\t/**\n\t * Get current connection state\n\t */\n\tgetState(): ConnectionState {\n\t\treturn this.state;\n\t}\n\n\t/**\n\t * Check if connected\n\t */\n\tisConnected(): boolean {\n\t\treturn this.state === \"connected\";\n\t}\n\n\t/**\n\t * Register event listener\n\t */\n\ton<K extends keyof ClientEvents>(event: K, handler: ClientEvents[K]): void {\n\t\tthis.eventHandlers[event] = handler;\n\t}\n\n\t/**\n\t * Remove event listener\n\t */\n\toff<K extends keyof ClientEvents>(event: K): void {\n\t\tdelete this.eventHandlers[event];\n\t}\n\n\t/**\n\t * Set connection state and emit event\n\t */\n\tprivate setState(state: ConnectionState): void {\n\t\tif (this.state !== state) {\n\t\t\tthis.state = state;\n\t\t\tthis.emit(\"stateChange\", state);\n\t\t}\n\t}\n\n\t/**\n\t * Emit event to registered handlers\n\t */\n\tprivate emit<K extends keyof ClientEvents>(event: K, ...args: Parameters<ClientEvents[K]>): void {\n\t\tconst handler = this.eventHandlers[event];\n\t\tif (handler) {\n\t\t\t// @ts-expect-error - Type inference limitation with variadic args\n\t\t\thandler(...args);\n\t\t}\n\t}\n}\n","/**\n * CLI Local Service Adapter\n *\n * Thin adapter over @vreko/local-service-client providing CLI commands\n * with a familiar interface for talking to the unified Vreko local service.\n * Replaces direct use of the hand-rolled DaemonClient for service operations.\n *\n * CLI pattern: one-shot connections (connect → operate → disconnect)\n * unlike MCP which caches workspace-scoped connections.\n *\n * @module service-adapter/local-service-adapter\n */\n\nimport { existsSync, readFileSync, unlinkSync } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport { getDefaultSocketPath, VrekoLocalClient } from \"@vreko/local-service-client\";\n\n// =============================================================================\n// SERVICE PATHS\n// =============================================================================\n\n/**\n * Get the local service PID file path (~/.vreko/service.pid)\n */\nexport function getServicePidPath(): string {\n\treturn join(homedir(), \".vreko\", \"service.pid\");\n}\n\n/**\n * Get the local service socket path (see getDefaultSocketPath() for the resolved value).\n * Note: VrekoLocalClient defaults to this path internally,\n * but we expose it for CLI status display.\n */\nexport function getServiceSocketPath(): string {\n\treturn process.env.VREKO_DAEMON_SOCKET ?? getDefaultSocketPath();\n}\n\n/**\n * Get the ready marker path (~/.vreko/.ready)\n */\nfunction getReadyMarkerPath(): string {\n\treturn join(homedir(), \".vreko\", \".ready\");\n}\n\n/**\n * Clean up stale daemon artifacts (PID file, socket, ready marker)\n * Called automatically when isServiceRunning() detects a stale PID.\n * Logs what was cleaned at INFO level for visibility without alarming users.\n *\n * Based on daemon lifecycle research: always auto-clean and restart - never prompt.\n * The two-call bug (user must run daemon start twice after crash) is a UX failure.\n */\nfunction cleanupStaleArtifacts(): void {\n\tconst pidPath = getServicePidPath();\n\tconst socketPath = getServiceSocketPath();\n\tconst readyPath = getReadyMarkerPath();\n\tconst cleaned = [];\n\n\ttry {\n\t\tif (existsSync(pidPath)) {\n\t\t\tunlinkSync(pidPath);\n\t\t\tcleaned.push(\"PID file\");\n\t\t}\n\t} catch {\n\t\t// Ignore unlink errors\n\t}\n\n\ttry {\n\t\tif (existsSync(socketPath)) {\n\t\t\tunlinkSync(socketPath);\n\t\t\tcleaned.push(\"socket\");\n\t\t}\n\t} catch {\n\t\t// Ignore unlink errors\n\t}\n\n\ttry {\n\t\tif (existsSync(readyPath)) {\n\t\t\tunlinkSync(readyPath);\n\t\t\tcleaned.push(\"ready marker\");\n\t\t}\n\t} catch {\n\t\t// Ignore unlink errors\n\t}\n\n\tif (cleaned.length > 0) {\n\t\tprocess.stderr.write(`[vreko] Cleaned up stale daemon artifacts: ${cleaned.join(\", \")}\\n`);\n\t}\n}\n\n/**\n * Check if the local service is running by reading its PID file\n * and verifying the process is alive.\n *\n * If the PID file exists but the process is not running (stale PID),\n * automatically cleans up stale artifacts to prevent user-stuck issues.\n *\n * Uses kill(pid, 0) as the primary check (O(1), authoritative).\n * For full health check including socket probe, use isServiceHealthy().\n */\nexport function isServiceRunning(): boolean {\n\tconst pidPath = getServicePidPath();\n\tif (!existsSync(pidPath)) {\n\t\treturn false;\n\t}\n\n\ttry {\n\t\tconst pid = Number.parseInt(readFileSync(pidPath, \"utf-8\").trim(), 10);\n\t\tif (Number.isNaN(pid)) {\n\t\t\t// Corrupted PID file - clean up\n\t\t\tcleanupStaleArtifacts();\n\t\t\treturn false;\n\t\t}\n\t\t// Signal 0 checks if process exists without killing it\n\t\tprocess.kill(pid, 0);\n\t\treturn true;\n\t} catch (error) {\n\t\t// ESRCH (No such process) means stale PID - auto-clean\n\t\t// Other errors (EACCES, etc.) don't indicate stale state\n\t\tif ((error as NodeJS.ErrnoException).code === \"ESRCH\") {\n\t\t\tcleanupStaleArtifacts();\n\t\t}\n\t\treturn false;\n\t}\n}\n\n/**\n * Full health check including a real IPC handshake to detect hung-but-alive processes.\n * Use this when you need to verify the daemon is actually able to accept requests,\n * not just that the process exists.\n *\n * Returns true if process exists AND the daemon answers a health ping.\n */\nexport async function isServiceHealthy(): Promise<boolean> {\n\tconst pidPath = getServicePidPath();\n\tif (!existsSync(pidPath)) {\n\t\treturn false;\n\t}\n\n\ttry {\n\t\tconst pid = Number.parseInt(readFileSync(pidPath, \"utf-8\").trim(), 10);\n\t\tif (Number.isNaN(pid)) {\n\t\t\tcleanupStaleArtifacts();\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\tprocess.kill(pid, 0);\n\t\t} catch (error) {\n\t\t\tconst code = (error as NodeJS.ErrnoException).code;\n\t\t\tif (code === \"ESRCH\") {\n\t\t\t\tcleanupStaleArtifacts();\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t// EPERM/EACCES can occur in environments where pid probes are\n\t\t\t// restricted even though the daemon is healthy. Fall through to the\n\t\t\t// IPC probe, which is the authoritative readiness signal.\n\t\t}\n\n\t\tconst client = new VrekoLocalClient({\n\t\t\tsocketPath: getServiceSocketPath(),\n\t\t\ttimeout: 5000,\n\t\t\tautoReconnect: false,\n\t\t});\n\n\t\ttry {\n\t\t\tawait client.connect();\n\t\t\tawait client.initialize({\n\t\t\t\tprotocolVersion: \"1.0.0\",\n\t\t\t\tclientInfo: { name: \"vreko-cli\", version: \"1.0.0\" },\n\t\t\t\tcapabilities: { notifications: false },\n\t\t\t});\n\t\t\tawait client.health.ping();\n\t\t\treturn true;\n\t\t} catch (error) {\n\t\t\tconst code = (error as NodeJS.ErrnoException).code;\n\t\t\tif (code === \"ECONNREFUSED\" || code === \"ENOENT\") {\n\t\t\t\tprocess.stderr.write(\n\t\t\t\t\t\"[vreko] Daemon process exists but socket not accepting connections (likely hung)\\n\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn false;\n\t\t} finally {\n\t\t\tclient.close();\n\t\t}\n\t} catch {\n\t\treturn false;\n\t}\n}\n\n/**\n * Read the service PID from the PID file.\n * Returns null if the file doesn't exist or is unreadable.\n */\nexport function readServicePid(): number | null {\n\tconst pidPath = getServicePidPath();\n\ttry {\n\t\tconst content = readFileSync(pidPath, \"utf-8\").trim();\n\t\tconst pid = Number.parseInt(content, 10);\n\t\treturn Number.isNaN(pid) ? null : pid;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\n// =============================================================================\n// CLIENT FACTORY\n// =============================================================================\n\n/**\n * Create a VrekoLocalClient configured for CLI one-shot use.\n *\n * Does NOT connect - call `client.connect()` and `client.initialize()`\n * before making requests, and `client.close()` when done.\n *\n * @example\n * ```ts\n * const client = createServiceClient();\n * await connectServiceClient(client);\n * const status = await client.daemon.status();\n * client.close();\n * ```\n */\nexport function createServiceClient(): VrekoLocalClient {\n\treturn new VrekoLocalClient({\n\t\ttimeout: 30_000,\n\t\tautoReconnect: false, // CLI is one-shot, no reconnect needed\n\t});\n}\n\n/**\n * Connect and initialize a service client.\n * Convenience function for the common connect+initialize pattern.\n */\nexport async function connectServiceClient(client: VrekoLocalClient): Promise<void> {\n\tawait client.connect();\n\tawait client.initialize({\n\t\tprotocolVersion: \"1.0.0\",\n\t\tclientInfo: { name: \"vreko-cli\", version: \"1.0.0\" },\n\t\tcapabilities: { notifications: false },\n\t});\n}\n\n// =============================================================================\n// LEARNING IPC METHODS (Day 5: daemon-first architecture)\n// =============================================================================\n\n/**\n * Learning prune result from daemon\n */\nexport interface DaemonPruneResult {\n\tpruned: number;\n\tremaining: number;\n\tarchived?: number;\n}\n\n/**\n * Learning GC result from daemon\n */\nexport interface DaemonGcResult {\n\toperation: string;\n\tdryRun: boolean;\n\tarchived: number;\n\tdeleted: number;\n\tremaining: number;\n}\n\n/**\n * Learning list result from daemon\n */\nexport interface DaemonLearningListResult {\n\tlearnings: Array<{\n\t\ttype: string;\n\t\ttrigger: string;\n\t\taction: string;\n\t\trelevanceScore?: number;\n\t}>;\n\ttotal: number;\n}\n\n/**\n * Prune stale learnings via daemon IPC.\n * Day 5: Replaces direct StateStore usage in learning-pruner.ts\n */\nexport async function pruneLearningsViaDaemon(\n\tworkspaceRoot: string,\n\tclient: VrekoLocalClient,\n): Promise<{ success: boolean; result?: DaemonPruneResult; error?: string }> {\n\ttry {\n\t\tconst result = await client.learning.prune({ workspace: workspaceRoot });\n\t\treturn { success: true, result };\n\t} catch (error) {\n\t\treturn { success: false, error: error instanceof Error ? error.message : String(error) };\n\t}\n}\n\n/**\n * Run learning garbage collection via daemon IPC.\n */\nexport async function gcLearningsViaDaemon(\n\tworkspaceRoot: string,\n\tclient: VrekoLocalClient,\n\toptions?: { operation?: string; dryRun?: boolean },\n): Promise<{ success: boolean; result?: DaemonGcResult; error?: string }> {\n\ttry {\n\t\tconst result = await client.call(\"learning/gc\", {\n\t\t\tworkspace: workspaceRoot,\n\t\t\toperation: (options?.operation ?? \"all\") as \"all\" | \"stale\" | \"orphaned\" | undefined,\n\t\t\tdryRun: options?.dryRun ?? true,\n\t\t});\n\t\treturn { success: true, result: result as DaemonGcResult };\n\t} catch (error) {\n\t\treturn { success: false, error: error instanceof Error ? error.message : String(error) };\n\t}\n}\n\n/**\n * List learnings via daemon IPC.\n */\nexport async function listLearningsViaDaemon(\n\tworkspaceRoot: string,\n\tclient: VrekoLocalClient,\n\tlimit?: number,\n): Promise<{ success: boolean; result?: DaemonLearningListResult; error?: string }> {\n\ttry {\n\t\tconst result = await client.learning.list({ workspace: workspaceRoot, limit: limit ?? 50 });\n\t\treturn { success: true, result };\n\t} catch (error) {\n\t\treturn { success: false, error: error instanceof Error ? error.message : String(error) };\n\t}\n}\n\n/**\n * Search learnings via daemon IPC.\n */\nexport async function searchLearningsViaDaemon(\n\tworkspaceRoot: string,\n\tclient: VrekoLocalClient,\n\tkeywords: string[],\n\tlimit?: number,\n): Promise<{ success: boolean; result?: DaemonLearningListResult; error?: string }> {\n\ttry {\n\t\tconst result = await client.learning.search({\n\t\t\tworkspace: workspaceRoot,\n\t\t\tkeywords,\n\t\t\tlimit: limit ?? 10,\n\t\t});\n\t\treturn { success: true, result };\n\t} catch (error) {\n\t\treturn { success: false, error: error instanceof Error ? error.message : String(error) };\n\t}\n}\n\n// =============================================================================\n// SESSION IPC METHODS (Day 5: daemon-first architecture)\n// =============================================================================\n\n/**\n * Session result from daemon\n */\nexport interface DaemonSessionResult {\n\tid: string;\n\tname?: string;\n\tworkspacePath?: string;\n\tmetadata?: Record<string, unknown>;\n\tcreatedAt: string;\n\tlastActivityAt: string;\n}\n\n/**\n * Create session via daemon IPC.\n */\nexport async function createSessionViaDaemon(\n\tclient: VrekoLocalClient,\n\tparams?: { name?: string; workspacePath?: string; metadata?: Record<string, unknown> },\n): Promise<{ success: boolean; result?: DaemonSessionResult; error?: string }> {\n\ttry {\n\t\t// workspacePath! preserves the runtime semantics of the original raw call:\n\t\t// when params?.workspacePath is undefined the daemon receives undefined (same\n\t\t// as before); the typed method signature requires string but the previous\n\t\t// untyped client.call() passed undefined unchanged.\n\t\tconst session = await client.session.start({\n\t\t\tworkspacePath: params?.workspacePath!,\n\t\t\tmetadata: params?.metadata as { editorName?: string; editorVersion?: string } | undefined,\n\t\t});\n\t\treturn {\n\t\t\tsuccess: true,\n\t\t\tresult: {\n\t\t\t\tid: session.id,\n\t\t\t\tname: (session as { name?: string }).name,\n\t\t\t\tworkspacePath: session.workspacePath,\n\t\t\t\tmetadata: session.metadata,\n\t\t\t\tcreatedAt: session.startedAt,\n\t\t\t\tlastActivityAt: session.lastActivityAt,\n\t\t\t},\n\t\t};\n\t} catch (error) {\n\t\treturn { success: false, error: error instanceof Error ? error.message : String(error) };\n\t}\n}\n\n/**\n * End session via daemon IPC.\n */\nexport async function endSessionViaDaemon(\n\tclient: VrekoLocalClient,\n\tsessionId: string,\n\tworkspacePath: string,\n): Promise<{ success: boolean; error?: string }> {\n\ttry {\n\t\tawait client.call(\"session/end-daemon\", { sessionId, workspacePath });\n\t\treturn { success: true };\n\t} catch (error) {\n\t\treturn { success: false, error: error instanceof Error ? error.message : String(error) };\n\t}\n}\n\n/**\n * Get session status via daemon IPC.\n */\nexport async function getSessionStatusViaDaemon(\n\tclient: VrekoLocalClient,\n\tsessionId: string,\n\tworkspacePath: string,\n): Promise<{ success: boolean; result?: DaemonSessionResult; error?: string }> {\n\ttry {\n\t\tconst result = await client.call(\"session/status\", { sessionId, workspacePath });\n\t\treturn { success: true, result: result as DaemonSessionResult };\n\t} catch (error) {\n\t\treturn { success: false, error: error instanceof Error ? error.message : String(error) };\n\t}\n}\n\n// =============================================================================\n// DISPLAY UTILITIES\n// =============================================================================\n// Migrated from platform.ts during daemon merge cleanup.\n\n/**\n * Format duration in human-readable form\n */\nexport function formatDuration(ms: number): string {\n\tconst seconds = Math.floor(ms / 1000);\n\tconst minutes = Math.floor(seconds / 60);\n\tconst hours = Math.floor(minutes / 60);\n\tconst days = Math.floor(hours / 24);\n\n\tif (days > 0) {\n\t\treturn `${days}d ${hours % 24}h`;\n\t}\n\tif (hours > 0) {\n\t\treturn `${hours}h ${minutes % 60}m`;\n\t}\n\tif (minutes > 0) {\n\t\treturn `${minutes}m ${seconds % 60}s`;\n\t}\n\treturn `${seconds}s`;\n}\n\n/**\n * Format bytes in human-readable form\n */\nexport function formatBytes(bytes: number): string {\n\tconst units = [\"B\", \"KB\", \"MB\", \"GB\"];\n\tlet unitIndex = 0;\n\tlet value = bytes;\n\n\twhile (value >= 1024 && unitIndex < units.length - 1) {\n\t\tvalue /= 1024;\n\t\tunitIndex++;\n\t}\n\n\treturn `${value.toFixed(1)}${units[unitIndex]}`;\n}\n\n/**\n * Get the daemon log file path (~/.vreko/daemon/daemon.log)\n */\nexport function getLogPath(): string {\n\treturn join(homedir(), \".vreko\", \"daemon\", \"daemon.log\");\n}\n\n// =============================================================================\n// BACKWARD COMPATIBILITY ALIASES\n// =============================================================================\n// These preserve the old function names from platform.ts during migration.\n\nexport { isServiceRunning as isDaemonRunning };\nexport { getServiceSocketPath as getSocketPath };\nexport { getServicePidPath as getPidPath };\n\n// =============================================================================\n// VERSION DETECTION & HEALTH CHECK\n// =============================================================================\n\n/**\n * Daemon generation identifier\n * Gen1 (legacy) - removed, only Gen2 supported\n */\nexport const DAEMON_GENERATION = 2;\n\n/**\n * Get daemon version info for health checks\n */\nexport function getDaemonVersion(): { generation: number; version: string } {\n\treturn {\n\t\tgeneration: DAEMON_GENERATION,\n\t\tversion: \"2.0.0\", // Should match local-service package.json version\n\t};\n}\n"]}
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env node
2
+ import { __name } from './chunk-EWOJGXRX.js';
3
+ import { z } from 'zod';
4
+
5
+ process.env.VREKO_CLI='true';process.env.NODE_NO_WARNINGS='1';
6
+ function isInteractive() {
7
+ return Boolean(process.stdout.isTTY) && !process.env.CI && !process.env.VREKO_PLAIN;
8
+ }
9
+ __name(isInteractive, "isInteractive");
10
+ function termWidth() {
11
+ return process.stdout.columns || 80;
12
+ }
13
+ __name(termWidth, "termWidth");
14
+ function supportsColor() {
15
+ return Boolean(process.stdout.isTTY) && !process.env.NO_COLOR;
16
+ }
17
+ __name(supportsColor, "supportsColor");
18
+ function visual(interactive, fallback) {
19
+ return isInteractive() ? interactive() : fallback();
20
+ }
21
+ __name(visual, "visual");
22
+ var TerminalCapabilities = z.object({
23
+ isTTY: z.boolean(),
24
+ isCI: z.boolean(),
25
+ width: z.number().int().min(40),
26
+ supportsColor: z.boolean()
27
+ });
28
+ function detectCapabilities() {
29
+ return {
30
+ isTTY: Boolean(process.stdout.isTTY),
31
+ isCI: Boolean(process.env.CI),
32
+ width: termWidth(),
33
+ supportsColor: supportsColor()
34
+ };
35
+ }
36
+ __name(detectCapabilities, "detectCapabilities");
37
+ function getRenderMode() {
38
+ if (process.env.VREKO_JSON === "1" || process.env.VREKO_JSON === "true") {
39
+ return "json";
40
+ }
41
+ if (process.env.VREKO_PLAIN === "1" || !process.stdout.isTTY || process.env.CI) {
42
+ return "plain";
43
+ }
44
+ return "ink";
45
+ }
46
+ __name(getRenderMode, "getRenderMode");
47
+
48
+ export { TerminalCapabilities, detectCapabilities, getRenderMode, isInteractive, supportsColor, termWidth, visual };
49
+ //# sourceMappingURL=chunk-H7773ONB.js.map
50
+ //# sourceMappingURL=chunk-H7773ONB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/guards.ts"],"names":["isInteractive","Boolean","process","stdout","isTTY","env","CI","VREKO_PLAIN","termWidth","columns","supportsColor","NO_COLOR","visual","interactive","fallback","TerminalCapabilities","z","object","boolean","isCI","width","number","int","min","detectCapabilities","getRenderMode","VREKO_JSON"],"mappings":";;;;;AAcO,SAASA,aAAAA,GAAAA;AACf,EAAA,OACCC,OAAAA,CAAQC,OAAAA,CAAQC,MAAAA,CAAOC,KAAK,CAAA,IAAK,CAACF,OAAAA,CAAQG,GAAAA,CAAIC,EAAAA,IAAM,CAACJ,OAAAA,CAAQG,GAAAA,CAAIE,WAAAA;AAEnE;AAJgBP,MAAAA,CAAAA,aAAAA,EAAAA,eAAAA,CAAAA;AAST,SAASQ,SAAAA,GAAAA;AACf,EAAA,OAAON,OAAAA,CAAQC,OAAOM,OAAAA,IAAW,EAAA;AAClC;AAFgBD,MAAAA,CAAAA,SAAAA,EAAAA,WAAAA,CAAAA;AAOT,SAASE,aAAAA,GAAAA;AACf,EAAA,OAAOT,QAAQC,OAAAA,CAAQC,MAAAA,CAAOC,KAAK,CAAA,IAAK,CAACF,QAAQG,GAAAA,CAAIM,QAAAA;AACtD;AAFgBD,MAAAA,CAAAA,aAAAA,EAAAA,eAAAA,CAAAA;AAiBT,SAASE,MAAAA,CAAUC,aAAsBC,QAAAA,EAAiB;AAChE,EAAA,OAAOd,aAAAA,EAAAA,GAAkBa,WAAAA,EAAAA,GAAgBC,QAAAA,EAAAA;AAC1C;AAFgBF,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA;AAST,IAAMG,oBAAAA,GAAuBC,EAAEC,MAAAA,CAAO;AAC5Cb,EAAAA,KAAAA,EAAOY,EAAEE,OAAAA,EAAO;AAChBC,EAAAA,IAAAA,EAAMH,EAAEE,OAAAA,EAAO;AACfE,EAAAA,KAAAA,EAAOJ,EAAEK,MAAAA,EAAM,CAAGC,GAAAA,EAAG,CAAGC,IAAI,EAAA,CAAA;AAC5Bb,EAAAA,aAAAA,EAAeM,EAAEE,OAAAA;AAClB,CAAA;AAMO,SAASM,kBAAAA,GAAAA;AACf,EAAA,OAAO;IACNpB,KAAAA,EAAOH,OAAAA,CAAQC,OAAAA,CAAQC,MAAAA,CAAOC,KAAK,CAAA;IACnCe,IAAAA,EAAMlB,OAAAA,CAAQC,OAAAA,CAAQG,GAAAA,CAAIC,EAAE,CAAA;AAC5Bc,IAAAA,KAAAA,EAAOZ,SAAAA,EAAAA;AACPE,IAAAA,aAAAA,EAAeA,aAAAA;AAChB,GAAA;AACD;AAPgBc,MAAAA,CAAAA,kBAAAA,EAAAA,oBAAAA,CAAAA;AA+BT,SAASC,aAAAA,GAAAA;AAEf,EAAA,IAAIvB,QAAQG,GAAAA,CAAIqB,UAAAA,KAAe,OAAOxB,OAAAA,CAAQG,GAAAA,CAAIqB,eAAe,MAAA,EAAQ;AACxE,IAAA,OAAO,MAAA;AACR,EAAA;AAEA,EAAA,IAAIxB,OAAAA,CAAQG,GAAAA,CAAIE,WAAAA,KAAgB,GAAA,IAAO,CAACL,QAAQC,MAAAA,CAAOC,KAAAA,IAASF,OAAAA,CAAQG,GAAAA,CAAIC,EAAAA,EAAI;AAC/E,IAAA,OAAO,OAAA;AACR,EAAA;AAEA,EAAA,OAAO,KAAA;AACR;AAXgBmB,MAAAA,CAAAA,aAAAA,EAAAA,eAAAA,CAAAA","file":"chunk-H7773ONB.js","sourcesContent":["/**\n * CI/TTY Detection Guards\n *\n * Utility functions for detecting terminal capabilities and CI environments.\n * Used by all TUI views to decide between interactive Ink rendering vs chalk fallback.\n *\n * @module ui/guards\n */\n\nimport { z } from \"zod\";\n\n/**\n * Returns true when we're in an interactive terminal (not CI, not piped, not machine mode).\n */\nexport function isInteractive(): boolean {\n\treturn (\n\t\tBoolean(process.stdout.isTTY) && !process.env.CI && !process.env.VREKO_PLAIN // machine mode: VREKO_PLAIN=1 suppresses TUI\n\t);\n}\n\n/**\n * Returns the terminal column width, defaulting to 80 if unknown.\n */\nexport function termWidth(): number {\n\treturn process.stdout.columns || 80;\n}\n\n/**\n * Returns true when the terminal supports ANSI color output.\n */\nexport function supportsColor(): boolean {\n\treturn Boolean(process.stdout.isTTY) && !process.env.NO_COLOR;\n}\n\n/**\n * Conditionally run the interactive version or the plain fallback.\n * Use this to wrap all Ink renders - if not interactive, fall back to chalk output.\n *\n * @example\n * visual(\n * () => renderInkView(<StatusView data={data} />),\n * () => printChalkStatus(data),\n * );\n *\n * // Machine mode suppression:\n * // VREKO_PLAIN=1 vr status → calls fallback (JSON output), skips TUI render\n */\nexport function visual<T>(interactive: () => T, fallback: () => T): T {\n\treturn isInteractive() ? interactive() : fallback();\n}\n\n// =============================================================================\n// TERMINAL CAPABILITIES SCHEMA\n// =============================================================================\n\n/** Zod schema for terminal capability detection - used by view contracts */\nexport const TerminalCapabilities = z.object({\n\tisTTY: z.boolean(),\n\tisCI: z.boolean(),\n\twidth: z.number().int().min(40),\n\tsupportsColor: z.boolean(),\n});\nexport type TerminalCapabilities = z.infer<typeof TerminalCapabilities>;\n\n/**\n * Detect and return current terminal capabilities.\n */\nexport function detectCapabilities(): TerminalCapabilities {\n\treturn {\n\t\tisTTY: Boolean(process.stdout.isTTY),\n\t\tisCI: Boolean(process.env.CI),\n\t\twidth: termWidth(),\n\t\tsupportsColor: supportsColor(),\n\t};\n}\n\n// =============================================================================\n// RENDER MODE DECISION - set once per command invocation in preAction hook\n// =============================================================================\n\n/**\n * Four-way render mode enum for CLI output routing.\n * - \"ink\" - interactive terminal, Ink TUI renderer\n * - \"clack\" - wizard-style flows (vr init, vr onboard); returned only by those commands locally\n * - \"json\" - structured JSON to stdout (VREKO_JSON=1 or --json flag)\n * - \"plain\" - non-TTY / CI / machine mode (VREKO_PLAIN=1 or no TTY)\n *\n * getRenderMode() never returns \"clack\" - wizard commands check cliState locally.\n */\nexport type RenderMode = \"ink\" | \"clack\" | \"json\" | \"plain\";\n\n/**\n * Determine the CLI render mode from environment signals.\n * Called ONCE per command invocation from the Commander preAction hook.\n * Commands read cliState.renderMode - they never call this directly.\n *\n * Priority order: json > plain > ink\n */\nexport function getRenderMode(): RenderMode {\n\t// JSON mode: VREKO_JSON env var (set by --json global flag or env)\n\tif (process.env.VREKO_JSON === \"1\" || process.env.VREKO_JSON === \"true\") {\n\t\treturn \"json\";\n\t}\n\t// Plain/machine mode: VREKO_PLAIN, no TTY, or CI environment\n\tif (process.env.VREKO_PLAIN === \"1\" || !process.stdout.isTTY || process.env.CI) {\n\t\treturn \"plain\";\n\t}\n\t// Interactive TTY: Ink TUI is the default renderer\n\treturn \"ink\";\n}\n"]}