@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,32 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
/**
|
|
3
|
+
* Best-effort convenience only: opens the platform default browser at `url`
|
|
4
|
+
* using OS-native commands (no dependency). Failure here must never affect
|
|
5
|
+
* viewer server startup success - callers treat a rejected promise as
|
|
6
|
+
* non-fatal and continue with the server already running.
|
|
7
|
+
*/
|
|
8
|
+
export function openInDefaultBrowser(url) {
|
|
9
|
+
return new Promise((resolvePromise, reject) => {
|
|
10
|
+
let command;
|
|
11
|
+
let args;
|
|
12
|
+
if (process.platform === 'win32') {
|
|
13
|
+
command = 'cmd';
|
|
14
|
+
args = ['/c', 'start', '""', url];
|
|
15
|
+
}
|
|
16
|
+
else if (process.platform === 'darwin') {
|
|
17
|
+
command = 'open';
|
|
18
|
+
args = [url];
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
command = 'xdg-open';
|
|
22
|
+
args = [url];
|
|
23
|
+
}
|
|
24
|
+
const child = spawn(command, args, { stdio: 'ignore', detached: true, windowsHide: true });
|
|
25
|
+
child.once('error', reject);
|
|
26
|
+
child.once('spawn', () => {
|
|
27
|
+
child.unref();
|
|
28
|
+
resolvePromise();
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=openBrowser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openBrowser.js","sourceRoot":"","sources":["../../src/viewerServer/openBrowser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,OAAO,IAAI,OAAO,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE;QAC5C,IAAI,OAAe,CAAC;QACpB,IAAI,IAAc,CAAC;QACnB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,OAAO,GAAG,KAAK,CAAC;YAChB,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACzC,OAAO,GAAG,MAAM,CAAC;YACjB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,UAAU,CAAC;YACrB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3F,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YACvB,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v0.8 Batch 1: fixed default loopback origin for the local viewer server, so
|
|
3
|
+
* an installed PWA has a stable identity across launches. No fixture or test
|
|
4
|
+
* in this repository binds a fixed TCP port (see tests/fixtures/server.ts,
|
|
5
|
+
* which always requests port 0 / OS-assigned), so 4319 was chosen as an
|
|
6
|
+
* uncommon, unreserved default that does not collide with common local dev
|
|
7
|
+
* ports (3000, 5173/4173 Vite, 8080, 8000) or any port referenced elsewhere
|
|
8
|
+
* in this repository.
|
|
9
|
+
*/
|
|
10
|
+
export declare const DEFAULT_VIEWER_PORT = 4319;
|
|
11
|
+
/** The viewer server binds only to loopback - never 0.0.0.0 or any other host. */
|
|
12
|
+
export declare const VIEWER_HOST = "127.0.0.1";
|
|
13
|
+
export declare const VIEWER_PORT_MIN = 1;
|
|
14
|
+
export declare const VIEWER_PORT_MAX = 65535;
|
|
15
|
+
/** Strict validation for an explicit --port value: an integer in the valid TCP port range (0 is allowed only for deterministic test use - the OS assigns an ephemeral port). */
|
|
16
|
+
export declare function isValidViewerPort(value: number): boolean;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* v0.8 Batch 1: fixed default loopback origin for the local viewer server, so
|
|
3
|
+
* an installed PWA has a stable identity across launches. No fixture or test
|
|
4
|
+
* in this repository binds a fixed TCP port (see tests/fixtures/server.ts,
|
|
5
|
+
* which always requests port 0 / OS-assigned), so 4319 was chosen as an
|
|
6
|
+
* uncommon, unreserved default that does not collide with common local dev
|
|
7
|
+
* ports (3000, 5173/4173 Vite, 8080, 8000) or any port referenced elsewhere
|
|
8
|
+
* in this repository.
|
|
9
|
+
*/
|
|
10
|
+
export const DEFAULT_VIEWER_PORT = 4319;
|
|
11
|
+
/** The viewer server binds only to loopback - never 0.0.0.0 or any other host. */
|
|
12
|
+
export const VIEWER_HOST = '127.0.0.1';
|
|
13
|
+
export const VIEWER_PORT_MIN = 1;
|
|
14
|
+
export const VIEWER_PORT_MAX = 65535;
|
|
15
|
+
/** Strict validation for an explicit --port value: an integer in the valid TCP port range (0 is allowed only for deterministic test use - the OS assigns an ephemeral port). */
|
|
16
|
+
export function isValidViewerPort(value) {
|
|
17
|
+
return Number.isInteger(value) && value >= 0 && value <= VIEWER_PORT_MAX;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=port.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"port.js","sourceRoot":"","sources":["../../src/viewerServer/port.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAExC,kFAAkF;AAClF,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC;AAEvC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC;AACjC,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AAErC,gLAAgL;AAChL,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,eAAe,CAAC;AAC3E,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { Diagnostic } from '../domain/diagnostics.js';
|
|
2
|
+
import type { ContextSessionState } from './context.js';
|
|
3
|
+
/**
|
|
4
|
+
* Absolute path to the built browser viewer assets shipped inside this
|
|
5
|
+
* package's own `dist/viewer` directory, resolved relative to this module's
|
|
6
|
+
* own compiled location (never the caller's current working directory), so
|
|
7
|
+
* it works identically whether invoked from the repo, an installed global
|
|
8
|
+
* package, or a packed npm tarball.
|
|
9
|
+
*/
|
|
10
|
+
export declare function defaultViewerAssetsRoot(): string;
|
|
11
|
+
export interface StartViewerOptions {
|
|
12
|
+
/** Explicit local evidence-root filesystem trust boundary. Validated operationally (exists, is a directory) - never interpreted as Observer evidence in Batch 1. */
|
|
13
|
+
root: string;
|
|
14
|
+
/** Defaults to {@link DEFAULT_VIEWER_PORT}. An explicit alternate port (including 0, for deterministic ephemeral test binding) is a different web origin than the default. */
|
|
15
|
+
port?: number;
|
|
16
|
+
/** Overrides the built viewer assets location. Defaults to {@link defaultViewerAssetsRoot}. Exposed only for tests exercising the static-serving boundary against fixture assets. */
|
|
17
|
+
assetsRoot?: string;
|
|
18
|
+
/**
|
|
19
|
+
* v0.8 Batch 6: explicit, session-only reference-region/runtime-target
|
|
20
|
+
* binding declarations, read once by the CLI at startup from an optional
|
|
21
|
+
* `--bindings-file` (never re-read, never persisted, never exposed as a
|
|
22
|
+
* path to the browser). Not yet validated against any specific reference
|
|
23
|
+
* here - that happens per-request, once a reference is actually selected,
|
|
24
|
+
* via the existing canonical `isValidReferenceRuntimeBindingDeclarations`.
|
|
25
|
+
* Defaults to an empty collection.
|
|
26
|
+
*/
|
|
27
|
+
bindingDeclarations?: readonly unknown[];
|
|
28
|
+
/**
|
|
29
|
+
* v0.8 Batch 7: the already-classified bounded-agent-context session
|
|
30
|
+
* state, read once by the CLI at startup from an optional
|
|
31
|
+
* `--context-file` (never re-read, never persisted, never exposed as a
|
|
32
|
+
* path to the browser, never derived by the viewer itself). Defaults to
|
|
33
|
+
* `{status:'none'}`.
|
|
34
|
+
*/
|
|
35
|
+
context?: ContextSessionState;
|
|
36
|
+
/** Ephemeral project-workflow display metadata keyed by exact POSIX evidence-relative directory. */
|
|
37
|
+
aliasMetadata?: ViewerAliasMetadata;
|
|
38
|
+
}
|
|
39
|
+
export interface ViewerAliasMetadata {
|
|
40
|
+
observationAliasesByRelativeDir: Readonly<Record<string, string>>;
|
|
41
|
+
}
|
|
42
|
+
export type StartViewerResult = {
|
|
43
|
+
ok: true;
|
|
44
|
+
url: string;
|
|
45
|
+
port: number;
|
|
46
|
+
host: string;
|
|
47
|
+
root: string;
|
|
48
|
+
/** Closes the underlying TCP listener. Safe to call once; awaits full shutdown. */
|
|
49
|
+
close: () => Promise<void>;
|
|
50
|
+
} | {
|
|
51
|
+
ok: false;
|
|
52
|
+
diagnostics: Diagnostic[];
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* The one application-level viewer use case for v0.8 Batch 1: validate the
|
|
56
|
+
* supplied evidence root and port, then start the loopback-only Node viewer
|
|
57
|
+
* server. Does not block - returns once the server is listening (or has
|
|
58
|
+
* failed to start), leaving lifecycle control (in particular, shutdown) to
|
|
59
|
+
* the caller. Never launches a browser, runs observation, or touches
|
|
60
|
+
* Observer artifacts.
|
|
61
|
+
*/
|
|
62
|
+
export declare function startViewer(options: StartViewerOptions): Promise<StartViewerResult>;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { stat } from 'node:fs/promises';
|
|
2
|
+
import { dirname, join } from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { createViewerServer } from './httpServer.js';
|
|
5
|
+
import { DEFAULT_VIEWER_PORT, VIEWER_HOST, isValidViewerPort } from './port.js';
|
|
6
|
+
import { DIAGNOSTIC_SEVERITY } from '../domain/diagnostics.js';
|
|
7
|
+
function diagnostic(code, message) {
|
|
8
|
+
return { code, severity: DIAGNOSTIC_SEVERITY[code], message };
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Absolute path to the built browser viewer assets shipped inside this
|
|
12
|
+
* package's own `dist/viewer` directory, resolved relative to this module's
|
|
13
|
+
* own compiled location (never the caller's current working directory), so
|
|
14
|
+
* it works identically whether invoked from the repo, an installed global
|
|
15
|
+
* package, or a packed npm tarball.
|
|
16
|
+
*/
|
|
17
|
+
export function defaultViewerAssetsRoot() {
|
|
18
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
19
|
+
return join(here, '..', 'viewer');
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The one application-level viewer use case for v0.8 Batch 1: validate the
|
|
23
|
+
* supplied evidence root and port, then start the loopback-only Node viewer
|
|
24
|
+
* server. Does not block - returns once the server is listening (or has
|
|
25
|
+
* failed to start), leaving lifecycle control (in particular, shutdown) to
|
|
26
|
+
* the caller. Never launches a browser, runs observation, or touches
|
|
27
|
+
* Observer artifacts.
|
|
28
|
+
*/
|
|
29
|
+
export async function startViewer(options) {
|
|
30
|
+
const diagnostics = [];
|
|
31
|
+
let rootInfo;
|
|
32
|
+
try {
|
|
33
|
+
rootInfo = await stat(options.root);
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
diagnostics.push(diagnostic('viewer-root-invalid', `--root does not exist or is not accessible: ${options.root}`));
|
|
37
|
+
return { ok: false, diagnostics };
|
|
38
|
+
}
|
|
39
|
+
if (!rootInfo.isDirectory()) {
|
|
40
|
+
diagnostics.push(diagnostic('viewer-root-invalid', `--root must be a directory: ${options.root}`));
|
|
41
|
+
return { ok: false, diagnostics };
|
|
42
|
+
}
|
|
43
|
+
const requestedPort = options.port ?? DEFAULT_VIEWER_PORT;
|
|
44
|
+
if (!isValidViewerPort(requestedPort)) {
|
|
45
|
+
diagnostics.push(diagnostic('viewer-port-unavailable', `--port must be an integer between 0 and 65535; got ${requestedPort}`));
|
|
46
|
+
return { ok: false, diagnostics };
|
|
47
|
+
}
|
|
48
|
+
const assetsRoot = options.assetsRoot ?? defaultViewerAssetsRoot();
|
|
49
|
+
const server = createViewerServer({
|
|
50
|
+
assetsRoot,
|
|
51
|
+
state: {
|
|
52
|
+
root: options.root,
|
|
53
|
+
bindingDeclarations: options.bindingDeclarations ?? [],
|
|
54
|
+
context: options.context ?? { status: 'none' },
|
|
55
|
+
aliasMetadata: options.aliasMetadata ?? { observationAliasesByRelativeDir: {} },
|
|
56
|
+
},
|
|
57
|
+
});
|
|
58
|
+
const listenResult = await new Promise((resolvePromise) => {
|
|
59
|
+
const onError = (err) => {
|
|
60
|
+
server.off('listening', onListening);
|
|
61
|
+
resolvePromise({ ok: false, message: err.code === 'EADDRINUSE' ? `port ${requestedPort} is already in use` : (err.message ?? String(err)) });
|
|
62
|
+
};
|
|
63
|
+
const onListening = () => {
|
|
64
|
+
server.off('error', onError);
|
|
65
|
+
resolvePromise({ ok: true });
|
|
66
|
+
};
|
|
67
|
+
server.once('error', onError);
|
|
68
|
+
server.once('listening', onListening);
|
|
69
|
+
server.listen(requestedPort, VIEWER_HOST);
|
|
70
|
+
});
|
|
71
|
+
if (!listenResult.ok) {
|
|
72
|
+
diagnostics.push(diagnostic('viewer-port-unavailable', `could not bind the viewer server to ${VIEWER_HOST}:${requestedPort}: ${listenResult.message}. Pass an explicit --port to use a different origin; the default port is never silently substituted.`));
|
|
73
|
+
return { ok: false, diagnostics };
|
|
74
|
+
}
|
|
75
|
+
const address = server.address();
|
|
76
|
+
const actualPort = address !== null && typeof address === 'object' ? address.port : requestedPort;
|
|
77
|
+
return {
|
|
78
|
+
ok: true,
|
|
79
|
+
url: `http://${VIEWER_HOST}:${actualPort}`,
|
|
80
|
+
port: actualPort,
|
|
81
|
+
host: VIEWER_HOST,
|
|
82
|
+
root: options.root,
|
|
83
|
+
close: () => new Promise((resolvePromise, reject) => {
|
|
84
|
+
server.close((err) => (err ? reject(err) : resolvePromise()));
|
|
85
|
+
}),
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=viewerService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewerService.js","sourceRoot":"","sources":["../../src/viewerServer/viewerService.ts"],"names":[],"mappings":"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"}
|