@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/logger.js","../../../packages/contracts/dist/observability/InstrumentationProvider.js","../../../packages/contracts/dist/constants/sensitive-patterns.js","../../../packages/contracts/dist/calculation-trace.js","../../../packages/contracts/dist/context/daemon-identity.js","../../../packages/contracts/dist/context/daemon-state.js","../../../packages/contracts/dist/context/workspace.js","../../../packages/contracts/dist/api/attribution.js","../../../packages/contracts/dist/api/errors/codes.js","../../../packages/contracts/dist/api/errors/schemas.js","../../../packages/contracts/dist/api-tiers.js","../../../packages/contracts/dist/auth/errors.js","../../../packages/contracts/dist/auth/session.js","../../../packages/contracts/dist/auth/api.js","../../../packages/contracts/dist/auth/scopes.js","../../../packages/contracts/dist/auth/identity.js","../../../packages/contracts/dist/config/capability-taxonomy.js","../../../packages/contracts/dist/tiers.js","../../../packages/contracts/dist/entitlements.js","../../../packages/contracts/dist/errors/base.js","../../../packages/contracts/dist/errors/domain/base.js","../../../packages/contracts/dist/eventBus.emitter.js","../../../packages/contracts/dist/telemetry/events.js","../../../packages/contracts/dist/types/analysis.js","../../../packages/contracts/dist/events/core.js","../../../packages/contracts/dist/events/accountability.js","../../../packages/contracts/dist/claims/base.js","../../../packages/contracts/dist/claims/families/attribution.js","../../../packages/contracts/dist/claims/families/completion.js","../../../packages/contracts/dist/claims/families/prediction.js","../../../packages/contracts/dist/claims/families/verdict.js","../../../packages/contracts/dist/claims/registry.js","../../../packages/contracts/dist/events/claims.js","../../../packages/contracts/dist/events/spine/attribution.js","../../../packages/contracts/dist/events/spine/envelope.js","../../../packages/contracts/dist/events/spine/domains/snapshot.js","../../../packages/contracts/dist/events/spine/domains/session.js","../../../packages/contracts/dist/events/spine/domains/risk.js","../../../packages/contracts/dist/events/spine/domains/learning.js","../../../packages/contracts/dist/events/spine/domains/file.js","../../../packages/contracts/dist/events/spine/index.js","../../../packages/contracts/dist/features.js","../../../packages/contracts/dist/feature-manager.js","../../../packages/contracts/dist/flywheel/queue.js","../../../packages/contracts/dist/flywheel/reflection.js","../../../packages/contracts/dist/flywheel/scopes.js","../../../packages/contracts/dist/observability/types.js","../../../packages/contracts/dist/pioneer/events.js","../../../packages/contracts/dist/pioneer/schemas.js","../../../packages/contracts/dist/primitives/cloud-event.js","../../../packages/contracts/dist/primitives/tool-urn.js","../../../packages/contracts/dist/primitives/tool-invocation.js","../../../packages/contracts/dist/primitives/execution-pipeline.js","../../../packages/contracts/dist/primitives/file-lease.js","../../../packages/contracts/dist/saga/tier-upgrade-saga.js","../../../packages/contracts/dist/schemas.js","../../../packages/contracts/dist/session.js","../../../packages/contracts/dist/session/base-payload.js","../../../packages/contracts/dist/session/file-modification.js","../../../packages/contracts/dist/signals/index.js","../../../packages/contracts/dist/sync-payload.js","../../../packages/contracts/dist/task.js","../../../packages/contracts/dist/types/billing.js","../../../packages/contracts/dist/types/config.js","../../../packages/contracts/dist/types/protection.js","../../../packages/contracts/dist/types/snapshot.js","../../../packages/contracts/dist/dashboard/dashboard-data.js","../../../packages/contracts/dist/dashboard/metrics.js","../../../packages/contracts/dist/dashboard/pioneer.js","../../../packages/contracts/dist/types/ai.js","../../../packages/contracts/dist/types/auth.js","../../../packages/contracts/dist/types/risk.js","../../../packages/contracts/dist/types/session.js","../../../packages/contracts/dist/boundary/index.js"],"names":["_loggerFactory","getLoggerFactory","LogLevel","createLogger","options","name","level","INFO","timestamps","debug","messageOrObj","metaOrMsg","DEBUG","info","warn","WARN","error","ERROR","NoOpInstrumentationProvider","noopSpan","setAttribute","setAttributes","addEvent","setStatus","recordException","end","isRecording","startSpan","_name","_options","withSpan","fn","injectContext","_carrier","extractContext","recordMetric","_value","_attributes","recordEvent","shutdown","SENSITIVE_PATTERNS","ImplicitRollbackBucketSchema","z","object","count","number","int","min","weightedSum","strict","RollbackRateTraceSchema","explicit","implicitAIAttributed","implicitUnattributed","totalModifications","computedRate","max","FragilityPillarTraceSchema","pillar","enum","weight","rawValue","contribution","FragilityTraceSchema","pillars","array","rawScore","computedScore","TrustScoreTraceSchema","agentRollbackRate","workspaceAvgRollbackRate","observationCount","priorWeight","calculatedAt","string","datetime","workspaceId","fragility","rollbackRate","trustScore","DaemonTierSchema","userId","nullable","email","tier","default","pioneer","boolean","cohort","keyPreview","authenticatedVia","tokenExpiresAt","coerce","date","lastValidatedAt","isStale","version","literal","lastIdentityValidatedAt","startCount","lastStartedAt","WorkspaceRegistrationSchema","id","path","alias","optional","ownership","teamId","createdAt","lastSeenAt","stackSummary","detectedAt","repoType","primaryLanguage","buildSystem","packageManager","detectedAiTools","estimatedFileCount","estimatedContributors","hasCI","hasTests","criticalPaths","detectionFailed","detectionError","shouldMergeAttribution","existing","incoming","source","campaignId","ApiErrorCodeSchema","ValidationErrorDetailSchema","field","describe","message","code","details","union","record","unknown","requestId","timestamp","ApiTierSchema","ApiFeatureSchema","RateLimitConfigSchema","requestsPerMinute","positive","requestsPerDay","maxBatchSize","maxPayloadBytes","description","features","rateLimits","priceMonthly","nonnegative","priceYearly","uuid","key","regex","organizationId","expiresAt","lastUsedAt","isActive","keyId","endpoint","requestCount","bytesProcessed","period","AuthErrorCodeSchema","AuthErrorSchema","UserRoleSchema","AuthUserSchema","image","url","emailVerified","updatedAt","role","SessionSchema","userAgent","ipAddress","SessionWithUserSchema","session","user","discriminatedUnion","status","PasswordSchema","EmailSchema","toLowerCase","trim","password","success","rememberMe","null","currentPassword","newPassword","provider","callbackURL","AuthScope","pioneerCohort","referralCode","invitedBy","OrgType","OrgRole","type","stripeCustomerId","stripeSubscriptionId","metadata","saml","entryPoint","issuer","cert","orgId","createdBy","scopes","revokedAt","deviceCode","userCode","verificationUri","expiresIn","interval","accessToken","refreshToken","riskClasses","defaultSandbox","requiresAuth","requiresSnapshot","maxConcurrent","timeoutMs","requiresApproval","categories","namespace","defaultRiskClass","tools","urn","category","riskClass","caps","requiredPermissions","requiredFeatures","minTier","inputSchema","properties","any","required","permissions","scope","requiresTier","sandboxes","capabilities","restrictions","implementation","isTierBypassEnabled","process","env","VREKO_BYPASS_TIER_RESTRICTIONS","getEffectiveTier","actualTier","TIER_FEATURES","free","pro","team","enterprise","TIER_LIMITS","cloud_backup","api_access","unlimited_workspaces","getTierFeatures","effectiveTier","isFeatureAvailableAtTier","feature","includes","getTierLimit","extractErrorCode","toUpperCase","replace","undefined","ErrorCategory","VrekoEvent","QoSLevel","MCP_QUIET","TELEMETRY_EVENTS","EXTENSION_ACTIVATED","EXTENSION_DEACTIVATED","COMMAND_EXECUTION","SNAPSHOT_CREATED","VREKO_USED","SNAPBACK_USED","RISK_DETECTED","VIEW_ACTIVATED","NOTIFICATION_SHOWN","FEATURE_USED","WALKTHROUGH_STEP_COMPLETED","ONBOARDING_PROTECTION_ASSIGNED","ONBOARDING_PHASE_PROGRESSED","ONBOARDING_CONTEXTUAL_PROMPT_SHOWN","SIGNATURE_VERIFICATION_SUCCESS","SIGNATURE_VERIFICATION_FAILED","RULES_CACHED_FALLBACK","VITALS_TRAJECTORY_CHANGED","VITALS_CRITICAL_STATE","VITALS_AUTO_SNAPSHOT","VITALS_NUDGE_SHOWN","validateTelemetryEvent","event","validateExtensionActivatedEvent","validateExtensionDeactivatedEvent","validateCommandExecutionEvent","validateSnapshotCreatedEvent","validateVrekoUsedEvent","validateSnapBackUsedEvent","validateRiskDetectedEvent","validateViewActivatedEvent","validateNotificationShownEvent","validateFeatureUsedEvent","validateErrorEvent","validateWalkthroughStepCompletedEvent","validateOnboardingProtectionAssignedEvent","validateOnboardingPhaseProgressedEvent","validateOnboardingContextualPromptShownEvent","validateSignatureVerificationSuccessEvent","validateSignatureVerificationFailedEvent","validateRulesCachedFallbackEvent","validateVitalsTrajectoryChangedEvent","validateVitalsCriticalStateEvent","validateVitalsAutoSnapshotEvent","validateVitalsNudgeShownEvent","vscodeVersion","Object","keys","length","command","duration","method","filesCount","filesRestored","riskLevel","Array","isArray","patterns","confidence","viewId","notificationType","actionTaken","errorType","errorMessage","stepId","stepTitle","trigger","fileType","isFirstProtection","phase","unlockedFeatures","promptType","VALID_TRAJECTORIES","VALID_TEMP_LEVELS","previousTrajectory","newTrajectory","pressure","oxygen","tempLevel","unsnapshotedChanges","trajectory","suggestion","SeveritySchema","RiskSeveritySchema","ValidationSeveritySchema","BaseIssueSchema","severity","line","fix","extend","file","column","snippet","rule","passed","issues","CircuitBreakerStateEnumSchema","state","failures","threshold","lastFailure","cooldownMs","extendZodWithOpenApi","EVENT_VERSION","BaseEventSchema","event_version","openapi","example","Date","now","SaveAttemptSchema","protection","file_kind","reason","ai_present","ai_burst","outcome","SnapshotCreatedSchema","session_id","snapshot_id","bytes_original","bytes_stored","dedup_hit","latency_ms","SessionFinalizedSchema","files","triggers","duration_ms","highest_severity","ai_assist_level","ai_confidence_score","ai_provider","ai_large_insert_count","ai_total_chars","context","IssueCreatedSchema","issue_id","recommendation","IssueResolvedSchema","resolution","SessionRestoredSchema","files_restored","time_to_restore_ms","PolicyChangedSchema","pattern","from","to","AuthProviderSelectedSchema","AuthBrowserOpenedSchema","AuthCodeEntrySchema","code_format","time_to_enter_ms","attempts","code_length","AuthApprovalReceivedSchema","polling_attempts","total_wait_ms","device_code_expired","WelcomeFeatureViewedSchema","position","WelcomeActionTriggeredSchema","action","time_viewed_ms","PerceivedHelpSchema","ActualChangesSchema","files_modified","lines_added","lines_removed","snapshots_used","PreventedIssuesSchema","rollbacks_avoided","pattern_violations_caught","skipped_tests_flagged","TierSchema","session_duration_ms","perceived_help","actual_changes","prevented_issues","ClaimSubjectKind","ClaimantUrn","EvidenceGate","output","BaseClaim","claimId","claimedAt","claimant","claimType","claimFamily","subject","kind","ref","evidence","gates","referenced","OutcomeType","Outcome","outcomeId","observedAt","outcomeType","delta","predicted","actual","AttributionSource","claim","toolUrn","confidenceRationale","indicators","CompletionStatus","completedGates","totalGates","PredictedOutcomeType","PredictionWindow","days","since","window","rationale","modelVersion","VerdictStatus","criteria","REGISTERED_CLAIMANTS","CLAIMS_EVENT_VERSION","payload","workspaceHash","expiredAt","toolUrnPattern","toolUrnSchema","attributionSourceSchema","toolAttributionSchema","userAttributionSchema","systemAttributionSchema","unknownAttributionSchema","attributionSchema","uuidv7Pattern","uuidv7Schema","sha256Pattern","sha256Schema","eventTypePattern","eventTypeSchema","spineEnvelopeSchema","eventId","schemaVersion","eventType","occurredAt","attribution","spineOptionalFieldsSchema","sessionId","userHash","orgHash","filePathHash","createSpineEventSchema","dataSchema","merge","data","snapshotTriggerSchema","riskLevelSchema","snapshotRiskSchema","score","snapshotBlobCreatedDataSchema","snapshotId","contentHash","sizeBytes","risk","toolConfidence","snapshotBlobCreatedSchema","SNAPSHOT_BLOB_CREATED","snapshotBlobRestoredDataSchema","originalCreatedAt","durationMs","snapshotBlobRestoredSchema","SNAPSHOT_BLOB_RESTORED","snapshotBlobDeletedDataSchema","snapshotIds","bytesFreed","snapshotBlobDeletedSchema","SNAPSHOT_BLOB_DELETED","snapshotMetadataUpdatedDataSchema","updatedFields","previousRisk","newRisk","snapshotMetadataUpdatedSchema","SNAPSHOT_METADATA_UPDATED","SNAPSHOT_EVENT_SCHEMAS","coherenceAssessmentSchema","sessionOutcomeSchema","sessionLifecycleStartedDataSchema","task","startedAt","initialCoherence","clientType","sessionLifecycleStartedSchema","SESSION_LIFECYCLE_STARTED","sessionLifecycleEndedDataSchema","endedAt","finalCoherence","snapshotCount","rollbackCount","sessionLifecycleEndedSchema","SESSION_LIFECYCLE_ENDED","sessionCoherenceUpdatedDataSchema","assessment","clusterCount","elapsedMs","sessionCoherenceUpdatedSchema","SESSION_COHERENCE_UPDATED","sessionCheckpointCreatedDataSchema","checkpointId","coherenceAtCheckpoint","changeCount","sessionCheckpointCreatedSchema","SESSION_CHECKPOINT_CREATED","SESSION_EVENT_SCHEMAS","riskScoreSchema","riskSignalFatigueDetectedDataSchema","riskBoost","rapidAcceptRatio","windowMs","suggestionCount","riskSignalFatigueDetectedSchema","RISK_SIGNAL_FATIGUE_DETECTED","riskSignalFragileDetectedDataSchema","fragilityScore","snapshotHash","riskSignalFragileDetectedSchema","RISK_SIGNAL_FRAGILE_DETECTED","riskSignalPoisoningDetectedDataSchema","fingerprint","distinctSessions","toolFingerprints","riskSignalPoisoningDetectedSchema","RISK_SIGNAL_POISONING_DETECTED","riskScoreUpdatedDataSchema","previousScore","previousLevel","factors","impact","riskScoreUpdatedSchema","RISK_SCORE_UPDATED","RISK_EVENT_SCHEMAS","learningTypeSchema","learningConfidenceSchema","learningPatternRecordedDataSchema","patternId","occurrenceCount","firstObservedAt","featureHash","isValidated","learningPatternRecordedSchema","LEARNING_PATTERN_RECORDED","learningPatternPromotedDataSchema","previousConfidence","newConfidence","outcomeRatio","promotedAt","learningPatternPromotedSchema","LEARNING_PATTERN_PROMOTED","learningPatternPrunedDataSchema","oldestPatternAgeMs","prunedAt","learningPatternPrunedSchema","LEARNING_PATTERN_PRUNED","learningAnnotationAddedDataSchema","annotationId","tag","riskSignal","direction","magnitude","annotatedAt","learningAnnotationAddedSchema","LEARNING_ANNOTATION_ADDED","LEARNING_EVENT_SCHEMAS","fileOperationSchema","fileCategorySchema","fileWatchModifiedDataSchema","operation","sizeChangeBytes","linesChanged","aiAttributed","timeSinceLastModifyMs","fileWatchModifiedSchema","FILE_WATCH_MODIFIED","fileWatchBatchDataSchema","fileCount","operations","create","modify","delete","rename","configuration","documentation","test","asset","other","fileWatchBatchSchema","FILE_WATCH_BATCH","fileProtectionChangedDataSchema","newLevel","riskScore","fileProtectionChangedSchema","FILE_PROTECTION_CHANGED","FILE_EVENT_SCHEMAS","FEATURE_FLAGS","logger","FeatureManager","instance","flags","Map","posthogClient","value","entries","set","loadEnvironmentOverrides","getInstance","isEnabled","flag","get","Math","random","Boolean","getValue","setFlag","setPostHogClient","client","getPostHogClient","isEnabledAsync","defaultSubscriptionTier","VREKO_DEFAULT_SUBSCRIPTION_TIER","posthogContext","subscriptionTier","result","isFeatureEnabled","enabled","Error","String","envVar","envValue","Number","isNaN","reset","clear","ingestId","enabledFeatures","maxReflectionTokens","userOutcome","MissingContextCategorySchema","MissingContextItemSchema","affectedFiles","ConfidenceGapItemSchema","filePath","confidenceScore","ContributingFactorSchema","missingContext","confidenceGaps","wouldHaveChangedApproach","contributingFactors","rawSummary","generatedBy","OrgModeSchema","personal","global","org","mode","SpanStatusCode","SpanKind","PIONEER_EVENTS","INVITE_CODE_REDEEMED","CLI_INSTALLED","EXTENSION_INSTALLED","FIRST_SESSION","FIRST_SNAPSHOT","FIRST_CEREMONY","FIRST_INTELLIGENCE_FILE_CARD","FIRST_RECOVERY","IDE_VALUES","AI_TOOL_VALUES","transform","e","intent","turnstileToken","codeRegex","primaryIde","aiTools","specversion","datacontenttype","dataschema","time","traceid","workspaceid","userid","sessionid","toolurn","riskclass","sandboxed","privacysig","ToolURNSchema","brand","AGENT_RUNTIMES","SANDBOX_LEVELS","RISK_CLASSES","CHANNELS","SessionContextSchema","channel","openclawSessionId","channelUserId","IdentityContextSchema","anonymousId","entitlements","limits","apiKeyId","ToolSpecSchema","ExecutionContextSchema","agentRuntime","sandboxLevel","snapshotBefore","retry","maxAttempts","backoffMs","traceId","identity","tool","args","parentTraceId","labels","requestHash","PipelineStepResultSchema","step","steps","auditId","PIPELINE_STEPS","skipSteps","continueOnNonCriticalFailure","acquired","leaseId","conflicts","heldBy","hasConflicts","blocking","safeFiles","blockedFiles","acquiredAt","ttlMs","active","extensionCount","TIER_UPGRADE_SAGA","sagaType","maxRetries","persistenceInterval","stepName","execute","_input","compensate","typedOutput","subscriptionId","retryable","timeout","previousTier","previousVersion","emailJobId","DiffChangeSchema","added","removed","RiskScoreDetailSchema","metrics","trends","insights","snapshotRecommendations","shouldCreateSnapshot","urgency","suggestedTiming","content","meta","changes","before","after","RetrySchema","retries","factor","jitter","CircuitSchema","errorThresholdPercentage","volumeThreshold","resetMs","rollingCountMs","rollingCountBuckets","circuit","batch","size","maxWaitMs","debounceMs","awaitWriteFinish","stabilityThreshold","pollInterval","ignored","SessionSchemaVersion","ChangeOpSchema","EOLTypeSchema","SessionTriggerSchema","SessionChangeSchema","p","op","hOld","hNew","sizeBefore","sizeAfter","mtimeBefore","mtimeAfter","modeBefore","modeAfter","eolBefore","eolAfter","schema","workspaceUri","filesChanged","snapshots","activeOnly","finalizedOnly","limit","offset","idleMs","flushBatchSize","flushIntervalMs","useVSCodeWatcher","ignorePatterns","consent","SessionFileSummarySchema","aiTool","aiConfidence","serviceTag","RiskTimelineEntrySchema","RollbackEventSummarySchema","triggerReason","filesAffected","riskScoreAtTrigger","AIToolAttributionSchema","changesAttributed","ConsentSnapshotSchema","personalSyncEnabled","sharedLearningEnabled","consentedAt","promptVersion","externalSessionId","consentSnapshot","filesTouched","serviceBoundariesCrossed","peakRiskScore","riskScoreTimeline","riskEventCount","rollbackEvents","aiToolsActive","aiAttributedChangeRatio","ModificationSourceSchema","ModificationTypeSchema","extensionIds","velocity","charCount","AiDetectionOutputSchema","ThreatPatternSchema","ThreatDetectionOutputSchema","threatCount","BurstDetectionOutputSchema","isBurst","ComplexityFileInputSchema","lineCount","ComplexityAnalysisOutputSchema","avgComplexity","maxComplexity","highComplexityFiles","signal","triggered","signals","ai","threats","burst","complexity","overallRisk","triggeredSignals","processingTimeMs","SignalTypeSchema","learningCount","touchedFileCount","riskScores","TaskStatusSchema","TaskOutcomeSchema","slug","closedAt","ceremonyJson","continuesFrom","migrationSource","TaskEventTypeSchema","taskId","seq","payloadJson","FileActionSchema","TaskFileSchema","hashBefore","hashAfter","LearningCategorySchema","LearningConfidenceSchema","TaskLearningSchema","connectedAt","disconnectedAt","CeremonyMetricsSchema","filesModified","filesCreated","filesDeleted","learningsCaptured","pulsesRecorded","sessionsCount","totalFileOperations","CeremonyDurationSchema","firstSessionStart","lastSessionEnd","totalActiveTimeMs","QualityGateStatusSchema","allPassed","auditPassed","lintClean","testsPass","CeremonySchema","taskName","learnings","fileChanges","qualityGates","briefingForNextTask","BriefingModeSchema","BriefingSchema","recentCeremonySummary","recentLearnings","activeWarnings","continuedCeremony","lineageChain","hasCounterSuffix","counterValue","continues","resumed","autoEnded","briefing","PulseFocusSchema","PulseEnrichmentSchema","observations","focus","query","enrichment","WorkspaceVitalsSchema","typecheckPass","gitBranch","hasUncommittedChanges","modifiedFilesCount","errorDetails","hasActiveTask","vitals","recommendations","pulseSeq","insight","learningId","isNew","taskLearningsCount","VrekoEndFeedbackSchema","rating","notes","summary","force","feedback","blocked","ceremony","gateFailures","PurchaseTypeEnum","customerId","productId","ConfigFileTypeSchema","SupportedLanguageSchema","FileBaselineSchema","hash","language","critical","baseline","valid","errors","warnings","autoDetect","watchChanges","autoProtect","customPatterns","includePatterns","excludePatterns","ProtectionLevelSchema","icon","label","color","themeColor","ProtectedFileSchema","addedAt","PatternRuleSchema","ProtectionConfigSchema","defaultLevel","autoProtectConfigs","config","persistRegistry","registryPath","isProtected","DEFAULT_CRITICAL_PATTERNS","freeze","EXTENDED_PATTERNS","SnapshotTriggerSchema","SnapshotOriginSchema","SnapshotReasonCodeSchema","CheckpointTypeSchema","SnapshotSchema","fileContents","FileStateSchema","encrypted","iv","algorithm","CompressionCodecSchema","SnapshotFileRefV2Schema","blobHash","codec","fileStates","iconColor","origin","protected","timeSinceLastChangeMs","FileDiffSchema","linesAdded","linesRemoved","preview","currentChecksum","snapshotChecksum","DiffPreviewSchema","totalFiles","totalLinesAdded","totalLinesRemoved","diffs","ConflictReportSchema","restoredFiles","diffPreview","verification","allVerified","results","verified","checksum","expected","enableDeduplication","namingStrategy","maxSnapshots","lastModified","totalSize","tags","parentSeq","parentId","anchorFile","compressionRatio","storageSizeBytes","reasons","aiDetection","detected","blob","newBlobsWritten","dedupedFiles","dedupRatio","bytesWritten","originalSize","bytesSaved","start","fileStats","total","byLanguage","byRisk","snapshotStats","frequency","averageSize","activity","DashboardSnapshotSchema","LearningDataSchema","day","learned","AttributionDataSchema","DashboardDataSchema","patternsCaught","activeSessions","userName","userInitials","learningVelocity","aiAttribution","totalLearned","growthPercentage","DashboardDataErrorSchema","PROTECTION_STATUSES","RECENT_ACTIVITY_ACTIONS","AI_TOOLS","RecentActivitySchema","ai_tool","AIActivityBreakdownSchema","copilot","cursor","claude","windsurf","DashboardMetricsSchema","protection_status","total_snapshots","total_recoveries","files_protected","ai_detection_rate","recent_activity","ai_breakdown","DashboardMetricsErrorSchema","EVENT_TYPES","RISK_LEVELS","FILE_CATEGORIES","DAYS_OF_WEEK","PIONEER_TIERS","ProtectionSchema","risksPrevented","weekLabel","TimelineEventSchema","hour","blast","HeatmapFileSchema","aiRatio","cat","AIAttributionSchema","DailyActivitySchema","human","prevented","WeeklyVelocitySchema","week","accuracy","PioneerSchema","tierIndex","recentUnlock","QuickInsightsSchema","sessionsThisWeek","avgSessionMinutes","coherencePercent","preventedToRecoveredRatio","fragileFileCount","fragileHotspots","UserInfoSchema","SessionMetricsSchema","activeSessionCount","lastActivityTime","PioneerDashboardSchema","computedAt","sessionMetrics","timeline","heatmap","weekly","PioneerDashboardSuccessSchema","digest","stalenessMinutes","PioneerDashboardEmptySchema","PioneerDashboardErrorSchema","toISOString","AIToolSchema","RiskLevelSchema","SessionStateSchema","pid","JsonRpcMessageSchema","device_code","user_code","verification_uri","verification_uri_complete","expires_in","access_token","token_type","refresh_token","license_tier","seats"],"mappings":"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","file":"chunk-WZEZLVOW.js","sourcesContent":["/**\n * Minimal logging interface for public packages\n *\n * This interface allows public packages (@vreko/sdk, @vreko/core, @vreko/mcp-server)\n * to log without depending on the private @vreko/infrastructure package.\n *\n * Browser-safe: No dynamic requires, no node:fs dependencies\n * Server packages can enhance this with infrastructure logger via DI using registerLoggerFactory()\n *\n * Private packages can use the full @vreko/infrastructure implementation,\n * which provides advanced features like structured logging, log levels, etc.\n */\n// Global logger factory registry for server-side enhancement\nlet _loggerFactory = null;\n/**\n * Register an enhanced logger factory (called by server packages)\n * This allows @vreko/infrastructure to enhance logging without\n * being a compile-time dependency.\n *\n * @example\n * ```typescript\n * // In @vreko/infrastructure/src/index.ts\n * import { registerLoggerFactory } from '@vreko/contracts'\n * registerLoggerFactory((options) => createPinoLogger(options))\n * ```\n */\nexport function registerLoggerFactory(factory) {\n _loggerFactory = factory;\n}\n/**\n * Get the registered logger factory, if any\n * @internal\n */\nfunction getLoggerFactory() {\n return _loggerFactory;\n}\n/**\n * Log levels\n */\nexport var LogLevel;\n(function (LogLevel) {\n LogLevel[LogLevel[\"DEBUG\"] = 0] = \"DEBUG\";\n LogLevel[LogLevel[\"INFO\"] = 1] = \"INFO\";\n LogLevel[LogLevel[\"WARN\"] = 2] = \"WARN\";\n LogLevel[LogLevel[\"ERROR\"] = 3] = \"ERROR\";\n LogLevel[LogLevel[\"SILENT\"] = 4] = \"SILENT\";\n})(LogLevel || (LogLevel = {}));\n/**\n * Enhanced logger that uses registered factory when available,\n * otherwise falls back to minimal console-based implementation\n *\n * @example\n * ```typescript\n * import { createLogger } from '@vreko/contracts'\n *\n * const logger = createLogger({ name: 'sdk' })\n * logger.info('SDK initialized')\n * logger.error('Failed to create snapshot', { error: err })\n * ```\n */\nexport function createLogger(options) {\n // If a logger factory has been registered (by @vreko/infrastructure), use it\n const factory = getLoggerFactory();\n if (factory) {\n return factory(options);\n }\n // Fallback to minimal console implementation\n const { name, level = LogLevel.INFO, timestamps = false } = options;\n const _formatMessage = (levelStr, message) => {\n const prefix = timestamps ? `[${new Date().toISOString()}] ` : \"\";\n return `${prefix}[${name}] ${levelStr}: ${message}`;\n };\n const _formatMeta = (meta) => {\n if (!meta) {\n return \"\";\n }\n if (meta instanceof Error) {\n return `\\n Error: ${meta.message}\\n Stack: ${meta.stack}`;\n }\n try {\n return `\n ${JSON.stringify(meta, null, 2)}`;\n }\n catch {\n return \"\\n [Circular or non-serializable metadata]\";\n }\n };\n return {\n debug(messageOrObj, metaOrMsg) {\n if (level <= LogLevel.DEBUG) {\n if (typeof messageOrObj === \"string\" && (!metaOrMsg || typeof metaOrMsg === \"object\")) {\n /* silent logger: no output */\n }\n else if (typeof messageOrObj === \"object\" && typeof metaOrMsg === \"string\") {\n /* silent logger: no output */\n }\n }\n },\n info(messageOrObj, metaOrMsg) {\n if (level <= LogLevel.INFO) {\n if (typeof messageOrObj === \"string\" && (!metaOrMsg || typeof metaOrMsg === \"object\")) {\n /* silent logger: no output */\n }\n else if (typeof messageOrObj === \"object\" && typeof metaOrMsg === \"string\") {\n /* silent logger: no output */\n }\n }\n },\n warn(messageOrObj, metaOrMsg) {\n if (level <= LogLevel.WARN) {\n if (typeof messageOrObj === \"string\" && (!metaOrMsg || typeof metaOrMsg === \"object\")) {\n /* silent logger: no output */\n }\n else if (typeof messageOrObj === \"object\" && typeof metaOrMsg === \"string\") {\n /* silent logger: no output */\n }\n }\n },\n error(messageOrObj, metaOrMsg) {\n if (level <= LogLevel.ERROR) {\n if (typeof messageOrObj === \"string\" && (!metaOrMsg || typeof metaOrMsg !== \"string\")) {\n /* silent logger: no output */\n }\n else if (typeof messageOrObj === \"object\" && typeof metaOrMsg === \"string\") {\n /* silent logger: no output */\n }\n }\n },\n };\n}\n/**\n * No-op logger (silences all logs)\n *\n * Useful for testing or when logs should be completely disabled.\n */\nexport function createSilentLogger() {\n return {\n debug: () => {\n /* intentionally empty for silent logger */\n },\n info: () => {\n /* intentionally empty for silent logger */\n },\n warn: () => {\n /* intentionally empty for silent logger */\n },\n error: () => {\n /* intentionally empty for silent logger */\n },\n };\n}\n","/**\n * InstrumentationProvider Interface\n *\n * Core abstraction for distributed tracing and observability.\n * Enables vendor-neutral instrumentation across Vreko services.\n *\n * @example\n * ```typescript\n * const provider = new OTelInstrumentationProvider({\n * serviceName: 'vreko-api',\n * collectorUrl: 'http://localhost:4318',\n * });\n *\n * await provider.withSpan('create_snapshot', async (span) => {\n * span.setAttribute('snapshot.id', id);\n * const result = await createSnapshot(files);\n * return result;\n * });\n * ```\n */\n/**\n * No-op implementation for testing or disabled instrumentation\n */\nexport class NoOpInstrumentationProvider {\n static noopSpan = {\n setAttribute: () => {\n /* no-op */\n },\n setAttributes: () => {\n /* no-op */\n },\n addEvent: () => {\n /* no-op */\n },\n setStatus: () => {\n /* no-op */\n },\n recordException: () => {\n /* no-op */\n },\n end: () => {\n /* no-op */\n },\n isRecording: () => false,\n };\n startSpan(_name, _options) {\n return NoOpInstrumentationProvider.noopSpan;\n }\n async withSpan(_name, fn, _options) {\n return await fn(NoOpInstrumentationProvider.noopSpan);\n }\n injectContext(_carrier) {\n // No-op\n }\n extractContext(_carrier) {\n return null;\n }\n recordMetric(_name, _value, _attributes) {\n // No-op\n }\n recordEvent(_name, _attributes) {\n // No-op\n }\n async shutdown() {\n // No-op\n }\n}\n","/**\n * Canonical Sensitive File Patterns\n *\n * Single source of truth for sensitive-file detection across all Vreko packages.\n * Previously split across:\n * - packages/engine/src/signals/risk-score.ts (RegExp[])\n * - packages/mcp/src/facades/handlers/snapshot-handlers.ts (string[], inline)\n *\n * Consumers: @vreko/engine, @vreko/mcp\n */\n/**\n * Patterns that indicate a file is sensitive or security-critical.\n * Matched case-insensitively against the full file path.\n */\nexport const SENSITIVE_PATTERNS = [\n // Environment / secrets\n /\\.env$/i,\n /\\.pem$/i,\n /\\.key$/i,\n /secret/i,\n /password/i,\n /credential/i,\n /private/i,\n // Auth / access control\n /auth/i,\n // Configuration files\n /config\\.json$/i,\n /package\\.json$/i,\n // Financial / business-critical (from MCP)\n /payment/i,\n // Infrastructure / data (from MCP)\n /security/i,\n /database/i,\n];\n","/**\n * CalculationTrace Schema\n *\n * Zod schema for fragility score calculation transparency.\n * PRIVACY: Aggregated metrics only - no file paths, no user content.\n * The implicit rollback breakdown is the novel detection mechanism.\n *\n * @module @vreko/contracts/calculation-trace\n */\nimport { z } from \"zod\";\n/**\n * PRIVACY: Aggregated count - no individual user identifiers.\n */\nconst ImplicitRollbackBucketSchema = z\n .object({\n count: z.number().int().min(0),\n weightedSum: z.number().min(0),\n})\n .strict();\n/**\n * Rollback rate breakdown with explicit AI-attribution separation.\n * This is the novel detection mechanism: implicit AI-attributed rollbacks\n * are distinguished from unattributed implicit rollbacks.\n * PRIVACY: All fields are aggregated counts - no file or session identifiers.\n */\nexport const RollbackRateTraceSchema = z\n .object({\n /** Explicit rollbacks (user-initiated restore). */\n explicit: z.number().int().min(0),\n /** Implicit rollbacks attributed to AI-generated code. */\n implicitAIAttributed: ImplicitRollbackBucketSchema,\n /** Implicit rollbacks not attributed to AI-generated code. */\n implicitUnattributed: ImplicitRollbackBucketSchema,\n /** Total file modifications in the observation window. */\n totalModifications: z.number().int().min(0),\n /** Computed rate: (explicit + weighted implicit) / totalModifications. */\n computedRate: z.number().min(0).max(1),\n})\n .strict();\n/**\n * Per-pillar fragility contribution.\n * PRIVACY: weight and contribution are dimensionless scalars - no user data.\n */\nconst FragilityPillarTraceSchema = z\n .object({\n pillar: z.enum([\"churn\", \"rollback\", \"ai_fraction\", \"time_since_commit\", \"file_count\"]),\n weight: z.number().min(0).max(1),\n rawValue: z.number(),\n contribution: z.number().min(0).max(1),\n})\n .strict();\n/**\n * Fragility score broken down by pillar.\n * PRIVACY: Aggregated workspace metrics only.\n */\nexport const FragilityTraceSchema = z\n .object({\n pillars: z.array(FragilityPillarTraceSchema).min(1),\n /** Weighted sum across all pillars before clamping. */\n rawScore: z.number(),\n /** Final fragility score after clamping to [0, 1]. */\n computedScore: z.number().min(0).max(1),\n})\n .strict();\n/**\n * Trust score calculation trace.\n * PRIVACY: All fields are aggregated - no individual session or file data.\n */\nexport const TrustScoreTraceSchema = z\n .object({\n /** Agent rollback rate for this workspace. */\n agentRollbackRate: z.number().min(0).max(1),\n /** Fleet-wide average rollback rate for comparison. */\n workspaceAvgRollbackRate: z.number().min(0).max(1),\n /** Number of observations used to compute the rate. */\n observationCount: z.number().int().min(0),\n /** Bayesian prior weight (lower = more observations = less prior pull). */\n priorWeight: z.number().min(0).max(1),\n /** Final trust score after Bayesian smoothing. */\n computedScore: z.number().min(0).max(1),\n})\n .strict();\n/**\n * Full calculation trace for a fragility score decision.\n *\n * Enables platform leads and auditors to inspect exactly how a score was\n * computed without exposing raw user data.\n *\n * PRIVACY: No file paths, no code content, no session IDs.\n * Only aggregated scalar metrics and their weights.\n */\nexport const CalculationTraceSchema = z\n .object({\n /** ISO 8601 timestamp of the calculation. */\n calculatedAt: z.string().datetime(),\n /** Opaque workspace identifier (sha256-derived, never raw path). */\n workspaceId: z.string(),\n /** Fragility pillar breakdown. */\n fragility: FragilityTraceSchema,\n /** Rollback rate decomposition - the novel AI-attribution signal. */\n rollbackRate: RollbackRateTraceSchema,\n /** Trust score Bayesian trace. */\n trustScore: TrustScoreTraceSchema,\n})\n .strict(); // reject unknown fields - prevents accidental content leakage\n","import { z } from \"zod\";\n// Use DaemonTier to avoid conflict with primitives/tool-invocation.ts Tier export\nexport const DaemonTierSchema = z.enum([\"free\", \"pro\", \"team\", \"enterprise\"]);\n// DaemonIdentityContext - daemon-specific identity state (avoids conflict with tool-invocation.ts)\nexport const DaemonIdentityContextSchema = z.object({\n userId: z.string().nullable(),\n email: z.string().email().nullable(),\n tier: DaemonTierSchema.default(\"free\"),\n pioneer: z.boolean().default(false),\n cohort: z.number().int().nullable(),\n keyPreview: z.string().nullable(),\n // NOTE: 'cli-token' covers device auth flow; 'api-key' is raw key from env\n authenticatedVia: z.enum([\"github\", \"google\", \"api-key\", \"cli-token\"]).nullable(),\n tokenExpiresAt: z.coerce.date().nullable(),\n lastValidatedAt: z.coerce.date().nullable(),\n isStale: z.boolean(), // computed at read time: Date.now() - lastValidatedAt > 24h; never persisted\n});\nexport const DAEMON_TIER_ORDER = {\n free: 0,\n pro: 1,\n team: 2,\n enterprise: 3,\n};\nexport function isDaemonAtLeastTier(identity, minimum) {\n return DAEMON_TIER_ORDER[identity.tier] >= DAEMON_TIER_ORDER[minimum];\n}\n// Sentinel for unauthenticated state - never null, always a valid object\nexport const ANONYMOUS_DAEMON_IDENTITY = {\n userId: null,\n email: null,\n tier: \"free\",\n pioneer: false,\n cohort: null,\n keyPreview: null,\n authenticatedVia: null,\n tokenExpiresAt: null,\n lastValidatedAt: null,\n isStale: true,\n};\n","import { z } from \"zod\";\n// Persisted to ~/.vreko/daemon-state.json\n// Owned exclusively by the daemon. CLI never reads or writes this file.\nexport const DaemonStateSchema = z.object({\n version: z.literal(\"1\").default(\"1\"),\n lastIdentityValidatedAt: z.coerce.date().nullable().default(null),\n startCount: z.number().int().default(0), // useful for debugging restart loops\n lastStartedAt: z.coerce.date().nullable().default(null),\n});\n","import { z } from \"zod\";\nexport const MAX_WORKSPACES = 100; // Cap to prevent unbounded growth\nexport const WorkspaceRegistrationSchema = z.object({\n id: z.string(), // SHA256 of canonical path - existing convention\n path: z.string(),\n alias: z.string().optional(),\n ownership: z.enum([\"personal\", \"team\"]),\n teamId: z.string().optional(),\n createdAt: z.coerce.date(),\n lastSeenAt: z.coerce.date(),\n stackSummary: z.string().optional(), // cached display string, e.g. \"TS monorepo · Cursor\"\n});\nexport const WorkspaceProfileSchema = z.object({\n version: z.literal(\"1\").default(\"1\"),\n detectedAt: z.coerce.date(),\n repoType: z.enum([\"monorepo\", \"single\", \"multi-package\", \"unknown\"]),\n primaryLanguage: z.string(),\n buildSystem: z.enum([\"turborepo\", \"nx\", \"lerna\", \"none\", \"unknown\"]),\n packageManager: z.enum([\"pnpm\", \"npm\", \"yarn\", \"bun\", \"unknown\"]),\n detectedAiTools: z.array(z.enum([\"cursor\", \"copilot\", \"claude-code\", \"windsurf\", \"unknown\"])),\n estimatedFileCount: z.number().int(),\n estimatedContributors: z.number().int(),\n hasCI: z.boolean(),\n hasTests: z.boolean(),\n // SEMANTIC DISTINCTION:\n // - null = CTI has not run yet (default, unanalyzed)\n // - [] = CTI ran, no critical paths found (analysis complete, no results)\n // This distinction drives onboarding flow and CTI scheduling decisions.\n criticalPaths: z.array(z.string()).nullable().default(null),\n detectionFailed: z.boolean().default(false), // true if detection pass threw; triggers retry\n detectionError: z.string().optional(), // error message for debugging\n});\n","/**\n * Attribution API Contract (Gap 4 - High Priority)\n *\n * Defines the API contract for marketing attribution transfer from web to platform.\n * Enables tracking of user acquisition sources (UTM params, referral codes) across\n * the authentication boundary.\n *\n * @module attribution-api\n */\n/**\n * Helper: Generate device fingerprint\n * Uses combination of user agent, screen resolution, and timezone\n */\nexport function generateFingerprint(data) {\n const raw = `${data.userAgent}_${data.screenWidth}x${data.screenHeight}_${data.timezone}`;\n // Simple hash (in production, use crypto.subtle.digest)\n let hash = 0;\n for (let i = 0; i < raw.length; i++) {\n const char = raw.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return `fp_${Math.abs(hash).toString(36)}`;\n}\n/**\n * Helper: Parse attribution source from URL\n */\nexport function parseAttributionSource(url) {\n const urlObj = new URL(url);\n const utmSource = urlObj.searchParams.get(\"utm_source\")?.toLowerCase();\n if (!utmSource) {\n return \"direct\";\n }\n if (utmSource.includes(\"facebook\") || utmSource.includes(\"fb\")) {\n return \"facebook\";\n }\n if (utmSource.includes(\"google\")) {\n return \"google\";\n }\n if (utmSource.includes(\"twitter\") || utmSource.includes(\"x.com\")) {\n return \"twitter\";\n }\n if (utmSource.includes(\"linkedin\")) {\n return \"linkedin\";\n }\n if (utmSource.includes(\"reddit\")) {\n return \"reddit\";\n }\n // Check if it's a referral\n const ref = urlObj.searchParams.get(\"ref\");\n if (ref) {\n return \"referral\";\n }\n return \"organic\";\n}\n/**\n * Helper: Extract UTM parameters from URL\n */\nexport function extractUtmParams(url) {\n const urlObj = new URL(url);\n return {\n utm_source: urlObj.searchParams.get(\"utm_source\") || undefined,\n utm_medium: urlObj.searchParams.get(\"utm_medium\") || undefined,\n utm_campaign: urlObj.searchParams.get(\"utm_campaign\") || undefined,\n utm_content: urlObj.searchParams.get(\"utm_content\") || undefined,\n utm_term: urlObj.searchParams.get(\"utm_term\") || undefined,\n };\n}\n/**\n * Helper: Check if attribution should be merged or ignored\n * Returns true if attributions are from the same campaign/source\n */\nexport function shouldMergeAttribution(existing, incoming) {\n // Same source and campaign = merge\n if (existing.source === incoming.source && existing.campaignId === incoming.campaignId) {\n return true;\n }\n return false;\n}\n","/**\n * API Error Codes\n *\n * Standard error codes organized by category for the Vreko API.\n *\n * @module @vreko/contracts/api/errors/codes\n */\nimport { z } from \"zod\";\n// =============================================================================\n// ERROR CODE TAXONOMY\n// =============================================================================\n/**\n * API Error Code Categories:\n *\n * AUTH_* - Authentication and authorization errors\n * VALIDATION_* - Input validation and schema errors\n * RESOURCE_* - Resource lifecycle errors (CRUD)\n * RATE_* - Rate limiting and throttling\n * PAYMENT_* - Billing and subscription errors\n * INTEGRATION_* - External service errors\n * INTERNAL_* - Server-side errors\n */\n/**\n * Standard API error codes organized by category\n */\nexport const ApiErrorCodeSchema = z.enum([\n // Authentication (401)\n \"AUTH_REQUIRED\",\n \"AUTH_INVALID_TOKEN\",\n \"AUTH_EXPIRED_TOKEN\",\n \"AUTH_INVALID_API_KEY\",\n \"AUTH_REVOKED_KEY\",\n // Authorization (403)\n \"FORBIDDEN\",\n \"PERMISSION_DENIED\",\n \"PLAN_LIMIT_EXCEEDED\",\n \"FEATURE_NOT_AVAILABLE\",\n \"TRIAL_EXPIRED\",\n // Validation (400)\n \"VALIDATION_ERROR\",\n \"VALIDATION_MISSING_FIELD\",\n \"VALIDATION_INVALID_FORMAT\",\n \"VALIDATION_CONSTRAINT_VIOLATION\",\n // Resource Errors (404, 409, 410)\n \"RESOURCE_NOT_FOUND\",\n \"RESOURCE_ALREADY_EXISTS\",\n \"RESOURCE_DELETED\",\n \"RESOURCE_CONFLICT\",\n \"RESOURCE_LOCKED\",\n // Rate Limiting (429)\n \"RATE_LIMIT_EXCEEDED\",\n \"RATE_LIMIT_API_KEY\",\n \"RATE_LIMIT_USER\",\n \"RATE_LIMIT_IP\",\n // Payment/Billing (402)\n \"PAYMENT_REQUIRED\",\n \"PAYMENT_FAILED\",\n \"SUBSCRIPTION_EXPIRED\",\n \"SUBSCRIPTION_CANCELLED\",\n // External Integration Errors (502, 503)\n \"INTEGRATION_UNAVAILABLE\",\n \"INTEGRATION_TIMEOUT\",\n \"INTEGRATION_ERROR\",\n // Security (400, 403)\n \"SECURITY_CSRF_INVALID\",\n \"SECURITY_CAPTCHA_REQUIRED\",\n \"SECURITY_CAPTCHA_FAILED\",\n \"SECURITY_PRIVACY_VIOLATION\",\n // Server Errors (500, 503)\n \"INTERNAL_ERROR\",\n \"SERVICE_UNAVAILABLE\",\n \"DATABASE_ERROR\",\n \"CONFIGURATION_ERROR\",\n // Request Errors (400, 413, 415)\n \"BAD_REQUEST\",\n \"PAYLOAD_TOO_LARGE\",\n \"UNSUPPORTED_MEDIA_TYPE\",\n \"METHOD_NOT_ALLOWED\",\n]);\n","// ESM imports fixed for Node.js v22+\n/**\n * API Error Response Schemas\n *\n * Zod schemas for API error response validation.\n *\n * @module @vreko/contracts/api/errors/schemas\n */\nimport { z } from \"zod\";\nimport { ApiErrorCodeSchema } from \"./codes.js\";\n// =============================================================================\n// ERROR RESPONSE SCHEMA\n// =============================================================================\n/**\n * Validation error detail for field-level errors\n */\nexport const ValidationErrorDetailSchema = z.object({\n field: z.string().describe(\"The field path that failed validation\"),\n message: z.string().describe(\"Human-readable error message\"),\n code: z.string().optional().describe(\"Zod error code\"),\n});\n/**\n * Standard API error response format\n *\n * This format is used consistently across all API endpoints.\n */\nexport const ApiErrorResponseSchema = z.object({\n /** Human-readable error message (safe to display to users) */\n error: z.string(),\n /** Machine-readable error code for programmatic handling */\n code: ApiErrorCodeSchema,\n /** Optional detailed error information */\n details: z\n .union([\n z.array(ValidationErrorDetailSchema), // For validation errors\n z.record(z.string(), z.unknown()), // For other contextual data\n ])\n .optional(),\n /** Request ID for support correlation (from X-Request-Id header) */\n requestId: z.string().optional(),\n /** Timestamp when error occurred */\n timestamp: z.string().datetime().optional(),\n});\n","/**\n * API Tier Definitions for Vreko Licensable API\n *\n * Separate from extension tiers - these define access levels for\n * the public API used by B2B customers, CI/CD integrations, and tool builders.\n *\n * @module api-tiers\n */\nimport { z } from \"zod\";\n/**\n * API tier identifiers (distinct from extension tiers)\n */\nexport const ApiTierSchema = z.enum([\"api_free\", \"api_starter\", \"api_pro\", \"api_enterprise\"]);\n/**\n * API feature flags\n */\nexport const ApiFeatureSchema = z.enum([\n // Core analysis features\n \"risk_scoring\",\n \"ai_detection\",\n \"session_grouping\",\n \"rollback_validation\",\n // Advanced features\n \"batch_analysis\",\n \"webhook_notifications\",\n \"custom_thresholds\",\n \"priority_queue\",\n // Enterprise features\n \"dedicated_instance\",\n \"sla_guarantee\",\n \"audit_logs\",\n \"sso_integration\",\n]);\n/**\n * Rate limit configuration\n */\nexport const RateLimitConfigSchema = z.object({\n requestsPerMinute: z.number().int().positive(),\n requestsPerDay: z.number().int().positive(),\n maxBatchSize: z.number().int().positive(),\n maxPayloadBytes: z.number().int().positive(),\n});\n/**\n * Complete API tier configuration\n */\nexport const ApiTierConfigSchema = z.object({\n tier: ApiTierSchema,\n name: z.string(),\n description: z.string(),\n features: z.array(ApiFeatureSchema),\n rateLimits: RateLimitConfigSchema,\n priceMonthly: z.number().nonnegative(), // cents, 0 = free\n priceYearly: z.number().nonnegative(), // cents, 0 = free\n});\n/**\n * API tier feature matrix - source of truth for server-side enforcement\n */\nexport const API_TIER_FEATURES = {\n api_free: {\n tier: \"api_free\",\n name: \"Free\",\n description: \"Get started with basic analysis\",\n features: [\"risk_scoring\", \"ai_detection\"],\n rateLimits: {\n requestsPerMinute: 10,\n requestsPerDay: 100,\n maxBatchSize: 1,\n maxPayloadBytes: 50_000, // 50KB\n },\n priceMonthly: 0,\n priceYearly: 0,\n },\n api_starter: {\n tier: \"api_starter\",\n name: \"Starter\",\n description: \"For individual developers and small teams\",\n features: [\"risk_scoring\", \"ai_detection\", \"session_grouping\", \"rollback_validation\", \"batch_analysis\"],\n rateLimits: {\n requestsPerMinute: 60,\n requestsPerDay: 5_000,\n maxBatchSize: 10,\n maxPayloadBytes: 500_000, // 500KB\n },\n priceMonthly: 2900, // $29/month\n priceYearly: 29000, // $290/year\n },\n api_pro: {\n tier: \"api_pro\",\n name: \"Pro\",\n description: \"For growing teams with advanced needs\",\n features: [\n \"risk_scoring\",\n \"ai_detection\",\n \"session_grouping\",\n \"rollback_validation\",\n \"batch_analysis\",\n \"webhook_notifications\",\n \"custom_thresholds\",\n \"priority_queue\",\n ],\n rateLimits: {\n requestsPerMinute: 300,\n requestsPerDay: 50_000,\n maxBatchSize: 50,\n maxPayloadBytes: 2_000_000, // 2MB\n },\n priceMonthly: 9900, // $99/month\n priceYearly: 99000, // $990/year\n },\n api_enterprise: {\n tier: \"api_enterprise\",\n name: \"Enterprise\",\n description: \"Custom solutions for large organizations\",\n features: [\n \"risk_scoring\",\n \"ai_detection\",\n \"session_grouping\",\n \"rollback_validation\",\n \"batch_analysis\",\n \"webhook_notifications\",\n \"custom_thresholds\",\n \"priority_queue\",\n \"dedicated_instance\",\n \"sla_guarantee\",\n \"audit_logs\",\n \"sso_integration\",\n ],\n rateLimits: {\n requestsPerMinute: 1000,\n requestsPerDay: 500_000,\n maxBatchSize: 100,\n maxPayloadBytes: 10_000_000, // 10MB\n },\n priceMonthly: 0, // Custom pricing\n priceYearly: 0, // Custom pricing\n },\n};\n/**\n * Check if an API tier has access to a specific feature\n */\nexport function hasApiFeature(tier, feature) {\n return API_TIER_FEATURES[tier].features.includes(feature);\n}\n/**\n * Get rate limits for an API tier\n */\nexport function getApiRateLimits(tier) {\n return API_TIER_FEATURES[tier].rateLimits;\n}\n/**\n * API key schema for validation\n */\nexport const ApiKeySchema = z.object({\n id: z.string().uuid(),\n key: z.string().regex(/^sb_live_[a-zA-Z0-9]{32}$/, \"Invalid API key format\"),\n tier: ApiTierSchema,\n organizationId: z.string().uuid().optional(),\n name: z.string().max(100).optional(),\n createdAt: z.coerce.date(),\n expiresAt: z.coerce.date().optional(),\n lastUsedAt: z.coerce.date().optional(),\n isActive: z.boolean().default(true),\n});\n/**\n * API usage tracking schema\n */\nexport const ApiUsageSchema = z.object({\n keyId: z.string().uuid(),\n endpoint: z.string(),\n requestCount: z.number().int().nonnegative(),\n bytesProcessed: z.number().int().nonnegative(),\n period: z.enum([\"minute\", \"hour\", \"day\", \"month\"]),\n timestamp: z.coerce.date(),\n});\n/**\n * Create API key request schema\n */\nexport const CreateApiKeyRequestSchema = z.object({\n name: z.string().max(100).optional(),\n expiresAt: z.coerce.date().optional(),\n});\n/**\n * API endpoints available for each tier\n */\nexport const API_ENDPOINTS = {\n RISK_SCORING: \"/v1/analyze/risk\",\n AI_DETECTION: \"/v1/analyze/ai-detection\",\n SESSION_GROUPING: \"/v1/analyze/grouping\",\n ROLLBACK_VALIDATION: \"/v1/snapshots/validate-rollback\",\n};\n/**\n * Endpoint to required feature mapping\n */\nexport const ENDPOINT_FEATURES = {\n [API_ENDPOINTS.RISK_SCORING]: \"risk_scoring\",\n [API_ENDPOINTS.AI_DETECTION]: \"ai_detection\",\n [API_ENDPOINTS.SESSION_GROUPING]: \"session_grouping\",\n [API_ENDPOINTS.ROLLBACK_VALIDATION]: \"rollback_validation\",\n};\n","/**\n * Authentication Error Types\n *\n * Standardized error codes and schemas for authentication flows.\n * Maps Better Auth errors to our application-specific error codes.\n */\nimport { z } from \"zod\";\n/**\n * Standard authentication error codes\n *\n * These codes provide a consistent error interface across\n * all authentication operations, regardless of the underlying\n * authentication provider (Better Auth, OAuth, etc.)\n */\nexport const AuthErrorCodeSchema = z.enum([\n \"INVALID_CREDENTIALS\",\n \"USER_NOT_FOUND\",\n \"EMAIL_NOT_VERIFIED\",\n \"SESSION_EXPIRED\",\n \"UNAUTHORIZED\",\n \"RATE_LIMITED\",\n \"INVALID_TOKEN\",\n \"USER_ALREADY_EXISTS\",\n \"WEAK_PASSWORD\",\n \"INVALID_EMAIL\",\n \"OAUTH_ERROR\",\n \"NETWORK_ERROR\",\n \"UNKNOWN_ERROR\",\n]);\n/**\n * Authentication error schema\n *\n * Provides structured error information for frontend display\n * and logging purposes.\n *\n * @example\n * ```typescript\n * const result = await signIn(email, password);\n * if (result.error) {\n * console.error(`Auth failed: ${result.error.message}`);\n * if (result.error.code === 'INVALID_CREDENTIALS') {\n * showToast('Invalid email or password');\n * }\n * }\n * ```\n */\nexport const AuthErrorSchema = z.object({\n code: AuthErrorCodeSchema,\n message: z.string(),\n details: z.record(z.string(), z.unknown()).optional(),\n});\n/**\n * Map Better Auth error messages to our error codes\n *\n * Better Auth returns string error messages. This map translates\n * them to our standardized error codes for consistent handling.\n */\nexport const BETTER_AUTH_ERROR_MAP = {\n // Sign in errors\n INVALID_PASSWORD: \"INVALID_CREDENTIALS\",\n USER_NOT_FOUND: \"USER_NOT_FOUND\",\n INVALID_EMAIL: \"INVALID_EMAIL\",\n // Sign up errors\n USER_ALREADY_EXISTS: \"USER_ALREADY_EXISTS\",\n EMAIL_ALREADY_IN_USE: \"USER_ALREADY_EXISTS\",\n WEAK_PASSWORD: \"WEAK_PASSWORD\",\n // Session errors\n SESSION_EXPIRED: \"SESSION_EXPIRED\",\n SESSION_NOT_FOUND: \"SESSION_EXPIRED\",\n INVALID_SESSION: \"SESSION_EXPIRED\",\n // Verification errors\n EMAIL_NOT_VERIFIED: \"EMAIL_NOT_VERIFIED\",\n // Token errors\n INVALID_TOKEN: \"INVALID_TOKEN\",\n TOKEN_EXPIRED: \"INVALID_TOKEN\",\n // Rate limiting\n RATE_LIMIT_EXCEEDED: \"RATE_LIMITED\",\n TOO_MANY_REQUESTS: \"RATE_LIMITED\",\n // OAuth errors\n OAUTH_ERROR: \"OAUTH_ERROR\",\n OAUTH_CALLBACK_ERROR: \"OAUTH_ERROR\",\n PROVIDER_ERROR: \"OAUTH_ERROR\",\n};\n/**\n * Helper function to map Better Auth errors to our error codes\n *\n * @param betterAuthError - Error message or code from Better Auth\n * @returns Mapped error code or UNKNOWN_ERROR\n *\n * @example\n * ```typescript\n * const errorCode = mapBetterAuthError('INVALID_PASSWORD');\n * // Returns: 'INVALID_CREDENTIALS'\n * ```\n */\nexport function mapBetterAuthError(betterAuthError) {\n return BETTER_AUTH_ERROR_MAP[betterAuthError] || \"UNKNOWN_ERROR\";\n}\n/**\n * Create a standardized auth error\n *\n * @param code - Error code\n * @param message - User-friendly error message\n * @param details - Optional additional error details\n * @returns AuthError object\n *\n * @example\n * ```typescript\n * throw createAuthError(\n * 'INVALID_CREDENTIALS',\n * 'The email or password you entered is incorrect',\n * { attempts: 3 }\n * );\n * ```\n */\nexport function createAuthError(code, message, details) {\n return {\n code,\n message,\n ...(details && { details }),\n };\n}\n/**\n * User-friendly error messages for each error code\n *\n * These messages are safe to display to end users and provide\n * actionable guidance.\n */\nexport const AUTH_ERROR_MESSAGES = {\n INVALID_CREDENTIALS: \"The email or password you entered is incorrect\",\n USER_NOT_FOUND: \"No account found with this email address\",\n EMAIL_NOT_VERIFIED: \"Please verify your email address before signing in\",\n SESSION_EXPIRED: \"Your session has expired. Please sign in again\",\n UNAUTHORIZED: \"You do not have permission to perform this action\",\n RATE_LIMITED: \"Too many attempts. Please try again later\",\n INVALID_TOKEN: \"Invalid or expired verification token\",\n USER_ALREADY_EXISTS: \"An account with this email already exists\",\n WEAK_PASSWORD: \"Password does not meet security requirements\",\n INVALID_EMAIL: \"Please enter a valid email address\",\n OAUTH_ERROR: \"Authentication with this provider failed. Please try again\",\n NETWORK_ERROR: \"Network error. Please check your connection and try again\",\n UNKNOWN_ERROR: \"An unexpected error occurred. Please try again\",\n};\n/**\n * Get user-friendly message for an error code\n *\n * @param code - Error code\n * @returns User-friendly error message\n */\nexport function getErrorMessage(code) {\n return AUTH_ERROR_MESSAGES[code];\n}\n","/**\n * Authentication Session Types\n *\n * Core types and schemas for user authentication and session management.\n * These contracts are shared between frontend and backend to ensure type safety.\n */\nimport { z } from \"zod\";\n/**\n * User role type - matches database schema and Better Auth admin plugin\n */\nexport const UserRoleSchema = z.enum([\"admin\", \"user\", \"viewer\"]).nullable();\n/**\n * Core user schema - minimal fields needed for authentication\n *\n * This represents the authenticated user object as returned by Better Auth\n * and used throughout the application.\n */\nexport const AuthUserSchema = z.object({\n id: z.string(),\n email: z.string().email(),\n name: z.string().nullable(),\n image: z.string().url().nullable().optional(),\n emailVerified: z.boolean(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n // Role field from database - nullable as not all users have a role assigned\n role: UserRoleSchema.optional(),\n});\n/**\n * Session schema - represents an active authentication session\n *\n * Sessions are stored in the database and include metadata about\n * the device and location for security purposes.\n */\nexport const SessionSchema = z.object({\n id: z.string(),\n userId: z.string(),\n expiresAt: z.coerce.date(),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n // Better Auth session metadata\n userAgent: z.string().nullable().optional(),\n ipAddress: z.string().nullable().optional(),\n});\n/**\n * Combined session + user for convenience\n *\n * This is the most common data structure used in the frontend,\n * representing a fully authenticated state with both session and user data.\n *\n * @example\n * ```typescript\n * const session = await getSession();\n * if (session) {\n * // output:(session.user.email); // Access user data\n * // output:(session.session.expiresAt); // Access session data\n * }\n * ```\n */\nexport const SessionWithUserSchema = z.object({\n session: SessionSchema,\n user: AuthUserSchema,\n});\n/**\n * Authentication state for UI components\n *\n * Discriminated union representing the three possible auth states:\n * - authenticated: User is logged in with valid session\n * - unauthenticated: No valid session exists\n * - loading: Session check in progress\n *\n * @example\n * ```typescript\n * function MyComponent() {\n * const { state } = useAuth();\n *\n * if (state.status === 'loading') {\n * return <Spinner />;\n * }\n *\n * if (state.status === 'unauthenticated') {\n * return <LoginPrompt />;\n * }\n *\n * // TypeScript knows state.user exists here\n * return <div>Welcome, {state.user.name}</div>;\n * }\n * ```\n */\nexport const AuthStateSchema = z.discriminatedUnion(\"status\", [\n z.object({\n status: z.literal(\"authenticated\"),\n user: AuthUserSchema,\n session: SessionSchema,\n }),\n z.object({\n status: z.literal(\"unauthenticated\"),\n }),\n z.object({\n status: z.literal(\"loading\"),\n }),\n]);\n/**\n * Type guards for auth state\n */\nexport function isAuthenticated(state) {\n return state.status === \"authenticated\";\n}\nexport function isUnauthenticated(state) {\n return state.status === \"unauthenticated\";\n}\nexport function isLoading(state) {\n return state.status === \"loading\";\n}\n","// ESM imports fixed for Node.js v22+\n/**\n * Authentication API Contracts\n *\n * Request and response schemas for all authentication endpoints.\n * These schemas ensure type safety and runtime validation across\n * the frontend/backend boundary.\n */\nimport { z } from \"zod\";\nimport { AuthErrorSchema } from \"./errors.js\";\nimport { AuthUserSchema, SessionWithUserSchema } from \"./session.js\";\n/**\n * Password validation schema\n *\n * Enforces security requirements:\n * - Minimum 8 characters\n * - At least one uppercase letter\n * - At least one lowercase letter\n * - At least one number\n */\nexport const PasswordSchema = z\n .string()\n .min(8, \"Password must be at least 8 characters\")\n .regex(/[A-Z]/, \"Password must contain at least one uppercase letter\")\n .regex(/[a-z]/, \"Password must contain at least one lowercase letter\")\n .regex(/[0-9]/, \"Password must contain at least one number\");\n/**\n * Email validation schema\n *\n * Validates email format and normalizes to lowercase\n */\nexport const EmailSchema = z.string().email(\"Invalid email address\").toLowerCase().trim();\n/**\n * Sign up request schema\n *\n * @example\n * ```typescript\n * const signupData: SignUpRequest = {\n * email: 'user@example.com',\n * password: 'SecurePass123',\n * name: 'John Doe'\n * };\n * ```\n */\nexport const SignUpRequestSchema = z.object({\n email: EmailSchema,\n password: PasswordSchema,\n name: z.string().min(1, \"Name is required\").max(100, \"Name is too long\").trim(),\n});\n/**\n * Sign up response schema\n *\n * Uses discriminated union for type-safe success/error handling\n *\n * @example\n * ```typescript\n * const response = await signUp(data);\n * if (response.success) {\n * // output:('User created:', response.user.email);\n * } else {\n * console.error('Signup failed:', response.error.message);\n * }\n * ```\n */\nexport const SignUpResponseSchema = z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(true),\n user: AuthUserSchema,\n }),\n z.object({\n success: z.literal(false),\n error: AuthErrorSchema,\n }),\n]);\n/**\n * Sign in request schema\n *\n * Includes optional `rememberMe` field to control session duration:\n * - true (default): 7-day session\n * - false: 24-hour session\n *\n * @example\n * ```typescript\n * const signinData: SignInRequest = {\n * email: 'user@example.com',\n * password: 'SecurePass123',\n * rememberMe: true // Optional, defaults to false\n * };\n * ```\n */\nexport const SignInRequestSchema = z.object({\n email: EmailSchema,\n password: z.string().min(1, \"Password is required\"),\n rememberMe: z.boolean().optional().default(false),\n});\n/**\n * Sign in response schema\n *\n * Returns user and session information on success\n *\n * @example\n * ```typescript\n * const response = await signIn(data);\n * if (response.success) {\n * // output:('Logged in:', response.user.email);\n * // output:('Session expires:', response.session.expiresAt);\n * } else {\n * console.error('Login failed:', response.error.message);\n * }\n * ```\n */\nexport const SignInResponseSchema = z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(true),\n user: AuthUserSchema,\n session: z.object({\n id: z.string(),\n expiresAt: z.coerce.date(),\n }),\n }),\n z.object({\n success: z.literal(false),\n error: AuthErrorSchema,\n }),\n]);\n/**\n * Get session response schema\n *\n * Returns session with user data if authenticated, null otherwise\n *\n * @example\n * ```typescript\n * const session = await getSession();\n * if (session) {\n * // output:('Authenticated as:', session.user.email);\n * } else {\n * // output:('Not authenticated');\n * }\n * ```\n */\nexport const GetSessionResponseSchema = z.union([SessionWithUserSchema, z.null()]);\n/**\n * Sign out response schema\n *\n * Simple success/error response for logout operations\n */\nexport const SignOutResponseSchema = z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(true),\n }),\n z.object({\n success: z.literal(false),\n error: AuthErrorSchema,\n }),\n]);\n/**\n * Update user profile request schema\n *\n * All fields are optional - only provided fields will be updated\n *\n * @example\n * ```typescript\n * const updates: UpdateProfileRequest = {\n * name: 'Jane Doe',\n * // image not provided, won't be updated\n * };\n * ```\n */\nexport const UpdateProfileRequestSchema = z.object({\n name: z.string().min(1).max(100).trim().optional(),\n image: z.string().url().optional(),\n});\n/**\n * Update user profile response schema\n */\nexport const UpdateProfileResponseSchema = z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(true),\n user: AuthUserSchema,\n }),\n z.object({\n success: z.literal(false),\n error: AuthErrorSchema,\n }),\n]);\n/**\n * Change password request schema\n *\n * Requires current password for security\n */\nexport const ChangePasswordRequestSchema = z.object({\n currentPassword: z.string().min(1, \"Current password is required\"),\n newPassword: PasswordSchema,\n});\n/**\n * Change password response schema\n */\nexport const ChangePasswordResponseSchema = z.discriminatedUnion(\"success\", [\n z.object({\n success: z.literal(true),\n }),\n z.object({\n success: z.literal(false),\n error: AuthErrorSchema,\n }),\n]);\n/**\n * OAuth sign-in request schema\n *\n * Supports GitHub, Google, and other OAuth providers\n */\nexport const OAuthSignInRequestSchema = z.object({\n provider: z.enum([\"github\", \"google\"]),\n callbackURL: z.string().url().optional(),\n});\n","import { z } from \"zod\";\n/**\n * Authentication scope boundaries (ADR-005):\n * - console: Console UI, settings, team management, billing, API key CRUD\n * - api: V2 REST API endpoints, credit consumption\n * - API keys ONLY carry 'api' scope. Never 'console'.\n * - Console sessions ONLY carry 'console' scope.\n * - Team members may have both scopes via separate credentials.\n */\nexport const AuthScope = z.enum([\"console\", \"api\"]);\n","// ESM imports fixed for Node.js v22+\nimport { z } from \"zod\";\nimport { AuthScope } from \"./scopes.js\";\n// ---------------------------------------------------------------------------\n// User metadata\n// ---------------------------------------------------------------------------\nexport const UserMetadata = z.object({\n pioneer: z.boolean().default(false),\n pioneerCohort: z.number().int().optional(),\n referralCode: z.string().optional(),\n invitedBy: z.string().nullable().optional(),\n});\n// ---------------------------------------------------------------------------\n// Organization (tenant)\n// ---------------------------------------------------------------------------\nexport const OrgType = z.enum([\"personal\", \"team\"]);\nexport const OrgRole = z.enum([\"owner\", \"admin\", \"member\"]);\nexport const Organization = z.object({\n id: z.string().uuid(),\n name: z.string(),\n type: OrgType,\n tier: z.enum([\"free\", \"pro\", \"team\", \"enterprise\"]),\n stripeCustomerId: z.string().nullable(),\n stripeSubscriptionId: z.string().nullable(),\n metadata: z\n .object({\n saml: z\n .object({\n entryPoint: z.string().url(),\n issuer: z.string(),\n cert: z.string(),\n })\n .optional(),\n })\n .optional(),\n createdAt: z.string().datetime(),\n});\n// ---------------------------------------------------------------------------\n// API key\n// ---------------------------------------------------------------------------\nexport const ApiKey = z.object({\n id: z.string().uuid(),\n keyPreview: z.string(),\n name: z.string(),\n orgId: z.string().uuid(),\n createdBy: z.string().uuid(),\n scopes: z.array(AuthScope).default([\"api\"]),\n createdAt: z.string().datetime(),\n lastUsedAt: z.string().datetime().nullable(),\n revokedAt: z.string().datetime().nullable(),\n});\n// ---------------------------------------------------------------------------\n// Auth identity (resolved by middleware)\n// ---------------------------------------------------------------------------\nexport const AuthIdentity = z.object({\n userId: z.string().uuid(),\n orgId: z.string().uuid(),\n role: OrgRole,\n tier: z.enum([\"free\", \"pro\", \"team\", \"enterprise\"]),\n scopes: z.array(AuthScope),\n pioneer: z.boolean(),\n authenticatedVia: z.enum([\"session\", \"api_key\", \"device_token\"]),\n});\n// ---------------------------------------------------------------------------\n// Device flow\n// ---------------------------------------------------------------------------\nexport const DeviceCodeResponse = z.object({\n deviceCode: z.string(),\n userCode: z.string(),\n verificationUri: z.string().url(),\n expiresIn: z.number().int(),\n interval: z.number().int(),\n});\nexport const DeviceTokenResponse = z.discriminatedUnion(\"status\", [\n z.object({\n status: z.literal(\"pending\"),\n error: z.literal(\"authorization_pending\"),\n }),\n z.object({\n status: z.literal(\"success\"),\n accessToken: z.string(),\n refreshToken: z.string(),\n expiresIn: z.number().int(),\n orgId: z.string().uuid(),\n }),\n z.object({\n status: z.literal(\"denied\"),\n error: z.literal(\"access_denied\"),\n }),\n z.object({\n status: z.literal(\"expired\"),\n error: z.literal(\"expired_token\"),\n }),\n]);\n// ---------------------------------------------------------------------------\n// Role permissions matrix (canonical)\n// ---------------------------------------------------------------------------\nexport const ROLE_PERMISSIONS = {\n owner: {\n console: true,\n apiKeyCreate: true,\n apiKeyRevokeAll: true,\n billing: true,\n teamInvite: true,\n teamRemove: true,\n teamChangeRoles: true,\n },\n admin: {\n console: true,\n apiKeyCreate: true,\n apiKeyRevokeAll: false,\n billing: false,\n teamInvite: true,\n teamRemove: true,\n teamChangeRoles: false,\n },\n member: {\n console: true,\n apiKeyCreate: true,\n apiKeyRevokeAll: false,\n billing: false,\n teamInvite: false,\n teamRemove: false,\n teamChangeRoles: false,\n },\n};\n","/**\n * Capability Taxonomy TypeScript Interface\n *\n * Type-safe interface for the capability-taxonomy.yaml configuration.\n * Use loadCapabilityTaxonomy() to load and validate the YAML config.\n *\n * @module config/capability-taxonomy\n */\nimport { z } from \"zod\";\n/**\n * Zod schema for validation\n */\nexport const CapabilityTaxonomySchema = z.object({\n version: z.string(),\n riskClasses: z.record(z.enum([\"safe\", \"low\", \"medium\", \"high\", \"critical\"]), z.object({\n description: z.string(),\n defaultSandbox: z.enum([\"none\", \"basic\", \"strict\", \"isolated\"]),\n requiresAuth: z.boolean(),\n requiresSnapshot: z.boolean(),\n maxConcurrent: z.number().positive(),\n timeoutMs: z.number().positive(),\n requiresApproval: z.boolean().optional(),\n })),\n categories: z.record(z.string(), z.object({\n description: z.string(),\n namespace: z.string(),\n defaultRiskClass: z.enum([\"safe\", \"low\", \"medium\", \"high\", \"critical\"]),\n })),\n tools: z.array(z.object({\n urn: z.string(),\n name: z.string(),\n description: z.string(),\n category: z.string(),\n riskClass: z.enum([\"safe\", \"low\", \"medium\", \"high\", \"critical\"]),\n caps: z.array(z.string()),\n requiredPermissions: z.array(z.string()),\n requiredFeatures: z.array(z.string()),\n minTier: z.enum([\"free\", \"pro\", \"team\", \"enterprise\"]).optional(),\n inputSchema: z.object({\n type: z.literal(\"object\"),\n properties: z.record(z.string(), z.any()).optional(),\n required: z.array(z.string()).optional(),\n }),\n })),\n permissions: z.array(z.object({\n id: z.string(),\n description: z.string(),\n scope: z.enum([\"workspace\", \"channel\", \"admin\"]),\n requiresTier: z.enum([\"free\", \"pro\", \"team\", \"enterprise\"]).optional(),\n })),\n sandboxes: z.record(z.enum([\"none\", \"basic\", \"strict\", \"isolated\"]), z.object({\n description: z.string(),\n capabilities: z.array(z.string()),\n restrictions: z.array(z.string()),\n implementation: z.enum([\"container\", \"vm\", \"process\"]).optional(),\n })),\n});\n/**\n * Tool registry for fast URN lookups\n */\nexport class ToolRegistry {\n taxonomy;\n toolsByUrn;\n toolsByCategory;\n constructor(taxonomy) {\n this.taxonomy = taxonomy;\n this.toolsByUrn = new Map();\n this.toolsByCategory = new Map();\n for (const tool of taxonomy.tools) {\n this.toolsByUrn.set(tool.urn, tool);\n const categoryTools = this.toolsByCategory.get(tool.category) ?? [];\n categoryTools.push(tool);\n this.toolsByCategory.set(tool.category, categoryTools);\n }\n }\n /**\n * Get tool by URN\n */\n getTool(urn) {\n return this.toolsByUrn.get(urn);\n }\n /**\n * Get tools by category\n */\n getToolsByCategory(category) {\n return this.toolsByCategory.get(category) ?? [];\n }\n /**\n * Get risk class config\n */\n getRiskClassConfig(riskClass) {\n return this.taxonomy.riskClasses[riskClass];\n }\n /**\n * Get sandbox config\n */\n getSandboxConfig(sandbox) {\n return this.taxonomy.sandboxes[sandbox];\n }\n /**\n * Get all available URNs\n */\n getAllUrns() {\n return Array.from(this.toolsByUrn.keys());\n }\n /**\n * Check if tool requires specific tier\n */\n checkTierRequirement(urn, userTier) {\n const tool = this.getTool(urn);\n if (!tool?.minTier) {\n return true;\n }\n const tierOrder = {\n free: 0,\n pro: 1,\n team: 2,\n enterprise: 3,\n };\n return tierOrder[userTier] >= tierOrder[tool.minTier];\n }\n /**\n * Get required permissions for tool\n */\n getRequiredPermissions(urn) {\n return this.getTool(urn)?.requiredPermissions ?? [];\n }\n /**\n * Get required features for tool\n */\n getRequiredFeatures(urn) {\n return this.getTool(urn)?.requiredFeatures ?? [];\n }\n}\n/**\n * Parse and validate taxonomy from object (loaded YAML)\n */\nexport function parseCapabilityTaxonomy(data) {\n return CapabilityTaxonomySchema.parse(data);\n}\n/**\n * Create a ToolRegistry from taxonomy data\n */\nexport function createToolRegistry(data) {\n const taxonomy = parseCapabilityTaxonomy(data);\n return new ToolRegistry(taxonomy);\n}\n","/**\n * Tier Definitions - Single Source of Truth for Alpha\n *\n * Alpha Scope: Free and Pro tiers are ACTIVE\n * Team and Enterprise are designed stubs (feature flag gated)\n */\n/**\n * Environment variable to bypass tier restrictions (dev/testing)\n * Set VREKO_BYPASS_TIER_RESTRICTIONS=true to grant Pro capabilities to all users\n */\nexport function isTierBypassEnabled() {\n return process.env.VREKO_BYPASS_TIER_RESTRICTIONS === \"true\";\n}\n/**\n * Get the effective tier accounting for bypass mode\n * Returns 'pro' if bypass is enabled, otherwise returns the actual tier\n */\nexport function getEffectiveTier(actualTier) {\n if (isTierBypassEnabled()) {\n return \"pro\";\n }\n return actualTier;\n}\n/**\n * Active tiers for Alpha release\n * Used by docs PlanSwitcher and feature gating\n */\nexport const ALPHA_ACTIVE_TIERS = [\"free\", \"pro\"];\n/**\n * Feature flag: Team/Enterprise features disabled in Alpha\n * Hardcoded to false - will be environment variable post-Alpha\n */\nexport const ENABLE_TEAM_FEATURES = false;\n/**\n * Tier capabilities matrix (all tiers defined for future use)\n */\nexport const TIER_CAPABILITIES = {\n free: {\n seats: 1,\n cloudBackup: false,\n backendMCP: false,\n maxSnapshots: -1, // unlimited local\n storageMB: 0, // local only\n retentionDays: 7, // local retention\n },\n pro: {\n seats: 1,\n cloudBackup: true,\n backendMCP: true,\n maxSnapshots: -1, // unlimited\n storageMB: 5 * 1024, // 5GB\n retentionDays: 30,\n },\n team: {\n seats: -1, // unlimited seats\n cloudBackup: true,\n backendMCP: true,\n maxSnapshots: -1, // unlimited\n storageMB: 25 * 1024, // 25GB per user\n retentionDays: 365, // 1 year\n },\n enterprise: {\n seats: -1, // unlimited\n cloudBackup: true,\n backendMCP: true,\n maxSnapshots: -1, // unlimited\n storageMB: 100 * 1024, // 100GB+\n retentionDays: -1, // custom\n },\n};\n/**\n * Check if tier is active in Alpha\n */\nexport function isAlphaActiveTier(tier) {\n return ALPHA_ACTIVE_TIERS.includes(tier);\n}\n/**\n * Get tier capabilities with validation\n * Respects VREKO_BYPASS_TIER_RESTRICTIONS env var\n */\nexport function getTierCapabilities(tier) {\n // Apply tier bypass if enabled\n const effectiveTier = getEffectiveTier(tier);\n const capabilities = TIER_CAPABILITIES[effectiveTier];\n if (!capabilities) {\n throw new Error(`Invalid tier: ${effectiveTier}`);\n }\n // Alpha: Warn if accessing inactive tier\n if (!isAlphaActiveTier(effectiveTier)) {\n /* future: emit warning for inactive tier access */\n }\n return capabilities;\n}\n/**\n * Check if tier has specific capability\n * Respects VREKO_BYPASS_TIER_RESTRICTIONS env var\n */\nexport function hasTierCapability(tier, capability) {\n // getTierCapabilities already applies bypass\n const caps = getTierCapabilities(tier);\n return caps[capability];\n}\n","// ESM imports fixed for Node.js v22+\n/**\n * Entitlements System (Gap 1 - Critical Priority)\n *\n * Defines the contract for user entitlements including tier-based features,\n * trial status, Pioneer benefits, and versioning for audit trails.\n *\n * @module entitlements\n */\nimport { getEffectiveTier } from \"./tiers.js\";\n/**\n * Feature mapping by tier\n * Defines which features are available at each tier\n */\nexport const TIER_FEATURES = {\n free: [\"api_access\"],\n pro: [\"cloud_backup\", \"api_access\", \"advanced_analytics\", \"unlimited_workspaces\", \"cli_full_features\"],\n team: [\n \"cloud_backup\",\n \"api_access\",\n \"advanced_analytics\",\n \"unlimited_workspaces\",\n \"cli_full_features\",\n \"team_dashboard\",\n \"multi_workspace\",\n \"priority_support\",\n ],\n enterprise: [\n \"cloud_backup\",\n \"api_access\",\n \"advanced_analytics\",\n \"unlimited_workspaces\",\n \"cli_full_features\",\n \"team_dashboard\",\n \"multi_workspace\",\n \"sso_authentication\",\n \"audit_logs\",\n \"priority_support\",\n \"custom_retention\",\n ],\n};\n/**\n * Default usage limits by tier\n */\nexport const TIER_LIMITS = {\n free: {\n cloud_backup: 0, // No cloud backup\n api_access: 100, // 100 calls per month\n unlimited_workspaces: 1, // 1 workspace\n },\n pro: {\n cloud_backup: 100 * 1024, // 100GB storage\n api_access: 100_000, // 100k calls per month\n unlimited_workspaces: null, // Unlimited\n },\n team: {\n cloud_backup: 500 * 1024, // 500GB storage\n api_access: 1_000_000, // 1M calls per month\n unlimited_workspaces: null, // Unlimited\n },\n enterprise: {\n cloud_backup: null, // Unlimited\n api_access: null, // Unlimited\n unlimited_workspaces: null, // Unlimited\n },\n};\n/**\n * Pioneer tier point thresholds\n */\nexport const PIONEER_TIER_THRESHOLDS = {\n // Note: Thresholds now represent behavioral milestone index, not points\n pioneer: 0,\n active_pioneer: 1,\n contributing_pioneer: 2,\n founding_pioneer: 3,\n};\n/**\n * Pioneer tier discount percentages\n */\nexport const PIONEER_TIER_DISCOUNTS = {\n pioneer: 0,\n active_pioneer: 50,\n contributing_pioneer: 75,\n founding_pioneer: 100, // Lifetime Pro access\n};\n/**\n * Helper: Calculate Pioneer tier from points\n */\nexport function calculatePioneerTier(milestoneIndex) {\n // milestoneIndex: 0=pioneer, 1=active_pioneer, 2=contributing_pioneer, 3+=founding_pioneer\n if (milestoneIndex >= 3) {\n return \"founding_pioneer\";\n }\n if (milestoneIndex >= 2) {\n return \"contributing_pioneer\";\n }\n if (milestoneIndex >= 1) {\n return \"active_pioneer\";\n }\n return \"pioneer\";\n}\n/**\n * Helper: Get features for a tier\n * Respects VREKO_BYPASS_TIER_RESTRICTIONS env var\n */\nexport function getTierFeatures(tier) {\n const effectiveTier = getEffectiveTier(tier);\n return TIER_FEATURES[effectiveTier] || [];\n}\n/**\n * Helper: Check if feature is available at tier\n * Respects VREKO_BYPASS_TIER_RESTRICTIONS env var\n */\nexport function isFeatureAvailableAtTier(feature, tier) {\n const effectiveTier = getEffectiveTier(tier);\n return TIER_FEATURES[effectiveTier]?.includes(feature) || false;\n}\n/**\n * Helper: Get default limit for feature at tier\n * Respects VREKO_BYPASS_TIER_RESTRICTIONS env var\n */\nexport function getTierLimit(tier, feature) {\n const effectiveTier = getEffectiveTier(tier);\n return TIER_LIMITS[effectiveTier]?.[feature] ?? null;\n}\n// =============================================================================\n// FLYWHEEL ENTITLEMENTS\n// =============================================================================\nexport const FLYWHEEL_ENTITLEMENTS = {\n free_unauthenticated: {\n canFlush: false,\n reflectionEnabled: false,\n personalSyncEnabled: false,\n sharedLearningEnabled: false,\n outcomeLabeling: false,\n contributionToggleVisible: false,\n },\n free_authenticated: {\n canFlush: true,\n reflectionEnabled: false,\n personalSyncEnabled: false, // free tier cannot sync personal cloud\n sharedLearningEnabled: true, // can opt in to shared learning only\n outcomeLabeling: true,\n contributionToggleVisible: true,\n },\n pro: {\n canFlush: true,\n reflectionEnabled: true,\n personalSyncEnabled: true,\n sharedLearningEnabled: true,\n outcomeLabeling: true,\n contributionToggleVisible: true,\n },\n team: {\n canFlush: true,\n reflectionEnabled: true,\n personalSyncEnabled: true,\n sharedLearningEnabled: true,\n outcomeLabeling: true,\n contributionToggleVisible: true,\n },\n enterprise: {\n canFlush: true,\n reflectionEnabled: true,\n personalSyncEnabled: true,\n sharedLearningEnabled: false, // ring-fenced - no global contribution\n outcomeLabeling: true,\n contributionToggleVisible: false, // admin-controlled, not individual toggle\n },\n};\n","/**\n * Base Error Class\n *\n * Foundation error class that can be extended by different error systems.\n * Provides common error handling patterns used across Vreko.\n *\n * @module @vreko/contracts/errors/base\n */\n// =============================================================================\n// BASE ERROR CLASS\n// =============================================================================\n/**\n * Base error class with structured error information\n *\n * Extends Error to provide:\n * - Error codes for programmatic handling\n * - Contextual details for debugging\n * - Proper stack trace preservation\n *\n * @example\n * ```typescript\n * class MyError extends BaseError {\n * constructor(message: string) {\n * super('MY_ERROR', message, { category: 'custom' });\n * }\n * }\n * ```\n */\nexport class BaseError extends Error {\n code;\n details;\n constructor(code, message, details) {\n super(message);\n this.name = \"BaseError\";\n this.code = code;\n this.details = details;\n // Maintains proper stack trace for where error was thrown\n Error.captureStackTrace?.(this, BaseError);\n }\n /**\n * Check if this error has a specific code\n */\n hasCode(code) {\n return this.code === code;\n }\n /**\n * Get error context as JSON-serializable object\n */\n toJSON() {\n return {\n name: this.name,\n code: this.code,\n message: this.message,\n ...(this.details && { details: this.details }),\n };\n }\n}\n// =============================================================================\n// ERROR UTILITIES\n// =============================================================================\n/**\n * Safely extract error message from unknown error type\n *\n * Use this in catch blocks with `catch (error: unknown)`\n *\n * @param error - Unknown error object\n * @returns Error message string\n *\n * @example\n * ```typescript\n * try {\n * await riskyOperation();\n * } catch (error: unknown) {\n * const message = extractErrorMessage(error);\n * logger.error(message);\n * }\n * ```\n */\nexport function extractErrorMessage(error) {\n if (error instanceof Error) {\n return error.message;\n }\n if (typeof error === \"string\") {\n return error;\n }\n if (error && typeof error === \"object\" && \"message\" in error) {\n return String(error.message);\n }\n return String(error);\n}\n/**\n * Safely check if error is an Error instance and has a specific code\n *\n * @param error - Unknown error object\n * @param code - Error code to check\n * @returns True if error has the specified code\n */\nexport function hasErrorCode(error, code) {\n return error instanceof Error && \"code\" in error && error.code === code;\n}\n/**\n * Extract error code from error object\n *\n * @param error - Error object\n * @returns Error code string or undefined\n */\nexport function extractErrorCode(error) {\n if (error.code) {\n return error.code;\n }\n // Extract from error name\n if (error.name && error.name !== \"Error\") {\n return error.name\n .toUpperCase()\n .replace(/ERROR$/, \"\")\n .replace(/\\s+/g, \"_\");\n }\n return undefined;\n}\n/**\n * Check if error is a BaseError instance\n */\nexport function isBaseError(error) {\n return error instanceof BaseError;\n}\n// =============================================================================\n// UNIFIED ERROR UTILITIES (Consolidated from SDK, VS Code, and Contracts)\n// =============================================================================\n/**\n * Convert unknown error to Error instance\n *\n * Unified implementation used across all Vreko packages.\n * Replaces duplicate implementations in:\n * - packages-oss/sdk/src/errors/index.ts\n * - apps/vscode/src/utils/error.ts\n *\n * @param error - Unknown error value\n * @returns Error instance\n *\n * @example\n * ```typescript\n * try {\n * await riskyOperation();\n * } catch (error: unknown) {\n * const err = toError(error);\n * logger.error(err.message);\n * }\n * ```\n */\nexport function toError(error) {\n if (error instanceof Error) {\n return error;\n }\n if (typeof error === \"string\") {\n return new Error(error);\n }\n if (error && typeof error === \"object\") {\n if (\"message\" in error && typeof error.message === \"string\") {\n return new Error(error.message);\n }\n try {\n return new Error(JSON.stringify(error));\n }\n catch {\n return new Error(String(error));\n }\n }\n return new Error(String(error));\n}\n/**\n * Safely extract error message from unknown error type\n *\n * @deprecated Use extractErrorMessage() instead for consistency\n * @param error - Unknown error object\n * @returns Error message string\n */\nexport function getErrorMessage(error) {\n return extractErrorMessage(error);\n}\n/**\n * Safely extract error stack trace\n *\n * @param error - Unknown error value\n * @returns Stack trace string or undefined\n */\nexport function getErrorStack(error) {\n return toError(error).stack;\n}\n/**\n * Check if error has a specific code\n *\n * Unified replacement for isErrorWithCode() from VS Code\n *\n * @param error - Unknown error object\n * @param code - Error code to check\n * @returns True if error has the specified code\n */\nexport function isErrorWithCode(error, code) {\n return hasErrorCode(error, code);\n}\n/**\n * Ensure error is an Error instance with optional code wrapping\n *\n * @param error - Unknown error value\n * @param code - Optional error code to assign\n * @returns Error instance (possibly wrapped)\n */\nexport function ensureError(error, code) {\n const err = toError(error);\n if (code && !(\"code\" in err)) {\n Object.defineProperty(err, \"code\", {\n value: code,\n writable: false,\n enumerable: true,\n configurable: true,\n });\n }\n return err;\n}\n","/**\n * Domain Error Base Classes\n *\n * Foundation error classes for type-safe error handling with neverthrow.\n * Each domain (snapshot, session, protection, validation, learning) extends\n * these base classes for domain-specific error types.\n *\n * @module @vreko/contracts/errors/domain/base\n */\n// =============================================================================\n// DOMAIN ERROR BASE CLASS\n// =============================================================================\n/**\n * Base class for all domain errors\n *\n * Provides structured error information compatible with neverthrow's Result type.\n * All domain-specific errors extend this class.\n *\n * @example\n * ```typescript\n * class SnapshotNotFoundError extends DomainError {\n * constructor(snapshotId: string) {\n * super(\n * 'SNAPSHOT_NOT_FOUND',\n * `Snapshot not found: ${snapshotId}`,\n * { snapshotId }\n * );\n * }\n * }\n * ```\n */\nexport class DomainError extends Error {\n /**\n * Machine-readable error code for programmatic handling\n */\n code;\n /**\n * Additional context for debugging and error reporting\n */\n details;\n /**\n * Timestamp when the error occurred\n */\n timestamp;\n constructor(code, message, details) {\n super(message);\n this.name = this.constructor.name;\n this.code = code;\n this.details = details;\n this.timestamp = Date.now();\n // Maintains proper stack trace for where error was thrown\n Error.captureStackTrace?.(this, this.constructor);\n }\n /**\n * Check if this error has a specific code\n */\n hasCode(code) {\n return this.code === code;\n }\n /**\n * Get error context as JSON-serializable object\n */\n toJSON() {\n return {\n name: this.name,\n code: this.code,\n message: this.message,\n timestamp: this.timestamp,\n ...(this.details && { details: this.details }),\n };\n }\n}\n// =============================================================================\n// ERROR CATEGORIES\n// =============================================================================\n/**\n * Error category enumeration for classification\n */\nexport var ErrorCategory;\n(function (ErrorCategory) {\n /** Resource not found errors */\n ErrorCategory[\"NOT_FOUND\"] = \"NOT_FOUND\";\n /** Validation errors */\n ErrorCategory[\"VALIDATION\"] = \"VALIDATION\";\n /** Permission/auth errors */\n ErrorCategory[\"PERMISSION\"] = \"PERMISSION\";\n /** State/conflict errors */\n ErrorCategory[\"CONFLICT\"] = \"CONFLICT\";\n /** External service errors */\n ErrorCategory[\"EXTERNAL\"] = \"EXTERNAL\";\n /** Internal/system errors */\n ErrorCategory[\"INTERNAL\"] = \"INTERNAL\";\n})(ErrorCategory || (ErrorCategory = {}));\n/**\n * Categorized domain error with category support\n */\nexport class CategorizedDomainError extends DomainError {\n category;\n constructor(code, message, category, details) {\n super(code, message, details);\n this.category = category;\n }\n toJSON() {\n return {\n ...super.toJSON(),\n category: this.category,\n };\n }\n}\n// =============================================================================\n// COMMON ERROR TYPES\n// =============================================================================\n/**\n * Error for resource not found scenarios\n */\nexport class NotFoundError extends CategorizedDomainError {\n constructor(resourceType, resourceId, details) {\n super(`${resourceType.toUpperCase()}_NOT_FOUND`, `${resourceType} not found: ${resourceId}`, ErrorCategory.NOT_FOUND, { resourceType, resourceId, ...details });\n }\n}\n/**\n * Error for validation failures\n */\nexport class ValidationError extends CategorizedDomainError {\n validationErrors;\n constructor(message, validationErrors, details) {\n super(\"VALIDATION_ERROR\", message, ErrorCategory.VALIDATION, { validationErrors, ...details });\n this.validationErrors = validationErrors;\n }\n}\n/**\n * Error for permission denied scenarios\n */\nexport class PermissionError extends CategorizedDomainError {\n constructor(action, resource, reason, details) {\n super(\"PERMISSION_DENIED\", `Permission denied: cannot ${action} on ${resource}${reason ? ` - ${reason}` : \"\"}`, ErrorCategory.PERMISSION, { action, resource, reason, ...details });\n }\n}\n/**\n * Error for conflict scenarios (e.g., resource already exists)\n */\nexport class ConflictError extends CategorizedDomainError {\n constructor(message, conflictingResource, details) {\n super(\"CONFLICT\", message, ErrorCategory.CONFLICT, { conflictingResource, ...details });\n }\n}\n/**\n * Error for external service failures\n */\nexport class ExternalServiceError extends CategorizedDomainError {\n constructor(serviceName, operation, originalError, details) {\n super(\"EXTERNAL_SERVICE_ERROR\", `External service error: ${serviceName} failed during ${operation}`, ErrorCategory.EXTERNAL, {\n serviceName,\n operation,\n originalErrorMessage: originalError?.message,\n ...details,\n });\n }\n}\n","/**\n * @vreko/contracts - EventBus Emitter Implementation\n *\n * This file contains the EventBus implementation using EventEmitter2.\n * Consolidated from @vreko/events package.\n */\nimport { randomUUID } from \"node:crypto\";\nimport EventEmitter2 from \"eventemitter2\";\n// Define the event types\nexport var VrekoEvent;\n(function (VrekoEvent) {\n VrekoEvent[\"SNAPSHOT_CREATED\"] = \"snapshot:created\";\n VrekoEvent[\"SNAPSHOT_DELETED\"] = \"snapshot:deleted\";\n VrekoEvent[\"SNAPSHOT_RESTORED\"] = \"snapshot:restored\";\n VrekoEvent[\"RESTORE_STARTED\"] = \"snapshot:restore_started\";\n VrekoEvent[\"PROTECTION_CHANGED\"] = \"protection:changed\";\n VrekoEvent[\"FILE_PROTECTED\"] = \"file:protected\";\n VrekoEvent[\"FILE_UNPROTECTED\"] = \"file:unprotected\";\n VrekoEvent[\"ANALYSIS_REQUESTED\"] = \"analysis:requested\";\n VrekoEvent[\"ANALYSIS_COMPLETED\"] = \"analysis:completed\";\n})(VrekoEvent || (VrekoEvent = {}));\n// QoS levels for event delivery guarantees\nexport var QoSLevel;\n(function (QoSLevel) {\n QoSLevel[QoSLevel[\"BEST_EFFORT\"] = 0] = \"BEST_EFFORT\";\n QoSLevel[QoSLevel[\"AT_LEAST_ONCE\"] = 1] = \"AT_LEAST_ONCE\";\n QoSLevel[QoSLevel[\"EXACTLY_ONCE\"] = 2] = \"EXACTLY_ONCE\";\n})(QoSLevel || (QoSLevel = {}));\n// Check if running in MCP quiet mode (suppress all non-error output for MCP stdio)\nconst MCP_QUIET = process.env.MCP_QUIET === \"1\" || process.env.MCP_QUIET === \"true\";\n// Simple logger implementation - uses stderr to avoid polluting stdout (important for MCP stdio transport)\n// When MCP_QUIET=1, only errors are logged to avoid corrupting MCP protocol\nconst logger = {\n info: MCP_QUIET\n ? () => {\n /* suppressed in quiet mode */\n }\n : // biome-ignore lint/suspicious/noConsole: eventBus logger uses stderr for info output\n console.error,\n warn: MCP_QUIET\n ? () => {\n /* suppressed in quiet mode */\n }\n : // biome-ignore lint/suspicious/noConsole: eventBus logger uses stderr for warn output\n console.error,\n // biome-ignore lint/suspicious/noConsole: eventBus logger uses stderr for error output\n error: console.error,\n debug: MCP_QUIET\n ? () => {\n /* suppressed in quiet mode */\n }\n : // biome-ignore lint/suspicious/noConsole: eventBus logger uses stderr for debug output\n console.error,\n};\n// Simple in-memory storage for events (replaces the persistence manager)\nclass InMemoryEventStorage {\n events = new Map();\n async storeEvent(event) {\n this.events.set(event.id, event);\n }\n async getEvent(eventId) {\n return this.events.get(eventId) || null;\n }\n async listEvents(filters) {\n let events = Array.from(this.events.values());\n // Apply filters\n if (filters?.type) {\n events = events.filter((event) => event.type === filters.type);\n }\n if (filters?.qosLevel !== undefined) {\n events = events.filter((event) => event.qosLevel === filters.qosLevel);\n }\n if (filters?.status) {\n events = events.filter((event) => event.status === filters.status);\n }\n // Apply limit and offset\n if (filters?.offset) {\n events = events.slice(filters.offset);\n }\n if (filters?.limit) {\n events = events.slice(0, filters.limit);\n }\n return events;\n }\n async updateEventStatus(eventId, status) {\n const event = this.events.get(eventId);\n if (event) {\n event.status = status;\n this.events.set(eventId, event);\n }\n }\n close() {\n this.events.clear();\n }\n}\nexport class VrekoEventBusEventEmitter2 {\n emitter;\n storage;\n requestHandlers = new Map();\n pendingRequests = new Map();\n constructor() {\n // Initialize with wildcard support to match the old EventBus functionality\n this.emitter = new EventEmitter2({\n wildcard: true,\n delimiter: \":\",\n newListener: false,\n removeListener: false,\n });\n // Initialize in-memory storage\n this.storage = new InMemoryEventStorage();\n }\n async initialize() {\n // No initialization needed for EventEmitter2\n logger.info(\"EventEmitter2 EventBus initialized\");\n }\n // EventEmitter2 methods\n on(event, listener) {\n this.emitter.on(event, listener);\n return this;\n }\n once(event, listener) {\n this.emitter.once(event, listener);\n return this;\n }\n off(event, listener) {\n this.emitter.off(event, listener);\n return this;\n }\n emit(event, ...values) {\n return this.emitter.emit(event, ...values);\n }\n // Request/response pattern\n onRequest(event, handler) {\n this.requestHandlers.set(event, handler);\n }\n async request(event, data, timeoutMs = 5000) {\n return new Promise((resolve, reject) => {\n const id = `${Date.now()}-${Math.random()}`;\n const timeout = setTimeout(() => {\n this.pendingRequests.delete(id);\n reject(new Error(`Request timeout: ${event}`));\n }, timeoutMs);\n this.pendingRequests.set(id, { resolve: resolve, reject, timeout });\n // In a real implementation, we would need to handle the request/response\n // For now, we'll just resolve with a mock response\n const handler = this.requestHandlers.get(event);\n if (handler) {\n handler(data).then((result) => {\n clearTimeout(timeout);\n this.pendingRequests.delete(id);\n resolve(result);\n }, (error) => {\n clearTimeout(timeout);\n this.pendingRequests.delete(id);\n reject(error instanceof Error ? error : new Error(String(error)));\n });\n }\n else {\n clearTimeout(timeout);\n this.pendingRequests.delete(id);\n reject(new Error(`No handler for request: ${event}`));\n }\n });\n }\n /**\n * Publish an event with QoS guarantees\n * @param eventType The type of event to publish\n * @param payload The event payload\n * @param qosLevel The QoS level for this event\n * @param correlationId Optional correlation ID for related events\n */\n async publishQoS(eventType, payload, qosLevel = QoSLevel.BEST_EFFORT, correlationId) {\n const eventId = randomUUID();\n const timestamp = Date.now();\n // Create enhanced event with QoS support\n const event = {\n id: eventId,\n type: eventType,\n payload,\n timestamp,\n qosLevel,\n correlationId,\n retries: 0,\n status: \"pending\",\n };\n // Store event if QoS level requires it\n if (qosLevel > QoSLevel.BEST_EFFORT) {\n try {\n await this.storage.storeEvent(event);\n }\n catch (error) {\n logger.error(\"Failed to store event\", error);\n }\n }\n // Emit the event\n this.emitter.emit(eventType, payload);\n // For AT_LEAST_ONCE and EXACTLY_ONCE, update status to processed\n if (qosLevel >= QoSLevel.AT_LEAST_ONCE) {\n try {\n await this.storage.updateEventStatus(eventId, \"processed\");\n }\n catch (error) {\n logger.error(\"Failed to update event status\", error);\n }\n // Return event ID for tracking\n return eventId;\n }\n }\n publish(eventType, payload) {\n // Emit the event\n this.emitter.emit(eventType, payload);\n }\n close() {\n // Cancel all pending requests\n for (const [_id, pending] of this.pendingRequests) {\n clearTimeout(pending.timeout);\n pending.reject(new Error(\"EventBus closed\"));\n }\n this.pendingRequests.clear();\n // Close storage\n this.storage.close();\n // Remove all listeners\n this.emitter.removeAllListeners();\n }\n /**\n * Replay events within a time range\n */\n async replayEvents(startTime, endTime, eventType) {\n try {\n const events = await this.storage.listEvents({\n type: eventType,\n });\n // Filter events by time range\n const filteredEvents = events.filter((event) => event.timestamp >= startTime && event.timestamp <= endTime);\n // Replay events in order\n for (const event of filteredEvents) {\n this.emitter.emit(event.type, event.payload);\n }\n }\n catch (error) {\n logger.error(\"Failed to replay events\", error);\n throw error;\n }\n }\n /**\n * Get event by ID\n */\n async getEvent(eventId) {\n return this.storage.getEvent(eventId);\n }\n /**\n * List events with filters\n */\n async listEvents(filters) {\n return this.storage.listEvents(filters);\n }\n}\n// Alias for backward compatibility\nexport { VrekoEventBusEventEmitter2 as VrekoEventBus };\n","// ESM imports fixed for Node.js v22+\n/**\n * Extension Telemetry Events Schema\n *\n * @deprecated This file defines VS Code extension-specific telemetry events.\n * These are DIFFERENT from core analytics events in events/core.ts.\n *\n * Extension events use:\n * - Dot notation: \"snapshot.created\" (not \"snapshot_created\")\n * - Simpler schema: { method, filesCount } (not { session_id, snapshot_id, bytes_* })\n *\n * For new code, prefer:\n * - Core analytics: import { SnapshotCreatedEvent } from '../events/core.js'\n * - Extension telemetry: import types explicitly with prefix\n *\n * Migration: Q2 2026 - These types will be consolidated or renamed\n *\n * @see events/core.ts for canonical analytics event definitions\n * @see ADR-004 Type Consolidation Strategy\n */\n// Event name enum for compile-time checking\nexport const TELEMETRY_EVENTS = {\n EXTENSION_ACTIVATED: \"extension.activated\",\n EXTENSION_DEACTIVATED: \"extension.deactivated\",\n COMMAND_EXECUTION: \"command.execution\",\n SNAPSHOT_CREATED: \"snapshot.created\",\n VREKO_USED: \"vreko.used\",\n SNAPBACK_USED: \"snapback.used\", // preserved - PostHog historical event name\n RISK_DETECTED: \"risk.detected\",\n VIEW_ACTIVATED: \"view.activated\",\n NOTIFICATION_SHOWN: \"notification.shown\",\n FEATURE_USED: \"feature.used\",\n ERROR: \"error\",\n WALKTHROUGH_STEP_COMPLETED: \"walkthrough.step.completed\",\n ONBOARDING_PROTECTION_ASSIGNED: \"onboarding.protection.assigned\",\n ONBOARDING_PHASE_PROGRESSED: \"onboarding.phase.progressed\",\n ONBOARDING_CONTEXTUAL_PROMPT_SHOWN: \"onboarding.contextualPrompt.shown\",\n SIGNATURE_VERIFICATION_SUCCESS: \"signature.verification.success\",\n SIGNATURE_VERIFICATION_FAILED: \"signature.verification.failed\",\n RULES_CACHED_FALLBACK: \"rules.cached.fallback\",\n // Vitals Events\n VITALS_TRAJECTORY_CHANGED: \"vitals_trajectory_changed\",\n VITALS_CRITICAL_STATE: \"vitals_critical_state\",\n VITALS_AUTO_SNAPSHOT: \"vitals_auto_snapshot\",\n VITALS_NUDGE_SHOWN: \"vitals_nudge_shown\",\n};\n// Schema validation functions\nexport function validateTelemetryEvent(event) {\n switch (event.event) {\n case TELEMETRY_EVENTS.EXTENSION_ACTIVATED:\n return validateExtensionActivatedEvent(event);\n case TELEMETRY_EVENTS.EXTENSION_DEACTIVATED:\n return validateExtensionDeactivatedEvent(event);\n case TELEMETRY_EVENTS.COMMAND_EXECUTION:\n return validateCommandExecutionEvent(event);\n case TELEMETRY_EVENTS.SNAPSHOT_CREATED:\n return validateSnapshotCreatedEvent(event);\n case TELEMETRY_EVENTS.VREKO_USED:\n return validateVrekoUsedEvent(event);\n case TELEMETRY_EVENTS.SNAPBACK_USED:\n return validateSnapBackUsedEvent(event);\n case TELEMETRY_EVENTS.RISK_DETECTED:\n return validateRiskDetectedEvent(event);\n case TELEMETRY_EVENTS.VIEW_ACTIVATED:\n return validateViewActivatedEvent(event);\n case TELEMETRY_EVENTS.NOTIFICATION_SHOWN:\n return validateNotificationShownEvent(event);\n case TELEMETRY_EVENTS.FEATURE_USED:\n return validateFeatureUsedEvent(event);\n case TELEMETRY_EVENTS.ERROR:\n return validateErrorEvent(event);\n case TELEMETRY_EVENTS.WALKTHROUGH_STEP_COMPLETED:\n return validateWalkthroughStepCompletedEvent(event);\n case TELEMETRY_EVENTS.ONBOARDING_PROTECTION_ASSIGNED:\n return validateOnboardingProtectionAssignedEvent(event);\n case TELEMETRY_EVENTS.ONBOARDING_PHASE_PROGRESSED:\n return validateOnboardingPhaseProgressedEvent(event);\n case TELEMETRY_EVENTS.ONBOARDING_CONTEXTUAL_PROMPT_SHOWN:\n return validateOnboardingContextualPromptShownEvent(event);\n case TELEMETRY_EVENTS.SIGNATURE_VERIFICATION_SUCCESS:\n return validateSignatureVerificationSuccessEvent(event);\n case TELEMETRY_EVENTS.SIGNATURE_VERIFICATION_FAILED:\n return validateSignatureVerificationFailedEvent(event);\n case TELEMETRY_EVENTS.RULES_CACHED_FALLBACK:\n return validateRulesCachedFallbackEvent(event);\n case TELEMETRY_EVENTS.VITALS_TRAJECTORY_CHANGED:\n return validateVitalsTrajectoryChangedEvent(event);\n case TELEMETRY_EVENTS.VITALS_CRITICAL_STATE:\n return validateVitalsCriticalStateEvent(event);\n case TELEMETRY_EVENTS.VITALS_AUTO_SNAPSHOT:\n return validateVitalsAutoSnapshotEvent(event);\n case TELEMETRY_EVENTS.VITALS_NUDGE_SHOWN:\n return validateVitalsNudgeShownEvent(event);\n default:\n return false;\n }\n}\n// Individual validation functions\nfunction validateExtensionActivatedEvent(event) {\n return typeof event.properties.version === \"string\" && typeof event.properties.vscodeVersion === \"string\";\n}\nfunction validateExtensionDeactivatedEvent(event) {\n return Object.keys(event.properties).length === 0;\n}\nfunction validateCommandExecutionEvent(event) {\n return (typeof event.properties.command === \"string\" &&\n typeof event.properties.duration === \"number\" &&\n typeof event.properties.success === \"boolean\");\n}\nfunction validateSnapshotCreatedEvent(event) {\n return typeof event.properties.method === \"string\" && typeof event.properties.filesCount === \"number\";\n}\nfunction validateVrekoUsedEvent(event) {\n return (typeof event.properties.filesRestored === \"number\" &&\n typeof event.properties.duration === \"number\" &&\n typeof event.properties.success === \"boolean\");\n}\nfunction validateSnapBackUsedEvent(event) {\n return (typeof event.properties.filesRestored === \"number\" &&\n typeof event.properties.duration === \"number\" &&\n typeof event.properties.success === \"boolean\");\n}\nfunction validateRiskDetectedEvent(event) {\n return (typeof event.properties.riskLevel === \"string\" &&\n Array.isArray(event.properties.patterns) &&\n typeof event.properties.confidence === \"number\");\n}\nfunction validateViewActivatedEvent(event) {\n return typeof event.properties.viewId === \"string\";\n}\nfunction validateNotificationShownEvent(event) {\n return (typeof event.properties.notificationType === \"string\" &&\n (event.properties.actionTaken === null || typeof event.properties.actionTaken === \"string\"));\n}\nfunction validateFeatureUsedEvent(event) {\n return typeof event.properties.feature === \"string\";\n}\nfunction validateErrorEvent(event) {\n return typeof event.properties.errorType === \"string\" && typeof event.properties.errorMessage === \"string\";\n}\nfunction validateWalkthroughStepCompletedEvent(event) {\n return typeof event.properties.stepId === \"string\" && typeof event.properties.stepTitle === \"string\";\n}\nfunction validateOnboardingProtectionAssignedEvent(event) {\n return (typeof event.properties.level === \"string\" &&\n typeof event.properties.trigger === \"string\" &&\n typeof event.properties.fileType === \"string\" &&\n typeof event.properties.isFirstProtection === \"boolean\");\n}\nfunction validateOnboardingPhaseProgressedEvent(event) {\n return (typeof event.properties.phase === \"number\" &&\n typeof event.properties.trigger === \"string\" &&\n Array.isArray(event.properties.unlockedFeatures));\n}\nfunction validateOnboardingContextualPromptShownEvent(event) {\n return (typeof event.properties.promptType === \"string\" &&\n (event.properties.actionTaken === null || typeof event.properties.actionTaken === \"string\"));\n}\nfunction validateSignatureVerificationSuccessEvent(event) {\n return Object.keys(event.properties).length === 0;\n}\nfunction validateSignatureVerificationFailedEvent(event) {\n return Object.keys(event.properties).length === 0;\n}\nfunction validateRulesCachedFallbackEvent(event) {\n return Object.keys(event.properties).length === 0;\n}\n// Vitals event validators\nconst VALID_TRAJECTORIES = [\"stable\", \"escalating\", \"critical\", \"recovering\"];\nconst VALID_TEMP_LEVELS = [\"cold\", \"warm\", \"hot\", \"burning\"];\nfunction validateVitalsTrajectoryChangedEvent(event) {\n return (VALID_TRAJECTORIES.includes(event.properties.previousTrajectory) &&\n VALID_TRAJECTORIES.includes(event.properties.newTrajectory) &&\n typeof event.properties.pressure === \"number\" &&\n typeof event.properties.oxygen === \"number\" &&\n VALID_TEMP_LEVELS.includes(event.properties.tempLevel));\n}\nfunction validateVitalsCriticalStateEvent(event) {\n return (typeof event.properties.pressure === \"number\" &&\n typeof event.properties.oxygen === \"number\" &&\n VALID_TEMP_LEVELS.includes(event.properties.tempLevel) &&\n typeof event.properties.unsnapshotedChanges === \"number\");\n}\nfunction validateVitalsAutoSnapshotEvent(event) {\n return (VALID_TRAJECTORIES.includes(event.properties.trajectory) &&\n typeof event.properties.pressure === \"number\" &&\n typeof event.properties.oxygen === \"number\" &&\n typeof event.properties.filesCount === \"number\");\n}\nfunction validateVitalsNudgeShownEvent(event) {\n return (VALID_TRAJECTORIES.includes(event.properties.trajectory) &&\n typeof event.properties.suggestion === \"string\" &&\n (event.properties.actionTaken === null || typeof event.properties.actionTaken === \"string\"));\n}\n","/**\n * Analysis Types\n *\n * Common type definitions for code analysis across Vreko packages.\n * Used by @vreko/core, @vreko/intelligence, and other analysis tools.\n *\n * @module types/analysis\n */\nimport { z } from \"zod\";\n/**\n * Issue severity levels (comprehensive) - Zod schema\n * - critical: Security vulnerabilities, data loss risks\n * - high: Significant bugs, performance issues\n * - medium: Code quality issues, potential bugs\n * - low: Minor issues, style violations\n * - info: Informational messages, suggestions\n */\nexport const SeveritySchema = z.enum([\"critical\", \"high\", \"medium\", \"low\", \"info\"]);\n/**\n * Risk/Urgency severity (4-level, action-oriented) - Zod schema\n * Used for risk scores, urgency levels, and event severity where \"info\" doesn't apply.\n * Order: critical > high > medium > low\n */\nexport const RiskSeveritySchema = z.enum([\"critical\", \"high\", \"medium\", \"low\"]);\n/**\n * Simplified severity for validation contexts - Zod schema\n * Maps to Severity: critical->critical, warning->medium, info->info\n */\nexport const ValidationSeveritySchema = z.enum([\"critical\", \"warning\", \"info\"]);\n/**\n * Convert ValidationSeverity to Severity\n */\nexport function toSeverity(validationSeverity) {\n switch (validationSeverity) {\n case \"critical\":\n return \"critical\";\n case \"warning\":\n return \"medium\";\n case \"info\":\n return \"info\";\n }\n}\n/**\n * Convert Severity to ValidationSeverity\n */\nexport function toValidationSeverity(severity) {\n switch (severity) {\n case \"critical\":\n case \"high\":\n return \"critical\";\n case \"medium\":\n case \"low\":\n return \"warning\";\n case \"info\":\n return \"info\";\n }\n}\n/**\n * Base issue schema for all analysis/validation contexts\n */\nexport const BaseIssueSchema = z.object({\n /** Severity level */\n severity: z.union([SeveritySchema, ValidationSeveritySchema]),\n /** Issue type code (e.g., UNSAFE_EVAL, PATH_TRAVERSAL) */\n type: z.string(),\n /** Human-readable message */\n message: z.string(),\n /** Line number (1-indexed) */\n line: z.number().optional(),\n /** Suggested fix */\n fix: z.string().optional(),\n});\n/**\n * Issue detected during validation (simple form) - Zod schema\n * Used by intelligence package validation layers\n */\nexport const ValidationIssueSchema = BaseIssueSchema.extend({\n severity: ValidationSeveritySchema,\n});\n/**\n * Issue detected during analysis (detailed form) - Zod schema\n * Used by core package analyzers\n */\nexport const AnalysisIssueSchema = BaseIssueSchema.extend({\n /** Unique identifier for deduplication: analyzer/type/file/line */\n id: z.string(),\n /** Severity level */\n severity: SeveritySchema,\n /** File path where issue was found */\n file: z.string().optional(),\n /** Column number (1-indexed) */\n column: z.number().optional(),\n /** Code snippet showing the issue */\n snippet: z.string().optional(),\n /** Rule ID if from a lint tool */\n rule: z.string().optional(),\n});\n/**\n * Basic validation result - Zod schema\n */\nexport const ValidationResultSchema = z.object({\n /** Whether validation passed */\n passed: z.boolean(),\n /** Issues found */\n issues: z.array(BaseIssueSchema),\n /** Duration in milliseconds */\n duration: z.number().optional(),\n});\n/**\n * Circuit breaker state enum - Zod schema\n */\nexport const CircuitBreakerStateEnumSchema = z.enum([\"closed\", \"open\", \"half-open\"]);\n/**\n * Circuit breaker state - Zod schema\n * Used for resilience patterns across packages\n */\nexport const CircuitBreakerStateSchema = z.object({\n /** Current state */\n state: CircuitBreakerStateEnumSchema,\n /** Failure count */\n failures: z.number(),\n /** Failure threshold */\n threshold: z.number(),\n /** Last failure timestamp */\n lastFailure: z.number().optional(),\n /** Cooldown period in ms */\n cooldownMs: z.number(),\n});\n","// Extend Zod with OpenAPI functionality\nimport { extendZodWithOpenApi } from \"@asteasolutions/zod-to-openapi\";\nimport { z } from \"zod\";\nimport { RiskSeveritySchema } from \"../types/analysis.js\";\nextendZodWithOpenApi(z);\n// Event version constant\nexport const EVENT_VERSION = \"1.0.0\";\n// Base event schema with version\nexport const BaseEventSchema = z.object({\n event_version: z.string().default(EVENT_VERSION).openapi({ example: \"1.0.0\" }),\n timestamp: z\n .number()\n .default(() => Date.now())\n .openapi({ example: 1620000000000 }),\n});\n// 1. save_attempt event\nexport const SaveAttemptSchema = BaseEventSchema.extend({\n event: z.literal(\"save_attempt\"),\n properties: z.object({\n protection: z.enum([\"watch\", \"warn\", \"block\"]).openapi({ description: \"Protection level applied to the file\" }),\n severity: z\n .enum([\"low\", \"medium\", \"high\", \"critical\"])\n .openapi({ description: \"Severity of the risk detected\" }),\n file_kind: z.string().openapi({ description: \"Type of file being protected\", example: \"typescript\" }),\n reason: z.string().openapi({\n description: \"Reason for the save attempt\",\n example: \"User tried to save a file with a secret\",\n }),\n ai_present: z.boolean().openapi({ description: \"Whether AI was involved in the decision\" }),\n ai_burst: z.boolean().openapi({ description: \"Whether this was part of an AI burst operation\" }),\n outcome: z.enum([\"saved\", \"canceled\", \"blocked\"]).openapi({ description: \"Outcome of the save attempt\" }),\n }),\n}).openapi(\"SaveAttemptEvent\");\n// 2. snapshot_created event\nexport const SnapshotCreatedSchema = BaseEventSchema.extend({\n event: z.literal(\"snapshot_created\"),\n properties: z.object({\n session_id: z.string().openapi({ description: \"Unique identifier for the session\", example: \"sess_12345\" }),\n snapshot_id: z.string().openapi({ description: \"Unique identifier for the snapshot\", example: \"snap_67890\" }),\n bytes_original: z.number().openapi({ description: \"Original size of the file in bytes\", example: 1024 }),\n bytes_stored: z.number().openapi({ description: \"Size of the stored snapshot in bytes\", example: 512 }),\n dedup_hit: z.boolean().openapi({ description: \"Whether deduplication was applied\" }),\n latency_ms: z\n .number()\n .openapi({ description: \"Time taken to create the snapshot in milliseconds\", example: 45 }),\n }),\n}).openapi(\"SnapshotCreatedEvent\");\n// 3. session_finalized event\nexport const SessionFinalizedSchema = BaseEventSchema.extend({\n event: z.literal(\"session_finalized\"),\n properties: z.object({\n session_id: z.string().openapi({ description: \"Unique identifier for the session\", example: \"sess_12345\" }),\n files: z\n .array(z.string())\n .openapi({ description: \"List of files in the session\", example: [\"src/index.ts\", \"package.json\"] }),\n triggers: z.array(z.string()).openapi({\n description: \"List of triggers that activated during the session\",\n example: [\"save_attempt\", \"risk_detected\"],\n }),\n duration_ms: z.number().openapi({ description: \"Duration of the session in milliseconds\", example: 120000 }),\n ai_present: z.boolean().openapi({ description: \"Whether AI was involved in the session\" }),\n ai_burst: z.boolean().openapi({ description: \"Whether this was part of an AI burst operation\" }),\n highest_severity: z\n .enum([\"info\", \"low\", \"medium\", \"high\", \"critical\"])\n .openapi({ description: \"Highest severity of issues in the session\" }),\n // AI detection v1 fields\n ai_assist_level: z\n .enum([\"none\", \"light\", \"medium\", \"heavy\", \"unknown\"])\n .optional()\n .openapi({ description: \"AI assistance level inferred from change patterns\", example: \"medium\" }),\n ai_confidence_score: z\n .number()\n .min(0)\n .max(10)\n .optional()\n .openapi({ description: \"Confidence score for AI detection (0-10)\", example: 7.5 }),\n ai_provider: z\n .enum([\"cursor\", \"claude\", \"unknown\", \"none\"])\n .optional()\n .openapi({ description: \"Detected AI tool/provider\", example: \"cursor\" }),\n ai_large_insert_count: z\n .number()\n .int()\n .min(0)\n .optional()\n .openapi({ description: \"Count of large insertions detected\", example: 5 }),\n ai_total_chars: z\n .number()\n .int()\n .min(0)\n .optional()\n .openapi({ description: \"Total characters in large insertions\", example: 2000 }),\n context: z\n .record(z.string(), z.any())\n .optional()\n .openapi({ description: \"Additional context for the session\" }),\n }),\n}).openapi(\"SessionFinalizedEvent\");\n// 4. issue_created event\nexport const IssueCreatedSchema = BaseEventSchema.extend({\n event: z.literal(\"issue_created\"),\n properties: z.object({\n issue_id: z.string().openapi({ description: \"Unique identifier for the issue\", example: \"issue_12345\" }),\n session_id: z.string().openapi({ description: \"Unique identifier for the session\", example: \"sess_12345\" }),\n file_kind: z\n .string()\n .openapi({ description: \"Type of file where the issue was detected\", example: \"typescript\" }),\n type: z.enum([\"secret\", \"mock\", \"phantom\"]).openapi({ description: \"Type of issue detected\" }),\n severity: RiskSeveritySchema.openapi({ description: \"Severity of the issue\" }),\n recommendation: z.string().openapi({\n description: \"Recommendation for resolving the issue\",\n example: \"Remove the secret from the file\",\n }),\n context: z.record(z.string(), z.any()).optional().openapi({ description: \"Additional context for the issue\" }),\n }),\n}).openapi(\"IssueCreatedEvent\");\n// 5. issue_resolved event\nexport const IssueResolvedSchema = BaseEventSchema.extend({\n event: z.literal(\"issue_resolved\"),\n properties: z.object({\n issue_id: z.string().openapi({ description: \"Unique identifier for the issue\", example: \"issue_12345\" }),\n resolution: z.enum([\"fixed\", \"ignored\", \"allowlisted\"]).openapi({ description: \"How the issue was resolved\" }),\n }),\n}).openapi(\"IssueResolvedEvent\");\n// 6. session_restored event\nexport const SessionRestoredSchema = BaseEventSchema.extend({\n event: z.literal(\"session_restored\"),\n properties: z.object({\n session_id: z.string().openapi({ description: \"Unique identifier for the session\", example: \"sess_12345\" }),\n files_restored: z\n .array(z.string())\n .openapi({ description: \"List of files that were restored\", example: [\"src/index.ts\", \"package.json\"] }),\n time_to_restore_ms: z\n .number()\n .openapi({ description: \"Time taken to restore the session in milliseconds\", example: 2500 }),\n reason: z\n .string()\n .openapi({ description: \"Reason for the session restoration\", example: \"User requested rollback\" }),\n }),\n}).openapi(\"SessionRestoredEvent\");\n// 7. policy_changed event\nexport const PolicyChangedSchema = BaseEventSchema.extend({\n event: z.literal(\"policy_changed\"),\n properties: z.object({\n pattern: z.string().openapi({ description: \"File pattern that the policy applies to\", example: \"*.env\" }),\n from: z\n .enum([\"watch\", \"warn\", \"block\", \"unprotected\", \"unauthenticated\", \"unaware\"])\n .openapi({ description: \"Previous protection level\" }),\n to: z\n .enum([\"watch\", \"warn\", \"block\", \"unprotected\", \"authenticated\", \"aware\"])\n .openapi({ description: \"New protection level\" }),\n source: z.string().openapi({ description: \"Source of the policy change\", example: \"cli\" }),\n context: z\n .record(z.string(), z.any())\n .optional()\n .openapi({ description: \"Additional context for the policy change\" }),\n }),\n}).openapi(\"PolicyChangedEvent\");\n// ============================================================================\n// DIAGNOSTIC TELEMETRY EVENTS (Auth Flow & Welcome Panel Instrumentation)\n// ============================================================================\n// 8. auth.provider.selected event - Track OAuth vs Device flow choice\nexport const AuthProviderSelectedSchema = BaseEventSchema.extend({\n event: z.literal(\"auth.provider.selected\"),\n properties: z.object({\n provider: z.enum([\"oauth\", \"device_flow\"]).openapi({ description: \"Authentication provider selected\" }),\n trigger: z\n .enum([\"user_selected\", \"fallback\", \"auto\"])\n .openapi({ description: \"How the provider was selected\" }),\n }),\n}).openapi(\"AuthProviderSelectedEvent\");\n// 9. auth.browser.opened event - Track browser launch success\nexport const AuthBrowserOpenedSchema = BaseEventSchema.extend({\n event: z.literal(\"auth.browser.opened\"),\n properties: z.object({\n method: z\n .enum([\"external_command\", \"clipboard\", \"error\"])\n .openapi({ description: \"Method used to open browser\" }),\n success: z.boolean().openapi({ description: \"Whether browser was successfully opened\" }),\n error: z.string().optional().openapi({ description: \"Error message if browser opening failed\" }),\n }),\n}).openapi(\"AuthBrowserOpenedEvent\");\n// 10. auth.code.entry event - Track device code entry in browser\nexport const AuthCodeEntrySchema = BaseEventSchema.extend({\n event: z.literal(\"auth.code.entry\"),\n properties: z.object({\n code_format: z\n .enum([\"valid\", \"invalid_chars\", \"wrong_length\"])\n .openapi({ description: \"Validity of the entered code format\" }),\n time_to_enter_ms: z.number().openapi({ description: \"Time taken to enter the code in milliseconds\" }),\n attempts: z.number().int().min(1).openapi({ description: \"Number of attempts to enter the code correctly\" }),\n code_length: z.number().int().optional().openapi({ description: \"Length of the entered code\" }),\n }),\n}).openapi(\"AuthCodeEntryEvent\");\n// 11. auth.approval.received event - Track successful device code approval\nexport const AuthApprovalReceivedSchema = BaseEventSchema.extend({\n event: z.literal(\"auth.approval.received\"),\n properties: z.object({\n polling_attempts: z\n .number()\n .int()\n .min(1)\n .openapi({ description: \"Number of polling attempts before approval\" }),\n total_wait_ms: z.number().openapi({ description: \"Total time waited for approval in milliseconds\" }),\n device_code_expired: z.boolean().openapi({ description: \"Whether the device code had expired\" }),\n }),\n}).openapi(\"AuthApprovalReceivedEvent\");\n// 12. welcome.feature.viewed event - Track feature discovery in welcome panel\nexport const WelcomeFeatureViewedSchema = BaseEventSchema.extend({\n event: z.literal(\"welcome.feature.viewed\"),\n properties: z.object({\n feature: z.string().openapi({ description: \"Feature name shown in welcome panel\", example: \"ai_detection\" }),\n position: z.number().int().min(0).openapi({ description: \"Position in feature carousel\", example: 0 }),\n trigger: z\n .enum([\"onboarding\", \"nudge\", \"manual\"])\n .openapi({ description: \"How the welcome panel was triggered\" }),\n }),\n}).openapi(\"WelcomeFeatureViewedEvent\");\n// 13. welcome.action.triggered event - Track feature adoption from welcome panel\nexport const WelcomeActionTriggeredSchema = BaseEventSchema.extend({\n event: z.literal(\"welcome.action.triggered\"),\n properties: z.object({\n action: z.string().openapi({ description: \"Action triggered by user\", example: \"try_now\" }),\n feature: z.string().openapi({ description: \"Feature associated with the action\", example: \"ai_detection\" }),\n time_viewed_ms: z\n .number()\n .openapi({ description: \"How long the feature was viewed before action\", example: 2500 }),\n }),\n}).openapi(\"WelcomeActionTriggeredEvent\");\n// Zod schema for validating any core event (including diagnostic events)\nexport const CoreEventSchema = z.discriminatedUnion(\"event\", [\n SaveAttemptSchema,\n SnapshotCreatedSchema,\n SessionFinalizedSchema,\n IssueCreatedSchema,\n IssueResolvedSchema,\n SessionRestoredSchema,\n PolicyChangedSchema,\n AuthProviderSelectedSchema,\n AuthBrowserOpenedSchema,\n AuthCodeEntrySchema,\n AuthApprovalReceivedSchema,\n WelcomeFeatureViewedSchema,\n WelcomeActionTriggeredSchema,\n]);\n// Event name enum for compile-time checking (including diagnostic events)\nexport const CORE_TELEMETRY_EVENTS = {\n // Core events (7)\n SAVE_ATTEMPT: \"save_attempt\",\n SNAPSHOT_CREATED: \"snapshot_created\",\n SESSION_FINALIZED: \"session_finalized\",\n ISSUE_CREATED: \"issue_created\",\n ISSUE_RESOLVED: \"issue_resolved\",\n SESSION_RESTORED: \"session_restored\",\n POLICY_CHANGED: \"policy_changed\",\n // Diagnostic events (6)\n AUTH_PROVIDER_SELECTED: \"auth.provider.selected\",\n AUTH_BROWSER_OPENED: \"auth.browser.opened\",\n AUTH_CODE_ENTRY: \"auth.code.entry\",\n AUTH_APPROVAL_RECEIVED: \"auth.approval.received\",\n WELCOME_FEATURE_VIEWED: \"welcome.feature.viewed\",\n WELCOME_ACTION_TRIGGERED: \"welcome.action.triggered\",\n};\n// Helper function to validate core telemetry events\nexport function validateCoreTelemetryEvent(event) {\n const result = CoreEventSchema.safeParse(event);\n return result.success;\n}\n// Helper function to get validation errors\nexport function getCoreEventValidationError(event) {\n const result = CoreEventSchema.safeParse(event);\n if (result.success) {\n return null;\n }\n return result.error.message;\n}\n","// ESM imports fixed for Node.js v22+\n/**\n * Accountability Effect Event Schema\n *\n * Tracks user perception vs reality of SnapBack's value in a session.\n * Used for session feedback implementation to measure accountability.\n *\n * Privacy guarantees (per ARCHITECTURE.md):\n * - ❌ No file paths\n * - ❌ No path hashes\n * - ❌ No workspace identifiers\n * - ✅ Counts only (files_modified, lines_added, etc.)\n * - ✅ Durations (session_duration_ms)\n * - ✅ Enums (perceived_help, tier)\n *\n * @module events/accountability\n */\nimport { extendZodWithOpenApi } from \"@asteasolutions/zod-to-openapi\";\nimport { z } from \"zod\";\nimport { BaseEventSchema } from \"./core.js\";\nextendZodWithOpenApi(z);\n// ============================================================================\n// Accountability Effect Event\n// ============================================================================\n/**\n * Schema for tracking user's perception of how much SnapBack helped\n */\nexport const PerceivedHelpSchema = z\n .enum([\"significantly\", \"somewhat\", \"not_really\", \"blocked\"])\n .openapi({ description: \"User's perception of how much SnapBack helped\" });\n/**\n * Type guard for PerceivedHelp values\n */\nexport function isPerceivedHelp(value) {\n return PerceivedHelpSchema.safeParse(value).success;\n}\n/**\n * Schema for actual changes made during the session (counts only, no paths)\n */\nconst ActualChangesSchema = z\n .object({\n files_modified: z\n .number()\n .int()\n .min(0)\n .openapi({ description: \"Number of files modified during session\", example: 5 }),\n lines_added: z.number().int().min(0).openapi({ description: \"Total lines added\", example: 150 }),\n lines_removed: z.number().int().min(0).openapi({ description: \"Total lines removed\", example: 30 }),\n snapshots_used: z\n .number()\n .int()\n .min(0)\n .openapi({ description: \"Number of snapshots created or restored\", example: 2 }),\n})\n .openapi(\"ActualChanges\");\n/**\n * Schema for issues prevented by SnapBack during the session\n */\nconst PreventedIssuesSchema = z\n .object({\n rollbacks_avoided: z\n .number()\n .int()\n .min(0)\n .openapi({ description: \"Rollbacks avoided due to snapshots\", example: 1 }),\n pattern_violations_caught: z\n .number()\n .int()\n .min(0)\n .openapi({ description: \"Pattern violations caught before commit\", example: 3 }),\n skipped_tests_flagged: z\n .number()\n .int()\n .min(0)\n .openapi({ description: \"Skipped tests flagged for attention\", example: 2 }),\n})\n .openapi(\"PreventedIssues\");\n/**\n * Schema for user tier\n */\nconst TierSchema = z.enum([\"free\", \"pro\", \"team\", \"enterprise\"]).openapi({ description: \"User's subscription tier\" });\n/**\n * Accountability Effect Event Schema\n *\n * Tracks the perception vs reality of SnapBack's value in a session.\n * Follows BaseEventSchema pattern from core.ts for consistency.\n */\nexport const AccountabilityEffectSchema = BaseEventSchema.extend({\n event: z.literal(\"session:feedback_submitted\"),\n properties: z.object({\n // Session identification\n session_id: z.string().openapi({ description: \"Unique session identifier\", example: \"sess_12345\" }),\n session_duration_ms: z\n .number()\n .int()\n .min(0)\n .openapi({ description: \"Session duration in milliseconds\", example: 3600000 }),\n // User perception\n perceived_help: PerceivedHelpSchema,\n // Reality metrics (counts only, no PII)\n actual_changes: ActualChangesSchema,\n prevented_issues: PreventedIssuesSchema,\n // Tier for consent checking\n tier: TierSchema,\n }),\n}).openapi(\"AccountabilityEffectEvent\");\n// ============================================================================\n// Validation Helpers\n// ============================================================================\n/**\n * Validate an accountability effect event\n */\nexport function validateAccountabilityEvent(event) {\n const result = AccountabilityEffectSchema.safeParse(event);\n return result.success;\n}\n/**\n * Get validation error for an accountability event\n */\nexport function getAccountabilityEventValidationError(event) {\n const result = AccountabilityEffectSchema.safeParse(event);\n if (result.success) {\n return null;\n }\n return result.error.message;\n}\n// ============================================================================\n// Event Constants\n// ============================================================================\n/**\n * Accountability event name constants\n * Uses PostHog category:object_action naming convention\n */\nexport const ACCOUNTABILITY_EVENTS = {\n SESSION_FEEDBACK_SUBMITTED: \"session:feedback_submitted\",\n};\n","/**\n * Claims Ledger Base Schema\n *\n * Core types and schemas for the claims ledger system.\n * All claim families extend BaseClaim with family-specific fields.\n */\nimport { z } from \"zod\";\n// =============================================================================\n// Claim Subject Kinds\n// =============================================================================\n/**\n * Valid subject kinds for claims.\n * A claim is always about something - a PR, a spec, a session, etc.\n */\nexport const ClaimSubjectKind = z.enum([\n \"pr\",\n \"spec\",\n \"session\",\n \"commit\",\n \"file\",\n \"phase\",\n \"workspace\",\n \"claim\", // For correction claims referencing other claims\n]);\n// =============================================================================\n// Claimant Identification\n// =============================================================================\n/**\n * URN format for claimants.\n * Pattern: urn:claimant:<identifier>\n *\n * Examples:\n * - urn:claimant:subagent-stop-hook\n * - urn:claimant:drift-detector\n * - urn:claimant:spec-writer\n * - urn:claimant:intelligence.risk-scorer\n * - urn:claimant:intelligence.fragility-detector\n */\nexport const ClaimantUrn = z.string().regex(/^urn:claimant:[a-z0-9.-]+$/);\n// =============================================================================\n// Outcome Resolution Strategies\n// =============================================================================\n/**\n * Three permitted outcome resolution strategies.\n *\n * - immediate: Outcome known at claim time (e.g., R-gate execution)\n * - deferred-manual: Outcome written later by specific process (e.g., PR merge)\n * - deferred-observational: Outcome emerges from system observation (e.g., rollback counting)\n */\nexport const OutcomeResolutionStrategy = z.enum([\"immediate\", \"deferred-manual\", \"deferred-observational\"]);\n// =============================================================================\n// Base Claim Schema\n// =============================================================================\n/**\n * Evidence gate - a single verification checkpoint.\n */\nexport const EvidenceGate = z.object({\n name: z.string(),\n passed: z.boolean(),\n output: z.string().optional(),\n});\n/**\n * Base claim schema.\n * All claim families extend this with family-specific fields.\n */\nexport const BaseClaim = z.object({\n // Identity\n claimId: z.string().uuid(),\n claimedAt: z.number().int().positive(),\n // Attribution\n claimant: ClaimantUrn,\n claimType: z.string(),\n claimFamily: z.enum([\"completion\", \"verdict\", \"attribution\", \"prediction\"]),\n // Subject (what the claim is about)\n subject: z.object({\n kind: ClaimSubjectKind,\n ref: z.string().min(1),\n }),\n // Confidence (null for mechanical claims, [0,1] for predictive/attribution)\n confidence: z.number().min(0).max(1).nullable(),\n // Evidence supporting the claim\n evidence: z.object({\n gates: z.array(EvidenceGate).default([]),\n referenced: z.array(z.string()).default([]),\n }),\n});\n// =============================================================================\n// Outcome Schema\n// =============================================================================\n/**\n * Outcome types for claim resolution.\n *\n * - verified: Claim was correct\n * - refuted: Claim was incorrect\n * - ambiguous: Outcome cannot be determined\n * - expired: TTL passed without resolution\n */\nexport const OutcomeType = z.enum([\"verified\", \"refuted\", \"ambiguous\", \"expired\"]);\n/**\n * Outcome record - the resolution of a claim.\n */\nexport const Outcome = z.object({\n // Identity\n outcomeId: z.string().uuid(),\n claimId: z.string().uuid(),\n observedAt: z.number().int().positive(),\n // Outcome classification\n outcomeType: OutcomeType,\n // Evidence for the outcome\n evidence: z.record(z.unknown()),\n // For predictive claims: comparison between predicted and actual\n delta: z\n .object({\n predicted: z.unknown(),\n actual: z.unknown(),\n })\n .optional(),\n});\n// =============================================================================\n// Claim with Outcome (resolved claim view)\n// =============================================================================\n/**\n * A claim with its outcome attached.\n * Used for queries that return resolved claims.\n */\nexport const ResolvedClaim = BaseClaim.extend({\n outcome: Outcome.optional(),\n});\n// =============================================================================\n// Validation Helpers\n// =============================================================================\n/**\n * Validate a claim against the base schema.\n */\nexport function validateBaseClaim(claim) {\n return BaseClaim.safeParse(claim).success;\n}\n/**\n * Validate an outcome.\n */\nexport function validateOutcome(outcome) {\n return Outcome.safeParse(outcome).success;\n}\n/**\n * Get validation errors for a claim.\n */\nexport function getClaimValidationErrors(claim) {\n const result = BaseClaim.safeParse(claim);\n if (result.success) {\n return null;\n }\n return result.error.message;\n}\n","/**\n * Attribution Claim Family\n *\n * Claims about causation: \"I assert this change was caused by tool X.\"\n *\n * Examples:\n * - Tool-identity claiming a change was AI-authored\n * - Intelligence system attributing a bug to a specific tool\n * - Drift Detector attributing drift to a particular pattern\n */\nimport { z } from \"zod\";\nimport { BaseClaim } from \"../base.js\";\n// =============================================================================\n// Attribution Source\n// =============================================================================\n/**\n * Attribution source kinds.\n */\nexport const AttributionSource = z.enum([\"ai-tool\", \"human\", \"automation\", \"import\", \"unknown\"]);\n// =============================================================================\n// Attribution Claim Schema\n// =============================================================================\n/**\n * Attribution claim - asserts what caused a change.\n *\n * Confidence: REQUIRED [0,1] (matches ADR-007 V2 attribution schema)\n * Resolution: deferred-observational (evaluated by observing outcomes of attributed changes)\n */\nexport const AttributionClaim = BaseClaim.extend({\n claimFamily: z.literal(\"attribution\"),\n // Attribution requires confidence per spec\n confidence: z.number().min(0).max(1),\n // Attribution-specific payload\n claim: z.object({\n source: AttributionSource,\n toolUrn: z.string().optional(), // e.g., \"urn:tool:cursor\"\n confidenceRationale: z.string().optional(), // Why this confidence level\n indicators: z.array(z.string()).default([]), // Evidence indicators detected\n }),\n});\n// =============================================================================\n// Type Guards\n// =============================================================================\n/**\n * Check if a claim is an attribution claim.\n */\nexport function isAttributionClaim(claim) {\n return AttributionClaim.safeParse(claim).success;\n}\n/**\n * Validate and parse an attribution claim.\n */\nexport function parseAttributionClaim(claim) {\n const result = AttributionClaim.safeParse(claim);\n return result.success ? result.data : null;\n}\n","/**\n * Completion Claim Family\n *\n * Claims about task completion: \"I finished the thing I was asked to do.\"\n *\n * Examples:\n * - SubagentStop hook claiming a spec phase is complete\n * - CI claiming a deployment is complete\n * - User claiming manual verification is complete\n */\nimport { z } from \"zod\";\nimport { BaseClaim } from \"../base.js\";\n// =============================================================================\n// Completion Status\n// =============================================================================\n/**\n * Completion status values.\n */\nexport const CompletionStatus = z.enum([\"complete\", \"partial\", \"failed\"]);\n// =============================================================================\n// Completion Claim Schema\n// =============================================================================\n/**\n * Completion claim - asserts a task or phase is done.\n *\n * Confidence: null (mechanical claim - outcome determined by gate results)\n * Resolution: immediate (outcome known at claim time)\n */\nexport const CompletionClaim = BaseClaim.extend({\n claimFamily: z.literal(\"completion\"),\n // Completion-specific payload\n claim: z.object({\n status: CompletionStatus,\n completedGates: z.number().int().min(0),\n totalGates: z.number().int().positive(),\n phase: z.string().optional(),\n }),\n});\n// =============================================================================\n// Type Guards\n// =============================================================================\n/**\n * Check if a claim is a completion claim.\n */\nexport function isCompletionClaim(claim) {\n return CompletionClaim.safeParse(claim).success;\n}\n/**\n * Validate and parse a completion claim.\n */\nexport function parseCompletionClaim(claim) {\n const result = CompletionClaim.safeParse(claim);\n return result.success ? result.data : null;\n}\n","/**\n * Prediction Claim Family\n *\n * Claims about future outcomes: \"I predict outcome Y about subject Z.\"\n *\n * Examples:\n * - Intelligence predicting a file will have rollbacks in next 30 days\n * - Risk scorer predicting a commit will introduce bugs\n * - Fragility detector predicting a component will fail\n */\nimport { z } from \"zod\";\nimport { BaseClaim } from \"../base.js\";\n// =============================================================================\n// Prediction Outcome Types\n// =============================================================================\n/**\n * Types of outcomes that can be predicted.\n */\nexport const PredictedOutcomeType = z.enum([\n \"rollback\",\n \"bug-introduced\",\n \"performance-degradation\",\n \"security-issue\",\n \"drift\",\n \"failure\",\n \"success\",\n]);\n// =============================================================================\n// Prediction Time Window\n// =============================================================================\n/**\n * Time window for the prediction.\n */\nexport const PredictionWindow = z.object({\n days: z.number().int().positive(),\n since: z.number().int().positive().optional(), // Unix timestamp\n});\n// =============================================================================\n// Prediction Claim Schema\n// =============================================================================\n/**\n * Prediction claim - asserts a future outcome.\n *\n * Confidence: REQUIRED [0,1] (prediction is probabilistic)\n * Resolution: deferred-observational (evaluated by observing actual outcomes)\n */\nexport const PredictionClaim = BaseClaim.extend({\n claimFamily: z.literal(\"prediction\"),\n // Predictions require confidence per spec\n confidence: z.number().min(0).max(1),\n // Prediction-specific payload\n claim: z.object({\n outcomeType: PredictedOutcomeType,\n window: PredictionWindow,\n rationale: z.string().optional(),\n modelVersion: z.string().optional(), // Version of prediction model\n }),\n});\n// =============================================================================\n// Type Guards\n// =============================================================================\n/**\n * Check if a claim is a prediction claim.\n */\nexport function isPredictionClaim(claim) {\n return PredictionClaim.safeParse(claim).success;\n}\n/**\n * Validate and parse a prediction claim.\n */\nexport function parsePredictionClaim(claim) {\n const result = PredictionClaim.safeParse(claim);\n return result.success ? result.data : null;\n}\n","/**\n * Verdict Claim Family\n *\n * Claims about judgment: \"I judged this artifact to be in state X.\"\n *\n * Examples:\n * - Drift Detector claiming code drift is detected\n * - Risk scorer claiming a file is high-risk\n * - Code reviewer claiming a PR needs changes\n */\nimport { z } from \"zod\";\nimport { BaseClaim } from \"../base.js\";\n// =============================================================================\n// Verdict Status\n// =============================================================================\n/**\n * Verdict status values.\n */\nexport const VerdictStatus = z.enum([\"pass\", \"fail\", \"needs-review\", \"drift-detected\", \"clean\", \"suspect\"]);\n// =============================================================================\n// Verdict Claim Schema\n// =============================================================================\n/**\n * Verdict claim - asserts a judgment about an artifact.\n *\n * Confidence: optional [0,1] (used for calibration analysis)\n * Resolution: deferred-manual (evaluated when artifact state changes, e.g., PR merged)\n */\nexport const VerdictClaim = BaseClaim.extend({\n claimFamily: z.literal(\"verdict\"),\n // Verdict-specific payload\n claim: z.object({\n status: VerdictStatus,\n details: z.string().optional(),\n criteria: z.array(z.string()).default([]),\n severity: z.enum([\"info\", \"low\", \"medium\", \"high\", \"critical\"]).optional(),\n }),\n});\n// =============================================================================\n// Type Guards\n// =============================================================================\n/**\n * Check if a claim is a verdict claim.\n */\nexport function isVerdictClaim(claim) {\n return VerdictClaim.safeParse(claim).success;\n}\n/**\n * Validate and parse a verdict claim.\n */\nexport function parseVerdictClaim(claim) {\n const result = VerdictClaim.safeParse(claim);\n return result.success ? result.data : null;\n}\n","/**\n * Claims Ledger Registry\n *\n * Known claimants and claim-type to resolution strategy mapping.\n * All claimants must be registered here before writing claims.\n */\nimport { z } from \"zod\";\n// =============================================================================\n// Registered Claimants\n// =============================================================================\n/**\n * Finite, named claimants allowed to write to the ledger.\n *\n * To add a new claimant:\n * 1. Add URN to this array\n * 2. Update CLAIM_TYPE_RESOLUTION with their claim types\n * 3. Deploy claimant code\n *\n * Format: urn:claimant:<identifier>\n */\nexport const REGISTERED_CLAIMANTS = [\n \"urn:claimant:subagent-stop-hook\",\n \"urn:claimant:drift-detector\",\n \"urn:claimant:tool-identity\",\n \"urn:claimant:spec-writer\",\n \"urn:claimant:intelligence.risk-scorer\",\n \"urn:claimant:intelligence.fragility-detector\",\n \"urn:claimant:intelligence.pattern-detector\",\n];\n/**\n * Zod schema for registered claimant validation.\n */\nexport const RegisteredClaimant = z.enum(REGISTERED_CLAIMANTS);\n/**\n * Check if a claimant URN is registered.\n */\nexport function isRegisteredClaimant(claimant) {\n return REGISTERED_CLAIMANTS.includes(claimant);\n}\n// =============================================================================\n// Claim Type Registry\n// =============================================================================\n/**\n * Claim types and their outcome resolution strategies.\n *\n * Rule: No claim type may be added without a defined resolution strategy.\n * If there is no mechanism to determine whether the claim was right or wrong,\n * the signal belongs in logs, not the ledger.\n */\nexport const CLAIM_TYPE_RESOLUTION = {\n // Completion claims (immediate resolution)\n \"completion.spec-phase\": \"immediate\",\n \"completion.session\": \"immediate\",\n \"completion.deployment\": \"immediate\",\n // Verdict claims (deferred-manual resolution)\n \"verdict.drift-detected\": \"deferred-manual\",\n \"verdict.risk-assessment\": \"deferred-manual\",\n \"verdict.code-review\": \"deferred-manual\",\n // Attribution claims (deferred-observational resolution)\n \"attribution.tool-change\": \"deferred-observational\",\n \"attribution.ai-authored\": \"deferred-observational\",\n \"attribution.automation\": \"deferred-observational\",\n // Prediction claims (deferred-observational resolution)\n \"prediction.fragility\": \"deferred-observational\",\n \"prediction.rollback\": \"deferred-observational\",\n \"prediction.bug-risk\": \"deferred-observational\",\n \"prediction.performance\": \"deferred-observational\",\n};\n/**\n * Get the resolution strategy for a claim type.\n */\nexport function getResolutionStrategy(claimType) {\n return CLAIM_TYPE_RESOLUTION[claimType] ?? null;\n}\n/**\n * Check if a claim type has a registered resolution strategy.\n */\nexport function isValidClaimType(claimType) {\n return claimType in CLAIM_TYPE_RESOLUTION;\n}\n/**\n * Get all claim types for a given resolution strategy.\n */\nexport function getClaimTypesByStrategy(strategy) {\n return Object.entries(CLAIM_TYPE_RESOLUTION)\n .filter(([, s]) => s === strategy)\n .map(([type]) => type);\n}\n// =============================================================================\n// Validation\n// =============================================================================\n/**\n * Validate a claimant + claim type combination.\n * Returns null if valid, error message if invalid.\n */\nexport function validateClaimRegistration(claimant, claimType) {\n if (!isRegisteredClaimant(claimant)) {\n return `Unregistered claimant: ${claimant}. Add to REGISTERED_CLAIMANTS first.`;\n }\n if (!isValidClaimType(claimType)) {\n return `Unregistered claim type: ${claimType}. Add to CLAIM_TYPE_RESOLUTION with resolution strategy.`;\n }\n return null;\n}\n","/**\n * Claims Ledger Events\n *\n * Spine event domain for claim.recorded, claim.resolved, claim.expired.\n * These events flow through the DaemonEventBus per ADR-007 V2.\n */\nimport { extendZodWithOpenApi } from \"@asteasolutions/zod-to-openapi\";\nimport { z } from \"zod\";\nimport { BaseClaim, Outcome } from \"../claims/index.js\";\nextendZodWithOpenApi(z);\n// =============================================================================\n// Event Version\n// =============================================================================\nexport const CLAIMS_EVENT_VERSION = \"1.0.0\";\n// =============================================================================\n// Claim Made Event\n// =============================================================================\n/**\n * claim.recorded - fired when a claim is written to the ledger.\n */\nexport const ClaimMadeEventSchema = z.object({\n event_version: z.string().default(CLAIMS_EVENT_VERSION).openapi({ example: \"1.0.0\" }),\n timestamp: z\n .number()\n .default(() => Date.now())\n .openapi({ example: 1620000000000 }),\n event: z.literal(\"claim.recorded\"),\n payload: z.object({\n claim: BaseClaim.openapi({ description: \"The claim that was recorded\" }),\n workspaceHash: z.string().openapi({\n description: \"SHA-256 hash of workspace path\",\n example: \"a1b2c3d4...\",\n }),\n }),\n});\n// =============================================================================\n// Claim Resolved Event\n// =============================================================================\n/**\n * claim.resolved - fired when an outcome is written for a claim.\n */\nexport const ClaimResolvedEventSchema = z.object({\n event_version: z.string().default(CLAIMS_EVENT_VERSION).openapi({ example: \"1.0.0\" }),\n timestamp: z\n .number()\n .default(() => Date.now())\n .openapi({ example: 1620000000000 }),\n event: z.literal(\"claim.resolved\"),\n payload: z.object({\n claimId: z.string().uuid().openapi({ description: \"ID of the resolved claim\" }),\n outcome: Outcome.openapi({ description: \"The outcome record\" }),\n workspaceHash: z.string().openapi({\n description: \"SHA-256 hash of workspace path\",\n example: \"a1b2c3d4...\",\n }),\n }),\n});\n// =============================================================================\n// Claim Expired Event\n// =============================================================================\n/**\n * claim.expired - fired when a deferred claim passes its TTL.\n */\nexport const ClaimExpiredEventSchema = z.object({\n event_version: z.string().default(CLAIMS_EVENT_VERSION).openapi({ example: \"1.0.0\" }),\n timestamp: z\n .number()\n .default(() => Date.now())\n .openapi({ example: 1620000000000 }),\n event: z.literal(\"claim.expired\"),\n payload: z.object({\n claimId: z.string().uuid().openapi({ description: \"ID of the expired claim\" }),\n outcomeId: z.string().uuid().openapi({ description: \"ID of the expiration outcome\" }),\n expiredAt: z.number().openapi({ description: \"Timestamp when expiry was recorded\" }),\n workspaceHash: z.string().openapi({\n description: \"SHA-256 hash of workspace path\",\n example: \"a1b2c3d4...\",\n }),\n }),\n});\n// =============================================================================\n// Validation Helpers\n// =============================================================================\nexport function isClaimMadeEvent(event) {\n return ClaimMadeEventSchema.safeParse(event).success;\n}\nexport function isClaimResolvedEvent(event) {\n return ClaimResolvedEventSchema.safeParse(event).success;\n}\nexport function isClaimExpiredEvent(event) {\n return ClaimExpiredEventSchema.safeParse(event).success;\n}\n","/**\n * Spine Event Attribution - ADR-007 §3.2\n *\n * Discriminated union for attributing spine events to tools, users, systems,\n * or unknown sources. This enables privacy-preserving attribution tracking\n * while maintaining tier-appropriate data collection.\n *\n * @module @vreko/contracts/events/spine/attribution\n * @see ADR-007 Runtime Tier Boundaries and Export Spine Contract\n */\nimport { z } from \"zod\";\n// =============================================================================\n// Tool URN Pattern\n// =============================================================================\n/**\n * URN format for AI tool identification\n * Pattern: urn:ai-tool:<vendor>:<version>\n * Examples:\n * - urn:ai-tool:claude-code:1.0\n * - urn:ai-tool:github-copilot:1.0\n * - urn:ai-tool:cursor:0.40\n */\nconst toolUrnPattern = /^urn:ai-tool:[a-z0-9-]+:\\d+\\.\\d+$/;\n/**\n * Zod schema for AI tool URN validation\n */\nexport const toolUrnSchema = z\n .string()\n .regex(toolUrnPattern, \"Invalid tool URN format. Expected: urn:ai-tool:<vendor>:<version>\")\n .max(64, \"Tool URN must be ≤64 characters\");\n// =============================================================================\n// Attribution Sources\n// =============================================================================\n/**\n * Sources for AI tool attribution (§3.2)\n */\nexport const attributionSourceSchema = z.enum([\n \"fingerprint\", // Tool signature detected in content\n \"session-correlation\", // Correlated with known AI session\n \"temporal\", // Timing patterns suggest AI involvement\n \"mcp-direct\", // Direct MCP protocol attribution\n]);\n// =============================================================================\n// Attribution Discriminated Union (§3.2)\n// =============================================================================\n/**\n * AI tool attribution\n */\nexport const toolAttributionSchema = z.object({\n kind: z.literal(\"tool\"),\n /** Tool URN (e.g., urn:ai-tool:claude-code:1.0) */\n toolUrn: toolUrnSchema,\n /** Confidence score 0.0-1.0 */\n confidence: z.number().min(0).max(1),\n /** Attribution source method */\n source: attributionSourceSchema,\n});\n/**\n * User attribution (user authored without AI mediation)\n */\nexport const userAttributionSchema = z.object({\n kind: z.literal(\"user\"),\n /** User authored the change without AI mediation */\n description: z.literal(\"user authored the change without AI mediation\").optional(),\n});\n/**\n * System attribution (automated/scheduled operations)\n */\nexport const systemAttributionSchema = z.object({\n kind: z.literal(\"system\"),\n /** System operation source */\n source: z.enum([\"scheduled\", \"startup\", \"shutdown\", \"gc\"]),\n});\n/**\n * Unknown attribution (insufficient signal)\n */\nexport const unknownAttributionSchema = z.object({\n kind: z.literal(\"unknown\"),\n /** Signal was insufficient to attribute; emitted rather than dropped */\n description: z.literal(\"signal was insufficient to attribute\").optional(),\n});\n// =============================================================================\n// Combined Attribution Schema\n// =============================================================================\n/**\n * Attribution discriminated union for all spine events (§3.2).\n *\n * This union enables type-safe handling of different attribution kinds\n * using TypeScript's discriminated union narrowing.\n *\n * @example\n * ```typescript\n * function handleAttribution(attribution: Attribution) {\n * switch (attribution.kind) {\n * case \"tool\":\n * return processToolAttribution(attribution.toolUrn, attribution.confidence);\n * case \"user\":\n * return processUserAttribution();\n * case \"system\":\n * return processSystemAttribution(attribution.source);\n * case \"unknown\":\n * return processUnknownAttribution();\n * }\n * }\n * ```\n */\nexport const attributionSchema = z.discriminatedUnion(\"kind\", [\n toolAttributionSchema,\n userAttributionSchema,\n systemAttributionSchema,\n unknownAttributionSchema,\n]);\n// =============================================================================\n// Attribution Factory Functions\n// =============================================================================\n/**\n * Creates tool attribution.\n *\n * @param toolUrn - Tool URN (e.g., \"urn:ai-tool:claude-code:1.0\")\n * @param confidence - Attribution confidence 0.0-1.0\n * @param source - Attribution source method\n * @returns Validated tool attribution\n */\nexport function createToolAttribution(toolUrn, confidence, source) {\n return toolAttributionSchema.parse({\n kind: \"tool\",\n toolUrn,\n confidence,\n source,\n });\n}\n/**\n * Creates user attribution.\n *\n * @returns Validated user attribution\n */\nexport function createUserAttribution() {\n return userAttributionSchema.parse({\n kind: \"user\",\n });\n}\n/**\n * Creates system attribution.\n *\n * @param source - System operation source\n * @returns Validated system attribution\n */\nexport function createSystemAttribution(source) {\n return systemAttributionSchema.parse({\n kind: \"system\",\n source,\n });\n}\n/**\n * Creates unknown attribution.\n *\n * @returns Validated unknown attribution\n */\nexport function createUnknownAttribution() {\n return unknownAttributionSchema.parse({\n kind: \"unknown\",\n });\n}\n// =============================================================================\n// Attribution Confidence Levels (§3.2)\n// =============================================================================\n/**\n * Standard confidence thresholds for attribution\n */\nexport const AttributionConfidence = {\n /** Low confidence - may need manual review */\n LOW: 0.5,\n /** Medium confidence - likely correct */\n MEDIUM: 0.7,\n /** High confidence - reliable for automated decisions */\n HIGH: 0.85,\n /** Very high confidence - suitable for critical decisions */\n VERY_HIGH: 0.95,\n};\n/**\n * Checks if confidence meets threshold.\n *\n * @param confidence - Attribution confidence value\n * @param threshold - Threshold to check against\n * @returns True if confidence meets or exceeds threshold\n */\nexport function meetsConfidenceThreshold(confidence, threshold) {\n return confidence >= threshold;\n}\n// =============================================================================\n// Attribution Validation\n// =============================================================================\n/**\n * Validates any attribution type against the discriminated union schema.\n *\n * @param attribution - Attribution to validate\n * @returns Validated attribution or throws ZodError\n */\nexport function validateAttribution(attribution) {\n return attributionSchema.parse(attribution);\n}\n/**\n * Safe attribution validation that returns result or error.\n *\n * @param attribution - Attribution to validate\n * @returns Object with success flag and result or error\n */\nexport function safeValidateAttribution(attribution) {\n const result = attributionSchema.safeParse(attribution);\n if (result.success) {\n return { success: true, data: result.data };\n }\n return { success: false, error: result.error };\n}\n","/**\n * Spine Event Envelope - ADR-007 §3.1\n *\n * Required envelope fields for every spine event transmitted from Tier 2 → Tier 3.\n * All spine events must include this envelope to ensure privacy, versioning,\n * and attribution integrity.\n *\n * @module @vreko/contracts/events/spine/envelope\n * @see ADR-007 Runtime Tier Boundaries and Export Spine Contract\n */\nimport { z } from \"zod\";\nimport { attributionSchema } from \"./attribution.js\";\n// =============================================================================\n// UUIDv7 Validation Helper\n// =============================================================================\n/**\n * Validates UUIDv7 format (used for eventId ordering + dedup)\n * UUIDv7 format: 8-4-4-4-12 with specific bit patterns for timestamp\n */\nconst uuidv7Pattern = /^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n/**\n * Zod schema for UUIDv7 validation\n */\nexport const uuidv7Schema = z\n .string()\n .regex(uuidv7Pattern, \"Invalid UUIDv7 format. Expected: xxxxxxxx-xxxx-7xxx-8xxx-xxxxxxxxxxxx\");\n// =============================================================================\n// SHA-256 Hash Validation\n// =============================================================================\n/**\n * SHA-256 produces 64 hex characters\n */\nconst sha256Pattern = /^[0-9a-f]{64}$/i;\n/**\n * Zod schema for SHA-256 hash validation\n * Used for workspaceHash, filePathHash, userHash, orgHash\n */\nexport const sha256Schema = z.string().regex(sha256Pattern, \"Invalid SHA-256 hash format. Expected: 64 hex characters\");\n// =============================================================================\n// Event Type Naming Convention\n// =============================================================================\n/**\n * Domain.Entity.Action pattern validation\n * Examples: snapshot.blob.created, session.lifecycle.ended\n */\nconst eventTypePattern = /^[a-z][a-z0-9-]*\\.[a-z][a-z0-9-]*\\.[a-z][a-z0-9-]*$/;\n/**\n * Zod schema for event type validation (§3.3)\n */\nexport const eventTypeSchema = z\n .string()\n .regex(eventTypePattern, \"Invalid event type format. Expected: domain.entity.action (e.g., snapshot.blob.created)\")\n .max(64, \"Event type must be ≤64 characters\");\n// =============================================================================\n// Event Priority Levels\n// =============================================================================\n/**\n * Event priority for batching decisions (§3.1, S2)\n */\nexport const eventPrioritySchema = z.enum([\"immediate\", \"normal\", \"batch\"]);\n// =============================================================================\n// Spine Envelope Schema (§3.1)\n// =============================================================================\n/**\n * Required envelope schema for all spine events.\n *\n * Invariants:\n * - M5: Every spine event carries this envelope\n * - M7: workspaceHash replaces raw workspace path\n * - M9: schemaVersion increments on breaking changes\n */\nexport const spineEnvelopeSchema = z.object({\n /** UUIDv7 for ordering + deduplication */\n eventId: uuidv7Schema,\n /** Integer schema version; increments on breaking change (M9) */\n schemaVersion: z.number().int().positive(),\n /** Domain.Entity.Action naming convention (§3.3) */\n eventType: eventTypeSchema,\n /** Unix timestamp in milliseconds (daemon-local clock) */\n occurredAt: z.number().int().positive(),\n /** SHA-256 of workspace path (M7) */\n workspaceHash: sha256Schema,\n /** Attribution discriminated union (§3.2) */\n attribution: attributionSchema,\n});\n// =============================================================================\n// Optional Spine Fields (§3.4)\n// =============================================================================\n/**\n * Optional fields schema for spine events.\n * These extend the envelope based on tier and event type.\n */\nexport const spineOptionalFieldsSchema = z.object({\n /** Session identifier when operation is session-bound (S1) */\n sessionId: z.string().uuid().optional(),\n /** SHA-256 of userId; present only for Pro+ (M7) */\n userHash: sha256Schema.optional(),\n /** SHA-256 of orgId; present only for Team+ (M7) */\n orgHash: sha256Schema.optional(),\n /** SHA-256 of file path; never raw path (M7, N3) */\n filePathHash: sha256Schema.optional(),\n});\n/**\n * Schema builder for complete spine events with typed data.\n *\n * @param dataSchema - Zod schema for the event-specific data\n * @returns Complete spine event schema\n *\n * @example\n * ```typescript\n * const snapshotCreatedSchema = createSpineEventSchema(z.object({\n * snapshotHash: z.string(),\n * sizeBytes: z.number().int(),\n * }));\n * ```\n */\nexport function createSpineEventSchema(dataSchema) {\n return spineEnvelopeSchema.merge(spineOptionalFieldsSchema).merge(z.object({\n data: dataSchema,\n }));\n}\n// =============================================================================\n// Envelope Factory\n// =============================================================================\n/**\n * Creates a spine envelope with the required fields.\n *\n * @param params - Envelope parameters\n * @returns Validated spine envelope\n */\nexport function createSpineEnvelope(params) {\n return spineEnvelopeSchema.parse({\n occurredAt: Date.now(),\n ...params,\n });\n}\n// =============================================================================\n// Validation Helpers\n// =============================================================================\n/**\n * Validates a complete spine event against its schema.\n *\n * @param schema - Zod schema for the specific spine event type\n * @param event - Event to validate\n * @returns Validated event or throws ZodError\n */\nexport function validateSpineEvent(schema, event) {\n return schema.parse(event);\n}\n/**\n * Safe validation that returns result or error instead of throwing.\n *\n * @param schema - Zod schema for the specific spine event type\n * @param event - Event to validate\n * @returns Object with success flag and result or error\n */\nexport function safeValidateSpineEvent(schema, event) {\n const result = schema.safeParse(event);\n if (result.success) {\n return { success: true, data: result.data };\n }\n return { success: false, error: result.error };\n}\n","/**\n * Snapshot Domain Spine Events - ADR-007 §3\n *\n * Spine events for snapshot lifecycle operations.\n * Event types use three-part naming: snapshot.<entity>.<action>\n *\n * @module @vreko/contracts/events/spine/domains/snapshot\n * @see ADR-007 Runtime Tier Boundaries and Export Spine Contract\n */\nimport { z } from \"zod\";\nimport { createSpineEventSchema } from \"../envelope.js\";\n// =============================================================================\n// Shared Snapshot Schemas\n// =============================================================================\n/**\n * Trigger source for snapshot operations\n */\nexport const snapshotTriggerSchema = z.enum([\n \"manual\", // User manually triggered\n \"auto-save\", // Automatic save on change\n \"pre-command\", // Before command execution\n \"session-end\", // End of session\n \"shutdown\", // System shutdown\n]);\n/**\n * Risk level for snapshots\n */\nexport const riskLevelSchema = z.enum([\"low\", \"medium\", \"high\", \"critical\"]);\n/**\n * Snapshot risk information\n */\nexport const snapshotRiskSchema = z.object({\n score: z.number().min(0),\n level: riskLevelSchema,\n});\n// =============================================================================\n// snapshot.blob.created\n// =============================================================================\n/**\n * Data payload for snapshot.blob.created event\n */\nexport const snapshotBlobCreatedDataSchema = z.object({\n /** Unique snapshot identifier */\n snapshotId: z.string().uuid(),\n /** SHA-256 hash of file content (never raw content) */\n contentHash: z.string().regex(/^[0-9a-f]{64}$/i),\n /** Size of snapshot in bytes */\n sizeBytes: z.number().int().nonnegative(),\n /** What triggered the snapshot creation */\n trigger: snapshotTriggerSchema,\n /** Risk assessment at time of snapshot */\n risk: snapshotRiskSchema.optional(),\n /** AI tool attribution confidence if detected */\n toolConfidence: z.number().min(0).max(1).optional(),\n});\n/**\n * Spine event schema for snapshot.blob.created\n *\n * Emitted when a new snapshot blob is created in the local store.\n * File paths are never included; only content hashes.\n */\nexport const snapshotBlobCreatedSchema = createSpineEventSchema(snapshotBlobCreatedDataSchema);\n/**\n * Event type constant for type-safe references\n */\nexport const SNAPSHOT_BLOB_CREATED = \"snapshot.blob.created\";\n// =============================================================================\n// snapshot.blob.restored\n// =============================================================================\n/**\n * Data payload for snapshot.blob.restored event\n */\nexport const snapshotBlobRestoredDataSchema = z.object({\n /** Snapshot identifier that was restored */\n snapshotId: z.string().uuid(),\n /** Time when snapshot was originally created */\n originalCreatedAt: z.number().int().positive(),\n /** Trigger for the restore operation */\n trigger: z.enum([\"manual\", \"rollback\", \"undo\", \"system\"]),\n /** Time taken to restore in milliseconds */\n durationMs: z.number().int().nonnegative(),\n});\n/**\n * Spine event schema for snapshot.blob.restored\n *\n * Emitted when a snapshot blob is restored to active workspace.\n */\nexport const snapshotBlobRestoredSchema = createSpineEventSchema(snapshotBlobRestoredDataSchema);\n/**\n * Event type constant\n */\nexport const SNAPSHOT_BLOB_RESTORED = \"snapshot.blob.restored\";\n// =============================================================================\n// snapshot.blob.deleted\n// =============================================================================\n/**\n * Data payload for snapshot.blob.deleted event\n */\nexport const snapshotBlobDeletedDataSchema = z.object({\n /** Array of snapshot identifiers that were deleted */\n snapshotIds: z.array(z.string().uuid()),\n /** Reason for deletion */\n reason: z.enum([\"retention-policy\", \"user-request\", \"corrupted\", \"gc\"]),\n /** Number of bytes freed */\n bytesFreed: z.number().int().nonnegative(),\n});\n/**\n * Spine event schema for snapshot.blob.deleted\n *\n * Emitted when snapshot blobs are permanently deleted.\n */\nexport const snapshotBlobDeletedSchema = createSpineEventSchema(snapshotBlobDeletedDataSchema);\n/**\n * Event type constant\n */\nexport const SNAPSHOT_BLOB_DELETED = \"snapshot.blob.deleted\";\n// =============================================================================\n// snapshot.metadata.updated\n// =============================================================================\n/**\n * Data payload for snapshot.metadata.updated event\n */\nexport const snapshotMetadataUpdatedDataSchema = z.object({\n /** Snapshot identifier */\n snapshotId: z.string().uuid(),\n /** Fields that were updated */\n updatedFields: z.array(z.enum([\"tags\", \"risk\", \"annotation\", \"protection\"])),\n /** Previous risk level if risk was updated */\n previousRisk: riskLevelSchema.optional(),\n /** New risk level if risk was updated */\n newRisk: riskLevelSchema.optional(),\n});\n/**\n * Spine event schema for snapshot.metadata.updated\n *\n * Emitted when snapshot metadata (not content) is modified.\n */\nexport const snapshotMetadataUpdatedSchema = createSpineEventSchema(snapshotMetadataUpdatedDataSchema);\n/**\n * Event type constant\n */\nexport const SNAPSHOT_METADATA_UPDATED = \"snapshot.metadata.updated\";\n/**\n * All snapshot event type constants\n */\nexport const SNAPSHOT_EVENT_TYPES = [\n SNAPSHOT_BLOB_CREATED,\n SNAPSHOT_BLOB_RESTORED,\n SNAPSHOT_BLOB_DELETED,\n SNAPSHOT_METADATA_UPDATED,\n];\n/**\n * Map of event types to their schemas for validation\n */\nexport const SNAPSHOT_EVENT_SCHEMAS = {\n [SNAPSHOT_BLOB_CREATED]: snapshotBlobCreatedSchema,\n [SNAPSHOT_BLOB_RESTORED]: snapshotBlobRestoredSchema,\n [SNAPSHOT_BLOB_DELETED]: snapshotBlobDeletedSchema,\n [SNAPSHOT_METADATA_UPDATED]: snapshotMetadataUpdatedSchema,\n};\n","/**\n * Session Domain Spine Events - ADR-007 §3\n *\n * Spine events for session lifecycle and coherence tracking.\n * Event types use three-part naming: session.<entity>.<action>\n *\n * @module @vreko/contracts/events/spine/domains/session\n * @see ADR-007 Runtime Tier Boundaries and Export Spine Contract\n */\nimport { z } from \"zod\";\nimport { createSpineEventSchema } from \"../envelope.js\";\n// =============================================================================\n// Shared Session Schemas\n// =============================================================================\n/**\n * Session coherence assessment levels\n */\nexport const coherenceAssessmentSchema = z.enum([\n \"focused\", // Single task, clear intent\n \"moderate\", // Related tasks, some context switching\n \"scattered\", // Unrelated tasks, frequent switching\n \"chaotic\", // No clear focus, high fragmentation\n]);\n/**\n * Session outcome categories\n */\nexport const sessionOutcomeSchema = z.enum([\n \"completed\", // Task successfully completed\n \"interrupted\", // External interruption\n \"abandoned\", // User abandoned session\n \"timeout\", // Session timed out\n \"rolled-back\", // Changes were rolled back\n]);\n// =============================================================================\n// session.lifecycle.started\n// =============================================================================\n/**\n * Data payload for session.lifecycle.started event\n */\nexport const sessionLifecycleStartedDataSchema = z.object({\n /** Session identifier */\n sessionId: z.string().uuid(),\n /** Task description provided by user or inferred */\n task: z.string().min(1).max(500),\n /** Session start timestamp */\n startedAt: z.number().int().positive(),\n /** Initial coherence score */\n initialCoherence: z.number().min(0).max(1).optional(),\n /** Client that initiated the session */\n clientType: z.enum([\"vscode\", \"jetbrains\", \"cli\", \"mcp\", \"unknown\"]),\n});\n/**\n * Spine event schema for session.lifecycle.started\n *\n * Emitted when a new session begins.\n */\nexport const sessionLifecycleStartedSchema = createSpineEventSchema(sessionLifecycleStartedDataSchema);\n/**\n * Event type constant\n */\nexport const SESSION_LIFECYCLE_STARTED = \"session.lifecycle.started\";\n// =============================================================================\n// session.lifecycle.ended\n// =============================================================================\n/**\n * Data payload for session.lifecycle.ended event\n */\nexport const sessionLifecycleEndedDataSchema = z.object({\n /** Session identifier */\n sessionId: z.string().uuid(),\n /** Session end timestamp */\n endedAt: z.number().int().positive(),\n /** Duration in milliseconds */\n durationMs: z.number().int().nonnegative(),\n /** Session outcome */\n outcome: sessionOutcomeSchema,\n /** Final coherence score */\n finalCoherence: z.number().min(0).max(1),\n /** Number of snapshots created during session */\n snapshotCount: z.number().int().nonnegative(),\n /** Number of rollbacks performed */\n rollbackCount: z.number().int().nonnegative(),\n});\n/**\n * Spine event schema for session.lifecycle.ended\n *\n * Emitted when a session ends.\n */\nexport const sessionLifecycleEndedSchema = createSpineEventSchema(sessionLifecycleEndedDataSchema);\n/**\n * Event type constant\n */\nexport const SESSION_LIFECYCLE_ENDED = \"session.lifecycle.ended\";\n// =============================================================================\n// session.coherence.updated\n// =============================================================================\n/**\n * Data payload for session.coherence.updated event\n */\nexport const sessionCoherenceUpdatedDataSchema = z.object({\n /** Session identifier */\n sessionId: z.string().uuid(),\n /** Updated coherence score 0.0-1.0 */\n score: z.number().min(0).max(1),\n /** Assessment category */\n assessment: coherenceAssessmentSchema,\n /** Number of detected context clusters */\n clusterCount: z.number().int().nonnegative(),\n /** Time since session start in milliseconds */\n elapsedMs: z.number().int().nonnegative(),\n});\n/**\n * Spine event schema for session.coherence.updated\n *\n * Emitted when session coherence is recalculated.\n */\nexport const sessionCoherenceUpdatedSchema = createSpineEventSchema(sessionCoherenceUpdatedDataSchema);\n/**\n * Event type constant\n */\nexport const SESSION_COHERENCE_UPDATED = \"session.coherence.updated\";\n// =============================================================================\n// session.checkpoint.created\n// =============================================================================\n/**\n * Data payload for session.checkpoint.created event\n */\nexport const sessionCheckpointCreatedDataSchema = z.object({\n /** Session identifier */\n sessionId: z.string().uuid(),\n /** Checkpoint identifier */\n checkpointId: z.string().uuid(),\n /** Description of checkpoint state */\n description: z.string().min(1).max(500),\n /** Coherence score at checkpoint time */\n coherenceAtCheckpoint: z.number().min(0).max(1),\n /** Number of changes since session start */\n changeCount: z.number().int().nonnegative(),\n});\n/**\n * Spine event schema for session.checkpoint.created\n *\n * Emitted when a session checkpoint is created.\n */\nexport const sessionCheckpointCreatedSchema = createSpineEventSchema(sessionCheckpointCreatedDataSchema);\n/**\n * Event type constant\n */\nexport const SESSION_CHECKPOINT_CREATED = \"session.checkpoint.created\";\n/**\n * All session event type constants\n */\nexport const SESSION_EVENT_TYPES = [\n SESSION_LIFECYCLE_STARTED,\n SESSION_LIFECYCLE_ENDED,\n SESSION_COHERENCE_UPDATED,\n SESSION_CHECKPOINT_CREATED,\n];\n/**\n * Map of event types to their schemas for validation\n */\nexport const SESSION_EVENT_SCHEMAS = {\n [SESSION_LIFECYCLE_STARTED]: sessionLifecycleStartedSchema,\n [SESSION_LIFECYCLE_ENDED]: sessionLifecycleEndedSchema,\n [SESSION_COHERENCE_UPDATED]: sessionCoherenceUpdatedSchema,\n [SESSION_CHECKPOINT_CREATED]: sessionCheckpointCreatedSchema,\n};\n","/**\n * Risk Domain Spine Events - ADR-007 §3\n *\n * Spine events for risk detection and scoring.\n * Event types use three-part naming: risk.<entity>.<action>\n *\n * @module @vreko/contracts/events/spine/domains/risk\n * @see ADR-007 Runtime Tier Boundaries and Export Spine Contract\n */\nimport { z } from \"zod\";\nimport { createSpineEventSchema } from \"../envelope.js\";\n// =============================================================================\n// Shared Risk Schemas\n// =============================================================================\n/**\n * Risk level enumeration\n */\nexport const riskLevelSchema = z.enum([\"low\", \"medium\", \"high\", \"critical\"]);\n/**\n * Risk score with bounds\n */\nexport const riskScoreSchema = z.number().min(0);\n// =============================================================================\n// risk.signal.fatigue-detected\n// =============================================================================\n/**\n * Data payload for risk.signal.fatigue-detected event\n */\nexport const riskSignalFatigueDetectedDataSchema = z.object({\n /** Workspace hash (from envelope, but also referenced in data for clarity) */\n workspaceHash: z.string().regex(/^[0-9a-f]{64}$/i),\n /** Fatigue level assessment */\n level: z.enum([\"rested\", \"normal\", \"elevated\", \"fatigued\"]),\n /** Risk score boost factor from fatigue */\n riskBoost: z.number().min(0),\n /** Ratio of rapid accepts to total suggestions */\n rapidAcceptRatio: z.number().min(0).max(1),\n /** Time window for fatigue detection in milliseconds */\n windowMs: z.number().int().positive(),\n /** Number of suggestions in detection window */\n suggestionCount: z.number().int().nonnegative(),\n /** Session ID if part of tracked session */\n sessionId: z.string().uuid().optional(),\n});\n/**\n * Spine event schema for risk.signal.fatigue-detected\n *\n * Emitted when fatigue patterns are detected in user behavior.\n */\nexport const riskSignalFatigueDetectedSchema = createSpineEventSchema(riskSignalFatigueDetectedDataSchema);\n/**\n * Event type constant\n */\nexport const RISK_SIGNAL_FATIGUE_DETECTED = \"risk.signal.fatigue-detected\";\n// =============================================================================\n// risk.signal.fragile-detected\n// =============================================================================\n/**\n * Data payload for risk.signal.fragile-detected event\n */\nexport const riskSignalFragileDetectedDataSchema = z.object({\n /** Fragility score 0.0-1.0 */\n fragilityScore: z.number().min(0).max(1),\n /** Severity assessment */\n severity: z.enum([\"moderate\", \"high\", \"critical\"]),\n /** Detection reason code */\n reason: z.enum([\n \"rapid-changes\", // Too many changes in short time\n \"incomplete-pattern\", // Pattern detected but incomplete\n \"dependency-risk\", // Changes to critical dependencies\n \"complexity-spike\", // Sudden complexity increase\n \"unknown-tool\", // Attribution to unknown tool\n ]),\n /** Confidence in fragility assessment */\n confidence: z.number().min(0).max(1),\n /** Related snapshot hash if applicable */\n snapshotHash: z\n .string()\n .regex(/^[0-9a-f]{64}$/i)\n .optional(),\n});\n/**\n * Spine event schema for risk.signal.fragile-detected\n *\n * Emitted when fragile change patterns are detected.\n */\nexport const riskSignalFragileDetectedSchema = createSpineEventSchema(riskSignalFragileDetectedDataSchema);\n/**\n * Event type constant\n */\nexport const RISK_SIGNAL_FRAGILE_DETECTED = \"risk.signal.fragile-detected\";\n// =============================================================================\n// risk.signal.poisoning-detected\n// =============================================================================\n/**\n * Data payload for risk.signal.poisoning-detected event\n */\nexport const riskSignalPoisoningDetectedDataSchema = z.object({\n /** Unique fingerprint of poisoning pattern */\n fingerprint: z.string().regex(/^[0-9a-f]{64}$/i),\n /** Number of distinct sessions showing this pattern */\n distinctSessions: z.number().int().positive(),\n /** Tools involved in poisoning pattern */\n toolFingerprints: z.array(z.string().regex(/^[0-9a-f]{64}$/i)).max(10),\n /** Detection confidence */\n confidence: z.number().min(0).max(1),\n /** Pattern category */\n category: z.enum([\n \"repeated-error\", // Same error pattern across sessions\n \"anti-pattern\", // Known problematic pattern\n \"degraded-quality\", // Measurable quality degradation\n \"attribution-drift\", // Tool attribution inconsistencies\n ]),\n});\n/**\n * Spine event schema for risk.signal.poisoning-detected\n *\n * Emitted when AI poisoning patterns are detected.\n */\nexport const riskSignalPoisoningDetectedSchema = createSpineEventSchema(riskSignalPoisoningDetectedDataSchema);\n/**\n * Event type constant\n */\nexport const RISK_SIGNAL_POISONING_DETECTED = \"risk.signal.poisoning-detected\";\n// =============================================================================\n// risk.score.updated\n// =============================================================================\n/**\n * Data payload for risk.score.updated event\n */\nexport const riskScoreUpdatedDataSchema = z.object({\n /** New risk score */\n score: riskScoreSchema,\n /** New risk level */\n level: riskLevelSchema,\n /** Previous score */\n previousScore: riskScoreSchema,\n /** Previous level */\n previousLevel: riskLevelSchema,\n /** Contributing factors to score change */\n factors: z\n .array(z.object({\n name: z.string().min(1).max(100),\n impact: z.enum([\"positive\", \"negative\", \"neutral\"]),\n weight: z.number().min(0).max(1),\n }))\n .max(10),\n /** Risk change trigger */\n trigger: z.enum([\n \"snapshot-created\",\n \"snapshot-restored\",\n \"session-changed\",\n \"manual-adjustment\",\n \"auto-recalculation\",\n ]),\n});\n/**\n * Spine event schema for risk.score.updated\n *\n * Emitted when overall risk score is recalculated.\n */\nexport const riskScoreUpdatedSchema = createSpineEventSchema(riskScoreUpdatedDataSchema);\n/**\n * Event type constant\n */\nexport const RISK_SCORE_UPDATED = \"risk.score.updated\";\n/**\n * All risk event type constants\n */\nexport const RISK_EVENT_TYPES = [\n RISK_SIGNAL_FATIGUE_DETECTED,\n RISK_SIGNAL_FRAGILE_DETECTED,\n RISK_SIGNAL_POISONING_DETECTED,\n RISK_SCORE_UPDATED,\n];\n/**\n * Map of event types to their schemas for validation\n */\nexport const RISK_EVENT_SCHEMAS = {\n [RISK_SIGNAL_FATIGUE_DETECTED]: riskSignalFatigueDetectedSchema,\n [RISK_SIGNAL_FRAGILE_DETECTED]: riskSignalFragileDetectedSchema,\n [RISK_SIGNAL_POISONING_DETECTED]: riskSignalPoisoningDetectedSchema,\n [RISK_SCORE_UPDATED]: riskScoreUpdatedSchema,\n};\n","/**\n * Learning Domain Spine Events - ADR-007 §3\n *\n * Spine events for pattern learning and accumulation.\n * Event types use three-part naming: learning.<entity>.<action>\n *\n * @module @vreko/contracts/events/spine/domains/learning\n * @see ADR-007 Runtime Tier Boundaries and Export Spine Contract\n */\nimport { z } from \"zod\";\nimport { createSpineEventSchema } from \"../envelope.js\";\n// =============================================================================\n// Shared Learning Schemas\n// =============================================================================\n/**\n * Learning pattern types\n */\nexport const learningTypeSchema = z.enum([\n \"recovery\", // Recovery patterns\n \"workflow\", // Workflow patterns\n \"risk\", // Risk-related patterns\n \"attribution\", // Attribution patterns\n \"tool-preference\", // Tool preference patterns\n]);\n/**\n * Learning confidence levels\n */\nexport const learningConfidenceSchema = z.enum([\n \"hypothesis\", // Initial observation\n \"emerging\", // Multiple observations\n \"established\", // Consistent pattern\n \"validated\", // Validated through outcomes\n]);\n// =============================================================================\n// learning.pattern.recorded\n// =============================================================================\n/**\n * Data payload for learning.pattern.recorded event\n */\nexport const learningPatternRecordedDataSchema = z.object({\n /** Pattern identifier */\n patternId: z.string().uuid(),\n /** Pattern type category */\n type: learningTypeSchema,\n /** Human-readable pattern description */\n description: z.string().min(1).max(1000),\n /** Pattern confidence level */\n confidence: learningConfidenceSchema,\n /** Occurrence count for this pattern */\n occurrenceCount: z.number().int().nonnegative(),\n /** First observed timestamp */\n firstObservedAt: z.number().int().positive(),\n /** Pattern features (hashed/anonymized) */\n featureHash: z.string().regex(/^[0-9a-f]{64}$/i),\n /** Whether pattern has been validated through outcomes */\n isValidated: z.boolean(),\n});\n/**\n * Spine event schema for learning.pattern.recorded\n *\n * Emitted when a new learning pattern is recorded.\n */\nexport const learningPatternRecordedSchema = createSpineEventSchema(learningPatternRecordedDataSchema);\n/**\n * Event type constant\n */\nexport const LEARNING_PATTERN_RECORDED = \"learning.pattern.recorded\";\n// =============================================================================\n// learning.pattern.promoted\n// =============================================================================\n/**\n * Data payload for learning.pattern.promoted event\n */\nexport const learningPatternPromotedDataSchema = z.object({\n /** Pattern identifier */\n patternId: z.string().uuid(),\n /** Previous confidence level */\n previousConfidence: learningConfidenceSchema,\n /** New confidence level */\n newConfidence: learningConfidenceSchema,\n /** Number of occurrences at promotion time */\n occurrenceCount: z.number().int().positive(),\n /** Outcome ratio (successes / total) */\n outcomeRatio: z.number().min(0).max(1),\n /** Promotion timestamp */\n promotedAt: z.number().int().positive(),\n});\n/**\n * Spine event schema for learning.pattern.promoted\n *\n * Emitted when a pattern confidence is promoted.\n */\nexport const learningPatternPromotedSchema = createSpineEventSchema(learningPatternPromotedDataSchema);\n/**\n * Event type constant\n */\nexport const LEARNING_PATTERN_PROMOTED = \"learning.pattern.promoted\";\n// =============================================================================\n// learning.pattern.pruned\n// =============================================================================\n/**\n * Data payload for learning.pattern.pruned event\n */\nexport const learningPatternPrunedDataSchema = z.object({\n /** Number of patterns pruned */\n count: z.number().int().nonnegative(),\n /** Pruning reason */\n reason: z.enum([\n \"stale\", // Not observed recently\n \"low-confidence\", // Never reached threshold\n \"invalidated\", // Contradicted by outcomes\n \"redundant\", // Duplicate of another pattern\n ]),\n /** Oldest pattern age at pruning in milliseconds */\n oldestPatternAgeMs: z.number().int().nonnegative(),\n /** Pruning timestamp */\n prunedAt: z.number().int().positive(),\n});\n/**\n * Spine event schema for learning.pattern.pruned\n *\n * Emitted when patterns are pruned from learning store.\n */\nexport const learningPatternPrunedSchema = createSpineEventSchema(learningPatternPrunedDataSchema);\n/**\n * Event type constant\n */\nexport const LEARNING_PATTERN_PRUNED = \"learning.pattern.pruned\";\n// =============================================================================\n// learning.annotation.added\n// =============================================================================\n/**\n * Data payload for learning.annotation.added event\n */\nexport const learningAnnotationAddedDataSchema = z.object({\n /** Annotation identifier */\n annotationId: z.string().uuid(),\n /** Tag/category for the annotation */\n tag: z.string().min(1).max(100),\n /** Risk signal direction */\n riskSignal: z.object({\n direction: z.enum([\"increasing\", \"decreasing\", \"stable\"]),\n magnitude: z.number().min(0).max(1),\n }),\n /** Related snapshot hash */\n snapshotHash: z.string().regex(/^[0-9a-f]{64}$/i),\n /** Annotation timestamp */\n annotatedAt: z.number().int().positive(),\n /** Session ID if part of tracked session */\n sessionId: z.string().uuid().optional(),\n});\n/**\n * Spine event schema for learning.annotation.added\n *\n * Emitted when a learning annotation is added.\n */\nexport const learningAnnotationAddedSchema = createSpineEventSchema(learningAnnotationAddedDataSchema);\n/**\n * Event type constant\n */\nexport const LEARNING_ANNOTATION_ADDED = \"learning.annotation.added\";\n/**\n * All learning event type constants\n */\nexport const LEARNING_EVENT_TYPES = [\n LEARNING_PATTERN_RECORDED,\n LEARNING_PATTERN_PROMOTED,\n LEARNING_PATTERN_PRUNED,\n LEARNING_ANNOTATION_ADDED,\n];\n/**\n * Map of event types to their schemas for validation\n */\nexport const LEARNING_EVENT_SCHEMAS = {\n [LEARNING_PATTERN_RECORDED]: learningPatternRecordedSchema,\n [LEARNING_PATTERN_PROMOTED]: learningPatternPromotedSchema,\n [LEARNING_PATTERN_PRUNED]: learningPatternPrunedSchema,\n [LEARNING_ANNOTATION_ADDED]: learningAnnotationAddedSchema,\n};\n","/**\n * File Domain Spine Events - ADR-007 §3\n *\n * Spine events for file watch and modification tracking.\n * Event types use three-part naming: file.<entity>.<action>\n *\n * @module @vreko/contracts/events/spine/domains/file\n * @see ADR-007 Runtime Tier Boundaries and Export Spine Contract\n */\nimport { z } from \"zod\";\nimport { createSpineEventSchema } from \"../envelope.js\";\n// =============================================================================\n// Shared File Schemas\n// =============================================================================\n/**\n * File modification operation types\n */\nexport const fileOperationSchema = z.enum([\n \"create\", // File created\n \"modify\", // File modified\n \"delete\", // File deleted\n \"rename\", // File renamed\n]);\n/**\n * File extension categories\n */\nexport const fileCategorySchema = z.enum([\n \"source-code\", // .ts, .js, .py, etc.\n \"configuration\", // .json, .yaml, .toml, etc.\n \"documentation\", // .md, .txt, etc.\n \"test\", // .test.ts, .spec.ts, etc.\n \"asset\", // .png, .svg, etc.\n \"other\", // Uncategorized\n]);\n// =============================================================================\n// file.watch.modified\n// =============================================================================\n/**\n * Data payload for file.watch.modified event\n */\nexport const fileWatchModifiedDataSchema = z.object({\n /** SHA-256 hash of file path (never raw path per M7, N3) */\n filePathHash: z.string().regex(/^[0-9a-f]{64}$/i),\n /** File extension category */\n category: fileCategorySchema,\n /** Operation type */\n operation: fileOperationSchema,\n /** Size change in bytes (positive for growth, negative for shrinkage) */\n sizeChangeBytes: z.number().int(),\n /** Lines changed (if applicable) */\n linesChanged: z.number().int().optional(),\n /** Whether change is attributed to AI tool */\n aiAttributed: z.boolean(),\n /** Tool confidence if AI attributed */\n toolConfidence: z.number().min(0).max(1).optional(),\n /** Time since last modification in milliseconds */\n timeSinceLastModifyMs: z.number().int().nonnegative().optional(),\n});\n/**\n * Spine event schema for file.watch.modified\n *\n * Emitted when a watched file is modified.\n */\nexport const fileWatchModifiedSchema = createSpineEventSchema(fileWatchModifiedDataSchema);\n/**\n * Event type constant\n */\nexport const FILE_WATCH_MODIFIED = \"file.watch.modified\";\n// =============================================================================\n// file.watch.batch\n// =============================================================================\n/**\n * Data payload for file.watch.batch event\n *\n * Batched file events for efficiency\n */\nexport const fileWatchBatchDataSchema = z.object({\n /** Number of files in batch */\n fileCount: z.number().int().positive().max(100),\n /** Operations summary */\n operations: z.object({\n create: z.number().int().nonnegative(),\n modify: z.number().int().nonnegative(),\n delete: z.number().int().nonnegative(),\n rename: z.number().int().nonnegative(),\n }),\n /** Categories summary */\n categories: z.object({\n \"source-code\": z.number().int().nonnegative(),\n configuration: z.number().int().nonnegative(),\n documentation: z.number().int().nonnegative(),\n test: z.number().int().nonnegative(),\n asset: z.number().int().nonnegative(),\n other: z.number().int().nonnegative(),\n }),\n /** Batch time window in milliseconds */\n windowMs: z.number().int().positive(),\n /** Whether any changes are AI attributed */\n aiAttributed: z.boolean(),\n});\n/**\n * Spine event schema for file.watch.batch\n *\n * Emitted when multiple file changes are batched.\n */\nexport const fileWatchBatchSchema = createSpineEventSchema(fileWatchBatchDataSchema);\n/**\n * Event type constant\n */\nexport const FILE_WATCH_BATCH = \"file.watch.batch\";\n// =============================================================================\n// file.protection.changed\n// =============================================================================\n/**\n * Data payload for file.protection.changed event\n */\nexport const fileProtectionChangedDataSchema = z.object({\n /** SHA-256 hash of file path */\n filePathHash: z.string().regex(/^[0-9a-f]{64}$/i),\n /** New protection level */\n newLevel: z.enum([\"watch\", \"warn\", \"block\"]),\n /** Previous protection level */\n previousLevel: z.enum([\"watch\", \"warn\", \"block\"]).optional(),\n /** Source of protection change */\n source: z.enum([\n \"auto-risk\", // Automatic based on risk\n \"manual-user\", // User manually set\n \"config-rule\", // Configuration rule matched\n \"session-context\", // Session context change\n ]),\n /** Risk score at time of change */\n riskScore: z.number().min(0).optional(),\n /** Session ID if part of tracked session */\n sessionId: z.string().uuid().optional(),\n});\n/**\n * Spine event schema for file.protection.changed\n *\n * Emitted when file protection level changes.\n */\nexport const fileProtectionChangedSchema = createSpineEventSchema(fileProtectionChangedDataSchema);\n/**\n * Event type constant\n */\nexport const FILE_PROTECTION_CHANGED = \"file.protection.changed\";\n/**\n * All file event type constants\n */\nexport const FILE_EVENT_TYPES = [FILE_WATCH_MODIFIED, FILE_WATCH_BATCH, FILE_PROTECTION_CHANGED];\n/**\n * Map of event types to their schemas for validation\n */\nexport const FILE_EVENT_SCHEMAS = {\n [FILE_WATCH_MODIFIED]: fileWatchModifiedSchema,\n [FILE_WATCH_BATCH]: fileWatchBatchSchema,\n [FILE_PROTECTION_CHANGED]: fileProtectionChangedSchema,\n};\n","/**\n * Spine Event Contract - ADR-007\n *\n * Runtime Tier Boundaries and Export Spine Contract\n *\n * This module defines the spine event contract for Tier 2 → Tier 3 communication.\n * All events transmitted from the local daemon to the API must validate against\n * these schemas and include the required envelope fields.\n *\n * ## Architecture\n *\n * ```\n * Tier 1 (Surfaces) Tier 2 (Daemon) Tier 3 (API)\n * inspectable ──▶ local-only ──▶ server-only\n * distribution intelligence intelligence\n *\n * Internal Bus\n * │\n * Projector ◀── single choke point\n * │\n * Spine Contract\n * │\n * ▼\n * Tier 3 Ingest\n * ```\n *\n * ## Normative Invariants (ADR-007 §2)\n *\n * ### MUST\n * - **M5**: Every spine event carries the required envelope (§3.1)\n * - **M6**: TypeScript types generated from Zod schemas\n * - **M7**: Identifiers hashed before transmission\n * - **M9**: Breaking changes require new schemaVersion\n *\n * ### MUST NOT\n * - **N3**: Daemon must not transmit raw file paths\n * - **N6**: Internal bus shape must not be external contract\n *\n * ### SHOULD\n * - **S1**: Session-bound events should include sessionId\n * - **S2**: Projector should batch spine events\n *\n * @module @vreko/contracts/events/spine\n * @see ADR-007 Runtime Tier Boundaries and Export Spine Contract\n */\n// =============================================================================\n// Core Spine Types\n// =============================================================================\nexport { createSpineEnvelope, createSpineEventSchema, eventPrioritySchema, eventTypeSchema, safeValidateSpineEvent, sha256Schema, \n// Envelope\nspineEnvelopeSchema, spineOptionalFieldsSchema, uuidv7Schema, validateSpineEvent, } from \"./envelope.js\";\n// =============================================================================\n// Attribution Types\n// =============================================================================\nexport { AttributionConfidence, attributionSchema, attributionSourceSchema, createSystemAttribution, \n// Factories\ncreateToolAttribution, createUnknownAttribution, createUserAttribution, meetsConfidenceThreshold, safeValidateAttribution, systemAttributionSchema, toolAttributionSchema, \n// Schemas\ntoolUrnSchema, unknownAttributionSchema, userAttributionSchema, \n// Validation\nvalidateAttribution, } from \"./attribution.js\";\n// =============================================================================\n// Domain: Snapshot\n// =============================================================================\nexport { \n// Constants\nSNAPSHOT_BLOB_CREATED, SNAPSHOT_BLOB_DELETED, SNAPSHOT_BLOB_RESTORED, SNAPSHOT_EVENT_SCHEMAS, SNAPSHOT_EVENT_TYPES, SNAPSHOT_METADATA_UPDATED, snapshotBlobCreatedDataSchema, \n// Schemas\nsnapshotBlobCreatedSchema, snapshotBlobDeletedDataSchema, snapshotBlobDeletedSchema, snapshotBlobRestoredDataSchema, snapshotBlobRestoredSchema, snapshotMetadataUpdatedDataSchema, snapshotMetadataUpdatedSchema, snapshotRiskSchema, snapshotTriggerSchema, } from \"./domains/snapshot.js\";\n// =============================================================================\n// Domain: Session\n// =============================================================================\nexport { coherenceAssessmentSchema, SESSION_CHECKPOINT_CREATED, SESSION_COHERENCE_UPDATED, SESSION_EVENT_SCHEMAS, SESSION_EVENT_TYPES, SESSION_LIFECYCLE_ENDED, \n// Constants\nSESSION_LIFECYCLE_STARTED, sessionCheckpointCreatedDataSchema, sessionCheckpointCreatedSchema, sessionCoherenceUpdatedDataSchema, sessionCoherenceUpdatedSchema, sessionLifecycleEndedDataSchema, sessionLifecycleEndedSchema, sessionLifecycleStartedDataSchema, \n// Schemas\nsessionLifecycleStartedSchema, sessionOutcomeSchema, } from \"./domains/session.js\";\n// =============================================================================\n// Domain: Risk\n// =============================================================================\nexport { RISK_EVENT_SCHEMAS, RISK_EVENT_TYPES, RISK_SCORE_UPDATED, \n// Constants\nRISK_SIGNAL_FATIGUE_DETECTED, RISK_SIGNAL_FRAGILE_DETECTED, RISK_SIGNAL_POISONING_DETECTED, riskLevelSchema, riskScoreSchema, riskScoreUpdatedDataSchema, riskScoreUpdatedSchema, riskSignalFatigueDetectedDataSchema, \n// Schemas\nriskSignalFatigueDetectedSchema, riskSignalFragileDetectedDataSchema, riskSignalFragileDetectedSchema, riskSignalPoisoningDetectedDataSchema, riskSignalPoisoningDetectedSchema, } from \"./domains/risk.js\";\n// =============================================================================\n// Domain: Learning\n// =============================================================================\nexport { LEARNING_ANNOTATION_ADDED, LEARNING_EVENT_SCHEMAS, LEARNING_EVENT_TYPES, LEARNING_PATTERN_PROMOTED, LEARNING_PATTERN_PRUNED, \n// Constants\nLEARNING_PATTERN_RECORDED, learningAnnotationAddedDataSchema, learningAnnotationAddedSchema, learningConfidenceSchema, learningPatternPromotedDataSchema, learningPatternPromotedSchema, learningPatternPrunedDataSchema, learningPatternPrunedSchema, learningPatternRecordedDataSchema, \n// Schemas\nlearningPatternRecordedSchema, learningTypeSchema, } from \"./domains/learning.js\";\n// =============================================================================\n// Domain: File\n// =============================================================================\nexport { FILE_EVENT_SCHEMAS, FILE_EVENT_TYPES, FILE_PROTECTION_CHANGED, FILE_WATCH_BATCH, \n// Constants\nFILE_WATCH_MODIFIED, fileCategorySchema, fileOperationSchema, fileProtectionChangedDataSchema, fileProtectionChangedSchema, fileWatchBatchDataSchema, fileWatchBatchSchema, fileWatchModifiedDataSchema, \n// Schemas\nfileWatchModifiedSchema, } from \"./domains/file.js\";\n// =============================================================================\n// Spine Event Registry\n// =============================================================================\nimport { FILE_EVENT_SCHEMAS } from \"./domains/file.js\";\nimport { LEARNING_EVENT_SCHEMAS } from \"./domains/learning.js\";\nimport { RISK_EVENT_SCHEMAS } from \"./domains/risk.js\";\nimport { SESSION_EVENT_SCHEMAS } from \"./domains/session.js\";\nimport { SNAPSHOT_EVENT_SCHEMAS } from \"./domains/snapshot.js\";\n/**\n * All spine event type constants across all domains\n */\nexport const ALL_SPINE_EVENT_TYPES = [\n ...Object.keys(SNAPSHOT_EVENT_SCHEMAS),\n ...Object.keys(SESSION_EVENT_SCHEMAS),\n ...Object.keys(RISK_EVENT_SCHEMAS),\n ...Object.keys(LEARNING_EVENT_SCHEMAS),\n ...Object.keys(FILE_EVENT_SCHEMAS),\n];\n/**\n * All spine event schemas for validation\n */\nexport const ALL_SPINE_EVENT_SCHEMAS = {\n ...SNAPSHOT_EVENT_SCHEMAS,\n ...SESSION_EVENT_SCHEMAS,\n ...RISK_EVENT_SCHEMAS,\n ...LEARNING_EVENT_SCHEMAS,\n ...FILE_EVENT_SCHEMAS,\n};\n// =============================================================================\n// Schema Version\n// =============================================================================\n/**\n * Current spine contract schema version (ADR-007 §3.1 M9)\n *\n * Breaking changes require incrementing this version and maintaining\n * backward compatibility for 90 days.\n */\nexport const SPINE_SCHEMA_VERSION = 1;\n/**\n * Minimum accepted schema version (for deprecation window)\n */\nexport const SPINE_MIN_SCHEMA_VERSION = 1;\n","export const FEATURE_FLAGS = {\n // Core protection features\n \"protection.enabled\": true,\n \"protection.auto_checkpoint\": true,\n \"protection.pre_save_hook\": true,\n // Risk analysis\n \"risk.guardian_v2\": false,\n \"risk.dependency_analysis\": true,\n \"risk.deep_analysis\": false,\n \"risk.ai_detection\": true,\n // Storage\n \"storage.compression\": true,\n \"storage.deduplication\": false,\n \"storage.encryption\": false,\n // UI/UX\n \"ui.chat_participant\": true,\n \"ui.status_bar\": true,\n \"ui.timeline_view\": true,\n // Telemetry\n \"telemetry.detailed_events\": false,\n \"telemetry.performance_metrics\": true,\n \"telemetry.sampling_rate\": 1.0,\n // Experimental\n \"experimental.mcp_tools\": false,\n \"experimental.recovery_mode\": false,\n // Intelligence Layer (WU-4.1b)\n \"intelligence.layer\": false,\n \"intelligence.trust_calibration\": false,\n \"intelligence.pattern_library\": false,\n // A/B Testing - DeepScan\n \"deepscan.v2_algorithm\": false,\n \"deepscan.enhanced_analysis\": false,\n \"deepscan.real_time_processing\": false,\n // Event System Migration\n \"events.eventemitter2\": false,\n};\n","// ESM imports fixed for Node.js v22+\nimport { FEATURE_FLAGS } from \"./features.js\";\nimport { createLogger, LogLevel } from \"./logger.js\";\n// Environment variables should be loaded by the application entry point (e.g. Next.js, or dotenv/config in scripts)\nconst logger = createLogger({ name: \"feature-manager\", level: LogLevel.INFO });\nexport class FeatureManager {\n static instance;\n flags = new Map();\n posthogClient = null;\n constructor() {\n // Initialize with default values\n for (const [key, value] of Object.entries(FEATURE_FLAGS)) {\n this.flags.set(key, value);\n }\n // Override with environment variables\n this.loadEnvironmentOverrides();\n }\n static getInstance() {\n if (!FeatureManager.instance) {\n FeatureManager.instance = new FeatureManager();\n }\n return FeatureManager.instance;\n }\n isEnabled(flag) {\n const value = this.flags.get(flag) ?? FEATURE_FLAGS[flag];\n // For sampling rate flags, compare with random value\n if (flag === \"telemetry.sampling_rate\" && typeof value === \"number\") {\n return Math.random() < value;\n }\n return Boolean(value);\n }\n getValue(flag) {\n return this.flags.get(flag);\n }\n setFlag(flag, value) {\n this.flags.set(flag, value);\n }\n /**\n * Set PostHog client for dynamic feature flag evaluation\n */\n setPostHogClient(client) {\n this.posthogClient = client;\n if (client) {\n logger.info(\"PostHog client configured\");\n }\n else {\n logger.info(\"PostHog client cleared, falling back to static config\");\n }\n }\n /**\n * Get configured PostHog client\n */\n getPostHogClient() {\n return this.posthogClient;\n }\n /**\n * Asynchronously check if feature is enabled (with PostHog fallback)\n * @param flag - Feature flag name\n * @param userId - User ID for targeting rules (optional)\n * @param context - Additional context for PostHog targeting (optional)\n * @returns Promise<boolean> - True if feature is enabled\n */\n async isEnabledAsync(flag, userId, context) {\n // If PostHog is configured and we have a userId, try to use it\n if (this.posthogClient && userId) {\n try {\n const defaultSubscriptionTier = process.env.VREKO_DEFAULT_SUBSCRIPTION_TIER || \"free\";\n const posthogContext = {\n subscriptionTier: defaultSubscriptionTier,\n ...context,\n };\n const result = await this.posthogClient.isFeatureEnabled(flag, userId, posthogContext);\n // If PostHog returns a value, use it. Otherwise fall back to static config\n if (result !== null && result !== undefined) {\n logger.info(\"Feature flag evaluated via PostHog\", {\n flag,\n userId,\n enabled: result,\n });\n return result;\n }\n }\n catch (error) {\n logger.warn(\"PostHog feature flag check failed, falling back to static config\", {\n flag,\n userId,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n // Fall back to static configuration\n return this.isEnabled(flag);\n }\n loadEnvironmentOverrides() {\n // Check for environment variable overrides\n for (const flag of Object.keys(FEATURE_FLAGS)) {\n const envVar = `VREKO_${flag.replace(/\\./g, \"_\").toUpperCase()}`;\n const envValue = process.env[envVar];\n if (envValue !== undefined) {\n // Parse boolean values\n if (envValue === \"true\" || envValue === \"false\") {\n this.flags.set(flag, envValue === \"true\");\n }\n // Parse numeric values\n else if (!Number.isNaN(Number(envValue))) {\n this.flags.set(flag, Number(envValue));\n }\n // Keep as string for other values (though we don't expect string flags)\n }\n }\n }\n reset() {\n this.flags.clear();\n this.posthogClient = null;\n for (const [key, value] of Object.entries(FEATURE_FLAGS)) {\n this.flags.set(key, value);\n }\n this.loadEnvironmentOverrides();\n }\n}\n","/**\n * Flywheel Queue Job Contracts\n *\n * Defines job data types for BullMQ workers processing:\n * - Session reflection (LLM-based)\n * - Outcome labeling (user feedback)\n *\n * @module flywheel/queue\n */\nimport { z } from \"zod\";\n// =============================================================================\n// REFLECTION JOB\n// =============================================================================\n/**\n * Zod schema for reflection job data\n */\nexport const ReflectionJobDataSchema = z.object({\n /** Internal ingest record ID */\n ingestId: z.string().uuid(),\n /** User ID (for scope resolution) */\n userId: z.string(),\n /** Organization ID (null for personal sessions) */\n organizationId: z.string().uuid().nullable(),\n /** Session payload (JSONB content) */\n payload: z.record(z.unknown()),\n /** Feature flag state for this session */\n enabledFeatures: z.array(z.string()),\n /** Tier-based limits */\n maxReflectionTokens: z.number().int().positive(),\n});\n// =============================================================================\n// OUTCOME LABELING JOB\n// =============================================================================\n/**\n * Zod schema for outcome labeling job data\n */\nexport const OutcomeLabelJobDataSchema = z.object({\n /** Internal ingest record ID */\n ingestId: z.string().uuid(),\n /** User ID */\n userId: z.string(),\n /** Organization ID */\n organizationId: z.string().uuid().nullable(),\n /** Session payload (for pattern analysis) */\n payload: z.record(z.unknown()),\n /** User's outcome assessment (optional - can be computed) */\n userOutcome: z\n .object({\n /** Was the session successful? */\n success: z.boolean(),\n /** User's description of outcome */\n description: z.string().max(500).optional(),\n })\n .optional(),\n});\n// =============================================================================\n// QUEUE NAMES\n// =============================================================================\n/**\n * BullMQ queue names for flywheel jobs\n */\nexport const FLYWHEEL_QUEUE_NAMES = {\n /** Queue for LLM-based session reflection */\n REFLECTION: \"flywheel-reflection\",\n /** Queue for outcome labeling and pattern analysis */\n OUTCOME: \"flywheel-outcome\",\n};\n// =============================================================================\n// JOB OPTIONS\n// =============================================================================\n/**\n * Default job options for flywheel queues\n */\nexport const FLYWHEEL_JOB_OPTIONS = {\n /** Reflection jobs: retry 3 times, 30s delay, 5 minute timeout */\n REFLECTION: {\n attempts: 3,\n backoff: {\n type: \"exponential\",\n delay: 30000,\n },\n removeOnComplete: { count: 100 },\n removeOnFail: { count: 50 },\n },\n /** Outcome jobs: retry 2 times, 10s delay, 1 minute timeout */\n OUTCOME: {\n attempts: 2,\n backoff: {\n type: \"fixed\",\n delay: 10000,\n },\n removeOnComplete: { count: 200 },\n removeOnFail: { count: 100 },\n },\n};\n","import { z } from \"zod\";\n// =============================================================================\n// ZOD SCHEMAS (strict validation for LLM response parsing)\n// =============================================================================\nexport const MissingContextCategorySchema = z.enum([\n \"eventual_consistency_contract\",\n \"shared_dependency\",\n \"test_coverage_gap\",\n \"implicit_ownership\",\n \"prior_breakage_history\",\n \"async_message_contract\",\n \"environment_coupling\",\n \"undocumented_invariant\",\n \"other\",\n]);\nexport const MissingContextItemSchema = z.object({\n category: MissingContextCategorySchema,\n description: z.string().max(200), // <50 words\n affectedFiles: z.array(z.string()).optional(),\n severity: z.enum([\"high\", \"medium\", \"low\"]),\n});\nexport const ConfidenceGapItemSchema = z.object({\n filePath: z.string().min(1),\n reason: z.string().max(150), // <30 words\n confidenceScore: z.number().min(0).max(1),\n});\nexport const ContributingFactorSchema = z.enum([\n \"multi_service_change\",\n \"high_churn_file\",\n \"ai_generated_without_tests\",\n \"dependency_boundary_crossed\",\n \"config_file_modified\",\n \"auth_middleware_touched\",\n \"database_schema_changed\",\n]);\nexport const ReflectionOutputSchema = z.object({\n schemaVersion: z.literal(\"sb.reflection.v1\"),\n missingContext: z.array(MissingContextItemSchema),\n confidenceGaps: z.array(ConfidenceGapItemSchema),\n wouldHaveChangedApproach: z.boolean(),\n contributingFactors: z.array(ContributingFactorSchema),\n rawSummary: z.string().max(600), // <100 words\n generatedBy: z.enum([\"llm\", \"heuristic\"]),\n});\n","// =============================================================================\n// EFFECTIVE SCOPES\n// =============================================================================\n// =============================================================================\n// ZOD SCHEMA\n// =============================================================================\nimport { z } from \"zod\";\nexport const OrgModeSchema = z.enum([\"none\", \"shared\", \"ring_fenced\"]);\nexport const EffectiveScopesSchema = z.object({\n personal: z.boolean(),\n global: z.boolean(),\n org: z\n .object({\n orgId: z.string(),\n mode: OrgModeSchema,\n })\n .nullable(),\n});\n","/**\n * Core Observability Types\n *\n * Vendor-neutral abstractions for instrumentation.\n * These types enable swapping implementations (OTel, Datadog, custom)\n * without changing business logic.\n */\n/**\n * Span status codes (aligned with OpenTelemetry)\n * @see https://github.com/open-telemetry/opentelemetry-js/blob/main/api/src/trace/status.ts\n */\nexport var SpanStatusCode;\n(function (SpanStatusCode) {\n /** The default status */\n SpanStatusCode[SpanStatusCode[\"UNSET\"] = 0] = \"UNSET\";\n /** The operation completed successfully */\n SpanStatusCode[SpanStatusCode[\"OK\"] = 1] = \"OK\";\n /** The operation contains an error */\n SpanStatusCode[SpanStatusCode[\"ERROR\"] = 2] = \"ERROR\";\n})(SpanStatusCode || (SpanStatusCode = {}));\n/**\n * Span kinds aligned with OpenTelemetry\n */\nexport var SpanKind;\n(function (SpanKind) {\n SpanKind[SpanKind[\"INTERNAL\"] = 0] = \"INTERNAL\";\n SpanKind[SpanKind[\"SERVER\"] = 1] = \"SERVER\";\n SpanKind[SpanKind[\"CLIENT\"] = 2] = \"CLIENT\";\n SpanKind[SpanKind[\"PRODUCER\"] = 3] = \"PRODUCER\";\n SpanKind[SpanKind[\"CONSUMER\"] = 4] = \"CONSUMER\";\n})(SpanKind || (SpanKind = {}));\n","/**\n * Canonical Pioneer activation event names.\n *\n * IMPORTANT: PostHog dashboard funnel \"Pioneer Activation\" must use\n * these exact event names. Drift between this constant and the funnel\n * results in zero-event funnels.\n *\n * Order matches the seven-step activation funnel:\n * invite_code_redeemed → cli_installed → extension_installed →\n * first_session → first_snapshot → first_ceremony →\n * first_intelligence_file_card\n */\nexport const PIONEER_EVENTS = {\n INVITE_CODE_REDEEMED: \"invite_code_redeemed\",\n CLI_INSTALLED: \"cli_installed\",\n EXTENSION_INSTALLED: \"extension_installed\",\n FIRST_SESSION: \"first_session\",\n FIRST_SNAPSHOT: \"first_snapshot\",\n FIRST_CEREMONY: \"first_ceremony\",\n FIRST_INTELLIGENCE_FILE_CARD: \"first_intelligence_file_card\",\n FIRST_RECOVERY: \"first_recovery\",\n};\n","/**\n * Shared contracts for both Pioneer entry points.\n *\n * Two legitimately distinct flows, ONE schema module so marketing capture and\n * authenticated redemption can never drift in field names or validation rules:\n *\n * 1. Waitlist / email capture - unauthenticated, homepage (vreko.dev)\n * 2. Invite redemption - authenticated, console.vreko.dev/pioneer?code=\n */\nimport { z } from \"zod\";\n// ---------------------------------------------------------------------------\n// Option vocabularies (single source - UI dropdowns and server validation\n// both import these, so the form can never offer a value the server rejects)\n// ---------------------------------------------------------------------------\nexport const IDE_VALUES = [\"vscode\", \"cursor\", \"windsurf\", \"qoder\", \"jetbrains\", \"neovim\", \"other\"];\nexport const AI_TOOL_VALUES = [\n \"github-copilot\",\n \"cursor-ai\",\n \"claude-code\",\n \"claude-chat\",\n \"chatgpt\",\n \"codeium\",\n \"amazon-q\",\n \"gemini\",\n \"morph\",\n \"other\",\n];\nexport const IDE_OPTIONS = [\n { value: \"vscode\", label: \"VS Code\" },\n { value: \"cursor\", label: \"Cursor\" },\n { value: \"windsurf\", label: \"Windsurf\" },\n { value: \"qoder\", label: \"Qoder\" },\n { value: \"jetbrains\", label: \"JetBrains (IntelliJ, WebStorm, etc.)\" },\n { value: \"neovim\", label: \"Neovim\" },\n { value: \"other\", label: \"Other\" },\n];\nexport const AI_TOOL_OPTIONS = [\n { value: \"github-copilot\", label: \"GitHub Copilot\" },\n { value: \"cursor-ai\", label: \"Cursor AI\" },\n { value: \"claude-code\", label: \"Claude Code\" },\n { value: \"claude-chat\", label: \"Claude (chat)\" },\n { value: \"chatgpt\", label: \"ChatGPT\" },\n { value: \"codeium\", label: \"Codeium / Windsurf AI\" },\n { value: \"amazon-q\", label: \"Amazon Q\" },\n { value: \"gemini\", label: \"Gemini Code Assist\" },\n { value: \"morph\", label: \"Morph\" },\n { value: \"other\", label: \"Other\" },\n];\n// ---------------------------------------------------------------------------\n// Flow 1: Waitlist / email capture (unauthenticated)\n// ---------------------------------------------------------------------------\nexport const waitlistCaptureSchema = z.object({\n email: z\n .string()\n .email()\n .max(254)\n .transform((e) => e.toLowerCase().trim()),\n // Optional enrichment branches downstream sequences without gating the capture.\n intent: z.enum([\"solo\", \"team\"]).optional(),\n referralCode: z.string().max(64).optional(),\n // Turnstile token is OPTIONAL at the schema level. Whether it is REQUIRED is\n // decided at runtime by whether a server secret is configured (see route).\n turnstileToken: z.string().optional(),\n});\n// ---------------------------------------------------------------------------\n// Flow 2: Invite redemption (authenticated)\n// ---------------------------------------------------------------------------\nconst codeRegex = /^[23456789A-HJ-NP-Z]{8}$/;\nexport const redeemSchema = z.object({\n code: z.string().regex(codeRegex, \"invalid_format\"),\n primaryIde: z.enum(IDE_VALUES),\n aiTools: z.array(z.enum(AI_TOOL_VALUES)).min(1).max(AI_TOOL_VALUES.length),\n});\nexport function isValidCodeFormat(code) {\n return codeRegex.test(code);\n}\n","/**\n * CloudEvents Specification Types (v1.0.2)\n *\n * Implements the CloudEvents spec for structured event emission.\n * Used for audit logging, telemetry, and inter-service communication.\n *\n * @see https://cloudevents.io/\n * @module contracts/primitives/cloud-event\n */\nimport { z } from \"zod\";\n/**\n * Vreko event types (reverse-DNS format)\n */\nexport const VrekoEventTypes = {\n // Tool lifecycle events\n TOOL_INVOCATION_STARTED: \"dev.vreko.tool.invocation.started\",\n TOOL_INVOCATION_COMPLETED: \"dev.vreko.tool.invocation.completed\",\n TOOL_INVOCATION_FAILED: \"dev.vreko.tool.invocation.failed\",\n TOOL_INVOCATION_DENIED: \"dev.vreko.tool.invocation.denied\",\n // Security events\n POLICY_EVALUATED: \"dev.vreko.security.policy.evaluated\",\n AUTH_REQUIRED: \"dev.vreko.security.auth.required\",\n RATE_LIMITED: \"dev.vreko.security.rate.limited\",\n THREAT_DETECTED: \"dev.vreko.security.threat.detected\",\n SECRETS_SCANNED: \"dev.vreko.security.secrets.scanned\",\n // Session events\n SESSION_STARTED: \"dev.vreko.session.started\",\n SESSION_ENDED: \"dev.vreko.session.ended\",\n SESSION_CHECKPOINTED: \"dev.vreko.session.checkpointed\",\n // Snapshot events\n SNAPSHOT_CREATED: \"dev.vreko.snapshot.created\",\n SNAPSHOT_RESTORED: \"dev.vreko.snapshot.restored\",\n // Learning events\n LEARNING_CAPTURED: \"dev.vreko.learning.captured\",\n LEARNING_PROMOTED: \"dev.vreko.learning.promoted\",\n VIOLATION_RECORDED: \"dev.vreko.learning.violation.recorded\",\n // Workspace events\n WORKSPACE_LINKED: \"dev.vreko.workspace.linked\",\n WORKSPACE_CONTEXT_UPDATED: \"dev.vreko.workspace.context.updated\",\n // Audit events\n AUDIT_LOG_CREATED: \"dev.vreko.audit.log.created\",\n EGRESS_CHECKED: \"dev.vreko.audit.egress.checked\",\n};\n/**\n * Zod schema for CloudEvent validation\n */\nexport const CloudEventSchema = z.object({\n id: z.string().min(1),\n source: z.string().min(1),\n specversion: z.literal(\"1.0\"),\n type: z.string().min(1),\n datacontenttype: z.string().optional(),\n dataschema: z.string().url().optional(),\n subject: z.string().optional(),\n time: z.string().datetime().optional(),\n data: z.unknown().optional(),\n // Vreko extensions\n traceid: z.string().optional(),\n workspaceid: z.string().optional(),\n userid: z.string().optional(),\n sessionid: z.string().optional(),\n toolurn: z.string().optional(),\n riskclass: z.enum([\"safe\", \"low\", \"medium\", \"high\", \"critical\"]).optional(),\n sandboxed: z.boolean().optional(),\n privacysig: z.string().optional(),\n});\n/**\n * Create a CloudEvent with required fields\n */\nexport function createCloudEvent(params) {\n return {\n id: params.id,\n source: params.source,\n specversion: \"1.0\",\n type: params.type,\n datacontenttype: \"application/json\",\n time: new Date().toISOString(),\n subject: params.subject,\n data: params.data,\n ...params.extensions,\n };\n}\n/**\n * Create a CloudEvent from a ToolInvocation\n */\nexport function createToolInvocationEvent(params) {\n return createCloudEvent({\n id: params.traceId,\n source: params.source,\n type: params.type,\n subject: params.toolUrn,\n data: params.data,\n extensions: {\n traceid: params.traceId,\n workspaceid: params.workspaceId,\n sessionid: params.sessionId,\n userid: params.userId,\n toolurn: params.toolUrn,\n riskclass: params.riskClass,\n sandboxed: params.sandboxed,\n },\n });\n}\n/**\n * In-memory CloudEvent emitter (for development/testing)\n */\nexport function createInMemoryEventEmitter() {\n const handlers = new Map();\n return {\n async emit(event) {\n const typeHandlers = handlers.get(event.type);\n if (typeHandlers) {\n await Promise.all(Array.from(typeHandlers).map((handler) => handler(event)));\n }\n // Also emit to wildcard handlers\n const wildcardHandlers = handlers.get(\"*\");\n if (wildcardHandlers) {\n await Promise.all(Array.from(wildcardHandlers).map((handler) => handler(event)));\n }\n },\n async emitBatch(events) {\n await Promise.all(events.map((event) => this.emit(event)));\n },\n subscribe(type, handler) {\n const types = Array.isArray(type) ? type : [type];\n for (const t of types) {\n if (!handlers.has(t)) {\n handlers.set(t, new Set());\n }\n handlers.get(t)?.add(handler);\n }\n // Return unsubscribe function\n return () => {\n for (const t of types) {\n handlers.get(t)?.delete(handler);\n }\n };\n },\n };\n}\n","/**\n * Tool URN (Uniform Resource Name) - Phase 0 Primitive\n *\n * Provides stable, namespaced identifiers for tools across all surfaces\n * (API, MCP, OpenClaw, CLI). Replaces runtime `generateToolName()` with\n * design-time registry.\n *\n * URN Format: urn:${namespace}:${pluginId}:${capability}:${semver}\n *\n * Examples:\n * - urn:vreko:core:snapshot:1.0.0\n * - urn:openclaw:telegram:send-message:2.1.0\n * - urn:vreko:mcp:file-read:1.0.0\n *\n * @module primitives/tool-urn\n */\nimport { z } from \"zod\";\n/**\n * Valid URN namespaces\n * - vreko: Core Vreko tools\n * - openclaw: OpenClaw channel plugins\n * - community: Third-party community tools\n * - enterprise: Enterprise-only tools\n */\nexport const URN_NAMESPACES = [\"vreko\", \"openclaw\", \"community\", \"enterprise\"];\n/**\n * Semantic version schema (simplified for URN)\n */\nexport const SemverSchema = z\n .string()\n .regex(/^\\d+\\.\\d+\\.\\d+(?:-[\\w.]+)?$/, \"Invalid semver format. Expected: MAJOR.MINOR.PATCH[-prerelease]\");\n/**\n * Tool URN schema with validation\n */\nexport const ToolURNSchema = z\n .string()\n .regex(/^urn:(vreko|openclaw|community|enterprise):[\\w-]+:[\\w-]+:\\d+\\.\\d+\\.\\d+(?:-[\\w.]+)?$/, \"Invalid URN format. Expected: urn:{namespace}:{pluginId}:{capability}:{semver}\")\n .brand();\n/**\n * Parse a URN string into its components\n *\n * @param urn - URN string to parse\n * @returns Parsed URN components\n * @throws Error if URN is invalid\n *\n * @example\n * ```typescript\n * const parsed = parseURN(\"urn:vreko:core:snapshot:1.0.0\");\n * // { namespace: \"vreko\", pluginId: \"core\", capability: \"snapshot\", version: \"1.0.0\" }\n * ```\n */\nexport function parseURN(urn) {\n const validated = ToolURNSchema.parse(urn);\n const parts = validated.split(\":\");\n if (parts.length !== 5) {\n throw new Error(`Invalid URN structure: expected 5 parts, got ${parts.length}`);\n }\n const [, namespace, pluginId, capability, version] = parts;\n const majorVersion = Number.parseInt(version.split(\".\")[0], 10);\n return {\n urn: validated,\n namespace: namespace,\n pluginId,\n capability,\n version,\n majorVersion,\n };\n}\n/**\n * Build a URN from components\n *\n * @param options - URN components\n * @returns Validated URN string\n *\n * @example\n * ```typescript\n * const urn = buildURN({\n * namespace: \"vreko\",\n * pluginId: \"core\",\n * capability: \"snapshot\",\n * version: \"1.0.0\"\n * });\n * // \"urn:vreko:core:snapshot:1.0.0\"\n * ```\n */\nexport function buildURN(options) {\n const { namespace, pluginId, capability, version } = options;\n // Validate individual components\n if (!URN_NAMESPACES.includes(namespace)) {\n throw new Error(`Invalid namespace: ${namespace}. Must be one of: ${URN_NAMESPACES.join(\", \")}`);\n }\n if (!/^[\\w-]+$/.test(pluginId)) {\n throw new Error(`Invalid pluginId: ${pluginId}. Must contain only alphanumeric, underscore, or hyphen`);\n }\n if (!/^[\\w-]+$/.test(capability)) {\n throw new Error(`Invalid capability: ${capability}. Must contain only alphanumeric, underscore, or hyphen`);\n }\n SemverSchema.parse(version);\n const urn = `urn:${namespace}:${pluginId}:${capability}:${version}`;\n return ToolURNSchema.parse(urn);\n}\n/**\n * Check if a URN is valid\n *\n * @param urn - String to validate\n * @returns True if valid URN format\n */\nexport function isValidURN(urn) {\n const result = ToolURNSchema.safeParse(urn);\n return result.success;\n}\n/**\n * Check if two URNs are compatible (same major version)\n *\n * @param urn1 - First URN\n * @param urn2 - Second URN\n * @returns True if URNs have matching namespace, plugin, capability, and major version\n */\nexport function areURNsCompatible(urn1, urn2) {\n const parsed1 = parseURN(urn1);\n const parsed2 = parseURN(urn2);\n return (parsed1.namespace === parsed2.namespace &&\n parsed1.pluginId === parsed2.pluginId &&\n parsed1.capability === parsed2.capability &&\n parsed1.majorVersion === parsed2.majorVersion);\n}\n/**\n * Get the base URN without version (for registry lookups)\n *\n * @param urn - Full URN\n * @returns Base URN pattern\n *\n * @example\n * ```typescript\n * getBaseURN(\"urn:vreko:core:snapshot:1.0.0\")\n * // \"urn:vreko:core:snapshot\"\n * ```\n */\nexport function getBaseURN(urn) {\n const parsed = parseURN(urn);\n return `urn:${parsed.namespace}:${parsed.pluginId}:${parsed.capability}`;\n}\n/**\n * Resolve a URN pattern to the latest compatible version\n * Used when a client requests a capability without a specific version\n *\n * @param basePattern - Base URN without version (e.g., \"urn:vreko:core:snapshot\")\n * @param registry - Available URNs in registry\n * @returns Latest compatible URN or null if not found\n */\nexport function resolveLatestURN(basePattern, registry) {\n const matching = registry\n .filter((urn) => urn.startsWith(basePattern))\n .map((urn) => parseURN(urn))\n .sort((a, b) => {\n // Sort by version descending (latest first)\n const [aMajor, aMinor, aPatch] = a.version.split(\".\").map(Number);\n const [bMajor, bMinor, bPatch] = b.version.split(\".\").map(Number);\n if (aMajor !== bMajor) {\n return bMajor - aMajor;\n }\n if (aMinor !== bMinor) {\n return bMinor - aMinor;\n }\n return bPatch - aPatch;\n });\n return matching[0]?.urn ?? null;\n}\n/**\n * Extract namespace from URN (fast path for filtering)\n *\n * @param urn - URN string\n * @returns Namespace or null if invalid\n */\nexport function extractNamespace(urn) {\n const match = urn.match(/^urn:(vreko|openclaw|community|enterprise):/);\n return match ? match[1] : null;\n}\n/**\n * Create a URN pattern matcher for filtering\n *\n * @param pattern - Pattern with optional wildcards\n * @returns Matcher function\n *\n * @example\n * ```typescript\n * const matcher = createURNMatcher(\"urn:vreko:*:*:*\");\n * matcher(\"urn:vreko:core:snapshot:1.0.0\") // true\n * matcher(\"urn:openclaw:telegram:send:1.0.0\") // false\n * ```\n */\nexport function createURNMatcher(pattern) {\n // Convert pattern to regex\n const regexPattern = pattern\n .replace(/[.+?^${}()|[\\]\\\\]/g, \"\\\\$&\") // Escape special chars\n .replace(/\\*/g, \"[\\\\w.-]+\"); // Replace * with word chars including dots for version matching\n const regex = new RegExp(`^${regexPattern}$`);\n return (urn) => regex.test(urn);\n}\n","// ESM imports fixed for Node.js v22+\n/**\n * ToolInvocation - Phase 0 Unified Envelope Primitive\n *\n * Single envelope type for ALL tool invocations across all surfaces:\n * - API routes\n * - MCP server\n * - OpenClaw channels\n * - CLI commands\n * - VS Code extension\n *\n * This replaces scattered adapter/handler patterns with ONE translation point.\n *\n * Design Principles (from feedback review):\n * - ENVELOPE FIRST: Define primitive before handlers/adapters\n * - REDUCTIVE: Single type, not multiple translation layers\n * - VERIFY > ASSERT: Types enforce constraints, runtime validates\n *\n * @module primitives/tool-invocation\n */\nimport { z } from \"zod\";\nimport { ToolURNSchema } from \"./tool-urn.js\";\n/**\n * Agent runtime identifiers\n * Tracks which AI agent initiated the tool call\n */\nexport const AGENT_RUNTIMES = [\n \"claude-code\",\n \"cursor\",\n \"copilot\",\n \"openclaw\",\n \"windsurf\",\n \"cline\",\n \"aider\",\n \"continue\",\n \"unknown\",\n];\n/**\n * Sandbox isolation levels\n * Determines execution environment constraints\n */\nexport const SANDBOX_LEVELS = [\"none\", \"basic\", \"strict\", \"isolated\"];\n/**\n * Risk classification for tools\n * Determines required security gates and approval flows\n */\nexport const RISK_CLASSES = [\"safe\", \"low\", \"medium\", \"high\", \"critical\"];\n/**\n * Channel identifiers for multi-channel support\n */\nexport const CHANNELS = [\n \"api\",\n \"mcp\",\n \"vscode\",\n \"cli\",\n \"web\",\n \"whatsapp\",\n \"telegram\",\n \"discord\",\n \"slack\",\n \"teams\",\n \"matrix\",\n];\n/**\n * Session context - who is making the request\n */\nexport const SessionContextSchema = z.object({\n /** Channel through which request was made */\n channel: z.enum(CHANNELS),\n /** Workspace identifier (local path hash or cloud workspace ID) */\n workspaceId: z.string().min(1),\n /** Session ID for request correlation */\n sessionId: z.string().uuid(),\n /** OpenClaw session ID if bridged */\n openclawSessionId: z.string().optional(),\n /** Channel-specific user identifier */\n channelUserId: z.string().optional(),\n});\n/**\n * Identity context - entitlements and permissions\n */\nexport const IdentityContextSchema = z.object({\n /** User ID (authenticated) */\n userId: z.string().uuid().optional(),\n /** Anonymous identifier for unauthenticated requests */\n anonymousId: z.string().optional(),\n /** Current subscription tier */\n tier: z.enum([\"free\", \"pro\", \"team\", \"enterprise\"]).default(\"free\"),\n /** Enabled features for this user */\n features: z.array(z.string()).default([]),\n /** Pre-resolved entitlements (optional, can be fetched) */\n entitlements: z\n .object({\n tier: z.enum([\"free\", \"pro\", \"team\", \"enterprise\"]),\n features: z.array(z.string()),\n limits: z.record(z.string(), z.number().nullable()),\n })\n .optional(),\n /** API key identifier (if using API key auth) */\n apiKeyId: z.string().optional(),\n});\n/**\n * Tool specification - what tool is being invoked\n */\nexport const ToolSpecSchema = z.object({\n /** Tool URN (canonical identifier) */\n urn: ToolURNSchema,\n /** Tool risk classification */\n riskClass: z.enum(RISK_CLASSES),\n /** Required permissions to invoke this tool */\n requiredPermissions: z.array(z.string()).default([]),\n /** Required features (entitlement check) */\n requiredFeatures: z.array(z.string()).default([]),\n /** Minimum tier required */\n minTier: z.enum([\"free\", \"pro\", \"team\", \"enterprise\"]).optional(),\n});\n/**\n * Execution context - how to execute the tool\n */\nexport const ExecutionContextSchema = z.object({\n /** Agent runtime that initiated the call */\n agentRuntime: z.enum(AGENT_RUNTIMES).default(\"unknown\"),\n /** Required sandbox level */\n sandboxLevel: z.enum(SANDBOX_LEVELS).default(\"basic\"),\n /** Timeout in milliseconds */\n timeoutMs: z.number().positive().default(30000),\n /** Whether to auto-snapshot before execution */\n snapshotBefore: z.boolean().default(false),\n /** Maximum concurrent executions allowed */\n maxConcurrent: z.number().positive().default(1),\n /** Retry configuration */\n retry: z\n .object({\n maxAttempts: z.number().min(1).max(5).default(1),\n backoffMs: z.number().min(100).max(30000).default(1000),\n })\n .optional(),\n});\n/**\n * ToolInvocation - THE unified envelope for all tool calls\n *\n * This is the SINGLE primitive that flows through the entire ExecutionPipeline.\n * All adapters (API, MCP, OpenClaw) translate TO this type, never from it.\n */\nexport const ToolInvocationSchema = z.object({\n /** Unique trace ID for request correlation and audit */\n traceId: z.string().uuid(),\n /** Timestamp when invocation was created */\n createdAt: z.coerce.date().default(() => new Date()),\n /** Session context - channel and workspace */\n session: SessionContextSchema,\n /** Identity context - who and what permissions */\n identity: IdentityContextSchema,\n /** Tool specification - what tool and risk class */\n tool: ToolSpecSchema,\n /** Tool arguments (validated against tool's input schema) */\n args: z.record(z.string(), z.unknown()).default({}),\n /** Execution context - how to execute */\n context: ExecutionContextSchema,\n /**\n * Metadata for observability and debugging\n * Not used in execution logic, only for tracing\n */\n metadata: z\n .object({\n /** Source surface that created this invocation */\n source: z.string().optional(),\n /** Parent trace ID for nested calls */\n parentTraceId: z.string().uuid().optional(),\n /** Custom labels for filtering */\n labels: z.record(z.string(), z.string()).optional(),\n /** Original request payload hash (for audit) */\n requestHash: z.string().optional(),\n })\n .optional(),\n});\n/**\n * Pipeline step result - output from each pipeline step\n */\nexport const PipelineStepResultSchema = z.object({\n /** Step name */\n step: z.string(),\n /** Whether step passed */\n passed: z.boolean(),\n /** Duration in milliseconds */\n durationMs: z.number(),\n /** Error if step failed */\n error: z\n .object({\n code: z.string(),\n message: z.string(),\n details: z.unknown().optional(),\n })\n .optional(),\n /** Step-specific data */\n data: z.unknown().optional(),\n});\n/**\n * Execution result - final output from pipeline\n */\nexport const ExecutionResultSchema = z.object({\n /** Trace ID from invocation */\n traceId: z.string().uuid(),\n /** Whether execution succeeded */\n success: z.boolean(),\n /** Result data (if successful) */\n result: z.unknown().optional(),\n /** Error details (if failed) */\n error: z\n .object({\n code: z.string(),\n message: z.string(),\n step: z.string().optional(),\n details: z.unknown().optional(),\n })\n .optional(),\n /** Pipeline step results */\n steps: z.array(PipelineStepResultSchema),\n /** Total execution duration */\n durationMs: z.number(),\n /** Snapshot ID if created */\n snapshotId: z.string().optional(),\n /** Audit log ID */\n auditId: z.string().optional(),\n});\n/**\n * Create a ToolInvocation with defaults\n *\n * @param input - Partial invocation input\n * @returns Validated ToolInvocation\n *\n * @example\n * ```typescript\n * const invocation = createToolInvocation({\n * traceId: crypto.randomUUID(),\n * session: { channel: \"mcp\", workspaceId: \"ws_123\", sessionId: \"...\" },\n * identity: { tier: \"pro\" },\n * tool: { urn: \"urn:vreko:core:snapshot:1.0.0\", riskClass: \"low\" },\n * args: { reason: \"manual\" },\n * context: { agentRuntime: \"claude-code\" },\n * });\n * ```\n */\nexport function createToolInvocation(input) {\n return ToolInvocationSchema.parse(input);\n}\n/**\n * Validate a ToolInvocation (safe parse)\n *\n * @param input - Input to validate\n * @returns Result with success flag and data/error\n */\nexport function validateToolInvocation(input) {\n return ToolInvocationSchema.safeParse(input);\n}\n/**\n * Create minimal invocation for internal use\n * Requires only essential fields, uses safe defaults\n */\nexport function createMinimalInvocation(urn, args, options = {}) {\n return createToolInvocation({\n traceId: crypto.randomUUID(),\n session: {\n channel: options.channel ?? \"api\",\n workspaceId: options.workspaceId ?? \"local\",\n sessionId: crypto.randomUUID(),\n },\n identity: {\n tier: options.tier ?? \"free\",\n },\n tool: {\n urn,\n riskClass: \"low\", // Default, will be overridden by registry\n },\n args,\n context: {\n agentRuntime: options.agentRuntime ?? \"unknown\",\n },\n });\n}\n/**\n * Extract key identifiers from invocation for logging\n */\nexport function extractInvocationIds(invocation) {\n return {\n traceId: invocation.traceId,\n sessionId: invocation.session.sessionId,\n workspaceId: invocation.session.workspaceId,\n toolUrn: invocation.tool.urn,\n channel: invocation.session.channel,\n };\n}\n","// ESM imports fixed for Node.js v22+\n/**\n * ExecutionPipeline - 12-Step Tool Execution Engine\n *\n * Orchestrates tool invocations through a series of security, validation,\n * and execution steps. Emits CloudEvents at key lifecycle points for\n * observability and audit logging.\n *\n * Pipeline Steps:\n * 1. VALIDATE - Schema validation of invocation envelope\n * 2. AUTHENTICATE - Identity verification\n * 3. AUTHORIZE - Permission and entitlement checks (PDP/PEP)\n * 4. RATE_LIMIT - Rate limiting and quota checks\n * 5. PRE_SCAN - Security pre-scanning (secrets, threats)\n * 6. LEASE - File lease acquisition (multi-agent safety)\n * 7. SNAPSHOT - Pre-execution snapshot (if configured)\n * 8. EXECUTE - Tool execution\n * 9. POST_SCAN - Output validation and sanitization\n * 10. EGRESS - Privacy attestation and data filtering\n * 11. AUDIT - Audit log creation\n * 12. FINALIZE - Cleanup and lease release\n *\n * @module primitives/execution-pipeline\n */\nimport { z } from \"zod\";\nimport { createToolInvocationEvent, VrekoEventTypes } from \"./cloud-event.js\";\nimport { ExecutionResultSchema, extractInvocationIds, } from \"./tool-invocation.js\";\n/**\n * Pipeline step names in execution order\n */\nexport const PIPELINE_STEPS = [\n \"validate\",\n \"authenticate\",\n \"authorize\",\n \"rate_limit\",\n \"pre_scan\",\n \"lease\",\n \"snapshot\",\n \"execute\",\n \"post_scan\",\n \"egress\",\n \"audit\",\n \"finalize\",\n];\n/**\n * Default step handlers (placeholder implementations)\n * Real implementations would be injected via dependencies\n */\nconst defaultStepHandlers = {\n validate: async (invocation, _context) => {\n // Validate invocation structure (already validated by Zod on creation)\n const ids = extractInvocationIds(invocation);\n return {\n passed: true,\n data: { validated: true, ids },\n };\n },\n authenticate: async (invocation, _context) => {\n // Check if identity is present\n const hasIdentity = invocation.identity.userId || invocation.identity.anonymousId;\n if (!hasIdentity) {\n return {\n passed: false,\n error: {\n code: \"AUTH_REQUIRED\",\n message: \"Authentication required: no userId or anonymousId provided\",\n },\n };\n }\n return { passed: true, data: { authenticated: true } };\n },\n authorize: async (invocation, context) => {\n // Use injected policy evaluator if available\n if (context.dependencies?.evaluatePolicyFn) {\n const decision = await context.dependencies.evaluatePolicyFn(invocation);\n if (!decision.allowed) {\n return {\n passed: false,\n error: {\n code: \"POLICY_DENIED\",\n message: decision.reason || \"Policy evaluation denied access\",\n },\n };\n }\n }\n // Default: check tier against tool requirements\n const requiredTier = invocation.tool.minTier;\n const userTier = invocation.identity.tier;\n const tierOrder = [\"free\", \"pro\", \"team\", \"enterprise\"];\n if (requiredTier) {\n const userTierIndex = tierOrder.indexOf(userTier);\n const requiredTierIndex = tierOrder.indexOf(requiredTier);\n if (userTierIndex < requiredTierIndex) {\n return {\n passed: false,\n error: {\n code: \"TIER_REQUIRED\",\n message: `Tool requires ${requiredTier} tier, user has ${userTier}`,\n },\n };\n }\n }\n return { passed: true, data: { authorized: true } };\n },\n rate_limit: async (invocation, context) => {\n if (context.dependencies?.checkRateLimitFn) {\n const key = `${invocation.session.workspaceId}:${invocation.tool.urn}`;\n const result = await context.dependencies.checkRateLimitFn(key, 100, 60000);\n if (!result.allowed) {\n return {\n passed: false,\n error: {\n code: \"RATE_LIMITED\",\n message: `Rate limit exceeded. Resets in ${result.resetMs}ms`,\n details: { remaining: result.remaining, resetMs: result.resetMs },\n },\n };\n }\n return { passed: true, data: { remaining: result.remaining } };\n }\n return { passed: true, data: { skipped: true } };\n },\n pre_scan: async (invocation, context) => {\n if (context.dependencies?.preScanFn) {\n const result = await context.dependencies.preScanFn(invocation.args);\n if (!result.passed) {\n return {\n passed: false,\n error: {\n code: \"PRE_SCAN_FAILED\",\n message: \"Security pre-scan detected threats\",\n details: { threats: result.threats },\n },\n };\n }\n return { passed: true, data: { scanned: true, threats: [] } };\n }\n return { passed: true, data: { skipped: true } };\n },\n lease: async (invocation, context) => {\n // Only acquire lease if files are being modified\n const files = invocation.args.files;\n if (!files?.length || !context.dependencies?.acquireLeaseFn) {\n return { passed: true, data: { skipped: true, leaseId: null } };\n }\n const result = await context.dependencies.acquireLeaseFn(invocation.session.workspaceId, files, invocation.context.timeoutMs);\n if (!result.acquired) {\n return {\n passed: false,\n error: {\n code: \"LEASE_CONFLICT\",\n message: \"Failed to acquire file lease - files may be locked by another agent\",\n details: { files },\n },\n };\n }\n return { passed: true, data: { leaseId: result.leaseId } };\n },\n snapshot: async (invocation, context) => {\n if (!invocation.context.snapshotBefore || !context.dependencies?.createSnapshotFn) {\n return { passed: true, data: { skipped: true, snapshotId: undefined } };\n }\n try {\n const snapshotId = await context.dependencies.createSnapshotFn(invocation.session.workspaceId, `Pre-execution snapshot for ${invocation.tool.urn}`);\n return { passed: true, data: { snapshotId } };\n }\n catch (error) {\n // Snapshot failure is non-critical\n return {\n passed: true,\n data: { snapshotId: undefined, error: String(error) },\n };\n }\n },\n execute: async (invocation, context) => {\n if (!context.dependencies?.executeToolFn) {\n return {\n passed: false,\n error: {\n code: \"NO_EXECUTOR\",\n message: \"No tool executor configured\",\n },\n };\n }\n try {\n const result = await context.dependencies.executeToolFn(invocation.tool.urn, invocation.args);\n return { passed: true, data: { result } };\n }\n catch (error) {\n return {\n passed: false,\n error: {\n code: \"EXECUTION_FAILED\",\n message: error instanceof Error ? error.message : String(error),\n details: { error },\n },\n };\n }\n },\n post_scan: async (_invocation, context) => {\n const executeData = context.stepData.get(\"execute\");\n if (!executeData?.result || !context.dependencies?.postScanFn) {\n return { passed: true, data: { skipped: true } };\n }\n const scanResult = await context.dependencies.postScanFn(executeData.result);\n if (!scanResult.passed) {\n return {\n passed: false,\n error: {\n code: \"POST_SCAN_FAILED\",\n message: \"Output validation failed\",\n },\n };\n }\n // Update execute data with sanitized result\n context.stepData.set(\"execute\", { result: scanResult.sanitized });\n return { passed: true, data: { sanitized: true } };\n },\n egress: async (_invocation, _context) => {\n // Placeholder for privacy attestation and data filtering\n // Will be implemented in Phase 4\n return { passed: true, data: { attested: true } };\n },\n audit: async (invocation, context) => {\n if (!context.dependencies?.createAuditLogFn) {\n return { passed: true, data: { skipped: true, auditId: undefined } };\n }\n try {\n const executeData = context.stepData.get(\"execute\");\n const auditId = await context.dependencies.createAuditLogFn(invocation, executeData?.result);\n return { passed: true, data: { auditId } };\n }\n catch (error) {\n // Audit failure is logged but non-critical\n return {\n passed: true,\n data: { auditId: undefined, error: String(error) },\n };\n }\n },\n finalize: async (_invocation, context) => {\n // Release any acquired leases\n const leaseData = context.stepData.get(\"lease\");\n if (leaseData?.leaseId && context.dependencies?.releaseLeaseFn) {\n try {\n await context.dependencies.releaseLeaseFn(leaseData.leaseId);\n }\n catch (_error) {\n // Lease release failure is logged but non-critical\n }\n }\n return { passed: true, data: { finalized: true } };\n },\n};\n/**\n * Critical steps that must pass for pipeline to continue\n */\nconst CRITICAL_STEPS = new Set([\n \"validate\",\n \"authenticate\",\n \"authorize\",\n \"rate_limit\",\n \"pre_scan\",\n \"lease\",\n \"execute\",\n]);\n/**\n * ExecutionPipeline - Main pipeline orchestrator\n *\n * Executes tool invocations through a 12-step security and execution pipeline,\n * emitting CloudEvents at key lifecycle points.\n */\nexport class ExecutionPipeline {\n config;\n stepHandlers;\n constructor(config = {}) {\n this.config = {\n skipSteps: config.skipSteps ?? [],\n stepHandlers: config.stepHandlers ?? {},\n timeoutMs: config.timeoutMs ?? 60000,\n continueOnNonCriticalFailure: config.continueOnNonCriticalFailure ?? true,\n eventEmitter: config.eventEmitter ?? undefined,\n };\n // Merge custom handlers with defaults\n this.stepHandlers = {\n ...defaultStepHandlers,\n ...config.stepHandlers,\n };\n }\n /**\n * Execute a tool invocation through the pipeline\n */\n async execute(invocation, dependencies) {\n const startTime = performance.now();\n const context = {\n startTime,\n stepResults: new Map(),\n stepData: new Map(),\n eventEmitter: this.config.eventEmitter,\n dependencies,\n };\n // Emit invocation started event\n await this.emitEvent(VrekoEventTypes.TOOL_INVOCATION_STARTED, invocation, {\n urn: invocation.tool.urn,\n riskClass: invocation.tool.riskClass,\n channel: invocation.session.channel,\n });\n const steps = [];\n let currentInvocation = invocation;\n let pipelinePassed = true;\n let failedStep;\n let failureError;\n // Execute each step\n for (const stepName of PIPELINE_STEPS) {\n // Skip if configured to skip\n if (this.config.skipSteps.includes(stepName)) {\n steps.push({\n step: stepName,\n passed: true,\n durationMs: 0,\n data: { skipped: true },\n });\n continue;\n }\n const stepStart = performance.now();\n const handler = this.stepHandlers[stepName];\n try {\n const result = await handler(currentInvocation, context);\n const stepDuration = performance.now() - stepStart;\n const stepResult = {\n step: stepName,\n passed: result.passed,\n durationMs: stepDuration,\n error: result.error,\n data: result.data,\n };\n steps.push(stepResult);\n context.stepResults.set(stepName, stepResult);\n if (result.data) {\n context.stepData.set(stepName, result.data);\n }\n if (result.modifiedInvocation) {\n currentInvocation = result.modifiedInvocation;\n }\n if (!result.passed) {\n const isCritical = CRITICAL_STEPS.has(stepName);\n if (isCritical || !this.config.continueOnNonCriticalFailure) {\n pipelinePassed = false;\n failedStep = stepName;\n failureError = result.error;\n // Emit appropriate failure event\n if (stepName === \"authorize\" || stepName === \"rate_limit\") {\n await this.emitEvent(VrekoEventTypes.TOOL_INVOCATION_DENIED, invocation, {\n reason: result.error?.code ?? \"DENIED\",\n step: stepName,\n policyDecision: result.error,\n });\n }\n else {\n await this.emitEvent(VrekoEventTypes.TOOL_INVOCATION_FAILED, invocation, {\n step: stepName,\n error: result.error,\n });\n }\n break;\n }\n }\n }\n catch (error) {\n const stepDuration = performance.now() - stepStart;\n const errorObj = {\n code: \"STEP_ERROR\",\n message: error instanceof Error ? error.message : String(error),\n details: { error },\n };\n steps.push({\n step: stepName,\n passed: false,\n durationMs: stepDuration,\n error: errorObj,\n });\n if (CRITICAL_STEPS.has(stepName)) {\n pipelinePassed = false;\n failedStep = stepName;\n failureError = errorObj;\n await this.emitEvent(VrekoEventTypes.TOOL_INVOCATION_FAILED, invocation, {\n step: stepName,\n error: errorObj,\n });\n break;\n }\n }\n }\n const totalDuration = performance.now() - startTime;\n // Build execution result\n const executeData = context.stepData.get(\"execute\");\n const snapshotData = context.stepData.get(\"snapshot\");\n const auditData = context.stepData.get(\"audit\");\n const executionResult = {\n traceId: invocation.traceId,\n success: pipelinePassed,\n result: pipelinePassed ? executeData?.result : undefined,\n error: pipelinePassed\n ? undefined\n : {\n code: failureError?.code ?? \"PIPELINE_FAILED\",\n message: failureError?.message ?? \"Pipeline execution failed\",\n step: failedStep,\n details: failureError?.details,\n },\n steps,\n durationMs: totalDuration,\n snapshotId: snapshotData?.snapshotId,\n auditId: auditData?.auditId,\n };\n // Emit completion event\n if (pipelinePassed) {\n await this.emitEvent(VrekoEventTypes.TOOL_INVOCATION_COMPLETED, invocation, {\n durationMs: totalDuration,\n result: executeData?.result,\n });\n }\n return ExecutionResultSchema.parse(executionResult);\n }\n /**\n * Emit a CloudEvent\n */\n async emitEvent(type, invocation, data) {\n if (!this.config.eventEmitter) {\n return;\n }\n const event = createToolInvocationEvent({\n traceId: invocation.traceId,\n source: \"vreko:execution-pipeline\",\n type: type,\n toolUrn: invocation.tool.urn,\n workspaceId: invocation.session.workspaceId,\n sessionId: invocation.session.sessionId,\n userId: invocation.identity.userId,\n riskClass: invocation.tool.riskClass,\n sandboxed: invocation.context.sandboxLevel !== \"none\",\n data,\n });\n await this.config.eventEmitter.emit(event);\n }\n}\n/**\n * Create a new ExecutionPipeline instance\n */\nexport function createExecutionPipeline(config) {\n return new ExecutionPipeline(config);\n}\n/**\n * Schema for pipeline configuration (for API validation)\n */\nexport const PipelineConfigSchema = z.object({\n skipSteps: z.array(z.enum(PIPELINE_STEPS)).optional(),\n timeoutMs: z.number().positive().optional(),\n continueOnNonCriticalFailure: z.boolean().optional(),\n});\n","/**\n * File Lease Primitives\n *\n * Types and utilities for multi-agent file coordination.\n * Prevents concurrent modifications to the same files by different agents.\n *\n * The lease system ensures:\n * 1. Only one agent can modify a file at a time\n * 2. Leases have TTL to prevent deadlocks\n * 3. Leases can be extended if work takes longer\n * 4. Conflicts are detected before execution begins\n *\n * @module primitives/file-lease\n */\nimport { z } from \"zod\";\nimport { AGENT_RUNTIMES } from \"./tool-invocation.js\";\n/**\n * Lease acquisition result\n */\nexport const LeaseResultSchema = z.object({\n /** Whether the lease was acquired */\n acquired: z.boolean(),\n /** Lease ID if acquired */\n leaseId: z.string().optional(),\n /** Reason if not acquired */\n reason: z.string().optional(),\n /** Conflicting leases if acquisition failed */\n conflicts: z\n .array(z.object({\n leaseId: z.string(),\n files: z.array(z.string()),\n heldBy: z.object({\n agentRuntime: z.enum(AGENT_RUNTIMES),\n sessionId: z.string(),\n }),\n expiresAt: z.coerce.date(),\n }))\n .optional(),\n});\n/**\n * Conflict detection result\n */\nexport const ConflictResultSchema = z.object({\n /** Whether there are conflicts */\n hasConflicts: z.boolean(),\n /** Conflicting files grouped by lease */\n conflicts: z.array(z.object({\n leaseId: z.string(),\n files: z.array(z.string()),\n heldBy: z.object({\n agentRuntime: z.enum(AGENT_RUNTIMES),\n sessionId: z.string(),\n }),\n expiresAt: z.coerce.date(),\n /** Whether this conflict is blocking (cannot proceed) */\n blocking: z.boolean(),\n })),\n /** Files that are safe to modify */\n safeFiles: z.array(z.string()),\n /** Files that are blocked */\n blockedFiles: z.array(z.string()),\n});\n/**\n * File lease record\n */\nexport const FileLeaseSchema = z.object({\n /** Unique lease identifier */\n leaseId: z.string(),\n /** Workspace this lease belongs to */\n workspaceId: z.string(),\n /** Files covered by this lease */\n files: z.array(z.string()),\n /** Agent that holds this lease */\n agentRuntime: z.enum(AGENT_RUNTIMES),\n /** Session that holds this lease */\n sessionId: z.string(),\n /** Trace ID for correlation */\n traceId: z.string().optional(),\n /** When the lease was acquired */\n acquiredAt: z.coerce.date(),\n /** When the lease expires */\n expiresAt: z.coerce.date(),\n /** Time-to-live in milliseconds */\n ttlMs: z.number().positive(),\n /** Whether the lease is still active */\n active: z.boolean().default(true),\n /** Number of times the lease has been extended */\n extensionCount: z.number().default(0),\n});\n/**\n * Default lease TTL (30 seconds)\n * Should be long enough for most operations but short enough to recover from crashes\n */\nexport const DEFAULT_LEASE_TTL_MS = 30_000;\n/**\n * Maximum lease TTL (5 minutes)\n * Prevents indefinite locks\n */\nexport const MAX_LEASE_TTL_MS = 300_000;\n/**\n * Maximum lease extensions allowed\n * Prevents infinite extension loops\n */\nexport const MAX_LEASE_EXTENSIONS = 10;\n/**\n * Generate a unique lease ID\n */\nexport function generateLeaseId() {\n return `lease_${Date.now()}_${Math.random().toString(36).slice(2, 10)}`;\n}\n/**\n * Check if a lease has expired\n */\nexport function isLeaseExpired(lease) {\n return !lease.active || new Date() > lease.expiresAt;\n}\n/**\n * Calculate remaining TTL for a lease\n */\nexport function getRemainingTtl(lease) {\n const remaining = lease.expiresAt.getTime() - Date.now();\n return Math.max(0, remaining);\n}\n/**\n * Normalize file paths for comparison\n * Removes trailing slashes, normalizes separators\n */\nexport function normalizeFilePath(path) {\n return path.replace(/\\\\/g, \"/\").replace(/\\/+$/, \"\").toLowerCase();\n}\n/**\n * Check if two file sets overlap\n */\nexport function filesOverlap(files1, files2) {\n const normalized1 = new Set(files1.map(normalizeFilePath));\n const normalized2 = files2.map(normalizeFilePath);\n return normalized2.filter((f) => normalized1.has(f));\n}\n","/**\n * Tier upgrade saga definition (registered with orchestrator)\n */\nexport const TIER_UPGRADE_SAGA = {\n sagaType: \"tier_upgrade\",\n maxRetries: 3,\n persistenceInterval: 1000, // Persist every second during execution\n steps: [\n {\n stepId: \"update_subscription\",\n stepName: \"Update Subscription in Payment Provider\",\n execute: async (_input) => {\n // Implementation in billing service\n throw new Error(\"Not implemented - to be injected\");\n },\n compensate: async (_input, output) => {\n // Refund/cancel subscription change\n const typedOutput = output;\n if (typedOutput?.subscriptionId) {\n // await billingService.revertSubscription(typedOutput.subscriptionId, null);\n }\n },\n retryable: true,\n timeout: 30000, // Payment provider calls can be slow\n },\n {\n stepId: \"update_user_tier\",\n stepName: \"Update User Tier in Database\",\n execute: async (_input) => {\n // Implementation in user service\n throw new Error(\"Not implemented - to be injected\");\n },\n compensate: async (_input, output) => {\n // Revert user tier\n const typedOutput = output;\n if (typedOutput?.previousTier) {\n // await userService.updateTier(null, typedOutput.previousTier);\n }\n },\n retryable: true,\n timeout: 5000,\n },\n {\n stepId: \"update_entitlements\",\n stepName: \"Update Entitlements with New Tier Features\",\n execute: async (_input) => {\n // Implementation in entitlements service\n throw new Error(\"Not implemented - to be injected\");\n },\n compensate: async (_input, output) => {\n // Revert entitlements to previous version\n const typedOutput = output;\n if (typedOutput?.previousVersion !== undefined) {\n // await entitlementsService.revertToVersion(null, typedOutput.previousVersion);\n }\n },\n retryable: true,\n timeout: 5000,\n },\n {\n stepId: \"send_confirmation\",\n stepName: \"Send Upgrade Confirmation Email\",\n execute: async (_input) => {\n // Implementation in email service\n throw new Error(\"Not implemented - to be injected\");\n },\n compensate: async (_input, output) => {\n // Cancel email if scheduled but not sent\n const typedOutput = output;\n if (typedOutput?.emailJobId) {\n // await emailService.cancelJob(typedOutput.emailJobId);\n }\n },\n retryable: true,\n timeout: 10000,\n },\n {\n stepId: \"emit_event\",\n stepName: \"Emit Tier Upgraded Event\",\n execute: async (_input) => {\n // Implementation in event bus\n throw new Error(\"Not implemented - to be injected\");\n },\n // No compensation needed for events (idempotent)\n retryable: false,\n timeout: 3000,\n },\n ],\n};\n","import { z } from \"zod\";\nimport { RiskSeveritySchema } from \"./types/analysis.js\";\nexport const DiffChangeSchema = z.object({\n added: z.boolean().optional().default(false),\n removed: z.boolean().optional().default(false),\n value: z.string(),\n count: z.number().optional(),\n});\n/**\n * Risk score schema using standardized 0-10 scale\n *\n * This is the canonical risk scoring schema used across all Vreko components.\n * The 0-10 scale provides:\n * - Intuitive 1-10 rating (familiar to users)\n * - Better granularity than 0-1\n * - More practical than 0-100\n * - Aligns with industry standards (CVE scores use 0-10)\n * - Matches THRESHOLDS configuration (risk.blockingThreshold: 8.0, etc.)\n *\n * Severity mappings:\n * - low: 0 - 2.9\n * - medium: 3.0 - 4.9\n * - high: 5.0 - 6.9\n * - critical: 7.0 - 10.0\n *\n * For backward compatibility with 0-1 scale, use conversion utilities from risk-conversion.ts\n */\n/** Full risk score object (score + factors + severity). Renamed from RiskScoreSchema to avoid collision with the\n * scalar number schema in types/risk.ts. Import directly from schemas.ts or use the RiskScoreDetail alias. */\nexport const RiskScoreDetailSchema = z.object({\n score: z.number().min(0).max(10),\n factors: z.array(z.string()),\n severity: RiskSeveritySchema,\n});\n// =============================================================================\n// ADR-004: Snapshot types consolidated in types/snapshot.ts\n// The following canonical types are now exported from types/snapshot.ts:\n// - SnapshotSchema, Snapshot, SnapshotInput\n// - FileMetadataSchema, FileMetadata\n// - SnapshotMetadataSchema, SnapshotMetadata\n// Import from @vreko/contracts for these types.\n// =============================================================================\nexport const AnalyticsResponseSchema = z.object({\n metrics: z.record(z.string(), z.number()),\n trends: z.record(z.string(), z.array(z.number())),\n insights: z.array(z.string()),\n timestamp: z.number(),\n snapshotRecommendations: z\n .object({\n shouldCreateSnapshot: z.boolean(),\n reason: z.string(),\n urgency: RiskSeveritySchema,\n suggestedTiming: z.string(),\n })\n .optional(),\n});\nexport const CreateSnapshotArgsSchema = z.object({\n trigger: z.string().default(\"manual\"),\n risk: z.number().min(0).max(10).optional(),\n content: z.string().optional(),\n files: z.array(z.string()).optional(),\n});\nexport const CreateCheckpointArgsSchema = z.object({\n trigger: z.string().default(\"manual\"),\n risk: z.number().min(0).max(10).optional(),\n content: z.string().optional(),\n});\nexport const CheckpointSchema = z.object({\n id: z.string(),\n timestamp: z.number(),\n meta: z\n .object({\n trigger: z.string().optional(),\n risk: z.number().optional(),\n })\n .optional(),\n});\nexport const AnalyzeRiskArgsSchema = z.object({\n changes: z.array(DiffChangeSchema),\n});\nexport const DepQuickArgsSchema = z.object({\n before: z.record(z.string(), z.any()),\n after: z.record(z.string(), z.any()),\n});\nexport const CommonErrorSchema = z.object({\n message: z.string(),\n code: z.string().optional(),\n details: z.any().optional(),\n});\n// MCP Configuration Schemas\nexport const RetrySchema = z.object({\n retries: z.number().int().min(0).default(2),\n factor: z.number().min(1).default(2),\n min: z.number().int().default(250),\n max: z.number().int().default(1500),\n jitter: z.boolean().default(true),\n});\nexport const CircuitSchema = z.object({\n enabled: z.boolean().default(true),\n errorThresholdPercentage: z.number().int().min(1).max(100).default(50),\n volumeThreshold: z.number().int().min(1).default(10),\n timeoutMs: z.number().int().default(5000),\n resetMs: z.number().int().default(30000),\n rollingCountMs: z.number().int().default(60000),\n rollingCountBuckets: z.number().int().default(6),\n});\nexport const McpSchema = z.object({\n timeoutMs: z.number().int().default(5000),\n maxConcurrent: z.number().int().min(1).default(4),\n retry: RetrySchema,\n circuit: CircuitSchema,\n batch: z.object({\n size: z.number().int().min(1).default(5),\n maxWaitMs: z.number().int().default(150),\n }),\n});\nexport const WatcherSchema = z.object({\n debounceMs: z.number().int().default(120),\n awaitWriteFinish: z.object({\n stabilityThreshold: z.number().int().default(200),\n pollInterval: z.number().int().default(50),\n }),\n ignored: z.array(z.string()).default([\"**/{node_modules,.git,.vscode,dist,.next,.nuxt,coverage}/**\"]),\n});\n","import { z } from \"zod\";\n/**\n * Session Layer Contracts\n *\n * Sessions are metadata overlays on the snapshot infrastructure that provide:\n * - Contextual grouping of file changes during logical work periods\n * - Selective rollback capabilities for session-scoped changes\n * - Privacy-safe analytics without exposing file contents\n *\n * Design Principles:\n * - Sessions reference Content-Addressable Storage (CAS) blobs via SHA-256 hashes\n * - No duplicate storage - all file content lives in CAS\n * - POSIX path normalization for cross-platform compatibility\n * - Lazy hash computation for <50ms tracking performance\n */\n/**\n * Session schema version for backward compatibility\n */\nexport const SessionSchemaVersion = \"sb.session.v1\";\n/**\n * File change operation types\n */\nexport const ChangeOpSchema = z.enum([\"created\", \"modified\", \"deleted\", \"renamed\"]);\n/**\n * Line ending types for cross-platform consistency\n */\nexport const EOLTypeSchema = z.enum([\"lf\", \"crlf\"]);\n/**\n * Session trigger sources for analytics\n */\nexport const SessionTriggerSchema = z.enum([\"filewatch\", \"pre-commit\", \"manual\", \"idle-finalize\"]);\n/**\n * Individual file change within a session\n *\n * Captures metadata and CAS references for efficient storage.\n * Hashes (hOld/hNew) are computed lazily during session finalization.\n *\n * Path normalization:\n * - Always relative to workspace root\n * - Always POSIX-style (forward slashes) even on Windows\n * - Example: \"src/auth/login.ts\" (not \"src\\\\auth\\\\login.ts\")\n */\nexport const SessionChangeSchema = z.object({\n /** Relative POSIX path from workspace root */\n p: z.string(),\n /** Operation type */\n op: ChangeOpSchema,\n /** Prior relative path (for rename operations only) */\n from: z.string().optional(),\n /** SHA-256 hash before change (CAS reference) - computed on finalize */\n hOld: z.string().optional(),\n /** SHA-256 hash after change (CAS reference) - computed on finalize */\n hNew: z.string().optional(),\n /** File size before change (bytes) */\n sizeBefore: z.number().int().nonnegative().optional(),\n /** File size after change (bytes) */\n sizeAfter: z.number().int().nonnegative().optional(),\n /** Modification time before change (Unix epoch ms) */\n mtimeBefore: z.number().int().nonnegative().optional(),\n /** Modification time after change (Unix epoch ms) */\n mtimeAfter: z.number().int().nonnegative().optional(),\n /** File permissions before change (Unix mode) */\n modeBefore: z.number().int().nonnegative().optional(),\n /** File permissions after change (Unix mode) */\n modeAfter: z.number().int().nonnegative().optional(),\n /** Line ending style before change */\n eolBefore: EOLTypeSchema.optional(),\n /** Line ending style after change */\n eolAfter: EOLTypeSchema.optional(),\n});\n/**\n * Complete session manifest with all metadata and changes\n *\n * Sessions track logical work periods and link to snapshots created during\n * that period. The `name` field is generated offline (never transmitted) and\n * used only for UI display.\n *\n * Privacy guarantees:\n * - workspaceUri is stored locally only (never transmitted)\n * - name is generated offline (never transmitted)\n * - Only changeCount and triggers are sent to analytics (no file paths)\n */\nexport const SessionManifestV1Schema = z.object({\n /** Schema version for backward compatibility */\n schema: z.literal(SessionSchemaVersion),\n /** Unique session identifier (CUID) */\n sessionId: z.string(),\n /** Session start timestamp (ISO 8601) */\n startedAt: z.string().datetime(),\n /** Session end timestamp (ISO 8601) - undefined if active */\n endedAt: z.string().datetime().optional(),\n /** VS Code workspace folder URI (multi-root workspace safe) */\n workspaceUri: z.string(),\n /** Offline-generated semantic label (never transmitted) */\n name: z.string().optional(),\n /** Trigger sources for this session */\n triggers: z.array(SessionTriggerSchema),\n /** Total number of file changes in this session */\n changeCount: z.number().int().nonnegative(),\n /** Chronological list of file changes */\n filesChanged: z.array(SessionChangeSchema),\n /** Array of snapshot IDs created during this session */\n snapshots: z.array(z.string()).optional(),\n});\n/**\n * Minimal session data for list views\n */\nexport const SessionSummarySchema = z.object({\n sessionId: z.string(),\n startedAt: z.string().datetime(),\n endedAt: z.string().datetime().optional(),\n name: z.string().optional(),\n changeCount: z.number().int().nonnegative(),\n triggers: z.array(SessionTriggerSchema),\n});\n/**\n * Session filters for querying\n */\nexport const SessionFiltersSchema = z.object({\n /** Only return sessions for this workspace URI */\n workspaceUri: z.string().optional(),\n /** Only return active sessions (endedAt is null) */\n activeOnly: z.boolean().optional(),\n /** Only return finalized sessions (endedAt is not null) */\n finalizedOnly: z.boolean().optional(),\n /** Return sessions that started after this timestamp */\n after: z.date().optional(),\n /** Return sessions that started before this timestamp */\n before: z.date().optional(),\n /** Maximum number of results */\n limit: z.number().int().positive().optional(),\n /** Offset for pagination */\n offset: z.number().int().nonnegative().optional(),\n});\n/**\n * Session creation options\n */\nexport const CreateSessionOptionsSchema = z.object({\n /** VS Code workspace folder URI */\n workspaceUri: z.string(),\n /** Initial trigger sources */\n triggers: z.array(SessionTriggerSchema).default([\"filewatch\"]),\n /** Optional semantic name (generated offline) */\n name: z.string().optional(),\n});\n/**\n * Session manager configuration\n */\nexport const SessionManagerConfigSchema = z.object({\n /** VS Code workspace folder URI (multi-root safe) */\n workspaceUri: z.string(),\n /** Idle timeout in milliseconds (default: 15 minutes) */\n idleMs: z\n .number()\n .int()\n .positive()\n .default(15 * 60_000),\n /** Batch size for flushing changes to database (default: 50) */\n flushBatchSize: z.number().int().positive().default(50),\n /** Flush interval in milliseconds (default: 5 seconds) */\n flushIntervalMs: z.number().int().positive().default(5000),\n /** Use VS Code file system watcher (default: true) */\n useVSCodeWatcher: z.boolean().default(true),\n /** Patterns to ignore (.vrekoignore) */\n ignorePatterns: z\n .array(z.string())\n .default([\n \"node_modules/**\",\n \".next/**\",\n \"dist/**\",\n \"build/**\",\n \"coverage/**\",\n \".git/**\",\n \"*.log\",\n \"*.tmp\",\n \"*.swp\",\n \".DS_Store\",\n ]),\n /** @enterprise User tier (for analytics) */\n tier: z.enum([\"free\", \"pro\"]).default(\"free\"),\n /** @enterprise Analytics consent (Pro tier only) */\n consent: z.boolean().default(false),\n});\n/**\n * Trigger bitmask encoding for database storage\n *\n * Bit 0 (1): filewatch\n * Bit 1 (2): pre-commit\n * Bit 2 (4): manual\n * Bit 3 (8): idle-finalize\n *\n * Example: bitmask = 5 → filewatch (1) + manual (4)\n */\nexport function encodeTriggerBitmask(triggers) {\n let mask = 0;\n for (const trigger of triggers) {\n switch (trigger) {\n case \"filewatch\":\n mask |= 1;\n break;\n case \"pre-commit\":\n mask |= 2;\n break;\n case \"manual\":\n mask |= 4;\n break;\n case \"idle-finalize\":\n mask |= 8;\n break;\n }\n }\n return mask;\n}\n/**\n * Decode trigger bitmask to array of trigger types\n */\nexport function decodeTriggerBitmask(mask) {\n const triggers = [];\n if (mask & 1) {\n triggers.push(\"filewatch\");\n }\n if (mask & 2) {\n triggers.push(\"pre-commit\");\n }\n if (mask & 4) {\n triggers.push(\"manual\");\n }\n if (mask & 8) {\n triggers.push(\"idle-finalize\");\n }\n return triggers;\n}\n","import { z } from \"zod\";\n// =============================================================================\n// ZOD SCHEMAS\n// =============================================================================\nexport const SessionFileSummarySchema = z.object({\n path: z.string().min(1),\n operation: z.enum([\"create\", \"modify\", \"delete\", \"rename\"]),\n riskScore: z.number().min(0).max(10),\n aiAttributed: z.boolean(),\n aiTool: z.string().optional(),\n aiConfidence: z.number().min(0).max(1).optional(),\n serviceTag: z.string().optional(),\n});\nexport const RiskTimelineEntrySchema = z.object({\n timestamp: z.string().datetime(),\n riskScore: z.number().min(0).max(10),\n trigger: z.enum([\"file_change\", \"ai_detection\", \"pattern_match\"]),\n fileCount: z.number().int().nonnegative(),\n});\nexport const RollbackEventSummarySchema = z.object({\n timestamp: z.string().datetime(),\n snapshotId: z.string().min(1),\n triggerReason: z.enum([\"user_initiated\", \"auto_threshold\", \"policy_rule\"]),\n filesRestored: z.number().int().nonnegative(),\n filesAffected: z.array(z.string()),\n riskScoreAtTrigger: z.number().min(0).max(10),\n});\nexport const AIToolAttributionSchema = z.object({\n tool: z.enum([\"cursor\", \"copilot\", \"windsurf\", \"claude\", \"unknown\"]),\n confidence: z.number().min(0).max(1),\n changesAttributed: z.number().int().nonnegative(),\n});\nexport const ConsentSnapshotSchema = z.object({\n personalSyncEnabled: z.boolean(),\n sharedLearningEnabled: z.boolean(),\n consentedAt: z.string().datetime(),\n promptVersion: z.string().min(1),\n});\nexport const BaseSessionPayloadSchema = z.object({\n externalSessionId: z.string().min(1),\n workspaceId: z.string().min(1),\n schemaVersion: z.literal(\"sb.base.v1\"),\n startedAt: z.string().datetime(),\n endedAt: z.string().datetime(),\n durationMs: z.number().int().nonnegative(),\n consentSnapshot: ConsentSnapshotSchema,\n filesTouched: z.array(SessionFileSummarySchema),\n serviceBoundariesCrossed: z.number().int().nonnegative(),\n peakRiskScore: z.number().min(0).max(10),\n riskScoreTimeline: z.array(RiskTimelineEntrySchema),\n riskEventCount: z.number().int().nonnegative(),\n rollbackEvents: z.array(RollbackEventSummarySchema),\n aiToolsActive: z.array(AIToolAttributionSchema),\n aiAttributedChangeRatio: z.number().min(0).max(1),\n});\n","/**\n * File Modification Contracts\n *\n * Canonical type for real-time file modification tracking across all surfaces:\n * - VS Code Extension (records modifications on save)\n * - MCP Server (queries modifications for what_changed)\n * - CLI Daemon (receives modifications from extension)\n * - Intelligence package (stores and queries modifications)\n *\n * Design Decisions:\n * - 'path' (not 'file') - consistent with Node.js/VS Code conventions\n * - 'update' (not 'modified') - matches VS Code file system events\n * - 'source' required - enables debugging cross-surface issues\n * - AI attribution optional - graceful when detection unavailable\n */\nimport { z } from \"zod\";\n/**\n * Source surfaces that can record file modifications\n */\nexport const ModificationSourceSchema = z.enum([\"extension\", \"mcp\", \"daemon\", \"cli\"]);\n/**\n * File modification operation types\n * - create: New file created\n * - update: Existing file modified\n * - delete: File deleted\n */\nexport const ModificationTypeSchema = z.enum([\"create\", \"update\", \"delete\"]);\n/**\n * Canonical file modification type used across all surfaces.\n *\n * All fields with sensible defaults to minimize required data at recording time.\n */\nexport const FileModificationSchema = z.object({\n /** Absolute path to the modified file */\n path: z.string().min(1, \"Path cannot be empty\"),\n /** Modification timestamp (ms since epoch) */\n timestamp: z.number().positive(\"Timestamp must be positive\"),\n /** Type of modification */\n type: ModificationTypeSchema,\n /** Lines changed (0 if unknown or delete) */\n linesChanged: z.number().int().nonnegative().default(0),\n /** Whether this change was AI-attributed (detected by AIPresenceDetector) */\n aiAttributed: z.boolean().default(false),\n /** Which AI tool made the change, if detected (e.g., 'copilot', 'cursor', 'claude') */\n aiTool: z.string().nullable().default(null),\n /** Source surface that recorded this modification */\n source: ModificationSourceSchema,\n});\n/**\n * Parse and validate a FileModification input\n */\nexport function parseFileModification(input) {\n return FileModificationSchema.parse(input);\n}\n/**\n * Convert MCP's FileChange to canonical FileModification\n */\nexport function fromMCPFileChange(change) {\n return {\n path: change.file,\n timestamp: change.timestamp,\n type: change.type === \"created\" ? \"create\" : change.type === \"deleted\" ? \"delete\" : \"update\",\n linesChanged: change.linesChanged,\n aiAttributed: change.aiAttributed,\n aiTool: null, // MCP doesn't track specific AI tool\n source: \"mcp\",\n };\n}\n/**\n * Convert canonical FileModification to MCP's FileChange\n */\nexport function toMCPFileChange(mod) {\n return {\n file: mod.path,\n type: mod.type === \"create\" ? \"created\" : mod.type === \"delete\" ? \"deleted\" : \"modified\",\n timestamp: mod.timestamp,\n aiAttributed: mod.aiAttributed,\n linesChanged: mod.linesChanged,\n };\n}\n/**\n * Convert Intelligence's FileModification to canonical FileModification\n */\nexport function fromIntelligenceFileModification(mod, source = \"extension\") {\n return {\n path: mod.path,\n timestamp: mod.timestamp,\n type: mod.type,\n linesChanged: mod.linesChanged ?? 0,\n aiAttributed: false, // Intelligence doesn't track this currently\n aiTool: null,\n source,\n };\n}\n/**\n * Convert canonical FileModification to Intelligence's format\n * (for backwards compatibility during migration)\n */\nexport function toIntelligenceFileModification(mod) {\n return {\n path: mod.path,\n timestamp: mod.timestamp,\n type: mod.type,\n linesChanged: mod.linesChanged,\n };\n}\n// =============================================================================\n// UTILITY FUNCTIONS\n// =============================================================================\n/**\n * Filter modifications to only those after a given timestamp\n */\nexport function filterModificationsSince(mods, since) {\n return mods.filter((m) => m.timestamp >= since);\n}\n/**\n * Get unique file paths from modifications\n */\nexport function getUniqueModifiedPaths(mods) {\n return [...new Set(mods.map((m) => m.path))];\n}\n/**\n * Count AI-attributed modifications\n */\nexport function countAIAttributedModifications(mods) {\n return mods.filter((m) => m.aiAttributed).length;\n}\n/**\n * Get total lines changed across all modifications\n */\nexport function getTotalLinesChanged(mods) {\n return mods.reduce((sum, m) => sum + m.linesChanged, 0);\n}\n/**\n * Group modifications by AI tool\n */\nexport function groupByAITool(mods) {\n const groups = new Map();\n for (const mod of mods) {\n const tool = mod.aiTool;\n if (!groups.has(tool)) {\n groups.set(tool, []);\n }\n groups.get(tool)?.push(mod);\n }\n return groups;\n}\n","/**\n * Signal API Schemas\n *\n * Zod schemas for signal analysis API endpoints.\n * These are the HTTP transport schemas, separate from engine types.\n *\n * Design principles:\n * - HTTP-friendly inputs (strings, primitives)\n * - Rich output types for client consumption\n * - Adapter layer bridges these to engine internals\n */\nimport { z } from \"zod\";\n// =============================================================================\n// AI Detection Schemas\n// =============================================================================\n/**\n * AI Detection Input\n *\n * Detects AI tool presence and code generation patterns.\n */\nexport const AiDetectionInputSchema = z.object({\n /** Active extension IDs in the IDE environment */\n extensionIds: z.array(z.string()).default([]),\n /** Optional file content to analyze for AI signatures */\n content: z.string().optional(),\n /** Character velocity (chars/ms) from burst detection */\n velocity: z.number().nonnegative().optional(),\n /** Total characters changed in the operation */\n charCount: z.number().int().nonnegative().optional(),\n});\n/**\n * AI Detection Output\n */\nexport const AiDetectionOutputSchema = z.object({\n /** Detected AI tool name, or null if none detected */\n tool: z.string().nullable(),\n /** Confidence score (0-1) */\n confidence: z.number().min(0).max(1),\n /** Detection method that triggered */\n method: z.enum([\"extension\", \"velocity\", \"pattern\", \"combined\"]).nullable(),\n /** Indicators that contributed to detection */\n indicators: z.array(z.string()).optional(),\n});\n// =============================================================================\n// Threat Detection Schemas\n// =============================================================================\n/**\n * Threat Detection Input\n *\n * Scans code content for security threat patterns.\n */\nexport const ThreatDetectionInputSchema = z.object({\n /** Code content to scan for threats */\n content: z.string(),\n});\n/**\n * Individual threat pattern match\n */\nexport const ThreatPatternSchema = z.object({\n /** Description of the threat pattern */\n description: z.string(),\n /** Severity score (0-1), where 1 is most critical */\n severity: z.number().min(0).max(1),\n});\n/**\n * Threat Detection Output\n */\nexport const ThreatDetectionOutputSchema = z.object({\n /** Total number of threats detected */\n threatCount: z.number().int().nonnegative(),\n /** List of detected threat patterns */\n patterns: z.array(ThreatPatternSchema),\n /** Overall severity level */\n severity: z.enum([\"none\", \"low\", \"medium\", \"high\", \"critical\"]),\n /** Aggregated threat score (0-10) */\n score: z.number().min(0).max(10),\n});\n// =============================================================================\n// Burst Detection Schemas\n// =============================================================================\n/**\n * Burst Detection Input\n *\n * Analyzes edit velocity to detect rapid code changes (AI paste detection).\n */\nexport const BurstDetectionInputSchema = z.object({\n /** File path being analyzed */\n filePath: z.string(),\n /** Number of characters changed */\n charCount: z.number().int().nonnegative(),\n /** Timestamp of the change (ms since epoch) */\n timestamp: z.number().int().positive().optional(),\n});\n/**\n * Burst Detection Output\n */\nexport const BurstDetectionOutputSchema = z.object({\n /** Whether a burst was detected */\n isBurst: z.boolean(),\n /** Character velocity (chars/ms) */\n velocity: z.number().nonnegative(),\n /** File path analyzed */\n filePath: z.string(),\n /** Total characters in the change */\n charCount: z.number().int().nonnegative(),\n /** Timestamp of detection */\n timestamp: z.number().int().positive(),\n});\n// =============================================================================\n// Complexity Analysis Schemas\n// =============================================================================\n/**\n * File input for complexity analysis\n */\nexport const ComplexityFileInputSchema = z.object({\n /** File path */\n path: z.string(),\n /** File content */\n content: z.string(),\n /** Line count of the file */\n lineCount: z.number().int().nonnegative(),\n});\n/**\n * Complexity Analysis Input\n */\nexport const ComplexityAnalysisInputSchema = z.object({\n /** Files to analyze */\n files: z.array(ComplexityFileInputSchema),\n});\n/**\n * Complexity Analysis Output\n */\nexport const ComplexityAnalysisOutputSchema = z.object({\n /** Average complexity score across all files (0-1) */\n avgComplexity: z.number().min(0).max(1),\n /** Maximum complexity score of any single file (0-1) */\n maxComplexity: z.number().min(0).max(1),\n /** List of files with complexity > 0.7 */\n highComplexityFiles: z.array(z.string()),\n /** Number of files analyzed */\n fileCount: z.number().int().nonnegative(),\n /** Overall complexity value (same as avgComplexity) */\n value: z.number().min(0).max(1),\n});\n// =============================================================================\n// Comprehensive Signal Analysis Schemas\n// =============================================================================\n/**\n * Comprehensive Signal Analysis Input\n *\n * Runs all signals in parallel and computes overall risk score.\n */\nexport const ComprehensiveSignalInputSchema = z.object({\n /** Extension IDs for AI detection */\n extensionIds: z.array(z.string()).default([]),\n /** Content to analyze (for threats, AI patterns, complexity) */\n content: z.string(),\n /** File path being analyzed */\n filePath: z.string(),\n /** Line count (for complexity calculation) */\n lineCount: z.number().int().nonnegative().optional(),\n /** Character count (for burst detection) */\n charCount: z.number().int().nonnegative().optional(),\n /** Velocity (for AI detection) */\n velocity: z.number().nonnegative().optional(),\n /** Timestamp (for burst detection) */\n timestamp: z.number().int().positive().optional(),\n});\n/**\n * Individual signal result in comprehensive output\n */\nexport const SignalResultSchema = z.object({\n /** Signal name */\n signal: z.enum([\"ai\", \"threats\", \"burst\", \"complexity\"]),\n /** Signal-specific score/value */\n value: z.number(),\n /** Whether this signal is considered \"triggered\" */\n triggered: z.boolean(),\n});\n/**\n * Comprehensive Signal Analysis Output\n */\nexport const ComprehensiveSignalOutputSchema = z.object({\n /** Individual signal results */\n signals: z.object({\n ai: AiDetectionOutputSchema,\n threats: ThreatDetectionOutputSchema,\n burst: BurstDetectionOutputSchema.optional(),\n complexity: ComplexityAnalysisOutputSchema,\n }),\n /** Overall risk score (0-1), weighted combination of all signals */\n overallRisk: z.number().min(0).max(1),\n /** Risk level classification */\n riskLevel: z.enum([\"low\", \"medium\", \"high\", \"critical\"]),\n /** Summary of triggered signals */\n triggeredSignals: z.array(z.enum([\"ai\", \"threats\", \"burst\", \"complexity\"])),\n /** Processing time in milliseconds */\n processingTimeMs: z.number().nonnegative(),\n});\n// =============================================================================\n// Shared Types\n// =============================================================================\n/**\n * Signal type enumeration\n */\nexport const SignalTypeSchema = z.enum([\"ai\", \"threats\", \"burst\", \"complexity\", \"comprehensive\"]);\n/**\n * Common error response for signal endpoints\n */\nexport const SignalErrorSchema = z.object({\n /** Error code */\n code: z.string(),\n /** Human-readable error message */\n message: z.string(),\n /** Signal type that failed */\n signal: SignalTypeSchema.optional(),\n});\n","/**\n * Sync Payload Schema\n *\n * Zod schema for session data pushed to cloud API.\n * PRIVACY: Only metadata syncs - file content NEVER leaves device.\n *\n * @module @vreko/contracts/sync-payload\n */\nimport { z } from \"zod\";\n/**\n * SyncPayload schema for cloud sync.\n *\n * Key privacy guarantees:\n * - workspaceId is sha256(gitRemote + userId) - never raw path\n * - No file content fields allowed\n * - .strict() rejects unknown fields (prevents content leakage)\n */\nexport const SyncPayloadSchema = z\n .object({\n sessionId: z.string().uuid(),\n workspaceId: z.string(), // sha256(gitRemote + userId) - never raw path\n startedAt: z.number(),\n endedAt: z.number().nullable(),\n durationMs: z.number().nullable(),\n clientType: z.string(),\n snapshotCount: z.number().int().min(0),\n learningCount: z.number().int().min(0),\n touchedFileCount: z.number().int().min(0),\n riskScores: z.array(z.number().min(0).max(1)),\n // Hard limits - any string field signals content leakage\n})\n .strict(); // reject unknown fields\n/**\n * Build a SyncPayload from session data.\n * Validates the payload and throws on invalid data.\n */\nexport function buildSyncPayload(params) {\n const durationMs = params.endedAt ? params.endedAt - params.startedAt : null;\n return SyncPayloadSchema.parse({\n sessionId: params.sessionId,\n workspaceId: params.workspaceId,\n startedAt: params.startedAt,\n endedAt: params.endedAt,\n durationMs,\n clientType: params.clientType,\n snapshotCount: params.snapshotCount,\n learningCount: params.learningCount,\n touchedFileCount: params.touchedFileCount,\n riskScores: params.riskScores,\n });\n}\n","/**\n * Task-First Architecture Contracts\n *\n * Tasks are the first-class entity in Vreko with stable IDs, display names,\n * accumulated state, and ceremonies. Sessions are daemon connections that come\n * and go underneath a Task.\n *\n * Core MCP flow:\n * 1. LLM calls vreko({ task: \"refactor auth\" }) - Task created or resumed\n * 2. LLM works, calls snap_pulse, vreko_learn - all state accumulates on the Task\n * 3. LLM calls vreko_end({ outcome: \"completed\" }) - Task closed, ceremony produced\n * 4. Next conversation: LLM calls vreko({ task: \"update validation\" }) - new Task, previous Task's context in briefing\n *\n * @see /devagents/plans/Task_Connonical_impl.md\n * @module contracts/task\n */\nimport { z } from \"zod\";\n// =============================================================================\n// TASK STATUS ENUM\n// =============================================================================\n/**\n * TaskStatus - all possible states for a Task\n *\n * State transitions:\n * - created → active\n * - active → completed, abandoned, failed, ceremony_blocked, auto-ended\n * - ceremony_blocked → active (fix issues), completed (force:true)\n * - completed, abandoned, failed, auto-ended → (terminal)\n */\nexport const TaskStatusSchema = z.enum([\n \"created\", // Task record exists, initial setup\n \"active\", // Work in progress, state accumulating\n \"completed\", // Task finished successfully, ceremony produced (terminal)\n \"abandoned\", // Task ended without completion (terminal)\n \"failed\", // Task ended due to error (terminal)\n \"auto-ended\", // Previous task was auto-ended when a new task started (terminal)\n \"ceremony_blocked\", // Quality gates failed, ceremony cannot complete\n]);\n/**\n * Task outcome types for internal task state machine (NOT used for MCP snap_end).\n * Note: task-coordinator.ts has a local TaskOutcome interface with \"blocked\" instead of \"failed\".\n * These are intentionally separate: this enum is for the contracts layer task entity;\n * the local interface is for the coordinator's internal state.\n * MCP snap_end uses a free-text outcome string - see SessionEndDaemonParams in schemas/session.ts.\n */\nexport const TaskOutcomeSchema = z.enum([\"completed\", \"abandoned\", \"failed\"]);\n// =============================================================================\n// TASK ENTITY SCHEMA\n// =============================================================================\n/**\n * Task entity - the first-class entity in Vreko\n *\n * Design principles:\n * - Stable ID and slug for deterministic matching\n * - Accumulated state survives daemon restarts (SQLite WAL mode)\n * - Derived counters eliminate the ceremony zeros bug by construction\n */\nexport const TaskSchema = z.object({\n /** Monotonic integer ID for system tracking */\n id: z.number().int().positive(),\n /** Deterministic kebab-case identifier generated from name */\n slug: z.string().min(1).max(64),\n /** Human-readable task name provided by LLM */\n name: z.string().min(1).max(256),\n /** Current status of the task */\n status: TaskStatusSchema,\n /** Outcome when task was closed (null if active) */\n outcome: TaskOutcomeSchema.nullable(),\n /** ISO 8601 timestamp when task was created */\n createdAt: z.string().datetime(),\n /** ISO 8601 timestamp when task was last updated */\n updatedAt: z.string().datetime(),\n /** ISO 8601 timestamp when task was closed (null if active) */\n closedAt: z.string().datetime().nullable(),\n /** JSON-serialized ceremony object (null until task closes) */\n ceremonyJson: z.string().nullable(),\n /** Task ID this task explicitly continues from (lineage) */\n continuesFrom: z.number().int().positive().nullable(),\n /** Source of migration for legacy sessions */\n migrationSource: z.enum([\"active_session\", \"completed_session\"]).nullable(),\n});\n// =============================================================================\n// TASK EVENT SCHEMA\n// =============================================================================\n/**\n * TaskEventType - types of events recorded in the task timeline\n */\nexport const TaskEventTypeSchema = z.enum([\n \"task_created\",\n \"task_resumed\",\n \"task_ended\",\n \"learning_captured\",\n \"pulse_recorded\",\n \"file_changed\",\n \"session_connected\",\n \"session_disconnected\",\n \"ceremony_blocked\",\n \"ceremony_completed\",\n]);\n/**\n * TaskEvent - ordered log of all MCP tool calls and outcomes on this Task\n */\nexport const TaskEventSchema = z.object({\n /** Monotonic integer ID */\n id: z.number().int().positive(),\n /** Task this event belongs to */\n taskId: z.number().int().positive(),\n /** Sequence number within task (monotonically increasing) */\n seq: z.number().int().nonnegative(),\n /** Type of event */\n type: TaskEventTypeSchema,\n /** JSON-serialized event payload */\n payloadJson: z.string().nullable(),\n /** ISO 8601 timestamp when event occurred */\n timestamp: z.string().datetime(),\n});\n// =============================================================================\n// TASK FILE SCHEMA\n// =============================================================================\n/**\n * FileAction - types of file operations tracked\n */\nexport const FileActionSchema = z.enum([\"added\", \"modified\", \"deleted\"]);\n/**\n * TaskFile - file change log entry\n *\n * Critical design principle: All writes are append-only.\n * Files are tracked by the daemon autonomously via Git diff.\n */\nexport const TaskFileSchema = z.object({\n /** Monotonic integer ID */\n id: z.number().int().positive(),\n /** Task this file change belongs to */\n taskId: z.number().int().positive(),\n /** Relative POSIX path from workspace root */\n path: z.string().min(1),\n /** Type of file operation */\n action: FileActionSchema,\n /** SHA-256 hash before change (null for added files) */\n hashBefore: z.string().nullable(),\n /** SHA-256 hash after change (null for deleted files) */\n hashAfter: z.string().nullable(),\n /** ISO 8601 timestamp when change was detected */\n timestamp: z.string().datetime(),\n});\n// =============================================================================\n// TASK LEARNING SCHEMA\n// =============================================================================\n/**\n * LearningCategory - classification of learning for briefing selection\n */\nexport const LearningCategorySchema = z.enum([\n \"pattern\", // Reusable code/workflow patterns\n \"gotcha\", // Anti-patterns and bugs to avoid\n \"decision\", // Architectural decisions made\n \"convention\", // Project-specific conventions\n \"discovery\", // New capabilities/features found\n]);\n/**\n * LearningConfidence - confidence level for learning insight\n */\nexport const LearningConfidenceSchema = z.enum([\"low\", \"medium\", \"high\"]);\n/**\n * TaskLearning - captured insight attached to a task\n *\n * Deduplicated by content hash and dual-written to:\n * 1. Task-scoped (task_learnings table)\n * 2. Global knowledge store (project-scoped, available to future tasks)\n */\nexport const TaskLearningSchema = z.object({\n /** Monotonic integer ID */\n id: z.number().int().positive(),\n /** Task this learning belongs to */\n taskId: z.number().int().positive(),\n /** SHA-256 hash of content for deduplication */\n contentHash: z.string().min(1),\n /** The actual learning content */\n content: z.string().min(1),\n /** Where this learning came from */\n source: z.string().nullable(),\n /** Confidence level of the insight */\n confidence: LearningConfidenceSchema,\n /** ISO 8601 timestamp when learning was captured */\n timestamp: z.string().datetime(),\n});\n// =============================================================================\n// TASK SESSION SCHEMA\n// =============================================================================\n/**\n * TaskSession - record of each daemon connection to a Task\n *\n * Sessions are transient connections that come and go underneath a Task.\n * When a session disconnects, the Task remains in its current state.\n */\nexport const TaskSessionSchema = z.object({\n /** Monotonic integer ID */\n id: z.number().int().positive(),\n /** Task this session belongs to */\n taskId: z.number().int().positive(),\n /** Unique session identifier (UUID) */\n sessionId: z.string().min(1),\n /** ISO 8601 timestamp when session connected */\n connectedAt: z.string().datetime(),\n /** ISO 8601 timestamp when session disconnected (null if active) */\n disconnectedAt: z.string().datetime().nullable(),\n});\n// =============================================================================\n// CEREMONY SCHEMA (Derived from accumulated state)\n// =============================================================================\n/**\n * CeremonyMetrics - all derived counters computed from Task accumulated state\n *\n * CRITICAL: These are NEVER stored independently.\n * They are always computed from the accumulated state.\n * This eliminates the ceremony zeros bug by construction.\n */\nexport const CeremonyMetricsSchema = z.object({\n /** Number of unique files modified */\n filesModified: z.number().int().nonnegative(),\n /** Number of unique files created */\n filesCreated: z.number().int().nonnegative(),\n /** Number of files deleted */\n filesDeleted: z.number().int().nonnegative(),\n /** Number of learnings captured */\n learningsCaptured: z.number().int().nonnegative(),\n /** Number of pulse snapshots recorded */\n pulsesRecorded: z.number().int().nonnegative(),\n /** Number of sessions that connected to this task */\n sessionsCount: z.number().int().nonnegative(),\n /** Total file operations (sum of all actions) */\n totalFileOperations: z.number().int().nonnegative(),\n});\n/**\n * CeremonyDuration - timing information for the ceremony\n */\nexport const CeremonyDurationSchema = z.object({\n /** ISO 8601 timestamp of first session start */\n firstSessionStart: z.string().datetime(),\n /** ISO 8601 timestamp of last session end */\n lastSessionEnd: z.string().datetime().nullable(),\n /** Total active time in milliseconds */\n totalActiveTimeMs: z.number().int().nonnegative(),\n});\n/**\n * QualityGateStatus - results from quality gate checks\n */\nexport const QualityGateStatusSchema = z.object({\n /** Whether all required gates passed */\n allPassed: z.boolean(),\n /** Whether audit passed */\n auditPassed: z.boolean().nullable(),\n /** Whether lint is clean */\n lintClean: z.boolean().nullable(),\n /** Whether tests pass */\n testsPass: z.boolean().nullable(),\n});\n/**\n * Ceremony - structured completion report produced from accumulated Task state\n *\n * The ceremony reads from the Task's accumulated state (not session state).\n * This ensures correct metrics regardless of which session triggers vreko_end.\n */\nexport const CeremonySchema = z.object({\n /** Task ID */\n taskId: z.number().int().positive(),\n /** Human-readable task name */\n taskName: z.string().min(1),\n /** Deterministic slug */\n slug: z.string().min(1),\n /** How the task ended */\n outcome: TaskOutcomeSchema,\n /** Duration information */\n duration: CeremonyDurationSchema,\n /** Derived metrics from accumulated state */\n metrics: CeremonyMetricsSchema,\n /** All learnings captured during this task */\n learnings: z.array(TaskLearningSchema),\n /** Complete file change log */\n fileChanges: z.array(TaskFileSchema),\n /** Quality gate results from most recent pulse */\n qualityGates: QualityGateStatusSchema,\n /** LLM-generated summary for context injection into future tasks */\n briefingForNextTask: z.string().nullable(),\n});\n// =============================================================================\n// BRIEFING SCHEMA\n// =============================================================================\n/**\n * BriefingMode - level of context to include\n */\nexport const BriefingModeSchema = z.enum([\"standard\", \"comprehensive\"]);\n/**\n * Briefing - context injected at Task start\n *\n * Push-based context briefing (under 500 tokens for standard mode).\n * The daemon produces this autonomously, not the LLM.\n */\nexport const BriefingSchema = z.object({\n /** Summary of most recent completed task's ceremony (1-2 paragraphs) */\n recentCeremonySummary: z.string().nullable(),\n /** Top 5 most recent learnings from across all tasks */\n recentLearnings: z.array(TaskLearningSchema).max(5),\n /** Any active warnings or known issues from the project */\n activeWarnings: z.array(z.string()),\n /** Full ceremony from continued task (if continues parameter provided) */\n continuedCeremony: CeremonySchema.nullable(),\n /** Lineage chain (task IDs this task continues from) */\n lineageChain: z.array(z.number().int().positive()),\n});\n// =============================================================================\n// SLUG GENERATION SCHEMAS\n// =============================================================================\n/**\n * SlugGenerationInput - input for slug generation\n */\nexport const SlugGenerationInputSchema = z.object({\n /** Human-readable task name from LLM */\n taskName: z.string().min(1).max(256),\n});\n/**\n * SlugGenerationOutput - result of slug generation\n */\nexport const SlugGenerationOutputSchema = z.object({\n /** Generated kebab-case slug */\n slug: z.string().min(1).max(64),\n /** Whether a counter suffix was added for uniqueness */\n hasCounterSuffix: z.boolean(),\n /** Counter value if suffix was added (null otherwise) */\n counterValue: z.number().int().positive().nullable(),\n});\n// =============================================================================\n// MCP TOOL INPUT SCHEMAS\n// =============================================================================\n/**\n * VrekoInput - input for vreko() MCP tool\n *\n * Description: \"Begin or resume a Vreko task. If a task with this name exists\n * and is active, resume it with a new session. If not, create a new task.\n * The previous active task (if any) is auto-ended with a ceremony.\"\n */\nexport const VrekoInputSchema = z.object({\n /** Human-readable task name. Vreko generates a deterministic slug for matching. */\n task: z.string().min(1).max(256),\n /** Task ID or slug of a completed task that this new task continues. */\n continues: z.string().optional(),\n /** Level of context to include in the briefing. Default \"standard\". */\n mode: BriefingModeSchema.default(\"standard\"),\n});\n/**\n * VrekoOutput - output from vreko() MCP tool\n */\nexport const VrekoOutputSchema = z.object({\n /** Task ID */\n taskId: z.number().int().positive(),\n /** Deterministic slug */\n slug: z.string().min(1),\n /** Human-readable task name */\n name: z.string().min(1),\n /** Current status */\n status: TaskStatusSchema,\n /** Whether this was a resume of an existing task */\n resumed: z.boolean(),\n /** Slug of auto-ended task (if any) */\n autoEnded: z.string().nullable(),\n /** Contextual briefing from recent work history */\n briefing: BriefingSchema,\n /** Number of sessions that have connected to this task */\n sessionsCount: z.number().int().nonnegative(),\n});\n// -----------------------------------------------------------------------------\n// snap_pulse MCP tool\n// -----------------------------------------------------------------------------\n/**\n * PulseFocus - what to focus on in the pulse\n */\nexport const PulseFocusSchema = z.enum([\"vitals\", \"advice\"]);\n/**\n * PulseEnrichment - LLM-observed context to attach\n */\nexport const PulseEnrichmentSchema = z.object({\n /** Patterns, concerns the LLM noticed */\n observations: z.array(z.string()).optional(),\n /** Confidence in observations */\n confidence: LearningConfidenceSchema.optional(),\n});\n/**\n * SnapPulseInput - input for snap_pulse() MCP tool\n *\n * Description: \"Check the pulse of the current workspace and active task.\n * Vreko autonomously reads workspace vitals - test status, lint health,\n * git state, file changes - and returns a diagnostic snapshot.\"\n */\nexport const SnapPulseInputSchema = z.object({\n /** What to focus on. \"vitals\" returns workspace health diagnostics.\n * \"advice\" returns proactive recommendations based on current task context. */\n focus: PulseFocusSchema.default(\"vitals\"),\n /** When focus is \"advice\", a specific question or area.\n * When focus is \"vitals\", optional hint about what to prioritize. */\n query: z.string().optional(),\n /** LLM-observed context to attach. Additive, not replacing. */\n enrichment: PulseEnrichmentSchema.optional(),\n});\n/**\n * WorkspaceVitals - daemon-collected workspace health diagnostics\n */\nexport const WorkspaceVitalsSchema = z.object({\n /** Whether configured tests pass */\n testsPass: z.boolean().nullable(),\n /** Whether lint is clean */\n lintClean: z.boolean().nullable(),\n /** Whether typecheck passes */\n typecheckPass: z.boolean().nullable(),\n /** Git branch name */\n gitBranch: z.string().nullable(),\n /** Whether there are uncommitted changes */\n hasUncommittedChanges: z.boolean(),\n /** Number of modified files (from git status) */\n modifiedFilesCount: z.number().int().nonnegative(),\n /** Error details if any check failed */\n errorDetails: z.string().nullable(),\n});\n/**\n * SnapPulseOutput - output from snap_pulse() MCP tool\n */\nexport const SnapPulseOutputSchema = z.object({\n /** Whether there is an active task */\n hasActiveTask: z.boolean(),\n /** Task ID if active */\n taskId: z.number().int().positive().nullable(),\n /** Daemon-collected workspace vitals */\n vitals: WorkspaceVitalsSchema,\n /** Whether task is flagged as stale (inactivity timeout exceeded) */\n isStale: z.boolean(),\n /** Proactive recommendations (when focus is \"advice\") */\n recommendations: z.array(z.string()).optional(),\n /** Pulse sequence number for this task */\n pulseSeq: z.number().int().nonnegative(),\n});\n// -----------------------------------------------------------------------------\n// vreko_learn MCP tool\n// -----------------------------------------------------------------------------\n/**\n * VrekoLearnInput - input for vreko_learn() MCP tool\n *\n * Description: \"Capture a learning or insight and attach it to the active task.\n * Learnings are deduplicated by content hash and dual-written to both the Task\n * and the global knowledge store.\"\n */\nexport const VrekoLearnInputSchema = z.object({\n /** The learning to capture. Should be a concrete, actionable insight. */\n insight: z.string().min(1),\n /** Classification of the learning. Default: inferred by the daemon. */\n category: LearningCategorySchema.optional(),\n /** Where this learning came from. Default: \"llm-observation\". */\n source: z.string().optional(),\n /** How confident the LLM is in this insight. Default: \"medium\". */\n confidence: LearningConfidenceSchema.default(\"medium\"),\n});\n/**\n * VrekoLearnOutput - output from vreko_learn() MCP tool\n */\nexport const VrekoLearnOutputSchema = z.object({\n /** Learning ID */\n learningId: z.number().int().positive(),\n /** Content hash for deduplication */\n contentHash: z.string().min(1),\n /** Whether this was a new learning or duplicate */\n isNew: z.boolean(),\n /** Total learnings count for this task */\n taskLearningsCount: z.number().int().nonnegative(),\n});\n// -----------------------------------------------------------------------------\n// vreko_end MCP tool\n// -----------------------------------------------------------------------------\n/**\n * VrekoEndFeedback - user/LLM feedback on task experience\n */\nexport const VrekoEndFeedbackSchema = z.object({\n /** Rating 1-5 */\n rating: z.number().int().min(1).max(5),\n /** Optional notes */\n notes: z.string().optional(),\n});\n/**\n * VrekoEndInput - input for vreko_end() MCP tool\n *\n * Description: \"Close the active task with a ceremony. The ceremony reads from\n * the Task's accumulated state - file changes, learnings, pulses, and sessions -\n * to produce a completion report. If quality gates are configured and fail,\n * the ceremony is blocked until issues are resolved or force is used.\"\n */\nexport const VrekoEndInputSchema = z.object({\n /** How the task ended */\n outcome: TaskOutcomeSchema,\n /** LLM's summary of what was accomplished. Included in ceremony. */\n summary: z.string().optional(),\n /** Bypass quality gate blocks. Not recommended. */\n force: z.boolean().default(false),\n /** User/LLM feedback on the task experience */\n feedback: VrekoEndFeedbackSchema.optional(),\n});\n/**\n * VrekoEndOutput - output from vreko_end() MCP tool\n */\nexport const VrekoEndOutputSchema = z.object({\n /** Whether the ceremony was blocked by quality gates */\n blocked: z.boolean(),\n /** The produced ceremony (null if blocked and force=false) */\n ceremony: CeremonySchema.nullable(),\n /** Quality gate failures if blocked */\n gateFailures: z\n .object({\n testsPass: z.boolean().optional(),\n lintClean: z.boolean().optional(),\n auditPassed: z.boolean().optional(),\n })\n .nullable(),\n /** Instructions to resolve blockage */\n resolution: z.string().nullable(),\n});\n// =============================================================================\n// UTILITY FUNCTIONS\n// =============================================================================\n/**\n * Generate a deterministic slug from a task name\n *\n * Rules:\n * 1. Transliterate Unicode to ASCII (via latinize)\n * 2. Lowercase all characters\n * 3. Replace spaces and special characters with hyphens\n * 4. Collapse multiple hyphens\n * 5. Strip leading/trailing hyphens\n * 6. Truncate to 64 characters max; if truncation, append 4-char hash\n *\n * @param taskName - Human-readable task name\n * @returns Generated slug\n */\nexport function generateSlug(taskName) {\n // Basic slug generation (full transliteration would use latinize library)\n let slug = taskName\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\") // Replace non-alphanumeric with hyphens\n .replace(/^-+|-+$/g, \"\") // Strip leading/trailing hyphens\n .replace(/-{2,}/g, \"-\"); // Collapse multiple hyphens\n // Truncate to 64 chars, add hash suffix if needed\n if (slug.length > 64) {\n const hashSuffix = simpleHash(taskName).slice(0, 4);\n slug = `${slug.slice(0, 60)}-${hashSuffix}`;\n }\n return slug || \"untitled-task\";\n}\n/**\n * Simple hash function for generating uniqueness suffixes\n */\nfunction simpleHash(input) {\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n const char = input.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash; // Convert to 32-bit integer\n }\n return Math.abs(hash).toString(36);\n}\n/**\n * Check if a task status is terminal (cannot transition further)\n */\nexport function isTerminalStatus(status) {\n return [\"completed\", \"abandoned\", \"failed\", \"auto-ended\"].includes(status);\n}\n/**\n * Check if a task status allows modifications\n */\nexport function isActiveStatus(status) {\n return [\"created\", \"active\", \"ceremony_blocked\"].includes(status);\n}\n// Types are automatically exported via z.infer<typeof ...Schema> declarations above.\n","import { z } from \"zod\";\n/**\n * Purchase types for billing and subscription management\n *\n * These represent the contract interface for purchases across the application.\n * For database operations, use the Drizzle schema types from @vreko/platform.\n */\nexport const PurchaseTypeEnum = z.enum([\"ONE_TIME\", \"SUBSCRIPTION\", \"addon\"]);\nexport const PurchaseSchema = z.object({\n id: z.string(),\n organizationId: z.string().nullable().optional(),\n userId: z.string().nullable().optional(),\n type: PurchaseTypeEnum,\n customerId: z.string(),\n subscriptionId: z.string().nullable().optional(),\n productId: z.string(),\n status: z.string().nullable().optional(),\n createdAt: z.date(),\n updatedAt: z.date().nullable().optional(),\n});\n","import { z } from \"zod\";\n/**\n * Configuration file types\n */\nexport const ConfigFileTypeSchema = z.enum([\n \"package\",\n \"typescript\",\n \"linting\",\n \"build\",\n \"environment\",\n \"testing\",\n \"framework\",\n \"database\",\n \"ci\",\n]);\n/**\n * Supported programming languages\n */\nexport const SupportedLanguageSchema = z.enum([\"javascript\", \"typescript\", \"python\", \"universal\"]);\n/**\n * File baseline information for config files\n */\nexport const FileBaselineSchema = z.object({\n path: z.string(),\n hash: z.string(),\n timestamp: z.number(),\n size: z.number(),\n});\n/**\n * Base configuration file interface\n */\nexport const ConfigFileSchema = z.object({\n path: z.string(),\n type: ConfigFileTypeSchema,\n language: SupportedLanguageSchema,\n critical: z.boolean().default(false),\n baseline: FileBaselineSchema.optional(),\n});\n/**\n * Detected configuration file\n */\nexport const DetectedConfigFileSchema = z.object({\n type: z.string(),\n path: z.string(),\n name: z.string(),\n critical: z.boolean().default(false),\n});\n/**\n * Config parse result\n */\nexport const ConfigParseResultSchema = z.object({\n content: z.any(),\n valid: z.boolean(),\n error: z.string().optional(),\n metadata: z.record(z.string(), z.any()).optional(),\n});\n/**\n * Config validation result\n */\nexport const ConfigValidationResultSchema = z.object({\n valid: z.boolean(),\n errors: z.array(z.string()).default([]),\n warnings: z.array(z.string()).default([]),\n});\n/**\n * Config file change\n */\nexport const ConfigChangeSchema = z.object({\n type: z.enum([\"added\", \"modified\", \"deleted\"]),\n file: z.string(),\n timestamp: z.number(),\n baseline: FileBaselineSchema.optional(),\n});\n/**\n * Config manager options\n */\nexport const ConfigManagerOptionsSchema = z.object({\n autoDetect: z.boolean().default(true),\n watchChanges: z.boolean().default(true),\n autoProtect: z.boolean().default(true),\n customPatterns: z.array(z.any()).optional(),\n});\n/**\n * Selective snapshot configuration\n */\nexport const SelectiveSnapshotConfigSchema = z.object({\n enabled: z.boolean(),\n patterns: z.array(z.string()).optional(),\n threshold: z.number().optional(),\n includePatterns: z.array(z.string()).optional(),\n excludePatterns: z.array(z.string()).optional(),\n});\n","import { z } from \"zod\";\n/**\n * Protection levels for files\n * - watch: Silent auto-snapshot on save (green)\n * - warn: Show notification before save (yellow/orange)\n * - block: Require explicit snapshot or override (red)\n */\nexport const ProtectionLevelSchema = z.enum([\"watch\", \"warn\", \"block\"]);\n/**\n * UI metadata for protection levels\n */\nexport const ProtectionLevelMetadataSchema = z.object({\n level: ProtectionLevelSchema,\n icon: z.string(),\n label: z.string(),\n description: z.string(),\n color: z.string(),\n themeColor: z.string().optional(),\n});\n/**\n * Protection level configurations with UI metadata\n */\nexport const PROTECTION_LEVELS = {\n watch: {\n level: \"watch\",\n icon: \"🟢\",\n label: \"Watch\",\n description: \"Silent auto-snapshot on save\",\n color: \"#10B981\",\n themeColor: \"charts.green\",\n },\n warn: {\n level: \"warn\",\n icon: \"🟡\",\n label: \"Warn\",\n description: \"Notify before save with options\",\n color: \"#FF6B35\",\n themeColor: \"charts.orange\",\n },\n block: {\n level: \"block\",\n icon: \"🔴\",\n label: \"Block\",\n description: \"Require snapshot or explicit override\",\n color: \"#EF4444\",\n themeColor: \"charts.red\",\n },\n};\n/**\n * Protected file entry\n */\nexport const ProtectedFileSchema = z.object({\n path: z.string(),\n level: ProtectionLevelSchema,\n reason: z.string().optional(),\n addedAt: z.date(),\n pattern: z.string().optional(), // If added via pattern match\n});\n/**\n * Pattern rule for automatic protection\n */\nexport const PatternRuleSchema = z.object({\n pattern: z.string(),\n level: ProtectionLevelSchema,\n reason: z.string().optional(),\n enabled: z.boolean().default(true),\n});\n/**\n * Protection configuration\n */\nexport const ProtectionConfigSchema = z.object({\n patterns: z.array(PatternRuleSchema).default([]),\n defaultLevel: ProtectionLevelSchema.default(\"watch\"),\n enabled: z.boolean().default(true),\n autoProtectConfigs: z.boolean().default(true),\n});\n/**\n * Protection manager options\n */\nexport const ProtectionManagerOptionsSchema = z.object({\n config: ProtectionConfigSchema.optional(),\n persistRegistry: z.boolean().default(true),\n registryPath: z.string().optional(),\n});\n/**\n * Protection check result\n */\nexport const ProtectionCheckResultSchema = z.object({\n isProtected: z.boolean(),\n level: ProtectionLevelSchema.optional(),\n reason: z.string().optional(),\n file: ProtectedFileSchema.optional(),\n});\n// =============================================================================\n// Default Protection Patterns\n// =============================================================================\n/**\n * CRITICAL PATTERNS - Files where accidental changes cause IMMEDIATE PRODUCTION IMPACT\n * These are the patterns that should be protected by default\n * Total: ~15-20 patterns matching ~27 files in typical project\n */\nexport const DEFAULT_CRITICAL_PATTERNS = Object.freeze([\n // Dependency locks - wrong versions break builds\n {\n pattern: \"**/package-lock.json\",\n level: \"block\",\n reason: \"Lock file - wrong version breaks reproducible Node.js builds\",\n },\n {\n pattern: \"**/yarn.lock\",\n level: \"block\",\n reason: \"Lock file - ensures reproducible Yarn installs\",\n },\n {\n pattern: \"**/pnpm-lock.yaml\",\n level: \"block\",\n reason: \"Lock file - critical for pnpm monorepos\",\n },\n {\n pattern: \"**/poetry.lock\",\n level: \"block\",\n reason: \"Lock file - Python dependency lock\",\n },\n {\n pattern: \"**/Cargo.lock\",\n level: \"block\",\n reason: \"Lock file - Rust dependency lock\",\n },\n {\n pattern: \"**/go.sum\",\n level: \"block\",\n reason: \"Lock file - Go module checksums\",\n },\n {\n pattern: \"**/Gemfile.lock\",\n level: \"block\",\n reason: \"Lock file - Ruby gem dependencies\",\n },\n {\n pattern: \"**/composer.lock\",\n level: \"block\",\n reason: \"Lock file - PHP composer dependencies\",\n },\n // Environment & Secrets - exposing causes immediate security breaches\n {\n pattern: \"**/.env*\",\n level: \"block\",\n reason: \"Sensitive environment variables and secrets\",\n },\n // Core configuration files - wrong changes break builds\n {\n pattern: \"package.json\",\n level: \"warn\",\n reason: \"Core Node.js configuration - dependencies and scripts\",\n },\n {\n pattern: \"tsconfig.json\",\n level: \"warn\",\n reason: \"TypeScript compiler configuration\",\n },\n // Infrastructure - controls deployment and infrastructure\n {\n pattern: \"Dockerfile\",\n level: \"warn\",\n reason: \"Container image definition\",\n },\n {\n pattern: \"docker-compose.yml\",\n level: \"warn\",\n reason: \"Multi-container orchestration\",\n },\n {\n pattern: \"**/docker-compose.yaml\",\n level: \"warn\",\n reason: \"Multi-container orchestration (yaml variant)\",\n },\n {\n pattern: \"**/*.tf\",\n level: \"warn\",\n reason: \"Terraform infrastructure definitions\",\n },\n {\n pattern: \".github/workflows/*.yml\",\n level: \"warn\",\n reason: \"GitHub Actions CI/CD workflows\",\n },\n {\n pattern: \".github/workflows/*.yaml\",\n level: \"warn\",\n reason: \"GitHub Actions CI/CD workflows (yaml variant)\",\n },\n]);\n/**\n * EXTENDED PATTERNS - Optional patterns for enhanced protection\n * These are useful but not critical - users should opt-in to apply these\n * Total: ~25-30 patterns\n */\nexport const EXTENDED_PATTERNS = Object.freeze([\n // Documentation - passive watching\n {\n pattern: \"*.md\",\n level: \"watch\",\n reason: \"Documentation files\",\n },\n {\n pattern: \"*.txt\",\n level: \"watch\",\n reason: \"Text files\",\n },\n {\n pattern: \"README*\",\n level: \"watch\",\n reason: \"README documentation\",\n },\n // General configuration files\n {\n pattern: \"*.json\",\n level: \"watch\",\n reason: \"JSON configuration files\",\n },\n {\n pattern: \".editorconfig\",\n level: \"watch\",\n reason: \"Editor configuration\",\n },\n {\n pattern: \".prettierrc*\",\n level: \"watch\",\n reason: \"Prettier formatting configuration\",\n },\n {\n pattern: \".eslintrc*\",\n level: \"watch\",\n reason: \"ESLint configuration\",\n },\n {\n pattern: \".babelrc\",\n level: \"watch\",\n reason: \"Babel transpiler configuration\",\n },\n {\n pattern: \".gitignore\",\n level: \"warn\",\n reason: \"Git ignore rules\",\n },\n // IDE and editor settings\n {\n pattern: \".vscode/settings.json\",\n level: \"watch\",\n reason: \"VS Code settings\",\n },\n {\n pattern: \".idea/**\",\n level: \"watch\",\n reason: \"IDE configuration directory\",\n },\n // Build tool configurations\n {\n pattern: \"vite.config.*\",\n level: \"warn\",\n reason: \"Vite bundler configuration\",\n },\n {\n pattern: \"webpack.config.*\",\n level: \"warn\",\n reason: \"Webpack bundler configuration\",\n },\n {\n pattern: \"rollup.config.*\",\n level: \"warn\",\n reason: \"Rollup bundler configuration\",\n },\n {\n pattern: \"esbuild.config.*\",\n level: \"warn\",\n reason: \"esbuild bundler configuration\",\n },\n {\n pattern: \"Makefile\",\n level: \"watch\",\n reason: \"Make build configuration\",\n },\n {\n pattern: \"CMakeLists.txt\",\n level: \"watch\",\n reason: \"CMake build configuration\",\n },\n // Language-specific package managers and configs\n {\n pattern: \"requirements.txt\",\n level: \"watch\",\n reason: \"Python dependencies\",\n },\n {\n pattern: \"Gemfile\",\n level: \"warn\",\n reason: \"Ruby gem configuration\",\n },\n {\n pattern: \"composer.json\",\n level: \"warn\",\n reason: \"PHP composer configuration\",\n },\n {\n pattern: \"setup.py\",\n level: \"warn\",\n reason: \"Python package setup\",\n },\n {\n pattern: \"pyproject.toml\",\n level: \"warn\",\n reason: \"Python project configuration\",\n },\n {\n pattern: \"pom.xml\",\n level: \"warn\",\n reason: \"Maven Java build configuration\",\n },\n {\n pattern: \"build.gradle*\",\n level: \"warn\",\n reason: \"Gradle Java build configuration\",\n },\n {\n pattern: \"*.csproj\",\n level: \"warn\",\n reason: \".NET C# project file\",\n },\n {\n pattern: \"go.mod\",\n level: \"warn\",\n reason: \"Go module definition\",\n },\n {\n pattern: \"Cargo.toml\",\n level: \"warn\",\n reason: \"Rust package configuration\",\n },\n {\n pattern: \"bunfig.toml\",\n level: \"warn\",\n reason: \"Bun runtime configuration\",\n },\n {\n pattern: \"*.sln\",\n level: \"watch\",\n reason: \"Visual Studio solution file\",\n },\n // Kubernetes and container orchestration\n {\n pattern: \"kubernetes/*.yaml\",\n level: \"warn\",\n reason: \"Kubernetes manifests\",\n },\n]);\n/**\n * All default protection patterns combined\n */\nexport const DEFAULT_PROTECTION_PATTERNS = Object.freeze([\n ...DEFAULT_CRITICAL_PATTERNS,\n ...EXTENDED_PATTERNS,\n]);\n","import { z } from \"zod\";\nimport { RiskScoreDetailSchema } from \"../schemas.js\";\nimport { RiskSeveritySchema } from \"./analysis.js\";\n// =============================================================================\n// SNAPSHOT TRIGGER & ORIGIN TYPES (ADR-004 Consolidated)\n// =============================================================================\n/**\n * Snapshot trigger sources - canonical enum for all surfaces\n * Consolidates triggers from VSCode, MCP, CLI, and API\n */\nexport const SnapshotTriggerSchema = z.enum([\n \"manual\",\n \"auto\",\n \"auto_save\",\n \"ai_detected\",\n \"ai-detected\", // Legacy alias\n \"pre_save\",\n \"pre-save\", // Legacy alias\n \"session_start\",\n \"session_end\",\n \"mcp_snap_start\",\n \"cli_protect\",\n \"api_request\",\n \"engine_internal\",\n \"recovery\",\n]);\n/**\n * Snapshot origin classification for DORA metrics\n * Distinguishes user-initiated vs automated snapshots\n */\nexport const SnapshotOriginSchema = z.enum([\"manual\", \"auto\", \"ai-detected\", \"recovery\", \"INTERACTIVE\", \"AUTOMATED\"]);\n/**\n * Migration map for VSCode-specific snapshot origins\n * Maps granular VSCode origin values to canonical SnapshotOrigin enum\n *\n * Usage:\n * ```typescript\n * const canonical = ORIGIN_MIGRATION_MAP[\"pre-save\"] ?? vscodeOrigin; // \"auto\"\n * ```\n */\nexport const ORIGIN_MIGRATION_MAP = {\n \"pre-save\": \"auto\",\n scheduled: \"auto\",\n \"pre-restore\": \"recovery\",\n};\n/**\n * Reason codes for snapshot creation (from VSCode ManifestV2)\n * Used for explainability and debugging\n * Consolidated from VSCode storage and contracts definitions\n */\nexport const SnapshotReasonCodeSchema = z.enum([\n // AI detection\n \"AI_DETECTED\",\n // Manual operations\n \"MANUAL_CHECKPOINT\",\n \"MANUAL_SAVE\",\n // Risk-based triggers\n \"CRITICAL_FILE\",\n \"HIGH_RISK\",\n \"RISK_BURST_START\",\n \"RISK_LARGE_DELETE\",\n \"RISK_MULTI_FILE\",\n // Session lifecycle\n \"SESSION_START\",\n \"SESSION_END\",\n \"IDLE_FINALIZE\",\n // Rollback operations\n \"PRE_ROLLBACK\",\n // Optimization modes\n \"BURST_MODE\",\n]);\n/**\n * Checkpoint type for V2 manifests\n * PRE = pointer-only (marks start of risky operation)\n * POST = contains actual file content\n * PRE_ROLLBACK = pointer before rollback operation\n */\nexport const CheckpointTypeSchema = z.enum([\"PRE\", \"POST\", \"PRE_ROLLBACK\"]);\n/**\n * Base Snapshot interface\n * This is the core data structure for snapshots across all Vreko clients\n *\n * Session Linkage (Non-Breaking Extension):\n * Snapshots can optionally link to a parent session via meta.sessionId.\n * This enables:\n * - Displaying snapshots within session tree view\n * - Understanding snapshot creation context\n * - Grouping snapshots by logical work period\n *\n * Example meta object:\n * {\n * name: \"Pre-refactor checkpoint\",\n * protected: true,\n * sessionId: \"clx1a2b3c4d5e6f7g8h9\" // Optional link to session\n * }\n *\n * Version Compatibility:\n * - version: Snapshot format version (default: \"1.0\")\n * - Compatible versions: [\"1.0\"]\n */\nexport const SnapshotSchema = z.object({\n id: z.string(),\n timestamp: z.number(),\n version: z.string().optional().default(\"1.0\"),\n meta: z.record(z.string(), z.any()).optional(),\n files: z.array(z.string()).optional(),\n fileContents: z.record(z.string(), z.string()).optional(),\n});\n/**\n * File state at a specific snapshot\n * Used for deduplication and change tracking\n * Enhanced per ADR-004 with encryption support\n *\n * Note: `hash` is optional to support:\n * - Files being added before hashing\n * - Encrypted content where hash is computed separately\n */\nexport const FileStateSchema = z.object({\n path: z.string(),\n content: z.string(),\n /** SHA-256 hash of content (optional, computed for dedup) */\n hash: z.string().optional(),\n /** File size in bytes */\n size: z.number().optional(),\n /** Encrypted data (for sensitive files - VSCode format) */\n encrypted: z\n .object({\n /** Initialization vector */\n iv: z.string(),\n /** Authentication tag */\n tag: z.string(),\n /** Optional: algorithm used (default: aes-256-gcm) */\n algorithm: z.string().optional(),\n })\n .optional(),\n});\n/**\n * Compression codec for blob storage\n * Used in V2 file references for efficient storage\n */\nexport const CompressionCodecSchema = z.enum([\"zstd\", \"gzip\", \"none\"]);\n/**\n * V2 File reference for content-addressable storage\n * Used in SnapshotManifestV2 - references blobs by hash\n * Enhanced with optional compression codec support\n */\nexport const SnapshotFileRefV2Schema = z.object({\n /** SHA-256 hash of file content (CAS reference) */\n blobHash: z.string(),\n /** File size in bytes */\n size: z.number(),\n /** Compression codec used (optional, defaults to 'none') */\n codec: CompressionCodecSchema.optional(),\n});\n/**\n * Complete snapshot state for deduplication\n * Note: This is distinct from SnapshotStatus which tracks lifecycle state\n */\nexport const SnapshotStateSchema = z.object({\n id: z.string(),\n timestamp: z.number(),\n files: z.array(FileStateSchema),\n});\n/**\n * Snapshot lifecycle status (state machine states)\n * Renamed from VSCode's SnapshotState to avoid collision with deduplication state\n */\nexport const SnapshotStatusSchema = z.enum([\"pending\", \"complete\", \"failed\", \"deleted\"]);\n/**\n * Rich Snapshot with UI metadata\n * Used by VS Code extension and other clients with UI\n */\nexport const RichSnapshotSchema = SnapshotSchema.extend({\n name: z.string(),\n fileStates: z.array(FileStateSchema).optional(),\n isProtected: z.boolean(),\n icon: z.string().optional(),\n iconColor: z.string().optional(),\n});\n/**\n * Minimal snapshot for list operations and deletion\n * Consolidated from VSCode and contracts definitions\n */\nexport const MinimalSnapshotSchema = z.object({\n id: z.string(),\n name: z.string(),\n timestamp: z.number(),\n fileCount: z.number(),\n origin: SnapshotOriginSchema.optional(),\n isProtected: z.boolean(),\n label: z.string().optional(),\n});\n/**\n * File input for snapshot creation\n */\nexport const FileInputSchema = z.object({\n path: z.string(),\n content: z.string(),\n action: z.enum([\"add\", \"modify\", \"delete\"]),\n});\n/**\n * Snapshot creation options\n * Enhanced per ADR-004 with DORA metric extensions from VSCode\n */\nexport const CreateSnapshotOptionsSchema = z.object({\n /** Description/reason for the snapshot */\n description: z.string().optional(),\n /** Whether to protect from auto-deletion */\n protected: z.boolean().optional(),\n /** What triggered the snapshot */\n trigger: SnapshotTriggerSchema.optional(),\n /** Origin classification for DORA metrics */\n origin: SnapshotOriginSchema.optional(),\n /** Time since last file change in ms (DORA lead time metric) */\n timeSinceLastChangeMs: z.number().optional(),\n});\n/**\n * Snapshot filters for querying\n */\nexport const SnapshotFiltersSchema = z.object({\n filePath: z.string().optional(),\n before: z.date().optional(),\n after: z.date().optional(),\n protected: z.boolean().optional(),\n limit: z.number().int().positive().optional(),\n offset: z.number().int().nonnegative().optional(),\n});\n/**\n * File diff for restore preview\n */\nexport const FileDiffSchema = z.object({\n path: z.string(),\n operation: z.enum([\"create\", \"modify\", \"delete\"]),\n linesAdded: z.number(),\n linesRemoved: z.number(),\n preview: z.string(),\n currentChecksum: z.string().optional(),\n snapshotChecksum: z.string().optional(),\n});\n/**\n * Diff preview for restore operations\n */\nexport const DiffPreviewSchema = z.object({\n totalFiles: z.number(),\n filesCreated: z.number(),\n filesModified: z.number(),\n filesDeleted: z.number(),\n totalLinesAdded: z.number(),\n totalLinesRemoved: z.number(),\n diffs: z.array(FileDiffSchema),\n});\n/**\n * Conflict report for restore operations\n */\nexport const ConflictReportSchema = z.object({\n path: z.string(),\n reason: z.string(),\n currentChecksum: z.string(),\n snapshotChecksum: z.string(),\n});\n/**\n * Snapshot restore result (enhanced with diff previews and conflicts)\n */\nexport const SnapshotRestoreResultSchema = z.object({\n success: z.boolean(),\n restoredFiles: z.array(z.string()),\n errors: z.array(z.string()).optional(),\n diffPreview: DiffPreviewSchema.optional(),\n conflicts: z.array(ConflictReportSchema).optional(),\n verification: z\n .object({\n allVerified: z.boolean(),\n results: z.array(z.object({\n path: z.string(),\n verified: z.boolean(),\n checksum: z.string(),\n expected: z.string(),\n })),\n })\n .optional(),\n});\n/**\n * Snapshot manager configuration\n */\nexport const SnapshotManagerConfigSchema = z.object({\n enableDeduplication: z.boolean().default(true),\n namingStrategy: z.enum([\"git\", \"semantic\", \"timestamp\", \"custom\"]).default(\"semantic\"),\n autoProtect: z.boolean().default(false),\n maxSnapshots: z.number().int().positive().optional(),\n});\n/**\n * File metadata for analytics and tracking\n *\n * Note: Uses canonical RiskScoreDetailSchema from schemas.ts (0-10 scale)\n */\nexport const FileMetadataSchema = z.object({\n id: z.string(),\n path: z.string(),\n hash: z.string().optional(),\n size: z.number().optional(),\n language: z.string().optional(),\n risk: RiskScoreDetailSchema.optional(),\n lastModified: z.number().optional(),\n createdAt: z.number().optional(),\n});\n/**\n * Snapshot metadata for analytics (Enhanced per ADR-004)\n * Includes VSCode ManifestV2 fields for full surface parity\n */\nexport const SnapshotMetadataSchema = z.object({\n // Core fields (required)\n id: z.string(),\n timestamp: z.number(),\n fileCount: z.number(),\n // Analytics fields (optional)\n totalSize: z.number().optional(),\n riskScore: RiskScoreDetailSchema.optional(),\n tags: z.array(z.string()).optional(),\n // V2 Hierarchy fields (from VSCode ManifestV2)\n /** Sequential snapshot number (1-based, monotonic) */\n seq: z.number().int().positive().optional(),\n /** Parent snapshot seq (null for root) */\n parentSeq: z.number().int().positive().nullable().optional(),\n /** Parent snapshot ID */\n parentId: z.string().nullable().optional(),\n /** Checkpoint type */\n type: CheckpointTypeSchema.optional(),\n /** Main file that triggered this snapshot */\n anchorFile: z.string().optional(),\n // DORA Metrics fields\n /** Time since last file change in ms (for lead time metric) */\n timeSinceLastChangeMs: z.number().optional(),\n /** Compression ratio achieved (for storage efficiency) */\n compressionRatio: z.number().optional(),\n /** Storage size in bytes (after compression) */\n storageSizeBytes: z.number().optional(),\n // Origin & Classification\n /** Origin classification for analytics */\n origin: SnapshotOriginSchema.optional(),\n /** Reason codes for explainability */\n reasons: z.array(SnapshotReasonCodeSchema).optional(),\n // AI Detection\n aiDetection: z\n .object({\n detected: z.boolean(),\n tool: z.string().optional(),\n confidence: z.number().min(0).max(1).optional(),\n })\n .optional(),\n // Session linkage\n /** Vreko session ID */\n sessionId: z.string().optional(),\n /** External task ID (from LLM agent) */\n taskId: z.string().optional(),\n // UI fields\n name: z.string().optional(),\n icon: z.string().optional(),\n});\n// =============================================================================\n// SNAPSHOT MANIFEST V2 (ADR-004 - Canonical Definition)\n// =============================================================================\n/**\n * V2 Snapshot Manifest - Canonical definition from VSCode extension\n * This is the SINGLE SOURCE OF TRUTH for V2 manifest structure.\n *\n * Features:\n * - Sequential numbering (seq) for ordering\n * - Parent chain (parentSeq, parentId) for history\n * - Checkpoint types (PRE/POST/PRE_ROLLBACK)\n * - Content-addressable file storage via blobHash\n * - Rich metadata for analytics and DORA metrics\n */\nexport const SnapshotManifestV2Schema = z.object({\n /** Schema version - always 2 for V2 */\n schemaVersion: z.literal(2),\n /** Unique ID: vreko-{timestamp}-{random} */\n id: z.string(),\n /** Sequential snapshot number (1-based, monotonic) */\n seq: z.number().int().positive(),\n /** Parent snapshot seq (null for root) */\n parentSeq: z.number().int().positive().nullable(),\n /** Parent snapshot ID (null for root) */\n parentId: z.string().nullable(),\n /** Unix timestamp (ms) */\n timestamp: z.number(),\n /** Human-readable name */\n name: z.string(),\n /** Checkpoint type */\n type: CheckpointTypeSchema,\n /** The main file that triggered this snapshot */\n anchorFile: z.string(),\n /** Files in snapshot (path → ref). Empty for PRE checkpoints. */\n files: z.record(z.string(), SnapshotFileRefV2Schema),\n /** Optional metadata */\n metadata: z\n .object({\n /** Risk score 0-1 */\n riskScore: z.number().min(0).max(1).optional(),\n /** Origin classification */\n origin: SnapshotOriginSchema.optional(),\n /** Stable reason codes */\n reasons: z.array(SnapshotReasonCodeSchema).optional(),\n /** AI detection info */\n aiDetection: z\n .object({\n detected: z.boolean(),\n tool: z.string().optional(),\n confidence: z.number().optional(),\n })\n .optional(),\n /** Vreko session ID */\n sessionId: z.string().optional(),\n /** External task ID */\n taskId: z.string().optional(),\n /** DORA: Time since last change */\n timeSinceLastChangeMs: z.number().optional(),\n })\n .optional(),\n});\n/**\n * V1 Snapshot Manifest - Legacy format for backward compatibility\n */\nexport const SnapshotManifestV1Schema = z.object({\n /** Unique ID */\n id: z.string(),\n /** Unix timestamp (ms) */\n timestamp: z.number(),\n /** Human-readable name */\n name: z.string(),\n /** Trigger reason */\n trigger: z.enum([\"auto\", \"manual\", \"ai-detected\", \"pre-save\"]),\n /** Main file that triggered snapshot */\n anchorFile: z.string(),\n /** Files in snapshot (path → ref) */\n files: z.record(z.string(), z.object({\n blob: z.string(),\n size: z.number(),\n })),\n /** Optional metadata */\n metadata: z\n .object({\n riskScore: z.number().optional(),\n aiDetection: z\n .object({\n detected: z.boolean(),\n tool: z.string().optional(),\n confidence: z.number().optional(),\n })\n .optional(),\n sessionId: z.string().optional(),\n taskId: z.string().optional(),\n })\n .optional(),\n});\n/**\n * Type guard for V2 manifests\n */\nexport function isSnapshotManifestV2(manifest) {\n return (typeof manifest === \"object\" &&\n manifest !== null &&\n \"schemaVersion\" in manifest &&\n manifest.schemaVersion === 2);\n}\n/**\n * Type guard for POST checkpoints (have content)\n */\nexport function isPostCheckpoint(manifest) {\n if (!isSnapshotManifestV2(manifest)) {\n return true; // V1 manifests always have content\n }\n return manifest.type === \"POST\";\n}\n/**\n * Type guard for pointer checkpoints (PRE, PRE_ROLLBACK)\n */\nexport function isPointerCheckpoint(manifest) {\n if (!isSnapshotManifestV2(manifest)) {\n return false;\n }\n return manifest.type === \"PRE\" || manifest.type === \"PRE_ROLLBACK\";\n}\n// =============================================================================\n// STORAGE METRICS (For Deduplication Transparency)\n// =============================================================================\n/**\n * Storage metrics from snapshot creation\n *\n * Provides transparency into CAS (Content-Addressable Storage) efficiency:\n * - How many files were actually written vs deduplicated\n * - Actual storage impact vs logical file count\n * - Deduplication ratio for user-facing display\n *\n * UI Display Example:\n * \"Snapshot created: 847 files (23 new, 824 deduplicated) | 94% storage saved\"\n *\n * @example\n * {\n * totalFiles: 847,\n * newBlobsWritten: 23,\n * dedupedFiles: 824,\n * dedupRatio: 0.97,\n * bytesWritten: 145920,\n * originalSize: 4832000,\n * bytesSaved: 4686080\n * }\n */\nexport const StorageMetricsSchema = z.object({\n /** Total files in snapshot */\n totalFiles: z.number().int().nonnegative(),\n /** New blobs written to storage (not deduplicated) */\n newBlobsWritten: z.number().int().nonnegative(),\n /** Files that were deduplicated (already existed in CAS) */\n dedupedFiles: z.number().int().nonnegative(),\n /** Deduplication ratio (0-1) - higher means more storage saved */\n dedupRatio: z.number().min(0).max(1),\n /** Actual bytes written to storage */\n bytesWritten: z.number().int().nonnegative(),\n /** Original size of all files (before dedup) */\n originalSize: z.number().int().nonnegative(),\n /** Storage savings in bytes (originalSize - bytesWritten) */\n bytesSaved: z.number().int().nonnegative(),\n});\n/**\n * Helper to calculate dedup ratio from metrics\n * Returns 0 if no files, avoiding division by zero\n */\nexport function calculateDedupRatio(newBlobs, totalFiles) {\n if (totalFiles === 0) {\n return 0;\n }\n return 1 - newBlobs / totalFiles;\n}\n/**\n * Create StorageMetrics from blob store results\n * Aggregates per-file isNew flags into summary metrics\n *\n * @param blobResults - Array of { size, isNew } from blob store operations\n * @returns Complete StorageMetrics object\n */\nexport function createStorageMetrics(blobResults) {\n const totalFiles = blobResults.length;\n const newBlobsWritten = blobResults.filter((r) => r.isNew).length;\n const dedupedFiles = totalFiles - newBlobsWritten;\n const originalSize = blobResults.reduce((sum, r) => sum + r.size, 0);\n const bytesWritten = blobResults.filter((r) => r.isNew).reduce((sum, r) => sum + r.size, 0);\n const bytesSaved = originalSize - bytesWritten;\n const dedupRatio = calculateDedupRatio(newBlobsWritten, totalFiles);\n return {\n totalFiles,\n newBlobsWritten,\n dedupedFiles,\n dedupRatio,\n bytesWritten,\n originalSize,\n bytesSaved,\n };\n}\n/**\n * Analytics response structure\n */\nexport const AnalyticsResponseSchema = z.object({\n workspaceId: z.string(),\n period: z.object({\n start: z.number(),\n end: z.number(),\n }),\n risk: RiskScoreDetailSchema,\n fileStats: z.object({\n total: z.number(),\n byLanguage: z.record(z.string(), z.number()),\n byRisk: z.record(z.string(), z.number()),\n }),\n snapshotStats: z.object({\n total: z.number(),\n frequency: z.number(),\n averageSize: z.number().optional(),\n }),\n snapshotRecommendations: z.object({\n shouldCreateSnapshot: z.boolean(),\n reason: z.string(),\n urgency: RiskSeveritySchema,\n suggestedTiming: z.string(),\n }),\n trends: z.object({\n risk: z.array(z.object({\n timestamp: z.number(),\n score: z.number(),\n })),\n activity: z.array(z.object({\n timestamp: z.number(),\n count: z.number(),\n })),\n }),\n});\n","import { z } from \"zod\";\n/**\n * Dashboard Data Contracts\n *\n * Type definitions for the unified dashboard page.\n * This is the contract between the dashboard API procedure and the web UI.\n */\n/**\n * Snapshot for the sessions view\n */\nexport const DashboardSnapshotSchema = z.object({\n id: z.string(),\n file: z.string(),\n message: z.string(),\n time: z.string(),\n risk: z.enum([\"Low\", \"Medium\", \"High\", \"Critical\"]),\n ai: z.string(),\n});\n/**\n * Learning velocity data point\n */\nexport const LearningDataSchema = z.object({\n day: z.string(),\n learned: z.number(),\n});\n/**\n * AI attribution data point\n */\nexport const AttributionDataSchema = z.object({\n name: z.string(),\n value: z.number(),\n color: z.string(),\n});\n/**\n * Complete dashboard data response\n */\nexport const DashboardDataSchema = z.object({\n // Pulse view\n trustScore: z.number().min(0).max(100),\n patternsCaught: z.number().int().nonnegative(),\n activeSessions: z.number().int().nonnegative(),\n // User context\n userName: z.string(),\n userInitials: z.string(),\n tier: z.string(),\n // Sessions view\n snapshots: z.array(DashboardSnapshotSchema),\n // Intelligence view\n learningVelocity: z.array(LearningDataSchema),\n aiAttribution: z.array(AttributionDataSchema),\n totalLearned: z.number().int().nonnegative(),\n growthPercentage: z.number().int().nonnegative(),\n});\n/**\n * Dashboard data error response\n */\nexport const DashboardDataErrorSchema = z.object({\n error: z.literal(true),\n code: z.enum([\"UNAUTHORIZED\", \"NOT_FOUND\", \"INTERNAL_ERROR\"]),\n message: z.string(),\n});\n/**\n * Dashboard data API response (success | error)\n */\nexport const DashboardDataResponseSchema = z.union([DashboardDataSchema, DashboardDataErrorSchema]);\n/**\n * Type guards\n */\nexport function isDashboardDataSuccess(response) {\n return !(\"error\" in response) || response.error !== true;\n}\nexport function isDashboardDataError(response) {\n return \"error\" in response && response.error === true;\n}\n","import { z } from \"zod\";\n/**\n * Dashboard Metrics Contracts\n *\n * Type definitions for dashboard home page metrics display.\n * Uses discriminated unions for type safety and exhaustive pattern matching.\n *\n * Follows Vreko TypeScript patterns:\n * - Discriminated unions (protection_status, action)\n * - Const assertions for readonly values\n * - Zod schemas for runtime validation\n */\n/**\n * Protection status discriminated union\n * Enables type-safe rendering of status-specific UI\n */\nexport const PROTECTION_STATUSES = [\"active\", \"inactive\"];\n/**\n * Recent activity action discriminated union\n * Enables type-safe handling of different activity types\n */\nexport const RECENT_ACTIVITY_ACTIONS = [\"snapshot_created\", \"recovery_performed\", \"ai_detected\"];\n/**\n * AI tool names for activity tracking\n */\nexport const AI_TOOLS = [\"copilot\", \"cursor\", \"claude\", \"windsurf\"];\n/**\n * Recent activity entry schema\n * Represents a single action in the activity feed\n *\n * Example:\n * {\n * timestamp: 1701676000000,\n * action: \"recovery_performed\",\n * file: \"src/utils/api.ts\",\n * ai_tool: \"copilot\"\n * }\n */\nexport const RecentActivitySchema = z.object({\n timestamp: z.number().int().positive(),\n action: z.enum(RECENT_ACTIVITY_ACTIONS),\n file: z.string().min(1),\n ai_tool: z.enum(AI_TOOLS).optional(),\n});\n/**\n * AI activity breakdown by tool\n * Shows how many interactions detected per AI tool\n *\n * Example:\n * {\n * copilot: 847,\n * cursor: 412,\n * claude: 183,\n * windsurf: 0\n * }\n */\nexport const AIActivityBreakdownSchema = z.object({\n copilot: z.number().int().nonnegative(),\n cursor: z.number().int().nonnegative(),\n claude: z.number().int().nonnegative(),\n windsurf: z.number().int().nonnegative().optional(),\n});\n/**\n * Dashboard metrics response\n * Complete metrics for dashboard home page display\n *\n * Properties:\n * - protection_status: Current protection state (active/inactive)\n * - total_snapshots: Lifetime snapshots created\n * - total_recoveries: Times user recovered from AI errors\n * - files_protected: Unique files with checkpoints\n * - ai_detection_rate: Percentage (0-100) of changes recognized as AI\n * - recent_activity: Last 10 actions (for activity feed)\n * - ai_breakdown: Detection count per AI tool\n *\n * Example response:\n * {\n * protection_status: \"active\",\n * total_snapshots: 1247,\n * total_recoveries: 23,\n * files_protected: 3892,\n * ai_detection_rate: 94,\n * recent_activity: [\n * {\n * timestamp: 1701676000000,\n * action: \"snapshot_created\",\n * file: \"src/utils/api.ts\",\n * ai_tool: \"copilot\"\n * }\n * ],\n * ai_breakdown: {\n * copilot: 847,\n * cursor: 412,\n * claude: 183\n * }\n * }\n */\nexport const DashboardMetricsSchema = z.object({\n protection_status: z.enum(PROTECTION_STATUSES),\n total_snapshots: z.number().int().nonnegative(),\n total_recoveries: z.number().int().nonnegative(),\n files_protected: z.number().int().nonnegative(),\n ai_detection_rate: z.number().min(0).max(100),\n recent_activity: z.array(RecentActivitySchema).max(10),\n ai_breakdown: AIActivityBreakdownSchema,\n});\n/**\n * Error response for dashboard metrics endpoint\n * Discriminated union for safe error handling\n */\nexport const DashboardMetricsErrorSchema = z.object({\n error: z.literal(true),\n code: z.enum([\"UNAUTHORIZED\", \"NOT_FOUND\", \"INTERNAL_ERROR\"]),\n message: z.string(),\n});\n/**\n * Dashboard API response (success | error)\n * Type guard helpers for pattern matching\n */\nexport const DashboardMetricsResponseSchema = z.union([DashboardMetricsSchema, DashboardMetricsErrorSchema]);\n/**\n * Type guards for discriminated unions\n * Enables safe pattern matching in UI components\n */\nexport function isDashboardMetrics(response) {\n return !(\"error\" in response) || response.error !== true;\n}\nexport function isDashboardMetricsError(response) {\n return \"error\" in response && response.error === true;\n}\nexport function isProtectionActive(metrics) {\n return metrics.protection_status === \"active\";\n}\nexport function isProtectionInactive(metrics) {\n return metrics.protection_status === \"inactive\";\n}\n","import { z } from \"zod\";\n/**\n * Pioneer Dashboard Contracts\n *\n * Complete type definitions for the Pioneer Dashboard UI.\n * This is the CONTRACT between backend (DigestService) and frontend (Dashboard UI).\n * Both teams code against this file. Changes require mutual agreement.\n *\n * Follows Vreko TypeScript patterns:\n * - Discriminated unions for state machines\n * - Const assertions for readonly values\n * - Zod schemas for runtime validation\n * - JSDoc examples for clarity\n *\n * @version 1.0.0\n * @agent-contract Backend Team + Frontend Team\n */\n// =============================================================================\n// CONSTANTS - Shared readonly values\n// =============================================================================\nexport const AI_TOOLS = [\"cursor\", \"copilot\", \"claude\"];\nexport const EVENT_TYPES = [\"ai_detected\", \"snapshot\", \"recovery\", \"quiet\"];\nexport const RISK_LEVELS = [\"high\", \"medium\", \"low\"];\nexport const FILE_CATEGORIES = [\n \"auth\",\n \"config\",\n \"api\",\n \"ui\",\n \"lib\",\n \"test\",\n \"infra\",\n \"types\",\n \"hooks\",\n \"util\",\n];\nexport const DAYS_OF_WEEK = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\nexport const PIONEER_TIERS = [\"Pioneer\", \"Active Pioneer\", \"Contributing Pioneer\", \"Founding Pioneer\"];\n// =============================================================================\n// HERO SECTION - Three-second story\n// =============================================================================\nexport const ProtectionSchema = z.object({\n score: z.number().min(0).max(100).describe(\"Protection confidence score (0-100)\"),\n risksPrevented: z.number().int().nonnegative().describe(\"Count of proactive protections this week\"),\n context: z.string().describe(\"Human-readable summary of protected areas\"),\n weekLabel: z.string().default(\"this week\").describe(\"Rolling window label\"),\n});\n// =============================================================================\n// PROOF TIMELINE - 24h activity dots\n// =============================================================================\nexport const TimelineEventSchema = z.object({\n hour: z.number().int().min(0).max(23).describe(\"Hour of day (0-23)\"),\n type: z.enum(EVENT_TYPES).describe(\"Visual category for dot color\"),\n tool: z.enum(AI_TOOLS).optional().describe(\"AI tool detected (if applicable)\"),\n file: z.string().min(1).describe(\"Relative file path\"),\n risk: z.enum(RISK_LEVELS).describe(\"Risk tier for this event\"),\n action: z.string().describe(\"What Vreko did: auto-protected | monitored | recovered\"),\n blast: z.number().int().nonnegative().optional().describe(\"Transitive dependency count\"),\n});\n// =============================================================================\n// RISK HEATMAP - File treemap\n// =============================================================================\nexport const HeatmapFileSchema = z.object({\n file: z.string().min(1).describe(\"Relative file path\"),\n risk: z.number().min(0).max(1).describe(\"Composite risk score (0-1)\"),\n changes: z.number().int().nonnegative().describe(\"Change count in rolling window\"),\n aiRatio: z.number().min(0).max(1).describe(\"Percentage of AI-authored changes (0-1)\"),\n cat: z.enum(FILE_CATEGORIES).describe(\"File category for color coding\"),\n});\n// =============================================================================\n// AI ATTRIBUTION - Donut chart\n// =============================================================================\nexport const AIAttributionSchema = z.object({\n cursor: z.number().int().nonnegative().describe(\"Percentage attributed to Cursor\"),\n copilot: z.number().int().nonnegative().describe(\"Percentage attributed to Copilot\"),\n claude: z.number().int().nonnegative().describe(\"Percentage attributed to Claude\"),\n});\n// =============================================================================\n// ACTIVITY RIVER - Weekly AI vs Human bars\n// =============================================================================\nexport const DailyActivitySchema = z.object({\n day: z.enum(DAYS_OF_WEEK).describe(\"Day of week\"),\n ai: z.number().int().nonnegative().describe(\"AI-attributed changes\"),\n human: z.number().int().nonnegative().describe(\"Human-only changes\"),\n prevented: z.number().int().nonnegative().describe(\"Proactive protections triggered\"),\n});\n// =============================================================================\n// LEARNING VELOCITY - Cumulative curve\n// =============================================================================\nexport const WeeklyVelocitySchema = z.object({\n week: z.string().min(1).describe(\"Week label (e.g., 'W1', 'W2')\"),\n learnings: z.number().int().nonnegative().describe(\"Cumulative pattern count\"),\n accuracy: z.number().min(0).max(100).describe(\"AutoDecisionEngine accuracy percentage\"),\n});\n// =============================================================================\n// PIONEER JOURNEY - Tier progression\n// =============================================================================\nexport const PioneerSchema = z.object({\n tier: z.enum(PIONEER_TIERS).describe(\"Current Pioneer tier\"),\n tierIndex: z.number().int().min(0).max(3).describe(\"Numeric index for rendering (0-3)\"),\n recentUnlock: z.string().optional().describe(\"Most recent capability unlocked\"),\n impact: z.string().describe(\"Cross-user impact statement\"),\n});\n// =============================================================================\n// QUICK INSIGHTS - Bottom stats cards\n// =============================================================================\nexport const QuickInsightsSchema = z.object({\n sessionsThisWeek: z.number().int().nonnegative().describe(\"Development sessions started\"),\n avgSessionMinutes: z.number().int().nonnegative().describe(\"Mean session length\"),\n coherencePercent: z.number().min(0).max(100).describe(\"Session coherence score\"),\n preventedToRecoveredRatio: z.string().describe(\"Ratio string like '3 : 1'\"),\n fragileFileCount: z.number().int().nonnegative().describe(\"High-change, high-risk files\"),\n fragileHotspots: z.string().describe(\"Directory summary like 'auth/ and config/'\"),\n});\n// =============================================================================\n// COMPLETE DASHBOARD SCHEMA\n// =============================================================================\nexport const UserInfoSchema = z.object({\n name: z.string().nullable().describe(\"User display name\"),\n email: z.string().email().describe(\"User email address\"),\n});\nexport const SessionMetricsSchema = z.object({\n activeSessionCount: z.number().int().nonnegative().describe(\"Currently active sessions\"),\n lastActivityTime: z.string().datetime().describe(\"ISO timestamp of last activity\"),\n});\nexport const PioneerDashboardSchema = z.object({\n version: z.literal(1).describe(\"Schema version for migrations\"),\n computedAt: z.number().int().positive().describe(\"Unix timestamp when digest was computed\"),\n // User info (from old dashboard)\n user: UserInfoSchema.describe(\"Current user information\"),\n sessionMetrics: SessionMetricsSchema.describe(\"Active session metrics\"),\n protection: ProtectionSchema.describe(\"Hero section data\"),\n timeline: z.array(TimelineEventSchema).max(24).describe(\"24h activity timeline\"),\n heatmap: z.array(HeatmapFileSchema).describe(\"File risk treemap data\"),\n ai: AIAttributionSchema.describe(\"AI tool attribution\"),\n weekly: z.array(DailyActivitySchema).length(7).describe(\"Weekly activity bars\"),\n velocity: z.array(WeeklyVelocitySchema).min(4).describe(\"Learning velocity curve\"),\n pioneer: PioneerSchema.describe(\"Pioneer journey data\"),\n insights: QuickInsightsSchema.describe(\"Quick insight cards\"),\n});\n// =============================================================================\n// API RESPONSE SCHEMAS - For oRPC procedures\n// =============================================================================\nexport const PioneerDashboardSuccessSchema = z.object({\n status: z.literal(\"success\"),\n digest: PioneerDashboardSchema,\n stalenessMinutes: z.number().int().nonnegative().describe(\"Minutes since last sync\"),\n});\nexport const PioneerDashboardEmptySchema = z.object({\n status: z.literal(\"empty\"),\n message: z.string().default(\"No digest synced yet\"),\n});\nexport const PioneerDashboardErrorSchema = z.object({\n status: z.literal(\"error\"),\n code: z.enum([\"UNAUTHORIZED\", \"NOT_FOUND\", \"INTERNAL_ERROR\"]),\n message: z.string(),\n});\nexport const PioneerDashboardResponseSchema = z.discriminatedUnion(\"status\", [\n PioneerDashboardSuccessSchema,\n PioneerDashboardEmptySchema,\n PioneerDashboardErrorSchema,\n]);\n// =============================================================================\n// TYPE GUARDS - For safe pattern matching\n// =============================================================================\nexport function isPioneerDashboardSuccess(response) {\n return response.status === \"success\";\n}\nexport function isPioneerDashboardEmpty(response) {\n return response.status === \"empty\";\n}\nexport function isPioneerDashboardError(response) {\n return response.status === \"error\";\n}\n// =============================================================================\n// MOCK DATA - For frontend development without backend\n// =============================================================================\nexport const MOCK_PIONEER_DASHBOARD = {\n version: 1,\n computedAt: Date.now(),\n user: {\n name: \"Developer\",\n email: \"developer@vreko.dev\",\n },\n sessionMetrics: {\n activeSessionCount: 2,\n lastActivityTime: new Date().toISOString(),\n },\n protection: {\n score: 86,\n risksPrevented: 3,\n context: \"high-risk AI edits to your config layer\",\n weekLabel: \"this week\",\n },\n timeline: [\n {\n hour: 4,\n type: \"ai_detected\",\n tool: \"cursor\",\n file: \"auth/middleware.ts\",\n risk: \"high\",\n action: \"auto-protected\",\n blast: 12,\n },\n { hour: 8, type: \"snapshot\", file: \"config/database.ts\", risk: \"medium\", action: \"snapshot created\" },\n { hour: 10, type: \"ai_detected\", tool: \"copilot\", file: \"api/routes.ts\", risk: \"low\", action: \"monitored\" },\n {\n hour: 16,\n type: \"recovery\",\n file: \"utils/parser.ts\",\n risk: \"high\",\n action: \"recovered from AI regression\",\n blast: 8,\n },\n {\n hour: 18,\n type: \"ai_detected\",\n tool: \"cursor\",\n file: \"components/Dashboard.tsx\",\n risk: \"medium\",\n action: \"auto-protected\",\n blast: 5,\n },\n { hour: 20, type: \"snapshot\", file: \"lib/auth.ts\", risk: \"low\", action: \"routine protection\" },\n ],\n heatmap: [\n { file: \"auth/middleware.ts\", risk: 0.92, changes: 14, aiRatio: 0.78, cat: \"auth\" },\n { file: \"config/database.ts\", risk: 0.76, changes: 8, aiRatio: 0.62, cat: \"config\" },\n { file: \"utils/parser.ts\", risk: 0.83, changes: 6, aiRatio: 0.91, cat: \"util\" },\n { file: \"middleware.ts\", risk: 0.71, changes: 7, aiRatio: 0.85, cat: \"infra\" },\n { file: \"lib/auth.ts\", risk: 0.67, changes: 11, aiRatio: 0.44, cat: \"lib\" },\n { file: \"next.config.js\", risk: 0.58, changes: 3, aiRatio: 0.67, cat: \"config\" },\n { file: \"api/routes.ts\", risk: 0.45, changes: 22, aiRatio: 0.34, cat: \"api\" },\n { file: \"package.json\", risk: 0.41, changes: 12, aiRatio: 0.08, cat: \"config\" },\n { file: \"components/Dashboard.tsx\", risk: 0.31, changes: 18, aiRatio: 0.55, cat: \"ui\" },\n { file: \"hooks/useSession.ts\", risk: 0.28, changes: 9, aiRatio: 0.22, cat: \"hooks\" },\n { file: \"tsconfig.json\", risk: 0.15, changes: 2, aiRatio: 0.0, cat: \"config\" },\n { file: \"types/index.ts\", risk: 0.12, changes: 4, aiRatio: 0.1, cat: \"types\" },\n ],\n ai: { cursor: 47, copilot: 31, claude: 22 },\n weekly: [\n { day: \"Mon\", ai: 12, human: 18, prevented: 1 },\n { day: \"Tue\", ai: 8, human: 22, prevented: 0 },\n { day: \"Wed\", ai: 15, human: 14, prevented: 2 },\n { day: \"Thu\", ai: 20, human: 10, prevented: 1 },\n { day: \"Fri\", ai: 6, human: 24, prevented: 0 },\n { day: \"Sat\", ai: 2, human: 4, prevented: 0 },\n { day: \"Sun\", ai: 0, human: 1, prevented: 0 },\n ],\n velocity: [\n { week: \"W1\", learnings: 2, accuracy: 45 },\n { week: \"W2\", learnings: 5, accuracy: 52 },\n { week: \"W3\", learnings: 9, accuracy: 61 },\n { week: \"W4\", learnings: 14, accuracy: 68 },\n { week: \"W5\", learnings: 18, accuracy: 74 },\n { week: \"W6\", learnings: 24, accuracy: 79 },\n { week: \"W7\", learnings: 31, accuracy: 83 },\n { week: \"W8\", learnings: 38, accuracy: 86 },\n ],\n pioneer: {\n tier: \"Founding Pioneer\",\n tierIndex: 3,\n recentUnlock: \"Cross-workspace pattern matching\",\n impact: \"Your patterns improved protection for 47 developers\",\n },\n insights: {\n sessionsThisWeek: 12,\n avgSessionMinutes: 47,\n coherencePercent: 89,\n preventedToRecoveredRatio: \"3 : 1\",\n fragileFileCount: 4,\n fragileHotspots: \"auth/ and config/\",\n },\n};\n// =============================================================================\n// MOCK GENERATOR - For testing different states\n// =============================================================================\nexport function generateMockDashboard(overrides) {\n return {\n ...MOCK_PIONEER_DASHBOARD,\n ...overrides,\n computedAt: Date.now(),\n };\n}\nexport function generateEmptyDashboard() {\n return {\n version: 1,\n computedAt: Date.now(),\n user: {\n name: null,\n email: \"new@vreko.dev\",\n },\n sessionMetrics: {\n activeSessionCount: 0,\n lastActivityTime: new Date().toISOString(),\n },\n protection: {\n score: 0,\n risksPrevented: 0,\n context: \"Start coding to see your protection score\",\n weekLabel: \"this week\",\n },\n timeline: [],\n heatmap: [],\n ai: { cursor: 0, copilot: 0, claude: 0 },\n weekly: DAYS_OF_WEEK.map((day) => ({ day, ai: 0, human: 0, prevented: 0 })),\n velocity: [{ week: \"W1\", learnings: 0, accuracy: 0 }],\n pioneer: {\n tier: \"Pioneer\",\n tierIndex: 0,\n impact: \"Your journey is just beginning\",\n },\n insights: {\n sessionsThisWeek: 0,\n avgSessionMinutes: 0,\n coherencePercent: 0,\n preventedToRecoveredRatio: \"0 : 0\",\n fragileFileCount: 0,\n fragileHotspots: \"No hotspots detected yet\",\n },\n };\n}\nexport function generateLowActivityDashboard() {\n return generateMockDashboard({\n protection: {\n score: 34,\n risksPrevented: 0,\n context: \"Low activity this week\",\n weekLabel: \"this week\",\n },\n timeline: [{ hour: 14, type: \"snapshot\", file: \"README.md\", risk: \"low\", action: \"routine protection\" }],\n heatmap: [{ file: \"README.md\", risk: 0.12, changes: 1, aiRatio: 0, cat: \"util\" }],\n });\n}\nexport function generateHighRiskDashboard() {\n return generateMockDashboard({\n protection: {\n score: 92,\n risksPrevented: 12,\n context: \"Multiple high-risk AI edits detected and protected\",\n weekLabel: \"this week\",\n },\n timeline: Array.from({ length: 12 }, (_, i) => ({\n hour: 2 + i * 2,\n type: i % 3 === 0 ? \"recovery\" : \"ai_detected\",\n tool: [\"cursor\", \"copilot\", \"claude\"][i % 3],\n file: `src/components/File${i}.tsx`,\n risk: [\"high\", \"medium\", \"low\"][i % 3],\n action: i % 3 === 0 ? \"recovered\" : \"auto-protected\",\n blast: Math.floor(Math.random() * 15) + 1,\n })),\n });\n}\n","import { z } from \"zod\";\n// =============================================================================\n// AI TOOL & DETECTION TYPES (Phase 1 - Contracts Compliance)\n// =============================================================================\n/**\n * Canonical enum of AI coding assistants that Vreko can detect.\n *\n * This is the cross-surface canonical list used by the detection pipeline.\n * Note: the local-service/schemas/ai-config.ts AITool enum covers agent-config\n * file formats (cursor, claude-code, cline…); this enum covers editor/IDE\n * plugin detection (copilot, codeium, tabnine, cody, continue, aider…).\n */\nexport const AIToolSchema = z.enum([\n \"cursor\",\n \"copilot\",\n \"claude\",\n \"windsurf\",\n \"codeium\",\n \"tabnine\",\n \"cody\",\n \"continue\",\n \"aider\",\n]);\n/**\n * Result of running the AI detection heuristic against a set of change events.\n *\n * This is the simple, flat version used by external API consumers.\n * The richer discriminated-union form (detected: true | false) lives in\n * local-service/schemas/entities.ts as AIDetectionResult for IPC transport.\n */\nexport const AIDetectionResultSchema = z.object({\n detected: z.boolean(),\n confidence: z.number().min(0).max(1),\n tool: AIToolSchema.nullable(),\n patterns: z.array(z.string()),\n evidence: z.array(z.string()).optional(),\n});\n","import { z } from \"zod\";\n// =============================================================================\n// AUTH CONTEXT CONTRACTS (Phase 1 - Contracts Compliance)\n// =============================================================================\n/**\n * Minimal authentication context carried through API middleware and MCP tools.\n *\n * This is distinct from the full AuthUser/Session types in auth/session.ts which\n * are tied to Better Auth's session model. AuthContextSchema is the lightweight\n * version passed via oRPC context after the middleware extracts it.\n *\n * Role definitions:\n * user - free tier authenticated user\n * pro - paid individual subscriber\n * team - team plan member\n * admin - Vreko staff (internal tooling only)\n */\nexport const AuthContextSchema = z.object({\n userId: z.string(),\n email: z.string().email(),\n role: z.enum([\"user\", \"pro\", \"team\", \"admin\"]),\n workspaceId: z.string().optional(),\n});\n","import { z } from \"zod\";\n// =============================================================================\n// RISK PRIMITIVES (Phase 1 - Contracts Compliance)\n// =============================================================================\n/**\n * Risk level classification.\n *\n * Mirrors the RiskLevel enum from local-service/schemas/primitives.ts but\n * exported here as `RiskLevelSchema` for use by SessionHealthSchema and other\n * cross-surface contracts that import from @vreko/contracts directly.\n */\nexport const RiskLevelSchema = z.enum([\"low\", \"medium\", \"high\", \"critical\"]);\n/**\n * Scalar risk score on a 0–10 scale.\n *\n * This is the canonical runtime validator for numeric risk values stored in\n * the database (snapshots.riskScore, analysis_events.riskScore, etc.).\n * The richer object form with factors + severity lives in schemas.ts as\n * RiskScoreDetailSchema; use that when you need the full breakdown.\n *\n * Scale reference:\n * low 0 – 2.9\n * medium 3.0 – 4.9\n * high 5.0 – 6.9\n * critical 7.0 – 10.0\n */\nexport const RiskScoreSchema = z.number().min(0).max(10);\n","import { z } from \"zod\";\nimport { RiskLevelSchema } from \"./risk.js\";\n// =============================================================================\n// SESSION STATE CONTRACTS (Phase 1 - Contracts Compliance)\n// =============================================================================\n/**\n * Lifecycle state of a Vreko session.\n *\n * Note: The local-service/schemas/primitives.ts SessionState has only 3 values\n * (active | idle | ended). This extended version adds \"paused\" for surfaces that\n * support explicit session pause (e.g. MCP server pause/resume).\n */\nexport const SessionStateSchema = z.enum([\"active\", \"ended\", \"idle\", \"paused\"]);\n/**\n * Health snapshot of an active session.\n *\n * Surfaced to MCP tools (snap_pulse) and the dashboard to communicate the\n * current session's risk posture and recommendations without exposing raw\n * file content.\n *\n * Field notes:\n * - recommendations: action prompts for the developer (never suggestions - that\n * name was a v0 mistake caught by the compliance suite).\n * - riskLevel: current peak risk observed in the session.\n */\nexport const SessionHealthSchema = z.object({\n sessionId: z.string(),\n state: SessionStateSchema,\n workspaceId: z.string(),\n startedAt: z.date(),\n recommendations: z.array(z.string()),\n riskLevel: RiskLevelSchema,\n});\n","// ESM imports fixed for Node.js v22+\n// packages/contracts/src/boundary/index.ts\n//\n// Trust-boundary schemas. Every place where data crosses a process, network, or\n// storage layer and was previously coerced with `as T` validates here instead.\n//\n// Invariant (mirrors §2.3): a boundary deserializer does not accept untyped input.\n// The schema is required by signature, not by convention, so a future call site\n// cannot route around it.\nimport { z } from \"zod\";\nimport { JsonRpcMessageSchema } from \"../local-service/protocol.js\";\n// ─────────────────────────────────────────────────────────────────────────────\n// TIER 0 — IPC receiver (dire)\n//\n// The daemon server already guards inbound with JsonRpcMessageSchema. This is the\n// read-path mirror: the client must not trust a line off the socket just because\n// the daemon sent it. A deformed frame here propagates into whichever thin client\n// (extension, CLI, MCP) ingested it and surfaces far from the cause.\n//\n// VERIFY BEFORE MERGE: grep the actual client type name and shape:\n// grep -rn \"IpcConnectionEvent\" packages/local-service-client/src\n// The connection-event variants below are the documented set; reconcile the\n// literal tags and payloads against the real union before locking.\n// ─────────────────────────────────────────────────────────────────────────────\nexport const IpcConnectionEventSchema = z.discriminatedUnion(\"type\", [\n z.object({ type: z.literal(\"connected\"), pid: z.number().int().optional() }),\n z.object({ type: z.literal(\"disconnected\"), reason: z.string().optional() }),\n z.object({\n type: z.literal(\"error\"),\n code: z.string().optional(),\n message: z.string(),\n }),\n // JSON-RPC traffic (responses + notifications) arrives on the same stream.\n z.object({ type: z.literal(\"message\"), payload: JsonRpcMessageSchema }),\n]);\n/**\n * Parse a single newline-delimited frame from the daemon socket.\n *\n * Returns a discriminated result rather than throwing: a single corrupt frame\n * must not kill the receiver loop. The caller logs `{ ok: false }` and drops the\n * frame, exactly as the MCP cache services should skip bad JSONL lines.\n */\nexport function parseIpcFrame(line) {\n let json;\n try {\n json = JSON.parse(line);\n }\n catch (e) {\n return { ok: false, error: `malformed JSON: ${e.message}`, raw: line };\n }\n const parsed = IpcConnectionEventSchema.safeParse(json);\n if (!parsed.success) {\n return { ok: false, error: parsed.error.message, raw: line };\n }\n return { ok: true, event: parsed.data };\n}\n// ─────────────────────────────────────────────────────────────────────────────\n// TIER 1 — CLI base API client (highest structural ROI)\n//\n// The win is the signature, not any one schema: requestJson now *requires* a\n// schema, so every CLI call site inherits validation by compilation. There is no\n// opt-out path. Infra cold starts / gateway 502s that return non-JSON HTML are\n// caught here as a typed error instead of a thrown SyntaxError deep in a command.\n// ─────────────────────────────────────────────────────────────────────────────\nexport class BoundaryError extends Error {\n kind;\n status;\n constructor(message, kind, status) {\n super(message);\n this.kind = kind;\n this.status = status;\n this.name = \"BoundaryError\";\n }\n}\n/**\n * Drop-in for the existing `(await res.json()) as T`. Pass the schema; get back a\n * validated T or a typed BoundaryError. Wire this as the only deserialize path in\n * api-client.ts so callers cannot reach the raw body.\n */\nexport async function requestJson(response, schema) {\n if (!response.ok) {\n throw new BoundaryError(`HTTP ${response.status} from ${response.url}`, \"http\", response.status);\n }\n const text = await response.text();\n let json;\n try {\n json = JSON.parse(text);\n }\n catch {\n // The 502-HTML-load-balancer case. Truncate so a full HTML page does not\n // land in logs / Sentry breadcrumbs.\n throw new BoundaryError(`expected JSON, got non-JSON body (first 120 chars): ${text.slice(0, 120)}`, \"non-json\", response.status);\n }\n const parsed = schema.safeParse(json);\n if (!parsed.success) {\n throw new BoundaryError(parsed.error.message, \"schema-mismatch\", response.status);\n }\n return parsed.data;\n}\n// Device auth payloads (Tier 1, item 3). The tiered-license edge cases live in\n// the token payload, so license fields are explicit and optional rather than\n// passed through.\nexport const DeviceCodeResponseSchema = z.object({\n device_code: z.string(),\n user_code: z.string(),\n verification_uri: z.string().url(),\n verification_uri_complete: z.string().url().optional(),\n expires_in: z.number().int().positive(),\n interval: z.number().int().positive().default(5),\n});\nexport const TokenResponseSchema = z.object({\n access_token: z.string(),\n token_type: z.string(),\n refresh_token: z.string().optional(),\n expires_in: z.number().int().positive().optional(),\n // Tiered-license fields: present on some backends, absent on others. Explicit\n // so a missing tier is `undefined`, not a crash on property access.\n license_tier: z.enum([\"pro\", \"team\", \"trial\"]).optional(),\n seats: z.number().int().optional(),\n});\n"]}