@dailephd/my-frontend-observer 0.8.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 +397 -0
- package/LICENSE +21 -0
- package/README.md +255 -0
- package/dist/application/browserCaptureService.d.ts +11 -0
- package/dist/application/browserCaptureService.js +12 -0
- package/dist/application/browserCaptureService.js.map +1 -0
- package/dist/application/comparisonService.d.ts +56 -0
- package/dist/application/comparisonService.js +77 -0
- package/dist/application/comparisonService.js.map +1 -0
- package/dist/application/externalReferencePersistenceService.d.ts +75 -0
- package/dist/application/externalReferencePersistenceService.js +182 -0
- package/dist/application/externalReferencePersistenceService.js.map +1 -0
- package/dist/application/frontendContractEvaluationService.d.ts +49 -0
- package/dist/application/frontendContractEvaluationService.js +112 -0
- package/dist/application/frontendContractEvaluationService.js.map +1 -0
- package/dist/application/frontendContractPersistenceService.d.ts +56 -0
- package/dist/application/frontendContractPersistenceService.js +91 -0
- package/dist/application/frontendContractPersistenceService.js.map +1 -0
- package/dist/application/observationPersistence.d.ts +59 -0
- package/dist/application/observationPersistence.js +79 -0
- package/dist/application/observationPersistence.js.map +1 -0
- package/dist/application/projectCheckService.d.ts +3 -0
- package/dist/application/projectCheckService.js +169 -0
- package/dist/application/projectCheckService.js.map +1 -0
- package/dist/application/projectWorkflowService.d.ts +46 -0
- package/dist/application/projectWorkflowService.js +92 -0
- package/dist/application/projectWorkflowService.js.map +1 -0
- package/dist/application/referenceFidelityEvaluationService.d.ts +28 -0
- package/dist/application/referenceFidelityEvaluationService.js +45 -0
- package/dist/application/referenceFidelityEvaluationService.js.map +1 -0
- package/dist/artifacts/artifactReader.d.ts +19 -0
- package/dist/artifacts/artifactReader.js +36 -0
- package/dist/artifacts/artifactReader.js.map +1 -0
- package/dist/artifacts/artifactWriter.d.ts +25 -0
- package/dist/artifacts/artifactWriter.js +68 -0
- package/dist/artifacts/artifactWriter.js.map +1 -0
- package/dist/artifacts/comparisonArtifactReader.d.ts +18 -0
- package/dist/artifacts/comparisonArtifactReader.js +35 -0
- package/dist/artifacts/comparisonArtifactReader.js.map +1 -0
- package/dist/artifacts/comparisonArtifactWriter.d.ts +41 -0
- package/dist/artifacts/comparisonArtifactWriter.js +67 -0
- package/dist/artifacts/comparisonArtifactWriter.js.map +1 -0
- package/dist/artifacts/externalReferenceArtifactReader.d.ts +18 -0
- package/dist/artifacts/externalReferenceArtifactReader.js +35 -0
- package/dist/artifacts/externalReferenceArtifactReader.js.map +1 -0
- package/dist/artifacts/externalReferenceArtifactWriter.d.ts +44 -0
- package/dist/artifacts/externalReferenceArtifactWriter.js +77 -0
- package/dist/artifacts/externalReferenceArtifactWriter.js.map +1 -0
- package/dist/artifacts/frontendContractArtifactReader.d.ts +24 -0
- package/dist/artifacts/frontendContractArtifactReader.js +47 -0
- package/dist/artifacts/frontendContractArtifactReader.js.map +1 -0
- package/dist/artifacts/frontendContractArtifactWriter.d.ts +34 -0
- package/dist/artifacts/frontendContractArtifactWriter.js +70 -0
- package/dist/artifacts/frontendContractArtifactWriter.js.map +1 -0
- package/dist/artifacts/frontendContractEvaluationArtifactReader.d.ts +17 -0
- package/dist/artifacts/frontendContractEvaluationArtifactReader.js +34 -0
- package/dist/artifacts/frontendContractEvaluationArtifactReader.js.map +1 -0
- package/dist/artifacts/frontendContractEvaluationArtifactWriter.d.ts +32 -0
- package/dist/artifacts/frontendContractEvaluationArtifactWriter.js +58 -0
- package/dist/artifacts/frontendContractEvaluationArtifactWriter.js.map +1 -0
- package/dist/artifacts/types.d.ts +17 -0
- package/dist/artifacts/types.js +2 -0
- package/dist/artifacts/types.js.map +1 -0
- package/dist/browser/chromiumAdapter.d.ts +21 -0
- package/dist/browser/chromiumAdapter.js +204 -0
- package/dist/browser/chromiumAdapter.js.map +1 -0
- package/dist/browser/evidenceCapture.d.ts +62 -0
- package/dist/browser/evidenceCapture.js +500 -0
- package/dist/browser/evidenceCapture.js.map +1 -0
- package/dist/browser/scrollCapture.d.ts +32 -0
- package/dist/browser/scrollCapture.js +163 -0
- package/dist/browser/scrollCapture.js.map +1 -0
- package/dist/browser/types.d.ts +24 -0
- package/dist/browser/types.js +2 -0
- package/dist/browser/types.js.map +1 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.js +2411 -0
- package/dist/cli.js.map +1 -0
- package/dist/domain/boundedAgentContext.d.ts +226 -0
- package/dist/domain/boundedAgentContext.js +355 -0
- package/dist/domain/boundedAgentContext.js.map +1 -0
- package/dist/domain/boundedAgentContextCorrelation.d.ts +74 -0
- package/dist/domain/boundedAgentContextCorrelation.js +441 -0
- package/dist/domain/boundedAgentContextCorrelation.js.map +1 -0
- package/dist/domain/boundedAgentContextIdentity.d.ts +26 -0
- package/dist/domain/boundedAgentContextIdentity.js +69 -0
- package/dist/domain/boundedAgentContextIdentity.js.map +1 -0
- package/dist/domain/boundedAgentContextProjection.d.ts +71 -0
- package/dist/domain/boundedAgentContextProjection.js +477 -0
- package/dist/domain/boundedAgentContextProjection.js.map +1 -0
- package/dist/domain/comparison.d.ts +220 -0
- package/dist/domain/comparison.js +350 -0
- package/dist/domain/comparison.js.map +1 -0
- package/dist/domain/comparisonEngine.d.ts +76 -0
- package/dist/domain/comparisonEngine.js +734 -0
- package/dist/domain/comparisonEngine.js.map +1 -0
- package/dist/domain/comparisonIdentity.d.ts +13 -0
- package/dist/domain/comparisonIdentity.js +46 -0
- package/dist/domain/comparisonIdentity.js.map +1 -0
- package/dist/domain/completion.d.ts +30 -0
- package/dist/domain/completion.js +22 -0
- package/dist/domain/completion.js.map +1 -0
- package/dist/domain/diagnostics.d.ts +17 -0
- package/dist/domain/diagnostics.js +77 -0
- package/dist/domain/diagnostics.js.map +1 -0
- package/dist/domain/evidence.d.ts +29 -0
- package/dist/domain/evidence.js +59 -0
- package/dist/domain/evidence.js.map +1 -0
- package/dist/domain/explicitState.d.ts +40 -0
- package/dist/domain/explicitState.js +54 -0
- package/dist/domain/explicitState.js.map +1 -0
- package/dist/domain/externalReference.d.ts +158 -0
- package/dist/domain/externalReference.js +167 -0
- package/dist/domain/externalReference.js.map +1 -0
- package/dist/domain/externalReferenceApplicability.d.ts +43 -0
- package/dist/domain/externalReferenceApplicability.js +52 -0
- package/dist/domain/externalReferenceApplicability.js.map +1 -0
- package/dist/domain/externalReferenceCompatibility.d.ts +40 -0
- package/dist/domain/externalReferenceCompatibility.js +48 -0
- package/dist/domain/externalReferenceCompatibility.js.map +1 -0
- package/dist/domain/externalReferenceFidelity.d.ts +171 -0
- package/dist/domain/externalReferenceFidelity.js +419 -0
- package/dist/domain/externalReferenceFidelity.js.map +1 -0
- package/dist/domain/externalReferenceIdentity.d.ts +38 -0
- package/dist/domain/externalReferenceIdentity.js +70 -0
- package/dist/domain/externalReferenceIdentity.js.map +1 -0
- package/dist/domain/externalReferenceImage.d.ts +35 -0
- package/dist/domain/externalReferenceImage.js +160 -0
- package/dist/domain/externalReferenceImage.js.map +1 -0
- package/dist/domain/externalReferenceRegionRelationships.d.ts +63 -0
- package/dist/domain/externalReferenceRegionRelationships.js +98 -0
- package/dist/domain/externalReferenceRegionRelationships.js.map +1 -0
- package/dist/domain/externalReferenceRegions.d.ts +65 -0
- package/dist/domain/externalReferenceRegions.js +105 -0
- package/dist/domain/externalReferenceRegions.js.map +1 -0
- package/dist/domain/externalReferenceRequirementIdentity.d.ts +12 -0
- package/dist/domain/externalReferenceRequirementIdentity.js +35 -0
- package/dist/domain/externalReferenceRequirementIdentity.js.map +1 -0
- package/dist/domain/externalReferenceRequirements.d.ts +215 -0
- package/dist/domain/externalReferenceRequirements.js +401 -0
- package/dist/domain/externalReferenceRequirements.js.map +1 -0
- package/dist/domain/externalReferenceRuntimeBinding.d.ts +146 -0
- package/dist/domain/externalReferenceRuntimeBinding.js +183 -0
- package/dist/domain/externalReferenceRuntimeBinding.js.map +1 -0
- package/dist/domain/frontendContractEvaluation.d.ts +57 -0
- package/dist/domain/frontendContractEvaluation.js +454 -0
- package/dist/domain/frontendContractEvaluation.js.map +1 -0
- package/dist/domain/frontendContractEvaluationArtifact.d.ts +65 -0
- package/dist/domain/frontendContractEvaluationArtifact.js +108 -0
- package/dist/domain/frontendContractEvaluationArtifact.js.map +1 -0
- package/dist/domain/frontendContractIdentity.d.ts +39 -0
- package/dist/domain/frontendContractIdentity.js +70 -0
- package/dist/domain/frontendContractIdentity.js.map +1 -0
- package/dist/domain/frontendContracts.d.ts +188 -0
- package/dist/domain/frontendContracts.js +260 -0
- package/dist/domain/frontendContracts.js.map +1 -0
- package/dist/domain/identity.d.ts +21 -0
- package/dist/domain/identity.js +47 -0
- package/dist/domain/identity.js.map +1 -0
- package/dist/domain/referenceCorrectionIdentity.d.ts +40 -0
- package/dist/domain/referenceCorrectionIdentity.js +77 -0
- package/dist/domain/referenceCorrectionIdentity.js.map +1 -0
- package/dist/domain/referenceCorrectionWorkflow.d.ts +160 -0
- package/dist/domain/referenceCorrectionWorkflow.js +165 -0
- package/dist/domain/referenceCorrectionWorkflow.js.map +1 -0
- package/dist/domain/referenceFidelityProjection.d.ts +65 -0
- package/dist/domain/referenceFidelityProjection.js +135 -0
- package/dist/domain/referenceFidelityProjection.js.map +1 -0
- package/dist/domain/relationships.d.ts +210 -0
- package/dist/domain/relationships.js +352 -0
- package/dist/domain/relationships.js.map +1 -0
- package/dist/domain/schema.d.ts +269 -0
- package/dist/domain/schema.js +442 -0
- package/dist/domain/schema.js.map +1 -0
- package/dist/domain/scrollEvidence.d.ts +51 -0
- package/dist/domain/scrollEvidence.js +134 -0
- package/dist/domain/scrollEvidence.js.map +1 -0
- package/dist/index.d.ts +114 -0
- package/dist/index.js +64 -0
- package/dist/index.js.map +1 -0
- package/dist/projectWorkflow/aliasCatalog.d.ts +21 -0
- package/dist/projectWorkflow/aliasCatalog.js +67 -0
- package/dist/projectWorkflow/aliasCatalog.js.map +1 -0
- package/dist/projectWorkflow/checkAcceptance.d.ts +25 -0
- package/dist/projectWorkflow/checkAcceptance.js +55 -0
- package/dist/projectWorkflow/checkAcceptance.js.map +1 -0
- package/dist/projectWorkflow/checkResult.d.ts +85 -0
- package/dist/projectWorkflow/checkResult.js +101 -0
- package/dist/projectWorkflow/checkResult.js.map +1 -0
- package/dist/projectWorkflow/projectConfig.d.ts +43 -0
- package/dist/projectWorkflow/projectConfig.js +84 -0
- package/dist/projectWorkflow/projectConfig.js.map +1 -0
- package/dist/projectWorkflow/projectDiscovery.d.ts +9 -0
- package/dist/projectWorkflow/projectDiscovery.js +20 -0
- package/dist/projectWorkflow/projectDiscovery.js.map +1 -0
- package/dist/projectWorkflow/projectPaths.d.ts +8 -0
- package/dist/projectWorkflow/projectPaths.js +23 -0
- package/dist/projectWorkflow/projectPaths.js.map +1 -0
- package/dist/request/paths.d.ts +14 -0
- package/dist/request/paths.js +33 -0
- package/dist/request/paths.js.map +1 -0
- package/dist/request/request.d.ts +111 -0
- package/dist/request/request.js +464 -0
- package/dist/request/request.js.map +1 -0
- package/dist/safety/policy.d.ts +14 -0
- package/dist/safety/policy.js +81 -0
- package/dist/safety/policy.js.map +1 -0
- package/dist/viewer/assets/index-CN_yb9Uf.css +1 -0
- package/dist/viewer/assets/index-D98S1_2d.js +9 -0
- package/dist/viewer/icons/icon-192.png +0 -0
- package/dist/viewer/icons/icon-512.png +0 -0
- package/dist/viewer/index.html +15 -0
- package/dist/viewer/manifest.webmanifest +1 -0
- package/dist/viewer/registerSW.js +1 -0
- package/dist/viewer/sw.js +1 -0
- package/dist/viewer/workbox-9c191d2f.js +1 -0
- package/dist/viewerServer/context.d.ts +48 -0
- package/dist/viewerServer/context.js +60 -0
- package/dist/viewerServer/context.js.map +1 -0
- package/dist/viewerServer/evidence/classify.d.ts +59 -0
- package/dist/viewerServer/evidence/classify.js +124 -0
- package/dist/viewerServer/evidence/classify.js.map +1 -0
- package/dist/viewerServer/evidence/comparisonView.d.ts +28 -0
- package/dist/viewerServer/evidence/comparisonView.js +43 -0
- package/dist/viewerServer/evidence/comparisonView.js.map +1 -0
- package/dist/viewerServer/evidence/contextSourceView.d.ts +25 -0
- package/dist/viewerServer/evidence/contextSourceView.js +20 -0
- package/dist/viewerServer/evidence/contextSourceView.js.map +1 -0
- package/dist/viewerServer/evidence/discovery.d.ts +31 -0
- package/dist/viewerServer/evidence/discovery.js +78 -0
- package/dist/viewerServer/evidence/discovery.js.map +1 -0
- package/dist/viewerServer/evidence/evaluationView.d.ts +32 -0
- package/dist/viewerServer/evidence/evaluationView.js +50 -0
- package/dist/viewerServer/evidence/evaluationView.js.map +1 -0
- package/dist/viewerServer/evidence/handles.d.ts +21 -0
- package/dist/viewerServer/evidence/handles.js +43 -0
- package/dist/viewerServer/evidence/handles.js.map +1 -0
- package/dist/viewerServer/evidence/index.d.ts +41 -0
- package/dist/viewerServer/evidence/index.js +82 -0
- package/dist/viewerServer/evidence/index.js.map +1 -0
- package/dist/viewerServer/evidence/limits.d.ts +27 -0
- package/dist/viewerServer/evidence/limits.js +28 -0
- package/dist/viewerServer/evidence/limits.js.map +1 -0
- package/dist/viewerServer/evidence/linkedEvidence.d.ts +43 -0
- package/dist/viewerServer/evidence/linkedEvidence.js +151 -0
- package/dist/viewerServer/evidence/linkedEvidence.js.map +1 -0
- package/dist/viewerServer/evidence/mediaResolver.d.ts +16 -0
- package/dist/viewerServer/evidence/mediaResolver.js +85 -0
- package/dist/viewerServer/evidence/mediaResolver.js.map +1 -0
- package/dist/viewerServer/evidence/observationView.d.ts +29 -0
- package/dist/viewerServer/evidence/observationView.js +46 -0
- package/dist/viewerServer/evidence/observationView.js.map +1 -0
- package/dist/viewerServer/evidence/pathSafety.d.ts +11 -0
- package/dist/viewerServer/evidence/pathSafety.js +31 -0
- package/dist/viewerServer/evidence/pathSafety.js.map +1 -0
- package/dist/viewerServer/evidence/projection.d.ts +55 -0
- package/dist/viewerServer/evidence/projection.js +152 -0
- package/dist/viewerServer/evidence/projection.js.map +1 -0
- package/dist/viewerServer/evidence/referenceView.d.ts +133 -0
- package/dist/viewerServer/evidence/referenceView.js +169 -0
- package/dist/viewerServer/evidence/referenceView.js.map +1 -0
- package/dist/viewerServer/httpServer.d.ts +27 -0
- package/dist/viewerServer/httpServer.js +381 -0
- package/dist/viewerServer/httpServer.js.map +1 -0
- package/dist/viewerServer/openBrowser.d.ts +7 -0
- package/dist/viewerServer/openBrowser.js +32 -0
- package/dist/viewerServer/openBrowser.js.map +1 -0
- package/dist/viewerServer/port.d.ts +16 -0
- package/dist/viewerServer/port.js +19 -0
- package/dist/viewerServer/port.js.map +1 -0
- package/dist/viewerServer/viewerService.d.ts +62 -0
- package/dist/viewerServer/viewerService.js +88 -0
- package/dist/viewerServer/viewerService.js.map +1 -0
- package/docs/ARCHITECTURE.md +1286 -0
- package/docs/CI_CD.md +250 -0
- package/docs/COMMANDS.md +972 -0
- package/docs/CONTRACTS.md +1856 -0
- package/docs/CURRENT_STATE.md +1049 -0
- package/docs/DEVELOPMENT.md +202 -0
- package/docs/DOCUMENTATION_PRESERVATION_POLICY.md +50 -0
- package/docs/PROJECT_DESCRIPTION.md +2221 -0
- package/docs/PROJECT_MILESTONES.md +2526 -0
- package/docs/PROJECT_OVERVIEW.md +150 -0
- package/docs/QUICKSTART.md +83 -0
- package/docs/RELEASE.md +27 -0
- package/docs/ROADMAP.md +641 -0
- package/docs/SECURITY.md +218 -0
- package/docs/WORKFLOWS.md +642 -0
- package/docs/plans/v0.8-implementation-plan.md +655 -0
- package/docs/plans/v0.8.1-cli-usability-patch-plan.md +505 -0
- package/docs/reports/v0.7-bounded-fidelity-context-prompt7.md +243 -0
- package/docs/reports/v0.7-implementation-completeness-documentation-reconciliation.md +497 -0
- package/docs/reports/v0.7-pre-release-readiness.md +337 -0
- package/docs/reports/v0.7-reference-binding-prompt5.md +223 -0
- package/docs/reports/v0.7-reference-compatibility-prompt4.md +234 -0
- package/docs/reports/v0.7-reference-correction-workflow-prompt8.md +222 -0
- package/docs/reports/v0.7-reference-fidelity-prompt6.md +216 -0
- package/docs/reports/v0.7-reference-foundation-prompt1.md +151 -0
- package/docs/reports/v0.7-reference-regions-prompt2.md +195 -0
- package/docs/reports/v0.7-reference-requirements-prompt3.md +217 -0
- package/docs/reports/v0.7-release-prep.md +423 -0
- package/docs/reports/v0.8-binding-fidelity-interaction-batch6.md +279 -0
- package/docs/reports/v0.8-bounded-context-correlation-batch7.md +233 -0
- package/docs/reports/v0.8-comparison-contract-inspection-batch4.md +279 -0
- package/docs/reports/v0.8-evidence-index-readers-batch2.md +247 -0
- package/docs/reports/v0.8-implementation-completeness-documentation-reconciliation.md +741 -0
- package/docs/reports/v0.8-integrated-viewer-acceptance-batch8.md +128 -0
- package/docs/reports/v0.8-observation-svg-inspection-batch3.md +223 -0
- package/docs/reports/v0.8-prerelease-readiness-cross-platform-security-code-rot.md +687 -0
- package/docs/reports/v0.8-reference-candidate-inspection-batch5.md +232 -0
- package/docs/reports/v0.8-viewer-runtime-pwa-batch1.md +278 -0
- package/docs/reports/v0.8.1-check-orchestration-prompt2.md +69 -0
- package/docs/reports/v0.8.1-implementation-completeness-documentation-reconciliation.md +114 -0
- package/docs/reports/v0.8.1-prerelease-readiness-cross-platform-security-code-rot.md +170 -0
- package/docs/reports/v0.8.1-project-workflow-foundation-prompt1.md +66 -0
- package/package.json +58 -0
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v0.6 Batch 1: frozen contract foundation for a bounded, deterministic,
|
|
3
|
+
* referenceable agent-context artifact plus optional runtime/static
|
|
4
|
+
* correlation evidence.
|
|
5
|
+
*
|
|
6
|
+
* Independent artifact family from observation (`1.2.0`), comparison
|
|
7
|
+
* (`1.0.0`), frontend-contract (`1.0.0`), and frontend-contract-evaluation
|
|
8
|
+
* (`1.0.0`) - never reuses their `ARTIFACT_KIND`/schema constants. Follows
|
|
9
|
+
* the same producer/provenance/source-reference/structural-validator shape
|
|
10
|
+
* as `frontendContractEvaluationArtifact.ts`.
|
|
11
|
+
*
|
|
12
|
+
* This module is pure contract foundation: types, constants, and structural
|
|
13
|
+
* validators only. It contains no runtime-projection derivation, no
|
|
14
|
+
* my-dev-kit invocation, and no correlation-matching logic - those are v0.6
|
|
15
|
+
* Batch 2+ concerns.
|
|
16
|
+
*/
|
|
17
|
+
import { isValidEvidenceReference } from './relationships.js';
|
|
18
|
+
import { PRODUCER_NAME } from './schema.js';
|
|
19
|
+
import { isValidReferenceRequirementAdequacy } from './externalReferenceRequirements.js';
|
|
20
|
+
import { isValidComparabilityResult } from './comparison.js';
|
|
21
|
+
import { REFERENCE_FIDELITY_STATES, REFERENCE_FIDELITY_BLOCK_REASONS, isValidReferenceRequirementFidelityResult } from './externalReferenceFidelity.js';
|
|
22
|
+
function isPlainObject(value) {
|
|
23
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
24
|
+
}
|
|
25
|
+
function isNonEmptyString(value) {
|
|
26
|
+
return typeof value === 'string' && value.length > 0;
|
|
27
|
+
}
|
|
28
|
+
function isEvidenceReferenceArray(value) {
|
|
29
|
+
return Array.isArray(value) && value.every((entry) => isValidEvidenceReference(entry));
|
|
30
|
+
}
|
|
31
|
+
function isValidArtifactReference(value) {
|
|
32
|
+
return isPlainObject(value) && isNonEmptyString(value.path) && isNonEmptyString(value.kind);
|
|
33
|
+
}
|
|
34
|
+
export const BOUNDED_AGENT_CONTEXT_ARTIFACT_KIND = 'my-frontend-observer/bounded-agent-context';
|
|
35
|
+
export const BOUNDED_AGENT_CONTEXT_SCHEMA_VERSION = '1.0.0';
|
|
36
|
+
/**
|
|
37
|
+
* Batch 1 freezes exactly one projection profile. A profile discriminator is
|
|
38
|
+
* kept (rather than omitted) because it is required to fail closed on future
|
|
39
|
+
* unsupported profiles; no plugin/registry framework is introduced.
|
|
40
|
+
*/
|
|
41
|
+
export const PROJECTION_PROFILES = ['frontend-change-review'];
|
|
42
|
+
function isValidProjectionProfile(value) {
|
|
43
|
+
return typeof value === 'string' && PROJECTION_PROFILES.includes(value);
|
|
44
|
+
}
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
46
|
+
// Numeric bounds (frozen first-version caps, judgment calls grounded in the
|
|
47
|
+
// existing ~10-named-target example count in docs/PROJECT_MILESTONES.md and
|
|
48
|
+
// the MAX_CONFIGURED_TARGETS_FOR_RELATIONSHIPS=20 precedent in
|
|
49
|
+
// relationships.ts; no measured fixture corpus exists yet for this concept)
|
|
50
|
+
// ---------------------------------------------------------------------------
|
|
51
|
+
export const MAX_RUNTIME_TARGETS = 25;
|
|
52
|
+
export const MAX_RELATIONSHIP_EVIDENCE_PER_TARGET = 10;
|
|
53
|
+
export const MAX_OMISSIONS = 50;
|
|
54
|
+
export const MAX_TRUNCATIONS = 50;
|
|
55
|
+
export const MAX_CORRELATION_RECORDS = 25;
|
|
56
|
+
export const MAX_STATIC_CANDIDATES_PER_TARGET = 5;
|
|
57
|
+
export const MAX_TEXT_SUMMARY_CHARS = 2000;
|
|
58
|
+
/** Bounds StaticCandidateReference.evidenceRefs and RuntimeStaticCorrelationRecord.runtimeEvidenceRefs - reuses MAX_RELATIONSHIP_EVIDENCE_PER_TARGET's value so no nested collection in this contract is unbounded. */
|
|
59
|
+
export const MAX_EVIDENCE_REFS_PER_CORRELATION_FIELD = MAX_RELATIONSHIP_EVIDENCE_PER_TARGET;
|
|
60
|
+
/**
|
|
61
|
+
* v0.7 Prompt 7 addition: bounds `BoundedReferenceFidelityProjection.mismatches`
|
|
62
|
+
* - a judgment-call cap in the same spirit as the Batch 1 bounds above (no
|
|
63
|
+
* measured fixture corpus exists yet for this concept either).
|
|
64
|
+
*/
|
|
65
|
+
export const MAX_FIDELITY_MISMATCHES = 15;
|
|
66
|
+
/** Bounds `BoundedReferenceFidelityProjection.protectedContext` - reuses `MAX_RELATIONSHIP_EVIDENCE_PER_TARGET`'s value for the same "small, bounded per-topic context list" reason. */
|
|
67
|
+
export const MAX_FIDELITY_PROTECTED_CONTEXT = MAX_RELATIONSHIP_EVIDENCE_PER_TARGET;
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
// Adequacy (explicit, non-boolean, structured reasons)
|
|
70
|
+
// ---------------------------------------------------------------------------
|
|
71
|
+
export const ADEQUACY_STATES = ['adequate', 'partial', 'inadequate'];
|
|
72
|
+
export const ADEQUACY_REASON_CODES = [
|
|
73
|
+
'required-runtime-target-unavailable',
|
|
74
|
+
'required-runtime-property-unavailable',
|
|
75
|
+
'required-contract-evidence-unavailable',
|
|
76
|
+
'required-evidence-omitted-by-bound',
|
|
77
|
+
'static-correlation-ambiguous',
|
|
78
|
+
'static-evidence-unavailable',
|
|
79
|
+
'required-source-evidence-truncated',
|
|
80
|
+
'unsupported-evidence-version',
|
|
81
|
+
'consumer-incompatibility',
|
|
82
|
+
];
|
|
83
|
+
function isValidAdequacyReason(value) {
|
|
84
|
+
if (!isPlainObject(value))
|
|
85
|
+
return false;
|
|
86
|
+
if (typeof value.code !== 'string' || !ADEQUACY_REASON_CODES.includes(value.code))
|
|
87
|
+
return false;
|
|
88
|
+
if (value.detail !== undefined && typeof value.detail !== 'string')
|
|
89
|
+
return false;
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
/** v0.6 Batch 3: exported for reuse by `boundedAgentContextCorrelation.ts` (see note on `isValidStaticEvidenceProducerIdentity`). No logic change. */
|
|
93
|
+
export function isValidAdequacy(value) {
|
|
94
|
+
if (!isPlainObject(value))
|
|
95
|
+
return false;
|
|
96
|
+
if (typeof value.state !== 'string' || !ADEQUACY_STATES.includes(value.state))
|
|
97
|
+
return false;
|
|
98
|
+
if (!Array.isArray(value.reasons) || !value.reasons.every(isValidAdequacyReason))
|
|
99
|
+
return false;
|
|
100
|
+
if (value.state !== 'adequate' && value.reasons.length === 0)
|
|
101
|
+
return false;
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
// ---------------------------------------------------------------------------
|
|
105
|
+
// Omission / truncation (kept distinct; required loss visible)
|
|
106
|
+
// ---------------------------------------------------------------------------
|
|
107
|
+
export const OMISSION_REASONS = [
|
|
108
|
+
'not-observed',
|
|
109
|
+
'unsupported-or-unavailable',
|
|
110
|
+
'intentionally-irrelevant',
|
|
111
|
+
'omitted-by-bound',
|
|
112
|
+
'required-evidence-lost-by-bound',
|
|
113
|
+
];
|
|
114
|
+
/** v0.6 Batch 3: exported for reuse by `boundedAgentContextCorrelation.ts` (see note on `isValidStaticEvidenceProducerIdentity`). No logic change. */
|
|
115
|
+
export function isValidOmissionRecord(value) {
|
|
116
|
+
if (!isPlainObject(value))
|
|
117
|
+
return false;
|
|
118
|
+
if (!isNonEmptyString(value.subject))
|
|
119
|
+
return false;
|
|
120
|
+
if (typeof value.reason !== 'string' || !OMISSION_REASONS.includes(value.reason))
|
|
121
|
+
return false;
|
|
122
|
+
if (typeof value.required !== 'boolean')
|
|
123
|
+
return false;
|
|
124
|
+
if (value.detail !== undefined && typeof value.detail !== 'string')
|
|
125
|
+
return false;
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
/** v0.6 Batch 3: exported for reuse by `boundedAgentContextCorrelation.ts` (see note on `isValidStaticEvidenceProducerIdentity`). No logic change. */
|
|
129
|
+
export function isValidTruncationRecord(value) {
|
|
130
|
+
if (!isPlainObject(value))
|
|
131
|
+
return false;
|
|
132
|
+
if (!isNonEmptyString(value.subject))
|
|
133
|
+
return false;
|
|
134
|
+
if (typeof value.limit !== 'number' || !Number.isInteger(value.limit) || value.limit < 0)
|
|
135
|
+
return false;
|
|
136
|
+
if (typeof value.actualCount !== 'number' || !Number.isInteger(value.actualCount) || value.actualCount < 0)
|
|
137
|
+
return false;
|
|
138
|
+
if (typeof value.required !== 'boolean')
|
|
139
|
+
return false;
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
function isValidSourceReferences(value) {
|
|
143
|
+
if (!isPlainObject(value))
|
|
144
|
+
return false;
|
|
145
|
+
if (!Array.isArray(value.observationIds) || value.observationIds.length === 0 || !value.observationIds.every(isNonEmptyString))
|
|
146
|
+
return false;
|
|
147
|
+
const optionalStringFields = ['comparisonId', 'comparisonRequestId', 'baselineContractId', 'changeContractId', 'evaluationId', 'evaluationRequestId', 'referenceId', 'referenceRequestId'];
|
|
148
|
+
for (const field of optionalStringFields) {
|
|
149
|
+
if (value[field] !== undefined && !isNonEmptyString(value[field]))
|
|
150
|
+
return false;
|
|
151
|
+
}
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
// ---------------------------------------------------------------------------
|
|
155
|
+
// Bounded runtime target projection (reuses existing schema value objects -
|
|
156
|
+
// no second runtime truth model)
|
|
157
|
+
// ---------------------------------------------------------------------------
|
|
158
|
+
function isValidTargetGeometry(value) {
|
|
159
|
+
if (!isPlainObject(value))
|
|
160
|
+
return false;
|
|
161
|
+
return ['x', 'y', 'width', 'height', 'right', 'bottom'].every((key) => typeof value[key] === 'number');
|
|
162
|
+
}
|
|
163
|
+
function isValidTargetVisibility(value) {
|
|
164
|
+
return isPlainObject(value) && typeof value.visible === 'boolean';
|
|
165
|
+
}
|
|
166
|
+
function isValidOverflowEvidence(value) {
|
|
167
|
+
if (!isPlainObject(value))
|
|
168
|
+
return false;
|
|
169
|
+
if (typeof value.horizontalOverflow !== 'boolean' || typeof value.verticalOverflow !== 'boolean')
|
|
170
|
+
return false;
|
|
171
|
+
return typeof value.overflowX === 'string' && typeof value.overflowY === 'string';
|
|
172
|
+
}
|
|
173
|
+
function isValidScrollOwnerInterpretation(value) {
|
|
174
|
+
if (!isPlainObject(value) || typeof value.kind !== 'string')
|
|
175
|
+
return false;
|
|
176
|
+
if (value.kind === 'target')
|
|
177
|
+
return isNonEmptyString(value.target);
|
|
178
|
+
return value.kind === 'document' || value.kind === 'none' || value.kind === 'indeterminate';
|
|
179
|
+
}
|
|
180
|
+
function isValidBoundedRuntimeTargetProjection(value) {
|
|
181
|
+
if (!isPlainObject(value))
|
|
182
|
+
return false;
|
|
183
|
+
if (!isNonEmptyString(value.targetId))
|
|
184
|
+
return false;
|
|
185
|
+
if (value.geometry !== undefined && !isValidTargetGeometry(value.geometry))
|
|
186
|
+
return false;
|
|
187
|
+
if (value.visibility !== undefined && !isValidTargetVisibility(value.visibility))
|
|
188
|
+
return false;
|
|
189
|
+
if (value.overflow !== undefined && !isValidOverflowEvidence(value.overflow))
|
|
190
|
+
return false;
|
|
191
|
+
if (value.scrollOwner !== undefined && !isValidScrollOwnerInterpretation(value.scrollOwner))
|
|
192
|
+
return false;
|
|
193
|
+
if (value.relationshipEvidence !== undefined) {
|
|
194
|
+
if (!isEvidenceReferenceArray(value.relationshipEvidence))
|
|
195
|
+
return false;
|
|
196
|
+
if (value.relationshipEvidence.length > MAX_RELATIONSHIP_EVIDENCE_PER_TARGET)
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
if (value.screenshotRef !== undefined && !isValidArtifactReference(value.screenshotRef))
|
|
200
|
+
return false;
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
// ---------------------------------------------------------------------------
|
|
204
|
+
// Runtime/static correlation (evidence, not ownership or edit authorization)
|
|
205
|
+
// ---------------------------------------------------------------------------
|
|
206
|
+
export const CORRELATION_STATUSES = ['correlated', 'ambiguous', 'unavailable'];
|
|
207
|
+
/** Kinds of my-dev-kit stable static identity a candidate reference may carry. Observer never invents a third kind. */
|
|
208
|
+
export const STATIC_CANDIDATE_KINDS = ['file', 'symbol'];
|
|
209
|
+
/**
|
|
210
|
+
* v0.6 Batch 3: exported (was previously module-private) so
|
|
211
|
+
* `boundedAgentContextCorrelation.ts` can reuse this structural validator
|
|
212
|
+
* instead of duplicating it. No change to its logic, signature, or the
|
|
213
|
+
* frozen `StaticEvidenceProducerIdentity` contract itself.
|
|
214
|
+
*/
|
|
215
|
+
export function isValidStaticEvidenceProducerIdentity(value) {
|
|
216
|
+
if (!isPlainObject(value))
|
|
217
|
+
return false;
|
|
218
|
+
return isNonEmptyString(value.name) && isNonEmptyString(value.version) && isNonEmptyString(value.indexId);
|
|
219
|
+
}
|
|
220
|
+
/** v0.6 Batch 3: exported for reuse by `boundedAgentContextCorrelation.ts` (see note on `isValidStaticEvidenceProducerIdentity`). No logic change. */
|
|
221
|
+
export function isValidStaticCandidateReference(value) {
|
|
222
|
+
if (!isPlainObject(value))
|
|
223
|
+
return false;
|
|
224
|
+
if (!isNonEmptyString(value.candidateId))
|
|
225
|
+
return false;
|
|
226
|
+
if (typeof value.kind !== 'string' || !STATIC_CANDIDATE_KINDS.includes(value.kind))
|
|
227
|
+
return false;
|
|
228
|
+
// Best-effort my-dev-kit node-id-prefix consistency check (full node-id grammar validation is my-dev-kit's own responsibility, not this observer's).
|
|
229
|
+
if (value.kind === 'file' && !value.candidateId.startsWith('file:'))
|
|
230
|
+
return false;
|
|
231
|
+
if (value.kind === 'symbol' && !value.candidateId.startsWith('symbol:'))
|
|
232
|
+
return false;
|
|
233
|
+
if (!isEvidenceReferenceArray(value.evidenceRefs))
|
|
234
|
+
return false;
|
|
235
|
+
return value.evidenceRefs.length <= MAX_EVIDENCE_REFS_PER_CORRELATION_FIELD;
|
|
236
|
+
}
|
|
237
|
+
/** v0.6 Batch 3: exported for reuse by `boundedAgentContextCorrelation.ts` (see note on `isValidStaticEvidenceProducerIdentity`). No logic change. */
|
|
238
|
+
export function isValidRuntimeStaticCorrelationRecord(value) {
|
|
239
|
+
if (!isPlainObject(value))
|
|
240
|
+
return false;
|
|
241
|
+
if (!isNonEmptyString(value.runtimeTargetId))
|
|
242
|
+
return false;
|
|
243
|
+
if (!isEvidenceReferenceArray(value.runtimeEvidenceRefs))
|
|
244
|
+
return false;
|
|
245
|
+
if (value.runtimeEvidenceRefs.length > MAX_EVIDENCE_REFS_PER_CORRELATION_FIELD)
|
|
246
|
+
return false;
|
|
247
|
+
if (!isValidStaticEvidenceProducerIdentity(value.staticProducer))
|
|
248
|
+
return false;
|
|
249
|
+
if (typeof value.status !== 'string' || !CORRELATION_STATUSES.includes(value.status))
|
|
250
|
+
return false;
|
|
251
|
+
if (!Array.isArray(value.candidates) || !value.candidates.every(isValidStaticCandidateReference))
|
|
252
|
+
return false;
|
|
253
|
+
if (value.candidates.length > MAX_STATIC_CANDIDATES_PER_TARGET)
|
|
254
|
+
return false;
|
|
255
|
+
// Status/candidate-count invariants: correlated=>exactly one, ambiguous=>at least two, unavailable=>none fabricated.
|
|
256
|
+
if (value.status === 'correlated' && value.candidates.length !== 1)
|
|
257
|
+
return false;
|
|
258
|
+
if (value.status === 'ambiguous' && value.candidates.length < 2)
|
|
259
|
+
return false;
|
|
260
|
+
if (value.status === 'unavailable' && value.candidates.length !== 0)
|
|
261
|
+
return false;
|
|
262
|
+
if (value.evidenceBasis !== undefined) {
|
|
263
|
+
if (typeof value.evidenceBasis !== 'string' || value.evidenceBasis.length > MAX_TEXT_SUMMARY_CHARS)
|
|
264
|
+
return false;
|
|
265
|
+
}
|
|
266
|
+
if (value.omissions !== undefined && !(Array.isArray(value.omissions) && value.omissions.every(isValidOmissionRecord)))
|
|
267
|
+
return false;
|
|
268
|
+
if (value.truncations !== undefined && !(Array.isArray(value.truncations) && value.truncations.every(isValidTruncationRecord)))
|
|
269
|
+
return false;
|
|
270
|
+
if (!isPlainObject(value.provenance) || !isNonEmptyString(value.provenance.correlatedAt))
|
|
271
|
+
return false;
|
|
272
|
+
return true;
|
|
273
|
+
}
|
|
274
|
+
export function isValidBoundedReferenceFidelityProjection(value) {
|
|
275
|
+
if (!isPlainObject(value))
|
|
276
|
+
return false;
|
|
277
|
+
if (!isNonEmptyString(value.referenceId))
|
|
278
|
+
return false;
|
|
279
|
+
if (!isNonEmptyString(value.referenceRequestId))
|
|
280
|
+
return false;
|
|
281
|
+
if (!isNonEmptyString(value.candidateObservationId))
|
|
282
|
+
return false;
|
|
283
|
+
if (!isNonEmptyString(value.candidateRequestId))
|
|
284
|
+
return false;
|
|
285
|
+
if (!isValidReferenceRequirementAdequacy(value.adequacy))
|
|
286
|
+
return false;
|
|
287
|
+
if (value.compatibility !== undefined && !isValidComparabilityResult(value.compatibility))
|
|
288
|
+
return false;
|
|
289
|
+
if (typeof value.state !== 'string' || !REFERENCE_FIDELITY_STATES.includes(value.state))
|
|
290
|
+
return false;
|
|
291
|
+
if (value.blockedBy !== undefined && !REFERENCE_FIDELITY_BLOCK_REASONS.includes(value.blockedBy))
|
|
292
|
+
return false;
|
|
293
|
+
if (!Array.isArray(value.mismatches) || !value.mismatches.every(isValidReferenceRequirementFidelityResult))
|
|
294
|
+
return false;
|
|
295
|
+
if (value.mismatches.length > MAX_FIDELITY_MISMATCHES)
|
|
296
|
+
return false;
|
|
297
|
+
if (!Array.isArray(value.protectedContext) || !value.protectedContext.every(isValidReferenceRequirementFidelityResult))
|
|
298
|
+
return false;
|
|
299
|
+
if (value.protectedContext.length > MAX_FIDELITY_PROTECTED_CONTEXT)
|
|
300
|
+
return false;
|
|
301
|
+
return true;
|
|
302
|
+
}
|
|
303
|
+
export function isValidBoundedAgentContextArtifact(value) {
|
|
304
|
+
if (!isPlainObject(value))
|
|
305
|
+
return { valid: false, reason: 'artifact must be an object' };
|
|
306
|
+
if (value.artifactKind !== BOUNDED_AGENT_CONTEXT_ARTIFACT_KIND)
|
|
307
|
+
return { valid: false, reason: 'artifactKind mismatch' };
|
|
308
|
+
if (value.schemaVersion !== BOUNDED_AGENT_CONTEXT_SCHEMA_VERSION)
|
|
309
|
+
return { valid: false, reason: 'schemaVersion mismatch' };
|
|
310
|
+
if (!isNonEmptyString(value.contextId))
|
|
311
|
+
return { valid: false, reason: 'contextId must be a non-empty string' };
|
|
312
|
+
if (!isNonEmptyString(value.contextRequestId))
|
|
313
|
+
return { valid: false, reason: 'contextRequestId must be a non-empty string' };
|
|
314
|
+
if (!isPlainObject(value.producer) || value.producer.name !== PRODUCER_NAME || !isNonEmptyString(value.producer.version)) {
|
|
315
|
+
return { valid: false, reason: 'producer must be { name: "my-frontend-observer", version: string }' };
|
|
316
|
+
}
|
|
317
|
+
if (!isPlainObject(value.provenance) || !isNonEmptyString(value.provenance.generatedAt)) {
|
|
318
|
+
return { valid: false, reason: 'provenance.generatedAt must be a non-empty string' };
|
|
319
|
+
}
|
|
320
|
+
if (!isValidProjectionProfile(value.projectionProfile)) {
|
|
321
|
+
return { valid: false, reason: `projectionProfile must be one of: ${PROJECTION_PROFILES.join(', ')}` };
|
|
322
|
+
}
|
|
323
|
+
if (!isValidSourceReferences(value.sources))
|
|
324
|
+
return { valid: false, reason: 'sources reference is invalid' };
|
|
325
|
+
if (!Array.isArray(value.targets) || !value.targets.every(isValidBoundedRuntimeTargetProjection)) {
|
|
326
|
+
return { valid: false, reason: 'targets must be an array of valid bounded runtime target projections' };
|
|
327
|
+
}
|
|
328
|
+
if (value.targets.length > MAX_RUNTIME_TARGETS)
|
|
329
|
+
return { valid: false, reason: `targets exceeds the frozen limit of ${MAX_RUNTIME_TARGETS}` };
|
|
330
|
+
if (!isValidAdequacy(value.adequacy))
|
|
331
|
+
return { valid: false, reason: 'adequacy is invalid' };
|
|
332
|
+
if (!Array.isArray(value.omissions) || !value.omissions.every(isValidOmissionRecord)) {
|
|
333
|
+
return { valid: false, reason: 'omissions must be an array of valid omission records' };
|
|
334
|
+
}
|
|
335
|
+
if (value.omissions.length > MAX_OMISSIONS)
|
|
336
|
+
return { valid: false, reason: `omissions exceeds the frozen limit of ${MAX_OMISSIONS}` };
|
|
337
|
+
if (!Array.isArray(value.truncations) || !value.truncations.every(isValidTruncationRecord)) {
|
|
338
|
+
return { valid: false, reason: 'truncations must be an array of valid truncation records' };
|
|
339
|
+
}
|
|
340
|
+
if (value.truncations.length > MAX_TRUNCATIONS)
|
|
341
|
+
return { valid: false, reason: `truncations exceeds the frozen limit of ${MAX_TRUNCATIONS}` };
|
|
342
|
+
if (value.correlations !== undefined) {
|
|
343
|
+
if (!Array.isArray(value.correlations) || !value.correlations.every(isValidRuntimeStaticCorrelationRecord)) {
|
|
344
|
+
return { valid: false, reason: 'correlations must be an array of valid runtime/static correlation records' };
|
|
345
|
+
}
|
|
346
|
+
if (value.correlations.length > MAX_CORRELATION_RECORDS) {
|
|
347
|
+
return { valid: false, reason: `correlations exceeds the frozen limit of ${MAX_CORRELATION_RECORDS}` };
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
if (value.fidelity !== undefined && !isValidBoundedReferenceFidelityProjection(value.fidelity)) {
|
|
351
|
+
return { valid: false, reason: 'fidelity is invalid' };
|
|
352
|
+
}
|
|
353
|
+
return { valid: true };
|
|
354
|
+
}
|
|
355
|
+
//# sourceMappingURL=boundedAgentContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boundedAgentContext.js","sourceRoot":"","sources":["../../src/domain/boundedAgentContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { StaticCandidateKind, StaticEvidenceProducerIdentity, RuntimeStaticCorrelationRecord, OmissionRecord, TruncationRecord, BoundedAgentContextArtifact } from './boundedAgentContext.js';
|
|
2
|
+
import type { EvidenceReference } from './relationships.js';
|
|
3
|
+
/** One authoritative static candidate as supplied by the caller (e.g. an application-layer adapter that already ran my-dev-kit retrieval). `candidateId`/`kind` are preserved exactly - never re-minted here. */
|
|
4
|
+
export interface StaticCandidateEvidenceInput {
|
|
5
|
+
candidateId: string;
|
|
6
|
+
kind: StaticCandidateKind;
|
|
7
|
+
evidenceRefs: EvidenceReference[];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* One runtime target's correlation input. `required` mirrors the same
|
|
11
|
+
* required/optional/context classification the rest of the bounded-context
|
|
12
|
+
* artifact family already uses (see `boundedAgentContextProjection.ts`) -
|
|
13
|
+
* it drives required-before-optional allocation and CONTRACT-002 adequacy
|
|
14
|
+
* consequences, but is not itself part of the frozen public
|
|
15
|
+
* `RuntimeStaticCorrelationRecord` shape.
|
|
16
|
+
*/
|
|
17
|
+
export interface CorrelationTargetInput {
|
|
18
|
+
runtimeTargetId: string;
|
|
19
|
+
required: boolean;
|
|
20
|
+
runtimeEvidenceRefs: EvidenceReference[];
|
|
21
|
+
/** Authoritative static candidates already selected/ranked by caller criteria. Empty means "correlation attempted, no responsible candidate available" (=> `unavailable`), which is distinct from omitting this target from `targets` entirely (=> not attempted, no record at all). */
|
|
22
|
+
candidates: StaticCandidateEvidenceInput[];
|
|
23
|
+
evidenceBasis?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface DeriveRuntimeStaticCorrelationsInput {
|
|
26
|
+
/** Authoritative static producer/index identity, preserved exactly. Never derived from a local path, worktree, output directory, or timestamp. */
|
|
27
|
+
staticProducer: StaticEvidenceProducerIdentity;
|
|
28
|
+
/** Provenance timestamp for every derived record's `provenance.correlatedAt`. Supplied by the caller (pure function - no internal `Date.now()`), matching the existing `generatedAt`-as-input convention in `boundedAgentContextProjection.ts`. */
|
|
29
|
+
correlatedAt: string;
|
|
30
|
+
targets: CorrelationTargetInput[];
|
|
31
|
+
}
|
|
32
|
+
export interface DeriveRuntimeStaticCorrelationsOutput {
|
|
33
|
+
records: RuntimeStaticCorrelationRecord[];
|
|
34
|
+
omissions: OmissionRecord[];
|
|
35
|
+
truncations: TruncationRecord[];
|
|
36
|
+
}
|
|
37
|
+
export type DeriveRuntimeStaticCorrelationsResult = ({
|
|
38
|
+
ok: true;
|
|
39
|
+
} & DeriveRuntimeStaticCorrelationsOutput) | {
|
|
40
|
+
ok: false;
|
|
41
|
+
reason: string;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Derives zero or more bounded `RuntimeStaticCorrelationRecord`s (one per
|
|
45
|
+
* supplied target) from authoritative runtime + static evidence. Pure,
|
|
46
|
+
* deterministic, immutable over its inputs, and terminating for arbitrarily
|
|
47
|
+
* large valid input (bounded by `MAX_CORRELATION_RECORDS`,
|
|
48
|
+
* `MAX_STATIC_CANDIDATES_PER_TARGET`, `MAX_EVIDENCE_REFS_PER_CORRELATION_FIELD`).
|
|
49
|
+
*
|
|
50
|
+
* Does not itself attach the result to a `BoundedAgentContextArtifact` - see
|
|
51
|
+
* `attachRuntimeStaticCorrelations` for that (separate, explicit step, so
|
|
52
|
+
* this function stays usable standalone and testable in isolation).
|
|
53
|
+
*/
|
|
54
|
+
export declare function deriveRuntimeStaticCorrelations(input: DeriveRuntimeStaticCorrelationsInput): DeriveRuntimeStaticCorrelationsResult;
|
|
55
|
+
export type AttachRuntimeStaticCorrelationsResult = {
|
|
56
|
+
ok: true;
|
|
57
|
+
artifact: BoundedAgentContextArtifact;
|
|
58
|
+
} | {
|
|
59
|
+
ok: false;
|
|
60
|
+
reason: string;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Attaches a previously-derived correlation result to an existing
|
|
64
|
+
* `BoundedAgentContextArtifact`, immutably (returns a new artifact; never
|
|
65
|
+
* mutates the input). Enforces cross-artifact coherence (every correlation
|
|
66
|
+
* record's `runtimeTargetId` must reference a target already present in
|
|
67
|
+
* `artifact.targets`), re-applies the aggregate `MAX_CORRELATION_RECORDS`/
|
|
68
|
+
* `MAX_OMISSIONS`/`MAX_TRUNCATIONS` caps to the merged collections, and
|
|
69
|
+
* recomputes `adequacy` per the frozen CONTRACT-002 rule: any known required
|
|
70
|
+
* correlation loss or required correlation unavailability forces
|
|
71
|
+
* `inadequate`; optional-only correlation loss may downgrade an otherwise
|
|
72
|
+
* `adequate` artifact to `partial`, never to `inadequate`.
|
|
73
|
+
*/
|
|
74
|
+
export declare function attachRuntimeStaticCorrelations(artifact: BoundedAgentContextArtifact, correlation: DeriveRuntimeStaticCorrelationsOutput): AttachRuntimeStaticCorrelationsResult;
|