@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.
Files changed (316) hide show
  1. package/CHANGELOG.md +397 -0
  2. package/LICENSE +21 -0
  3. package/README.md +255 -0
  4. package/dist/application/browserCaptureService.d.ts +11 -0
  5. package/dist/application/browserCaptureService.js +12 -0
  6. package/dist/application/browserCaptureService.js.map +1 -0
  7. package/dist/application/comparisonService.d.ts +56 -0
  8. package/dist/application/comparisonService.js +77 -0
  9. package/dist/application/comparisonService.js.map +1 -0
  10. package/dist/application/externalReferencePersistenceService.d.ts +75 -0
  11. package/dist/application/externalReferencePersistenceService.js +182 -0
  12. package/dist/application/externalReferencePersistenceService.js.map +1 -0
  13. package/dist/application/frontendContractEvaluationService.d.ts +49 -0
  14. package/dist/application/frontendContractEvaluationService.js +112 -0
  15. package/dist/application/frontendContractEvaluationService.js.map +1 -0
  16. package/dist/application/frontendContractPersistenceService.d.ts +56 -0
  17. package/dist/application/frontendContractPersistenceService.js +91 -0
  18. package/dist/application/frontendContractPersistenceService.js.map +1 -0
  19. package/dist/application/observationPersistence.d.ts +59 -0
  20. package/dist/application/observationPersistence.js +79 -0
  21. package/dist/application/observationPersistence.js.map +1 -0
  22. package/dist/application/projectCheckService.d.ts +3 -0
  23. package/dist/application/projectCheckService.js +169 -0
  24. package/dist/application/projectCheckService.js.map +1 -0
  25. package/dist/application/projectWorkflowService.d.ts +46 -0
  26. package/dist/application/projectWorkflowService.js +92 -0
  27. package/dist/application/projectWorkflowService.js.map +1 -0
  28. package/dist/application/referenceFidelityEvaluationService.d.ts +28 -0
  29. package/dist/application/referenceFidelityEvaluationService.js +45 -0
  30. package/dist/application/referenceFidelityEvaluationService.js.map +1 -0
  31. package/dist/artifacts/artifactReader.d.ts +19 -0
  32. package/dist/artifacts/artifactReader.js +36 -0
  33. package/dist/artifacts/artifactReader.js.map +1 -0
  34. package/dist/artifacts/artifactWriter.d.ts +25 -0
  35. package/dist/artifacts/artifactWriter.js +68 -0
  36. package/dist/artifacts/artifactWriter.js.map +1 -0
  37. package/dist/artifacts/comparisonArtifactReader.d.ts +18 -0
  38. package/dist/artifacts/comparisonArtifactReader.js +35 -0
  39. package/dist/artifacts/comparisonArtifactReader.js.map +1 -0
  40. package/dist/artifacts/comparisonArtifactWriter.d.ts +41 -0
  41. package/dist/artifacts/comparisonArtifactWriter.js +67 -0
  42. package/dist/artifacts/comparisonArtifactWriter.js.map +1 -0
  43. package/dist/artifacts/externalReferenceArtifactReader.d.ts +18 -0
  44. package/dist/artifacts/externalReferenceArtifactReader.js +35 -0
  45. package/dist/artifacts/externalReferenceArtifactReader.js.map +1 -0
  46. package/dist/artifacts/externalReferenceArtifactWriter.d.ts +44 -0
  47. package/dist/artifacts/externalReferenceArtifactWriter.js +77 -0
  48. package/dist/artifacts/externalReferenceArtifactWriter.js.map +1 -0
  49. package/dist/artifacts/frontendContractArtifactReader.d.ts +24 -0
  50. package/dist/artifacts/frontendContractArtifactReader.js +47 -0
  51. package/dist/artifacts/frontendContractArtifactReader.js.map +1 -0
  52. package/dist/artifacts/frontendContractArtifactWriter.d.ts +34 -0
  53. package/dist/artifacts/frontendContractArtifactWriter.js +70 -0
  54. package/dist/artifacts/frontendContractArtifactWriter.js.map +1 -0
  55. package/dist/artifacts/frontendContractEvaluationArtifactReader.d.ts +17 -0
  56. package/dist/artifacts/frontendContractEvaluationArtifactReader.js +34 -0
  57. package/dist/artifacts/frontendContractEvaluationArtifactReader.js.map +1 -0
  58. package/dist/artifacts/frontendContractEvaluationArtifactWriter.d.ts +32 -0
  59. package/dist/artifacts/frontendContractEvaluationArtifactWriter.js +58 -0
  60. package/dist/artifacts/frontendContractEvaluationArtifactWriter.js.map +1 -0
  61. package/dist/artifacts/types.d.ts +17 -0
  62. package/dist/artifacts/types.js +2 -0
  63. package/dist/artifacts/types.js.map +1 -0
  64. package/dist/browser/chromiumAdapter.d.ts +21 -0
  65. package/dist/browser/chromiumAdapter.js +204 -0
  66. package/dist/browser/chromiumAdapter.js.map +1 -0
  67. package/dist/browser/evidenceCapture.d.ts +62 -0
  68. package/dist/browser/evidenceCapture.js +500 -0
  69. package/dist/browser/evidenceCapture.js.map +1 -0
  70. package/dist/browser/scrollCapture.d.ts +32 -0
  71. package/dist/browser/scrollCapture.js +163 -0
  72. package/dist/browser/scrollCapture.js.map +1 -0
  73. package/dist/browser/types.d.ts +24 -0
  74. package/dist/browser/types.js +2 -0
  75. package/dist/browser/types.js.map +1 -0
  76. package/dist/cli.d.ts +8 -0
  77. package/dist/cli.js +2411 -0
  78. package/dist/cli.js.map +1 -0
  79. package/dist/domain/boundedAgentContext.d.ts +226 -0
  80. package/dist/domain/boundedAgentContext.js +355 -0
  81. package/dist/domain/boundedAgentContext.js.map +1 -0
  82. package/dist/domain/boundedAgentContextCorrelation.d.ts +74 -0
  83. package/dist/domain/boundedAgentContextCorrelation.js +441 -0
  84. package/dist/domain/boundedAgentContextCorrelation.js.map +1 -0
  85. package/dist/domain/boundedAgentContextIdentity.d.ts +26 -0
  86. package/dist/domain/boundedAgentContextIdentity.js +69 -0
  87. package/dist/domain/boundedAgentContextIdentity.js.map +1 -0
  88. package/dist/domain/boundedAgentContextProjection.d.ts +71 -0
  89. package/dist/domain/boundedAgentContextProjection.js +477 -0
  90. package/dist/domain/boundedAgentContextProjection.js.map +1 -0
  91. package/dist/domain/comparison.d.ts +220 -0
  92. package/dist/domain/comparison.js +350 -0
  93. package/dist/domain/comparison.js.map +1 -0
  94. package/dist/domain/comparisonEngine.d.ts +76 -0
  95. package/dist/domain/comparisonEngine.js +734 -0
  96. package/dist/domain/comparisonEngine.js.map +1 -0
  97. package/dist/domain/comparisonIdentity.d.ts +13 -0
  98. package/dist/domain/comparisonIdentity.js +46 -0
  99. package/dist/domain/comparisonIdentity.js.map +1 -0
  100. package/dist/domain/completion.d.ts +30 -0
  101. package/dist/domain/completion.js +22 -0
  102. package/dist/domain/completion.js.map +1 -0
  103. package/dist/domain/diagnostics.d.ts +17 -0
  104. package/dist/domain/diagnostics.js +77 -0
  105. package/dist/domain/diagnostics.js.map +1 -0
  106. package/dist/domain/evidence.d.ts +29 -0
  107. package/dist/domain/evidence.js +59 -0
  108. package/dist/domain/evidence.js.map +1 -0
  109. package/dist/domain/explicitState.d.ts +40 -0
  110. package/dist/domain/explicitState.js +54 -0
  111. package/dist/domain/explicitState.js.map +1 -0
  112. package/dist/domain/externalReference.d.ts +158 -0
  113. package/dist/domain/externalReference.js +167 -0
  114. package/dist/domain/externalReference.js.map +1 -0
  115. package/dist/domain/externalReferenceApplicability.d.ts +43 -0
  116. package/dist/domain/externalReferenceApplicability.js +52 -0
  117. package/dist/domain/externalReferenceApplicability.js.map +1 -0
  118. package/dist/domain/externalReferenceCompatibility.d.ts +40 -0
  119. package/dist/domain/externalReferenceCompatibility.js +48 -0
  120. package/dist/domain/externalReferenceCompatibility.js.map +1 -0
  121. package/dist/domain/externalReferenceFidelity.d.ts +171 -0
  122. package/dist/domain/externalReferenceFidelity.js +419 -0
  123. package/dist/domain/externalReferenceFidelity.js.map +1 -0
  124. package/dist/domain/externalReferenceIdentity.d.ts +38 -0
  125. package/dist/domain/externalReferenceIdentity.js +70 -0
  126. package/dist/domain/externalReferenceIdentity.js.map +1 -0
  127. package/dist/domain/externalReferenceImage.d.ts +35 -0
  128. package/dist/domain/externalReferenceImage.js +160 -0
  129. package/dist/domain/externalReferenceImage.js.map +1 -0
  130. package/dist/domain/externalReferenceRegionRelationships.d.ts +63 -0
  131. package/dist/domain/externalReferenceRegionRelationships.js +98 -0
  132. package/dist/domain/externalReferenceRegionRelationships.js.map +1 -0
  133. package/dist/domain/externalReferenceRegions.d.ts +65 -0
  134. package/dist/domain/externalReferenceRegions.js +105 -0
  135. package/dist/domain/externalReferenceRegions.js.map +1 -0
  136. package/dist/domain/externalReferenceRequirementIdentity.d.ts +12 -0
  137. package/dist/domain/externalReferenceRequirementIdentity.js +35 -0
  138. package/dist/domain/externalReferenceRequirementIdentity.js.map +1 -0
  139. package/dist/domain/externalReferenceRequirements.d.ts +215 -0
  140. package/dist/domain/externalReferenceRequirements.js +401 -0
  141. package/dist/domain/externalReferenceRequirements.js.map +1 -0
  142. package/dist/domain/externalReferenceRuntimeBinding.d.ts +146 -0
  143. package/dist/domain/externalReferenceRuntimeBinding.js +183 -0
  144. package/dist/domain/externalReferenceRuntimeBinding.js.map +1 -0
  145. package/dist/domain/frontendContractEvaluation.d.ts +57 -0
  146. package/dist/domain/frontendContractEvaluation.js +454 -0
  147. package/dist/domain/frontendContractEvaluation.js.map +1 -0
  148. package/dist/domain/frontendContractEvaluationArtifact.d.ts +65 -0
  149. package/dist/domain/frontendContractEvaluationArtifact.js +108 -0
  150. package/dist/domain/frontendContractEvaluationArtifact.js.map +1 -0
  151. package/dist/domain/frontendContractIdentity.d.ts +39 -0
  152. package/dist/domain/frontendContractIdentity.js +70 -0
  153. package/dist/domain/frontendContractIdentity.js.map +1 -0
  154. package/dist/domain/frontendContracts.d.ts +188 -0
  155. package/dist/domain/frontendContracts.js +260 -0
  156. package/dist/domain/frontendContracts.js.map +1 -0
  157. package/dist/domain/identity.d.ts +21 -0
  158. package/dist/domain/identity.js +47 -0
  159. package/dist/domain/identity.js.map +1 -0
  160. package/dist/domain/referenceCorrectionIdentity.d.ts +40 -0
  161. package/dist/domain/referenceCorrectionIdentity.js +77 -0
  162. package/dist/domain/referenceCorrectionIdentity.js.map +1 -0
  163. package/dist/domain/referenceCorrectionWorkflow.d.ts +160 -0
  164. package/dist/domain/referenceCorrectionWorkflow.js +165 -0
  165. package/dist/domain/referenceCorrectionWorkflow.js.map +1 -0
  166. package/dist/domain/referenceFidelityProjection.d.ts +65 -0
  167. package/dist/domain/referenceFidelityProjection.js +135 -0
  168. package/dist/domain/referenceFidelityProjection.js.map +1 -0
  169. package/dist/domain/relationships.d.ts +210 -0
  170. package/dist/domain/relationships.js +352 -0
  171. package/dist/domain/relationships.js.map +1 -0
  172. package/dist/domain/schema.d.ts +269 -0
  173. package/dist/domain/schema.js +442 -0
  174. package/dist/domain/schema.js.map +1 -0
  175. package/dist/domain/scrollEvidence.d.ts +51 -0
  176. package/dist/domain/scrollEvidence.js +134 -0
  177. package/dist/domain/scrollEvidence.js.map +1 -0
  178. package/dist/index.d.ts +114 -0
  179. package/dist/index.js +64 -0
  180. package/dist/index.js.map +1 -0
  181. package/dist/projectWorkflow/aliasCatalog.d.ts +21 -0
  182. package/dist/projectWorkflow/aliasCatalog.js +67 -0
  183. package/dist/projectWorkflow/aliasCatalog.js.map +1 -0
  184. package/dist/projectWorkflow/checkAcceptance.d.ts +25 -0
  185. package/dist/projectWorkflow/checkAcceptance.js +55 -0
  186. package/dist/projectWorkflow/checkAcceptance.js.map +1 -0
  187. package/dist/projectWorkflow/checkResult.d.ts +85 -0
  188. package/dist/projectWorkflow/checkResult.js +101 -0
  189. package/dist/projectWorkflow/checkResult.js.map +1 -0
  190. package/dist/projectWorkflow/projectConfig.d.ts +43 -0
  191. package/dist/projectWorkflow/projectConfig.js +84 -0
  192. package/dist/projectWorkflow/projectConfig.js.map +1 -0
  193. package/dist/projectWorkflow/projectDiscovery.d.ts +9 -0
  194. package/dist/projectWorkflow/projectDiscovery.js +20 -0
  195. package/dist/projectWorkflow/projectDiscovery.js.map +1 -0
  196. package/dist/projectWorkflow/projectPaths.d.ts +8 -0
  197. package/dist/projectWorkflow/projectPaths.js +23 -0
  198. package/dist/projectWorkflow/projectPaths.js.map +1 -0
  199. package/dist/request/paths.d.ts +14 -0
  200. package/dist/request/paths.js +33 -0
  201. package/dist/request/paths.js.map +1 -0
  202. package/dist/request/request.d.ts +111 -0
  203. package/dist/request/request.js +464 -0
  204. package/dist/request/request.js.map +1 -0
  205. package/dist/safety/policy.d.ts +14 -0
  206. package/dist/safety/policy.js +81 -0
  207. package/dist/safety/policy.js.map +1 -0
  208. package/dist/viewer/assets/index-CN_yb9Uf.css +1 -0
  209. package/dist/viewer/assets/index-D98S1_2d.js +9 -0
  210. package/dist/viewer/icons/icon-192.png +0 -0
  211. package/dist/viewer/icons/icon-512.png +0 -0
  212. package/dist/viewer/index.html +15 -0
  213. package/dist/viewer/manifest.webmanifest +1 -0
  214. package/dist/viewer/registerSW.js +1 -0
  215. package/dist/viewer/sw.js +1 -0
  216. package/dist/viewer/workbox-9c191d2f.js +1 -0
  217. package/dist/viewerServer/context.d.ts +48 -0
  218. package/dist/viewerServer/context.js +60 -0
  219. package/dist/viewerServer/context.js.map +1 -0
  220. package/dist/viewerServer/evidence/classify.d.ts +59 -0
  221. package/dist/viewerServer/evidence/classify.js +124 -0
  222. package/dist/viewerServer/evidence/classify.js.map +1 -0
  223. package/dist/viewerServer/evidence/comparisonView.d.ts +28 -0
  224. package/dist/viewerServer/evidence/comparisonView.js +43 -0
  225. package/dist/viewerServer/evidence/comparisonView.js.map +1 -0
  226. package/dist/viewerServer/evidence/contextSourceView.d.ts +25 -0
  227. package/dist/viewerServer/evidence/contextSourceView.js +20 -0
  228. package/dist/viewerServer/evidence/contextSourceView.js.map +1 -0
  229. package/dist/viewerServer/evidence/discovery.d.ts +31 -0
  230. package/dist/viewerServer/evidence/discovery.js +78 -0
  231. package/dist/viewerServer/evidence/discovery.js.map +1 -0
  232. package/dist/viewerServer/evidence/evaluationView.d.ts +32 -0
  233. package/dist/viewerServer/evidence/evaluationView.js +50 -0
  234. package/dist/viewerServer/evidence/evaluationView.js.map +1 -0
  235. package/dist/viewerServer/evidence/handles.d.ts +21 -0
  236. package/dist/viewerServer/evidence/handles.js +43 -0
  237. package/dist/viewerServer/evidence/handles.js.map +1 -0
  238. package/dist/viewerServer/evidence/index.d.ts +41 -0
  239. package/dist/viewerServer/evidence/index.js +82 -0
  240. package/dist/viewerServer/evidence/index.js.map +1 -0
  241. package/dist/viewerServer/evidence/limits.d.ts +27 -0
  242. package/dist/viewerServer/evidence/limits.js +28 -0
  243. package/dist/viewerServer/evidence/limits.js.map +1 -0
  244. package/dist/viewerServer/evidence/linkedEvidence.d.ts +43 -0
  245. package/dist/viewerServer/evidence/linkedEvidence.js +151 -0
  246. package/dist/viewerServer/evidence/linkedEvidence.js.map +1 -0
  247. package/dist/viewerServer/evidence/mediaResolver.d.ts +16 -0
  248. package/dist/viewerServer/evidence/mediaResolver.js +85 -0
  249. package/dist/viewerServer/evidence/mediaResolver.js.map +1 -0
  250. package/dist/viewerServer/evidence/observationView.d.ts +29 -0
  251. package/dist/viewerServer/evidence/observationView.js +46 -0
  252. package/dist/viewerServer/evidence/observationView.js.map +1 -0
  253. package/dist/viewerServer/evidence/pathSafety.d.ts +11 -0
  254. package/dist/viewerServer/evidence/pathSafety.js +31 -0
  255. package/dist/viewerServer/evidence/pathSafety.js.map +1 -0
  256. package/dist/viewerServer/evidence/projection.d.ts +55 -0
  257. package/dist/viewerServer/evidence/projection.js +152 -0
  258. package/dist/viewerServer/evidence/projection.js.map +1 -0
  259. package/dist/viewerServer/evidence/referenceView.d.ts +133 -0
  260. package/dist/viewerServer/evidence/referenceView.js +169 -0
  261. package/dist/viewerServer/evidence/referenceView.js.map +1 -0
  262. package/dist/viewerServer/httpServer.d.ts +27 -0
  263. package/dist/viewerServer/httpServer.js +381 -0
  264. package/dist/viewerServer/httpServer.js.map +1 -0
  265. package/dist/viewerServer/openBrowser.d.ts +7 -0
  266. package/dist/viewerServer/openBrowser.js +32 -0
  267. package/dist/viewerServer/openBrowser.js.map +1 -0
  268. package/dist/viewerServer/port.d.ts +16 -0
  269. package/dist/viewerServer/port.js +19 -0
  270. package/dist/viewerServer/port.js.map +1 -0
  271. package/dist/viewerServer/viewerService.d.ts +62 -0
  272. package/dist/viewerServer/viewerService.js +88 -0
  273. package/dist/viewerServer/viewerService.js.map +1 -0
  274. package/docs/ARCHITECTURE.md +1286 -0
  275. package/docs/CI_CD.md +250 -0
  276. package/docs/COMMANDS.md +972 -0
  277. package/docs/CONTRACTS.md +1856 -0
  278. package/docs/CURRENT_STATE.md +1049 -0
  279. package/docs/DEVELOPMENT.md +202 -0
  280. package/docs/DOCUMENTATION_PRESERVATION_POLICY.md +50 -0
  281. package/docs/PROJECT_DESCRIPTION.md +2221 -0
  282. package/docs/PROJECT_MILESTONES.md +2526 -0
  283. package/docs/PROJECT_OVERVIEW.md +150 -0
  284. package/docs/QUICKSTART.md +83 -0
  285. package/docs/RELEASE.md +27 -0
  286. package/docs/ROADMAP.md +641 -0
  287. package/docs/SECURITY.md +218 -0
  288. package/docs/WORKFLOWS.md +642 -0
  289. package/docs/plans/v0.8-implementation-plan.md +655 -0
  290. package/docs/plans/v0.8.1-cli-usability-patch-plan.md +505 -0
  291. package/docs/reports/v0.7-bounded-fidelity-context-prompt7.md +243 -0
  292. package/docs/reports/v0.7-implementation-completeness-documentation-reconciliation.md +497 -0
  293. package/docs/reports/v0.7-pre-release-readiness.md +337 -0
  294. package/docs/reports/v0.7-reference-binding-prompt5.md +223 -0
  295. package/docs/reports/v0.7-reference-compatibility-prompt4.md +234 -0
  296. package/docs/reports/v0.7-reference-correction-workflow-prompt8.md +222 -0
  297. package/docs/reports/v0.7-reference-fidelity-prompt6.md +216 -0
  298. package/docs/reports/v0.7-reference-foundation-prompt1.md +151 -0
  299. package/docs/reports/v0.7-reference-regions-prompt2.md +195 -0
  300. package/docs/reports/v0.7-reference-requirements-prompt3.md +217 -0
  301. package/docs/reports/v0.7-release-prep.md +423 -0
  302. package/docs/reports/v0.8-binding-fidelity-interaction-batch6.md +279 -0
  303. package/docs/reports/v0.8-bounded-context-correlation-batch7.md +233 -0
  304. package/docs/reports/v0.8-comparison-contract-inspection-batch4.md +279 -0
  305. package/docs/reports/v0.8-evidence-index-readers-batch2.md +247 -0
  306. package/docs/reports/v0.8-implementation-completeness-documentation-reconciliation.md +741 -0
  307. package/docs/reports/v0.8-integrated-viewer-acceptance-batch8.md +128 -0
  308. package/docs/reports/v0.8-observation-svg-inspection-batch3.md +223 -0
  309. package/docs/reports/v0.8-prerelease-readiness-cross-platform-security-code-rot.md +687 -0
  310. package/docs/reports/v0.8-reference-candidate-inspection-batch5.md +232 -0
  311. package/docs/reports/v0.8-viewer-runtime-pwa-batch1.md +278 -0
  312. package/docs/reports/v0.8.1-check-orchestration-prompt2.md +69 -0
  313. package/docs/reports/v0.8.1-implementation-completeness-documentation-reconciliation.md +114 -0
  314. package/docs/reports/v0.8.1-prerelease-readiness-cross-platform-security-code-rot.md +170 -0
  315. package/docs/reports/v0.8.1-project-workflow-foundation-prompt1.md +66 -0
  316. 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;