openplanr 1.13.2 → 1.14.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/README.md +46 -4
- package/dist/cli/commands/artifact.d.ts.map +1 -1
- package/dist/cli/commands/artifact.js +17 -6
- package/dist/cli/commands/artifact.js.map +1 -1
- package/dist/cli/commands/operate.d.ts +3 -0
- package/dist/cli/commands/operate.d.ts.map +1 -0
- package/dist/cli/commands/operate.js +568 -0
- package/dist/cli/commands/operate.js.map +1 -0
- package/dist/cli/index.js +42 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/services/ai-service.d.ts +9 -2
- package/dist/services/ai-service.d.ts.map +1 -1
- package/dist/services/ai-service.js +14 -6
- package/dist/services/ai-service.js.map +1 -1
- package/dist/services/artifact-pipeline-service.d.ts +1 -0
- package/dist/services/artifact-pipeline-service.d.ts.map +1 -1
- package/dist/services/artifact-pipeline-service.js.map +1 -1
- package/dist/services/delta-apply-service.js +1 -1
- package/dist/services/delta-apply-service.js.map +1 -1
- package/dist/services/operate/advisors.d.ts +219 -0
- package/dist/services/operate/advisors.d.ts.map +1 -0
- package/dist/services/operate/advisors.js +745 -0
- package/dist/services/operate/advisors.js.map +1 -0
- package/dist/services/operate/artifact-route-generation.d.ts +111 -0
- package/dist/services/operate/artifact-route-generation.d.ts.map +1 -0
- package/dist/services/operate/artifact-route-generation.js +459 -0
- package/dist/services/operate/artifact-route-generation.js.map +1 -0
- package/dist/services/operate/artifacts.d.ts +26 -0
- package/dist/services/operate/artifacts.d.ts.map +1 -0
- package/dist/services/operate/artifacts.js +92 -0
- package/dist/services/operate/artifacts.js.map +1 -0
- package/dist/services/operate/canonical.d.ts +18 -0
- package/dist/services/operate/canonical.d.ts.map +1 -0
- package/dist/services/operate/canonical.js +157 -0
- package/dist/services/operate/canonical.js.map +1 -0
- package/dist/services/operate/config.d.ts +56 -0
- package/dist/services/operate/config.d.ts.map +1 -0
- package/dist/services/operate/config.js +644 -0
- package/dist/services/operate/config.js.map +1 -0
- package/dist/services/operate/consolidation.d.ts +18 -0
- package/dist/services/operate/consolidation.d.ts.map +1 -0
- package/dist/services/operate/consolidation.js +539 -0
- package/dist/services/operate/consolidation.js.map +1 -0
- package/dist/services/operate/doctor.d.ts +12 -0
- package/dist/services/operate/doctor.d.ts.map +1 -0
- package/dist/services/operate/doctor.js +307 -0
- package/dist/services/operate/doctor.js.map +1 -0
- package/dist/services/operate/engine.d.ts +53 -0
- package/dist/services/operate/engine.d.ts.map +1 -0
- package/dist/services/operate/engine.js +1097 -0
- package/dist/services/operate/engine.js.map +1 -0
- package/dist/services/operate/event-store.d.ts +57 -0
- package/dist/services/operate/event-store.d.ts.map +1 -0
- package/dist/services/operate/event-store.js +232 -0
- package/dist/services/operate/event-store.js.map +1 -0
- package/dist/services/operate/evidence-cache.d.ts +17 -0
- package/dist/services/operate/evidence-cache.d.ts.map +1 -0
- package/dist/services/operate/evidence-cache.js +96 -0
- package/dist/services/operate/evidence-cache.js.map +1 -0
- package/dist/services/operate/evidence-import.d.ts +40 -0
- package/dist/services/operate/evidence-import.d.ts.map +1 -0
- package/dist/services/operate/evidence-import.js +340 -0
- package/dist/services/operate/evidence-import.js.map +1 -0
- package/dist/services/operate/evidence-readiness.d.ts +8 -0
- package/dist/services/operate/evidence-readiness.d.ts.map +1 -0
- package/dist/services/operate/evidence-readiness.js +78 -0
- package/dist/services/operate/evidence-readiness.js.map +1 -0
- package/dist/services/operate/evidence.d.ts +71 -0
- package/dist/services/operate/evidence.d.ts.map +1 -0
- package/dist/services/operate/evidence.js +1022 -0
- package/dist/services/operate/evidence.js.map +1 -0
- package/dist/services/operate/ids.d.ts +7 -0
- package/dist/services/operate/ids.d.ts.map +1 -0
- package/dist/services/operate/ids.js +23 -0
- package/dist/services/operate/ids.js.map +1 -0
- package/dist/services/operate/index.d.ts +14 -0
- package/dist/services/operate/index.d.ts.map +1 -0
- package/dist/services/operate/index.js +881 -0
- package/dist/services/operate/index.js.map +1 -0
- package/dist/services/operate/journal.d.ts +34 -0
- package/dist/services/operate/journal.d.ts.map +1 -0
- package/dist/services/operate/journal.js +229 -0
- package/dist/services/operate/journal.js.map +1 -0
- package/dist/services/operate/legacy-import-service.d.ts +58 -0
- package/dist/services/operate/legacy-import-service.d.ts.map +1 -0
- package/dist/services/operate/legacy-import-service.js +922 -0
- package/dist/services/operate/legacy-import-service.js.map +1 -0
- package/dist/services/operate/lifecycle.d.ts +88 -0
- package/dist/services/operate/lifecycle.d.ts.map +1 -0
- package/dist/services/operate/lifecycle.js +556 -0
- package/dist/services/operate/lifecycle.js.map +1 -0
- package/dist/services/operate/lock-service.d.ts +37 -0
- package/dist/services/operate/lock-service.d.ts.map +1 -0
- package/dist/services/operate/lock-service.js +208 -0
- package/dist/services/operate/lock-service.js.map +1 -0
- package/dist/services/operate/maintenance.d.ts +38 -0
- package/dist/services/operate/maintenance.d.ts.map +1 -0
- package/dist/services/operate/maintenance.js +699 -0
- package/dist/services/operate/maintenance.js.map +1 -0
- package/dist/services/operate/outcomes.d.ts +48 -0
- package/dist/services/operate/outcomes.d.ts.map +1 -0
- package/dist/services/operate/outcomes.js +312 -0
- package/dist/services/operate/outcomes.js.map +1 -0
- package/dist/services/operate/pipeline-handoff.d.ts +138 -0
- package/dist/services/operate/pipeline-handoff.d.ts.map +1 -0
- package/dist/services/operate/pipeline-handoff.js +175 -0
- package/dist/services/operate/pipeline-handoff.js.map +1 -0
- package/dist/services/operate/projection-persistence.d.ts +55 -0
- package/dist/services/operate/projection-persistence.d.ts.map +1 -0
- package/dist/services/operate/projection-persistence.js +393 -0
- package/dist/services/operate/projection-persistence.js.map +1 -0
- package/dist/services/operate/projection.d.ts +4 -0
- package/dist/services/operate/projection.d.ts.map +1 -0
- package/dist/services/operate/projection.js +128 -0
- package/dist/services/operate/projection.js.map +1 -0
- package/dist/services/operate/protocol.d.ts +60 -0
- package/dist/services/operate/protocol.d.ts.map +1 -0
- package/dist/services/operate/protocol.js +62 -0
- package/dist/services/operate/protocol.js.map +1 -0
- package/dist/services/operate/read-only-providers.d.ts +38 -0
- package/dist/services/operate/read-only-providers.d.ts.map +1 -0
- package/dist/services/operate/read-only-providers.js +286 -0
- package/dist/services/operate/read-only-providers.js.map +1 -0
- package/dist/services/operate/redaction.d.ts +47 -0
- package/dist/services/operate/redaction.d.ts.map +1 -0
- package/dist/services/operate/redaction.js +279 -0
- package/dist/services/operate/redaction.js.map +1 -0
- package/dist/services/operate/reducer.d.ts +10 -0
- package/dist/services/operate/reducer.d.ts.map +1 -0
- package/dist/services/operate/reducer.js +11 -0
- package/dist/services/operate/reducer.js.map +1 -0
- package/dist/services/operate/routes.d.ts +49 -0
- package/dist/services/operate/routes.d.ts.map +1 -0
- package/dist/services/operate/routes.js +996 -0
- package/dist/services/operate/routes.js.map +1 -0
- package/dist/services/operate/shipment-observer.d.ts +14 -0
- package/dist/services/operate/shipment-observer.d.ts.map +1 -0
- package/dist/services/operate/shipment-observer.js +321 -0
- package/dist/services/operate/shipment-observer.js.map +1 -0
- package/dist/services/operate/stalled-item-service.d.ts +18 -0
- package/dist/services/operate/stalled-item-service.d.ts.map +1 -0
- package/dist/services/operate/stalled-item-service.js +121 -0
- package/dist/services/operate/stalled-item-service.js.map +1 -0
- package/dist/services/operate/subprocess-env.d.ts +4 -0
- package/dist/services/operate/subprocess-env.d.ts.map +1 -0
- package/dist/services/operate/subprocess-env.js +45 -0
- package/dist/services/operate/subprocess-env.js.map +1 -0
- package/dist/services/operate/types.d.ts +729 -0
- package/dist/services/operate/types.d.ts.map +1 -0
- package/dist/services/operate/types.js +13 -0
- package/dist/services/operate/types.js.map +1 -0
- package/dist/services/operate/workspace.d.ts +59 -0
- package/dist/services/operate/workspace.d.ts.map +1 -0
- package/dist/services/operate/workspace.js +316 -0
- package/dist/services/operate/workspace.js.map +1 -0
- package/dist/services/runtime-manager-service.d.ts.map +1 -1
- package/dist/services/runtime-manager-service.js +71 -2
- package/dist/services/runtime-manager-service.js.map +1 -1
- package/package.json +10 -4
|
@@ -0,0 +1,729 @@
|
|
|
1
|
+
export declare const OPERATE_PROTOCOL_VERSION: "1.2.0";
|
|
2
|
+
export declare const OPERATE_SCHEMA_VERSION: "1.0.0";
|
|
3
|
+
export interface ProtocolArtifact<K extends string> {
|
|
4
|
+
kind: K;
|
|
5
|
+
schemaVersion: typeof OPERATE_SCHEMA_VERSION;
|
|
6
|
+
protocolVersion: typeof OPERATE_PROTOCOL_VERSION;
|
|
7
|
+
}
|
|
8
|
+
export type OperatingSensitivity = 'public' | 'internal' | 'confidential' | 'restricted';
|
|
9
|
+
export type OperatingPlanningEngine = 'openplanr' | 'pipeline-po';
|
|
10
|
+
export type OperatingRoleId = 'strategy-finance' | 'technology-risk' | 'product-activation' | 'growth-market' | 'operations-customer' | 'chair';
|
|
11
|
+
export type OperatingLane = 'DEV' | 'OWNER' | 'AGENT';
|
|
12
|
+
export type OperatingCycleStatus = 'preparing' | 'collecting' | 'advising' | 'consolidating' | 'reviewable' | 'closed' | 'blocked' | 'failed' | 'cancelled';
|
|
13
|
+
export type OperatingCriticalRiskCategory = 'security' | 'privacy' | 'payment-integrity' | 'legal' | 'tenant-isolation' | 'destructive-data';
|
|
14
|
+
export interface OperatingAdvisorBrief {
|
|
15
|
+
kind: 'operating-advisor-brief';
|
|
16
|
+
schemaVersion: '1.0.0';
|
|
17
|
+
protocolVersion: typeof OPERATE_PROTOCOL_VERSION;
|
|
18
|
+
role: {
|
|
19
|
+
id: OperatingRoleId;
|
|
20
|
+
displayLabel: string;
|
|
21
|
+
mandate: string;
|
|
22
|
+
capabilityTier: 'analysis-standard' | 'analysis-high';
|
|
23
|
+
};
|
|
24
|
+
authority: {
|
|
25
|
+
readOnly: true;
|
|
26
|
+
writeBoundary: 'none';
|
|
27
|
+
sharedBoundaries: string[];
|
|
28
|
+
forbiddenRecommendationCategories: string[];
|
|
29
|
+
};
|
|
30
|
+
evidence: {
|
|
31
|
+
permittedKinds: string[];
|
|
32
|
+
requiredFields: string[];
|
|
33
|
+
sensitivityCeiling: OperatingSensitivity;
|
|
34
|
+
minimum: Record<string, unknown>;
|
|
35
|
+
};
|
|
36
|
+
output: {
|
|
37
|
+
schema: string;
|
|
38
|
+
allowedProposalTypes: Array<'finding' | 'decision' | 'data-gap' | 'merge' | 'sequence'>;
|
|
39
|
+
maximumProposals: number;
|
|
40
|
+
maximumOutputBytes: number;
|
|
41
|
+
requiredBehavior: string[];
|
|
42
|
+
scoring: Record<string, unknown> | null;
|
|
43
|
+
};
|
|
44
|
+
budgets: Record<string, unknown>;
|
|
45
|
+
failureBehavior: string;
|
|
46
|
+
briefDigest: `sha256:${string}`;
|
|
47
|
+
}
|
|
48
|
+
export type OperateErrorCode = 'E_OPERATE_INTERNAL' | 'E_OPERATE_PROJECT_REQUIRED' | 'E_OPERATE_NOT_INITIALIZED' | 'E_OPERATE_CONFIG_INVALID' | 'E_OPERATE_CHARTER_INCOMPLETE' | 'E_OPERATE_PATH_ESCAPE' | 'E_OPERATE_STATE_INVALID' | 'E_OPERATE_HEAD_DIVERGED' | 'E_OPERATE_CHECKPOINT_INVALID' | 'E_OPERATE_CYCLE_ACTIVE' | 'E_OPERATE_CYCLE_INPUT_CONFLICT' | 'E_OPERATE_CYCLE_NOT_DISPOSED' | 'E_OPERATE_STALE_LOCK_UNSAFE' | 'E_OPERATE_TRANSACTION_INVALID' | 'E_OPERATE_EVIDENCE_REJECTED' | 'E_OPERATE_EVIDENCE_BUDGET' | 'E_OPERATE_SECRET_DETECTED' | 'E_OPERATE_PROVIDER_READ_ONLY' | 'E_OPERATE_ADVISOR_ISOLATION' | 'E_OPERATE_ADVISOR_FAILED' | 'E_OPERATE_EVIDENCE_NOT_READY' | 'E_OPERATE_CAP_EXCEEDED' | 'E_OPERATE_CRITICAL_CAP' | 'E_OPERATE_AUTHORITY_REQUIRED' | 'E_OPERATE_ROUTE_CONFIRMATION_REQUIRED' | 'E_OPERATE_ROUTE_DRIFT' | 'E_OPERATE_PLANNER_CONFLICT' | 'E_OPERATE_OUTCOME_NOT_READY' | 'E_OPERATE_PROJECTION_DRIFT' | 'E_OPERATE_ARTIFACT_REJECTED' | 'E_OPERATE_MIGRATION_CONFLICT' | 'E_OPERATE_SECURITY_REPAIR_REQUIRED' | 'E_OPERATE_INPUT_TOO_LARGE' | 'E_OPERATE_ACTION_UNKNOWN' | 'E_PIPELINE_NOT_INSTALLED';
|
|
49
|
+
export declare class OperateError extends Error {
|
|
50
|
+
readonly code: OperateErrorCode;
|
|
51
|
+
readonly details?: Readonly<Record<string, unknown>>;
|
|
52
|
+
constructor(code: OperateErrorCode, message: string, details?: Readonly<Record<string, unknown>>);
|
|
53
|
+
}
|
|
54
|
+
/** Exact persisted Protocol v1.2 operating configuration. */
|
|
55
|
+
export interface OperatingConfig extends ProtocolArtifact<'operating-config'> {
|
|
56
|
+
profile: 'saas' | 'product' | 'engineering' | 'custom';
|
|
57
|
+
decisionOwner: string;
|
|
58
|
+
cadence: 'manual' | 'weekly' | 'monthly';
|
|
59
|
+
planningEngine: OperatingPlanningEngine;
|
|
60
|
+
enabledRoles: OperatingRoleId[];
|
|
61
|
+
enabledProviders: string[];
|
|
62
|
+
caps: {
|
|
63
|
+
surfacedFindings: number;
|
|
64
|
+
newSpecs: number;
|
|
65
|
+
openDecisions: number;
|
|
66
|
+
agentArtifacts: number;
|
|
67
|
+
};
|
|
68
|
+
budgets: {
|
|
69
|
+
maxFiles: number;
|
|
70
|
+
maxItems: number;
|
|
71
|
+
maxBytes: number;
|
|
72
|
+
maxDurationMs: number;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export interface OperatingProfile {
|
|
76
|
+
id: OperatingConfig['profile'];
|
|
77
|
+
title: string;
|
|
78
|
+
description: string;
|
|
79
|
+
enabledRoles: OperatingRoleId[];
|
|
80
|
+
enabledProviders: string[];
|
|
81
|
+
caps: OperatingConfig['caps'];
|
|
82
|
+
budgets: OperatingConfig['budgets'];
|
|
83
|
+
}
|
|
84
|
+
export interface OperatingCharter {
|
|
85
|
+
purpose: string;
|
|
86
|
+
stage: string;
|
|
87
|
+
businessModel: string;
|
|
88
|
+
idealCustomer: string;
|
|
89
|
+
goals: string[];
|
|
90
|
+
constraints: string[];
|
|
91
|
+
successMetrics: string[];
|
|
92
|
+
guardrails: string[];
|
|
93
|
+
knownUnknowns: string[];
|
|
94
|
+
}
|
|
95
|
+
export interface OperatingLocalPreferences {
|
|
96
|
+
runtime: 'auto' | 'claude' | 'codex' | 'cursor';
|
|
97
|
+
timezone: string;
|
|
98
|
+
sensitivityCeiling: OperatingSensitivity;
|
|
99
|
+
evidenceTtlMs: number;
|
|
100
|
+
enabledSources: string[];
|
|
101
|
+
/** Machine-local, workspace-contained JSON/CSV evidence paths. */
|
|
102
|
+
importPaths?: string[];
|
|
103
|
+
}
|
|
104
|
+
export interface OperatingWorkspaceComponent {
|
|
105
|
+
componentId: string;
|
|
106
|
+
canonicalRemote: string;
|
|
107
|
+
configuredBranch: string;
|
|
108
|
+
pinnedRevision: string;
|
|
109
|
+
dirtyFingerprint: `sha256:${string}` | null;
|
|
110
|
+
readOnly: boolean;
|
|
111
|
+
}
|
|
112
|
+
export interface OperatingWorkspaceManifest extends ProtocolArtifact<'operating-workspace-manifest'> {
|
|
113
|
+
capturedAt: string;
|
|
114
|
+
workspaceDigest: `sha256:${string}`;
|
|
115
|
+
controlRepository: OperatingWorkspaceComponent & {
|
|
116
|
+
readOnly: false;
|
|
117
|
+
};
|
|
118
|
+
components: Array<OperatingWorkspaceComponent & {
|
|
119
|
+
readOnly: true;
|
|
120
|
+
}>;
|
|
121
|
+
}
|
|
122
|
+
/** Machine-local mapping. Absolute paths never enter commit-safe artifacts. */
|
|
123
|
+
export interface OperatingWorkspaceRoots {
|
|
124
|
+
controlComponentId: string;
|
|
125
|
+
roots: Record<string, string>;
|
|
126
|
+
}
|
|
127
|
+
export interface OperatingContentReference {
|
|
128
|
+
algorithm: 'sha256';
|
|
129
|
+
digest: `sha256:${string}`;
|
|
130
|
+
mediaType: 'application/json';
|
|
131
|
+
size: number;
|
|
132
|
+
sensitivity: OperatingSensitivity;
|
|
133
|
+
}
|
|
134
|
+
export interface OperatingRecordEnvelope extends ProtocolArtifact<'operating-record'> {
|
|
135
|
+
digest: `sha256:${string}`;
|
|
136
|
+
recordType: 'evidence-metadata' | 'advisor-result' | 'finding' | 'decision' | 'data-gap' | 'route' | 'spec-link' | 'outcome' | 'artifact-manifest' | 'migration' | 'recovery';
|
|
137
|
+
createdAt: string;
|
|
138
|
+
correlationId: string;
|
|
139
|
+
contentDigest: `sha256:${string}`;
|
|
140
|
+
content: Record<string, unknown>;
|
|
141
|
+
}
|
|
142
|
+
export type OperatingEventType = `cycle.${OperatingCycleStatus}` | 'evidence.collected' | 'advisory.recorded' | 'finding.proposed' | 'finding.accepted' | 'finding.queued' | 'finding.in-progress' | 'finding.done' | 'finding.rejected' | 'finding.superseded' | 'decision.open' | 'decision.answered' | 'decision.closed' | 'decision.default-due' | 'decision.superseded' | 'gap.open' | 'gap.answered' | 'gap.verified' | 'gap.closed' | 'gap.superseded' | 'route.proposed' | 'route.accepted' | 'route.prepared' | 'route.applied' | 'route.failed' | 'route.rolled_back' | 'spec.linked' | 'artifact.created' | 'ship.observed' | 'outcome.registered' | 'outcome.observed' | 'outcome.evaluated' | 'learning.recorded' | 'projection.rebuilt' | 'migration.legacy-imported' | 'recovery.performed' | 'security.discontinuity';
|
|
143
|
+
export interface OperatingEvent extends ProtocolArtifact<'operating-event'> {
|
|
144
|
+
eventId: string;
|
|
145
|
+
sequence: number;
|
|
146
|
+
timestamp: string;
|
|
147
|
+
cycleId: string;
|
|
148
|
+
type: OperatingEventType;
|
|
149
|
+
entityId: string;
|
|
150
|
+
previousEventHash: `sha256:${string}` | null;
|
|
151
|
+
eventHash: `sha256:${string}`;
|
|
152
|
+
actor: {
|
|
153
|
+
kind: 'human' | 'engine' | 'runtime' | 'migration';
|
|
154
|
+
id: string;
|
|
155
|
+
};
|
|
156
|
+
causationId: string | null;
|
|
157
|
+
correlationId: string;
|
|
158
|
+
evidenceRefs: string[];
|
|
159
|
+
payload: Record<string, unknown>;
|
|
160
|
+
}
|
|
161
|
+
export interface OperatingEventHead {
|
|
162
|
+
sequence: number;
|
|
163
|
+
hash: `sha256:${string}` | null;
|
|
164
|
+
}
|
|
165
|
+
export interface OperatingCheckpoint extends ProtocolArtifact<'operating-checkpoint'> {
|
|
166
|
+
createdAt: string;
|
|
167
|
+
eventHead: OperatingEventHead;
|
|
168
|
+
stateHash: `sha256:${string}`;
|
|
169
|
+
recordDigests: `sha256:${string}`[];
|
|
170
|
+
integrity: {
|
|
171
|
+
status: 'hash';
|
|
172
|
+
} | {
|
|
173
|
+
status: 'signed';
|
|
174
|
+
signature: {
|
|
175
|
+
algorithm: 'ed25519' | 'hmac-sha256';
|
|
176
|
+
keyId: string;
|
|
177
|
+
value: string;
|
|
178
|
+
};
|
|
179
|
+
};
|
|
180
|
+
state: OperatingState;
|
|
181
|
+
}
|
|
182
|
+
export interface OperatingCycleManifest extends ProtocolArtifact<'operating-cycle-manifest'> {
|
|
183
|
+
id: string;
|
|
184
|
+
state: OperatingCycleStatus;
|
|
185
|
+
health?: 'normal' | 'quiet' | 'partial' | 'blocked';
|
|
186
|
+
depth: 'standard' | 'deep' | 'review-only';
|
|
187
|
+
focus: Array<'strategy' | 'product' | 'growth' | 'operations' | 'technology' | 'all'>;
|
|
188
|
+
inputDigest: `sha256:${string}`;
|
|
189
|
+
enabledRoles: string[];
|
|
190
|
+
enabledProviders: string[];
|
|
191
|
+
createdAt: string;
|
|
192
|
+
updatedAt: string;
|
|
193
|
+
completedAt?: string | null;
|
|
194
|
+
producer: {
|
|
195
|
+
product: string;
|
|
196
|
+
version: string;
|
|
197
|
+
runtime: string;
|
|
198
|
+
};
|
|
199
|
+
warnings?: string[];
|
|
200
|
+
}
|
|
201
|
+
export interface OperatingEvidenceItem {
|
|
202
|
+
id: string;
|
|
203
|
+
source: string;
|
|
204
|
+
location: string;
|
|
205
|
+
digest: `sha256:${string}`;
|
|
206
|
+
collectedAt: string;
|
|
207
|
+
observedFrom: string | null;
|
|
208
|
+
observedTo: string | null;
|
|
209
|
+
freshness: 'fresh' | 'stale' | 'unknown';
|
|
210
|
+
sensitivity: OperatingSensitivity;
|
|
211
|
+
claimTypes: string[];
|
|
212
|
+
repository?: {
|
|
213
|
+
componentId: string;
|
|
214
|
+
canonicalRemote: string;
|
|
215
|
+
revision: string;
|
|
216
|
+
configuredBranch: string;
|
|
217
|
+
dirtyFingerprint: `sha256:${string}` | null;
|
|
218
|
+
};
|
|
219
|
+
metric?: {
|
|
220
|
+
identity: string;
|
|
221
|
+
query: string;
|
|
222
|
+
observedFrom: string;
|
|
223
|
+
observedTo: string;
|
|
224
|
+
};
|
|
225
|
+
summary?: string;
|
|
226
|
+
}
|
|
227
|
+
export interface CollectedEvidenceItem {
|
|
228
|
+
id: string;
|
|
229
|
+
source: string;
|
|
230
|
+
location: string;
|
|
231
|
+
content: string;
|
|
232
|
+
collectedAt: string;
|
|
233
|
+
observedFrom?: string | null;
|
|
234
|
+
observedTo?: string | null;
|
|
235
|
+
freshness: OperatingEvidenceItem['freshness'];
|
|
236
|
+
sensitivity: OperatingSensitivity;
|
|
237
|
+
claimTypes: string[];
|
|
238
|
+
quality: 'verified' | 'observed' | 'self-reported' | 'unknown';
|
|
239
|
+
coverage: 'complete' | 'partial' | 'unknown';
|
|
240
|
+
verifiedRiskCategories?: OperatingCriticalRiskCategory[];
|
|
241
|
+
metric?: {
|
|
242
|
+
identity: string;
|
|
243
|
+
query: string;
|
|
244
|
+
observedFrom: string;
|
|
245
|
+
observedTo: string;
|
|
246
|
+
};
|
|
247
|
+
repository?: RepositoryEvidenceProvenance;
|
|
248
|
+
}
|
|
249
|
+
export interface OperatingEvidence extends ProtocolArtifact<'operating-evidence'> {
|
|
250
|
+
cycleId: string;
|
|
251
|
+
fingerprint: `sha256:${string}`;
|
|
252
|
+
collectedAt: string;
|
|
253
|
+
truncated: boolean;
|
|
254
|
+
items: OperatingEvidenceItem[];
|
|
255
|
+
delta?: {
|
|
256
|
+
mode: 'baseline' | 'standard' | 'deep';
|
|
257
|
+
baselineFingerprint: `sha256:${string}` | null;
|
|
258
|
+
changedEvidenceRefs: string[];
|
|
259
|
+
requiredEvidenceRefs: string[];
|
|
260
|
+
selectedEvidenceRefs: string[];
|
|
261
|
+
removedEvidenceRefs: string[];
|
|
262
|
+
};
|
|
263
|
+
sources: Array<{
|
|
264
|
+
id: string;
|
|
265
|
+
fingerprint: `sha256:${string}`;
|
|
266
|
+
status: 'collected' | 'unchanged' | 'partial' | 'unavailable' | 'failed';
|
|
267
|
+
itemCount: number;
|
|
268
|
+
byteCount: number;
|
|
269
|
+
}>;
|
|
270
|
+
warnings: string[];
|
|
271
|
+
}
|
|
272
|
+
export interface RepositoryEvidenceProvenance {
|
|
273
|
+
componentId: string;
|
|
274
|
+
canonicalRemote: string;
|
|
275
|
+
revision: string;
|
|
276
|
+
configuredBranch: string;
|
|
277
|
+
dirtyFingerprint: `sha256:${string}` | null;
|
|
278
|
+
relativePath: string;
|
|
279
|
+
digest: `sha256:${string}`;
|
|
280
|
+
freshness: OperatingEvidenceItem['freshness'];
|
|
281
|
+
sensitivity: OperatingSensitivity;
|
|
282
|
+
collectedAt: string;
|
|
283
|
+
}
|
|
284
|
+
export interface EvidenceBudget {
|
|
285
|
+
maxFiles: number;
|
|
286
|
+
maxItems: number;
|
|
287
|
+
maxBytes: number;
|
|
288
|
+
maxItemBytes: number;
|
|
289
|
+
maxDurationMs: number;
|
|
290
|
+
}
|
|
291
|
+
export interface EvidenceRequirement {
|
|
292
|
+
source: string;
|
|
293
|
+
claimTypes: string[];
|
|
294
|
+
minimumItems: number;
|
|
295
|
+
maxAgeHours: number;
|
|
296
|
+
observationWindow: 'current-state' | 'current-cycle' | '7d' | '30d' | '90d' | '365d';
|
|
297
|
+
sensitivityCeiling: OperatingSensitivity;
|
|
298
|
+
}
|
|
299
|
+
export interface OperatingEvidenceReadiness extends ProtocolArtifact<'operating-evidence-readiness'> {
|
|
300
|
+
cycleId: string;
|
|
301
|
+
inputDigest: `sha256:${string}`;
|
|
302
|
+
evaluatedAt: string;
|
|
303
|
+
roles: Array<{
|
|
304
|
+
roleId: OperatingRoleId;
|
|
305
|
+
readiness: 'ready' | 'not_evaluated';
|
|
306
|
+
requirements: Array<EvidenceRequirement & {
|
|
307
|
+
observedItems: number;
|
|
308
|
+
oldestAgeHours: number | null;
|
|
309
|
+
satisfied: boolean;
|
|
310
|
+
}>;
|
|
311
|
+
missingEvidence: string[];
|
|
312
|
+
evidenceRefs: string[];
|
|
313
|
+
modelCallAllowed: boolean;
|
|
314
|
+
gapId: string | null;
|
|
315
|
+
}>;
|
|
316
|
+
}
|
|
317
|
+
export interface OperatingRoleResult extends ProtocolArtifact<'operating-role-result'> {
|
|
318
|
+
cycleId: string;
|
|
319
|
+
roleId: OperatingRoleId;
|
|
320
|
+
inputDigest: `sha256:${string}`;
|
|
321
|
+
resultDigest: `sha256:${string}`;
|
|
322
|
+
outcome: 'proposals' | 'quiet' | 'failed';
|
|
323
|
+
proposals: Array<{
|
|
324
|
+
proposalKey: string;
|
|
325
|
+
type: 'finding' | 'decision' | 'data-gap' | 'merge' | 'sequence';
|
|
326
|
+
title: string;
|
|
327
|
+
problem: string;
|
|
328
|
+
proposal: string;
|
|
329
|
+
impact: number;
|
|
330
|
+
confidence: number;
|
|
331
|
+
ease: number;
|
|
332
|
+
severity: 'low' | 'medium' | 'high' | 'critical';
|
|
333
|
+
evidenceRefs: string[];
|
|
334
|
+
dependsOnProposalKeys?: string[];
|
|
335
|
+
conflictsWithProposalKeys?: string[];
|
|
336
|
+
/** Ordered Chair sequence used to resolve declared conflicts. */
|
|
337
|
+
sequenceProposalKeys?: string[];
|
|
338
|
+
}>;
|
|
339
|
+
gaps: string[];
|
|
340
|
+
conflicts: string[];
|
|
341
|
+
producer: {
|
|
342
|
+
product: string;
|
|
343
|
+
version: string;
|
|
344
|
+
runtime: string;
|
|
345
|
+
capability: 'analysis-standard' | 'analysis-high';
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
export interface OperatingProviderManifest extends ProtocolArtifact<'operating-provider-manifest'> {
|
|
349
|
+
id: string;
|
|
350
|
+
providerId: string;
|
|
351
|
+
providerVersion: string;
|
|
352
|
+
mode: 'structured' | 'native-isolated';
|
|
353
|
+
readOnly: true;
|
|
354
|
+
endpoint: {
|
|
355
|
+
kind: 'local' | 'remote' | 'import';
|
|
356
|
+
display: string;
|
|
357
|
+
authentication: 'none' | 'machine-local';
|
|
358
|
+
redacted: true;
|
|
359
|
+
};
|
|
360
|
+
permittedDataClasses: Array<'source-code' | 'planning-artifacts' | 'git-metadata' | 'issue-metadata' | 'project-metadata' | 'outcome-observations' | 'imported-documents'>;
|
|
361
|
+
retention: {
|
|
362
|
+
providerStoresRequestContent: boolean;
|
|
363
|
+
maxProviderRetentionDays: number;
|
|
364
|
+
localEvidenceRetention: 'cycle' | 'project' | 'user-managed';
|
|
365
|
+
};
|
|
366
|
+
capabilities: {
|
|
367
|
+
incremental: boolean;
|
|
368
|
+
deep: boolean;
|
|
369
|
+
toolIsolation: 'enforced' | 'not-applicable';
|
|
370
|
+
};
|
|
371
|
+
limits: {
|
|
372
|
+
maxItems: number;
|
|
373
|
+
maxBytes: number;
|
|
374
|
+
maxDurationMs: number;
|
|
375
|
+
maxRequests: number | null;
|
|
376
|
+
maxTokens: number | null;
|
|
377
|
+
maxCostUsd: number | null;
|
|
378
|
+
};
|
|
379
|
+
consent: {
|
|
380
|
+
policyVersion: string;
|
|
381
|
+
status: 'first-use' | 'renewed';
|
|
382
|
+
acceptedAt: string;
|
|
383
|
+
renewedAt: string | null;
|
|
384
|
+
nextReviewAt: string | null;
|
|
385
|
+
renewalTriggers: Array<'policy-change' | 'scope-expansion' | 'credential-renewal' | 'scheduled-review'>;
|
|
386
|
+
};
|
|
387
|
+
policyDigest: `sha256:${string}`;
|
|
388
|
+
configurationDigest: `sha256:${string}`;
|
|
389
|
+
capturedAt: string;
|
|
390
|
+
}
|
|
391
|
+
export interface OperatingFinding extends ProtocolArtifact<'operating-finding'> {
|
|
392
|
+
id: string;
|
|
393
|
+
cycleId: string;
|
|
394
|
+
title: string;
|
|
395
|
+
category: string;
|
|
396
|
+
problem: string;
|
|
397
|
+
cost: string;
|
|
398
|
+
proposal: string;
|
|
399
|
+
/** Stable semantic identity used for cross-cycle suppression and lineage. */
|
|
400
|
+
fingerprint?: `sha256:${string}`;
|
|
401
|
+
impact: number;
|
|
402
|
+
confidence: number;
|
|
403
|
+
/** Evidence-derived maximum; human amendments may lower but never exceed it. */
|
|
404
|
+
confidenceCeiling?: number;
|
|
405
|
+
ease: number;
|
|
406
|
+
score: number;
|
|
407
|
+
severity: 'low' | 'medium' | 'high' | 'critical';
|
|
408
|
+
/** Highest sensitivity among all cited evidence. */
|
|
409
|
+
sensitivity: OperatingSensitivity;
|
|
410
|
+
criticalOverride: boolean;
|
|
411
|
+
lane: OperatingLane;
|
|
412
|
+
owner: string;
|
|
413
|
+
evidenceRefs: string[];
|
|
414
|
+
status: 'proposed' | 'accepted' | 'queued' | 'in-progress' | 'done' | 'rejected' | 'superseded';
|
|
415
|
+
dependsOn: string[];
|
|
416
|
+
parked?: boolean;
|
|
417
|
+
stalledCycles?: number;
|
|
418
|
+
supersededBy?: string;
|
|
419
|
+
rejectionReason?: string;
|
|
420
|
+
scoreAmendment?: {
|
|
421
|
+
prior: {
|
|
422
|
+
impact: number;
|
|
423
|
+
confidence: number;
|
|
424
|
+
ease: number;
|
|
425
|
+
};
|
|
426
|
+
next: {
|
|
427
|
+
impact: number;
|
|
428
|
+
confidence: number;
|
|
429
|
+
ease: number;
|
|
430
|
+
};
|
|
431
|
+
reason: string;
|
|
432
|
+
actor: {
|
|
433
|
+
kind: 'human';
|
|
434
|
+
id: string;
|
|
435
|
+
};
|
|
436
|
+
timestamp: string;
|
|
437
|
+
};
|
|
438
|
+
createdAt: string;
|
|
439
|
+
updatedAt: string;
|
|
440
|
+
}
|
|
441
|
+
export interface OperatingDecision extends ProtocolArtifact<'operating-decision'> {
|
|
442
|
+
id: string;
|
|
443
|
+
cycleId: string;
|
|
444
|
+
question: string;
|
|
445
|
+
options: Array<{
|
|
446
|
+
id: string;
|
|
447
|
+
label: string;
|
|
448
|
+
}>;
|
|
449
|
+
recommendation: string;
|
|
450
|
+
consequences: string;
|
|
451
|
+
reversibility: 'reversible' | 'costly' | 'one-way';
|
|
452
|
+
deadline: string;
|
|
453
|
+
proposedDefault: string | null;
|
|
454
|
+
unblocks: string[];
|
|
455
|
+
status: 'open' | 'answered' | 'closed' | 'default-due' | 'superseded';
|
|
456
|
+
owner: string;
|
|
457
|
+
selectedOption?: string;
|
|
458
|
+
note?: string;
|
|
459
|
+
evidenceRefs: string[];
|
|
460
|
+
createdAt: string;
|
|
461
|
+
updatedAt: string;
|
|
462
|
+
}
|
|
463
|
+
export interface OperatingDataGap extends ProtocolArtifact<'operating-data-gap'> {
|
|
464
|
+
id: string;
|
|
465
|
+
cycleId: string;
|
|
466
|
+
question: string;
|
|
467
|
+
reason: string;
|
|
468
|
+
unblocks: string[];
|
|
469
|
+
affectedRoles?: string[];
|
|
470
|
+
status: 'open' | 'answered' | 'verified' | 'closed' | 'superseded';
|
|
471
|
+
owner: string;
|
|
472
|
+
answer?: string;
|
|
473
|
+
evidenceRefs: string[];
|
|
474
|
+
createdAt: string;
|
|
475
|
+
updatedAt: string;
|
|
476
|
+
}
|
|
477
|
+
export interface OperatingRouteAction {
|
|
478
|
+
id: string;
|
|
479
|
+
findingId: string;
|
|
480
|
+
lane: OperatingLane;
|
|
481
|
+
owner: string;
|
|
482
|
+
kind: 'create-spec' | 'create-instrumentation-spec' | 'create-decision' | 'create-cycle-artifact';
|
|
483
|
+
dependsOn: string[];
|
|
484
|
+
evidenceRefs: string[];
|
|
485
|
+
reversible: true;
|
|
486
|
+
requiresConfirmation: true;
|
|
487
|
+
targetPath?: string;
|
|
488
|
+
}
|
|
489
|
+
export interface OperatingRoutePlan extends ProtocolArtifact<'operating-route-plan'> {
|
|
490
|
+
id: string;
|
|
491
|
+
cycleId: string;
|
|
492
|
+
inputDigest: `sha256:${string}`;
|
|
493
|
+
routeDigest: `sha256:${string}`;
|
|
494
|
+
previewDigest: `sha256:${string}`;
|
|
495
|
+
workspaceDigest: `sha256:${string}`;
|
|
496
|
+
evidenceDigest: `sha256:${string}`;
|
|
497
|
+
providerDigest: `sha256:${string}`;
|
|
498
|
+
destinationDigest: `sha256:${string}`;
|
|
499
|
+
eventHead: OperatingEventHead;
|
|
500
|
+
state: 'proposed' | 'accepted' | 'prepared' | 'applied' | 'failed' | 'rolled_back';
|
|
501
|
+
actions: OperatingRouteAction[];
|
|
502
|
+
createdAt: string;
|
|
503
|
+
appliedAt?: string | null;
|
|
504
|
+
rolledBackAt?: string | null;
|
|
505
|
+
failure?: string;
|
|
506
|
+
}
|
|
507
|
+
export interface OperatingOutcome extends ProtocolArtifact<'operating-outcome'> {
|
|
508
|
+
id: string;
|
|
509
|
+
sourceCycle: string;
|
|
510
|
+
sourceFinding: string;
|
|
511
|
+
specId: string;
|
|
512
|
+
outcomeKind: 'metric' | 'guardrail' | 'operational';
|
|
513
|
+
metric: string;
|
|
514
|
+
unit: string;
|
|
515
|
+
queryIdentity: string;
|
|
516
|
+
direction: 'increase' | 'decrease' | 'maintain' | 'range';
|
|
517
|
+
operator: 'gt' | 'gte' | 'lt' | 'lte' | 'eq' | 'between';
|
|
518
|
+
aggregation: 'sum' | 'average' | 'median' | 'minimum' | 'maximum' | 'count' | 'rate' | 'percentile' | 'latest';
|
|
519
|
+
baselineWindow: {
|
|
520
|
+
from: string;
|
|
521
|
+
to: string;
|
|
522
|
+
};
|
|
523
|
+
targetWindow: {
|
|
524
|
+
from: string;
|
|
525
|
+
to: string;
|
|
526
|
+
};
|
|
527
|
+
threshold: {
|
|
528
|
+
value: number;
|
|
529
|
+
upperValue?: number;
|
|
530
|
+
};
|
|
531
|
+
minimumCoverage: number;
|
|
532
|
+
minimumSample: number;
|
|
533
|
+
stalePolicy: 'inconclusive' | 'create-gap';
|
|
534
|
+
missingPolicy: 'inconclusive' | 'create-gap';
|
|
535
|
+
guardrailPrecedence: 'block-on-breach' | 'outcome-first';
|
|
536
|
+
guardrails: Array<{
|
|
537
|
+
metric: string;
|
|
538
|
+
unit: string;
|
|
539
|
+
operator: 'gt' | 'gte' | 'lt' | 'lte' | 'eq' | 'between';
|
|
540
|
+
threshold: number;
|
|
541
|
+
upperThreshold?: number;
|
|
542
|
+
}>;
|
|
543
|
+
source: string;
|
|
544
|
+
observationWindow: string;
|
|
545
|
+
verifyAfter: string;
|
|
546
|
+
rollout: string;
|
|
547
|
+
rollback: string;
|
|
548
|
+
status: 'pending' | 'observing' | 'positive' | 'neutral' | 'negative' | 'inconclusive';
|
|
549
|
+
evidenceRefs: string[];
|
|
550
|
+
createdAt: string;
|
|
551
|
+
updatedAt: string;
|
|
552
|
+
}
|
|
553
|
+
export interface OperatingOutcomeObservation extends ProtocolArtifact<'operating-outcome-observation'> {
|
|
554
|
+
id: string;
|
|
555
|
+
outcomeId: string;
|
|
556
|
+
observedAt: string;
|
|
557
|
+
window: {
|
|
558
|
+
from: string;
|
|
559
|
+
to: string;
|
|
560
|
+
};
|
|
561
|
+
value: number | null;
|
|
562
|
+
unit: string;
|
|
563
|
+
queryIdentity: string;
|
|
564
|
+
aggregation: OperatingOutcome['aggregation'];
|
|
565
|
+
sampleSize: number;
|
|
566
|
+
coverage: number;
|
|
567
|
+
freshness: 'fresh' | 'stale' | 'unknown';
|
|
568
|
+
guardrails: Array<{
|
|
569
|
+
metric: string;
|
|
570
|
+
breached: boolean;
|
|
571
|
+
observedValue?: number | null;
|
|
572
|
+
}>;
|
|
573
|
+
evaluation: 'positive' | 'neutral' | 'negative' | 'inconclusive';
|
|
574
|
+
evidenceRefs: string[];
|
|
575
|
+
}
|
|
576
|
+
export interface OperatingState extends ProtocolArtifact<'operating-state'> {
|
|
577
|
+
generatedAt: string;
|
|
578
|
+
eventHead: OperatingEventHead;
|
|
579
|
+
cycles: Array<Record<string, unknown> & {
|
|
580
|
+
id: string;
|
|
581
|
+
state: OperatingCycleStatus;
|
|
582
|
+
}>;
|
|
583
|
+
findings: Array<Record<string, unknown> & {
|
|
584
|
+
id: string;
|
|
585
|
+
status: OperatingFinding['status'];
|
|
586
|
+
}>;
|
|
587
|
+
decisions: Array<Record<string, unknown> & {
|
|
588
|
+
id: string;
|
|
589
|
+
status: OperatingDecision['status'];
|
|
590
|
+
}>;
|
|
591
|
+
dataGaps: Array<Record<string, unknown> & {
|
|
592
|
+
id: string;
|
|
593
|
+
status: OperatingDataGap['status'];
|
|
594
|
+
}>;
|
|
595
|
+
routes: Array<Record<string, unknown> & {
|
|
596
|
+
id: string;
|
|
597
|
+
state: OperatingRoutePlan['state'];
|
|
598
|
+
}>;
|
|
599
|
+
specLinks: Array<Record<string, unknown> & {
|
|
600
|
+
specId: string;
|
|
601
|
+
}>;
|
|
602
|
+
outcomes: Array<Record<string, unknown> & {
|
|
603
|
+
id: string;
|
|
604
|
+
status: OperatingOutcome['status'];
|
|
605
|
+
}>;
|
|
606
|
+
learnings: Array<Record<string, unknown> & {
|
|
607
|
+
id: string;
|
|
608
|
+
}>;
|
|
609
|
+
evidenceSources: Array<Record<string, unknown> & {
|
|
610
|
+
id: string;
|
|
611
|
+
}>;
|
|
612
|
+
summary: {
|
|
613
|
+
currentCycleId: string | null;
|
|
614
|
+
currentConstraint: string | null;
|
|
615
|
+
quiet: boolean;
|
|
616
|
+
evidenceFreshness: 'fresh' | 'stale' | 'mixed' | 'unknown';
|
|
617
|
+
surfacedFindings: number;
|
|
618
|
+
parkedFindings: number;
|
|
619
|
+
openDecisions: number;
|
|
620
|
+
openGaps: number;
|
|
621
|
+
stalledItems: number;
|
|
622
|
+
};
|
|
623
|
+
}
|
|
624
|
+
export interface OperatingTransactionJournal extends ProtocolArtifact<'operating-transaction-journal'> {
|
|
625
|
+
transactionId: string;
|
|
626
|
+
state: 'prepared' | 'staged-fsynced' | 'promoted' | 'committed' | 'rolled-back' | 'failed';
|
|
627
|
+
eventHead: OperatingEventHead;
|
|
628
|
+
previewDigest: `sha256:${string}`;
|
|
629
|
+
createdAt: string;
|
|
630
|
+
updatedAt: string;
|
|
631
|
+
writes: Array<{
|
|
632
|
+
path: string;
|
|
633
|
+
operation: 'create' | 'replace' | 'append';
|
|
634
|
+
beforeDigest: `sha256:${string}` | null;
|
|
635
|
+
afterDigest: `sha256:${string}`;
|
|
636
|
+
mode: `0${string}`;
|
|
637
|
+
}>;
|
|
638
|
+
failureCode?: string;
|
|
639
|
+
}
|
|
640
|
+
/** Machine-local lease; deliberately not a Protocol artifact. */
|
|
641
|
+
export interface OperatingLockRecord {
|
|
642
|
+
projectKey: string;
|
|
643
|
+
nonce: string;
|
|
644
|
+
pid: number;
|
|
645
|
+
host: string;
|
|
646
|
+
processStartedAt: string;
|
|
647
|
+
createdAt: string;
|
|
648
|
+
heartbeatAt: string;
|
|
649
|
+
leaseDurationMs: number;
|
|
650
|
+
leaseExpiresAt: string;
|
|
651
|
+
expectedEventHead: OperatingEventHead;
|
|
652
|
+
}
|
|
653
|
+
export interface OperatingArtifactSession extends ProtocolArtifact<'operating-artifact-session'> {
|
|
654
|
+
id: string;
|
|
655
|
+
cycleId: string;
|
|
656
|
+
state: 'prepared' | 'generating' | 'validated' | 'committed' | 'failed' | 'cancelled';
|
|
657
|
+
artifactType: 'markdown' | 'html' | 'json' | 'csv';
|
|
658
|
+
inputDigest: `sha256:${string}`;
|
|
659
|
+
outputDigest?: `sha256:${string}`;
|
|
660
|
+
destination: string;
|
|
661
|
+
evidenceRefs: string[];
|
|
662
|
+
producer: {
|
|
663
|
+
product: string;
|
|
664
|
+
version: string;
|
|
665
|
+
runtime: string;
|
|
666
|
+
capability: 'analysis-standard' | 'analysis-high';
|
|
667
|
+
};
|
|
668
|
+
createdAt: string;
|
|
669
|
+
updatedAt: string;
|
|
670
|
+
failureCode?: string;
|
|
671
|
+
}
|
|
672
|
+
export interface OperatingMigrationRecord extends ProtocolArtifact<'operating-migration-record'> {
|
|
673
|
+
id: string;
|
|
674
|
+
sourceKind: 'prototype-board' | 'protocol-upgrade';
|
|
675
|
+
sourceDigest: `sha256:${string}`;
|
|
676
|
+
state: 'previewed' | 'applied' | 'rolled-back' | 'conflict' | 'failed';
|
|
677
|
+
previewDigest: `sha256:${string}`;
|
|
678
|
+
backupManifestDigest: `sha256:${string}`;
|
|
679
|
+
mappings: Array<{
|
|
680
|
+
sourceId: string;
|
|
681
|
+
targetId: string;
|
|
682
|
+
eventId: string;
|
|
683
|
+
}>;
|
|
684
|
+
conflicts: string[];
|
|
685
|
+
createdAt: string;
|
|
686
|
+
updatedAt: string;
|
|
687
|
+
failureCode?: string;
|
|
688
|
+
}
|
|
689
|
+
export interface OperatingRecoveryRecord extends ProtocolArtifact<'operating-recovery-record'> {
|
|
690
|
+
id: string;
|
|
691
|
+
transactionId: string | null;
|
|
692
|
+
action: 'rebuild-projection' | 'recover-journal' | 'rollback' | 'forward-fix' | 'restore-backup';
|
|
693
|
+
reason: string;
|
|
694
|
+
previewDigest: `sha256:${string}`;
|
|
695
|
+
fromHead: OperatingEventHead;
|
|
696
|
+
toHead: OperatingEventHead;
|
|
697
|
+
outcome: 'recovered' | 'blocked' | 'failed';
|
|
698
|
+
confirmedBy: string;
|
|
699
|
+
createdAt: string;
|
|
700
|
+
}
|
|
701
|
+
export interface OperateActionRequest {
|
|
702
|
+
action: string;
|
|
703
|
+
projectRoot: string;
|
|
704
|
+
arguments?: Record<string, unknown>;
|
|
705
|
+
options: Record<string, unknown>;
|
|
706
|
+
interactive: boolean;
|
|
707
|
+
stdin?: string;
|
|
708
|
+
}
|
|
709
|
+
export interface OperateActionResult {
|
|
710
|
+
schemaVersion: '1.0.0';
|
|
711
|
+
protocolVersion: '1.2.0';
|
|
712
|
+
ok: boolean;
|
|
713
|
+
action: string;
|
|
714
|
+
code?: string;
|
|
715
|
+
message?: string;
|
|
716
|
+
cycleId?: string | null;
|
|
717
|
+
state?: string | null;
|
|
718
|
+
paths: Record<string, string>;
|
|
719
|
+
counts: Record<string, number>;
|
|
720
|
+
warnings: string[];
|
|
721
|
+
nextActions: string[];
|
|
722
|
+
data?: unknown;
|
|
723
|
+
preview?: unknown;
|
|
724
|
+
next?: string[];
|
|
725
|
+
/** Compatibility fields consumed by the current human renderer. */
|
|
726
|
+
lines?: string[];
|
|
727
|
+
exitCode?: number;
|
|
728
|
+
}
|
|
729
|
+
//# sourceMappingURL=types.d.ts.map
|