@zigrivers/surface-core 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-LQZM4L5I.js → chunk-27JCE5FY.js} +1 -1
- package/dist/{chunk-LQZM4L5I.js.map → chunk-27JCE5FY.js.map} +1 -1
- package/dist/index.d.ts +2113 -9
- package/dist/index.js +9662 -4444
- package/dist/index.js.map +1 -1
- package/dist/{interfaces-OHgLgNLO.d.ts → interfaces-DISqY_P4.d.ts} +54 -1
- package/dist/interfaces-Ij_uyDVh.d.ts +2718 -0
- package/dist/interfaces.d.ts +1 -1
- package/dist/interfaces.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interfaces.ts"],"sourcesContent":["import type { SurfaceConfig, AppType } from \"./config.js\";\nimport type { Result, SurfaceError } from \"./errors.js\";\nimport type {\n Backlog as FindingsBacklog,\n Evidence,\n EvaluationMethod,\n Finding,\n FindingDraft,\n ToolResultEvidence,\n} from \"./findings.js\";\nimport type { ModelProvider } from \"./model-provider.js\";\nimport type { Baseline, TrackedFinding } from \"./tracked-findings.js\";\nexport type { Backlog, BacklogEntry } from \"./findings.js\";\nexport type { ModelProvider } from \"./model-provider.js\";\nexport type { Baseline } from \"./tracked-findings.js\";\n\ntype MaybePromise<T> = T | Promise<T>;\n\nexport type ViewportLabel = \"mobile\" | \"tablet\" | \"desktop\";\nexport type Theme = \"light\" | \"dark\";\n\nexport interface Viewport {\n readonly width: number;\n readonly height: number;\n readonly label: ViewportLabel;\n}\n\n// Target kind is the stable capture input contract, not a plugin extension identifier.\nexport type TargetKind = \"url\" | \"localhost\" | \"route\" | \"screenshot\" | \"component\" | \"dom\";\n\nexport interface Target {\n readonly kind: TargetKind;\n readonly ref: string;\n readonly viewport?: Viewport;\n readonly theme?: Theme;\n}\n\nexport type BuiltInCaptureBackendId = \"playwright\" | \"agent-browser\" | \"static\";\nexport type CaptureArtifactType =\n | \"screenshot\"\n | \"dom-snapshot\"\n | \"accessibility-tree\"\n | \"computed-styles\";\n\nexport interface CaptureArtifact {\n readonly id: string;\n readonly type: CaptureArtifactType;\n readonly path: string;\n readonly redacted: boolean;\n}\n\nexport interface DegradationReport {\n readonly skippedArtifacts: CaptureArtifactType[];\n readonly skippedReason: string;\n}\n\nexport interface TargetVerification {\n readonly authInjectedBeforeNavigation: boolean;\n readonly isRequestedTarget: boolean;\n readonly landedUrl: string;\n readonly requestedUrl: string;\n}\n\n// Capture status is a closed lifecycle state machine owned by the Capture domain.\nexport type CaptureStatus = \"requested\" | \"completed\" | \"degraded\" | \"auth-failed\" | \"unreachable\";\n\nexport interface Capture {\n readonly id: string;\n readonly target: Target;\n readonly backend: string;\n readonly authUsed?: boolean;\n readonly artifacts: CaptureArtifact[];\n readonly degradation?: DegradationReport;\n readonly verification?: TargetVerification;\n readonly capturedAt: string;\n readonly status: CaptureStatus;\n}\n\nexport interface CaptureNetworkPolicy {\n readonly allowlist: readonly string[];\n readonly targetHost: string;\n readonly targetOrigin: string;\n readonly resolvedAddresses: readonly string[];\n readonly blockPrivateNetwork: boolean;\n readonly enforceOnNavigation: true;\n readonly enforceOnRedirects: true;\n readonly enforceOnSubresources: true;\n}\n\nexport interface CaptureOptions {\n readonly config: SurfaceConfig[\"capture\"];\n readonly artifactRoot?: string;\n readonly artifactWriter?: ArtifactWriter;\n readonly authStateRef?: string;\n readonly computedStyleLimit?: number;\n readonly navigationTimeoutMs?: number;\n readonly navigationWaitUntil?: \"domcontentloaded\" | \"load\";\n readonly networkPolicy?: CaptureNetworkPolicy;\n}\n\nexport interface CaptureBackend {\n readonly id: string;\n detect(): boolean;\n observe(target: Target, options: CaptureOptions): MaybePromise<Result<Capture, SurfaceError>>;\n}\n\nexport interface SourceFileRef {\n readonly path: string;\n readonly contents: string;\n}\n\nexport interface ComponentMapEntry {\n readonly component: string;\n readonly file: string;\n readonly selectors: string[];\n}\n\nexport interface ComponentMap {\n readonly entries: ComponentMapEntry[];\n}\n\nexport interface FrameworkAdapter {\n readonly id: string;\n supports(file: string): boolean;\n introspect(source: SourceFileRef): MaybePromise<Result<ComponentMap, SurfaceError>>;\n}\n\nexport interface ToolResult {\n readonly tool: string;\n readonly evidence: ToolResultEvidence[];\n}\n\nexport interface GroundingTool {\n readonly id: string;\n run(capture: Capture): MaybePromise<Result<ToolResult[], SurfaceError>>;\n}\n\nexport interface LensContext {\n readonly capture: Capture;\n readonly config: SurfaceConfig;\n readonly evidence: Evidence[];\n readonly knowledge: KnowledgeSource;\n readonly model?: ModelProvider;\n}\n\nexport interface Lens {\n readonly id: string;\n readonly method: EvaluationMethod;\n readonly requiresModel: boolean;\n readonly requiresLiveDom: boolean;\n evaluate(context: LensContext): MaybePromise<Result<FindingDraft[], SurfaceError>>;\n}\n\nexport type BuiltInReportFormat =\n | \"findings-md\"\n | \"findings-json\"\n | \"backlog\"\n | \"agent-plan\"\n | \"validation-report\"\n | \"explain-md\"\n | \"explain-json\"\n | \"sarif\"\n | \"alternatives\"\n | \"diff\";\n\nexport type ReportFormat = string;\n\nexport interface Report {\n readonly format: ReportFormat;\n readonly bytes: Uint8Array;\n readonly byteStable: boolean;\n}\n\nexport interface ReportRenderer {\n readonly format: ReportFormat;\n render(\n findings: readonly Finding[],\n backlog: FindingsBacklog,\n ): MaybePromise<Result<Report, SurfaceError>>;\n}\n\nexport type GatePolicy = SurfaceConfig[\"reporting\"][\"gatePolicy\"];\n\nexport interface GateResult {\n readonly passed: boolean;\n readonly failingFindingIds: string[];\n readonly exitCode: 0 | 1 | 2;\n readonly baselineId?: string;\n}\n\nexport type GateEvaluationContext = {\n readonly baseline?: Baseline;\n readonly trackedFindings?: readonly TrackedFinding[];\n readonly now?: Date | string;\n};\n\nexport interface GateEvaluator {\n evaluate(\n findings: readonly Finding[],\n policy: GatePolicy,\n context?: GateEvaluationContext,\n ): MaybePromise<Result<GateResult, SurfaceError>>;\n}\n\nexport interface LocalBacklogRef {\n readonly path: string;\n readonly backlogId: string;\n}\n\nexport type BuiltInIssueExportTarget = \"github\" | \"linear\" | \"jira\";\nexport type IssueExportTarget = string;\n\nexport interface IssueExport {\n readonly id: string;\n readonly target: IssueExportTarget;\n readonly synced: string[];\n readonly unsynced: string[];\n readonly status: \"complete\" | \"partial\" | \"failed\";\n}\n\nexport interface IssueExporter {\n readonly target: IssueExportTarget;\n export(backlog: LocalBacklogRef): MaybePromise<Result<IssueExport, SurfaceError>>;\n}\n\nexport const KNOWLEDGE_CATEGORIES = [\n \"core-heuristics\",\n \"accessibility\",\n \"forms\",\n \"navigation\",\n \"states\",\n \"visual-content\",\n \"design-systems\",\n \"conversion\",\n \"platform-web\",\n \"agent-implementation\",\n \"dashboards\",\n \"data-viz\",\n \"e-commerce\",\n \"saas-onboarding\",\n \"admin\",\n \"search-discovery\",\n \"trust-safety\",\n \"i18n\",\n] as const;\nexport type KnowledgeCategory = (typeof KNOWLEDGE_CATEGORIES)[number];\n\nexport const FRESHNESS_VOLATILITIES = [\"stable\", \"evolving\", \"volatile\"] as const;\nexport type FreshnessVolatility = (typeof FRESHNESS_VOLATILITIES)[number];\n\nexport interface Citation {\n readonly source: string;\n readonly url?: string;\n readonly retrievedAt: string;\n}\n\nexport interface Freshness {\n readonly volatility: FreshnessVolatility;\n readonly lastReviewed: string;\n}\n\nexport interface KnowledgeEntry {\n readonly id: string;\n readonly title: string;\n readonly summary: string;\n readonly category?: KnowledgeCategory;\n readonly deepGuidance?: string;\n readonly citation?: Citation;\n readonly freshness?: Freshness;\n readonly appliesToAppTypes?: readonly AppType[];\n readonly appliesToLenses?: readonly string[];\n readonly steps?: readonly string[];\n readonly tags?: readonly string[];\n readonly draft?: boolean;\n readonly sourcePath?: string;\n}\n\nexport interface RelevanceQuery {\n readonly lensId: string;\n readonly appType: string;\n readonly step: string;\n}\n\nexport interface KnowledgeSource {\n query(relevanceQuery: RelevanceQuery): MaybePromise<Result<KnowledgeEntry[], SurfaceError>>;\n resolve(id: string): MaybePromise<Result<KnowledgeEntry, SurfaceError>>;\n}\n\nexport interface PersistArtifactIntent {\n readonly kind: \"capture\" | \"report\" | \"generated\";\n readonly relativePath: string;\n readonly bytes: Uint8Array;\n}\n\nexport interface PersistedArtifactRef {\n readonly path: string;\n readonly sha256: string;\n}\n\nexport interface ArtifactWriter {\n writeArtifact(\n intent: PersistArtifactIntent,\n ): MaybePromise<Result<PersistedArtifactRef, SurfaceError>>;\n}\n\nexport interface ProjectStateSnapshot {\n readonly version: string;\n readonly baselines?: readonly Baseline[];\n readonly backlog?: ProjectBacklogSnapshot;\n readonly currentStage?: string;\n readonly findings?: readonly ProjectFindingSnapshot[];\n readonly runRecords?: readonly ProjectRunRecord[];\n readonly discovery?: {\n readonly [key: string]: unknown;\n readonly appType?: AppType;\n readonly classification?: {\n readonly [key: string]: unknown;\n readonly appType: AppType;\n readonly matchedSignals: readonly string[];\n readonly source: \"config\" | \"route-inventory\" | \"target-ref\" | \"generic-fallback\";\n };\n readonly events?: readonly {\n readonly [key: string]: unknown;\n readonly type: string;\n }[];\n readonly overlayId?: AppType;\n readonly personaTask?: {\n readonly [key: string]: unknown;\n readonly persona: string;\n readonly task: string;\n };\n readonly routeInventory?: {\n readonly [key: string]: unknown;\n readonly cap: number;\n readonly routes: readonly {\n readonly [key: string]: unknown;\n readonly path: string;\n readonly source: \"target\" | \"candidate\";\n }[];\n readonly skipped: readonly {\n readonly [key: string]: unknown;\n readonly path: string;\n readonly reason: \"route_cap_exceeded\";\n readonly source: \"target\" | \"candidate\";\n }[];\n };\n readonly runId?: string;\n };\n // Runtime and persistence schemas validate trimmed run ids and known stage ids.\n // The interface remains structurally open so additive pipeline metadata can\n // survive passthrough reads and writes.\n readonly pipeline?: {\n readonly [key: string]: unknown;\n readonly activeConfig?: SurfaceConfig;\n readonly lastCompletedStage?: string | undefined;\n readonly nextEventSequence?: number | undefined;\n readonly runId: string;\n readonly stageIds: readonly string[];\n };\n readonly trackedFindings?: readonly TrackedFinding[];\n readonly verdicts?: readonly ProjectVerdictSnapshot[];\n}\n\nexport interface ProjectBacklogSnapshot {\n readonly id: string;\n readonly runId: string;\n readonly entries: readonly unknown[];\n}\n\nexport interface ProjectFindingSnapshot {\n readonly id: string;\n}\n\nexport interface ProjectRunRecord {\n readonly runId: string;\n readonly status?: \"completed\" | \"failed\";\n readonly backlog?: FindingsBacklog;\n readonly capture?: Capture;\n readonly findings?: readonly Finding[];\n readonly skippedLenses?: readonly {\n readonly lensId: string;\n readonly message: string;\n readonly reason: string;\n }[];\n readonly trackedFindings: readonly TrackedFinding[];\n}\n\nexport interface ProjectVerdictSnapshot {\n readonly decision: string;\n readonly findingId: string;\n readonly rationale: string;\n}\n\nexport interface StateStore {\n readState(): MaybePromise<Result<ProjectStateSnapshot, SurfaceError>>;\n writeState(state: ProjectStateSnapshot): MaybePromise<Result<ProjectStateSnapshot, SurfaceError>>;\n /**\n * Apply a read-modify-write update under the store's native atomicity\n * boundary. File-backed stores should hold a file lock; transactional stores\n * should run the updater inside a transaction. Production stores should\n * implement this method when callers need race-free state updates; callers may\n * keep readState/writeState fallback paths only for backward compatibility.\n */\n updateState?(\n updater: (state: ProjectStateSnapshot) => ProjectStateSnapshot,\n ): MaybePromise<Result<ProjectStateSnapshot, SurfaceError>>;\n writeArtifact(\n intent: PersistArtifactIntent,\n ): MaybePromise<Result<PersistedArtifactRef, SurfaceError>>;\n}\n"],"mappings":";AAiOO,IAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,IAAM,yBAAyB,CAAC,UAAU,YAAY,UAAU;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/interfaces.ts"],"sourcesContent":["import type { SurfaceConfig, AppType } from \"./config.js\";\nimport type { Result, SurfaceError } from \"./errors.js\";\nimport type {\n Backlog as FindingsBacklog,\n Evidence,\n EvaluationMethod,\n Finding,\n FindingDraft,\n ToolResultEvidence,\n} from \"./findings.js\";\nimport type { ModelProvider } from \"./model-provider.js\";\nimport type { Baseline, TrackedFinding } from \"./tracked-findings.js\";\nexport type { Backlog, BacklogEntry } from \"./findings.js\";\nexport type { ModelProvider } from \"./model-provider.js\";\nexport type { Baseline } from \"./tracked-findings.js\";\n\ntype MaybePromise<T> = T | Promise<T>;\n\nexport type ViewportLabel = \"mobile\" | \"tablet\" | \"desktop\";\nexport type Theme = \"light\" | \"dark\";\n\nexport interface Viewport {\n readonly width: number;\n readonly height: number;\n readonly label: ViewportLabel;\n}\n\n// Target kind is the stable capture input contract, not a plugin extension identifier.\nexport type TargetKind = \"url\" | \"localhost\" | \"route\" | \"screenshot\" | \"component\" | \"dom\";\n\nexport interface Target {\n readonly kind: TargetKind;\n readonly ref: string;\n readonly viewport?: Viewport;\n readonly theme?: Theme;\n}\n\nexport type BuiltInCaptureBackendId = \"playwright\" | \"agent-browser\" | \"static\";\nexport type CaptureArtifactType =\n | \"screenshot\"\n | \"dom-snapshot\"\n | \"accessibility-tree\"\n | \"computed-styles\";\n\nexport interface CaptureArtifact {\n readonly id: string;\n readonly type: CaptureArtifactType;\n readonly path: string;\n readonly redacted: boolean;\n}\n\nexport interface DegradationReport {\n readonly skippedArtifacts: CaptureArtifactType[];\n readonly skippedReason: string;\n}\n\nexport interface TargetVerification {\n readonly authInjectedBeforeNavigation: boolean;\n readonly isRequestedTarget: boolean;\n readonly landedUrl: string;\n readonly requestedUrl: string;\n}\n\n// Capture status is a closed lifecycle state machine owned by the Capture domain.\nexport type CaptureStatus = \"requested\" | \"completed\" | \"degraded\" | \"auth-failed\" | \"unreachable\";\n\nexport interface Capture {\n readonly id: string;\n readonly target: Target;\n readonly backend: string;\n readonly authUsed?: boolean;\n readonly artifacts: CaptureArtifact[];\n readonly degradation?: DegradationReport;\n readonly verification?: TargetVerification;\n readonly capturedAt: string;\n readonly status: CaptureStatus;\n}\n\nexport interface CaptureNetworkPolicy {\n readonly allowlist: readonly string[];\n readonly targetHost: string;\n readonly targetOrigin: string;\n readonly resolvedAddresses: readonly string[];\n readonly blockPrivateNetwork: boolean;\n readonly enforceOnNavigation: true;\n readonly enforceOnRedirects: true;\n readonly enforceOnSubresources: true;\n}\n\nexport interface CaptureOptions {\n readonly config: SurfaceConfig[\"capture\"];\n readonly artifactRoot?: string;\n readonly artifactWriter?: ArtifactWriter;\n readonly authStateRef?: string;\n readonly computedStyleLimit?: number;\n readonly navigationTimeoutMs?: number;\n readonly navigationWaitUntil?: \"domcontentloaded\" | \"load\";\n readonly networkPolicy?: CaptureNetworkPolicy;\n}\n\nexport interface CaptureBackend {\n readonly id: string;\n detect(): boolean;\n observe(target: Target, options: CaptureOptions): MaybePromise<Result<Capture, SurfaceError>>;\n}\n\nexport interface SourceFileRef {\n readonly path: string;\n readonly contents: string;\n}\n\nexport interface ComponentMapEntry {\n readonly component: string;\n readonly file: string;\n readonly selectors: string[];\n}\n\nexport interface ComponentMap {\n readonly entries: ComponentMapEntry[];\n}\n\nexport interface FrameworkAdapter {\n readonly id: string;\n supports(file: string): boolean;\n introspect(source: SourceFileRef): MaybePromise<Result<ComponentMap, SurfaceError>>;\n}\n\nexport interface ToolResult {\n readonly tool: string;\n readonly evidence: ToolResultEvidence[];\n}\n\nexport interface GroundingTool {\n readonly id: string;\n run(capture: Capture): MaybePromise<Result<ToolResult[], SurfaceError>>;\n}\n\nexport interface LensContext {\n readonly capture: Capture;\n readonly config: SurfaceConfig;\n readonly evidence: Evidence[];\n readonly knowledge: KnowledgeSource;\n readonly model?: ModelProvider;\n}\n\nexport interface Lens {\n readonly id: string;\n readonly method: EvaluationMethod;\n readonly requiresModel: boolean;\n readonly requiresLiveDom: boolean;\n evaluate(context: LensContext): MaybePromise<Result<FindingDraft[], SurfaceError>>;\n}\n\nexport type BuiltInReportFormat =\n | \"findings-md\"\n | \"findings-json\"\n | \"backlog\"\n | \"agent-plan\"\n | \"validation-report\"\n | \"explain-md\"\n | \"explain-json\"\n | \"sarif\"\n | \"alternatives\"\n | \"diff\";\n\nexport type ReportFormat = string;\n\nexport interface Report {\n readonly format: ReportFormat;\n readonly bytes: Uint8Array;\n readonly byteStable: boolean;\n}\n\nexport interface ReportRenderer {\n readonly format: ReportFormat;\n render(\n findings: readonly Finding[],\n backlog: FindingsBacklog,\n ): MaybePromise<Result<Report, SurfaceError>>;\n}\n\nexport type GatePolicy = SurfaceConfig[\"reporting\"][\"gatePolicy\"];\n\nexport interface GateResult {\n readonly passed: boolean;\n readonly failingFindingIds: string[];\n readonly exitCode: 0 | 1 | 2;\n readonly baselineId?: string;\n}\n\nexport type GateEvaluationContext = {\n readonly baseline?: Baseline;\n readonly trackedFindings?: readonly TrackedFinding[];\n readonly now?: Date | string;\n};\n\nexport interface GateEvaluator {\n evaluate(\n findings: readonly Finding[],\n policy: GatePolicy,\n context?: GateEvaluationContext,\n ): MaybePromise<Result<GateResult, SurfaceError>>;\n}\n\nexport interface LocalBacklogRef {\n readonly path: string;\n readonly backlogId: string;\n}\n\nexport type BuiltInIssueExportTarget = \"github\" | \"linear\" | \"jira\";\nexport type IssueExportTarget = string;\n\nexport interface IssueExport {\n readonly id: string;\n readonly target: IssueExportTarget;\n readonly synced: string[];\n readonly unsynced: string[];\n readonly status: \"complete\" | \"partial\" | \"failed\";\n}\n\nexport interface IssueExporter {\n readonly target: IssueExportTarget;\n export(backlog: LocalBacklogRef): MaybePromise<Result<IssueExport, SurfaceError>>;\n}\n\nexport const KNOWLEDGE_CATEGORIES = [\n \"core-heuristics\",\n \"accessibility\",\n \"forms\",\n \"navigation\",\n \"states\",\n \"visual-content\",\n \"design-systems\",\n \"conversion\",\n \"platform-web\",\n \"agent-implementation\",\n \"dashboards\",\n \"data-viz\",\n \"e-commerce\",\n \"saas-onboarding\",\n \"admin\",\n \"search-discovery\",\n \"trust-safety\",\n \"i18n\",\n] as const;\nexport type KnowledgeCategory = (typeof KNOWLEDGE_CATEGORIES)[number];\n\nexport const FRESHNESS_VOLATILITIES = [\"stable\", \"evolving\", \"volatile\"] as const;\nexport type FreshnessVolatility = (typeof FRESHNESS_VOLATILITIES)[number];\n\nexport interface Citation {\n readonly source: string;\n readonly url?: string;\n readonly retrievedAt: string;\n}\n\nexport interface Freshness {\n readonly volatility: FreshnessVolatility;\n readonly lastReviewed: string;\n}\n\nexport interface KnowledgeEntry {\n readonly id: string;\n readonly title: string;\n readonly summary: string;\n readonly category?: KnowledgeCategory;\n readonly deepGuidance?: string;\n readonly citation?: Citation;\n readonly freshness?: Freshness;\n readonly appliesToAppTypes?: readonly AppType[];\n readonly appliesToLenses?: readonly string[];\n readonly steps?: readonly string[];\n readonly tags?: readonly string[];\n readonly draft?: boolean;\n readonly sourcePath?: string;\n}\n\nexport interface RelevanceQuery {\n readonly lensId: string;\n readonly appType: string;\n readonly step: string;\n}\n\nexport interface KnowledgeSource {\n query(relevanceQuery: RelevanceQuery): MaybePromise<Result<KnowledgeEntry[], SurfaceError>>;\n resolve(id: string): MaybePromise<Result<KnowledgeEntry, SurfaceError>>;\n}\n\nexport interface PersistArtifactIntent {\n readonly kind: \"capture\" | \"report\" | \"generated\";\n readonly relativePath: string;\n readonly bytes: Uint8Array;\n}\n\nexport interface PersistedArtifactRef {\n readonly path: string;\n readonly sha256: string;\n}\n\nexport interface QaSidecarRef {\n readonly id: string;\n readonly manifestDigest?: string;\n readonly path: string;\n}\n\nexport interface ArtifactWriter {\n writeArtifact(\n intent: PersistArtifactIntent,\n ): MaybePromise<Result<PersistedArtifactRef, SurfaceError>>;\n}\n\nexport interface ProjectStateSnapshot {\n readonly version: string;\n readonly baselines?: readonly Baseline[];\n readonly backlog?: ProjectBacklogSnapshot;\n readonly currentStage?: string;\n readonly findings?: readonly ProjectFindingSnapshot[];\n readonly runRecords?: readonly ProjectRunRecord[];\n readonly discovery?: {\n readonly [key: string]: unknown;\n readonly appType?: AppType;\n readonly classification?: {\n readonly [key: string]: unknown;\n readonly appType: AppType;\n readonly matchedSignals: readonly string[];\n readonly source: \"config\" | \"route-inventory\" | \"target-ref\" | \"generic-fallback\";\n };\n readonly events?: readonly {\n readonly [key: string]: unknown;\n readonly type: string;\n }[];\n readonly overlayId?: AppType;\n readonly personaTask?: {\n readonly [key: string]: unknown;\n readonly persona: string;\n readonly task: string;\n };\n readonly routeInventory?: {\n readonly [key: string]: unknown;\n readonly cap: number;\n readonly routes: readonly {\n readonly [key: string]: unknown;\n readonly path: string;\n readonly source: \"target\" | \"candidate\";\n }[];\n readonly skipped: readonly {\n readonly [key: string]: unknown;\n readonly path: string;\n readonly reason: \"route_cap_exceeded\";\n readonly source: \"target\" | \"candidate\";\n }[];\n };\n readonly runId?: string;\n };\n // Runtime and persistence schemas validate trimmed run ids and known stage ids.\n // The interface remains structurally open so additive pipeline metadata can\n // survive passthrough reads and writes.\n readonly pipeline?: {\n readonly [key: string]: unknown;\n readonly activeConfig?: SurfaceConfig;\n readonly lastCompletedStage?: string | undefined;\n readonly nextEventSequence?: number | undefined;\n readonly runId: string;\n readonly stageIds: readonly string[];\n };\n readonly trackedFindings?: readonly TrackedFinding[];\n readonly verdicts?: readonly ProjectVerdictSnapshot[];\n}\n\nexport interface ProjectBacklogSnapshot {\n readonly id: string;\n readonly runId: string;\n readonly entries: readonly unknown[];\n}\n\nexport interface ProjectFindingSnapshot {\n readonly id: string;\n}\n\nexport interface ProjectRunRecord {\n readonly runId: string;\n readonly status?: \"completed\" | \"failed\";\n readonly backlog?: FindingsBacklog;\n readonly capture?: Capture;\n readonly findings?: readonly Finding[];\n readonly skippedLenses?: readonly {\n readonly lensId: string;\n readonly message: string;\n readonly reason: string;\n }[];\n readonly trackedFindings: readonly TrackedFinding[];\n}\n\nexport interface ProjectVerdictSnapshot {\n readonly decision: string;\n readonly findingId: string;\n readonly rationale: string;\n}\n\nexport interface StateStore {\n readState(): MaybePromise<Result<ProjectStateSnapshot, SurfaceError>>;\n writeState(state: ProjectStateSnapshot): MaybePromise<Result<ProjectStateSnapshot, SurfaceError>>;\n /**\n * Apply a read-modify-write update under the store's native atomicity\n * boundary. File-backed stores should hold a file lock; transactional stores\n * should run the updater inside a transaction. Production stores should\n * implement this method when callers need race-free state updates; callers may\n * keep readState/writeState fallback paths only for backward compatibility.\n */\n updateState?(\n updater: (state: ProjectStateSnapshot) => ProjectStateSnapshot,\n ): MaybePromise<Result<ProjectStateSnapshot, SurfaceError>>;\n writeArtifact(\n intent: PersistArtifactIntent,\n ): MaybePromise<Result<PersistedArtifactRef, SurfaceError>>;\n}\n"],"mappings":";AAiOO,IAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGO,IAAM,yBAAyB,CAAC,UAAU,YAAY,UAAU;","names":[]}
|