@dailephd/my-frontend-observer 0.9.0 → 0.10.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/CHANGELOG.md +25 -0
- package/README.md +17 -7
- 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 +510 -508
- 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 +2 -2
- 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 +17 -5
- package/docs/CI_CD.md +33 -1
- package/docs/COMMANDS.md +19 -5
- package/docs/CONTRACTS.md +38 -4
- package/docs/CURRENT_STATE.md +92 -11
- package/docs/DEVELOPMENT.md +32 -2
- package/docs/PROJECT_MILESTONES.md +28 -0
- package/docs/PROJECT_OVERVIEW.md +36 -14
- package/docs/QUICKSTART.md +7 -3
- package/docs/RELEASE.md +15 -11
- package/docs/ROADMAP.md +55 -2
- package/docs/SECURITY.md +25 -3
- package/docs/WORKFLOWS.md +29 -3
- package/docs/plans/v0.10-implementation-plan.md +1509 -0
- package/docs/plans/v0.9.1-implementation-plan.md +468 -0
- 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.9.1-batch1-pwa-hard-gate-isolation.md +359 -0
- package/docs/reports/v0.9.1-batch2-hard-gate-validation-integration.md +262 -0
- package/docs/reports/v0.9.1-pre-release-readiness.md +206 -0
- package/package.json +3 -2
- package/dist/viewer/assets/index-BN41MI7m.css +0 -1
- package/dist/viewer/assets/index-CkKXnlrI.js +0 -9
package/dist/viewer/index.html
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
<meta name="theme-color" content="#0f172a" />
|
|
7
7
|
<title>my-frontend-observer Viewer</title>
|
|
8
8
|
<link rel="icon" type="image/png" href="/icons/icon-192.png" />
|
|
9
|
-
<script type="module" crossorigin src="/assets/index-
|
|
10
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
9
|
+
<script type="module" crossorigin src="/assets/index-DsODREY5.js"></script>
|
|
10
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DglJ6f28.css">
|
|
11
11
|
<link rel="manifest" href="/manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="/registerSW.js"></script></head>
|
|
12
12
|
<body>
|
|
13
13
|
<div id="root"></div>
|
package/dist/viewer/sw.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
if(!self.define){let e,i={};const n=(n,s)=>(n=new URL(n+".js",s).href,i[n]||new Promise(i=>{if("document"in self){const e=document.createElement("script");e.src=n,e.onload=i,document.head.appendChild(e)}else e=n,importScripts(n),i()}).then(()=>{let e=i[n];if(!e)throw new Error(`Module ${n} didn’t register its module`);return e}));self.define=(s,r)=>{const o=e||("document"in self?document.currentScript.src:"")||location.href;if(i[o])return;let c={};const t=e=>n(e,o),
|
|
1
|
+
if(!self.define){let e,i={};const n=(n,s)=>(n=new URL(n+".js",s).href,i[n]||new Promise(i=>{if("document"in self){const e=document.createElement("script");e.src=n,e.onload=i,document.head.appendChild(e)}else e=n,importScripts(n),i()}).then(()=>{let e=i[n];if(!e)throw new Error(`Module ${n} didn’t register its module`);return e}));self.define=(s,r)=>{const o=e||("document"in self?document.currentScript.src:"")||location.href;if(i[o])return;let c={};const t=e=>n(e,o),f={module:{uri:o},exports:c,require:t};i[o]=Promise.all(s.map(e=>f[e]||t(e))).then(e=>(r(...e),c))}}define(["./workbox-9c191d2f"],function(e){"use strict";self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"manifest.webmanifest",revision:"230563056861fe6705b913b3df23b258"},{url:"index.html",revision:"93cc626f81abfcedc4289432e5c147f5"},{url:"icons/icon-512.png",revision:"e92e70cceb9b8d7f52ea0cfe9099e7de"},{url:"icons/icon-192.png",revision:"175e5f2a92d509b08ccf2a917bb400f6"},{url:"assets/index-DsODREY5.js",revision:null},{url:"assets/index-DglJ6f28.css",revision:null},{url:"icons/icon-192.png",revision:"175e5f2a92d509b08ccf2a917bb400f6"},{url:"icons/icon-512.png",revision:"e92e70cceb9b8d7f52ea0cfe9099e7de"},{url:"manifest.webmanifest",revision:"230563056861fe6705b913b3df23b258"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html"),{denylist:[/^\/api\//]}))});
|
|
@@ -4,7 +4,8 @@ import type { PersistentBaselineContract, PerChangeContract } from '../../domain
|
|
|
4
4
|
import type { FrontendContractEvaluationArtifact } from '../../domain/frontendContractEvaluationArtifact.js';
|
|
5
5
|
import type { ExternalReferenceArtifact } from '../../domain/externalReference.js';
|
|
6
6
|
import type { VisualAnnotationArtifact } from '../../domain/visualAnnotation.js';
|
|
7
|
-
|
|
7
|
+
import type { VisualChangeWorkflowArtifact } from '../../domain/visualChangeWorkflow.js';
|
|
8
|
+
export type ArtifactFamily = 'observation' | 'comparison' | 'baseline-contract' | 'change-contract' | 'contract-evaluation' | 'external-reference-imported' | 'external-reference-approved' | 'visual-annotation' | 'visual-change-workflow';
|
|
8
9
|
/**
|
|
9
10
|
* Honest, independent viewer-loading/support state - deliberately distinct
|
|
10
11
|
* from any artifact's own `completion`/evidence-state semantics (see
|
|
@@ -20,6 +21,7 @@ type FamilyArtifact = {
|
|
|
20
21
|
'external-reference-imported': ExternalReferenceArtifact;
|
|
21
22
|
'external-reference-approved': ExternalReferenceArtifact;
|
|
22
23
|
'visual-annotation': VisualAnnotationArtifact;
|
|
24
|
+
'visual-change-workflow': VisualChangeWorkflowArtifact;
|
|
23
25
|
};
|
|
24
26
|
/** Per-family discriminated union (not a generically-indexed field) so switching on `family` correctly narrows `artifact`'s type. */
|
|
25
27
|
type SupportedRecord = {
|
|
@@ -11,6 +11,8 @@ import { EXTERNAL_REFERENCE_ARTIFACT_KIND, EXTERNAL_REFERENCE_SCHEMA_VERSION } f
|
|
|
11
11
|
import { readExternalReferenceArtifact } from '../../artifacts/externalReferenceArtifactReader.js';
|
|
12
12
|
import { VISUAL_ANNOTATION_ARTIFACT_KIND, VISUAL_ANNOTATION_SCHEMA_VERSION } from '../../domain/visualAnnotation.js';
|
|
13
13
|
import { readVisualAnnotationArtifact } from '../../artifacts/visualAnnotationArtifactReader.js';
|
|
14
|
+
import { VISUAL_CHANGE_WORKFLOW_ARTIFACT_KIND, VISUAL_CHANGE_WORKFLOW_SCHEMA_VERSION } from '../../domain/visualChangeWorkflow.js';
|
|
15
|
+
import { readVisualChangeWorkflowArtifact } from '../../artifacts/visualChangeWorkflowArtifactReader.js';
|
|
14
16
|
import { MAX_MANIFEST_CANDIDATE_BYTES } from './limits.js';
|
|
15
17
|
function isPlainObject(value) {
|
|
16
18
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
@@ -124,6 +126,14 @@ export async function classifyManifest(manifestPath) {
|
|
|
124
126
|
return { supportState: 'invalid-structure', family: 'visual-annotation', reason: read.reason };
|
|
125
127
|
return { supportState: 'supported', family: 'visual-annotation', artifact: read.artifact };
|
|
126
128
|
}
|
|
129
|
+
case VISUAL_CHANGE_WORKFLOW_ARTIFACT_KIND: {
|
|
130
|
+
if (version !== VISUAL_CHANGE_WORKFLOW_SCHEMA_VERSION)
|
|
131
|
+
return { supportState: 'unsupported-version', family: 'visual-change-workflow', foundSchemaVersion: version ?? 'unknown', supportedSchemaVersion: VISUAL_CHANGE_WORKFLOW_SCHEMA_VERSION };
|
|
132
|
+
const read = await readVisualChangeWorkflowArtifact(manifestPath);
|
|
133
|
+
if (!read.ok)
|
|
134
|
+
return { supportState: 'invalid-structure', family: 'visual-change-workflow', reason: read.reason };
|
|
135
|
+
return { supportState: 'supported', family: 'visual-change-workflow', artifact: read.artifact };
|
|
136
|
+
}
|
|
127
137
|
default:
|
|
128
138
|
// Includes both a genuinely unknown string and the known-but-unreadered
|
|
129
139
|
// `my-frontend-observer/bounded-agent-context` kind (see frozen plan
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../../../src/viewerServer/evidence/classify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAEjG,OAAO,EAAE,sBAAsB,EAAE,MAAM,6CAA6C,CAAC;AACrF,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAEpG,OAAO,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1H,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,oDAAoD,CAAC;AAEzH,OAAO,EAAE,sCAAsC,EAAE,MAAM,6DAA6D,CAAC;AACrH,OAAO,EAAE,gCAAgC,EAAE,iCAAiC,EAAE,MAAM,mCAAmC,CAAC;AAExH,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,+BAA+B,EAAE,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AAErH,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"classify.js","sourceRoot":"","sources":["../../../src/viewerServer/evidence/classify.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ const FAMILY_SLUGS = {
|
|
|
7
7
|
'external-reference-imported': 'external-reference-imported',
|
|
8
8
|
'external-reference-approved': 'external-reference-approved',
|
|
9
9
|
'visual-annotation': 'visual-annotation',
|
|
10
|
+
'visual-change-workflow': 'visual-change-workflow',
|
|
10
11
|
};
|
|
11
12
|
const SLUG_TO_FAMILY = Object.fromEntries(Object.entries(FAMILY_SLUGS).map(([family, slug]) => [slug, family]));
|
|
12
13
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handles.js","sourceRoot":"","sources":["../../../src/viewerServer/evidence/handles.ts"],"names":[],"mappings":"AAEA,MAAM,YAAY,GAAmC;IACnD,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;IACxB,mBAAmB,EAAE,mBAAmB;IACxC,iBAAiB,EAAE,iBAAiB;IACpC,qBAAqB,EAAE,qBAAqB;IAC5C,6BAA6B,EAAE,6BAA6B;IAC5D,6BAA6B,EAAE,6BAA6B;IAC5D,mBAAmB,EAAE,mBAAmB;
|
|
1
|
+
{"version":3,"file":"handles.js","sourceRoot":"","sources":["../../../src/viewerServer/evidence/handles.ts"],"names":[],"mappings":"AAEA,MAAM,YAAY,GAAmC;IACnD,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,YAAY;IACxB,mBAAmB,EAAE,mBAAmB;IACxC,iBAAiB,EAAE,iBAAiB;IACpC,qBAAqB,EAAE,qBAAqB;IAC5C,6BAA6B,EAAE,6BAA6B;IAC5D,6BAA6B,EAAE,6BAA6B;IAC5D,mBAAmB,EAAE,mBAAmB;IACxC,wBAAwB,EAAE,wBAAwB;CACnD,CAAC;AAEF,MAAM,cAAc,GAAmC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAwB,CAAC,CAAC,CAG/J,CAAC;AAEF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAsB,EAAE,WAAmB;IAC9E,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;AACtE,CAAC;AAID,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,IAAI,cAAc,IAAI,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IAC9C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,MAAM,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IAC1E,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAC3C,CAAC"}
|
|
@@ -36,6 +36,11 @@ export interface EvidenceMetadataRecord {
|
|
|
36
36
|
annotationSourceKind?: 'runtime-observation' | 'external-reference';
|
|
37
37
|
annotationItemCount?: number;
|
|
38
38
|
annotationConfirmedItemCount?: number;
|
|
39
|
+
visualChangeRequestId?: string;
|
|
40
|
+
visualChangeEntryMode?: 'actual-frontend' | 'reference';
|
|
41
|
+
visualChangeAttemptCount?: number;
|
|
42
|
+
latestVisualChangeCheckStatus?: string;
|
|
43
|
+
latestVisualChangeReviewState?: string;
|
|
39
44
|
}
|
|
40
45
|
/** Ephemeral, non-persisted wrapper around one already-validated domain artifact, for the on-demand full-artifact API. Not a new evidence schema - selects/wraps existing canonical fields only. */
|
|
41
46
|
export interface EvidenceArtifactDetail {
|
|
@@ -162,6 +162,25 @@ export async function buildMetadataRecord(classified, relativeDir, absoluteDir)
|
|
|
162
162
|
relatedIds,
|
|
163
163
|
};
|
|
164
164
|
}
|
|
165
|
+
case 'visual-change-workflow': {
|
|
166
|
+
const latest = artifact.attempts.at(-1);
|
|
167
|
+
return {
|
|
168
|
+
...base,
|
|
169
|
+
logicalId: artifact.visualChangeWorkflowId,
|
|
170
|
+
schemaVersion: artifact.schemaVersion,
|
|
171
|
+
producerVersion: artifact.producer.version,
|
|
172
|
+
visualChangeRequestId: artifact.visualChangeRequestId,
|
|
173
|
+
visualChangeEntryMode: artifact.scope.entryMode,
|
|
174
|
+
visualChangeAttemptCount: artifact.attempts.length,
|
|
175
|
+
...(latest === undefined ? {} : { latestVisualChangeCheckStatus: latest.check.status, latestVisualChangeReviewState: latest.review.state }),
|
|
176
|
+
relatedIds: {
|
|
177
|
+
baselineObservationId: artifact.scope.baselineObservation.observationId,
|
|
178
|
+
annotationId: artifact.scope.annotationId,
|
|
179
|
+
...(artifact.scope.entryMode === 'reference' ? { selectedReferenceId: artifact.scope.approvedReference.referenceId } : {}),
|
|
180
|
+
...(artifact.supersedesVisualChangeWorkflowId === undefined ? {} : { supersedesVisualChangeWorkflowId: artifact.supersedesVisualChangeWorkflowId }),
|
|
181
|
+
},
|
|
182
|
+
};
|
|
183
|
+
}
|
|
165
184
|
}
|
|
166
185
|
}
|
|
167
186
|
/** Ephemeral, non-persisted full-artifact projection for the on-demand API. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../src/viewerServer/evidence/projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAKxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../src/viewerServer/evidence/projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { VisualChangeWorkflowArtifact } from '../../domain/visualChangeWorkflow.js';
|
|
2
|
+
import type { ArtifactFamily } from './classify.js';
|
|
3
|
+
export type LinkedWorkflowEvidence = {
|
|
4
|
+
status: 'available';
|
|
5
|
+
handle: string;
|
|
6
|
+
family: ArtifactFamily;
|
|
7
|
+
} | {
|
|
8
|
+
status: 'unavailable';
|
|
9
|
+
reason: string;
|
|
10
|
+
};
|
|
11
|
+
export interface VisualChangeWorkflowView {
|
|
12
|
+
workflow: VisualChangeWorkflowArtifact;
|
|
13
|
+
baselineObservation: LinkedWorkflowEvidence;
|
|
14
|
+
annotation: LinkedWorkflowEvidence;
|
|
15
|
+
changeContract?: LinkedWorkflowEvidence;
|
|
16
|
+
baselineContract?: LinkedWorkflowEvidence;
|
|
17
|
+
approvedReference?: LinkedWorkflowEvidence;
|
|
18
|
+
attempts: Array<{
|
|
19
|
+
candidateObservation: LinkedWorkflowEvidence;
|
|
20
|
+
comparison?: LinkedWorkflowEvidence;
|
|
21
|
+
contractEvaluation?: LinkedWorkflowEvidence;
|
|
22
|
+
}>;
|
|
23
|
+
}
|
|
24
|
+
export type GetVisualChangeWorkflowViewResult = {
|
|
25
|
+
ok: true;
|
|
26
|
+
view: VisualChangeWorkflowView;
|
|
27
|
+
} | {
|
|
28
|
+
ok: false;
|
|
29
|
+
reason: 'unknown-handle' | 'not-a-visual-change-workflow' | 'not-currently-loadable';
|
|
30
|
+
};
|
|
31
|
+
export declare function getVisualChangeWorkflowView(root: string, handle: string): Promise<GetVisualChangeWorkflowViewResult>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { classifyManifest } from './classify.js';
|
|
2
|
+
import { discoverManifests } from './discovery.js';
|
|
3
|
+
import { encodeArtifactHandle } from './handles.js';
|
|
4
|
+
import { loadArtifactByHandle } from './index.js';
|
|
5
|
+
import { MAX_INDEX_RECORDS } from './limits.js';
|
|
6
|
+
async function exact(root, families, predicate) {
|
|
7
|
+
const found = [];
|
|
8
|
+
for (const manifest of (await discoverManifests(root)).manifests.slice(0, MAX_INDEX_RECORDS)) {
|
|
9
|
+
const c = await classifyManifest(manifest.absolutePath);
|
|
10
|
+
if (c.supportState !== 'supported' || !families.includes(c.family))
|
|
11
|
+
continue;
|
|
12
|
+
if (predicate(c.artifact))
|
|
13
|
+
found.push({ handle: encodeArtifactHandle(c.family, manifest.relativeDir), family: c.family });
|
|
14
|
+
}
|
|
15
|
+
return found.length === 1 ? { status: 'available', ...found[0] } : { status: 'unavailable', reason: found.length === 0 ? 'exact referenced evidence is missing' : 'exact referenced evidence is ambiguous' };
|
|
16
|
+
}
|
|
17
|
+
export async function getVisualChangeWorkflowView(root, handle) {
|
|
18
|
+
const loaded = await loadArtifactByHandle(root, handle);
|
|
19
|
+
if (!loaded.ok)
|
|
20
|
+
return loaded.reason === 'unknown-handle' ? { ok: false, reason: 'unknown-handle' } : loaded.metadata.family === 'visual-change-workflow' ? { ok: false, reason: 'not-currently-loadable' } : { ok: false, reason: 'not-a-visual-change-workflow' };
|
|
21
|
+
if (loaded.detail.family !== 'visual-change-workflow')
|
|
22
|
+
return { ok: false, reason: 'not-a-visual-change-workflow' };
|
|
23
|
+
const workflow = loaded.detail.artifact;
|
|
24
|
+
const baselineObservation = await exact(root, ['observation'], (a) => a.observationId === workflow.scope.baselineObservation.observationId && a.requestId === workflow.scope.baselineObservation.requestId);
|
|
25
|
+
const annotation = await exact(root, ['visual-annotation'], (a) => a.annotationId === workflow.scope.annotationId);
|
|
26
|
+
const baselineContract = workflow.scope.baselineContract === undefined ? undefined : await exact(root, ['baseline-contract'], (a) => a.baselineId === workflow.scope.baselineContract?.baselineId);
|
|
27
|
+
const changeScope = workflow.scope.entryMode === 'actual-frontend' ? workflow.scope : undefined;
|
|
28
|
+
const referenceScope = workflow.scope.entryMode === 'reference' ? workflow.scope : undefined;
|
|
29
|
+
const changeContract = changeScope === undefined ? undefined : await exact(root, ['change-contract'], (a) => a.contractId === changeScope.changeContract.contractId && a.contractRequestId === changeScope.changeContract.contractRequestId);
|
|
30
|
+
const approvedReference = referenceScope === undefined ? undefined : await exact(root, ['external-reference-approved'], (a) => a.referenceId === referenceScope.approvedReference.referenceId && a.referenceRequestId === referenceScope.approvedReference.referenceRequestId);
|
|
31
|
+
const attempts = [];
|
|
32
|
+
for (const attempt of workflow.attempts)
|
|
33
|
+
attempts.push({ candidateObservation: await exact(root, ['observation'], (a) => a.observationId === attempt.candidateObservation.observationId && a.requestId === attempt.candidateObservation.requestId), ...(attempt.check.comparison === undefined ? {} : { comparison: await exact(root, ['comparison'], (a) => a.comparisonId === attempt.check.comparison?.artifactId) }), ...(attempt.check.contractEvaluation === undefined ? {} : { contractEvaluation: await exact(root, ['contract-evaluation'], (a) => a.evaluationId === attempt.check.contractEvaluation?.artifactId) }) });
|
|
34
|
+
return { ok: true, view: { workflow, baselineObservation, annotation, ...(changeContract === undefined ? {} : { changeContract }), ...(baselineContract === undefined ? {} : { baselineContract }), ...(approvedReference === undefined ? {} : { approvedReference }), attempts } };
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=visualChangeWorkflowView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualChangeWorkflowView.js","sourceRoot":"","sources":["../../../src/viewerServer/evidence/visualChangeWorkflowView.ts"],"names":[],"mappings":"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"}
|