@warpgogol/werkstatt-shared 0.14.0 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -13
- package/README.uk.md +25 -15
- package/package.json +519 -762
- package/src/{share/agent → agent}/ard-catalog.ts +6 -1
- package/src/{share/agent → agent}/dns-aid.test.ts +2 -2
- package/src/{share/agent → agent}/manifest.ts +15 -1
- package/src/{share/agent → agent}/search.ts +6 -1
- package/src/{share → agent}/tests/api-catalog.test.ts +2 -2
- package/src/{share → agent}/tests/ard-catalog.test.ts +2 -2
- package/src/{share → agent}/tests/capability.test.ts +1 -1
- package/src/{share → agent}/tests/fleet-catalog.test.ts +1 -1
- package/src/{share → agent}/tests/knowledge.test.ts +2 -2
- package/src/{share → agent}/tests/manifest.test.ts +1 -1
- package/src/{share → agent}/tests/mcp-card.test.ts +2 -2
- package/src/agent/tests/omit-empty.test.ts +33 -0
- package/src/{share → agent}/tests/openapi.test.ts +2 -2
- package/src/{share → agent}/tests/proof.test.ts +1 -1
- package/src/{share → attribution}/material-credits.ts +4 -4
- package/src/{share → checks}/check-hints.ts +6 -1
- package/src/checks/index.ts +4 -1
- package/src/checks/lib/astro-site-url.ts +6 -1
- package/src/checks/lib/i18n.ts +14 -0
- package/src/checks/result-helpers.ts +22 -5
- package/src/checks/tests/remediation-auto-populate.test.ts +83 -0
- package/src/{share → client-scripts}/counter-utils.ts +6 -2
- package/src/{share/scripts → client-scripts}/external-link-qr.ts +11 -16
- package/src/{share/scripts → client-scripts}/external-links.ts +12 -1
- package/src/{share/scripts → client-scripts}/gsap-counter.ts +8 -3
- package/src/client-scripts/index.ts +35 -0
- package/src/{share/scripts → client-scripts}/inline-number-animation.ts +1 -1
- package/src/{share/scripts → client-scripts}/lenis.ts +6 -1
- package/src/{share/scripts → client-scripts}/lordicon.ts +6 -1
- package/src/{share/scripts → client-scripts}/orchestrator.ts +10 -1
- package/src/{share/scripts → client-scripts}/scheduler.ts +6 -1
- package/src/client-scripts/scroll-spy.ts +106 -0
- package/src/client-scripts/tests/external-link-qr.test.ts +8 -0
- package/src/client-scripts/tests/external-links.test.ts +25 -0
- package/src/client-scripts/tests/gsap-counter.test.ts +8 -0
- package/src/client-scripts/tests/gsap-mountain-journey.test.ts +8 -0
- package/src/client-scripts/tests/gsap-parallax.test.ts +8 -0
- package/src/client-scripts/tests/gsap-reveal.test.ts +8 -0
- package/src/client-scripts/tests/gsap-stagger.test.ts +8 -0
- package/src/client-scripts/tests/inline-number-animation.test.ts +8 -0
- package/src/client-scripts/tests/lenis.test.ts +8 -0
- package/src/client-scripts/tests/live-photos.test.ts +8 -0
- package/src/client-scripts/tests/lordicon.test.ts +8 -0
- package/src/client-scripts/tests/orchestrator.test.ts +47 -0
- package/src/client-scripts/tests/scheduler.test.ts +23 -0
- package/src/client-scripts/tests/scroll-spy.test.ts +204 -0
- package/src/{share/scripts → client-scripts/tests}/video-player.test.ts +51 -31
- package/src/component/contracts.ts +206 -0
- package/src/component/index.ts +11 -0
- package/src/{share → content}/content-reference.ts +3 -3
- package/src/{share/content → content}/entity-id.ts +6 -3
- package/src/content/index.ts +3 -0
- package/src/{share/content → content}/merge.ts +6 -1
- package/src/content/system-manifest.test.ts +107 -0
- package/src/content/system-manifest.ts +12 -94
- package/src/{share → content}/tests/resolve-field-path.test.ts +1 -1
- package/src/{share → content}/tests/substitute-deep.test.ts +1 -1
- package/src/content-discipline/index.ts +19 -0
- package/src/{share/content-discipline → content-discipline}/parsers.ts +2 -2
- package/src/{share/env.d.ts → env.d.ts} +6 -3
- package/src/fingerprint/canonical-json.ts +731 -0
- package/src/fingerprint/index.ts +12 -0
- package/src/fingerprint/primitives.ts +72 -0
- package/src/{share/i18n → i18n}/localization.ts +6 -2
- package/src/integration/adapters.ts +10 -71
- package/src/integration/dispatch.ts +1 -1
- package/src/integration/funnel.ts +6 -1
- package/src/integration/index.ts +101 -4
- package/src/integration/lagebild-destination-adapter.ts +108 -0
- package/src/integration/lagebild-ingress.ts +7 -12
- package/src/integration/orchestration.ts +11 -10
- package/src/integration/tests/deliver-event.test.ts +1 -1
- package/src/integration/tests/dispatch.test.ts +4 -4
- package/src/integration/tests/hub-runtime.test.ts +22 -14
- package/src/integration/vitest.config.ts +8 -0
- package/src/kernel/desired-state.ts +227 -0
- package/src/kernel/diagnostic.ts +289 -0
- package/src/kernel/fs-atomic.ts +131 -0
- package/src/kernel/index.ts +15 -0
- package/src/kernel/tests/fs-atomic.test.ts +150 -0
- package/src/kernel/tests/workspace-io.test.ts +187 -0
- package/src/kernel/types.ts +459 -0
- package/src/kernel/workspace-io.ts +248 -0
- package/src/{share → knowledge}/tests/claim.test.ts +1 -1
- package/src/{share → knowledge}/tests/derivation.test.ts +1 -1
- package/src/{share → knowledge}/tests/freshness.test.ts +1 -1
- package/src/{share → knowledge}/tests/ledger.test.ts +1 -1
- package/src/{share → knowledge}/tests/plan.test.ts +1 -1
- package/src/{share → knowledge}/tests/source.test.ts +1 -1
- package/src/legal/index.ts +15 -0
- package/src/{share/middleware → middleware}/access-protection.ts +8 -8
- package/src/{share → node}/dev-props-validator.ts +6 -1
- package/src/{share → node}/import-scan.ts +23 -3
- package/src/{share → node}/semantic/derived-prices-loader.ts +4 -2
- package/src/{share → node}/semantic/markdown-twin-provenance.ts +1 -1
- package/src/node/tests/derived-prices-loader.test.ts +59 -0
- package/src/node/tests/markdown-twin-provenance.test.ts +152 -0
- package/src/observability/env-resolver.ts +6 -1
- package/src/observability/index.ts +6 -1
- package/src/observability/otlp-converter.ts +6 -1
- package/src/observability/otlp-transport.ts +6 -1
- package/src/observability/pusher.ts +6 -1
- package/src/observability/redact.ts +6 -1
- package/src/observability/typed-refs.ts +6 -2
- package/src/observability/vitest.config.ts +1 -0
- package/src/{share → offers}/formula-eval.ts +3 -3
- package/src/{share → offers}/tests/formula-eval.test.ts +2 -2
- package/src/onboarding/index.ts +1 -0
- package/src/{share → onboarding}/tests/onboarding-yaml.test.ts +1 -1
- package/src/ontology/archetype-registry.ts +6 -1
- package/src/ontology/archetypes/index.json +33 -1
- package/src/ontology/archetypes/index.yaml +27 -1
- package/src/ontology/archetypes/sections/entity-grid.yaml +46 -0
- package/src/ontology/archetypes/sections/exit-diagram.yaml +43 -0
- package/src/ontology/biome-token-projection.ts +6 -1
- package/src/ontology/cosmic/index.ts +6 -1
- package/src/ontology/cosmic/moon-catalog.ts +6 -1
- package/src/ontology/cosmic/planet-catalog.ts +6 -1
- package/src/ontology/cosmic/star-catalog.ts +6 -1
- package/src/ontology/enums.ts +6 -1
- package/src/ontology/external-surfaces/index.ts +1 -1
- package/src/ontology/index.ts +6 -2
- package/src/ontology/manifest.ts +26 -4
- package/src/ontology/operations/artifact-store.ts +45 -0
- package/src/ontology/operations/dht.ts +98 -0
- package/src/ontology/operations/handoff.ts +92 -0
- package/src/ontology/operations/index.ts +187 -1
- package/src/ontology/operations/leitstand.ts +99 -0
- package/src/ontology/operations/materialization.ts +90 -0
- package/src/ontology/operations/mission.ts +111 -0
- package/src/ontology/operations/naming-policy.ts +132 -0
- package/src/ontology/operations/notausgang.ts +64 -0
- package/src/ontology/operations/release.ts +121 -0
- package/src/ontology/operations/sternsystem.ts +192 -0
- package/src/ontology/operations/werkstatt.ts +48 -0
- package/src/ontology/schemas/biome.ts +7 -2
- package/src/ontology/schemas/capability.ts +1 -1
- package/src/ontology/schemas/constellation.ts +6 -1
- package/src/ontology/schemas/index.ts +6 -2
- package/src/ontology/schemas/manifest-resolver.ts +6 -1
- package/src/ontology/schemas/page-entry.ts +9 -5
- package/src/ontology/schemas/system/growth.ts +6 -1
- package/src/ontology/schemas/system/manifest.ts +40 -1
- package/src/ontology/schemas/system/page-output.ts +7 -6
- package/src/ontology/schemas/system/tests/growth.test.ts +22 -0
- package/src/ontology/schemas/system/tests/integrations.test.ts +12 -0
- package/src/ontology/schemas/system/tests/manifest.test.ts +22 -0
- package/src/ontology/schemas/system/tests/page-output.test.ts +13 -0
- package/src/ontology/schemas/system/tests/release.test.ts +22 -0
- package/src/ontology/schemas/system/tests/text.test.ts +18 -0
- package/src/ontology/schemas/system/tests/verification.test.ts +12 -0
- package/src/ontology/schemas/system/text.ts +15 -0
- package/src/ontology/schemas/system.ts +6 -2
- package/src/ontology/schemas/tests/biome.test.ts +19 -0
- package/src/ontology/schemas/tests/capability.test.ts +22 -0
- package/src/ontology/schemas/tests/constellation.test.ts +22 -0
- package/src/ontology/schemas/tests/dns-records.test.ts +13 -0
- package/src/ontology/schemas/tests/manifest-resolver.test.ts +13 -0
- package/src/ontology/schemas/tests/page-entry.test.ts +22 -0
- package/src/ontology/schemas/tests/section-archetype.test.ts +12 -0
- package/src/ontology/schemas/tests/site-family.test.ts +18 -0
- package/src/ontology/schemas/tests/system.test.ts +20 -0
- package/src/ontology/shared-section-props/body-fragments.ts +2 -0
- package/src/ontology/tests/sternsystem-owner.test.ts +1 -1
- package/src/ontology/vitest.config.ts +1 -0
- package/src/{share → page}/page.ts +13 -9
- package/src/{share → page}/tests/dev-props-validator.test.ts +1 -1
- package/src/{share → page}/tests/hero-section-numbering-parity.test.ts +1 -1
- package/src/passport/index.ts +6 -1
- package/src/passport/key-rotate.ts +10 -2
- package/src/passport/schema.ts +6 -1
- package/src/passport/sign.ts +8 -3
- package/src/passport/vitest.config.ts +1 -0
- package/src/pbt/index.test.ts +95 -0
- package/src/pbt/index.ts +251 -0
- package/src/plugin/plugin-contract.ts +1 -1
- package/src/{share → policy}/entitlement.ts +24 -4
- package/src/{share → policy}/feature-policy.ts +8 -3
- package/src/{share → policy}/visibility.ts +7 -2
- package/src/redirects/redirects.ts +117 -0
- package/src/{share → redirects/tests}/redirects.test.ts +1 -1
- package/src/remediation/remediation-catalog.ts +316 -0
- package/src/{share/routes → routes}/template-filter.ts +1 -1
- package/src/{share → runtime}/runtime-context.ts +7 -2
- package/src/{share → runtime}/shared-context.ts +1 -1
- package/src/{share/schemas → schemas}/claims.ts +2 -2
- package/src/{share/schemas → schemas}/effects.ts +6 -1
- package/src/{share/schemas → schemas}/features.ts +1 -1
- package/src/{share/schemas → schemas}/index.ts +3 -3
- package/src/{share/schemas → schemas}/navigation.ts +6 -1
- package/src/{share/schemas → schemas}/page-base.ts +6 -2
- package/src/{share/schemas → schemas}/person.ts +1 -1
- package/src/{share/schemas → schemas}/standard-list-item.ts +1 -1
- package/src/schemas/tests/claim-records.test.ts +52 -0
- package/src/schemas/tests/claims.test.ts +23 -0
- package/src/schemas/tests/effects.test.ts +116 -0
- package/src/schemas/tests/features.test.ts +61 -0
- package/src/schemas/tests/horizontal-align.test.ts +16 -0
- package/src/schemas/tests/icon-color.test.ts +16 -0
- package/src/schemas/tests/live-photo.test.ts +40 -0
- package/src/schemas/tests/material-credit.test.ts +51 -0
- package/src/schemas/tests/media.test.ts +26 -0
- package/src/schemas/tests/navigation.test.ts +58 -0
- package/src/schemas/tests/page-base.test.ts +19 -0
- package/src/schemas/tests/participant.test.ts +26 -0
- package/src/schemas/tests/person.test.ts +12 -0
- package/src/schemas/tests/print.test.ts +30 -0
- package/src/schemas/tests/section-background.test.ts +31 -0
- package/src/schemas/tests/section-body.test.ts +16 -0
- package/src/schemas/tests/section-cards.test.ts +17 -0
- package/src/schemas/tests/section-cta.test.ts +41 -0
- package/src/schemas/tests/section-header.test.ts +31 -0
- package/src/schemas/tests/section-image.test.ts +24 -0
- package/src/schemas/tests/section-motion.test.ts +29 -0
- package/src/schemas/tests/section-shell.test.ts +42 -0
- package/src/schemas/tests/section-stats.test.ts +17 -0
- package/src/schemas/tests/site-background.test.ts +33 -0
- package/src/schemas/tests/standard-list-item.test.ts +16 -0
- package/src/{share → sections}/rfc0042-utils.ts +1 -1
- package/src/{share/semantic → semantic}/block-extractors/index.ts +20 -1
- package/src/{share/semantic → semantic}/business-projection.ts +95 -1
- package/src/semantic/canonical-uri.ts +54 -0
- package/src/{share/semantic → semantic}/extract.ts +100 -1
- package/src/semantic/fact-extraction.test.ts +47 -0
- package/src/semantic/fact-extraction.ts +46 -0
- package/src/semantic/freshness.ts +67 -0
- package/src/{share/semantic → semantic}/ids.ts +6 -1
- package/src/{share/semantic → semantic}/index.ts +9 -2
- package/src/{share/semantic → semantic}/jsonld/breadcrumb.ts +6 -2
- package/src/{share/semantic → semantic}/jsonld/context.ts +6 -2
- package/src/{share/semantic → semantic}/jsonld/faq.ts +6 -2
- package/src/{share/semantic → semantic}/jsonld/initiative.ts +6 -1
- package/src/{share/semantic → semantic}/jsonld/organization.ts +6 -1
- package/src/{share/semantic → semantic}/jsonld/person.ts +6 -2
- package/src/{share/semantic → semantic}/jsonld/service.ts +6 -2
- package/src/semantic/jsonld/shared.ts +36 -0
- package/src/semantic/jsonld/tests/article.test.ts +89 -0
- package/src/semantic/jsonld/tests/breadcrumb.test.ts +62 -0
- package/src/semantic/jsonld/tests/collection-list.test.ts +39 -0
- package/src/semantic/jsonld/tests/faq.test.ts +60 -0
- package/src/semantic/jsonld/tests/initiative.test.ts +56 -0
- package/src/semantic/jsonld/tests/organization.test.ts +123 -0
- package/src/semantic/jsonld/tests/person.test.ts +89 -0
- package/src/semantic/jsonld/tests/service.test.ts +65 -0
- package/src/semantic/jsonld/tests/shared.test.ts +41 -0
- package/src/semantic/jsonld/tests/video.test.ts +84 -0
- package/src/semantic/jsonld/tests/webpage.test.ts +93 -0
- package/src/semantic/jsonld/tests/website.test.ts +27 -0
- package/src/semantic/jsonld/types.ts +24 -0
- package/src/{share/semantic → semantic}/jsonld/webpage.ts +6 -1
- package/src/semantic/jsonld/website.ts +32 -0
- package/src/{share/semantic → semantic}/jsonld.ts +6 -1
- package/src/{share/semantic → semantic}/llms.ts +41 -3
- package/src/{share/semantic → semantic}/models.ts +27 -38
- package/src/{share/semantic → semantic}/organization-profile.ts +3 -0
- package/src/{share/semantic → semantic}/page-builders/markdown-page.ts +6 -3
- package/src/{share/semantic → semantic}/page-utils.ts +6 -3
- package/src/semantic/tests/ai.test.ts +55 -0
- package/src/semantic/tests/block-extraction.test.ts +34 -0
- package/src/{share/tests/breadcrumbs.test.ts → semantic/tests/breadcrumbs-0229.test.ts} +1 -1
- package/src/semantic/tests/breadcrumbs.test.ts +127 -0
- package/src/{share → semantic}/tests/build-page-price-markers.test.ts +2 -2
- package/src/semantic/tests/build-page.test.ts +122 -0
- package/src/semantic/tests/business-projection.test.ts +367 -0
- package/src/semantic/tests/canonical-uri.test.ts +56 -0
- package/src/semantic/tests/extract.test.ts +209 -0
- package/src/semantic/tests/feed.test.ts +113 -0
- package/src/semantic/tests/freshness.pbt.test.ts +108 -0
- package/src/semantic/tests/helpers.ts +32 -0
- package/src/semantic/tests/ids.test.ts +118 -0
- package/src/{share/tests/image-sitemap.test.ts → semantic/tests/image-sitemap-0150.test.ts} +1 -1
- package/src/semantic/tests/image-sitemap.test.ts +109 -0
- package/src/{share → semantic}/tests/jsonld-service.test.ts +2 -2
- package/src/{share → semantic}/tests/jsonld-video.test.ts +3 -3
- package/src/{share → semantic}/tests/jsonld-webpage.test.ts +3 -3
- package/src/semantic/tests/jsonld.test.ts +61 -0
- package/src/{share → semantic}/tests/llms-0789.test.ts +2 -2
- package/src/semantic/tests/llms-policy.test.ts +60 -0
- package/src/semantic/tests/llms.test.ts +164 -0
- package/src/semantic/tests/markdown-hygiene.test.ts +72 -0
- package/src/semantic/tests/markdown-page.test.ts +97 -0
- package/src/{share → semantic}/tests/organization-jsonld.test.ts +3 -3
- package/src/semantic/tests/organization-profile.test.ts +107 -0
- package/src/{share/tests/output-projection.test.ts → semantic/tests/output-projection-0143.test.ts} +1 -1
- package/src/semantic/tests/output-projection.test.ts +77 -0
- package/src/semantic/tests/page-markdown.test.ts +98 -0
- package/src/semantic/tests/page-utils.test.ts +88 -0
- package/src/{share/tests/price-marker-resolver.test.ts → semantic/tests/price-marker-resolver-0767.test.ts} +2 -2
- package/src/semantic/tests/price-marker-resolver.test.ts +90 -0
- package/src/semantic/tests/project-claims.pbt.test.ts +60 -0
- package/src/semantic/tests/robots.test.ts +70 -0
- package/src/{share/semantic → semantic}/tests/split-sentences.test.ts +1 -1
- package/src/{share → semantic}/tests/twin-path.test.ts +1 -1
- package/src/semantic/tests/update-stamp.test.ts +102 -0
- package/src/signing/index.ts +13 -0
- package/src/signing/key.ts +139 -0
- package/src/signing/sign.ts +66 -0
- package/src/signing/types.ts +29 -0
- package/src/{share/slug → slug}/slug-url.ts +4 -1
- package/src/stack/run-tool.ts +108 -0
- package/src/stack/stack-checks.ts +124 -0
- package/src/stack/tests/run-tool.test.ts +138 -0
- package/src/stack/tests/stack-checks.test.ts +141 -0
- package/src/stack/tests/walk-files.test.ts +131 -0
- package/src/stack/walk-files.ts +114 -0
- package/src/surface/blueprint.ts +342 -66
- package/src/surface/decision-composer.ts +6 -1
- package/src/surface/geo.ts +6 -1
- package/src/surface/index.ts +11 -7
- package/src/surface/types.ts +2 -2
- package/src/surface/vitest.config.ts +1 -0
- package/src/tests/signing-core.test.ts +129 -0
- package/src/{share → text}/css-value-normalize.ts +6 -1
- package/src/text/string-utils.ts +24 -0
- package/src/{share → text}/tests/text-normalize.test.ts +5 -0
- package/src/{share → text}/text-normalize.ts +4 -3
- package/src/{share → text}/wrap-inline-numbers.ts +1 -1
- package/src/types/axiom-study.d.ts +36 -0
- package/src/types/hls-js-light.d.ts +21 -0
- package/src/types/qrcode-browser.d.ts +23 -0
- package/src/typography/fix.pbt.test.ts +208 -0
- package/src/typography/fix.ts +148 -0
- package/src/typography/index.ts +54 -0
- package/src/typography/locale-defaults.ts +97 -0
- package/src/typography/rules-tier1.test.ts +459 -0
- package/src/typography/rules-tier1.ts +925 -0
- package/src/typography/rules-tier2-locale.pbt.test.ts +190 -0
- package/src/typography/rules-tier2-locale.test.ts +286 -0
- package/src/typography/rules-tier2-locale.ts +399 -0
- package/src/typography/rules-tier2-structure.test.ts +330 -0
- package/src/typography/rules-tier2-structure.ts +378 -0
- package/src/typography/rules-tier3-advisory.test.ts +290 -0
- package/src/typography/rules-tier3-advisory.ts +239 -0
- package/src/typography/text-surface.test.ts +244 -0
- package/src/typography/text-surface.ts +448 -0
- package/src/index.ts +0 -14
- package/src/integration/port-barrel.ts +0 -105
- package/src/share/content/index.ts +0 -16
- package/src/share/content-discipline/index.ts +0 -14
- package/src/share/index.ts +0 -86
- package/src/share/legal/index.ts +0 -1
- package/src/share/redirects.ts +0 -54
- package/src/share/scripts/index.ts +0 -26
- package/src/share/semantic/jsonld/shared.ts +0 -31
- package/src/share/semantic/jsonld/types.ts +0 -18
- package/src/share/semantic/jsonld/website.ts +0 -27
- package/src/share/string-utils.ts +0 -19
- package/src/share/types/axiom-study.d.ts +0 -22
- package/src/share/types/hls-js-light.d.ts +0 -16
- package/src/share/types/qrcode-browser.d.ts +0 -18
- package/src/share/utility-registry.yaml +0 -36
- package/src/share/vitest.config.ts +0 -8
- package/src/surface/blueprint-schema.ts +0 -314
- package/src/surface/blueprint-types.ts +0 -256
- /package/src/{share/agent → agent}/api-catalog.ts +0 -0
- /package/src/{share/agent → agent}/capability.ts +0 -0
- /package/src/{share/agent → agent}/dns-aid.ts +0 -0
- /package/src/{share/agent → agent}/fleet-catalog.ts +0 -0
- /package/src/{share/agent → agent}/index.ts +0 -0
- /package/src/{share/agent → agent}/knowledge.ts +0 -0
- /package/src/{share/agent → agent}/mcp-card.ts +0 -0
- /package/src/{share/agent → agent}/omit-empty.ts +0 -0
- /package/src/{share/agent → agent}/openapi.ts +0 -0
- /package/src/{share/agent → agent}/proof.ts +0 -0
- /package/src/{share/agent → agent}/search.test.ts +0 -0
- /package/src/{share → attribution}/attribution-display.ts +0 -0
- /package/src/{share/scripts → client-scripts}/gsap-mountain-journey.ts +0 -0
- /package/src/{share/scripts → client-scripts}/gsap-parallax.ts +0 -0
- /package/src/{share/scripts → client-scripts}/gsap-reveal.ts +0 -0
- /package/src/{share/scripts → client-scripts}/gsap-stagger.ts +0 -0
- /package/src/{share/scripts → client-scripts}/live-photos.ts +0 -0
- /package/src/{share/scripts → client-scripts}/video-player.ts +0 -0
- /package/src/{share/content → content}/resolve-field-path.ts +0 -0
- /package/src/{share/content → content}/substitute-deep.ts +0 -0
- /package/src/{share → content}/tests/content-ref-index.test.ts +0 -0
- /package/src/{share/content-discipline → content-discipline}/types.ts +0 -0
- /package/src/{share → image-provider}/image-provider.ts +0 -0
- /package/src/{share/knowledge → knowledge}/claim.ts +0 -0
- /package/src/{share/knowledge → knowledge}/derivation.ts +0 -0
- /package/src/{share/knowledge → knowledge}/freshness.ts +0 -0
- /package/src/{share/knowledge → knowledge}/index.ts +0 -0
- /package/src/{share/knowledge → knowledge}/ledger.ts +0 -0
- /package/src/{share/knowledge → knowledge}/plan.ts +0 -0
- /package/src/{share/knowledge → knowledge}/source.ts +0 -0
- /package/src/{share/legal → legal}/translation-policy.ts +0 -0
- /package/src/{share/middleware → middleware}/language-redirect.ts +0 -0
- /package/src/{share/middleware → middleware}/tests/access-protection.test.ts +0 -0
- /package/src/{share → node}/fs/index.ts +0 -0
- /package/src/{share/tests/markdown-twin-provenance.test.ts → node/tests/markdown-twin-provenance-0613.test.ts} +0 -0
- /package/src/{share → offers}/offer-capacity.ts +0 -0
- /package/src/{share/onboarding-yaml/index.ts → onboarding/yaml.ts} +0 -0
- /package/src/{share → ontology}/tests/ontology-role-by-cosmic-name.test.ts +0 -0
- /package/src/{share/routes → routes}/tests/template-filter.test.ts +0 -0
- /package/src/{share/schemas → schemas}/claim-records.ts +0 -0
- /package/src/{share/schemas → schemas}/horizontal-align.ts +0 -0
- /package/src/{share/schemas → schemas}/icon-color.ts +0 -0
- /package/src/{share/schemas → schemas}/live-photo.ts +0 -0
- /package/src/{share/schemas → schemas}/material-credit.ts +0 -0
- /package/src/{share/schemas → schemas}/media.ts +0 -0
- /package/src/{share/schemas → schemas}/participant.ts +0 -0
- /package/src/{share/schemas → schemas}/print.ts +0 -0
- /package/src/{share/schemas → schemas}/section-background.ts +0 -0
- /package/src/{share/schemas → schemas}/section-body.ts +0 -0
- /package/src/{share/schemas → schemas}/section-cards.ts +0 -0
- /package/src/{share/schemas → schemas}/section-cta.ts +0 -0
- /package/src/{share/schemas → schemas}/section-header.ts +0 -0
- /package/src/{share/schemas → schemas}/section-image.ts +0 -0
- /package/src/{share/schemas → schemas}/section-motion.ts +0 -0
- /package/src/{share/schemas → schemas}/section-shell.ts +0 -0
- /package/src/{share/schemas → schemas}/section-stats.ts +0 -0
- /package/src/{share/schemas → schemas}/site-background.ts +0 -0
- /package/src/{share/semantic → semantic}/ai.ts +0 -0
- /package/src/{share/semantic → semantic}/block-extraction.ts +0 -0
- /package/src/{share/semantic → semantic}/breadcrumbs.ts +0 -0
- /package/src/{share/semantic → semantic}/build-page.ts +0 -0
- /package/src/{share/semantic → semantic}/feed.ts +0 -0
- /package/src/{share/semantic → semantic}/image-sitemap.ts +0 -0
- /package/src/{share/semantic → semantic}/jsonld/article.ts +0 -0
- /package/src/{share/semantic → semantic}/jsonld/collection-list.ts +0 -0
- /package/src/{share/semantic → semantic}/jsonld/video.ts +0 -0
- /package/src/{share/semantic → semantic}/llms-policy.ts +0 -0
- /package/src/{share/semantic → semantic}/markdown-hygiene.ts +0 -0
- /package/src/{share/semantic → semantic}/output-projection.ts +0 -0
- /package/src/{share/semantic → semantic}/page-markdown.ts +0 -0
- /package/src/{share/semantic → semantic}/price-marker-resolver.ts +0 -0
- /package/src/{share/semantic → semantic}/robots.ts +0 -0
- /package/src/{share/semantic → semantic}/update-stamp.ts +0 -0
- /package/src/{share/slug → slug}/heading-slugger.ts +0 -0
- /package/src/{share/slug → slug}/index.ts +0 -0
- /package/src/{share/slug → slug}/slug-id.ts +0 -0
- /package/src/{share/slug → slug}/strategies.ts +0 -0
- /package/src/{share/slug → slug}/tests/slug.test.ts +0 -0
- /package/src/{share → text}/tests/text-normalize.pbt.test.ts +0 -0
- /package/src/{share → text}/text-position.ts +0 -0
|
@@ -0,0 +1,459 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<MODULE_CONTRACT>
|
|
3
|
+
<purpose>Defines types and interfaces for kernel command execution and logging within the application framework.</purpose>
|
|
4
|
+
<non-goals>
|
|
5
|
+
<item>Do not implement command execution logic or side effects.</item>
|
|
6
|
+
<item>Do not handle raw input parsing or transport orchestration.</item>
|
|
7
|
+
<item>Do not manage application lifecycle or state outside of defined commands.</item>
|
|
8
|
+
</non-goals>
|
|
9
|
+
</MODULE_CONTRACT>
|
|
10
|
+
<KEY_DECISIONS>
|
|
11
|
+
<item>Kernel command contracts must stay explicit so agents cannot pass untyped command inputs.</item>
|
|
12
|
+
</KEY_DECISIONS>
|
|
13
|
+
<CHANGE_SUMMARY>
|
|
14
|
+
<item>RFC-1027: add RemediationHint interface and optional remediationHints field to KernelExecutionReport for agent-actionable fix suggestions.</item>
|
|
15
|
+
<item>RFC-1028: add moduleBasePath to KernelRegisteredCommandInfo, derived from modulePath (RFC-0960) for dynamic moduleSrcDir resolution in the pipeline executor.</item>
|
|
16
|
+
<item>RFC-1038: replace KernelModule with ModuleExport, KernelCommandDefinition with CommandDeclaration, KernelRuntimeContext.registry with actualState, KernelAppConfig uses ModuleExport.</item>
|
|
17
|
+
<item>RFC-1097: step 6 — compass.migrate codemod run
|
|
18
|
+
|
|
19
|
+
Mechanical v1 to v2 header migration across the workspace: 942 files rewritten — CHANGE_SUMMARY windows collapsed into history, forbidden v1 blocks stripped, KEY_DECISIONS seeded from @ai-invariant comments (5 files) or TODO placeholders (103 files), blocks reordered to canonical order.</item>
|
|
20
|
+
<item>RFC-1097: sweep — werkstatt-engine clean
|
|
21
|
+
|
|
22
|
+
Sweep batch 4: 73 Compass headers on headerless engine files (certification, component-runtime, isolation, evolution, testing), real KEY_DECISIONS on 75 files (kernel, cache, dht, swim, gitmesh, runtime), ~80 purpose expansions (CONTRACT-02/PURPOSE-02), non-goals on 13 CONTRACT-03 files, CS-07 history literal fix repo-wide (253 files). Policy: .template.ts/.template.astro excludedPaths. werkstatt-engine now 0 diagnostics.</item>
|
|
23
|
+
<history>RFC-0260, RFC-0267, RFC-0326, RFC-0390, RFC-0518, RFC-0579, RFC-0686, RFC-0960, RFC-1026</history>
|
|
24
|
+
</CHANGE_SUMMARY>
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
import type { WorkspaceIO, WriteIntent } from "./workspace-io.ts";
|
|
28
|
+
import type { ModuleExport, CommandDeclaration, ActualState } from "./desired-state.ts";
|
|
29
|
+
// @ai-invariant: Kernel command contracts must stay explicit so agents cannot pass untyped command inputs.
|
|
30
|
+
|
|
31
|
+
export type KernelOutputFormat = "pretty" | "json";
|
|
32
|
+
export type KernelCommandScope = "app" | "workspace";
|
|
33
|
+
export type KernelLogLevel = "info" | "warn" | "error" | "success" | "section";
|
|
34
|
+
export type PipelineLogSeverity = "debug" | "info" | "notice" | "warning" | "error";
|
|
35
|
+
export type PipelineLogKind =
|
|
36
|
+
"progress" | "expected-fallback" | "advisory" | "external-tool" | "diagnostic" | "error";
|
|
37
|
+
|
|
38
|
+
export type KernelFlagValue = boolean | string | string[];
|
|
39
|
+
export interface DiscoveredSiteWorkspace {
|
|
40
|
+
name: string;
|
|
41
|
+
directory: string;
|
|
42
|
+
toolsDirectory: string;
|
|
43
|
+
configPath?: string;
|
|
44
|
+
packageName?: string;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface KernelLogEvent {
|
|
48
|
+
level: KernelLogLevel;
|
|
49
|
+
message: string;
|
|
50
|
+
details?: unknown;
|
|
51
|
+
timestamp: string;
|
|
52
|
+
severity?: PipelineLogSeverity;
|
|
53
|
+
kind?: PipelineLogKind;
|
|
54
|
+
command?: string;
|
|
55
|
+
pipeline?: string;
|
|
56
|
+
app?: string;
|
|
57
|
+
packageName?: string;
|
|
58
|
+
module?: string;
|
|
59
|
+
file?: string;
|
|
60
|
+
line?: number;
|
|
61
|
+
ruleId?: string;
|
|
62
|
+
dedupeKey?: string;
|
|
63
|
+
count?: number;
|
|
64
|
+
data?: Record<string, unknown>;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export interface KernelLogger {
|
|
68
|
+
section(message: string, details?: unknown): void;
|
|
69
|
+
info(message: string, details?: unknown): void;
|
|
70
|
+
warn(message: string, details?: unknown): void;
|
|
71
|
+
error(message: string, details?: unknown): void;
|
|
72
|
+
success(message: string, details?: unknown): void;
|
|
73
|
+
event(event: Omit<KernelLogEvent, "level" | "timestamp"> & { level?: KernelLogLevel }): void;
|
|
74
|
+
getEvents(): KernelLogEvent[];
|
|
75
|
+
}
|
|
76
|
+
export interface KernelCommandInput {
|
|
77
|
+
argv: string[];
|
|
78
|
+
flags: Record<string, KernelFlagValue>;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
export interface KernelCommandMetadata {
|
|
82
|
+
description: string;
|
|
83
|
+
scope: KernelCommandScope;
|
|
84
|
+
mutatesState?: boolean;
|
|
85
|
+
requiresNetwork?: boolean;
|
|
86
|
+
supportsAllSites?: boolean;
|
|
87
|
+
timeoutMs?: number;
|
|
88
|
+
expectedDurationMs?: number;
|
|
89
|
+
longRunning?: boolean;
|
|
90
|
+
/**
|
|
91
|
+
* RFC-0390: when false, the pipeline executor never caches this command's
|
|
92
|
+
* result. Required for commands that depend on external state (network,
|
|
93
|
+
* secrets, time). Commands without `reads` MUST set this to false;
|
|
94
|
+
* command.reads.validate enforces this. Defaults to true.
|
|
95
|
+
*/
|
|
96
|
+
cacheable?: boolean;
|
|
97
|
+
/**
|
|
98
|
+
* RFC-0518: declarative gate metadata. Optional. When present, describes the
|
|
99
|
+
* gate's severity, phase, conditional logic, surfaces protected, rules enforced,
|
|
100
|
+
* and workflow steps blocked on failure. Consumed by ecosystem.manifest.generate
|
|
101
|
+
* and gate.catalog.generate (RFC-0519). Does NOT affect execution.
|
|
102
|
+
*/
|
|
103
|
+
gate?: GateMetadata;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// ---------------------------------------------------------------------------
|
|
107
|
+
// RFC-0518: declarative gate metadata on command definitions
|
|
108
|
+
// ---------------------------------------------------------------------------
|
|
109
|
+
|
|
110
|
+
export type GateSeverity = "error" | "warning" | "mixed";
|
|
111
|
+
export type GatePhase = "author" | "postbuild" | "workspace" | "mission" | "release";
|
|
112
|
+
|
|
113
|
+
export interface GateConditional {
|
|
114
|
+
kind: "entitlement" | "flag" | "config";
|
|
115
|
+
ref: string;
|
|
116
|
+
description: string;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export interface GateMetadata {
|
|
120
|
+
severity: GateSeverity;
|
|
121
|
+
phase: GatePhase;
|
|
122
|
+
conditional?: GateConditional;
|
|
123
|
+
surfaces?: string[];
|
|
124
|
+
rules?: string[];
|
|
125
|
+
blocks?: string[];
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// ---------------------------------------------------------------------------
|
|
129
|
+
// RFC-0260: typed kernel command flag schemas
|
|
130
|
+
// ---------------------------------------------------------------------------
|
|
131
|
+
// A command that declares `flags` opts into strict parsing: unknown flags are
|
|
132
|
+
// rejected (KERNEL-FLAG-01) instead of silently ignored, and required flags
|
|
133
|
+
// are enforced (KERNEL-FLAG-03) before `execute()` runs. Commands without a
|
|
134
|
+
// `flags` schema keep the legacy heuristic-parser behavior unchanged.
|
|
135
|
+
|
|
136
|
+
export interface KernelFlagSpec {
|
|
137
|
+
kind: "boolean" | "string" | "string[]";
|
|
138
|
+
required?: boolean;
|
|
139
|
+
default?: KernelFlagValue;
|
|
140
|
+
/** One-line description; consumed by --help and future generators (rfc-0266). */
|
|
141
|
+
description: string;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export interface KernelRegisteredCommandInfo extends KernelCommandMetadata {
|
|
145
|
+
name: string;
|
|
146
|
+
provider: "workspace" | "site";
|
|
147
|
+
siteName?: string;
|
|
148
|
+
/** The name of the KernelModule that registered this command. */
|
|
149
|
+
module?: string;
|
|
150
|
+
/** RFC-0260: declared flag schema, when the command opts in. */
|
|
151
|
+
flags?: Record<string, KernelFlagSpec>;
|
|
152
|
+
/** RFC-0266: declared IO globs, when the command opts in. */
|
|
153
|
+
reads?: string[];
|
|
154
|
+
writes?: string[];
|
|
155
|
+
/** RFC-0687: propagated from KernelCommandDefinition for manifest and registry. */
|
|
156
|
+
validatesOutputs?: string[];
|
|
157
|
+
/** RFC-0960: declared generated artifacts, propagated from KernelCommandDefinition. */
|
|
158
|
+
generates?: GeneratedArtifactSpec[];
|
|
159
|
+
/**
|
|
160
|
+
* RFC-1028: repo-relative path to the module's src/ directory (e.g.
|
|
161
|
+
* "packages/werkstatt-engine/src"). Derived from KernelCommandDefinition.modulePath
|
|
162
|
+
* (RFC-0960) by taking everything up to and including the src/ segment.
|
|
163
|
+
* Used by the pipeline executor to resolve moduleSrcDir for computeModuleHash.
|
|
164
|
+
*/
|
|
165
|
+
moduleBasePath?: string;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export interface KernelNextStep {
|
|
169
|
+
action: string;
|
|
170
|
+
kind: "required" | "optional";
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
export interface KernelCommandResult<TData = unknown> {
|
|
174
|
+
data?: TData;
|
|
175
|
+
exitCode?: number;
|
|
176
|
+
summary?: string;
|
|
177
|
+
timing?: KernelCommandTiming;
|
|
178
|
+
nextSteps?: KernelNextStep[];
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// ---------------------------------------------------------------------------
|
|
182
|
+
// RFC-0852: canonical Diagnostic model — re-exported from engine schema module
|
|
183
|
+
// ---------------------------------------------------------------------------
|
|
184
|
+
// The single shape every static check uses to report a finding. The Zod
|
|
185
|
+
// schemas, types, limits, and validation helpers are owned by
|
|
186
|
+
// `packages/werkstatt/src/schemas/diagnostic.ts` (RFC-0852). This file
|
|
187
|
+
// re-exports the types so existing `@warpgogol/werkstatt-engine/kernel` consumers
|
|
188
|
+
// see no breakage. The site plugin imports the schemas directly from
|
|
189
|
+
// `@warpgogol/werkstatt-engine/schemas`.
|
|
190
|
+
|
|
191
|
+
import type {
|
|
192
|
+
DiagnosticSeverity as _DiagnosticSeverity,
|
|
193
|
+
DiagnosticEvidence as _DiagnosticEvidence,
|
|
194
|
+
Diagnostic as _Diagnostic,
|
|
195
|
+
} from "./diagnostic.ts";
|
|
196
|
+
|
|
197
|
+
export type {
|
|
198
|
+
DiagnosticSeverity,
|
|
199
|
+
DiagnosticEvidence,
|
|
200
|
+
Diagnostic,
|
|
201
|
+
RemediationRef,
|
|
202
|
+
} from "./diagnostic.ts";
|
|
203
|
+
|
|
204
|
+
/** Canonical per-command result payload carried inside KernelCommandResult.data. */
|
|
205
|
+
export interface CheckResult {
|
|
206
|
+
command: string;
|
|
207
|
+
status: "pass" | "warn" | "fail";
|
|
208
|
+
diagnostics: _Diagnostic[];
|
|
209
|
+
summary: { error: number; warning: number; info: number };
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* RFC-0960: Declared generated artifact specification on a kernel command.
|
|
214
|
+
* Lives on `KernelCommandDefinition.generates[]` and is the source of truth
|
|
215
|
+
* for the derived generator ownership map.
|
|
216
|
+
*/
|
|
217
|
+
export interface GeneratedArtifactSpec {
|
|
218
|
+
/** Workpiece-relative path or glob, e.g. "src/content/system-health.generated.yaml". */
|
|
219
|
+
path: string;
|
|
220
|
+
/** Skip absence checks (RFC-0636 semantics) — e.g. produced only in build.post. */
|
|
221
|
+
conditional?: boolean;
|
|
222
|
+
/** Pipeline phase that produces it: informs which validator phase may assert existence. */
|
|
223
|
+
phase: "build.prepare" | "build.post" | "on-demand";
|
|
224
|
+
/**
|
|
225
|
+
* Override the default markerPolicy derivation. Default: public/** → "registry-only",
|
|
226
|
+
* everything else → "embedded". Set explicitly only for edge cases (e.g. .cache/pdf/**).
|
|
227
|
+
*/
|
|
228
|
+
markerPolicy?: "embedded" | "registry-only";
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* RFC-0960: A derived entry in the generator ownership map. Produced by
|
|
233
|
+
* `buildGeneratorOwnership(registry)` from all registered commands' `generates[]`.
|
|
234
|
+
* Engine defines the structural type; the site plugin owns the concrete derivation.
|
|
235
|
+
*/
|
|
236
|
+
export interface GeneratorOwnershipEntry {
|
|
237
|
+
command: string;
|
|
238
|
+
modulePath?: string;
|
|
239
|
+
artifact: GeneratedArtifactSpec;
|
|
240
|
+
markerPolicy: "embedded" | "registry-only";
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
export interface KernelRuntimeContext {
|
|
244
|
+
workspaceRoot: string;
|
|
245
|
+
site?: DiscoveredSiteWorkspace;
|
|
246
|
+
/** True only when --site <name> was passed explicitly by the caller. False when site was resolved by cwd inference. */
|
|
247
|
+
siteExplicit: boolean;
|
|
248
|
+
logger: KernelLogger;
|
|
249
|
+
dryRun: boolean;
|
|
250
|
+
/** RFC-0635: when true, injected into input.flags.force by executeRegisteredCommand. */
|
|
251
|
+
force?: boolean;
|
|
252
|
+
outputFormat: KernelOutputFormat;
|
|
253
|
+
/**
|
|
254
|
+
* RFC-0267: the WorkspaceIO port. The executor selects the adapter:
|
|
255
|
+
* read-only (throws KERNEL-META-01 on mutation) for `mutatesState: false`
|
|
256
|
+
* commands, recording (captures intents, touches nothing) under
|
|
257
|
+
* `--dry-run`, else the default fs-backed adapter. Ambient `node:fs`
|
|
258
|
+
* imports in unmigrated command modules keep working — adoption is
|
|
259
|
+
* ratcheted, new-code-first.
|
|
260
|
+
*/
|
|
261
|
+
io: WorkspaceIO;
|
|
262
|
+
/**
|
|
263
|
+
* RFC-0326: the WriteIntent[] captured by the tracing adapter during this
|
|
264
|
+
* invocation. Set by the executor from `createDefaultIO().intents` (real
|
|
265
|
+
* runs) or `createRecordingIO().intents` (dry runs). Absent for read-only
|
|
266
|
+
* commands (no mutations possible). The executor converts these to
|
|
267
|
+
* `filesModified` on the execution report.
|
|
268
|
+
*/
|
|
269
|
+
fileIntents?: WriteIntent[];
|
|
270
|
+
/** RFC-1038: the actual state, available to validators for derived projections like buildGeneratorOwnership. */
|
|
271
|
+
actualState: ActualState;
|
|
272
|
+
/**
|
|
273
|
+
* RFC-0960: pre-computed derived generator ownership map. Computed once by
|
|
274
|
+
* the executor via dynamic import of buildGeneratorOwnership from the site
|
|
275
|
+
* plugin. Validators consume this instead of a static constant.
|
|
276
|
+
*/
|
|
277
|
+
ownershipMap?: GeneratorOwnershipEntry[];
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* RFC-1038: KernelCommandDefinition is now a type alias for CommandDeclaration.
|
|
282
|
+
* The generic parameter is preserved for backward compatibility with existing
|
|
283
|
+
* code that uses KernelCommandDefinition<TData>, but the underlying type is
|
|
284
|
+
* CommandDeclaration (which has the same structure).
|
|
285
|
+
*/
|
|
286
|
+
export type KernelCommandDefinition<_TData = unknown> = CommandDeclaration;
|
|
287
|
+
export interface KernelPipelineStep {
|
|
288
|
+
command: string;
|
|
289
|
+
args?: string[];
|
|
290
|
+
timeoutMs?: number;
|
|
291
|
+
expectedDurationMs?: number;
|
|
292
|
+
skip?: boolean;
|
|
293
|
+
skipReason?: string;
|
|
294
|
+
/**
|
|
295
|
+
* RFC-0686: command names that must complete before this step starts.
|
|
296
|
+
* When absent, the step depends on the previous non-skipped step (backward compatible).
|
|
297
|
+
* When empty ([]), the step has no dependencies and may start immediately.
|
|
298
|
+
*/
|
|
299
|
+
dependsOn?: string[];
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* RFC-1038: KernelModule is now a type alias for ModuleExport.
|
|
304
|
+
* Modules export declarations, commands, and pipelines arrays instead of
|
|
305
|
+
* calling register(). The buildRegistry function reads these arrays directly.
|
|
306
|
+
*/
|
|
307
|
+
export type KernelModule = ModuleExport;
|
|
308
|
+
|
|
309
|
+
export type ModuleFiberState =
|
|
310
|
+
"declared" | "loading" | "active" | "draining" | "unloading" | "disposed" | "failed";
|
|
311
|
+
|
|
312
|
+
export interface KernelAppConfig {
|
|
313
|
+
name?: string;
|
|
314
|
+
description?: string;
|
|
315
|
+
/** Direct module objects — used when moduleLoaders is absent. */
|
|
316
|
+
modules?: ModuleExport[];
|
|
317
|
+
/** Lazy module loaders — enables manifest-driven single-module loading. Functions are defined in kernel.config.ts so import() resolves from the workspace root. */
|
|
318
|
+
moduleLoaders?: Record<string, () => Promise<ModuleExport>>;
|
|
319
|
+
}
|
|
320
|
+
export interface KernelExecutionReport<TData = unknown> {
|
|
321
|
+
siteName?: string;
|
|
322
|
+
commandName: string;
|
|
323
|
+
data?: TData;
|
|
324
|
+
exitCode: number;
|
|
325
|
+
ok: boolean;
|
|
326
|
+
summary?: string;
|
|
327
|
+
metadata: KernelCommandDefinition<TData>;
|
|
328
|
+
logs: KernelLogEvent[];
|
|
329
|
+
logSummary?: {
|
|
330
|
+
error: number;
|
|
331
|
+
warning: number;
|
|
332
|
+
notice: number;
|
|
333
|
+
expectedFallback: number;
|
|
334
|
+
suppressedDebug: number;
|
|
335
|
+
};
|
|
336
|
+
timing: KernelCommandTiming;
|
|
337
|
+
nextSteps?: KernelNextStep[];
|
|
338
|
+
/**
|
|
339
|
+
* RFC-1027: top remediation hints aggregated from failed diagnostics.
|
|
340
|
+
* Sorted by occurrence count descending, capped at 3 entries.
|
|
341
|
+
* Absent when the command produced no diagnostics with remediation data.
|
|
342
|
+
*/
|
|
343
|
+
remediationHints?: RemediationHint[];
|
|
344
|
+
/**
|
|
345
|
+
* RFC-0326: workspace-root-relative POSIX paths of files this command
|
|
346
|
+
* actually wrote, mkdir'd, or removed during this invocation. Empty array
|
|
347
|
+
* when no mutations occurred or when the command is unmigrated (ambient
|
|
348
|
+
* node:fs, IO-01 baseline). Derived from the tracing adapter's WriteIntent[].
|
|
349
|
+
*/
|
|
350
|
+
filesModified?: string[];
|
|
351
|
+
/** RFC-0390: true when this report was served from the command-result cache instead of real execution. */
|
|
352
|
+
cached?: boolean;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
/**
|
|
356
|
+
* RFC-1027: A structured remediation hint aggregated from failed diagnostics.
|
|
357
|
+
* Derived from Diagnostic.remediation fields, grouped by ruleId, sorted by occurrence count.
|
|
358
|
+
*/
|
|
359
|
+
export interface RemediationHint {
|
|
360
|
+
ruleId: string;
|
|
361
|
+
action: string;
|
|
362
|
+
template?: string;
|
|
363
|
+
docRef?: string;
|
|
364
|
+
targetFiles?: string[];
|
|
365
|
+
occurrenceCount: number;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
export interface KernelPipelineReport {
|
|
369
|
+
siteName?: string;
|
|
370
|
+
pipelineName: string;
|
|
371
|
+
exitCode: number;
|
|
372
|
+
ok: boolean;
|
|
373
|
+
steps: KernelExecutionReport[];
|
|
374
|
+
timing: KernelPipelineTimingSummary;
|
|
375
|
+
/**
|
|
376
|
+
* RFC-0326: deduplicated union of all step reports' filesModified arrays.
|
|
377
|
+
*/
|
|
378
|
+
filesModified?: string[];
|
|
379
|
+
/**
|
|
380
|
+
* RFC-0809: command names of steps that failed (excluding dependency-skipped).
|
|
381
|
+
* Present only in collect-errors mode when failures occurred.
|
|
382
|
+
*/
|
|
383
|
+
failedSteps?: string[];
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
export type PipelineStepStatus = "pass" | "warn" | "fail" | "skipped" | "timeout";
|
|
387
|
+
|
|
388
|
+
export interface KernelCommandTiming {
|
|
389
|
+
durationMs: number;
|
|
390
|
+
timeoutMs?: number;
|
|
391
|
+
expectedDurationMs?: number;
|
|
392
|
+
exceededTimeout: boolean;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
export interface PipelineStepTiming extends KernelCommandTiming {
|
|
396
|
+
pipeline: string;
|
|
397
|
+
command: string;
|
|
398
|
+
app?: string;
|
|
399
|
+
packageName?: string;
|
|
400
|
+
status: PipelineStepStatus;
|
|
401
|
+
startedAtMonotonicMs: number;
|
|
402
|
+
endedAtMonotonicMs: number;
|
|
403
|
+
fromCache?: boolean;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
export interface KernelPipelineTimingSummary {
|
|
407
|
+
pipeline: string;
|
|
408
|
+
app?: string;
|
|
409
|
+
/** Wall-clock duration: min(startedAt) to max(endedAt) across all steps. */
|
|
410
|
+
totalDurationMs: number;
|
|
411
|
+
/** Sum of per-step durationMs — equals totalDurationMs for sequential execution, exceeds it for parallel. */
|
|
412
|
+
summedDurationMs?: number;
|
|
413
|
+
stepCount: number;
|
|
414
|
+
slowestSteps: PipelineStepTiming[];
|
|
415
|
+
timeoutCount: number;
|
|
416
|
+
warningCount: number;
|
|
417
|
+
failedStep?: string;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
export interface ExecuteKernelCommandOptions {
|
|
421
|
+
workspaceRoot: string;
|
|
422
|
+
commandName: string;
|
|
423
|
+
siteName?: string;
|
|
424
|
+
allSites?: boolean;
|
|
425
|
+
argv?: string[];
|
|
426
|
+
dryRun?: boolean;
|
|
427
|
+
/** RFC-0635: when true, bypasses distribution reuse check in mission.validate. Injected into input.flags.force by the executor. */
|
|
428
|
+
force?: boolean;
|
|
429
|
+
outputFormat?: KernelOutputFormat;
|
|
430
|
+
/** Set to true when siteName was derived from an explicit --site flag, not cwd inference. */
|
|
431
|
+
siteExplicit?: boolean;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
export interface ExecuteKernelPipelineOptions {
|
|
435
|
+
workspaceRoot: string;
|
|
436
|
+
pipelineName: string;
|
|
437
|
+
siteName?: string;
|
|
438
|
+
allSites?: boolean;
|
|
439
|
+
dryRun?: boolean;
|
|
440
|
+
outputFormat?: KernelOutputFormat;
|
|
441
|
+
/** RFC-0390: when true, bypass cache reads for a full re-execution. Successful results are still written. */
|
|
442
|
+
force?: boolean;
|
|
443
|
+
/** Pre-resolved site workspace — bypasses site discovery when provided (e.g. for closed-mission workpieces). */
|
|
444
|
+
siteWorkspace?: DiscoveredSiteWorkspace;
|
|
445
|
+
/** RFC-0686: maximum number of steps to run concurrently. Default: Math.min(os.availableParallelism(), 8). When 1, full sequential mode (ignores dependsOn, abort-on-failure). */
|
|
446
|
+
concurrency?: number;
|
|
447
|
+
/** RFC-0732: pipeline-level flags merged into each step's KernelCommandInput.flags. Step-level flags take precedence. */
|
|
448
|
+
flags?: Record<string, unknown>;
|
|
449
|
+
/** RFC-0809: when true, continue executing independent steps after a failure and aggregate all errors in the final report. Default: false (fail-fast). No effect when concurrency=1 (scheduler uses full sequential abort-on-failure). */
|
|
450
|
+
collectErrors?: boolean;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
export interface SiteWorkspacesListResult {
|
|
454
|
+
workspaceRoot: string;
|
|
455
|
+
sites: DiscoveredSiteWorkspace[];
|
|
456
|
+
}
|
|
457
|
+
export function defineKernelConfig(config: KernelAppConfig): KernelAppConfig {
|
|
458
|
+
return config;
|
|
459
|
+
}
|