/** * LocalStore — file-backed implementation of all ForgeOS MCP tool operations. * * Activated when FORGEOS_MODE=local. Reads/writes JSON files under a local * data directory (default: .forgeos/data) instead of calling the ForgeOS API. * * File layout: * .forgeos/data/ * ├── projects/{project_id}.json * ├── initiatives/{initiative_id}.json * ├── changesets/{cs_id}.json (includes embedded pipeline) * ├── evidence/{cs_id}/{evidence_id}.json * ├── reviews/{cs_id}/{review_id}.json * ├── departments/{project_id}/{dept_id}.json * └── shared-mind/{team_id}/ * ├── observations.jsonl (append-only) * └── nodes/{domain}.json (consolidated patterns) */ import type { LocalProject, LocalInitiative, LocalChangeset, LocalGatePipeline, LocalEvidence, LocalReview, LocalObservation, LocalKnowledgeNode, InboxItem, DepartmentJoinResult, HandoffResult, RejectResult, PromoteResult, TeamStatus, SessionStartResult, ManagerDashboardResult, ManagerJoinResult, RerouteResult, DirectorDashboardResult, DrillDownResult } from "./types.js"; export declare class LocalStore { private readonly dataDir; constructor(dataDir: string); private projectPath; private initiativePath; private changesetPath; private evidenceDir; private reviewDir; private departmentPath; private observationsPath; private knowledgeNodePath; getOrCreateProject(name: string, platform?: string): LocalProject; getProject(projectId: string): LocalProject | null; createInitiative(projectId: string, title: string, description: string, priority: string): LocalInitiative; getInitiatives(projectId: string): LocalInitiative[]; createChangeset(projectId: string, initiativeId: string, description: string, filesChanged: string[], modulesAffected: string[], branch?: string): LocalChangeset & { pipeline: LocalGatePipeline; }; getChangeset(csId: string): (LocalChangeset & { pipeline: LocalGatePipeline; }) | null; getChangesets(projectId: string): LocalChangeset[]; findChangesetByBranch(projectId: string, branch: string): (LocalChangeset & { pipeline: LocalGatePipeline; }) | null; updateChangeset(csId: string, updates: Partial): void; getPipeline(csId: string): LocalGatePipeline; promoteGate(csId: string, gateId: string, promotedBy: string): PromoteResult; rejectGate(csId: string, gateId: string, reason: string): RejectResult; submitEvidence(projectId: string, csId: string, type: string, summary: string, fileRefs?: string[], metadata?: Record): LocalEvidence; getEvidence(csId: string): LocalEvidence[]; submitReview(projectId: string, csId: string, role: string, status: string, notes: string, findings: LocalReview["findings"]): LocalReview; observe(teamId: string, domain: string, sourceAgent: string, observationType: string, content: string, confidence: number, tags: string[]): LocalObservation; private updateKnowledgeNode; query(teamId: string, context: string, domain?: string): LocalKnowledgeNode[]; joinDepartment(projectId: string, departmentId: string, operatorName?: string): DepartmentJoinResult; getInbox(projectId: string, departmentId: string): InboxItem[]; handoff(projectId: string, csId: string, gateId: string, notes?: string, artifactsSummary?: string): HandoffResult; reject(projectId: string, csId: string, gateId: string, reason: string): RejectResult; getTeamStatus(projectId: string): TeamStatus; /** * Compute the time (in ms) a changeset has been at its current active gate. * Uses the gate's promoted_at / rejected_at timestamp if available, or falls * back to the changeset's updated_at, then created_at. */ private timeAtCurrentGateMs; /** * Build a PipelineItem for a changeset, enriching with reroute history. */ private buildPipelineItem; /** * Build the full manager dashboard for a project. */ private buildManagerDashboard; managerJoin(projectId: string, managerName?: string): ManagerJoinResult; managerDashboard(projectId: string): ManagerDashboardResult; managerReroute(projectId: string, csId: string, targetDepartment: string, reason: string): RerouteResult; directorDashboard(_orgId?: string): DirectorDashboardResult; directorDrillDown(projectId: string, changesetId?: string): DrillDownResult; sessionStart(workDescription?: string, developerId?: string): SessionStartResult; sessionEnd(projectId: string, csId: string, outcome: string, summary: string, filesChanged?: string[], modulesAffected?: string[]): void; } //# sourceMappingURL=store.d.ts.map