Files
AzuTear e76d88e0c7 chore: initialize repository baseline
Import the existing Electron + React + TypeScript app as the version-control
baseline before the scanner rework (C# input/capture sidecar, resolution-anchored
layout profiles, OCR preprocessing, eval harness, rescan-merge, GOOD interop).

Housekeeping in this commit:
- Remove orphaned temp_inputhelper_block.ts (duplicate of the input-helper script).
- Ignore .claude/scheduled_tasks.lock local session state.
- Add .gitattributes to normalize line endings (LF in repo).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 20:31:01 +02:00

78 lines
2.6 KiB
TypeScript

import type {
AutomationGuard,
CaptureOptions,
CaptureResult,
CaptureSourceInfo,
ClickResult,
ArtifactStoreLoadResult,
ArtifactStoreSaveResult,
ReviewSampleListResult,
ReviewSamplePayload,
LoadScannerLearningRulesResult,
SaveScannerLearningRulesResult,
SaveResultWithPath,
FocusGenshinResult,
RuntimeInfo,
BooleanResult,
ScrollResult,
ScannerStatusPayload,
ScannerLearningRulePayload,
} from "../../src/types/global.js";
import type { StoredArtifactRecord } from "../../src/types/storage.js";
import type { AppSnapshot } from "../../src/types/domain.js";
export type {
ArtifactStoreLoadResult,
ArtifactStoreSaveResult,
ReviewSampleListResult,
ReviewSamplePayload,
LoadScannerLearningRulesResult,
SaveScannerLearningRulesResult,
} from "../../src/types/global.js";
export interface ArtifactStoreRepositoryPort {
loadAll(): Promise<ArtifactStoreLoadResult>;
loadMap(): Promise<Map<string, StoredArtifactRecord>>;
saveMany(records: StoredArtifactRecord[]): Promise<ArtifactStoreSaveResult>;
}
export interface ReviewSamplesRepositoryPort {
list(limit?: number): Promise<ReviewSampleListResult>;
append(sample: ReviewSamplePayload): Promise<SaveResultWithPath>;
}
export type ScannerLearningRules = ScannerLearningRulePayload;
export interface ScannerLearningLoadResult extends LoadScannerLearningRulesResult {}
export interface ScannerLearningSaveResult extends SaveScannerLearningRulesResult {}
export interface ScannerLearningRepositoryPort {
load(): Promise<ScannerLearningLoadResult>;
save(rules: ScannerLearningRules): Promise<ScannerLearningSaveResult>;
}
export interface SnapshotRepositoryPort {
load(): Promise<AppSnapshot | null>;
save(snapshot: AppSnapshot): Promise<SaveResultWithPath>;
}
export interface RuntimeRepositoryPort {
focusMainWindow(): Promise<BooleanResult>;
moveMainWindowOffGenshin(): Promise<void>;
focusGenshinForScanStart(): Promise<FocusGenshinResult>;
publishScannerStatus(status: ScannerStatusPayload): Promise<BooleanResult>;
getRuntimeInfo(): Promise<RuntimeInfo>;
showOverlay: () => Promise<BooleanResult>;
hideOverlay: () => Promise<BooleanResult>;
}
export interface AutomationRepositoryPort {
getAutomationGuard(): Promise<AutomationGuard>;
clickScreen(x: number, y: number): Promise<ClickResult>;
scrollScreen(notches: number, anchorX?: number, anchorY?: number): Promise<ScrollResult>;
}
export interface CaptureRepositoryPort {
listSources(): Promise<CaptureSourceInfo[]>;
captureSource(sourceId: string, delayMs?: number, focusGenshin?: boolean, options?: CaptureOptions): Promise<CaptureResult>;
}