@dailephd/my-frontend-observer 0.9.1 → 0.10.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.
- package/CHANGELOG.md +490 -471
- package/LICENSE +21 -21
- package/README.md +375 -357
- package/dist/application/projectCheckService.d.ts +6 -0
- package/dist/application/projectCheckService.js +8 -1
- package/dist/application/projectCheckService.js.map +1 -1
- package/dist/application/projectWorkflowService.d.ts +7 -2
- package/dist/application/projectWorkflowService.js +10 -3
- package/dist/application/projectWorkflowService.js.map +1 -1
- package/dist/application/visualChangeAgentHandoffService.d.ts +28 -0
- package/dist/application/visualChangeAgentHandoffService.js +111 -0
- package/dist/application/visualChangeAgentHandoffService.js.map +1 -0
- package/dist/application/visualChangeProjectWorkflowService.d.ts +95 -0
- package/dist/application/visualChangeProjectWorkflowService.js +376 -0
- package/dist/application/visualChangeProjectWorkflowService.js.map +1 -0
- package/dist/application/visualChangeReviewService.d.ts +50 -0
- package/dist/application/visualChangeReviewService.js +69 -0
- package/dist/application/visualChangeReviewService.js.map +1 -0
- package/dist/application/visualChangeWorkflowPersistenceService.d.ts +26 -0
- package/dist/application/visualChangeWorkflowPersistenceService.js +15 -0
- package/dist/application/visualChangeWorkflowPersistenceService.js.map +1 -0
- package/dist/artifacts/visualChangeWorkflowArtifactReader.d.ts +9 -0
- package/dist/artifacts/visualChangeWorkflowArtifactReader.js +47 -0
- package/dist/artifacts/visualChangeWorkflowArtifactReader.js.map +1 -0
- package/dist/artifacts/visualChangeWorkflowArtifactWriter.d.ts +20 -0
- package/dist/artifacts/visualChangeWorkflowArtifactWriter.js +41 -0
- package/dist/artifacts/visualChangeWorkflowArtifactWriter.js.map +1 -0
- package/dist/cli.js +9 -7
- package/dist/cli.js.map +1 -1
- package/dist/domain/visualChangeAgentHandoff.d.ts +82 -0
- package/dist/domain/visualChangeAgentHandoff.js +80 -0
- package/dist/domain/visualChangeAgentHandoff.js.map +1 -0
- package/dist/domain/visualChangeAgentHandoffSerialization.d.ts +2 -0
- package/dist/domain/visualChangeAgentHandoffSerialization.js +11 -0
- package/dist/domain/visualChangeAgentHandoffSerialization.js.map +1 -0
- package/dist/domain/visualChangeCycle.d.ts +8 -0
- package/dist/domain/visualChangeCycle.js +7 -0
- package/dist/domain/visualChangeCycle.js.map +1 -0
- package/dist/domain/visualChangeWorkflow.d.ts +125 -0
- package/dist/domain/visualChangeWorkflow.js +109 -0
- package/dist/domain/visualChangeWorkflow.js.map +1 -0
- package/dist/domain/visualChangeWorkflowIdentity.d.ts +5 -0
- package/dist/domain/visualChangeWorkflowIdentity.js +24 -0
- package/dist/domain/visualChangeWorkflowIdentity.js.map +1 -0
- package/dist/index.d.ts +21 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/projectWorkflow/projectPaths.d.ts +3 -0
- package/dist/projectWorkflow/projectPaths.js +7 -0
- package/dist/projectWorkflow/projectPaths.js.map +1 -1
- package/dist/viewer/assets/index-DglJ6f28.css +1 -0
- package/dist/viewer/assets/index-DsODREY5.js +9 -0
- package/dist/viewer/index.html +15 -15
- package/dist/viewer/sw.js +1 -1
- package/dist/viewerServer/evidence/classify.d.ts +3 -1
- package/dist/viewerServer/evidence/classify.js +10 -0
- package/dist/viewerServer/evidence/classify.js.map +1 -1
- package/dist/viewerServer/evidence/handles.js +1 -0
- package/dist/viewerServer/evidence/handles.js.map +1 -1
- package/dist/viewerServer/evidence/projection.d.ts +5 -0
- package/dist/viewerServer/evidence/projection.js +19 -0
- package/dist/viewerServer/evidence/projection.js.map +1 -1
- package/dist/viewerServer/evidence/visualChangeWorkflowView.d.ts +31 -0
- package/dist/viewerServer/evidence/visualChangeWorkflowView.js +36 -0
- package/dist/viewerServer/evidence/visualChangeWorkflowView.js.map +1 -0
- package/dist/viewerServer/httpServer.js +323 -1
- package/dist/viewerServer/httpServer.js.map +1 -1
- package/dist/viewerServer/referenceApproval.d.ts +22 -0
- package/dist/viewerServer/referenceApproval.js +42 -0
- package/dist/viewerServer/referenceApproval.js.map +1 -0
- package/dist/viewerServer/referenceVisualChangeAuthoring.d.ts +28 -0
- package/dist/viewerServer/referenceVisualChangeAuthoring.js +134 -0
- package/dist/viewerServer/referenceVisualChangeAuthoring.js.map +1 -0
- package/dist/viewerServer/runtimeVisualChangeAuthoring.d.ts +33 -0
- package/dist/viewerServer/runtimeVisualChangeAuthoring.js +81 -0
- package/dist/viewerServer/runtimeVisualChangeAuthoring.js.map +1 -0
- package/dist/viewerServer/visualChangeAuthoring.d.ts +46 -0
- package/dist/viewerServer/visualChangeAuthoring.js +63 -0
- package/dist/viewerServer/visualChangeAuthoring.js.map +1 -0
- package/dist/viewerServer/visualChangeHandoff.d.ts +23 -0
- package/dist/viewerServer/visualChangeHandoff.js +31 -0
- package/dist/viewerServer/visualChangeHandoff.js.map +1 -0
- package/dist/viewerServer/visualChangeReview.d.ts +30 -0
- package/dist/viewerServer/visualChangeReview.js +46 -0
- package/dist/viewerServer/visualChangeReview.js.map +1 -0
- package/docs/ARCHITECTURE.md +1394 -1373
- package/docs/CI_CD.md +349 -327
- package/docs/COMMANDS.md +1035 -1012
- package/docs/CONTRACTS.md +1971 -1926
- package/docs/CURRENT_STATE.md +1277 -1238
- package/docs/DEVELOPMENT.md +240 -237
- package/docs/DOCUMENTATION_PRESERVATION_POLICY.md +50 -50
- package/docs/PROJECT_DESCRIPTION.md +2248 -2224
- package/docs/PROJECT_MILESTONES.md +2681 -2558
- package/docs/PROJECT_OVERVIEW.md +200 -191
- package/docs/QUICKSTART.md +100 -96
- package/docs/RELEASE.md +37 -33
- package/docs/ROADMAP.md +1105 -1033
- package/docs/SECURITY.md +297 -275
- package/docs/WORKFLOWS.md +806 -770
- package/docs/plans/v0.10-implementation-plan.md +1509 -0
- package/docs/plans/v0.8-implementation-plan.md +655 -655
- package/docs/plans/v0.8.1-cli-usability-patch-plan.md +505 -505
- package/docs/plans/v0.9-implementation-plan.md +1529 -1529
- package/docs/plans/v0.9.1-implementation-plan.md +468 -468
- package/docs/reports/v0.10-batch1-visual-change-workflow-foundation.md +102 -0
- package/docs/reports/v0.10-batch2-project-composition-check-recording.md +103 -0
- package/docs/reports/v0.10-batch3-viewer-visual-change-workspace.md +93 -0
- package/docs/reports/v0.10-batch4-actual-frontend-entry.md +59 -0
- package/docs/reports/v0.10-batch5-reference-driven-entry.md +238 -0
- package/docs/reports/v0.10-batch6-coding-agent-handoff.md +85 -0
- package/docs/reports/v0.10-batch7-correction-review-acceptance.md +145 -0
- package/docs/reports/v0.10-batch8-integrated-acceptance.md +109 -0
- package/docs/reports/v0.10-implementation-completeness-documentation-reconciliation.md +344 -0
- package/docs/reports/v0.10-pre-release-readiness.md +120 -0
- package/docs/reports/v0.10-release-preparation.md +70 -0
- package/docs/reports/v0.10.1-project-check-baseline-context-implementation.md +86 -0
- package/docs/reports/v0.7-bounded-fidelity-context-prompt7.md +243 -243
- package/docs/reports/v0.7-implementation-completeness-documentation-reconciliation.md +497 -497
- package/docs/reports/v0.7-pre-release-readiness.md +337 -337
- package/docs/reports/v0.7-reference-binding-prompt5.md +223 -223
- package/docs/reports/v0.7-reference-compatibility-prompt4.md +234 -234
- package/docs/reports/v0.7-reference-correction-workflow-prompt8.md +222 -222
- package/docs/reports/v0.7-reference-fidelity-prompt6.md +216 -216
- package/docs/reports/v0.7-reference-foundation-prompt1.md +151 -151
- package/docs/reports/v0.7-reference-regions-prompt2.md +195 -195
- package/docs/reports/v0.7-reference-requirements-prompt3.md +217 -217
- package/docs/reports/v0.7-release-prep.md +423 -423
- package/docs/reports/v0.8-binding-fidelity-interaction-batch6.md +279 -279
- package/docs/reports/v0.8-bounded-context-correlation-batch7.md +233 -233
- package/docs/reports/v0.8-comparison-contract-inspection-batch4.md +279 -279
- package/docs/reports/v0.8-evidence-index-readers-batch2.md +247 -247
- package/docs/reports/v0.8-implementation-completeness-documentation-reconciliation.md +741 -741
- package/docs/reports/v0.8-integrated-viewer-acceptance-batch8.md +128 -128
- package/docs/reports/v0.8-observation-svg-inspection-batch3.md +223 -223
- package/docs/reports/v0.8-prerelease-readiness-cross-platform-security-code-rot.md +687 -687
- package/docs/reports/v0.8-reference-candidate-inspection-batch5.md +232 -232
- package/docs/reports/v0.8-viewer-runtime-pwa-batch1.md +278 -278
- package/docs/reports/v0.8.1-implementation-completeness-documentation-reconciliation.md +114 -114
- package/docs/reports/v0.8.1-prerelease-readiness-cross-platform-security-code-rot.md +170 -170
- package/docs/reports/v0.9-architecture-retrieval.md +14 -37
- package/docs/reports/v0.9-final-pre-release-readiness.md +209 -209
- package/docs/reports/v0.9-final-readiness-corrections.md +530 -530
- package/docs/reports/v0.9-pre-release-readiness.md +169 -169
- package/docs/reports/v0.9.1-batch1-pwa-hard-gate-isolation.md +359 -359
- package/docs/reports/v0.9.1-batch2-hard-gate-validation-integration.md +262 -262
- package/docs/reports/v0.9.1-pre-release-readiness.md +206 -206
- package/package.json +59 -59
- package/dist/viewer/assets/index-BN41MI7m.css +0 -1
- package/dist/viewer/assets/index-CkKXnlrI.js +0 -9
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
import type { NormalizedObservationRequest } from '../request/request.js';
|
|
1
2
|
import { type CheckWorkflowResult } from '../projectWorkflow/checkResult.js';
|
|
3
|
+
/** Preserve only baseline-owned observation dimensions that project config cannot express. */
|
|
4
|
+
export declare function projectCheckObservationContext(requestConfig: NormalizedObservationRequest): {
|
|
5
|
+
scrollScenario?: NonNullable<NormalizedObservationRequest['scrollScenario']>;
|
|
6
|
+
explicitState?: NonNullable<NormalizedObservationRequest['explicitState']>;
|
|
7
|
+
};
|
|
2
8
|
/** Compose existing canonical capture/comparison/contract/reference owners into one project workflow. */
|
|
3
9
|
export declare function checkProject(projectRoot: string, requestedBaseline?: string): Promise<CheckWorkflowResult>;
|
|
@@ -18,6 +18,13 @@ function projectRelative(projectRoot, absolutePath) {
|
|
|
18
18
|
function addBlocker(result, code, message) {
|
|
19
19
|
result.blockers.push({ code, message });
|
|
20
20
|
}
|
|
21
|
+
/** Preserve only baseline-owned observation dimensions that project config cannot express. */
|
|
22
|
+
export function projectCheckObservationContext(requestConfig) {
|
|
23
|
+
return {
|
|
24
|
+
...(requestConfig.scrollScenario === undefined ? {} : { scrollScenario: requestConfig.scrollScenario }),
|
|
25
|
+
...(requestConfig.explicitState === undefined ? {} : { explicitState: requestConfig.explicitState }),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
21
28
|
async function prepareAcceptance(projectRoot, config) {
|
|
22
29
|
const prepared = {};
|
|
23
30
|
if (config.comparisonConfigFile !== undefined) {
|
|
@@ -102,7 +109,7 @@ export async function checkProject(projectRoot, requestedBaseline) {
|
|
|
102
109
|
result.reference.state = 'BLOCKED';
|
|
103
110
|
return finalizeCheckStatus(result);
|
|
104
111
|
}
|
|
105
|
-
const captured = await captureCurrentObservation(projectRoot);
|
|
112
|
+
const captured = await captureCurrentObservation(projectRoot, projectCheckObservationContext(baselineRead.artifact.requestConfig));
|
|
106
113
|
if (!captured.ok) {
|
|
107
114
|
addBlocker(result, 'candidate-capture-failed', 'current candidate capture failed; the previous current alias was preserved');
|
|
108
115
|
return finalizeCheckStatus(result);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectCheckService.js","sourceRoot":"","sources":["../../src/application/projectCheckService.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"projectCheckService.js","sourceRoot":"","sources":["../../src/application/projectCheckService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Diagnostic } from '../domain/diagnostics.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type { ExplicitStateDimensions } from '../domain/explicitState.js';
|
|
3
|
+
import type { RawNamedTarget, ScrollScenario } from '../request/request.js';
|
|
3
4
|
export type ProjectWorkflowErrorCode = 'project-not-initialized' | 'project-config-exists' | 'project-config-invalid' | 'project-catalog-invalid' | 'alias-invalid' | 'alias-reserved' | 'alias-exists' | 'project-state-write-failure' | 'observation-failure';
|
|
4
5
|
type WorkflowFailure = {
|
|
5
6
|
ok: false;
|
|
@@ -36,8 +37,12 @@ export type CaptureNamedObservationResult = {
|
|
|
36
37
|
completionState: string;
|
|
37
38
|
diagnostics: readonly Diagnostic[];
|
|
38
39
|
} | WorkflowFailure;
|
|
40
|
+
interface ProjectCheckObservationContext {
|
|
41
|
+
scrollScenario?: ScrollScenario;
|
|
42
|
+
explicitState?: ExplicitStateDimensions;
|
|
43
|
+
}
|
|
39
44
|
export declare function captureNamedObservation(input: CaptureNamedObservationInput): Promise<CaptureNamedObservationResult>;
|
|
40
|
-
export declare function captureCurrentObservation(projectRoot: string): Promise<CaptureNamedObservationResult>;
|
|
45
|
+
export declare function captureCurrentObservation(projectRoot: string, context?: ProjectCheckObservationContext): Promise<CaptureNamedObservationResult>;
|
|
41
46
|
export declare function loadProjectViewerState(projectRootInput: string): Promise<{
|
|
42
47
|
ok: true;
|
|
43
48
|
projectRoot: string;
|
|
@@ -45,7 +45,7 @@ export async function initializeFrontendObserverProject(input) {
|
|
|
45
45
|
return { ok: false, code: 'project-state-write-failure', message: error instanceof Error ? error.message : String(error) };
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
async function captureObservation(input, allowReserved) {
|
|
48
|
+
async function captureObservation(input, allowReserved, context = {}) {
|
|
49
49
|
const aliasValidation = validateObservationAlias(input.alias, allowReserved);
|
|
50
50
|
if (!aliasValidation.ok)
|
|
51
51
|
return { ok: false, code: aliasValidation.reason === 'reserved' ? 'alias-reserved' : 'alias-invalid', message: aliasValidation.reason === 'reserved' ? 'alias "current" is reserved for a later workflow command' : 'alias must match ^[a-z0-9][a-z0-9._-]{0,63}$ and must not be a traversal expression' };
|
|
@@ -57,7 +57,14 @@ async function captureObservation(input, allowReserved) {
|
|
|
57
57
|
return { ok: false, code: 'project-catalog-invalid', message: catalogResult.reason };
|
|
58
58
|
if (catalogResult.catalog.observations[input.alias] !== undefined && !input.replace)
|
|
59
59
|
return { ok: false, code: 'alias-exists', message: `alias "${input.alias}" already exists; pass --replace to point it at a new observation` };
|
|
60
|
-
const normalized = normalizeRequest({
|
|
60
|
+
const normalized = normalizeRequest({
|
|
61
|
+
targetUrl: config.config.url,
|
|
62
|
+
viewport: config.config.viewport,
|
|
63
|
+
targets: config.config.targets,
|
|
64
|
+
outputLocation: observationOutputLocation(input.alias),
|
|
65
|
+
...(context.scrollScenario === undefined ? {} : { scrollScenario: context.scrollScenario }),
|
|
66
|
+
...(context.explicitState === undefined ? {} : { explicitState: context.explicitState }),
|
|
67
|
+
});
|
|
61
68
|
if (!normalized.ok)
|
|
62
69
|
return { ok: false, code: 'project-config-invalid', message: normalized.diagnostics.map((entry) => entry.message).join('; ') };
|
|
63
70
|
const result = await observe(normalized.request, { cwd: input.projectRoot });
|
|
@@ -76,7 +83,7 @@ async function captureObservation(input, allowReserved) {
|
|
|
76
83
|
return { ok: true, alias: input.alias, observationId: result.observationId, requestId: result.requestId, artifactRoot: result.artifactRoot, completionState: result.completion.state, diagnostics: result.diagnostics };
|
|
77
84
|
}
|
|
78
85
|
export async function captureNamedObservation(input) { return captureObservation(input, false); }
|
|
79
|
-
export async function captureCurrentObservation(projectRoot) { return captureObservation({ projectRoot, alias: 'current', replace: true }, true); }
|
|
86
|
+
export async function captureCurrentObservation(projectRoot, context = {}) { return captureObservation({ projectRoot, alias: 'current', replace: true }, true, context); }
|
|
80
87
|
export async function loadProjectViewerState(projectRootInput) {
|
|
81
88
|
const projectRoot = path.resolve(projectRootInput);
|
|
82
89
|
const config = await readProjectConfig(projectConfigPath(projectRoot));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectWorkflowService.js","sourceRoot":"","sources":["../../src/application/projectWorkflowService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"projectWorkflowService.js","sourceRoot":"","sources":["../../src/application/projectWorkflowService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { BoundedAgentContextArtifact } from '../domain/boundedAgentContext.js';
|
|
2
|
+
import type { VisualChangeAgentHandoff, VisualChangeExternalCoordination } from '../domain/visualChangeAgentHandoff.js';
|
|
3
|
+
export type PrepareVisualChangeAgentHandoffFailureCode = 'workflow-invalid' | 'workflow-inactive' | 'workflow-restored' | 'acceptance-drift' | 'baseline-drift' | 'evidence-unavailable' | 'reference-not-evaluable' | 'unsupported-context' | 'context-mismatch' | 'bounded-context-failed' | 'invalid-handoff' | 'review-required' | 'workflow-accepted' | 'workflow-abandoned';
|
|
4
|
+
export type PrepareVisualChangeAgentHandoffResult = {
|
|
5
|
+
ok: true;
|
|
6
|
+
handoff: VisualChangeAgentHandoff;
|
|
7
|
+
} | {
|
|
8
|
+
ok: false;
|
|
9
|
+
code: PrepareVisualChangeAgentHandoffFailureCode;
|
|
10
|
+
reason: string;
|
|
11
|
+
};
|
|
12
|
+
export interface PrepareVisualChangeAgentHandoffInput {
|
|
13
|
+
projectRoot: string;
|
|
14
|
+
workflowManifestPath: string;
|
|
15
|
+
context: {
|
|
16
|
+
status: 'none';
|
|
17
|
+
} | {
|
|
18
|
+
status: 'unsupported-version';
|
|
19
|
+
foundSchemaVersion: string;
|
|
20
|
+
} | {
|
|
21
|
+
status: 'valid';
|
|
22
|
+
artifact: BoundedAgentContextArtifact;
|
|
23
|
+
};
|
|
24
|
+
generatedAt: string;
|
|
25
|
+
producerVersion: string;
|
|
26
|
+
coordination?: VisualChangeExternalCoordination;
|
|
27
|
+
}
|
|
28
|
+
export declare function prepareVisualChangeAgentHandoff(input: PrepareVisualChangeAgentHandoffInput): Promise<PrepareVisualChangeAgentHandoffResult>;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { readObservationArtifact } from '../artifacts/artifactReader.js';
|
|
3
|
+
import { readExternalReferenceArtifact } from '../artifacts/externalReferenceArtifactReader.js';
|
|
4
|
+
import { readPerChangeContract, readPersistentBaselineContract } from '../artifacts/frontendContractArtifactReader.js';
|
|
5
|
+
import { projectBoundedAgentContext } from '../domain/boundedAgentContextProjection.js';
|
|
6
|
+
import { evaluateReferenceCandidateFidelity } from '../domain/externalReferenceFidelity.js';
|
|
7
|
+
import { prepareReferenceCorrection } from '../domain/referenceCorrectionWorkflow.js';
|
|
8
|
+
import { VISUAL_CHANGE_AGENT_HANDOFF_KIND, VISUAL_CHANGE_AGENT_HANDOFF_VERSION, isValidVisualChangeAgentHandoff } from '../domain/visualChangeAgentHandoff.js';
|
|
9
|
+
import { resolveContainedAcceptancePath } from '../projectWorkflow/checkAcceptance.js';
|
|
10
|
+
import { prepareActiveVisualChangeWorkflow, readProjectVisualChangeCycle } from './visualChangeProjectWorkflowService.js';
|
|
11
|
+
const fail = (code, reason) => ({ ok: false, code, reason });
|
|
12
|
+
function manifest(projectRoot, portable) { const resolved = resolveContainedAcceptancePath(projectRoot, portable); return resolved.ok ? path.join(resolved.path, 'manifest.json') : undefined; }
|
|
13
|
+
function contextCoherent(context, scope) {
|
|
14
|
+
if (!context.sources.observationIds.includes(scope.baselineObservation.observationId))
|
|
15
|
+
return false;
|
|
16
|
+
if (scope.entryMode === 'actual-frontend')
|
|
17
|
+
return (context.sources.baselineContractId === undefined || context.sources.baselineContractId === scope.baselineContract.baselineId) && (context.sources.changeContractId === undefined || context.sources.changeContractId === scope.changeContract.contractId);
|
|
18
|
+
return (context.sources.baselineContractId === undefined || context.sources.baselineContractId === scope.baselineContract?.baselineId) && (context.sources.referenceId === undefined || context.sources.referenceId === scope.approvedReference.referenceId) && (context.sources.referenceRequestId === undefined || context.sources.referenceRequestId === scope.approvedReference.referenceRequestId);
|
|
19
|
+
}
|
|
20
|
+
export async function prepareVisualChangeAgentHandoff(input) {
|
|
21
|
+
const preflight = await readProjectVisualChangeCycle(input.projectRoot, input.workflowManifestPath);
|
|
22
|
+
if (!preflight.ok)
|
|
23
|
+
return fail('workflow-invalid', preflight.reason);
|
|
24
|
+
if (preflight.cycle === 'review-required')
|
|
25
|
+
return fail('review-required', 'the latest attempt requires explicit human review before another handoff');
|
|
26
|
+
if (preflight.cycle === 'accepted')
|
|
27
|
+
return fail('workflow-accepted', 'accepted workflow is terminal');
|
|
28
|
+
if (preflight.cycle === 'abandoned')
|
|
29
|
+
return fail('workflow-abandoned', 'abandoned workflow is terminal');
|
|
30
|
+
const ready = await prepareActiveVisualChangeWorkflow(input.projectRoot, input.workflowManifestPath);
|
|
31
|
+
if (!ready.ok) {
|
|
32
|
+
const mapping = { 'activation-not-configured': 'workflow-inactive', 'activation-already-restored': 'workflow-restored', 'acceptance-drift': 'acceptance-drift', 'baseline-drift': 'baseline-drift', 'workflow-invalid': 'workflow-invalid', 'workflow-reference-invalid': 'evidence-unavailable' };
|
|
33
|
+
return fail(mapping[ready.code] ?? 'evidence-unavailable', ready.reason);
|
|
34
|
+
}
|
|
35
|
+
if (input.context.status === 'unsupported-version')
|
|
36
|
+
return fail('unsupported-context', `supplemental context schema ${input.context.foundSchemaVersion} is unsupported`);
|
|
37
|
+
const { projectRoot, workflow, config, baselineAlias } = ready.context;
|
|
38
|
+
const scope = workflow.scope;
|
|
39
|
+
const baselinePath = manifest(projectRoot, scope.baselineObservation.artifactPath);
|
|
40
|
+
const baselineRead = baselinePath === undefined ? undefined : await readObservationArtifact(baselinePath);
|
|
41
|
+
if (baselineRead === undefined || !baselineRead.ok)
|
|
42
|
+
return fail('evidence-unavailable', 'frozen baseline observation is unavailable');
|
|
43
|
+
const observation = baselineRead.artifact;
|
|
44
|
+
let baselineContract;
|
|
45
|
+
if (scope.baselineContract !== undefined) {
|
|
46
|
+
const file = manifest(projectRoot, scope.baselineContract.artifactPath);
|
|
47
|
+
const read = file === undefined ? undefined : await readPersistentBaselineContract(file);
|
|
48
|
+
if (read === undefined || !read.ok)
|
|
49
|
+
return fail('evidence-unavailable', 'frozen baseline contract is unavailable');
|
|
50
|
+
baselineContract = read.contract;
|
|
51
|
+
}
|
|
52
|
+
let activeChangeContract;
|
|
53
|
+
if (config.acceptance?.contract !== undefined) {
|
|
54
|
+
const file = manifest(projectRoot, config.acceptance.contract.changeArtifact);
|
|
55
|
+
const read = file === undefined ? undefined : await readPerChangeContract(file);
|
|
56
|
+
if (read === undefined || !read.ok)
|
|
57
|
+
return fail('evidence-unavailable', 'active change contract is unavailable');
|
|
58
|
+
activeChangeContract = read.contract;
|
|
59
|
+
}
|
|
60
|
+
let confirmedScope;
|
|
61
|
+
let primary;
|
|
62
|
+
let trace;
|
|
63
|
+
if (scope.entryMode === 'actual-frontend') {
|
|
64
|
+
if (baselineContract === undefined)
|
|
65
|
+
return fail('evidence-unavailable', 'actual workflow baseline contract is unavailable');
|
|
66
|
+
const changeFile = manifest(projectRoot, scope.changeContract.artifactPath);
|
|
67
|
+
const changeRead = changeFile === undefined ? undefined : await readPerChangeContract(changeFile);
|
|
68
|
+
if (changeRead === undefined || !changeRead.ok)
|
|
69
|
+
return fail('evidence-unavailable', 'frozen change contract is unavailable');
|
|
70
|
+
confirmedScope = { entryMode: 'actual-frontend', annotationId: scope.annotationId, baselineObservation: { observationId: observation.observationId, requestId: observation.requestId }, baselineContract: { baselineId: baselineContract.baselineId, clauses: baselineContract.clauses }, changeContract: { contractId: changeRead.contract.contractId, contractRequestId: changeRead.contract.contractRequestId, clauses: changeRead.contract.clauses } };
|
|
71
|
+
const projected = projectBoundedAgentContext({ generatedAt: input.generatedAt, producerVersion: input.producerVersion, projectionProfile: 'frontend-change-review', observation, baseline: baselineContract, change: changeRead.contract, focusTargetIds: [] });
|
|
72
|
+
if (!projected.ok)
|
|
73
|
+
return fail('bounded-context-failed', projected.reason);
|
|
74
|
+
primary = projected.artifact;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
const referenceFile = manifest(projectRoot, scope.approvedReference.artifactPath);
|
|
78
|
+
const referenceRead = referenceFile === undefined ? undefined : await readExternalReferenceArtifact(referenceFile);
|
|
79
|
+
if (referenceRead === undefined || !referenceRead.ok)
|
|
80
|
+
return fail('evidence-unavailable', 'approved reference is unavailable');
|
|
81
|
+
const reference = referenceRead.artifact;
|
|
82
|
+
const fidelityResult = evaluateReferenceCandidateFidelity(reference, observation, scope.bindings);
|
|
83
|
+
if (!fidelityResult.ok || fidelityResult.evaluation.state === 'not-evaluated')
|
|
84
|
+
return fail('reference-not-evaluable', fidelityResult.ok ? 'canonical reference fidelity is not evaluated' : fidelityResult.reason);
|
|
85
|
+
const coherentBaseline = baselineContract !== undefined && baselineContract.sourceObservation.observationId === observation.observationId ? baselineContract : undefined;
|
|
86
|
+
if (baselineContract !== undefined && coherentBaseline === undefined)
|
|
87
|
+
trace = { status: 'not-applicable', reason: 'baseline-contract-source-mismatch' };
|
|
88
|
+
else if (coherentBaseline !== undefined && activeChangeContract !== undefined) {
|
|
89
|
+
const correction = prepareReferenceCorrection({ reference, baselineObservation: observation, currentObservation: observation, baselineContract: coherentBaseline, changeContract: activeChangeContract, bindingDeclarations: scope.bindings, generatedAt: input.generatedAt, producerVersion: input.producerVersion, projectionProfile: 'frontend-change-review' });
|
|
90
|
+
if (!correction.ok)
|
|
91
|
+
return fail('reference-not-evaluable', correction.reason);
|
|
92
|
+
if (correction.status !== 'handoff-ready')
|
|
93
|
+
return fail('reference-not-evaluable', 'canonical reference correction is blocked');
|
|
94
|
+
trace = { status: 'available', reviewRequestId: correction.reviewRequestId };
|
|
95
|
+
}
|
|
96
|
+
else
|
|
97
|
+
trace = { status: 'not-applicable', reason: 'project-contract-context-not-configured' };
|
|
98
|
+
const projected = projectBoundedAgentContext({ generatedAt: input.generatedAt, producerVersion: input.producerVersion, projectionProfile: 'frontend-change-review', observation, fidelity: fidelityResult.evaluation, focusTargetIds: [...new Set(scope.bindings.map((binding) => binding.runtimeTarget))], ...(coherentBaseline === undefined ? {} : { baseline: coherentBaseline }), ...(activeChangeContract === undefined ? {} : { change: activeChangeContract }) });
|
|
99
|
+
if (!projected.ok)
|
|
100
|
+
return fail('bounded-context-failed', projected.reason);
|
|
101
|
+
primary = projected.artifact;
|
|
102
|
+
confirmedScope = { entryMode: 'reference', annotationId: scope.annotationId, baselineObservation: { observationId: observation.observationId, requestId: observation.requestId }, approvedReference: { referenceId: reference.referenceId, referenceRequestId: reference.referenceRequestId, requirements: reference.requirements ?? [] }, bindings: scope.bindings, ...(coherentBaseline === undefined ? {} : { baselineContract: { baselineId: coherentBaseline.baselineId, clauses: coherentBaseline.clauses } }), ...(activeChangeContract === undefined ? {} : { activeChangeContract: { contractId: activeChangeContract.contractId, contractRequestId: activeChangeContract.contractRequestId, clauses: activeChangeContract.clauses } }) };
|
|
103
|
+
}
|
|
104
|
+
const supplemental = input.context.status === 'valid' ? input.context.artifact : undefined;
|
|
105
|
+
if (supplemental !== undefined && !contextCoherent(supplemental, confirmedScope))
|
|
106
|
+
return fail('context-mismatch', 'supplemental context does not match the frozen workflow evidence');
|
|
107
|
+
const verificationPlan = ['Edit target source outside Observer.', `Run my-frontend-observer check ${baselineAlias} --json.`, 'The check captures a fresh current observation and evaluates active contracts.', 'A machine PASS still requires later explicit human review/acceptance.', ...(scope.entryMode === 'reference' ? ['The same approved reference and explicit bindings are re-evaluated.', 'Reference fidelity does not override active frontend-contract failures.'] : [])];
|
|
108
|
+
const handoff = { handoffKind: VISUAL_CHANGE_AGENT_HANDOFF_KIND, handoffVersion: VISUAL_CHANGE_AGENT_HANDOFF_VERSION, visualChangeRequestId: workflow.visualChangeRequestId, visualChangeWorkflowId: workflow.visualChangeWorkflowId, entryMode: scope.entryMode, confirmedScope, boundedAgentContext: primary, ...(supplemental === undefined ? {} : { supplementalContext: supplemental }), ...(trace === undefined ? {} : { referenceCorrection: trace }), verificationPlan, expectedPostEditCheck: { command: 'check', baselineAlias, json: true }, ...(input.coordination === undefined ? {} : { externalCoordination: input.coordination }) };
|
|
109
|
+
return isValidVisualChangeAgentHandoff(handoff) ? { ok: true, handoff } : fail('invalid-handoff', 'constructed handoff failed canonical validation');
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=visualChangeAgentHandoffService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualChangeAgentHandoffService.js","sourceRoot":"","sources":["../../src/application/visualChangeAgentHandoffService.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,iDAAiD,CAAC;AAChG,OAAO,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AAEvH,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AACxF,OAAO,EAAE,kCAAkC,EAAE,MAAM,wCAAwC,CAAC;AAE5F,OAAO,EAAE,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAEtF,OAAO,EAAE,gCAAgC,EAAE,mCAAmC,EAAE,+BAA+B,EAAE,MAAM,uCAAuC,CAAC;AAC/J,OAAO,EAAE,8BAA8B,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,EAAE,iCAAiC,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAC;AAM1H,MAAM,IAAI,GAAG,CAAC,IAAgD,EAAE,MAAc,EAAyC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;AACxJ,SAAS,QAAQ,CAAC,WAAmB,EAAE,QAAgB,IAAwB,MAAM,QAAQ,GAAG,8BAA8B,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAEpO,SAAS,eAAe,CAAC,OAAoC,EAAE,KAAsC;IACnG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,aAAa,CAAC;QAAE,OAAO,KAAK,CAAC;IACpG,IAAI,KAAK,CAAC,SAAS,KAAK,iBAAiB;QAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,kBAAkB,KAAK,KAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,gBAAgB,KAAK,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAC7S,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,kBAAkB,KAAK,KAAK,CAAC,gBAAgB,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,KAAK,KAAK,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,kBAAkB,KAAK,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;AAC1Y,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CAAC,KAA2C;IAC/F,MAAM,SAAS,GAAG,MAAM,4BAA4B,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAAC,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAAC,IAAI,SAAS,CAAC,KAAK,KAAK,iBAAiB;QAAE,OAAO,IAAI,CAAC,iBAAiB,EAAE,0EAA0E,CAAC,CAAC;IAAC,IAAI,SAAS,CAAC,KAAK,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC,mBAAmB,EAAE,+BAA+B,CAAC,CAAC;IAAC,IAAI,SAAS,CAAC,KAAK,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC,oBAAoB,EAAE,gCAAgC,CAAC,CAAC;IAClhB,MAAM,KAAK,GAAG,MAAM,iCAAiC,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACrG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,OAAO,GAA+D,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,CAAC;QAC/V,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,sBAAsB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,qBAAqB;QAAE,OAAO,IAAI,CAAC,qBAAqB,EAAE,+BAA+B,KAAK,CAAC,OAAO,CAAC,kBAAkB,iBAAiB,CAAC,CAAC;IACzK,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;IAAC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IACrG,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAAC,MAAM,YAAY,GAAG,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,uBAAuB,CAAC,YAAY,CAAC,CAAC;IAC9L,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC,sBAAsB,EAAE,4CAA4C,CAAC,CAAC;IACtI,MAAM,WAAW,GAAG,YAAY,CAAC,QAAQ,CAAC;IAC1C,IAAI,gBAAwD,CAAC;IAC7D,IAAI,KAAK,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QAAC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAAC,MAAM,IAAI,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,8BAA8B,CAAC,IAAI,CAAC,CAAC;QAAC,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,sBAAsB,EAAE,yCAAyC,CAAC,CAAC;QAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC;IAAC,CAAC;IACtW,IAAI,oBAAmD,CAAC;IACxD,IAAI,MAAM,CAAC,UAAU,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;QAAC,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAAC,MAAM,IAAI,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAAC,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,sBAAsB,EAAE,uCAAuC,CAAC,CAAC;QAAC,oBAAoB,GAAG,IAAI,CAAC,QAAQ,CAAC;IAAC,CAAC;IAE1W,IAAI,cAA+C,CAAC;IAAC,IAAI,OAAoC,CAAC;IAAC,IAAI,KAAuD,CAAC;IAC3J,IAAI,KAAK,CAAC,SAAS,KAAK,iBAAiB,EAAE,CAAC;QAC1C,IAAI,gBAAgB,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,sBAAsB,EAAE,kDAAkD,CAAC,CAAC;QAC5H,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAAC,MAAM,UAAU,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,qBAAqB,CAAC,UAAU,CAAC,CAAC;QAAC,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,sBAAsB,EAAE,uCAAuC,CAAC,CAAC;QAC7S,cAAc,GAAG,EAAE,SAAS,EAAE,iBAAiB,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,mBAAmB,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,EAAE,gBAAgB,EAAE,EAAE,UAAU,EAAE,gBAAgB,CAAC,UAAU,EAAE,OAAO,EAAE,gBAAgB,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,EAAE,UAAU,CAAC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,EAAE,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3b,MAAM,SAAS,GAAG,0BAA0B,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,WAAW,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,CAAC;QAChQ,IAAI,CAAC,SAAS,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,wBAAwB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC;IAC3G,CAAC;SAAM,CAAC;QACN,MAAM,aAAa,GAAG,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAAC,MAAM,aAAa,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,6BAA6B,CAAC,aAAa,CAAC,CAAC;QAAC,IAAI,aAAa,KAAK,SAAS,IAAI,CAAC,aAAa,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,sBAAsB,EAAE,mCAAmC,CAAC,CAAC;QAAC,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC;QAChX,MAAM,cAAc,GAAG,kCAAkC,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAAC,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,cAAc,CAAC,UAAU,CAAC,KAAK,KAAK,eAAe;YAAE,OAAO,IAAI,CAAC,yBAAyB,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACtT,MAAM,gBAAgB,GAAG,gBAAgB,KAAK,SAAS,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,aAAa,KAAK,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;QACzK,IAAI,gBAAgB,KAAK,SAAS,IAAI,gBAAgB,KAAK,SAAS;YAAE,KAAK,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,mCAAmC,EAAE,CAAC;aACnJ,IAAI,gBAAgB,KAAK,SAAS,IAAI,oBAAoB,KAAK,SAAS,EAAE,CAAC;YAC9E,MAAM,UAAU,GAAG,0BAA0B,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,CAAC,CAAC;YACpW,IAAI,CAAC,UAAU,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC,yBAAyB,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YAAC,IAAI,UAAU,CAAC,MAAM,KAAK,eAAe;gBAAE,OAAO,IAAI,CAAC,yBAAyB,EAAE,2CAA2C,CAAC,CAAC;YAAC,KAAK,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,CAAC,eAAe,EAAE,CAAC;QAC9R,CAAC;;YAAM,KAAK,GAAG,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,yCAAyC,EAAE,CAAC;QAC/F,MAAM,SAAS,GAAG,0BAA0B,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,CAAC,UAAU,EAAE,cAAc,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,CAAC,EAAE,GAAG,CAAC,oBAAoB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1c,IAAI,CAAC,SAAS,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC,wBAAwB,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC;QACzG,cAAc,GAAG,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,mBAAmB,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,EAAE,iBAAiB,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,kBAAkB,EAAE,SAAS,CAAC,kBAAkB,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,EAAE,UAAU,EAAE,gBAAgB,CAAC,UAAU,EAAE,OAAO,EAAE,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,oBAAoB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,EAAE,UAAU,EAAE,oBAAoB,CAAC,UAAU,EAAE,iBAAiB,EAAE,oBAAoB,CAAC,iBAAiB,EAAE,OAAO,EAAE,oBAAoB,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC;IACrtB,CAAC;IACD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAAC,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,cAAc,CAAC;QAAE,OAAO,IAAI,CAAC,kBAAkB,EAAE,kEAAkE,CAAC,CAAC;IAClR,MAAM,gBAAgB,GAAG,CAAC,sCAAsC,EAAE,kCAAkC,aAAa,UAAU,EAAE,gFAAgF,EAAE,uEAAuE,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,qEAAqE,EAAE,yEAAyE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxd,MAAM,OAAO,GAA6B,EAAE,WAAW,EAAE,gCAAgC,EAAE,cAAc,EAAE,mCAAmC,EAAE,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB,EAAE,sBAAsB,EAAE,QAAQ,CAAC,sBAAsB,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,cAAc,EAAE,mBAAmB,EAAE,OAAO,EAAE,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC;IAC9oB,OAAO,+BAA+B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,iDAAiD,CAAC,CAAC;AACvJ,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { VisualChangeActivationRecord, VisualChangeAttemptRecord, VisualChangeCheckSnapshot, VisualChangeScope, VisualChangeWorkflowArtifact } from '../domain/visualChangeWorkflow.js';
|
|
2
|
+
import type { CheckWorkflowResult } from '../projectWorkflow/checkResult.js';
|
|
3
|
+
import type { FrontendObserverProjectConfig } from '../projectWorkflow/projectConfig.js';
|
|
4
|
+
import { checkProject } from './projectCheckService.js';
|
|
5
|
+
import { persistVisualChangeWorkflow, type PersistVisualChangeWorkflowOptions } from './visualChangeWorkflowPersistenceService.js';
|
|
6
|
+
export type VisualChangeProjectWorkflowFailureCode = 'project-config-invalid' | 'workflow-invalid' | 'workflow-reference-invalid' | 'activation-not-configured' | 'activation-already-restored' | 'baseline-drift' | 'acceptance-drift' | 'check-scope-mismatch' | 'candidate-not-produced' | 'duplicate-attempt' | 'attempt-limit-reached' | 'project-config-write-failure' | 'workflow-persistence-failure' | 'partial-state-failure' | 'review-required' | 'workflow-accepted' | 'workflow-abandoned';
|
|
7
|
+
export interface VisualChangeProjectWorkflowFailure {
|
|
8
|
+
ok: false;
|
|
9
|
+
code: VisualChangeProjectWorkflowFailureCode;
|
|
10
|
+
reason: string;
|
|
11
|
+
check?: CheckWorkflowResult;
|
|
12
|
+
}
|
|
13
|
+
type Persist = typeof persistVisualChangeWorkflow;
|
|
14
|
+
type Check = typeof checkProject;
|
|
15
|
+
export interface VisualChangeProjectWorkflowDependencies {
|
|
16
|
+
persist: Persist;
|
|
17
|
+
check: Check;
|
|
18
|
+
atomicWrite(file: string, text: string): Promise<void>;
|
|
19
|
+
now(): string;
|
|
20
|
+
}
|
|
21
|
+
export interface CreateProjectVisualChangeWorkflowInput {
|
|
22
|
+
projectRoot: string;
|
|
23
|
+
scope: VisualChangeScope;
|
|
24
|
+
createdAt?: string;
|
|
25
|
+
dependencies?: Partial<VisualChangeProjectWorkflowDependencies>;
|
|
26
|
+
}
|
|
27
|
+
export type CreateProjectVisualChangeWorkflowResult = Awaited<ReturnType<Persist>> | VisualChangeProjectWorkflowFailure;
|
|
28
|
+
export declare function createProjectVisualChangeWorkflow(input: CreateProjectVisualChangeWorkflowInput): Promise<CreateProjectVisualChangeWorkflowResult>;
|
|
29
|
+
export declare function persistProjectVisualChangeWorkflowRevision(projectRoot: string, source: VisualChangeWorkflowArtifact, options: Omit<PersistVisualChangeWorkflowOptions, 'scope' | 'outputLocation' | 'cwd' | 'supersedesVisualChangeWorkflowId'>): Promise<import("./visualChangeWorkflowPersistenceService.js").ApplicationPersistVisualChangeWorkflowResult>;
|
|
30
|
+
export interface ProjectVisualChangeMutationInput {
|
|
31
|
+
projectRoot: string;
|
|
32
|
+
workflowManifestPath: string;
|
|
33
|
+
dependencies?: Partial<VisualChangeProjectWorkflowDependencies>;
|
|
34
|
+
}
|
|
35
|
+
export declare function activateProjectVisualChangeWorkflow(input: ProjectVisualChangeMutationInput): Promise<{
|
|
36
|
+
ok: true;
|
|
37
|
+
visualChangeRequestId: string;
|
|
38
|
+
visualChangeWorkflowId: string;
|
|
39
|
+
artifactRoot: string;
|
|
40
|
+
manifestPath: string;
|
|
41
|
+
bindingsPath?: string;
|
|
42
|
+
} | VisualChangeProjectWorkflowFailure>;
|
|
43
|
+
export declare function restoreProjectVisualChangeWorkflowAcceptance(input: ProjectVisualChangeMutationInput): Promise<{
|
|
44
|
+
ok: true;
|
|
45
|
+
visualChangeRequestId: string;
|
|
46
|
+
visualChangeWorkflowId: string;
|
|
47
|
+
artifactRoot: string;
|
|
48
|
+
manifestPath: string;
|
|
49
|
+
bindingsPath?: string;
|
|
50
|
+
} | VisualChangeProjectWorkflowFailure>;
|
|
51
|
+
export interface VerifiedVisualChangeAcceptance {
|
|
52
|
+
activeBaselineContractId?: string;
|
|
53
|
+
activeChangeContractId?: string;
|
|
54
|
+
}
|
|
55
|
+
export declare function projectVisualChangeCheckSnapshot(result: CheckWorkflowResult & {
|
|
56
|
+
baseline: NonNullable<CheckWorkflowResult['baseline']>;
|
|
57
|
+
candidate: NonNullable<CheckWorkflowResult['candidate']>;
|
|
58
|
+
}, verified: VerifiedVisualChangeAcceptance): VisualChangeCheckSnapshot;
|
|
59
|
+
export interface RunProjectVisualChangeCheckInput extends ProjectVisualChangeMutationInput {
|
|
60
|
+
coordination?: VisualChangeAttemptRecord['coordination'];
|
|
61
|
+
}
|
|
62
|
+
export interface ActiveVisualChangeWorkflowContext {
|
|
63
|
+
projectRoot: string;
|
|
64
|
+
workflow: VisualChangeWorkflowArtifact & {
|
|
65
|
+
activation: VisualChangeActivationRecord;
|
|
66
|
+
};
|
|
67
|
+
workflowManifestPath: string;
|
|
68
|
+
config: FrontendObserverProjectConfig;
|
|
69
|
+
baselineAlias: string;
|
|
70
|
+
verifiedContractIds: {
|
|
71
|
+
baselineId?: string;
|
|
72
|
+
changeId?: string;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export declare function readProjectVisualChangeCycle(projectRootInput: string, workflowManifestPath: string): Promise<VisualChangeProjectWorkflowFailure | {
|
|
76
|
+
ok: true;
|
|
77
|
+
workflow: VisualChangeWorkflowArtifact;
|
|
78
|
+
cycle: import("../domain/visualChangeCycle.js").VisualChangeCycleState;
|
|
79
|
+
}>;
|
|
80
|
+
/** One readiness owner for canonical check recording and on-demand handoff preparation. */
|
|
81
|
+
export declare function prepareActiveVisualChangeWorkflow(projectRootInput: string, workflowManifestPath: string): Promise<{
|
|
82
|
+
ok: true;
|
|
83
|
+
context: ActiveVisualChangeWorkflowContext;
|
|
84
|
+
} | VisualChangeProjectWorkflowFailure>;
|
|
85
|
+
export declare function runProjectVisualChangeCheck(input: RunProjectVisualChangeCheckInput): Promise<VisualChangeProjectWorkflowFailure | {
|
|
86
|
+
check: CheckWorkflowResult;
|
|
87
|
+
attempt: VisualChangeAttemptRecord;
|
|
88
|
+
ok: true;
|
|
89
|
+
visualChangeRequestId: string;
|
|
90
|
+
visualChangeWorkflowId: string;
|
|
91
|
+
artifactRoot: string;
|
|
92
|
+
manifestPath: string;
|
|
93
|
+
bindingsPath?: string;
|
|
94
|
+
}>;
|
|
95
|
+
export {};
|