m0saic 0.2.2 → 0.3.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/LICENSE +22 -7
- package/README.md +23 -5
- package/dist/browseE2e.js +1 -1
- package/dist/connectionsFromEnv.js +1 -1
- package/dist/e2eTemplateVariants.js +1 -1
- package/dist/frontDoor.js +1 -1
- package/dist/index.js +1 -1
- package/dist/inlineDsl.js +1 -1
- package/dist/mcp/bridgeClient.js +1 -0
- package/dist/mcp/server.js +1 -0
- package/dist/mcp/tools.js +1 -0
- package/dist/mosaicxRunner.js +1 -1
- package/dist/outputPattern.js +1 -1
- package/dist/showcaseFeed.js +1 -1
- package/dist/templateDoctor.js +1 -1
- package/dist/utils/checkFeasibility.js +1 -1
- package/dist/utils/collectRenderErrors.js +1 -1
- package/dist/utils/enrichImageAlphaFromDoc.js +1 -1
- package/dist/utils/ensureFfmpeg.js +1 -1
- package/dist/utils/extractLayoutMeta.js +1 -1
- package/dist/utils/failureHints.js +1 -1
- package/dist/utils/ffmpegProbe.js +1 -1
- package/dist/utils/formatM0saicForCli.js +1 -1
- package/dist/utils/hashFile.js +1 -1
- package/dist/utils/helpGroups.js +1 -1
- package/dist/utils/installContext.js +1 -0
- package/dist/utils/invocation.js +1 -1
- package/dist/utils/licenseActivation.js +1 -0
- package/dist/utils/licenseActivationWorker.js +1 -0
- package/dist/utils/mosaicSpinner.js +1 -1
- package/dist/utils/parseDimensions.js +1 -1
- package/dist/utils/pathInfo.js +1 -1
- package/dist/utils/readJsonArg.js +1 -1
- package/dist/utils/renderOutcome.js +1 -1
- package/dist/utils/renderReport.js +1 -1
- package/dist/utils/renderSignals.js +1 -1
- package/dist/utils/renderWorkspace.js +1 -1
- package/dist/utils/reportOutputFormat.js +1 -0
- package/dist/utils/setupFfmpeg.js +1 -1
- package/dist/utils/telemetry.js +1 -1
- package/dist/utils/telemetryFlushWorker.js +1 -1
- package/dist/utils/telemetryUpstream.js +1 -1
- package/dist/utils/telemetryUsage.js +1 -1
- package/dist/utils/toolchainConfig.js +1 -1
- package/dist/utils/tutorialDuration.js +1 -1
- package/dist/utils/updateCheck.js +1 -1
- package/dist/utils/updateCheckWorker.js +1 -1
- package/dist/utils/validateSourceCounts.js +1 -1
- package/dist/utils/versions.js +1 -1
- package/dist/webCustomizeLink.js +1 -1
- package/node_modules/@m0saic/community-m/NOTICE +9 -0
- package/node_modules/@m0saic/community-m/release.json +2 -2
- package/node_modules/@m0saic/core/dist/core/buildChildMosaicSource.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildChunkCommands.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildEncodeCommands.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildLavfiSource.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildMediaSource.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildMosaicNode.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildMosaicPlanFromFile.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildSvgTextSource.js +1 -1
- package/node_modules/@m0saic/core/dist/core/buildTextRenderCommand.js +1 -1
- package/node_modules/@m0saic/core/dist/core/collectRefTargets.js +1 -1
- package/node_modules/@m0saic/core/dist/core/index.js +1 -1
- package/node_modules/@m0saic/core/dist/core/maskCacheDir.js +1 -1
- package/node_modules/@m0saic/core/dist/core/maskWorkerBridge.js +1 -1
- package/node_modules/@m0saic/core/dist/core/playbackPlaySpeed.js +1 -1
- package/node_modules/@m0saic/core/dist/core/prepareProps.js +1 -1
- package/node_modules/@m0saic/core/dist/core/primaryOutput.js +1 -1
- package/node_modules/@m0saic/core/dist/core/rasterizeMaskPng.js +1 -1
- package/node_modules/@m0saic/core/dist/core/rasterizeSvgMediaPng.js +1 -1
- package/node_modules/@m0saic/core/dist/core/refTargetTap.js +1 -1
- package/node_modules/@m0saic/core/dist/core/resolveMasks.js +1 -1
- package/node_modules/@m0saic/core/dist/core/resolveMasksSync.js +1 -1
- package/node_modules/@m0saic/core/dist/core/resolveStrokeRingsSync.js +1 -1
- package/node_modules/@m0saic/core/dist/core/roundedRectMask.js +1 -1
- package/node_modules/@m0saic/core/dist/core/strokeRing.js +1 -1
- package/node_modules/@m0saic/core/dist/core/svgRaster.js +1 -1
- package/node_modules/@m0saic/core/dist/defaults.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/backgroundImageInput.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/bufferGuard.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/ffmpegCommands.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyBackdropBlur.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyBlur.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyBorderRadius.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyCamera.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyChromaKey.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyFade.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyGrade.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyMask.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyNoise.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyPixelize.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyRotate.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyStroke.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyTileEffects.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/coverCrop.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/index.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/filters/sourceRectCrop.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/gridLowering.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/index.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/splitAvMux.js +1 -1
- package/node_modules/@m0saic/core/dist/ffmpeg/threadGuard.js +1 -1
- package/node_modules/@m0saic/core/dist/flatten/index.js +1 -1
- package/node_modules/@m0saic/core/dist/fs/index.js +1 -1
- package/node_modules/@m0saic/core/dist/fs/tempWorkspace.js +1 -1
- package/node_modules/@m0saic/core/dist/index.js +1 -1
- package/node_modules/@m0saic/core/dist/media/buildAssetManifestFromInputs.js +1 -1
- package/node_modules/@m0saic/core/dist/media/buildMediaRegistryFromInput.js +1 -1
- package/node_modules/@m0saic/core/dist/media/collectMediaInputsFromInvocationProps.js +1 -1
- package/node_modules/@m0saic/core/dist/media/collectMediaInputsFromMosaicRenderableFile.js +1 -1
- package/node_modules/@m0saic/core/dist/media/collectMediaInputsFromProps.js +1 -1
- package/node_modules/@m0saic/core/dist/media/index.js +1 -1
- package/node_modules/@m0saic/core/dist/media/internalMintAsset.js +1 -1
- package/node_modules/@m0saic/core/dist/media/remoteUrl.js +1 -1
- package/node_modules/@m0saic/core/dist/media/stageUnsafeFilenames.js +1 -1
- package/node_modules/@m0saic/core/dist/media/types.js +1 -1
- package/node_modules/@m0saic/core/dist/output/index.js +1 -1
- package/node_modules/@m0saic/core/dist/output/resolveOutputFormat.js +1 -1
- package/node_modules/@m0saic/core/dist/output/types.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/cellLuminanceProbe.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/extractSubtitleCues.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/helpers.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/index.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/luminanceProbe.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/probeMedia.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/runFFprobe.js +1 -1
- package/node_modules/@m0saic/core/dist/probe/types.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/engineRedaction.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/ffmpegFailure.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/filterPreflight.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/hashFile.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/index.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/pathInfo.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/perfHeatmap.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/perfReport.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/pipelineM0p.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/renderCostModel.constants.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/renderCostModel.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/renderReport.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/renderSidecars.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/resolveMosaicx.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/runPlan.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/types.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/upstream.js +1 -1
- package/node_modules/@m0saic/core/dist/runtime/writeSidecars.js +1 -1
- package/node_modules/@m0saic/core/dist/types/chunk.js +1 -1
- package/node_modules/@m0saic/core/dist/types/index.js +1 -1
- package/node_modules/@m0saic/core/dist/types/mosaic-plan.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/assertTiming.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/command.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/createEngineContext.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/createTemplateRenderCache.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/ffmpegColor.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/formatDuration.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/fsSafeId.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/index.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/lowerRenderableToMosaicDocument.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/movSafeCodec.js +1 -1
- package/node_modules/@m0saic/core/dist/utils/resolveBoxFrac.js +1 -1
- package/node_modules/@m0saic/core/dist/validate/index.js +1 -1
- package/node_modules/@m0saic/core/scripts/mask-rasterize-core.js +1 -1
- package/node_modules/@m0saic/core/scripts/mask-rasterize-worker.js +1 -1
- package/node_modules/@m0saic/core/scripts/mask-worker-thread.js +1 -1
- package/node_modules/@m0saic/dictionary/NOTICE +9 -0
- package/node_modules/@m0saic/dictionary/README.md +315 -0
- package/node_modules/@m0saic/dictionary/package.json +1 -1
- package/node_modules/@m0saic/dsl/package.json +1 -1
- package/node_modules/@m0saic/dsl-file-formats/dist/cjs/agent.js +6 -0
- package/node_modules/@m0saic/dsl-file-formats/dist/cjs/m0/parseM0File.js +1 -1
- package/node_modules/@m0saic/dsl-file-formats/dist/cjs/m0/serializeM0File.js +2 -2
- package/node_modules/@m0saic/dsl-file-formats/dist/cjs/m0c/m0cFile.js +3 -3
- package/node_modules/@m0saic/dsl-file-formats/dist/cjs/types.js +1 -1
- package/node_modules/@m0saic/dsl-file-formats/package.json +1 -1
- package/node_modules/@m0saic/dsl-stdlib/dist/cjs/builders/bakeM0cInsets.js +1 -0
- package/node_modules/@m0saic/dsl-stdlib/dist/cjs/builders/index.js +1 -1
- package/node_modules/@m0saic/dsl-stdlib/package.json +1 -1
- package/node_modules/@m0saic/knowledge/LICENSE +21 -0
- package/node_modules/@m0saic/knowledge/README.md +71 -0
- package/node_modules/@m0saic/knowledge/dist/index.js +1 -0
- package/node_modules/@m0saic/knowledge/docs/README.md +60 -0
- package/node_modules/@m0saic/knowledge/docs/file-formats/m0-iteration-protocol.md +120 -0
- package/node_modules/@m0saic/knowledge/docs/file-formats/m0p-and-custom-field.md +195 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/README.md +27 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/composition-arithmetic.md +278 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/dsl-complexity.md +75 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/dsl-rules.md +367 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/feasibility-precision-quantization.md +591 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/m0-construction-methods.md +201 -0
- package/node_modules/@m0saic/knowledge/docs/handbook/precision-tiers.md +84 -0
- package/node_modules/@m0saic/knowledge/docs/m0saic-thesis.md +95 -0
- package/node_modules/@m0saic/knowledge/docs/runtime/README.md +24 -0
- package/node_modules/@m0saic/knowledge/docs/runtime/agent-at-the-canvas.md +108 -0
- package/node_modules/@m0saic/knowledge/docs/runtime/cli-usage.md +475 -0
- package/node_modules/@m0saic/knowledge/docs/runtime/ffmpeg-expression-limits.md +117 -0
- package/node_modules/@m0saic/knowledge/docs/runtime/reduce-to-one.md +96 -0
- package/node_modules/@m0saic/knowledge/docs/skills/README.md +40 -0
- package/node_modules/@m0saic/knowledge/docs/skills/axis-and-geometry.md +103 -0
- package/node_modules/@m0saic/knowledge/docs/skills/dsl-stdlib-method-catalog.md +7 -0
- package/node_modules/@m0saic/knowledge/docs/skills/identity.md +123 -0
- package/node_modules/@m0saic/knowledge/docs/skills/labels-and-masks.md +170 -0
- package/node_modules/@m0saic/knowledge/docs/skills/m0saic-string-generation.md +251 -0
- package/node_modules/@m0saic/knowledge/docs/skills/more-atoms-not-bigger-atoms.md +77 -0
- package/node_modules/@m0saic/knowledge/docs/skills/overlay-semantics.md +194 -0
- package/node_modules/@m0saic/knowledge/docs/skills/parse-apis.md +79 -0
- package/node_modules/@m0saic/knowledge/docs/skills/passthrough-semantics.md +136 -0
- package/node_modules/@m0saic/knowledge/docs/skills/structural-construction.md +86 -0
- package/node_modules/@m0saic/knowledge/docs/skills/text-in-templates.md +126 -0
- package/node_modules/@m0saic/knowledge/docs/skills/zero-overlay-analysis.md +87 -0
- package/node_modules/@m0saic/knowledge/docs/templates/README.md +65 -0
- package/node_modules/@m0saic/knowledge/docs/templates/capability-templates.md +72 -0
- package/node_modules/@m0saic/knowledge/docs/templates/construction-strategy.md +329 -0
- package/node_modules/@m0saic/knowledge/docs/templates/data-pipeline.md +324 -0
- package/node_modules/@m0saic/knowledge/docs/templates/emission-patterns.md +130 -0
- package/node_modules/@m0saic/knowledge/docs/templates/geometry-recipes.md +248 -0
- package/node_modules/@m0saic/knowledge/docs/templates/layout-contract.md +168 -0
- package/node_modules/@m0saic/knowledge/docs/templates/output-resolution-tree.md +210 -0
- package/node_modules/@m0saic/knowledge/docs/templates/patterns/case-study-lessons.md +69 -0
- package/node_modules/@m0saic/knowledge/docs/templates/patterns/perf-authoring-rules.md +100 -0
- package/node_modules/@m0saic/knowledge/docs/templates/patterns/primitive-extraction-pattern.md +103 -0
- package/node_modules/@m0saic/knowledge/docs/templates/philosophy-and-contract.md +310 -0
- package/node_modules/@m0saic/knowledge/docs/templates/recursion-nested-rendering.md +154 -0
- package/node_modules/@m0saic/knowledge/docs/templates/reference/grid.md +104 -0
- package/node_modules/@m0saic/knowledge/docs/templates/reference/json-prop-type.md +169 -0
- package/node_modules/@m0saic/knowledge/docs/templates/reference/mosaic-color.md +81 -0
- package/node_modules/@m0saic/knowledge/docs/templates/reference/mosaic-placement-props.md +103 -0
- package/node_modules/@m0saic/knowledge/docs/templates/reference/prop-bindings.md +338 -0
- package/node_modules/@m0saic/knowledge/docs/templates/reference/template-flags.md +236 -0
- package/node_modules/@m0saic/knowledge/docs/templates/render-lifecycle.md +117 -0
- package/node_modules/@m0saic/knowledge/docs/templates/rendering-model-contract.md +392 -0
- package/node_modules/@m0saic/knowledge/docs/templates/standalone-pack-authoring.md +309 -0
- package/node_modules/@m0saic/knowledge/docs/templates/theming.md +81 -0
- package/node_modules/@m0saic/knowledge/docs/templates/ui-controls.md +150 -0
- package/node_modules/@m0saic/knowledge/package.json +6 -0
- package/node_modules/@m0saic/momo-types/README.md +109 -0
- package/node_modules/@m0saic/momo-types/dist/agent.js +1 -6
- package/node_modules/@m0saic/momo-types/dist/context.js +1 -1
- package/node_modules/@m0saic/momo-types/package.json +1 -1
- package/node_modules/@m0saic/platform/README.md +3 -0
- package/node_modules/@m0saic/platform/dist/cjs/index.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/mosaic/outputKind/outputKind.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/mosaic/propBindings/index.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/mosaic/propBindings/propBindings.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/mosaic/validate/validateSources.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/packages/mosaicPackages.js +1 -0
- package/node_modules/@m0saic/platform/dist/cjs/paths/m0saicRoot.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/telemetry/lifecycle.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/telemetry/preview.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/telemetry/sender.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/telemetry/usageRecorder.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/telemetry/usageStore.js +3 -3
- package/node_modules/@m0saic/platform/dist/cjs/template-repos/index.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/template-repos/loadTemplateRepoFromPath.js +4 -4
- package/node_modules/@m0saic/platform/dist/cjs/template-repos/templateCatalogSidecars.js +2 -0
- package/node_modules/@m0saic/platform/dist/cjs/templateCatalog/index.js +1 -0
- package/node_modules/@m0saic/platform/dist/cjs/templateCatalog/templateCatalog.js +1 -0
- package/node_modules/@m0saic/platform/dist/cjs/toolchain/ffmpeg/baseline.json +25 -97
- package/node_modules/@m0saic/platform/dist/cjs/toolchain/ffmpeg/index.js +1 -1
- package/node_modules/@m0saic/platform/dist/cjs/toolchain/ffmpeg/install.js +2 -2
- package/node_modules/@m0saic/platform/dist/cjs/toolchain/goldenFfmpeg.js +6 -6
- package/node_modules/@m0saic/platform/package.json +1 -1
- package/node_modules/@m0saic/product/dist/communityRelease.js +1 -1
- package/node_modules/@m0saic/product/dist/freeTierLicense.js +1 -1
- package/node_modules/@m0saic/product/dist/index.js +1 -1
- package/node_modules/@m0saic/product/dist/licenseActivationNotice.js +1 -0
- package/node_modules/@m0saic/product/dist/licenseFile.js +1 -0
- package/node_modules/@m0saic/product/dist/licenseToken.js +1 -1
- package/node_modules/@m0saic/product/dist/makeScratchPath.js +1 -0
- package/node_modules/@m0saic/product/dist/postRenderWrapper.js +1 -1
- package/node_modules/@m0saic/product/dist/publicKeys.js +1 -1
- package/node_modules/@m0saic/product/dist/revokedKeys.js +1 -1
- package/node_modules/@m0saic/product/dist/upstreamDefaults.js +1 -1
- package/node_modules/@m0saic/product/dist/workspaceScaffold.js +1 -0
- package/node_modules/@m0saic/template-utils/dist/brand/hello-world/helloWorld.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/geometry-contract/frameResolution.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/geometry-contract/index.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/geometry-contract/layoutConstraint.js +2 -2
- package/node_modules/@m0saic/template-utils/dist/m0saic/loadSession.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/render/createDesignContext.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/sources/makeErrorMosaic.js +2 -2
- package/node_modules/@m0saic/template-utils/dist/sources/svgTextSource.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/template/auditRenderedTemplate.js +5 -5
- package/node_modules/@m0saic/template-utils/dist/template/auditSchemaConventions.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/template/defineMosaicTemplate.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/template/resolveTemplateOutputHints.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/template/templateCatalogStore.js +1 -0
- package/node_modules/@m0saic/template-utils/dist/template/templateConventions.js +4 -4
- package/node_modules/@m0saic/template-utils/dist/template/templateRegistry.js +3 -3
- package/node_modules/@m0saic/template-utils/dist/template/validateTemplateProps.js +1 -1
- package/node_modules/@m0saic/template-utils/dist/text/fitText.js +6 -6
- package/node_modules/@m0saic/template-utils/package.json +1 -1
- package/node_modules/@m0saic/templates/NOTICE +9 -0
- package/node_modules/@m0saic/templates/dist/catalog.js +1 -0
- package/node_modules/@m0saic/templates/dist/freeze.js +8 -8
- package/node_modules/@m0saic/templates/dist/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/_shared/canvas-handles.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/_shared/stand-in.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/agents/commit-feed/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/agents/commit-feed/v2/commit-feed.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/agents/commit-feed/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/agents/trace-timeline/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/agents/trace-timeline/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/agents/trace-timeline/v2/trace-timeline.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/_shared/alpine-conventions.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/bar-graph/v2/bar-graph.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/bar-graph/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/commit-feed/v3/commit-feed.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/commit-feed/v3/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/contributor-table/v2/contributor-table.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/contributor-table/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/donut/v4/donut.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/donut/v4/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/heatmap/v3/heatmap.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/heatmap/v3/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/kpi-card/v3/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/kpi-card/v3/kpi-card.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/leaderboard/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/leaderboard/v2/leaderboard.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/line-chart/v3/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/line-chart/v3/line-chart.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/progress-card/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/progress-card/v2/progress-card.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/stat-card/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/stat-card/v2/stat-card.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/timeline/v3/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/timeline/v3/timeline.js +4 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/treemap/v3/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/alpine/treemap/v3/treemap.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/benchmark/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/benchmark/report/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/benchmark/report/v2/report.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/brand/business-card/v2/business-card.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/brand/business-card/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/brand/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/brand/logo/v4/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/brand/logo/v4/logo_runner.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/charts/bar-graph/v3/bar-graph.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/charts/bar-graph/v3/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/charts/donut/v5/donut.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/charts/donut/v5/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/charts/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/charts/line-chart/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/charts/line-chart/v2/line-chart.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/charts/stat-card/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/charts/stat-card/v2/stat-card.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/code/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/code/snippet-morph/v2/snippet-morph.js +3 -0
- package/node_modules/@m0saic/templates/dist/m0saic/collage/image-collage/v2/image-collage.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/collage/image-collage/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/collage/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/dsl-tutorial/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/dsl-tutorial/v2/dsl-tutorial.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/dsl-tutorial/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/github/year-card/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/github/year-card/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/github/year-card/v2/year-card.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/hero/ffmpeg-pulse/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/hero/ffmpeg-pulse/runner/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/hero/ffmpeg-pulse/runner/v2/runner.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/barcode/v2/barcode.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/barcode/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/blur-regions/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/blur-regions/v1/tutorial.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/blur-regions/v2/blur-regions.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/blur-regions/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/highlights/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/highlights/v2/highlights.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/highlights/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/logo-animate/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/logo-animate/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/logo-animate/v2/logo-animate.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/metadata-stamp/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/metadata-stamp/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/metadata-stamp/v2/metadata-stamp.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/qr/code/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/qr/code/v2/qr-code.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/qr/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/qr/stamp/v2/qr-stamp-custom.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid/v3/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid/v3/screencap-grid.js +4 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid_aspect_safe/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid_aspect_safe/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid_aspect_safe/v2/screencap-grid-aspect-safe.js +3 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/scroll_wall/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/scroll_wall/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/scroll_wall/v2/scroll-wall.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/subtitle-burn/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/subtitle-burn/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/subtitle-burn/v2/subtitle-burn.js +4 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/trickplay/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/trickplay/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/trickplay/v2/trickplay.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/video_to_png_sequence/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/video_to_png_sequence/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/video_to_png_sequence/v2/video-to-png-sequence.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/watermark/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/media/watermark/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/media/watermark/v2/watermark.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/primitives/grid/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/primitives/grid/v3/grid.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/social/quote-card/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/social/quote-card/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/social/quote-card/v2/quote-card.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/story/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/story/narrated-chapters/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/story/narrated-chapters/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/story/narrated-chapters/v2/narrated-chapters.js +4 -0
- package/node_modules/@m0saic/templates/dist/m0saic/story/scrapbook/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/story/scrapbook/v2/props.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/story/scrapbook/v2/scrapbook.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/theming/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/theming/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/theming/v2/theming.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/web/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/m0saic/web/page-skeleton/v2/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/web/page-skeleton/v2/page-skeleton.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/wireframe/base/v3/index.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/wireframe/base/v3/wireframe.js +1 -0
- package/node_modules/@m0saic/templates/dist/m0saic/wireframe/index.js +1 -1
- package/node_modules/@m0saic/templates/dist/repo.js +1 -1
- package/node_modules/@m0saic/templates/dist/template-catalog.json +5429 -0
- package/node_modules/@m0saic/templates/dist/template-registry.js +1 -1
- package/node_modules/@m0saic/templates/dist/web.js +1 -1
- package/node_modules/@m0saic/templates/package.json +1 -1
- package/node_modules/@m0saic/templates/template-catalog.json +5429 -0
- package/node_modules/@m0saic/templates/template-manifest.json +1030 -286
- package/node_modules/@m0saic/templates/web-template-ids.json +38 -0
- package/node_modules/@m0saic/templates-advanced/NOTICE +9 -0
- package/node_modules/@m0saic/text/package.json +1 -1
- package/node_modules/@m0saic/types/dist/analytics/consent.js +1 -1
- package/node_modules/@m0saic/types/dist/analytics/event.js +1 -1
- package/node_modules/@m0saic/types/dist/analytics/usageMetrics.js +1 -1
- package/node_modules/@m0saic/types/dist/identifiers/identifiers.js +1 -1
- package/node_modules/@m0saic/types/dist/telemetry/ffmpegFailure.js +1 -1
- package/node_modules/@m0saic/types/dist/template/template.js +1 -1
- package/node_modules/@m0saic/types/package.json +1 -1
- package/node_modules/@m0saic/types-internal/dist/analytics/featureKeys.js +1 -1
- package/package.json +13 -11
- package/resources/starter-base/starter-base.json +10 -0
- package/resources/starter-base/starter-base.tgz +0 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# `@m0saic/momo-types` — Vocabulary Contract for the AI-Human Work-Session Protocol
|
|
2
|
+
|
|
3
|
+
This package **is** the canonical vocabulary for how AI agents and humans collaborate on m0saic layouts. When in doubt about which word to use, this file decides — collaborators (people, agents, downstream tooling) that drift into synonyms cause real fragmentation, and adapters between half-matching APIs are the cost. Read this file once; use these nouns everywhere.
|
|
4
|
+
|
|
5
|
+
## Why a separate package
|
|
6
|
+
|
|
7
|
+
The vocabulary is expected to grow as the AI layer matures (new categories, new evaluation kinds, future shapes none of us have named yet). Keeping it in its own publishable package — separate from the heavy `@m0saic/momo` runtime — means:
|
|
8
|
+
|
|
9
|
+
- **Any package can share the shape cheaply.** File-format layers (`@m0saic/dsl-file-formats`), tooling (`wireframe.mjs`), the desktop editor (`apps/mosaic`) — they all take a dep on `@m0saic/momo-types` without pulling in the model wrapper, tool registry, or download lifecycle.
|
|
10
|
+
- **Types-only / types-mostly.** Two small pure-function helpers (`gradeFromScore`, `normalizeCandidateContext`) ship alongside the types; everything else is type-only. Zero runtime baggage.
|
|
11
|
+
- **The file formats own the wire shapes.** `M0AgentMeta`, `M0AgentResponse`, `M0AgentComment`, the loose `CandidateContext` and the transport helpers (`mintAgentId`, `normalizeAgentProse`…) are defined in `@m0saic/dsl-file-formats` — this package depends on it and re-exports them with the typed `CandidateContext` refinement, so the language repo stays free of the agent protocol and nothing is duplicated.
|
|
12
|
+
- **Independent release cadence.** When the protocol churns (it will), `@m0saic/momo-types` can bump versions without dragging the rest of momo along.
|
|
13
|
+
|
|
14
|
+
The model is consciously chess-inspired (see `./candidate.ts` for the chess.com grade union, taken verbatim) — sessions are games, candidates are positions, evaluations are annotator marks, scoring is the engine eval.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Canonical noun set
|
|
19
|
+
|
|
20
|
+
| Noun | Meaning | Lives in |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| **session** | A chronological directory of candidates exploring one problem. The "game" in the chess analogy. | `session.ts` |
|
|
23
|
+
| **candidate** | One `.m0` (or `.m0c`) file inside a session. The "position / move". | `session.ts`, `candidate.ts` |
|
|
24
|
+
| **intent** | What the writing party is *trying* to accomplish (per-candidate prose + optional closed-union verb). | `category.ts` |
|
|
25
|
+
| **category** | What *class* of layout problem this session is solving. Closed union + `other` escape hatch. | `category.ts` |
|
|
26
|
+
| **layout-intent** | The structural kind of a candidate's geometry (grid / comparison / spotlight / …). Picked by the scorer's caller. | `scoring.ts` |
|
|
27
|
+
| **grade** | Categorical evaluation of a candidate (chess.com vocab, verbatim). Rank order (strong → weak): `brilliant` ▸ `great` ▸ `best` ▸ `excellent` ▸ `good` ▸ `inaccuracy` ▸ `mistake` ▸ `blunder`. Plus `book` (known canon), `miss` (human-only judgment), `unevaluated`. **Note:** `best` means "engine's top pick" — `brilliant` and `great` rank *above* it. | `candidate.ts` |
|
|
28
|
+
| **score** / **breakdown** | The numeric automated quality signal from `scoreLayout`. `breakdown` is the per-metric view. Types here; values + scoring function in `@m0saic/momo/scoring`. | `scoring.ts` |
|
|
29
|
+
| **evaluation** | The grade assignment for one candidate — `grade` + optional `breakdown` + provenance. | `candidate.ts` |
|
|
30
|
+
| **annotation** | Any structured note attached to a candidate (a `RegionAnnotation`, a comment, a relation). | `region.ts`, `agent/meta.ts` |
|
|
31
|
+
| **region** | A labeled sub-area of the geometry, keyed by stableKey. | `region.ts` |
|
|
32
|
+
| **relation** | Lineage between candidates (`refines`, `branches-from`, `rejects`, …). | `candidate.ts` |
|
|
33
|
+
| **party** | Anyone who can speak in the thread — `human`, `human:<name>`, `agent:<id>`. | `party.ts` |
|
|
34
|
+
| **phase** | Tripartite session arc — `scaffolding` / `refining` / `finalizing`. Mosaic analog of chess opening/middlegame/endgame. | `session-summary.ts` |
|
|
35
|
+
| **summary** | Per-party + per-phase stats across a session. Renders as the Game Review board on the post-mortem template. | `session-summary.ts` |
|
|
36
|
+
| **corpus** | The union of all sessions across all sandboxes — the "book". | (concept; no type) |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Banned synonyms
|
|
41
|
+
|
|
42
|
+
When tempted to use the left, use the right.
|
|
43
|
+
|
|
44
|
+
| Don't use | Use instead | Why |
|
|
45
|
+
|---|---|---|
|
|
46
|
+
| *background* | **context** | The `M0AgentMeta.context` field is the carrier; "background" is the same idea in different syllables. |
|
|
47
|
+
| *prompt* | **question** | `M0AgentMeta.question` is the specific ask field; "prompt" is overloaded with LLM-prompt-engineering jargon. |
|
|
48
|
+
| *attempt* | **candidate** | A candidate is one file (the position). Calling it an "attempt" loses the chess analogy. |
|
|
49
|
+
| *iteration* | **session** OR **candidate** | Pick one — an iteration is *either* the whole session you went through *or* the next candidate you produced. Don't conflate. |
|
|
50
|
+
| *rating* / *quality* (numeric) | **score** | `ScoreBreakdown.total` is "score". Use "rating" only for the per-session Elo-style number in `PartySummary.rating`. |
|
|
51
|
+
| *grade* | **(only for the categorical thing)** | Grade is `brilliant` / `mistake` / `blunder` — the categorical chess mark. Don't write `grade` when you mean `score`. |
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## The two orthogonal axes (read carefully)
|
|
56
|
+
|
|
57
|
+
`LayoutIntent` and `SessionCategory` are the most-confused pair. They are **NOT the same thing**; they live on different axes of the same candidate.
|
|
58
|
+
|
|
59
|
+
- **`LayoutIntent`** (`../scoring`) — *structural* kind of the layout. `grid`, `comparison`, `spotlight`, `magazine`, `ranked-list`, `free`. Picked by the scorer's caller so `scoreLayout` uses the right weight row.
|
|
60
|
+
- **`SessionCategory`** (`./category.ts`) — *kind of exploration* the session is performing. `spacing-alignment`, `hierarchy-emphasis`, `scaffold-from-scratch`, etc. Picked by the human or agent to classify what the iteration is FOR.
|
|
61
|
+
|
|
62
|
+
### Worked example
|
|
63
|
+
|
|
64
|
+
A user is iterating on the bar-graph template. They have a working 5-bar grid that feels visually cramped. They open a session to refine it:
|
|
65
|
+
|
|
66
|
+
- `SessionCategory`: `{ kind: "known", value: "spacing-alignment" }` — the session is exploring how to fix the cramped feeling.
|
|
67
|
+
- Each candidate's `layoutIntent`: `"grid"` — the geometry stays a grid throughout; only its gutters and weights vary.
|
|
68
|
+
|
|
69
|
+
The two axes co-vary in principle (a `spacing-alignment` session usually keeps `layoutIntent` constant across candidates because the geometry is what you're refining), but they're recorded independently because they answer different questions.
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Engine eval vs. annotator mark (the chess analogy is load-bearing)
|
|
74
|
+
|
|
75
|
+
A chess game has BOTH the engine's centipawn score (numeric, machine-computed) AND the annotator's `?!` (categorical, human-applied). They don't replace each other — they're shown side-by-side in any decent game review.
|
|
76
|
+
|
|
77
|
+
Same here:
|
|
78
|
+
|
|
79
|
+
- `breakdown.total` (number, 0..1) — the **engine eval**. Cheap, deterministic, available on any candidate.
|
|
80
|
+
- `evaluation.grade` (one of `brilliant` / `great` / … / `blunder`) — the **annotator mark**. Canonical; the human's selected answer.
|
|
81
|
+
|
|
82
|
+
When they disagree, the human wins — and the disagreement itself is interesting. The post-mortem template surfaces those moments because they're exactly where learning lives.
|
|
83
|
+
|
|
84
|
+
`gradeFromScore()` in `./candidate.ts` provides one auto-derivation path (use it for pre-fills); the human can always overwrite. **The automated grader caps at `best`** — it never returns `brilliant` or `great`, because those require insight (sacrifice, critical-moment recognition) an automated metric can't see. Same for `book` and `miss`. Those four grades are reserved for humans to award when they spot something the score didn't.
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Shared, not mirrored
|
|
89
|
+
|
|
90
|
+
This package's types are the **single source of truth**. `@m0saic/dsl-file-formats` and `@m0saic/momo` both take a workspace dep on `@m0saic/momo-types` and import the shapes directly — no parallel declarations, no CI lint to keep mirrors in sync.
|
|
91
|
+
|
|
92
|
+
(One holdover: `M0AgentMeta` itself remains mirrored between `@m0saic/momo` and `@m0saic/dsl-file-formats` — that struct predates this package and is stable enough that collapsing it isn't worth the churn.)
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Coexists with: scoring values in `@m0saic/momo/scoring`
|
|
97
|
+
|
|
98
|
+
Scoring is **split** across the two packages:
|
|
99
|
+
|
|
100
|
+
- **Types** (`ScoreBreakdown`, `LayoutIntent`, `ScoreInput`, `ScoreComponent`, `ScoreComponentKey`) live here in `./scoring.ts`.
|
|
101
|
+
- **Values + logic** (`WEIGHTS`, `THRESHOLDS`, the `scoreLayout` function, quality curves) live in `@m0saic/momo/scoring`.
|
|
102
|
+
|
|
103
|
+
`@m0saic/momo`'s `WEIGHTS` uses `satisfies Record<LayoutIntent, WeightTuple>` so the runtime constant and the type union stay in lockstep — adding a new intent requires editing both, with the type-check enforcing the consistency.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Open: starter category enum
|
|
108
|
+
|
|
109
|
+
The nine `KnownCategory` entries in `./category.ts` are the Plan-agent's best guess. They'll get refined once the user has driven enough real sessions to know which buckets are over/under-represented. Promote new patterns from `{ kind: "other", label: "X" }` to first-class after a label recurs ~3 times across sessions.
|
|
@@ -1,6 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`).split(`
|
|
3
|
-
`).map(r=>r.replace(/[ \t]+$/g,"")).join(`
|
|
4
|
-
`).replace(/\n{3,}/g,`
|
|
5
|
-
|
|
6
|
-
`).trim()}o(normalizeAgentProse,"normalizeAgentProse");function normalizeM0AgentMeta(t){if(!t)return null;const r={};if(t.id&&t.id.trim()!==""&&(r.id=t.id.trim()),t.note&&t.note.trim()!==""&&(r.note=normalizeAgentProse(t.note)),t.question&&t.question.trim()!==""&&(r.question=normalizeAgentProse(t.question)),t.regions){const i={};for(const[e,n]of Object.entries(t.regions))typeof n=="string"&&n.trim()!==""&&(i[e]=n);Object.keys(i).length&&(r.regions=i)}if(t.context!==void 0){const i=(0,context_1.normalizeCandidateContext)(t.context);i!==void 0&&(r.context=i)}if(t.response){const i=normalizeM0AgentResponse(t.response);i&&(r.response=i)}if(t.comments&&t.comments.length>0){const i=[];for(const e of t.comments){const n=normalizeM0AgentComment(e);n&&i.push(n)}i.length&&(r.comments=i)}return Object.keys(r).length?r:null}o(normalizeM0AgentMeta,"normalizeM0AgentMeta");function normalizeM0AgentResponse(t){if(!t)return null;const r=t.body?normalizeAgentProse(t.body):"";if(r==="")return null;const i={body:r};if(t.from&&t.from.trim()!==""&&(i.from=t.from.trim()),t.at&&t.at.trim()!==""&&(i.at=t.at.trim()),t.src&&t.src.trim()!==""&&(i.src=t.src.trim()),t.srcMosaic&&t.srcMosaic.trim()!==""&&(i.srcMosaic=t.srcMosaic.trim()),Array.isArray(t.images)){const e=t.images.filter(n=>typeof n=="string"&&n.length>0);e.length>0&&(i.images=e)}return i}o(normalizeM0AgentResponse,"normalizeM0AgentResponse");function normalizeM0AgentComment(t){if(!t)return null;const r=t.body?normalizeAgentProse(t.body):"";if(r==="")return null;const i={body:r};return t.id&&t.id.trim()!==""&&(i.id=t.id.trim()),t.from&&t.from.trim()!==""&&(i.from=t.from.trim()),t.at&&t.at.trim()!==""&&(i.at=t.at.trim()),i}o(normalizeM0AgentComment,"normalizeM0AgentComment");
|
|
1
|
+
"use strict";var s=Object.defineProperty;var o=(t,e)=>s(t,"name",{value:e,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.normalizeAgentProse=exports.collapseAgentProse=exports.mintAgentId=void 0,exports.normalizeM0AgentMeta=normalizeM0AgentMeta,exports.normalizeM0AgentResponse=normalizeM0AgentResponse,exports.normalizeM0AgentComment=normalizeM0AgentComment;const dsl_file_formats_1=require("@m0saic/dsl-file-formats");Object.defineProperty(exports,"mintAgentId",{enumerable:!0,get:o(function(){return dsl_file_formats_1.mintAgentId},"get")}),Object.defineProperty(exports,"collapseAgentProse",{enumerable:!0,get:o(function(){return dsl_file_formats_1.collapseAgentProse},"get")}),Object.defineProperty(exports,"normalizeAgentProse",{enumerable:!0,get:o(function(){return dsl_file_formats_1.normalizeAgentProse},"get")});const context_1=require("./context");function normalizeM0AgentMeta(t){if(!t)return null;const e={};if(t.id&&t.id.trim()!==""&&(e.id=t.id.trim()),t.note&&t.note.trim()!==""&&(e.note=(0,dsl_file_formats_1.normalizeAgentProse)(t.note)),t.question&&t.question.trim()!==""&&(e.question=(0,dsl_file_formats_1.normalizeAgentProse)(t.question)),t.regions){const r={};for(const[n,i]of Object.entries(t.regions))typeof i=="string"&&i.trim()!==""&&(r[n]=i);Object.keys(r).length&&(e.regions=r)}if(t.context!==void 0){const r=(0,context_1.normalizeCandidateContext)(t.context);r!==void 0&&(e.context=r)}if(t.response){const r=normalizeM0AgentResponse(t.response);r&&(e.response=r)}if(t.comments&&t.comments.length>0){const r=[];for(const n of t.comments){const i=normalizeM0AgentComment(n);i&&r.push(i)}r.length&&(e.comments=r)}return Object.keys(e).length?e:null}o(normalizeM0AgentMeta,"normalizeM0AgentMeta");function normalizeM0AgentResponse(t){if(!t)return null;const e=t.body?(0,dsl_file_formats_1.normalizeAgentProse)(t.body):"";if(e==="")return null;const r={body:e};if(t.from&&t.from.trim()!==""&&(r.from=t.from.trim()),t.at&&t.at.trim()!==""&&(r.at=t.at.trim()),t.src&&t.src.trim()!==""&&(r.src=t.src.trim()),t.srcMosaic&&t.srcMosaic.trim()!==""&&(r.srcMosaic=t.srcMosaic.trim()),Array.isArray(t.images)){const n=t.images.filter(i=>typeof i=="string"&&i.length>0);n.length>0&&(r.images=n)}return r}o(normalizeM0AgentResponse,"normalizeM0AgentResponse");function normalizeM0AgentComment(t){if(!t)return null;const e=t.body?(0,dsl_file_formats_1.normalizeAgentProse)(t.body):"";if(e==="")return null;const r={body:e};return t.id&&t.id.trim()!==""&&(r.id=t.id.trim()),t.from&&t.from.trim()!==""&&(r.from=t.from.trim()),t.at&&t.at.trim()!==""&&(r.at=t.at.trim()),r}o(normalizeM0AgentComment,"normalizeM0AgentComment");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var n=Object.defineProperty;var t=(e,r)=>n(e,"name",{value:r,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.normalizeCandidateContext=normalizeCandidateContext;const dsl_file_formats_1=require("@m0saic/dsl-file-formats");function normalizeCandidateContext(e){return(0,dsl_file_formats_1.normalizeCandidateContext)(e)}t(normalizeCandidateContext,"normalizeCandidateContext");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var a=Object.defineProperty;var s=(t,e)=>a(t,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(t,e,r,i){i===void 0&&(i=r);var o=Object.getOwnPropertyDescriptor(e,r);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:s(function(){return e[r]},"get")}),Object.defineProperty(t,i,o)}):(function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]})),__exportStar=this&&this.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&__createBinding(e,t,r)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./mosaic/flatten"),exports),__exportStar(require("./mosaic/layoutFloors"),exports),__exportStar(require("./mosaic/validate"),exports),__exportStar(require("./mosaic/edit"),exports),__exportStar(require("./mosaic/propBindings"),exports),__exportStar(require("./mosaic/outputKind"),exports),__exportStar(require("./mosaic/serializeMosaicDocument"),exports),__exportStar(require("./mosaic/absolutizeManifestPathsWeb"),exports),__exportStar(require("./share"),exports),__exportStar(require("./communityM"),exports),__exportStar(require("./asset"),exports),__exportStar(require("./jobs"),exports),__exportStar(require("./language"),exports),__exportStar(require("./output"),exports),__exportStar(require("./bridges/protocol"),exports),__exportStar(require("./templateId"),exports),__exportStar(require("./templateCatalog"),exports),__exportStar(require("./packages/mosaicPackages"),exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var d=Object.defineProperty;var s=(t,e)=>d(t,"name",{value:e,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.collectMotionEvidence=collectMotionEvidence,exports.isAnimatedRenderable=isAnimatedRenderable,exports.stampedOutputKind=stampedOutputKind,exports.inferOutputKind=inferOutputKind;function isRecord(t){return!!t&&typeof t=="object"&&!Array.isArray(t)}s(isRecord,"isRecord");function scanDoc(t,e,i){if(i.has(t))return;i.add(t);const n=Array.isArray(t.sources)?t.sources:[];for(const r of n){if(!isRecord(r))continue;const u=isRecord(r.overlay)?r.overlay:null;u&&(u.alpha!=null||u.xExpr!=null||u.yExpr!=null||u.enable!=null||u.startAtSec!=null||u.window!=null)&&e.overlayExprs++,r.type==="text"&&((Array.isArray(r.layers)?r.layers:[]).some(a=>isRecord(a)&&isRecord(a.content)&&a.content.kind==="expr")&&e.exprText++,isRecord(r.renderMode)&&r.renderMode.kind==="video"&&e.videoText++),isRecord(r.effects)&&r.effects.camera!=null&&e.cameras++,r.type==="media"&&(typeof r.mediaType=="string"?r.mediaType:typeof r.kind=="string"?r.kind:"")==="video"&&e.videoMedia++}const o=isRecord(t.children)?t.children:null;if(o)for(const r of Object.values(o))scanFile(r,e,i)}s(scanDoc,"scanDoc");function scanFile(t,e,i){if(isRecord(t)){if(Array.isArray(t.steps)){for(const n of t.steps)isRecord(n)&&(n.intermediate!==!0&&e.outputSteps++,scanFile(n.file,e,i));return}scanDoc(t,e,i)}}s(scanFile,"scanFile");function collectMotionEvidence(t){const e={overlayExprs:0,exprText:0,videoText:0,cameras:0,videoMedia:0,outputSteps:0};return scanFile(t,e,new Set),e}s(collectMotionEvidence,"collectMotionEvidence");function isAnimatedRenderable(t){const e=collectMotionEvidence(t);return e.overlayExprs+e.exprText+e.videoText+e.cameras+e.videoMedia>0||e.outputSteps>1}s(isAnimatedRenderable,"isAnimatedRenderable");function stampedOutputKind(t){if(!isRecord(t))return null;const e=t,i=s(n=>{const o=isRecord(n)&&isRecord(n.format)?n.format.kind:void 0;return o==="video"||o==="image"?o:null},"read");if(Array.isArray(e.steps)){for(const n of e.steps){if(!isRecord(n)||n.intermediate===!0)continue;const o=i(n.file);if(o)return o}return null}return i(e)}s(stampedOutputKind,"stampedOutputKind");function inferOutputKind(t){var e;if(!isRecord(t))return null;const i=t;return Array.isArray(i.steps)&&i.emit!=="multi"?"video":(e=stampedOutputKind(t))!==null&&e!==void 0?e:isAnimatedRenderable(t)?"video":"image"}s(inferOutputKind,"inferOutputKind");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var n=Object.defineProperty;var e=(r,t)=>n(r,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.sourceBindings=exports.resolveBindableProp=exports.bindingCompanion=exports.bindingSeedDraft=exports.bindingOnClear=exports.bindingPath=exports.isColorPropDef=exports.isStructuredPropType=exports.isMediaPropType=exports.isListPropType=exports.isRectPickerProp=exports.classifyBindableProp=exports.propDefinitionAtPath=void 0;var propBindings_1=require("./propBindings");Object.defineProperty(exports,"propDefinitionAtPath",{enumerable:!0,get:e(function(){return propBindings_1.propDefinitionAtPath},"get")}),Object.defineProperty(exports,"classifyBindableProp",{enumerable:!0,get:e(function(){return propBindings_1.classifyBindableProp},"get")}),Object.defineProperty(exports,"isRectPickerProp",{enumerable:!0,get:e(function(){return propBindings_1.isRectPickerProp},"get")}),Object.defineProperty(exports,"isListPropType",{enumerable:!0,get:e(function(){return propBindings_1.isListPropType},"get")}),Object.defineProperty(exports,"isMediaPropType",{enumerable:!0,get:e(function(){return propBindings_1.isMediaPropType},"get")}),Object.defineProperty(exports,"isStructuredPropType",{enumerable:!0,get:e(function(){return propBindings_1.isStructuredPropType},"get")}),Object.defineProperty(exports,"isColorPropDef",{enumerable:!0,get:e(function(){return propBindings_1.isColorPropDef},"get")}),Object.defineProperty(exports,"bindingPath",{enumerable:!0,get:e(function(){return propBindings_1.bindingPath},"get")}),Object.defineProperty(exports,"bindingOnClear",{enumerable:!0,get:e(function(){return propBindings_1.bindingOnClear},"get")}),Object.defineProperty(exports,"bindingSeedDraft",{enumerable:!0,get:e(function(){return propBindings_1.bindingSeedDraft},"get")}),Object.defineProperty(exports,"bindingCompanion",{enumerable:!0,get:e(function(){return propBindings_1.bindingCompanion},"get")}),Object.defineProperty(exports,"resolveBindableProp",{enumerable:!0,get:e(function(){return propBindings_1.resolveBindableProp},"get")}),Object.defineProperty(exports,"sourceBindings",{enumerable:!0,get:e(function(){return propBindings_1.sourceBindings},"get")});
|
|
1
|
+
"use strict";var n=Object.defineProperty;var e=(r,t)=>n(r,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.sourceBindings=exports.resolveBindableProp=exports.bindingCompanion=exports.bindingSeedDraft=exports.defaultOnClear=exports.bindingOnClear=exports.bindingPath=exports.isColorPropDef=exports.isStructuredPropType=exports.isMediaPropType=exports.isListPropType=exports.isRectListPickerProp=exports.isRectPickerProp=exports.choiceOptionsOf=exports.classifyBindableProp=exports.propDefinitionAtPath=void 0;var propBindings_1=require("./propBindings");Object.defineProperty(exports,"propDefinitionAtPath",{enumerable:!0,get:e(function(){return propBindings_1.propDefinitionAtPath},"get")}),Object.defineProperty(exports,"classifyBindableProp",{enumerable:!0,get:e(function(){return propBindings_1.classifyBindableProp},"get")}),Object.defineProperty(exports,"choiceOptionsOf",{enumerable:!0,get:e(function(){return propBindings_1.choiceOptionsOf},"get")}),Object.defineProperty(exports,"isRectPickerProp",{enumerable:!0,get:e(function(){return propBindings_1.isRectPickerProp},"get")}),Object.defineProperty(exports,"isRectListPickerProp",{enumerable:!0,get:e(function(){return propBindings_1.isRectListPickerProp},"get")}),Object.defineProperty(exports,"isListPropType",{enumerable:!0,get:e(function(){return propBindings_1.isListPropType},"get")}),Object.defineProperty(exports,"isMediaPropType",{enumerable:!0,get:e(function(){return propBindings_1.isMediaPropType},"get")}),Object.defineProperty(exports,"isStructuredPropType",{enumerable:!0,get:e(function(){return propBindings_1.isStructuredPropType},"get")}),Object.defineProperty(exports,"isColorPropDef",{enumerable:!0,get:e(function(){return propBindings_1.isColorPropDef},"get")}),Object.defineProperty(exports,"bindingPath",{enumerable:!0,get:e(function(){return propBindings_1.bindingPath},"get")}),Object.defineProperty(exports,"bindingOnClear",{enumerable:!0,get:e(function(){return propBindings_1.bindingOnClear},"get")}),Object.defineProperty(exports,"defaultOnClear",{enumerable:!0,get:e(function(){return propBindings_1.defaultOnClear},"get")}),Object.defineProperty(exports,"bindingSeedDraft",{enumerable:!0,get:e(function(){return propBindings_1.bindingSeedDraft},"get")}),Object.defineProperty(exports,"bindingCompanion",{enumerable:!0,get:e(function(){return propBindings_1.bindingCompanion},"get")}),Object.defineProperty(exports,"resolveBindableProp",{enumerable:!0,get:e(function(){return propBindings_1.resolveBindableProp},"get")}),Object.defineProperty(exports,"sourceBindings",{enumerable:!0,get:e(function(){return propBindings_1.sourceBindings},"get")});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var p=Object.defineProperty;var u=(n,e)=>p(n,"name",{value:e,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.isMediaPropType=isMediaPropType,exports.isRectPickerProp=isRectPickerProp,exports.isRectListPickerProp=isRectListPickerProp,exports.bindingRange=bindingRange,exports.bindingOnClear=bindingOnClear,exports.defaultOnClear=defaultOnClear,exports.bindingSeedDraft=bindingSeedDraft,exports.bindingCompanion=bindingCompanion,exports.sourceBindings=sourceBindings,exports.isStructuredPropType=isStructuredPropType,exports.bindingPath=bindingPath,exports.propDefinitionAtPath=propDefinitionAtPath,exports.isColorPropDef=isColorPropDef,exports.choiceOptionsOf=choiceOptionsOf,exports.classifyBindableProp=classifyBindableProp,exports.isListPropType=isListPropType,exports.resolveBindableProp=resolveBindableProp;function isKind(n){return n==="string"||n==="number"||n==="color"||n==="choice"||n==="rect"||n==="media"}u(isKind,"isKind");function isMediaPropType(n){return n?.type==="media"||n?.type==="media[]"}u(isMediaPropType,"isMediaPropType");function isRectPickerProp(n){var e,t;if(!n||n.type!=="json")return!1;const r=(e=n.meta)===null||e===void 0?void 0:e.control;return r?.picker==="regions"&&((t=r.regions)===null||t===void 0?void 0:t.max)===1}u(isRectPickerProp,"isRectPickerProp");function isRectListPickerProp(n,e){var t,r;if(!n||n.type!=="json")return!1;const i=(t=n.meta)===null||t===void 0?void 0:t.control;if(i?.picker!=="regions")return!1;const o=(r=i.regions)===null||r===void 0?void 0:r.max;return typeof o!="number"||o>1&&o>e}u(isRectListPickerProp,"isRectListPickerProp");function isClearAction(n){return n==="remove-element"||n==="unset-leaf"}u(isClearAction,"isClearAction");function isSpan(n){if(!n||typeof n!="object")return!1;const{start:e,end:t}=n;return typeof e=="number"&&Number.isInteger(e)&&e>=0&&typeof t=="number"&&Number.isInteger(t)&&t>=e}u(isSpan,"isSpan");function bindingRange(n,e){if(e!=="string"||!isSpan(n.range))return;const t={start:n.range.start,end:n.range.end},r=n.focus;return isSpan(r)&&r.start>=t.start&&r.end<=t.end?{range:t,focus:{start:r.start,end:r.end}}:{range:t}}u(bindingRange,"bindingRange");function bindingOnClear(n,e,t){if(e===null||!isClearAction(n.onClear))return;if(n.onClear==="remove-element")return typeof t[0]=="number"?"remove-element":void 0;const r=t[t.length-1];return t.length===0||typeof r=="string"?"unset-leaf":void 0}u(bindingOnClear,"bindingOnClear");function defaultOnClear(n,e,t){return e==="color"&&t.length===0&&n?.required!==!0?"unset-leaf":void 0}u(defaultOnClear,"defaultOnClear");function bindingSeedDraft(n,e){if(e===null||e==="rect"||e==="media"||e==="choice")return;const t=n.seedDraft;if(!(typeof t!="string"||t.trim()==="")&&!(e==="number"&&!Number.isFinite(Number(t.trim()))))return t}u(bindingSeedDraft,"bindingSeedDraft");function bindingCompanion(n,e){return n.companion===!0&&e!==void 0}u(bindingCompanion,"bindingCompanion");function sourceBindings(n){return(Array.isArray(n?.bindings)&&n.bindings.length?n.bindings:n?.binding?[n.binding]:[]).filter(t=>!!t&&typeof t=="object"&&typeof t.propKey=="string"&&!!t.propKey)}u(sourceBindings,"sourceBindings");const STRUCTURED_TYPES=new Set(["json","list","array"]);function isStructuredPropType(n){return!!n&&STRUCTURED_TYPES.has(n.type)}u(isStructuredPropType,"isStructuredPropType");function bindingPath(n){const e=n.path?[...n.path]:[];return n.index!==void 0?[n.index,...e]:e}u(bindingPath,"bindingPath");function propDefinitionAtPath(n,e){if(!n||!e)return;let t=n,r;for(const i of e.split(".")){if(!i||(r=t?.[i],!r))return;t=r.type==="group"?r.fields:void 0}return r}u(propDefinitionAtPath,"propDefinitionAtPath");function isValidIndex(n){return n!==void 0&&Number.isInteger(n)&&n>=0}u(isValidIndex,"isValidIndex");function isValidPath(n){return n.every(e=>typeof e=="number"?isValidIndex(e):typeof e=="string"&&e.length>0)}u(isValidPath,"isValidPath");function isColorPropDef(n){var e,t,r,i;return!!n&&!!(!((t=(e=n.meta)===null||e===void 0?void 0:e.constraints)===null||t===void 0)&&t.isColor||!((i=(r=n.meta)===null||r===void 0?void 0:r.control)===null||i===void 0)&&i.colorPicker)}u(isColorPropDef,"isColorPropDef");function isFreeTextString(n){var e,t,r;const i=n.meta;return!(!((e=i?.constraints)===null||e===void 0)&&e.oneOf||!((t=i?.control)===null||t===void 0)&&t.options||!((r=i?.control)===null||r===void 0)&&r.optionsFromConnection)}u(isFreeTextString,"isFreeTextString");function choiceOptionsOf(n){var e,t;const r=n?.meta;if(!r)return null;const i=(e=r.control)===null||e===void 0?void 0:e.options;if(Array.isArray(i)&&i.length>0){const l=i.filter(s=>!!s&&typeof s=="object"&&typeof s.value=="string").map(s=>({value:s.value,label:typeof s.label=="string"&&s.label?s.label:s.value}));return l.length>0?l:null}const o=(t=r.constraints)===null||t===void 0?void 0:t.oneOf;return Array.isArray(o)&&o.length>0&&o.every(l=>typeof l=="string")?o.map(l=>({value:l,label:l})):null}u(choiceOptionsOf,"choiceOptionsOf");function stringKind(n){return isColorPropDef(n)?"color":isFreeTextString(n)?"string":choiceOptionsOf(n)?"choice":null}u(stringKind,"stringKind");function classifyBindableProp(n,e){var t,r;if(!n||!((r=(t=n.meta)===null||t===void 0?void 0:t.ui)===null||r===void 0)&&r.hidden)return null;const i=typeof e=="number"?{index:e}:e??{},o=bindingPath(i);switch(n.type){case"string":return stringKind(n);case"number":return"number";case"media":return"media";case"string[]":return o.length===1&&typeof o[0]=="number"&&isValidIndex(o[0])?stringKind(n):null;case"number[]":return o.length===1&&typeof o[0]=="number"&&isValidIndex(o[0])?"number":null;case"media[]":return o.length===1&&typeof o[0]=="number"&&isValidIndex(o[0])?"media":null;default:if(!isStructuredPropType(n))return null;if(i.kind==="rect"){if(o.length===0)return isRectPickerProp(n)?"rect":null;const l=o.length===1&&typeof o[0]=="number"&&isValidIndex(o[0])?o[0]:null;return l!==null&&i.path===void 0&&isRectListPickerProp(n,l)?"rect":null}return o.length===0||!isValidPath(o)||i.kind==="choice"?null:isKind(i.kind)?i.kind:null}}u(classifyBindableProp,"classifyBindableProp");function isListPropType(n){return n?.type==="string[]"||n?.type==="number[]"||n?.type==="media[]"}u(isListPropType,"isListPropType");function resolveBindableProp(n,e){var t;const r=propDefinitionAtPath(n,e.propKey),i=classifyBindableProp(r,e),o=bindingRange(e,i),l=bindingPath(e),s=r?.type==="string"||r?.type==="number"||r?.type==="media"?[]:l,c=(t=bindingOnClear(e,i,s))!==null&&t!==void 0?t:defaultOnClear(r,i,s),a=bindingSeedDraft(e,i),d=bindingCompanion(e,a);return{def:r,kind:i,path:l,...c?{onClear:c}:{},...a!==void 0?{seedDraft:a}:{},...d?{companion:!0}:{},...o??{}}}u(resolveBindableProp,"resolveBindableProp");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var _=Object.defineProperty;var m=(e,r)=>_(e,"name",{value:r,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateMosaicSources=validateMosaicSources;const types_1=require("@m0saic/types"),validateLavfiSource_1=require("./validateLavfiSource"),LOUD_GAIN_WARN=4;function validateMosaicSources(e,r={},t={}){const i=[];return e.forEach((s,o)=>{s.type==="media"?validateMediaSource(s,o,i,r):s.type==="mosaic"?validateMosaicSource(s,o,i,r):s.type==="text"?validateTextSource(s,o,i,r):s.type==="lavfi"?((0,validateLavfiSource_1.validateLavfiSource)(s,o,i),validateMaskAgainstManifest(s.mask,o,i,r),validateEffects(s.effects,o,i)):(0,types_1.isMosaicDataSource)(s)?validateDataSource(s,o,i):s.type==="ref"||(s.type==="template_invocation"?t.allowTemplateInvocation?validateTemplateInvocationSource(s,o,i):i.push({code:(0,types_1.asDiagnosticCode)("UNRESOLVED_TEMPLATE_INVOCATION"),message:`Source[${o}] is a template_invocation but the document was passed to the engine-strict source validator. Run resolveMosaicx first or use validateMosaicXDocument for source-form (.mosaicx) docs.`,severity:"error"}):i.push({code:(0,types_1.asDiagnosticCode)("UNKNOWN_SOURCE_TYPE"),message:`Source[${o}] has unknown type "${s.type}".`,severity:"error"}))}),validateDataSourcePartitioning(e,i),i}m(validateMosaicSources,"validateMosaicSources");function validateTemplateInvocationSource(e,r,t){const i=e.templateId;(typeof i!="string"||i.length===0||!(0,types_1.isTemplateId)(i))&&t.push({code:(0,types_1.asDiagnosticCode)("MOSAICX_INVOCATION_MISSING_TEMPLATE_ID"),message:`Source[${r}] (template_invocation) is missing templateId or it isn't a valid TemplateId; received: ${JSON.stringify(i)}.`,severity:"error"}),e.props===void 0&&t.push({code:(0,types_1.asDiagnosticCode)("MOSAICX_INVOCATION_MISSING_PROPS"),message:`Source[${r}] (template_invocation) is missing required field "props" (use empty {} for templates with no required props).`,severity:"error"})}m(validateTemplateInvocationSource,"validateTemplateInvocationSource");function validateDataSource(e,r,t){const i=e.variables;(i==null||typeof i!="object"||Array.isArray(i))&&t.push({code:(0,types_1.asDiagnosticCode)("DATA_SOURCE_VARIABLES_MALFORMED"),message:`Source[${r}] (data) must have a non-null object "variables" (received: ${i===null?"null":Array.isArray(i)?"array":typeof i}).`,severity:"error"}),e.alias!==void 0&&!(0,types_1.isAliasId)(e.alias)&&t.push({code:(0,types_1.asDiagnosticCode)("DATA_SOURCE_ALIAS_INVALID"),message:`Source[${r}] (data) alias must match STRICT_IDENTIFIER_PATTERN (letter/_/alphanumeric, max 64 chars); received: ${JSON.stringify(e.alias)}.`,severity:"error"})}m(validateDataSource,"validateDataSource");function validateDataSourcePartitioning(e,r){const t=[];if(e.forEach((i,s)=>{(0,types_1.isMosaicDataSource)(i)&&t.push(s)}),t.length>1){const i=new Map;for(const s of t){const o=e[s].alias;if(o===void 0)continue;const n=o,f=i.get(n);f!==void 0?r.push({code:(0,types_1.asDiagnosticCode)("MOSAIC_ALIAS_COLLISION"),message:`sources[${s}] (data) declares alias ${JSON.stringify(n)} already used by sources[${f}]. Aliases must be unique within a step.`,severity:"error"}):i.set(n,s)}}}m(validateDataSourcePartitioning,"validateDataSourcePartitioning");function validateMaskAgainstManifest(e,r,t,i){if(e==null)return;if(e.kind==="inline-mask"){const n=m(u=>{t.push({code:(0,types_1.asDiagnosticCode)("MASK_INLINE_INVALID"),message:`Source[${r}] inline-mask ${u}`,severity:"error"})},"bad"),f=m((u,c)=>{if(u===void 0)return!0;if(!Array.isArray(u)||u.length===0)return n(`${c} must be a non-empty array of { d, width }.`),!1;for(const a of u){const d=a;if(d==null||typeof d.d!="string"||d.d.trim()===""||typeof d.width!="number"||!Number.isFinite(d.width)||d.width<=0)return n(`${c} entries need a non-empty d and a positive width.`),!1}return!0},"validStrokes");if(f(e.strokes,"strokes"),e.parts!==void 0)if(!Array.isArray(e.parts)||e.parts.length===0)n("parts must be a non-empty array.");else for(const u of e.parts){const c=u?.translate;if(!c||typeof c.x!="number"||!Number.isFinite(c.x)||typeof c.y!="number"||!Number.isFinite(c.y)){n("parts entries need a finite { translate: { x, y } }.");break}if(!f(u.strokes,"parts[].strokes"))break;const a=u?.clip;if(a!==void 0&&(typeof a?.x!="number"||!Number.isFinite(a.x)||typeof a.y!="number"||!Number.isFinite(a.y)||typeof a.width!="number"||!Number.isFinite(a.width)||a.width<=0||typeof a.height!="number"||!Number.isFinite(a.height)||a.height<=0)){n("parts[].clip needs finite { x, y } and positive { width, height }.");break}}e.featherPx!==void 0&&(typeof e.featherPx!="number"||!Number.isFinite(e.featherPx)||e.featherPx<0)&&n("featherPx must be a finite number >= 0 (design px).");return}if(e.kind!=="alpha-image")return;const s=e.assetId;if(typeof s!="string"||s.length===0){t.push({code:(0,types_1.asDiagnosticCode)("MASK_ASSETID_EMPTY"),message:`Source[${r}] alpha-image mask has empty assetId.`,severity:"error"});return}const o=i[s];if(o==null){t.push({code:(0,types_1.asDiagnosticCode)("MASK_ASSETID_UNKNOWN"),message:`Source[${r}] alpha-image mask references unknown assetId "${s}".`,severity:"error"});return}o.kind!=="file"&&t.push({code:(0,types_1.asDiagnosticCode)("MASK_ASSET_KIND_INVALID"),message:`Source[${r}] alpha-image mask must reference a file asset (assetId="${s}" is kind="${o.kind}").`,severity:"error"})}m(validateMaskAgainstManifest,"validateMaskAgainstManifest");function validateEffects(e,r,t){if(e==null||typeof e!="object")return;const i=e,s=m(o=>typeof o=="number"&&Number.isFinite(o),"isFiniteNumber");if(i.rotate!==void 0&&(typeof i.rotate!="number"||!Number.isFinite(i.rotate))&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_ROTATE"),message:`Source[${r}] effects.rotate must be a finite number (degrees) if set (received: ${String(i.rotate)}).`,severity:"error"}),i.blur!==void 0)if(typeof i.blur=="number")(!Number.isFinite(i.blur)||i.blur<0)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_BLUR"),message:`Source[${r}] effects.blur must be a finite number >= 0 (gaussian sigma in px) if set (received: ${String(i.blur)}).`,severity:"error"});else if(i.blur==null||typeof i.blur!="object"||Array.isArray(i.blur))t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_BLUR"),message:`Source[${r}] effects.blur must be a number or an object { sigma, backdrop? } if set.`,severity:"error"});else{const o=i.blur;(!s(o.sigma)||o.sigma<0)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_BLUR"),message:`Source[${r}] effects.blur.sigma is required in object form and must be a finite number >= 0 (received: ${String(o.sigma)}).`,severity:"error"}),o.backdrop!==void 0&&typeof o.backdrop!="boolean"&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_BLUR"),message:`Source[${r}] effects.blur.backdrop must be a boolean if set (received: ${String(o.backdrop)}).`,severity:"error"})}for(const o of["fadeInMs","fadeOutMs"]){const n=i[o];n!==void 0&&(typeof n!="number"||!Number.isFinite(n)||n<0)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_FADE"),message:`Source[${r}] effects.${o} must be a finite number >= 0 (milliseconds) if set (received: ${String(n)}).`,severity:"error"})}if(i.noise!==void 0)if(i.noise==null||typeof i.noise!="object"||Array.isArray(i.noise))t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_NOISE"),message:`Source[${r}] effects.noise must be an object { amount, seed } if set.`,severity:"error"});else{const o=i.noise;(!s(o.amount)||o.amount<0||o.amount>100)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_NOISE"),message:`Source[${r}] effects.noise.amount must be a finite number in [0, 100] (received: ${String(o.amount)}).`,severity:"error"}),s(o.seed)||t.push({code:(0,types_1.asDiagnosticCode)("EFFECT_NOISE_SEED_REQUIRED"),message:`Source[${r}] effects.noise.seed is required and must be a finite number \u2014 determinism demands an explicit seed (same seed = same grain).`,severity:"error"})}if(i.pixelize!==void 0&&(!s(i.pixelize)||i.pixelize<0)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_PIXELIZE"),message:`Source[${r}] effects.pixelize must be a finite number >= 0 (block px) if set (received: ${String(i.pixelize)}).`,severity:"error"}),i.chromaKey!==void 0)if(i.chromaKey==null||typeof i.chromaKey!="object"||Array.isArray(i.chromaKey))t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_CHROMAKEY"),message:`Source[${r}] effects.chromaKey must be an object { color, similarity?, blend?, despill? } if set.`,severity:"error"});else{const o=i.chromaKey;(typeof o.color!="string"||o.color.trim()==="")&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_CHROMAKEY"),message:`Source[${r}] effects.chromaKey.color is required and must be a non-empty color string (e.g. "#00ff00").`,severity:"error"});for(const n of["similarity","blend"]){const f=o[n];f!==void 0&&(!s(f)||f<0||f>1)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_CHROMAKEY"),message:`Source[${r}] effects.chromaKey.${n} must be a finite number in [0, 1] if set (received: ${String(f)}).`,severity:"error"})}o.despill!==void 0&&typeof o.despill!="boolean"&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_CHROMAKEY"),message:`Source[${r}] effects.chromaKey.despill must be a boolean if set (received: ${String(o.despill)}).`,severity:"error"})}if(i.grade!==void 0)if(i.grade==null||typeof i.grade!="object"||Array.isArray(i.grade))t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_GRADE"),message:`Source[${r}] effects.grade must be an object if set (received: ${Array.isArray(i.grade)?"array":typeof i.grade}).`,severity:"error"});else{const o=i.grade,n={brightness:[-1,1],contrast:[0,2],saturation:[0,3],gamma:[.1,10]};for(const[f,[u,c]]of Object.entries(n)){const a=o[f];a!==void 0&&(typeof a!="number"||!Number.isFinite(a)||a<u||a>c)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_GRADE"),message:`Source[${r}] effects.grade.${f} must be a finite number in [${u}, ${c}] if set (received: ${String(a)}).`,severity:"error"})}}}m(validateEffects,"validateEffects");function validateFrac(e,r,t,i,s){return!Number.isFinite(e)||e<0||e>=.5?(i.push({code:(0,types_1.asDiagnosticCode)(`${s}_INVALID_${r.toUpperCase().replace(/\./g,"_")}`),message:`Source[${t}] placement.${r} must be a finite number in [0, 0.49] if set (received: ${e}).`,severity:"error"}),!1):!0}m(validateFrac,"validateFrac");function validateBoxFrac(e,r,t,i,s){if(e!=null){if(typeof e=="number"){validateFrac(e,r,t,i,s);return}e.x!==void 0&&validateFrac(e.x,`${r}.x`,t,i,s),e.y!==void 0&&validateFrac(e.y,`${r}.y`,t,i,s),e.top!==void 0&&validateFrac(e.top,`${r}.top`,t,i,s),e.right!==void 0&&validateFrac(e.right,`${r}.right`,t,i,s),e.bottom!==void 0&&validateFrac(e.bottom,`${r}.bottom`,t,i,s),e.left!==void 0&&validateFrac(e.left,`${r}.left`,t,i,s)}}m(validateBoxFrac,"validateBoxFrac");function validateFocus(e,r,t,i,s){e!==void 0&&(typeof e!="number"||!Number.isFinite(e)||e<0||e>1)&&i.push({code:(0,types_1.asDiagnosticCode)(`${s}_INVALID_${r.toUpperCase()}`),message:`Source[${t}] placement.${r} must be a finite number in [0, 1] if set (received: ${String(e)}).`,severity:"error"})}m(validateFocus,"validateFocus");function validateSourceRect(e,r,t,i,s){if(e===void 0)return;if(!s){t.push({code:(0,types_1.asDiagnosticCode)(`${i}_SOURCERECT_UNSUPPORTED`),message:`Source[${r}] placement.sourceRect is only supported on media sources.`,severity:"error"});return}const o=m(u=>{t.push({code:(0,types_1.asDiagnosticCode)(`${i}_INVALID_SOURCERECT`),message:`Source[${r}] placement.sourceRect ${u}`,severity:"error"})},"fail");if(typeof e!="object"||e===null||Array.isArray(e)){o(`must be an { x, y, w, h } object in source px (received: ${String(e)}).`);return}const n=e,f=m(u=>typeof u=="number"&&Number.isFinite(u),"finite");(!f(n.x)||n.x<0||!f(n.y)||n.y<0)&&o("x/y must be finite numbers >= 0 (source px)."),(!f(n.w)||n.w<1||!f(n.h)||n.h<1)&&o("w/h must be finite numbers >= 1 (source px).")}m(validateSourceRect,"validateSourceRect");function validatePlacement(e,r,t,i,s){if(!e)return;validateSourceRect(e.sourceRect,r,t,i,s?.allowSourceRect===!0);const o=e.fit;o!==void 0&&o!=="contain"&&o!=="cover"&&t.push({code:(0,types_1.asDiagnosticCode)(`${i}_INVALID_FIT`),message:`Source[${r}] placement.fit must be "contain" or "cover" if set (received: ${o}).`,severity:"error"}),validateBoxFrac(e.inset,"inset",r,t,i),o==="cover"?(e.padding!=null&&t.push({code:(0,types_1.asDiagnosticCode)(`${i}_COVER_PADDING`),message:`Source[${r}] placement.fit="cover" forbids padding.`,severity:"error"}),validateFocus(e.focusX,"focusX",r,t,i),validateFocus(e.focusY,"focusY",r,t,i)):(validateBoxFrac(e.padding,"padding",r,t,i),(e.focusX!==void 0||e.focusY!==void 0)&&t.push({code:(0,types_1.asDiagnosticCode)(`${i}_FOCUS_REQUIRES_COVER`),message:`Source[${r}] placement.focusX/focusY require placement.fit="cover" (contain never crops).`,severity:"error"}))}m(validatePlacement,"validatePlacement");function validateMediaSource(e,r,t,i){var s,o,n,f,u;const c=e.assetId;typeof c!="string"||c.trim()===""?t.push({code:(0,types_1.asDiagnosticCode)("MEDIA_ASSETID_EMPTY"),message:`Source[${r}] (media) must have a non-empty assetId.`,severity:"error"}):i[c]==null&&t.push({code:(0,types_1.asDiagnosticCode)("MEDIA_ASSETID_UNKNOWN"),message:`Source[${r}] (media) references unknown assetId "${c}".`,severity:"error"}),["video","image","audio"].includes(e.mediaType)||t.push({code:(0,types_1.asDiagnosticCode)("INVALID_MEDIA_TYPE"),message:`Source[${r}] has invalid mediaType "${e.mediaType}".`,severity:"error"}),validateMaskAgainstManifest(e.mask,r,t,i),validateEffects(e.effects,r,t),((s=e.effects)===null||s===void 0?void 0:s.chromaKey)!==void 0&&(e.mediaType==="image"||e.mediaType==="audio")&&t.push({code:(0,types_1.asDiagnosticCode)("EFFECT_CHROMAKEY_MEDIA_TYPE"),message:`Source[${r}] effects.chromaKey is only valid on video-like sources; this media source has mediaType "${e.mediaType}".`,severity:"error"});const a=(o=e.audio)===null||o===void 0?void 0:o.volume;a!==void 0&&(!Number.isFinite(a)||a<0)?t.push({code:(0,types_1.asDiagnosticCode)("INVALID_VOLUME"),message:`Source[${r}] audio.volume must be a finite gain >= 0 if set (1 = unchanged, 2 = double; received: ${a}).`,severity:"error"}):a!==void 0&&a>LOUD_GAIN_WARN&&t.push({code:(0,types_1.asDiagnosticCode)("LOUD_VOLUME"),message:`Source[${r}] audio.volume ${a} amplifies well past unity and will almost certainly clip \u2014 volume is a GAIN factor (1 = unchanged), not a percentage.`,severity:"warning"});const d=(n=e.playback)===null||n===void 0?void 0:n.playSpeed;d!==void 0&&(!Number.isFinite(d)||d<=0)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_PLAY_SPEED"),message:`Source[${r}] playback.playSpeed must be > 0 if set (received: ${d}).`,severity:"error"});const l=(f=e.visual)===null||f===void 0?void 0:f.opacity;l!==void 0&&(!Number.isFinite(l)||l<0||l>1)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_OPACITY"),message:`Source[${r}] visual.opacity must be between 0.0 and 1.0 if set (received: ${l}).`,severity:"error"}),validatePlacement(e.placement,r,t,"MEDIA_PLACEMENT",{allowSourceRect:!0}),e.mediaType==="image"&&!((u=e.audio)===null||u===void 0)&&u.enabled&&t.push({code:(0,types_1.asDiagnosticCode)("IMAGE_HAS_AUDIO"),message:`Source[${r}] is an image but audioEnabled=true; audio will be ignored.`,severity:"warning"})}m(validateMediaSource,"validateMediaSource");function validateMosaicSource(e,r,t,i){var s,o,n;validateMaskAgainstManifest(e.mask,r,t,i),validateEffects(e.effects,r,t),(!e.ref||e.ref.trim()==="")&&t.push({code:(0,types_1.asDiagnosticCode)("MOSAIC_REF_EMPTY"),message:`Source[${r}] (mosaic) must have a non-empty mosaic reference.`,severity:"error"});const f=(s=e.audio)===null||s===void 0?void 0:s.volume;f!==void 0&&(!Number.isFinite(f)||f<0)?t.push({code:(0,types_1.asDiagnosticCode)("INVALID_MOSAIC_VOLUME"),message:`Source[${r}] audio.volume must be a finite gain >= 0 if set (1 = unchanged, 2 = double; received: ${f}).`,severity:"error"}):f!==void 0&&f>LOUD_GAIN_WARN&&t.push({code:(0,types_1.asDiagnosticCode)("LOUD_VOLUME"),message:`Source[${r}] audio.volume ${f} amplifies well past unity and will almost certainly clip \u2014 volume is a GAIN factor (1 = unchanged), not a percentage.`,severity:"warning"});const u=(o=e.playback)===null||o===void 0?void 0:o.playSpeed;u!==void 0&&(!Number.isFinite(u)||u<=0)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_MOSAIC_PLAY_SPEED"),message:`Source[${r}] playback.playSpeed must be > 0 if set (received: ${u}).`,severity:"error"});const c=(n=e.visual)===null||n===void 0?void 0:n.opacity;c!==void 0&&(!Number.isFinite(c)||c<0||c>1)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_MOSAIC_OPACITY"),message:`Source[${r}] visual.opacity must be between 0.0 and 1.0 if set (received: ${c}).`,severity:"error"}),validatePlacement(e.placement,r,t,"MOSAIC_PLACEMENT")}m(validateMosaicSource,"validateMosaicSource");function validateTextSource(e,r,t,i){var s,o;if(validateMaskAgainstManifest(e.mask,r,t,i),validateEffects(e.effects,r,t),!Array.isArray(e.layers)||e.layers.length===0){t.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYERS_EMPTY"),message:`Source[${r}] (text) must have non-empty layers[].`,severity:"error"});return}if(e.renderMode!=null){const a=e.renderMode.kind;if(a!=="image"&&a!=="video")t.push({code:(0,types_1.asDiagnosticCode)("TEXT_RENDER_MODE_INVALID"),message:`Source[${r}] (text) renderMode.kind must be "image" or "video" (received: ${String(a)}).`,severity:"error"});else if(a==="video"){const d=e.renderMode.durationMs;d!==void 0&&(!Number.isFinite(d)||d<=0)&&t.push({code:(0,types_1.asDiagnosticCode)("TEXT_RENDER_MODE_DURATION_INVALID"),message:`Source[${r}] (text) renderMode.durationMs must be a finite number > 0 if set (received: ${d}).`,severity:"error"})}}if(e.rasterizer!=null){const a=e.rasterizer;a!=="drawtext"&&a!=="svg"&&t.push({code:(0,types_1.asDiagnosticCode)("TEXT_RASTERIZER_INVALID"),message:`Source[${r}] (text) rasterizer must be "drawtext" or "svg" (received: ${String(a)}).`,severity:"error"})}const n=m((a,d)=>{if(a==null)return;const l=a.fontWeight;l!==void 0&&(l==="normal"||l==="bold"||typeof l=="number"&&Number.isFinite(l)&&l>=1&&l<=1e3||t.push({code:(0,types_1.asDiagnosticCode)("TEXT_FONT_WEIGHT_INVALID"),message:`Source[${r}] (text) ${d} fontWeight must be a number 1\u20131000 or "normal"/"bold" (received: ${String(l)}).`,severity:"error"}));const p=a.fontStyle;p!==void 0&&p!=="normal"&&p!=="italic"&&t.push({code:(0,types_1.asDiagnosticCode)("TEXT_FONT_STYLE_INVALID"),message:`Source[${r}] (text) ${d} fontStyle must be "normal" or "italic" (received: ${String(p)}).`,severity:"error"})},"validateTextStyle");n(e.style,"style");let f=!1;e.layers.forEach((a,d)=>{n(a.style,`layer[${d}].style`);const l=a.content;if(l==null||typeof l!="object"){t.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYER_CONTENT_MISSING"),message:`Source[${r}] (text) layer[${d}] must have content.`,severity:"error"});return}const p=l.kind;if(p!=="literal"&&p!=="expr"){t.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYER_CONTENT_KIND_INVALID"),message:`Source[${r}] (text) layer[${d}] content.kind must be "literal" or "expr" (received: ${String(p)}).`,severity:"error"});return}if(p==="literal"){const v=l.text;typeof v!="string"&&t.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYER_LITERAL_TEXT_INVALID"),message:`Source[${r}] (text) layer[${d}] literal text must be a string (received: ${typeof v}).`,severity:"error"})}if(p==="expr"){const v=l.expr,y=l.eval;(typeof v!="string"||v.trim()==="")&&t.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYER_EXPR_INVALID"),message:`Source[${r}] (text) layer[${d}] expr must be a non-empty string.`,severity:"error"}),y!==void 0&&y!=="once"&&y!=="frame"&&t.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYER_EVAL_INVALID"),message:`Source[${r}] (text) layer[${d}] content.eval must be "once" or "frame" if set (received: ${String(y)}).`,severity:"error"}),(y??"frame")==="frame"&&(f=!0)}}),f&&((s=e.renderMode)===null||s===void 0?void 0:s.kind)==="image"&&t.push({code:(0,types_1.asDiagnosticCode)("TEXT_EXPR_FRAME_WITH_IMAGE_RENDER_MODE"),message:`Source[${r}] (text) has expr content with eval="frame" but renderMode.kind="image". The expression will not animate.`,severity:"warning"});const u=e.style;if(!u)return;u.fontSize!==void 0&&(!Number.isFinite(u.fontSize)||u.fontSize<=0)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_FONT_SIZE"),message:`Source[${r}] style.fontSize must be > 0 if set (received: ${u.fontSize}).`,severity:"error"});const c=(o=e.visual)===null||o===void 0?void 0:o.opacity;c!==void 0&&(!Number.isFinite(c)||c<0||c>1)&&t.push({code:(0,types_1.asDiagnosticCode)("INVALID_TEXT_OPACITY"),message:`Source[${r}] visual.opacity must be between 0.0 and 1.0 if set (received: ${c}).`,severity:"error"}),validatePlacement(e.placement,r,t,"TEXT_PLACEMENT")}m(validateTextSource,"validateTextSource");
|
|
1
|
+
"use strict";var _=Object.defineProperty;var m=(e,r)=>_(e,"name",{value:r,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateMosaicSources=validateMosaicSources;const types_1=require("@m0saic/types"),validateLavfiSource_1=require("./validateLavfiSource"),LOUD_GAIN_WARN=4;function validateMosaicSources(e,r={},i={}){const t=[];return e.forEach((s,o)=>{s.type==="media"?validateMediaSource(s,o,t,r):s.type==="mosaic"?validateMosaicSource(s,o,t,r):s.type==="text"?validateTextSource(s,o,t,r):s.type==="lavfi"?((0,validateLavfiSource_1.validateLavfiSource)(s,o,t),validateMaskAgainstManifest(s.mask,o,t,r),validateEffects(s.effects,o,t)):(0,types_1.isMosaicDataSource)(s)?validateDataSource(s,o,t):s.type==="ref"||(s.type==="template_invocation"?i.allowTemplateInvocation?validateTemplateInvocationSource(s,o,t):t.push({code:(0,types_1.asDiagnosticCode)("UNRESOLVED_TEMPLATE_INVOCATION"),message:`Source[${o}] is a template_invocation but the document was passed to the engine-strict source validator. Run resolveMosaicx first or use validateMosaicXDocument for source-form (.mosaicx) docs.`,severity:"error"}):t.push({code:(0,types_1.asDiagnosticCode)("UNKNOWN_SOURCE_TYPE"),message:`Source[${o}] has unknown type "${s.type}".`,severity:"error"}))}),validateDataSourcePartitioning(e,t),t}m(validateMosaicSources,"validateMosaicSources");function validateTemplateInvocationSource(e,r,i){const t=e.templateId;(typeof t!="string"||t.length===0||!(0,types_1.isTemplateId)(t))&&i.push({code:(0,types_1.asDiagnosticCode)("MOSAICX_INVOCATION_MISSING_TEMPLATE_ID"),message:`Source[${r}] (template_invocation) is missing templateId or it isn't a valid TemplateId; received: ${JSON.stringify(t)}.`,severity:"error"}),e.props===void 0&&i.push({code:(0,types_1.asDiagnosticCode)("MOSAICX_INVOCATION_MISSING_PROPS"),message:`Source[${r}] (template_invocation) is missing required field "props" (use empty {} for templates with no required props).`,severity:"error"})}m(validateTemplateInvocationSource,"validateTemplateInvocationSource");function validateDataSource(e,r,i){const t=e.variables;(t==null||typeof t!="object"||Array.isArray(t))&&i.push({code:(0,types_1.asDiagnosticCode)("DATA_SOURCE_VARIABLES_MALFORMED"),message:`Source[${r}] (data) must have a non-null object "variables" (received: ${t===null?"null":Array.isArray(t)?"array":typeof t}).`,severity:"error"}),e.alias!==void 0&&!(0,types_1.isAliasId)(e.alias)&&i.push({code:(0,types_1.asDiagnosticCode)("DATA_SOURCE_ALIAS_INVALID"),message:`Source[${r}] (data) alias must match STRICT_IDENTIFIER_PATTERN (letter/_/alphanumeric, max 64 chars); received: ${JSON.stringify(e.alias)}.`,severity:"error"})}m(validateDataSource,"validateDataSource");function validateDataSourcePartitioning(e,r){const i=[];if(e.forEach((t,s)=>{(0,types_1.isMosaicDataSource)(t)&&i.push(s)}),i.length>1){const t=new Map;for(const s of i){const o=e[s].alias;if(o===void 0)continue;const n=o,f=t.get(n);f!==void 0?r.push({code:(0,types_1.asDiagnosticCode)("MOSAIC_ALIAS_COLLISION"),message:`sources[${s}] (data) declares alias ${JSON.stringify(n)} already used by sources[${f}]. Aliases must be unique within a step.`,severity:"error"}):t.set(n,s)}}}m(validateDataSourcePartitioning,"validateDataSourcePartitioning");function validateMaskAgainstManifest(e,r,i,t){if(e==null)return;if(e.kind==="inline-mask"){const n=m(u=>{i.push({code:(0,types_1.asDiagnosticCode)("MASK_INLINE_INVALID"),message:`Source[${r}] inline-mask ${u}`,severity:"error"})},"bad"),f=m((u,c)=>{if(u===void 0)return!0;if(!Array.isArray(u)||u.length===0)return n(`${c} must be a non-empty array of { d, width }.`),!1;for(const a of u){const d=a;if(d==null||typeof d.d!="string"||d.d.trim()===""||typeof d.width!="number"||!Number.isFinite(d.width)||d.width<=0)return n(`${c} entries need a non-empty d and a positive width.`),!1}return!0},"validStrokes");if(f(e.strokes,"strokes"),e.parts!==void 0)if(!Array.isArray(e.parts)||e.parts.length===0)n("parts must be a non-empty array.");else for(const u of e.parts){const c=u?.translate;if(!c||typeof c.x!="number"||!Number.isFinite(c.x)||typeof c.y!="number"||!Number.isFinite(c.y)){n("parts entries need a finite { translate: { x, y } }.");break}if(!f(u.strokes,"parts[].strokes"))break;const a=u?.clip;if(a!==void 0&&(typeof a?.x!="number"||!Number.isFinite(a.x)||typeof a.y!="number"||!Number.isFinite(a.y)||typeof a.width!="number"||!Number.isFinite(a.width)||a.width<=0||typeof a.height!="number"||!Number.isFinite(a.height)||a.height<=0)){n("parts[].clip needs finite { x, y } and positive { width, height }.");break}}e.featherPx!==void 0&&(typeof e.featherPx!="number"||!Number.isFinite(e.featherPx)||e.featherPx<0)&&n("featherPx must be a finite number >= 0 (design px).");return}if(e.kind!=="alpha-image")return;const s=e.assetId;if(typeof s!="string"||s.length===0){i.push({code:(0,types_1.asDiagnosticCode)("MASK_ASSETID_EMPTY"),message:`Source[${r}] alpha-image mask has empty assetId.`,severity:"error"});return}const o=t[s];if(o==null){i.push({code:(0,types_1.asDiagnosticCode)("MASK_ASSETID_UNKNOWN"),message:`Source[${r}] alpha-image mask references unknown assetId "${s}".`,severity:"error"});return}o.kind!=="file"&&i.push({code:(0,types_1.asDiagnosticCode)("MASK_ASSET_KIND_INVALID"),message:`Source[${r}] alpha-image mask must reference a file asset (assetId="${s}" is kind="${o.kind}").`,severity:"error"})}m(validateMaskAgainstManifest,"validateMaskAgainstManifest");function validateEffects(e,r,i){if(e==null||typeof e!="object")return;const t=e,s=m(o=>typeof o=="number"&&Number.isFinite(o),"isFiniteNumber");if(t.rotate!==void 0&&(typeof t.rotate!="number"||!Number.isFinite(t.rotate))&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_ROTATE"),message:`Source[${r}] effects.rotate must be a finite number (degrees) if set (received: ${String(t.rotate)}).`,severity:"error"}),t.blur!==void 0)if(typeof t.blur=="number")(!Number.isFinite(t.blur)||t.blur<0)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_BLUR"),message:`Source[${r}] effects.blur must be a finite number >= 0 (gaussian sigma in px) if set (received: ${String(t.blur)}).`,severity:"error"});else if(t.blur==null||typeof t.blur!="object"||Array.isArray(t.blur))i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_BLUR"),message:`Source[${r}] effects.blur must be a number or an object { sigma, backdrop? } if set.`,severity:"error"});else{const o=t.blur;(!s(o.sigma)||o.sigma<0)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_BLUR"),message:`Source[${r}] effects.blur.sigma is required in object form and must be a finite number >= 0 (received: ${String(o.sigma)}).`,severity:"error"}),o.backdrop!==void 0&&typeof o.backdrop!="boolean"&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_BLUR"),message:`Source[${r}] effects.blur.backdrop must be a boolean if set (received: ${String(o.backdrop)}).`,severity:"error"})}for(const o of["fadeInMs","fadeOutMs"]){const n=t[o];n!==void 0&&(typeof n!="number"||!Number.isFinite(n)||n<0)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_FADE"),message:`Source[${r}] effects.${o} must be a finite number >= 0 (milliseconds) if set (received: ${String(n)}).`,severity:"error"})}if(t.noise!==void 0)if(t.noise==null||typeof t.noise!="object"||Array.isArray(t.noise))i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_NOISE"),message:`Source[${r}] effects.noise must be an object { amount, seed } if set.`,severity:"error"});else{const o=t.noise;(!s(o.amount)||o.amount<0||o.amount>100)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_NOISE"),message:`Source[${r}] effects.noise.amount must be a finite number in [0, 100] (received: ${String(o.amount)}).`,severity:"error"}),s(o.seed)||i.push({code:(0,types_1.asDiagnosticCode)("EFFECT_NOISE_SEED_REQUIRED"),message:`Source[${r}] effects.noise.seed is required and must be a finite number \u2014 determinism demands an explicit seed (same seed = same grain).`,severity:"error"})}if(t.pixelize!==void 0&&(!s(t.pixelize)||t.pixelize<0)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_PIXELIZE"),message:`Source[${r}] effects.pixelize must be a finite number >= 0 (block px) if set (received: ${String(t.pixelize)}).`,severity:"error"}),t.chromaKey!==void 0)if(t.chromaKey==null||typeof t.chromaKey!="object"||Array.isArray(t.chromaKey))i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_CHROMAKEY"),message:`Source[${r}] effects.chromaKey must be an object { color, similarity?, blend?, despill? } if set.`,severity:"error"});else{const o=t.chromaKey;(typeof o.color!="string"||o.color.trim()==="")&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_CHROMAKEY"),message:`Source[${r}] effects.chromaKey.color is required and must be a non-empty color string (e.g. "#00ff00").`,severity:"error"});for(const n of["similarity","blend"]){const f=o[n];f!==void 0&&(!s(f)||f<0||f>1)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_CHROMAKEY"),message:`Source[${r}] effects.chromaKey.${n} must be a finite number in [0, 1] if set (received: ${String(f)}).`,severity:"error"})}o.despill!==void 0&&typeof o.despill!="boolean"&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_CHROMAKEY"),message:`Source[${r}] effects.chromaKey.despill must be a boolean if set (received: ${String(o.despill)}).`,severity:"error"})}if(t.grade!==void 0)if(t.grade==null||typeof t.grade!="object"||Array.isArray(t.grade))i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_GRADE"),message:`Source[${r}] effects.grade must be an object if set (received: ${Array.isArray(t.grade)?"array":typeof t.grade}).`,severity:"error"});else{const o=t.grade,n={brightness:[-1,1],contrast:[0,2],saturation:[0,3],gamma:[.1,10]};for(const[f,[u,c]]of Object.entries(n)){const a=o[f];a!==void 0&&(typeof a!="number"||!Number.isFinite(a)||a<u||a>c)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_EFFECT_GRADE"),message:`Source[${r}] effects.grade.${f} must be a finite number in [${u}, ${c}] if set (received: ${String(a)}).`,severity:"error"})}}}m(validateEffects,"validateEffects");function validateFrac(e,r,i,t,s){return!Number.isFinite(e)||e<0||e>=.5?(t.push({code:(0,types_1.asDiagnosticCode)(`${s}_INVALID_${r.toUpperCase().replace(/\./g,"_")}`),message:`Source[${i}] placement.${r} must be a finite number in [0, 0.49] if set (received: ${e}).`,severity:"error"}),!1):!0}m(validateFrac,"validateFrac");function validateBoxFrac(e,r,i,t,s){if(e!=null){if(typeof e=="number"){validateFrac(e,r,i,t,s);return}e.x!==void 0&&validateFrac(e.x,`${r}.x`,i,t,s),e.y!==void 0&&validateFrac(e.y,`${r}.y`,i,t,s),e.top!==void 0&&validateFrac(e.top,`${r}.top`,i,t,s),e.right!==void 0&&validateFrac(e.right,`${r}.right`,i,t,s),e.bottom!==void 0&&validateFrac(e.bottom,`${r}.bottom`,i,t,s),e.left!==void 0&&validateFrac(e.left,`${r}.left`,i,t,s)}}m(validateBoxFrac,"validateBoxFrac");function validateFocus(e,r,i,t,s){e!==void 0&&(typeof e!="number"||!Number.isFinite(e)||e<0||e>1)&&t.push({code:(0,types_1.asDiagnosticCode)(`${s}_INVALID_${r.toUpperCase()}`),message:`Source[${i}] placement.${r} must be a finite number in [0, 1] if set (received: ${String(e)}).`,severity:"error"})}m(validateFocus,"validateFocus");function validateSourceRect(e,r,i,t,s){if(e===void 0)return;if(!s){i.push({code:(0,types_1.asDiagnosticCode)(`${t}_SOURCERECT_UNSUPPORTED`),message:`Source[${r}] placement.sourceRect is only supported on media sources.`,severity:"error"});return}const o=m(u=>{i.push({code:(0,types_1.asDiagnosticCode)(`${t}_INVALID_SOURCERECT`),message:`Source[${r}] placement.sourceRect ${u}`,severity:"error"})},"fail");if(typeof e!="object"||e===null||Array.isArray(e)){o(`must be an { x, y, w, h } object in source px (received: ${String(e)}).`);return}const n=e,f=m(u=>typeof u=="number"&&Number.isFinite(u),"finite");(!f(n.x)||n.x<0||!f(n.y)||n.y<0)&&o("x/y must be finite numbers >= 0 (source px)."),(!f(n.w)||n.w<1||!f(n.h)||n.h<1)&&o("w/h must be finite numbers >= 1 (source px).")}m(validateSourceRect,"validateSourceRect");function validatePlacement(e,r,i,t,s){if(!e)return;validateSourceRect(e.sourceRect,r,i,t,s?.allowSourceRect===!0);const o=e.fit;o!==void 0&&o!=="contain"&&o!=="cover"&&i.push({code:(0,types_1.asDiagnosticCode)(`${t}_INVALID_FIT`),message:`Source[${r}] placement.fit must be "contain" or "cover" if set (received: ${o}).`,severity:"error"}),validateBoxFrac(e.inset,"inset",r,i,t),o==="cover"?(e.padding!=null&&i.push({code:(0,types_1.asDiagnosticCode)(`${t}_COVER_PADDING`),message:`Source[${r}] placement.fit="cover" forbids padding.`,severity:"error"}),validateFocus(e.focusX,"focusX",r,i,t),validateFocus(e.focusY,"focusY",r,i,t)):(validateBoxFrac(e.padding,"padding",r,i,t),(e.focusX!==void 0||e.focusY!==void 0)&&i.push({code:(0,types_1.asDiagnosticCode)(`${t}_FOCUS_REQUIRES_COVER`),message:`Source[${r}] placement.focusX/focusY require placement.fit="cover" (contain never crops).`,severity:"error"}))}m(validatePlacement,"validatePlacement");function validateMediaSource(e,r,i,t){var s,o,n,f,u;const c=e.assetId;typeof c!="string"||c.trim()===""?i.push({code:(0,types_1.asDiagnosticCode)("MEDIA_ASSETID_EMPTY"),message:`Source[${r}] (media) must have a non-empty assetId.`,severity:"error"}):t[c]==null&&i.push({code:(0,types_1.asDiagnosticCode)("MEDIA_ASSETID_UNKNOWN"),message:`Source[${r}] (media) references unknown assetId "${c}".`,severity:"error"}),["video","image","audio"].includes(e.mediaType)||i.push({code:(0,types_1.asDiagnosticCode)("INVALID_MEDIA_TYPE"),message:`Source[${r}] has invalid mediaType "${e.mediaType}".`,severity:"error"}),validateMaskAgainstManifest(e.mask,r,i,t),validateEffects(e.effects,r,i),((s=e.effects)===null||s===void 0?void 0:s.chromaKey)!==void 0&&(e.mediaType==="image"||e.mediaType==="audio")&&i.push({code:(0,types_1.asDiagnosticCode)("EFFECT_CHROMAKEY_MEDIA_TYPE"),message:`Source[${r}] effects.chromaKey is only valid on video-like sources; this media source has mediaType "${e.mediaType}".`,severity:"error"});const a=(o=e.audio)===null||o===void 0?void 0:o.volume;a!==void 0&&(!Number.isFinite(a)||a<0)?i.push({code:(0,types_1.asDiagnosticCode)("INVALID_VOLUME"),message:`Source[${r}] audio.volume must be a finite gain >= 0 if set (1 = unchanged, 2 = double; received: ${a}).`,severity:"error"}):a!==void 0&&a>LOUD_GAIN_WARN&&i.push({code:(0,types_1.asDiagnosticCode)("LOUD_VOLUME"),message:`Source[${r}] audio.volume ${a} amplifies well past unity and will almost certainly clip \u2014 volume is a GAIN factor (1 = unchanged), not a percentage.`,severity:"warning"});const d=(n=e.playback)===null||n===void 0?void 0:n.playSpeed;d!==void 0&&(!Number.isFinite(d)||d<=0)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_PLAY_SPEED"),message:`Source[${r}] playback.playSpeed must be > 0 if set (received: ${d}).`,severity:"error"});const l=(f=e.visual)===null||f===void 0?void 0:f.opacity;l!==void 0&&(!Number.isFinite(l)||l<0||l>1)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_OPACITY"),message:`Source[${r}] visual.opacity must be between 0.0 and 1.0 if set (received: ${l}).`,severity:"error"}),validatePlacement(e.placement,r,i,"MEDIA_PLACEMENT",{allowSourceRect:!0}),e.mediaType==="image"&&!((u=e.audio)===null||u===void 0)&&u.enabled&&i.push({code:(0,types_1.asDiagnosticCode)("IMAGE_HAS_AUDIO"),message:`Source[${r}] is an image but audioEnabled=true; audio will be ignored.`,severity:"warning"})}m(validateMediaSource,"validateMediaSource");function validateMosaicSource(e,r,i,t){var s,o,n;validateMaskAgainstManifest(e.mask,r,i,t),validateEffects(e.effects,r,i),(!e.ref||e.ref.trim()==="")&&i.push({code:(0,types_1.asDiagnosticCode)("MOSAIC_REF_EMPTY"),message:`Source[${r}] (mosaic) must have a non-empty mosaic reference.`,severity:"error"});const f=(s=e.audio)===null||s===void 0?void 0:s.volume;f!==void 0&&(!Number.isFinite(f)||f<0)?i.push({code:(0,types_1.asDiagnosticCode)("INVALID_MOSAIC_VOLUME"),message:`Source[${r}] audio.volume must be a finite gain >= 0 if set (1 = unchanged, 2 = double; received: ${f}).`,severity:"error"}):f!==void 0&&f>LOUD_GAIN_WARN&&i.push({code:(0,types_1.asDiagnosticCode)("LOUD_VOLUME"),message:`Source[${r}] audio.volume ${f} amplifies well past unity and will almost certainly clip \u2014 volume is a GAIN factor (1 = unchanged), not a percentage.`,severity:"warning"});const u=(o=e.playback)===null||o===void 0?void 0:o.playSpeed;u!==void 0&&(!Number.isFinite(u)||u<=0)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_MOSAIC_PLAY_SPEED"),message:`Source[${r}] playback.playSpeed must be > 0 if set (received: ${u}).`,severity:"error"});const c=(n=e.visual)===null||n===void 0?void 0:n.opacity;c!==void 0&&(!Number.isFinite(c)||c<0||c>1)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_MOSAIC_OPACITY"),message:`Source[${r}] visual.opacity must be between 0.0 and 1.0 if set (received: ${c}).`,severity:"error"}),validatePlacement(e.placement,r,i,"MOSAIC_PLACEMENT")}m(validateMosaicSource,"validateMosaicSource");function validateTextSource(e,r,i,t){var s,o;if(validateMaskAgainstManifest(e.mask,r,i,t),validateEffects(e.effects,r,i),!Array.isArray(e.layers)){i.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYERS_EMPTY"),message:`Source[${r}] (text) must have a layers[] array.`,severity:"error"});return}if(e.layers.length===0){i.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYERS_EMPTY"),message:`Source[${r}] (text) has no layers \u2014 it draws nothing (an empty handle for a bound prop).`,severity:"warning"});return}if(e.renderMode!=null){const a=e.renderMode.kind;if(a!=="image"&&a!=="video")i.push({code:(0,types_1.asDiagnosticCode)("TEXT_RENDER_MODE_INVALID"),message:`Source[${r}] (text) renderMode.kind must be "image" or "video" (received: ${String(a)}).`,severity:"error"});else if(a==="video"){const d=e.renderMode.durationMs;d!==void 0&&(!Number.isFinite(d)||d<=0)&&i.push({code:(0,types_1.asDiagnosticCode)("TEXT_RENDER_MODE_DURATION_INVALID"),message:`Source[${r}] (text) renderMode.durationMs must be a finite number > 0 if set (received: ${d}).`,severity:"error"})}}if(e.rasterizer!=null){const a=e.rasterizer;a!=="drawtext"&&a!=="svg"&&i.push({code:(0,types_1.asDiagnosticCode)("TEXT_RASTERIZER_INVALID"),message:`Source[${r}] (text) rasterizer must be "drawtext" or "svg" (received: ${String(a)}).`,severity:"error"})}const n=m((a,d)=>{if(a==null)return;const l=a.fontWeight;l!==void 0&&(l==="normal"||l==="bold"||typeof l=="number"&&Number.isFinite(l)&&l>=1&&l<=1e3||i.push({code:(0,types_1.asDiagnosticCode)("TEXT_FONT_WEIGHT_INVALID"),message:`Source[${r}] (text) ${d} fontWeight must be a number 1\u20131000 or "normal"/"bold" (received: ${String(l)}).`,severity:"error"}));const p=a.fontStyle;p!==void 0&&p!=="normal"&&p!=="italic"&&i.push({code:(0,types_1.asDiagnosticCode)("TEXT_FONT_STYLE_INVALID"),message:`Source[${r}] (text) ${d} fontStyle must be "normal" or "italic" (received: ${String(p)}).`,severity:"error"})},"validateTextStyle");n(e.style,"style");let f=!1;e.layers.forEach((a,d)=>{n(a.style,`layer[${d}].style`);const l=a.content;if(l==null||typeof l!="object"){i.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYER_CONTENT_MISSING"),message:`Source[${r}] (text) layer[${d}] must have content.`,severity:"error"});return}const p=l.kind;if(p!=="literal"&&p!=="expr"){i.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYER_CONTENT_KIND_INVALID"),message:`Source[${r}] (text) layer[${d}] content.kind must be "literal" or "expr" (received: ${String(p)}).`,severity:"error"});return}if(p==="literal"){const v=l.text;typeof v!="string"&&i.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYER_LITERAL_TEXT_INVALID"),message:`Source[${r}] (text) layer[${d}] literal text must be a string (received: ${typeof v}).`,severity:"error"})}if(p==="expr"){const v=l.expr,y=l.eval;(typeof v!="string"||v.trim()==="")&&i.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYER_EXPR_INVALID"),message:`Source[${r}] (text) layer[${d}] expr must be a non-empty string.`,severity:"error"}),y!==void 0&&y!=="once"&&y!=="frame"&&i.push({code:(0,types_1.asDiagnosticCode)("TEXT_LAYER_EVAL_INVALID"),message:`Source[${r}] (text) layer[${d}] content.eval must be "once" or "frame" if set (received: ${String(y)}).`,severity:"error"}),(y??"frame")==="frame"&&(f=!0)}}),f&&((s=e.renderMode)===null||s===void 0?void 0:s.kind)==="image"&&i.push({code:(0,types_1.asDiagnosticCode)("TEXT_EXPR_FRAME_WITH_IMAGE_RENDER_MODE"),message:`Source[${r}] (text) has expr content with eval="frame" but renderMode.kind="image". The expression will not animate.`,severity:"warning"});const u=e.style;if(!u)return;u.fontSize!==void 0&&(!Number.isFinite(u.fontSize)||u.fontSize<=0)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_FONT_SIZE"),message:`Source[${r}] style.fontSize must be > 0 if set (received: ${u.fontSize}).`,severity:"error"});const c=(o=e.visual)===null||o===void 0?void 0:o.opacity;c!==void 0&&(!Number.isFinite(c)||c<0||c>1)&&i.push({code:(0,types_1.asDiagnosticCode)("INVALID_TEXT_OPACITY"),message:`Source[${r}] visual.opacity must be between 0.0 and 1.0 if set (received: ${c}).`,severity:"error"}),validatePlacement(e.placement,r,i,"TEXT_PLACEMENT")}m(validateTextSource,"validateTextSource");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var c=Object.defineProperty;var s=(t,e)=>c(t,"name",{value:e,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.MOSAIC_PACKAGE_TIER_LABEL=exports.MOSAIC_PACKAGE_TIER_ORDER=void 0,exports.describeMosaicPackage=describeMosaicPackage,exports.sortMosaicPackages=sortMosaicPackages;const LANGUAGE_REPO="https://github.com/m0saic-dsl/m0",SUBSTRATE_REPO="https://github.com/m0saic-project/m0saic-packages",LANGUAGE=["dsl","dsl-stdlib","dsl-file-formats","dsl-visual-tests"],SUBSTRATE=["types","platform","text","template-utils","dictionary","dsl-react","templates","momo-types","knowledge"],COMMUNITY={"community-templates":"https://github.com/m0saic-project/m0saic-community-templates","community-m":"https://github.com/m0saic-project/community-m"},npmUrl=s(t=>`https://www.npmjs.com/package/${t}`,"npmUrl");function describeMosaicPackage(t){const e=t.startsWith("@m0saic/")?t.slice(8):t;return LANGUAGE.includes(e)?{name:t,tier:"language",published:!0,npmUrl:npmUrl(t),repoUrl:LANGUAGE_REPO}:SUBSTRATE.includes(e)?{name:t,tier:"substrate",published:!0,npmUrl:npmUrl(t),repoUrl:SUBSTRATE_REPO}:e in COMMUNITY?{name:t,tier:"community",published:!0,repoUrl:COMMUNITY[e]}:{name:t,tier:"product",published:!1}}s(describeMosaicPackage,"describeMosaicPackage"),exports.MOSAIC_PACKAGE_TIER_ORDER=["language","substrate","product","community"],exports.MOSAIC_PACKAGE_TIER_LABEL={language:"Language",substrate:"Substrate",product:"Product (bundled, not published)",community:"Community (seeded; updates from GitHub)"};function sortMosaicPackages(t){return[...t].sort((e,r)=>{const o=exports.MOSAIC_PACKAGE_TIER_ORDER.indexOf(describeMosaicPackage(e.name).tier),i=exports.MOSAIC_PACKAGE_TIER_ORDER.indexOf(describeMosaicPackage(r.name).tier);return o-i||e.name.localeCompare(r.name)})}s(sortMosaicPackages,"sortMosaicPackages");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var u=Object.defineProperty;var o=(e,t)=>u(e,"name",{value:t,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:o(function(){return t[n]},"get")}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var e=o(function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)},"ownKeys");return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&__createBinding(n,t,r[i]);return __setModuleDefault(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.getM0saicRoot=getM0saicRoot,exports.getToolchainsRoot=getToolchainsRoot,exports.getFfmpegToolchainsRoot=getFfmpegToolchainsRoot,exports.getGoldenFfmpegSlotDir=getGoldenFfmpegSlotDir,exports.getGoldenFfmpegBinaryPath=getGoldenFfmpegBinaryPath,exports.getGoldenFfprobeBinaryPath=getGoldenFfprobeBinaryPath,exports.getCustomFfmpegRoot=getCustomFfmpegRoot,exports.getMomoRoot=getMomoRoot,exports.getMomoModelsRoot=getMomoModelsRoot,exports.getMomoModelPath=getMomoModelPath,exports.getRenderFeedRoot=getRenderFeedRoot,exports.getRenderFeedMarkerPath=getRenderFeedMarkerPath,exports.getRenderFeedLogPath=getRenderFeedLogPath,exports.getCommunityMRoot=getCommunityMRoot,exports.ensureDir=ensureDir;const os=__importStar(require("os")),path=__importStar(require("path")),fs=__importStar(require("fs")),ENV_OVERRIDE="M0SAIC_ROOT",ROOT_DIRNAME="m0saic";function getM0saicRoot(){const e=process.env[ENV_OVERRIDE];return e&&e.trim()!==""?path.resolve(e.trim()):path.join(os.homedir(),ROOT_DIRNAME)}o(getM0saicRoot,"getM0saicRoot");function getToolchainsRoot(){return path.join(getM0saicRoot(),"toolchains")}o(getToolchainsRoot,"getToolchainsRoot");function getFfmpegToolchainsRoot(){return path.join(getToolchainsRoot(),"ffmpeg")}o(getFfmpegToolchainsRoot,"getFfmpegToolchainsRoot");function getGoldenFfmpegSlotDir(e,t){return path.join(getFfmpegToolchainsRoot(),`${e}-${t}`)}o(getGoldenFfmpegSlotDir,"getGoldenFfmpegSlotDir");function getGoldenFfmpegBinaryPath(e,t){const n=process.platform==="win32"?"ffmpeg.exe":"ffmpeg";return path.join(getGoldenFfmpegSlotDir(e,t),"bin",n)}o(getGoldenFfmpegBinaryPath,"getGoldenFfmpegBinaryPath");function getGoldenFfprobeBinaryPath(e,t){const n=process.platform==="win32"?"ffprobe.exe":"ffprobe";return path.join(getGoldenFfmpegSlotDir(e,t),"bin",n)}o(getGoldenFfprobeBinaryPath,"getGoldenFfprobeBinaryPath");function getCustomFfmpegRoot(){return path.join(getFfmpegToolchainsRoot(),"custom")}o(getCustomFfmpegRoot,"getCustomFfmpegRoot");function getMomoRoot(){return path.join(getM0saicRoot(),"momo")}o(getMomoRoot,"getMomoRoot");function getMomoModelsRoot(){return path.join(getMomoRoot(),"models")}o(getMomoModelsRoot,"getMomoModelsRoot");function getMomoModelPath(e){return path.join(getMomoModelsRoot(),e)}o(getMomoModelPath,"getMomoModelPath");function getRenderFeedRoot(){return path.join(getM0saicRoot(),"render")}o(getRenderFeedRoot,"getRenderFeedRoot");function getRenderFeedMarkerPath(){return path.join(getRenderFeedRoot(),"active.json")}o(getRenderFeedMarkerPath,"getRenderFeedMarkerPath");function getRenderFeedLogPath(){return path.join(getRenderFeedRoot(),"live.jsonl")}o(getRenderFeedLogPath,"getRenderFeedLogPath");function getCommunityMRoot(){return path.join(getM0saicRoot(),"community-m")}o(getCommunityMRoot,"getCommunityMRoot");function ensureDir(e){fs.mkdirSync(e,{recursive:!0})}o(ensureDir,"ensureDir");
|
|
1
|
+
"use strict";var u=Object.defineProperty;var o=(e,t)=>u(e,"name",{value:t,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||("get"in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:o(function(){return t[n]},"get")}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var e=o(function(t){return e=Object.getOwnPropertyNames||function(n){var r=[];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[r.length]=i);return r},e(t)},"ownKeys");return function(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var r=e(t),i=0;i<r.length;i++)r[i]!=="default"&&__createBinding(n,t,r[i]);return __setModuleDefault(n,t),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.getM0saicRoot=getM0saicRoot,exports.getToolchainsRoot=getToolchainsRoot,exports.getFfmpegToolchainsRoot=getFfmpegToolchainsRoot,exports.getGoldenFfmpegSlotDir=getGoldenFfmpegSlotDir,exports.getGoldenFfmpegBinaryPath=getGoldenFfmpegBinaryPath,exports.getGoldenFfprobeBinaryPath=getGoldenFfprobeBinaryPath,exports.getCustomFfmpegRoot=getCustomFfmpegRoot,exports.getMomoRoot=getMomoRoot,exports.getMomoModelsRoot=getMomoModelsRoot,exports.getMomoModelPath=getMomoModelPath,exports.getRenderFeedRoot=getRenderFeedRoot,exports.getRenderFeedMarkerPath=getRenderFeedMarkerPath,exports.getRenderFeedLogPath=getRenderFeedLogPath,exports.getCommunityMRoot=getCommunityMRoot,exports.ensureDir=ensureDir;const os=__importStar(require("os")),path=__importStar(require("path")),fs=__importStar(require("fs")),ENV_OVERRIDE="M0SAIC_ROOT",ROOT_DIRNAME="m0saic";function getM0saicRoot(){const e=process.env[ENV_OVERRIDE];return e&&e.trim()!==""?path.resolve(e.trim()):path.join(os.homedir(),ROOT_DIRNAME)}o(getM0saicRoot,"getM0saicRoot");function getToolchainsRoot(){return path.join(getM0saicRoot(),"toolchains")}o(getToolchainsRoot,"getToolchainsRoot");function getFfmpegToolchainsRoot(){return path.join(getToolchainsRoot(),"ffmpeg")}o(getFfmpegToolchainsRoot,"getFfmpegToolchainsRoot");function getGoldenFfmpegSlotDir(e,t="gpl"){return path.join(getFfmpegToolchainsRoot(),`${e}-${t}`)}o(getGoldenFfmpegSlotDir,"getGoldenFfmpegSlotDir");function getGoldenFfmpegBinaryPath(e,t="gpl"){const n=process.platform==="win32"?"ffmpeg.exe":"ffmpeg";return path.join(getGoldenFfmpegSlotDir(e,t),"bin",n)}o(getGoldenFfmpegBinaryPath,"getGoldenFfmpegBinaryPath");function getGoldenFfprobeBinaryPath(e,t="gpl"){const n=process.platform==="win32"?"ffprobe.exe":"ffprobe";return path.join(getGoldenFfmpegSlotDir(e,t),"bin",n)}o(getGoldenFfprobeBinaryPath,"getGoldenFfprobeBinaryPath");function getCustomFfmpegRoot(){return path.join(getFfmpegToolchainsRoot(),"custom")}o(getCustomFfmpegRoot,"getCustomFfmpegRoot");function getMomoRoot(){return path.join(getM0saicRoot(),"momo")}o(getMomoRoot,"getMomoRoot");function getMomoModelsRoot(){return path.join(getMomoRoot(),"models")}o(getMomoModelsRoot,"getMomoModelsRoot");function getMomoModelPath(e){return path.join(getMomoModelsRoot(),e)}o(getMomoModelPath,"getMomoModelPath");function getRenderFeedRoot(){return path.join(getM0saicRoot(),"render")}o(getRenderFeedRoot,"getRenderFeedRoot");function getRenderFeedMarkerPath(){return path.join(getRenderFeedRoot(),"active.json")}o(getRenderFeedMarkerPath,"getRenderFeedMarkerPath");function getRenderFeedLogPath(){return path.join(getRenderFeedRoot(),"live.jsonl")}o(getRenderFeedLogPath,"getRenderFeedLogPath");function getCommunityMRoot(){return path.join(getM0saicRoot(),"community-m")}o(getCommunityMRoot,"getCommunityMRoot");function ensureDir(e){fs.mkdirSync(e,{recursive:!0})}o(ensureDir,"ensureDir");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var m=Object.defineProperty;var u=(e,n)=>m(e,"name",{value:n,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.sanitizeInstallContext=sanitizeInstallContext,exports.checkAndEnqueueLifecycle=checkAndEnqueueLifecycle;const types_1=require("@m0saic/types"),hostFingerprint_1=require("./hostFingerprint"),outbox_1=require("./outbox"),renderRecord_1=require("./renderRecord"),settingsStore_1=require("./settingsStore");function sanitizeInstallContext(e){if(!e)return{};const n={};if((e.surface==="cli"||e.surface==="desktop")&&(n.surface=e.surface),(e.invocation==="npx"||e.invocation==="global")&&(n.invocation=e.invocation),typeof e.source=="string"){const o=e.source.trim().toLowerCase();types_1.MOSAIC_INSTALL_SOURCE_RE.test(o)&&(n.source=o)}return n}u(sanitizeInstallContext,"sanitizeInstallContext");function checkAndEnqueueLifecycle(e){var n;const o=(n=e.nowMs)!==null&&n!==void 0?n:Date.now(),c=(0,settingsStore_1.getEffectiveTelemetryMode)(e.env);if(c.mode==="ghost")return{enqueued:null};const t=(0,settingsStore_1.loadTelemetrySettings)(),s=t.lastSeenVersion===void 0,i=(0,renderRecord_1.versionMajorMinor)(t.lastSeenVersion),r=(0,renderRecord_1.versionMajorMinor)(e.currentVersion),d=!s&&i!==void 0&&r!==void 0&&i!==r;if(t.lastSeenVersion!==e.currentVersion&&(0,settingsStore_1.saveTelemetrySettings)({...t,lastSeenVersion:e.currentVersion}),!s&&!d)return{enqueued:null};if(!(0,types_1.isUpstreamAllowed)(c.mode))return{enqueued:null};if(!(0,types_1.isAnalyticsEmissionEnabled)(t.consent)||!t.consent.channels.lifecycle)return{enqueued:null};const f=(0,hostFingerprint_1.buildHostFingerprint)({mosaicVersion:e.currentVersion}),l={installId:t.consent.installId,timestamp:o,schemaVersion:1,host:f},a=s?{kind:"install_completed",...l,...sanitizeInstallContext(e.install)}:{kind:"update_completed",...l,fromVersion:i??"0.0",toVersion:r??"0.0"};return(0,outbox_1.enqueueOutbox)(a,{channel:"immediate",nowMs:o}),{enqueued:a.kind}}u(checkAndEnqueueLifecycle,"checkAndEnqueueLifecycle");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var A=Object.defineProperty;var
|
|
1
|
+
"use strict";var A=Object.defineProperty;var U=(n,a)=>A(n,"name",{value:a,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.UPSTREAM_FIELD_ANNOTATIONS=exports.UPSTREAM_ROLLUP_CADENCE=exports.UPSTREAM_NEVER_SENT=void 0,exports.buildUpstreamPreview=buildUpstreamPreview;const types_1=require("@m0saic/types"),outbox_1=require("./outbox"),recordStore_1=require("./recordStore"),redactor_1=require("./redactor"),rollup_1=require("./rollup"),sender_1=require("./sender"),settingsStore_1=require("./settingsStore"),usageStore_1=require("./usageStore");exports.UPSTREAM_NEVER_SENT=["file paths or file names","template source, props, or your media (built-in template ids are counted by name; community and third-party templates are counted, never named)","ffmpeg arguments or stderr","error messages or stack traces (only closed error classes + a hash)","your layout strings, canvas sizes or layout shapes \u2014 creating a Layout share link only adds one to a share count","personal identifiers \u2014 the anonymous install id is the only identifier"],exports.UPSTREAM_ROLLUP_CADENCE="One day summary per UTC day, plus a today-so-far update after each render or feature use; each update replaces the previous one for that day upstream, and the day summary replaces them all. Feature-use counts and built-in template opens ride the same rollups.",exports.UPSTREAM_FIELD_ANNOTATIONS={installId:"anonymous per-install UUID \u2014 the only persistent identifier",timestamp:"when this payload was assembled (epoch ms)",schemaVersion:"payload schema version",windowStart:"aggregation window start (epoch ms) \u2014 a UTC midnight",windowEnd:"aggregation window end (epoch ms) \u2014 a UTC midnight for day summaries; the time of the last render for today-so-far updates, which replace each other for the same day","host.os":"coarse OS bucket (macos / windows / linux / other)","host.arch":"CPU architecture string","host.mosaicVersion":"m0saic version, floored to major.minor","host.ffmpegVersion":"ffmpeg version, floored to major.minor","metrics.rendersStarted":"count of renders in the window","metrics.rendersByOutcome":"counts per closed outcome enum","metrics.rendersByKind":"document vs pipeline counts","metrics.ffmpegInvocations":"total ffmpeg subprocess count","metrics.renderDurationMsBuckets":"duration histogram [<1s, 1-5s, 5-30s, 30s-2m, 2-10m, 10-30m, 30m+] \u2014 counts only","metrics.distinctTemplatesUsed":"COUNT of distinct templates \u2014 ids never leave","metrics.planCommandCountBuckets":"per-render command-count histogram [1, 2-3, 4-9, 10-29, 30-99, 100+]","metrics.features":"feature-use counts for the window \u2014 closed key enum, counts only, never timestamps","metrics.templatesUsed":"built-in (first-party) template ids opened, with counts \u2014 community and third-party templates are counted under features, never named",errorClass:"closed error-class enum (error reports)",ffmpegExitCode:"raw ffmpeg exit code (error reports)",stackHash:"12-hex hash of error CODES for de-dup \u2014 never messages or frames",renderableKind:"document vs pipeline (error reports)"};function buildUpstreamPreview(n={}){var a,c,u;const r=(a=n.nowMs)!==null&&a!==void 0?a:Date.now(),e=(0,settingsStore_1.loadTelemetrySettings)(),v=(0,settingsStore_1.getEffectiveTelemetryMode)(n.env),m=(0,sender_1.resolveUpstreamEndpoint)({env:n.env,settings:e}),o=(0,rollup_1.utcDayStartMs)(r),i=(0,recordStore_1.listRenderRecordsInWindow)(0,r+1),p=(0,rollup_1.pendingRollupWindowStartMs)({...((c=e.upstream)===null||c===void 0?void 0:c.lastRollupDayUtc)!==void 0?{lastRollupDayUtc:e.upstream.lastRollupDayUtc}:{},...i.length>0?{earliestRecordMs:Date.parse(i[0].finishedAt)||0}:{}}),d=(0,usageStore_1.listUsageRecordsInWindow)(0,r+1),h=(0,rollup_1.pendingRollupWindowStartMs)({...((u=e.upstream)===null||u===void 0?void 0:u.lastRollupDayUtc)!==void 0?{lastRollupDayUtc:e.upstream.lastRollupDayUtc}:{},...d.length>0?{earliestRecordMs:d[0].atMs}:{}}),s=p===void 0?h:h===void 0?p:Math.min(p,h),l=s===void 0||s>=o?[]:i.filter(t=>{const E=Date.parse(t.finishedAt)||0;return E>=s&&E<o}),w=s===void 0||s>=o?[]:d.filter(t=>t.atMs>=s&&t.atMs<o),y={mosaicVersion:n.currentVersion},R=s===void 0||l.length===0&&w.length===0?null:(0,rollup_1.buildRollupEvent)({records:l,usage:w,windowStartMs:s,windowEndMs:o,consent:e.consent,host:(0,rollup_1.hostFromRecords)(l,y),timestampMs:r}),f=i.filter(t=>(Date.parse(t.finishedAt)||0)>=o),S=d.filter(t=>t.atMs>=o),M=f.length===0&&S.length===0?null:(0,rollup_1.buildRollupEvent)({records:f,usage:S,windowStartMs:o,windowEndMs:r,consent:e.consent,host:(0,rollup_1.hostFromRecords)(f,y),timestampMs:r}),g=[...i].reverse().find(t=>t.outcome!=="ok"&&t.outcome!=="cancelled"),_=g===void 0?null:(0,redactor_1.buildErrorReportFromRecord)(g,{...e.consent,channels:{...e.consent.channels,errorReports:!0}},(0,redactor_1.hostFromRecord)(g));return{generatedAt:new Date(r).toISOString(),upstreamAllowed:(0,types_1.isUpstreamAllowed)(v.mode),channels:e.consent.channels,endpoint:{configured:m.endpoint!==void 0,...m.source!==void 0?{source:m.source}:{}},nextRollup:R,...R!==null&&s!==void 0?{nextRollupWindow:{windowStart:s,windowEnd:o,records:l.length}}:{},todayRollup:M,sampleErrorReport:_,errorReportsEnabled:e.consent.channels.errorReports,queued:(0,outbox_1.listOutbox)(),sent:(0,outbox_1.listSent)(),neverSent:exports.UPSTREAM_NEVER_SENT,fieldAnnotations:exports.UPSTREAM_FIELD_ANNOTATIONS,rollupCadence:exports.UPSTREAM_ROLLUP_CADENCE}}U(buildUpstreamPreview,"buildUpstreamPreview");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var g=Object.defineProperty;var a=(e,t)=>g(e,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.CI_ENV=exports.TELEMETRY_EVENT_ID_HEADER=exports.TELEMETRY_INGEST_KEY_HEADER=exports.TELEMETRY_ENDPOINT_OFF=exports.TELEMETRY_INGEST_KEY_ENV=exports.TELEMETRY_ENDPOINT_ENV=void 0,exports.resolveUpstreamEndpoint=resolveUpstreamEndpoint,exports.resolveUpstreamIngestKey=resolveUpstreamIngestKey,exports.flushOutbox=flushOutbox,exports.runUpstreamMaintenance=runUpstreamMaintenance;const types_1=require("@m0saic/types"),lifecycle_1=require("./lifecycle"),outbox_1=require("./outbox"),rollup_1=require("./rollup"),settingsStore_1=require("./settingsStore"),upstreamDefaults_1=require("./upstreamDefaults");exports.TELEMETRY_ENDPOINT_ENV="M0SAIC_TELEMETRY_ENDPOINT",exports.TELEMETRY_INGEST_KEY_ENV="M0SAIC_TELEMETRY_INGEST_KEY",exports.TELEMETRY_ENDPOINT_OFF="off",exports.TELEMETRY_INGEST_KEY_HEADER="x-m0saic-ingest-key",exports.TELEMETRY_EVENT_ID_HEADER="x-m0saic-event-id",exports.CI_ENV="CI";const BACKOFF_BASE_MS=36e5,BACKOFF_MAX_MS=7*864e5,POST_TIMEOUT_MS=5e3,DROP_STATUSES=new Set([400,413,415,422]);function resolveUpstreamEndpoint(e={}){var t,n,r,s,u,o,i;const f=(n=((t=e.env)!==null&&t!==void 0?t:process.env)[exports.TELEMETRY_ENDPOINT_ENV])===null||n===void 0?void 0:n.trim();if(f!==void 0&&f!=="")return f.toLowerCase()===exports.TELEMETRY_ENDPOINT_OFF?{source:"off"}:{endpoint:f,source:"env"};const
|
|
1
|
+
"use strict";var g=Object.defineProperty;var a=(e,t)=>g(e,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.CI_ENV=exports.TELEMETRY_EVENT_ID_HEADER=exports.TELEMETRY_INGEST_KEY_HEADER=exports.TELEMETRY_ENDPOINT_OFF=exports.TELEMETRY_INGEST_KEY_ENV=exports.TELEMETRY_ENDPOINT_ENV=void 0,exports.resolveUpstreamEndpoint=resolveUpstreamEndpoint,exports.resolveUpstreamIngestKey=resolveUpstreamIngestKey,exports.flushOutbox=flushOutbox,exports.runUpstreamMaintenance=runUpstreamMaintenance;const types_1=require("@m0saic/types"),lifecycle_1=require("./lifecycle"),outbox_1=require("./outbox"),rollup_1=require("./rollup"),settingsStore_1=require("./settingsStore"),upstreamDefaults_1=require("./upstreamDefaults");exports.TELEMETRY_ENDPOINT_ENV="M0SAIC_TELEMETRY_ENDPOINT",exports.TELEMETRY_INGEST_KEY_ENV="M0SAIC_TELEMETRY_INGEST_KEY",exports.TELEMETRY_ENDPOINT_OFF="off",exports.TELEMETRY_INGEST_KEY_HEADER="x-m0saic-ingest-key",exports.TELEMETRY_EVENT_ID_HEADER="x-m0saic-event-id",exports.CI_ENV="CI";const BACKOFF_BASE_MS=36e5,BACKOFF_MAX_MS=7*864e5,POST_TIMEOUT_MS=5e3,DROP_STATUSES=new Set([400,413,415,422]);function resolveUpstreamEndpoint(e={}){var t,n,r,s,u,o,i;const f=(n=((t=e.env)!==null&&t!==void 0?t:process.env)[exports.TELEMETRY_ENDPOINT_ENV])===null||n===void 0?void 0:n.trim();if(f!==void 0&&f!=="")return f.toLowerCase()===exports.TELEMETRY_ENDPOINT_OFF?{source:"off"}:{endpoint:f,source:"env"};const l=(u=(s=(r=e.settings)===null||r===void 0?void 0:r.upstream)===null||s===void 0?void 0:s.endpoint)===null||u===void 0?void 0:u.trim();if(l!==void 0&&l!=="")return{endpoint:l,source:"settings"};const E=(i=(o=(0,upstreamDefaults_1.getUpstreamDefaults)())===null||o===void 0?void 0:o.endpoint)===null||i===void 0?void 0:i.trim();return E!==void 0&&E!==""?{endpoint:E,source:"default"}:{}}a(resolveUpstreamEndpoint,"resolveUpstreamEndpoint");function resolveUpstreamIngestKey(e={}){var t,n,r,s;const o=(n=((t=e.env)!==null&&t!==void 0?t:process.env)[exports.TELEMETRY_INGEST_KEY_ENV])===null||n===void 0?void 0:n.trim();if(o!==void 0&&o!=="")return o;const i=(s=(r=(0,upstreamDefaults_1.getUpstreamDefaults)())===null||r===void 0?void 0:r.ingestKey)===null||s===void 0?void 0:s.trim();return i!==void 0&&i!==""?i:void 0}a(resolveUpstreamIngestKey,"resolveUpstreamIngestKey");const isCi=a(e=>!!e[exports.CI_ENV],"isCi"),none=a((e,t)=>({attempted:0,sent:0,failed:0,skipped:e,rejected:0,reason:t}),"none");async function flushOutbox(e={}){var t,n,r,s,u;const o=(t=e.nowMs)!==null&&t!==void 0?t:Date.now(),i=(n=e.env)!==null&&n!==void 0?n:process.env,p=(0,settingsStore_1.getEffectiveTelemetryMode)(e.env);if(!(0,types_1.isUpstreamAllowed)(p.mode))return none((0,outbox_1.listOutbox)().length,"upstream-off");const f=(0,settingsStore_1.loadTelemetrySettings)(),l=resolveUpstreamEndpoint({env:e.env,settings:f}),E=(r=e.endpoint)!==null&&r!==void 0?r:l.endpoint;if(E===void 0)return none((0,outbox_1.listOutbox)().length,l.source==="off"?"endpoint-off":"dormant-no-endpoint");if(isCi(i)&&e.endpoint===void 0&&l.source!=="env")return none((0,outbox_1.listOutbox)().length,"ci-exempt");const m=(s=e.ingestKey)!==null&&s!==void 0?s:resolveUpstreamIngestKey({env:e.env}),O=(u=e.fetchImpl)!==null&&u!==void 0?u:fetch,R=Date.now();let M=0,x=0,N=0,v=0,y=0,D=!1;for(const d of(0,outbox_1.listOutbox)()){if(d.nextAttemptAtMs>o||D){v++;continue}if(e.deadlineMs!==void 0&&Date.now()-R>e.deadlineMs){v++;continue}M++;let c,I=!1;try{const _=new AbortController,S=setTimeout(()=>_.abort(),POST_TIMEOUT_MS);try{const T=await O(E,{method:"POST",headers:{"content-type":"application/json",[exports.TELEMETRY_EVENT_ID_HEADER]:d.id,...m!==void 0?{[exports.TELEMETRY_INGEST_KEY_HEADER]:m}:{}},body:JSON.stringify(d.payload),signal:_.signal});c=T.ok?T.status||200:T.status}finally{clearTimeout(S)}}catch{I=!0}if(c!==void 0&&c>=200&&c<300)(0,outbox_1.markSent)(d,o),x++;else if(c!==void 0&&DROP_STATUSES.has(c))(0,outbox_1.markSent)(d,o,{rejected:{status:c}}),y++;else{const _=d.attempts+1;(0,outbox_1.updateOutboxEntry)({...d,attempts:_,nextAttemptAtMs:o+Math.min(BACKOFF_BASE_MS*2**(_-1),BACKOFF_MAX_MS)}),N++,I&&(D=!0)}}return{attempted:M,sent:x,failed:N,skipped:v,rejected:y,endpoint:E}}a(flushOutbox,"flushOutbox");function runUpstreamMaintenance(e){const t={...e.nowMs!==void 0?{nowMs:e.nowMs}:{},...e.env!==void 0?{env:e.env}:{}};try{(0,lifecycle_1.checkAndEnqueueLifecycle)({currentVersion:e.currentVersion,...t,...e.install!==void 0?{install:e.install}:{}})}catch{}const n={...t,currentVersion:e.currentVersion};try{(0,rollup_1.maybeEnqueueDailyRollup)(n)}catch{}try{(0,rollup_1.maybeEnqueueTodayRollup)(n)}catch{}e.flush!==!1&&flushOutbox({...e.env!==void 0?{env:e.env}:{}}).catch(()=>{})}a(runUpstreamMaintenance,"runUpstreamMaintenance");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var d=Object.defineProperty;var a=(e,t)=>d(e,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.recordFeatureUsage=recordFeatureUsage;const types_1=require("@m0saic/types"),settingsStore_1=require("./settingsStore"),usageStore_1=require("./usageStore");function recordFeatureUsage(e){var t,r;try{if(!(0,types_1.isFeatureKeyShaped)(e.feature)||(0,settingsStore_1.getEffectiveTelemetryMode)(e.env).mode==="ghost")return null;const u=e.templateKind==="builtin"&&e.templateId!==void 0&&e.templateId.length<=types_1.MAX_TEMPLATE_ID_CHARS&&types_1.FIRST_PARTY_TEMPLATE_ID_RE.test(e.templateId),n={schemaVersion:types_1.TELEMETRY_USAGE_RECORD_SCHEMA_VERSION,atMs:(t=e.nowMs)!==null&&t!==void 0?t:Date.now(),surface:e.surface,feature:e.feature,...e.templateKind!==void 0?{templateKind:e.templateKind}:{},...u?{templateId:e.templateId}:{}};return((r=e.append)!==null&&r!==void 0?r:usageStore_1.appendUsageRecord)(n),n}catch{return null}}a(recordFeatureUsage,"recordFeatureUsage");
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
`,"utf8")}
|
|
3
|
-
`)){const n=s.trim();if(n!=="")try{const
|
|
1
|
+
"use strict";var l=Object.defineProperty;var o=(t,e)=>l(t,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(t,e,r,s){s===void 0&&(s=r);var n=Object.getOwnPropertyDescriptor(e,r);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:o(function(){return e[r]},"get")}),Object.defineProperty(t,s,n)}):(function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),__importStar=this&&this.__importStar||(function(){var t=o(function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(s[s.length]=n);return s},t(e)},"ownKeys");return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),n=0;n<s.length;n++)s[n]!=="default"&&__createBinding(r,e,s[n]);return __setModuleDefault(r,e),r}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.usageRecordFileForMs=usageRecordFileForMs,exports.appendUsageRecord=appendUsageRecord,exports.listUsageRecordsInWindow=listUsageRecordsInWindow,exports.countUsageRecords=countUsageRecords,exports.clearUsageRecords=clearUsageRecords,exports.tallyUsage=tallyUsage;const fs=__importStar(require("fs")),path=__importStar(require("path")),types_1=require("@m0saic/types"),m0saicRoot_1=require("../paths/m0saicRoot"),paths_1=require("./paths"),MONTH_FILE_RE=/^\d{4}-\d{2}\.jsonl$/;function usageRecordFileForMs(t){const e=new Date(t).toISOString();return path.join((0,paths_1.getTelemetryUsageDir)(),`${e.slice(0,7)}.jsonl`)}o(usageRecordFileForMs,"usageRecordFileForMs");function appendUsageRecord(t){(0,m0saicRoot_1.ensureDir)((0,paths_1.getTelemetryUsageDir)()),fs.appendFileSync(usageRecordFileForMs(t.atMs),`${JSON.stringify(t)}
|
|
2
|
+
`,"utf8")}o(appendUsageRecord,"appendUsageRecord");const isUsageLine=o(t=>{if(typeof t!="object"||t===null)return!1;const e=t;return e.schemaVersion===types_1.TELEMETRY_USAGE_RECORD_SCHEMA_VERSION&&typeof e.atMs=="number"&&(e.surface==="cli"||e.surface==="app")&&(0,types_1.isFeatureKeyShaped)(e.feature)},"isUsageLine"),listMonthFilesDesc=o(()=>{const t=(0,paths_1.getTelemetryUsageDir)();let e;try{e=fs.readdirSync(t)}catch{return[]}return e.filter(r=>MONTH_FILE_RE.test(r)).sort().reverse().map(r=>path.join(t,r))},"listMonthFilesDesc"),readMonthFile=o(t=>{let e;try{e=fs.readFileSync(t,"utf8")}catch{return[]}const r=[];for(const s of e.split(`
|
|
3
|
+
`)){const n=s.trim();if(n!=="")try{const a=JSON.parse(n);isUsageLine(a)&&r.push(a)}catch{}}return r},"readMonthFile");function listUsageRecordsInWindow(t,e){const r=[];for(const s of listMonthFilesDesc())for(const n of readMonthFile(s))n.atMs>=t&&n.atMs<e&&r.push(n);return r.sort((s,n)=>s.atMs-n.atMs),r}o(listUsageRecordsInWindow,"listUsageRecordsInWindow");function countUsageRecords(){let t=0;for(const e of listMonthFilesDesc())t+=readMonthFile(e).length;return t}o(countUsageRecords,"countUsageRecords");function clearUsageRecords(){let t=0;for(const e of listMonthFilesDesc())try{fs.unlinkSync(e),t++}catch{}return{filesDeleted:t}}o(clearUsageRecords,"clearUsageRecords");const bucketIndex=o((t,e)=>{for(let r=0;r<e.length;r++)if(t<e[r])return r;return e.length},"bucketIndex");function tallyUsage(t){var e,r;const s={},n={};let a=0;for(const i of t)s[i.feature]=((e=s[i.feature])!==null&&e!==void 0?e:0)+1,a++,i.templateKind==="builtin"&&i.templateId!==void 0&&i.templateId.length<=types_1.MAX_TEMPLATE_ID_CHARS&&types_1.FIRST_PARTY_TEMPLATE_ID_RE.test(i.templateId)&&(n[i.templateId]=((r=n[i.templateId])!==null&&r!==void 0?r:0)+1);const c=Object.entries(n).sort((i,u)=>u[1]-i[1]||i[0].localeCompare(u[0])).slice(0,types_1.MAX_TEMPLATES_USED);return{...a>0?{features:s}:{},...c.length>0?{templatesUsed:Object.fromEntries(c)}:{}}}o(tallyUsage,"tallyUsage");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var o=Object.defineProperty;var e=(t,r)=>o(t,"name",{value:r,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateTemplateRoles=exports.encodeTemplateKey=exports.resolveAllTemplatePreviews=exports.resolveTemplatePreview=exports.__resetHostFirstResolutionForTests=exports.resolveFromHost=exports.registeredHostFirstRepoRoots=exports.registerHostFirstRepoRoot=exports.originatesUnderRegisteredRoot=exports.isHostScopedRequest=exports.installHostFirstResolution=exports.TEMPLATE_REPO_DEP_ALLOWLIST=exports.resolveTemplateRepoEntry=exports.loadTemplateRepoFromPath=void 0;var loadTemplateRepoFromPath_1=require("./loadTemplateRepoFromPath");Object.defineProperty(exports,"loadTemplateRepoFromPath",{enumerable:!0,get:e(function(){return loadTemplateRepoFromPath_1.loadTemplateRepoFromPath},"get")}),Object.defineProperty(exports,"resolveTemplateRepoEntry",{enumerable:!0,get:e(function(){return loadTemplateRepoFromPath_1.resolveTemplateRepoEntry},"get")});var depAllowlist_1=require("./depAllowlist");Object.defineProperty(exports,"TEMPLATE_REPO_DEP_ALLOWLIST",{enumerable:!0,get:e(function(){return depAllowlist_1.TEMPLATE_REPO_DEP_ALLOWLIST},"get")});var hostFirstResolution_1=require("./hostFirstResolution");Object.defineProperty(exports,"installHostFirstResolution",{enumerable:!0,get:e(function(){return hostFirstResolution_1.installHostFirstResolution},"get")}),Object.defineProperty(exports,"isHostScopedRequest",{enumerable:!0,get:e(function(){return hostFirstResolution_1.isHostScopedRequest},"get")}),Object.defineProperty(exports,"originatesUnderRegisteredRoot",{enumerable:!0,get:e(function(){return hostFirstResolution_1.originatesUnderRegisteredRoot},"get")}),Object.defineProperty(exports,"registerHostFirstRepoRoot",{enumerable:!0,get:e(function(){return hostFirstResolution_1.registerHostFirstRepoRoot},"get")}),Object.defineProperty(exports,"registeredHostFirstRepoRoots",{enumerable:!0,get:e(function(){return hostFirstResolution_1.registeredHostFirstRepoRoots},"get")}),Object.defineProperty(exports,"resolveFromHost",{enumerable:!0,get:e(function(){return hostFirstResolution_1.resolveFromHost},"get")}),Object.defineProperty(exports,"__resetHostFirstResolutionForTests",{enumerable:!0,get:e(function(){return hostFirstResolution_1.__resetHostFirstResolutionForTests},"get")});var resolveTemplatePreview_1=require("./resolveTemplatePreview");Object.defineProperty(exports,"resolveTemplatePreview",{enumerable:!0,get:e(function(){return resolveTemplatePreview_1.resolveTemplatePreview},"get")}),Object.defineProperty(exports,"resolveAllTemplatePreviews",{enumerable:!0,get:e(function(){return resolveTemplatePreview_1.resolveAllTemplatePreviews},"get")}),Object.defineProperty(exports,"encodeTemplateKey",{enumerable:!0,get:e(function(){return resolveTemplatePreview_1.encodeTemplateKey},"get")});var validateTemplateRoles_1=require("./validateTemplateRoles");Object.defineProperty(exports,"validateTemplateRoles",{enumerable:!0,get:e(function(){return validateTemplateRoles_1.validateTemplateRoles},"get")});
|
|
1
|
+
"use strict";var o=Object.defineProperty;var e=(t,r)=>o(t,"name",{value:r,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.writeTemplateCatalog=exports.serializeTemplateCatalog=exports.collectTemplateCatalog=exports.validateTemplateRoles=exports.encodeTemplateKey=exports.resolveAllTemplatePreviews=exports.resolveTemplatePreview=exports.__resetHostFirstResolutionForTests=exports.resolveFromHost=exports.registeredHostFirstRepoRoots=exports.registerHostFirstRepoRoot=exports.originatesUnderRegisteredRoot=exports.isHostScopedRequest=exports.installHostFirstResolution=exports.TEMPLATE_REPO_DEP_ALLOWLIST=exports.resolveTemplateRepoEntry=exports.loadTemplateRepoFromPath=void 0;var loadTemplateRepoFromPath_1=require("./loadTemplateRepoFromPath");Object.defineProperty(exports,"loadTemplateRepoFromPath",{enumerable:!0,get:e(function(){return loadTemplateRepoFromPath_1.loadTemplateRepoFromPath},"get")}),Object.defineProperty(exports,"resolveTemplateRepoEntry",{enumerable:!0,get:e(function(){return loadTemplateRepoFromPath_1.resolveTemplateRepoEntry},"get")});var depAllowlist_1=require("./depAllowlist");Object.defineProperty(exports,"TEMPLATE_REPO_DEP_ALLOWLIST",{enumerable:!0,get:e(function(){return depAllowlist_1.TEMPLATE_REPO_DEP_ALLOWLIST},"get")});var hostFirstResolution_1=require("./hostFirstResolution");Object.defineProperty(exports,"installHostFirstResolution",{enumerable:!0,get:e(function(){return hostFirstResolution_1.installHostFirstResolution},"get")}),Object.defineProperty(exports,"isHostScopedRequest",{enumerable:!0,get:e(function(){return hostFirstResolution_1.isHostScopedRequest},"get")}),Object.defineProperty(exports,"originatesUnderRegisteredRoot",{enumerable:!0,get:e(function(){return hostFirstResolution_1.originatesUnderRegisteredRoot},"get")}),Object.defineProperty(exports,"registerHostFirstRepoRoot",{enumerable:!0,get:e(function(){return hostFirstResolution_1.registerHostFirstRepoRoot},"get")}),Object.defineProperty(exports,"registeredHostFirstRepoRoots",{enumerable:!0,get:e(function(){return hostFirstResolution_1.registeredHostFirstRepoRoots},"get")}),Object.defineProperty(exports,"resolveFromHost",{enumerable:!0,get:e(function(){return hostFirstResolution_1.resolveFromHost},"get")}),Object.defineProperty(exports,"__resetHostFirstResolutionForTests",{enumerable:!0,get:e(function(){return hostFirstResolution_1.__resetHostFirstResolutionForTests},"get")});var resolveTemplatePreview_1=require("./resolveTemplatePreview");Object.defineProperty(exports,"resolveTemplatePreview",{enumerable:!0,get:e(function(){return resolveTemplatePreview_1.resolveTemplatePreview},"get")}),Object.defineProperty(exports,"resolveAllTemplatePreviews",{enumerable:!0,get:e(function(){return resolveTemplatePreview_1.resolveAllTemplatePreviews},"get")}),Object.defineProperty(exports,"encodeTemplateKey",{enumerable:!0,get:e(function(){return resolveTemplatePreview_1.encodeTemplateKey},"get")});var validateTemplateRoles_1=require("./validateTemplateRoles");Object.defineProperty(exports,"validateTemplateRoles",{enumerable:!0,get:e(function(){return validateTemplateRoles_1.validateTemplateRoles},"get")});var templateCatalogSidecars_1=require("./templateCatalogSidecars");Object.defineProperty(exports,"collectTemplateCatalog",{enumerable:!0,get:e(function(){return templateCatalogSidecars_1.collectTemplateCatalog},"get")}),Object.defineProperty(exports,"serializeTemplateCatalog",{enumerable:!0,get:e(function(){return templateCatalogSidecars_1.serializeTemplateCatalog},"get")}),Object.defineProperty(exports,"writeTemplateCatalog",{enumerable:!0,get:e(function(){return templateCatalogSidecars_1.writeTemplateCatalog},"get")});
|