@owlmeans/viable-common 0.0.43 → 0.0.45
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 +3 -3
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/agent-presentation/SKILL.md +4 -4
- package/agent-meta/skills/viable-common/SKILL.md +59 -36
- package/build/agent/consts.d.ts +58 -0
- package/build/agent/consts.d.ts.map +1 -0
- package/build/agent/consts.js +63 -0
- package/build/agent/consts.js.map +1 -0
- package/build/agent/consts.local.d.ts +21 -0
- package/build/agent/consts.local.d.ts.map +1 -0
- package/build/agent/consts.local.js +44 -0
- package/build/agent/consts.local.js.map +1 -0
- package/build/agent/index.d.ts +2 -0
- package/build/agent/index.d.ts.map +1 -1
- package/build/agent/index.js +1 -0
- package/build/agent/index.js.map +1 -1
- package/build/agent/presentation/types.d.ts +21 -0
- package/build/agent/presentation/types.d.ts.map +1 -0
- package/build/agent/presentation/types.js.map +1 -0
- package/build/agent/presentation.d.ts +12 -94
- package/build/agent/presentation.d.ts.map +1 -1
- package/build/agent/presentation.js +218 -299
- package/build/agent/presentation.js.map +1 -1
- package/build/agent/types.d.ts +30 -0
- package/build/agent/types.d.ts.map +1 -1
- package/build/agent/types.local.d.ts +4 -0
- package/build/agent/types.local.d.ts.map +1 -0
- package/build/agent/types.local.js +2 -0
- package/build/agent/types.local.js.map +1 -0
- package/build/areas/consts.d.ts +5 -0
- package/build/areas/consts.d.ts.map +1 -1
- package/build/areas/consts.js +4 -0
- package/build/areas/consts.js.map +1 -1
- package/build/areas/index.d.ts +1 -0
- package/build/areas/index.d.ts.map +1 -1
- package/build/areas/index.js.map +1 -1
- package/build/areas/tenancy/types.d.ts +23 -0
- package/build/areas/tenancy/types.d.ts.map +1 -0
- package/build/areas/tenancy/types.js +2 -0
- package/build/areas/tenancy/types.js.map +1 -0
- package/build/areas/tenancy.d.ts +6 -50
- package/build/areas/tenancy.d.ts.map +1 -1
- package/build/areas/tenancy.js +21 -31
- package/build/areas/tenancy.js.map +1 -1
- package/build/areas/types.d.ts +32 -0
- package/build/areas/types.d.ts.map +1 -1
- package/build/ba/connecting/types.d.ts +45 -0
- package/build/ba/connecting/types.d.ts.map +1 -0
- package/build/ba/connecting/types.js +2 -0
- package/build/ba/connecting/types.js.map +1 -0
- package/build/ba/connecting.d.ts +4 -0
- package/build/ba/connecting.d.ts.map +1 -0
- package/build/ba/connecting.js +47 -0
- package/build/ba/connecting.js.map +1 -0
- package/build/ba/helpers.d.ts +4 -39
- package/build/ba/helpers.d.ts.map +1 -1
- package/build/ba/helpers.js +5 -79
- package/build/ba/helpers.js.map +1 -1
- package/build/ba/index.d.ts +2 -0
- package/build/ba/index.d.ts.map +1 -1
- package/build/ba/index.js +1 -0
- package/build/ba/index.js.map +1 -1
- package/build/ba/types.d.ts +1 -1
- package/build/ba/types.d.ts.map +1 -1
- package/build/blueprint/consts.d.ts +41 -0
- package/build/blueprint/consts.d.ts.map +1 -1
- package/build/blueprint/consts.js +51 -0
- package/build/blueprint/consts.js.map +1 -1
- package/build/blueprint/consts.local.d.ts +2 -0
- package/build/blueprint/consts.local.d.ts.map +1 -0
- package/build/blueprint/consts.local.js +3 -0
- package/build/blueprint/consts.local.js.map +1 -0
- package/build/blueprint/index.d.ts +1 -0
- package/build/blueprint/index.d.ts.map +1 -1
- package/build/blueprint/index.js +1 -0
- package/build/blueprint/index.js.map +1 -1
- package/build/blueprint/types.d.ts +3 -52
- package/build/blueprint/types.d.ts.map +1 -1
- package/build/blueprint/types.js +1 -65
- package/build/blueprint/types.js.map +1 -1
- package/build/blueprint/utils.d.ts +11 -0
- package/build/blueprint/utils.d.ts.map +1 -0
- package/build/blueprint/utils.js +16 -0
- package/build/blueprint/utils.js.map +1 -0
- package/build/branding.d.ts +0 -8
- package/build/branding.d.ts.map +1 -1
- package/build/branding.js +0 -16
- package/build/branding.js.map +1 -1
- package/build/connect/branding/types.d.ts +28 -0
- package/build/connect/branding/types.d.ts.map +1 -0
- package/build/connect/branding/types.js +2 -0
- package/build/connect/branding/types.js.map +1 -0
- package/build/connect/consts.d.ts +2 -10
- package/build/connect/consts.d.ts.map +1 -1
- package/build/connect/consts.js +2 -23
- package/build/connect/consts.js.map +1 -1
- package/build/connect/conversion/types.d.ts +93 -0
- package/build/connect/conversion/types.d.ts.map +1 -0
- package/build/connect/conversion/types.js +2 -0
- package/build/connect/conversion/types.js.map +1 -0
- package/build/connect/entrypoints/types.d.ts +30 -0
- package/build/connect/entrypoints/types.d.ts.map +1 -0
- package/build/connect/entrypoints/types.js +2 -0
- package/build/connect/entrypoints/types.js.map +1 -0
- package/build/connect/entrypoints.d.ts +61 -92
- package/build/connect/entrypoints.d.ts.map +1 -1
- package/build/connect/entrypoints.js +5 -2
- package/build/connect/entrypoints.js.map +1 -1
- package/build/connect/errors/types.d.ts +20 -0
- package/build/connect/errors/types.d.ts.map +1 -0
- package/build/connect/errors/types.js +2 -0
- package/build/connect/errors/types.js.map +1 -0
- package/build/connect/errors.d.ts +32 -0
- package/build/connect/errors.d.ts.map +1 -1
- package/build/connect/errors.js +65 -0
- package/build/connect/errors.js.map +1 -1
- package/build/connect/index.d.ts +13 -2
- package/build/connect/index.d.ts.map +1 -1
- package/build/connect/index.js +1 -0
- package/build/connect/index.js.map +1 -1
- package/build/connect/kit/types.d.ts +52 -0
- package/build/connect/kit/types.d.ts.map +1 -0
- package/build/connect/kit/types.js +2 -0
- package/build/connect/{types.js.map → kit/types.js.map} +1 -1
- package/build/connect/model-tier/types.d.ts +16 -0
- package/build/connect/model-tier/types.d.ts.map +1 -0
- package/build/connect/model-tier/types.js +2 -0
- package/build/connect/model-tier/types.js.map +1 -0
- package/build/connect/model-tier.d.ts +4 -0
- package/build/connect/model-tier.d.ts.map +1 -0
- package/build/connect/model-tier.js +21 -0
- package/build/connect/model-tier.js.map +1 -0
- package/build/connect/{ops.d.ts → ops/types.d.ts} +13 -4
- package/build/connect/ops/types.d.ts.map +1 -0
- package/build/connect/ops/types.js +2 -0
- package/build/connect/ops/types.js.map +1 -0
- package/build/connect/pipeline/types.d.ts +39 -0
- package/build/connect/pipeline/types.d.ts.map +1 -0
- package/build/connect/pipeline/types.js +2 -0
- package/build/connect/pipeline/types.js.map +1 -0
- package/build/connect/project/types.d.ts +127 -0
- package/build/connect/project/types.d.ts.map +1 -0
- package/build/connect/project/types.js +2 -0
- package/build/connect/project/types.js.map +1 -0
- package/build/connect/references/types.d.ts +157 -0
- package/build/connect/references/types.d.ts.map +1 -0
- package/build/connect/references/types.js +2 -0
- package/build/connect/references/types.js.map +1 -0
- package/build/connect/references/types.local.d.ts +5 -0
- package/build/connect/references/types.local.d.ts.map +1 -0
- package/build/connect/references/types.local.js +2 -0
- package/build/connect/references/types.local.js.map +1 -0
- package/build/connect/references.d.ts +1 -153
- package/build/connect/references.d.ts.map +1 -1
- package/build/connect/references.js.map +1 -1
- package/build/connect/schemas.d.ts +9 -5
- package/build/connect/schemas.d.ts.map +1 -1
- package/build/connect/schemas.js +10 -3
- package/build/connect/schemas.js.map +1 -1
- package/build/connect/session/types.d.ts +73 -0
- package/build/connect/session/types.d.ts.map +1 -0
- package/build/connect/session/types.js +2 -0
- package/build/connect/session/types.js.map +1 -0
- package/build/connect/settings/types.d.ts +48 -0
- package/build/connect/settings/types.d.ts.map +1 -0
- package/build/connect/settings/types.js +2 -0
- package/build/connect/settings/types.js.map +1 -0
- package/build/consts.d.ts +8 -0
- package/build/consts.d.ts.map +1 -1
- package/build/consts.js +16 -0
- package/build/consts.js.map +1 -1
- package/build/convert/analysis/types.d.ts +93 -0
- package/build/convert/analysis/types.d.ts.map +1 -0
- package/build/convert/analysis/types.js +2 -0
- package/build/convert/analysis/types.js.map +1 -0
- package/build/convert/census/consts.local.d.ts +55 -0
- package/build/convert/census/consts.local.d.ts.map +1 -0
- package/build/convert/census/consts.local.js +104 -0
- package/build/convert/census/consts.local.js.map +1 -0
- package/build/convert/census/types.d.ts +176 -0
- package/build/convert/census/types.d.ts.map +1 -0
- package/build/convert/census/types.js +2 -0
- package/build/convert/census/types.js.map +1 -0
- package/build/convert/census.d.ts +4 -0
- package/build/convert/census.d.ts.map +1 -0
- package/build/convert/census.js +83 -0
- package/build/convert/census.js.map +1 -0
- package/build/convert/consts.d.ts +4 -12
- package/build/convert/consts.d.ts.map +1 -1
- package/build/convert/consts.js +4 -3
- package/build/convert/consts.js.map +1 -1
- package/build/convert/detection/types.d.ts +67 -0
- package/build/convert/detection/types.d.ts.map +1 -0
- package/build/convert/detection/types.js +2 -0
- package/build/convert/detection/types.js.map +1 -0
- package/build/convert/docs/types.d.ts +129 -0
- package/build/convert/docs/types.d.ts.map +1 -0
- package/build/convert/docs/types.js +2 -0
- package/build/convert/docs/types.js.map +1 -0
- package/build/convert/docs.d.ts +4 -0
- package/build/convert/docs.d.ts.map +1 -0
- package/build/convert/docs.js +9 -0
- package/build/convert/docs.js.map +1 -0
- package/build/convert/estimate/types.d.ts +77 -0
- package/build/convert/estimate/types.d.ts.map +1 -0
- package/build/convert/estimate/types.js +2 -0
- package/build/convert/estimate/types.js.map +1 -0
- package/build/convert/estimate.d.ts +11 -0
- package/build/convert/estimate.d.ts.map +1 -0
- package/build/convert/estimate.js +18 -0
- package/build/convert/estimate.js.map +1 -0
- package/build/convert/helpers.d.ts +14 -78
- package/build/convert/helpers.d.ts.map +1 -1
- package/build/convert/helpers.js +27 -300
- package/build/convert/helpers.js.map +1 -1
- package/build/convert/index.d.ts +15 -0
- package/build/convert/index.d.ts.map +1 -1
- package/build/convert/index.js +6 -0
- package/build/convert/index.js.map +1 -1
- package/build/convert/origin/types.d.ts +41 -0
- package/build/convert/origin/types.d.ts.map +1 -0
- package/build/convert/origin/types.js +2 -0
- package/build/convert/origin/types.js.map +1 -0
- package/build/convert/origin.d.ts +4 -0
- package/build/convert/origin.d.ts.map +1 -0
- package/build/convert/origin.js +25 -0
- package/build/convert/origin.js.map +1 -0
- package/build/convert/record/types.d.ts +98 -0
- package/build/convert/record/types.d.ts.map +1 -0
- package/build/convert/record/types.js +2 -0
- package/build/convert/record/types.js.map +1 -0
- package/build/convert/schemas.d.ts +7 -6
- package/build/convert/schemas.d.ts.map +1 -1
- package/build/convert/schemas.js +1 -5
- package/build/convert/schemas.js.map +1 -1
- package/build/convert/stage/types.d.ts +27 -0
- package/build/convert/stage/types.d.ts.map +1 -0
- package/build/convert/stage/types.js +2 -0
- package/build/convert/stage/types.js.map +1 -0
- package/build/convert/stage.d.ts +4 -0
- package/build/convert/stage.d.ts.map +1 -0
- package/build/convert/stage.js +25 -0
- package/build/convert/stage.js.map +1 -0
- package/build/convert/taxonomy/types.d.ts +71 -0
- package/build/convert/taxonomy/types.d.ts.map +1 -0
- package/build/convert/taxonomy/types.js +2 -0
- package/build/convert/taxonomy/types.js.map +1 -0
- package/build/convert/types.d.ts +1 -648
- package/build/convert/types.d.ts.map +1 -1
- package/build/convert/utils.d.ts +5 -0
- package/build/convert/utils.d.ts.map +1 -0
- package/build/convert/utils.js +6 -0
- package/build/convert/utils.js.map +1 -0
- package/build/design/consts.d.ts +37 -0
- package/build/design/consts.d.ts.map +1 -1
- package/build/design/consts.js +44 -8
- package/build/design/consts.js.map +1 -1
- package/build/design/helpers.d.ts +9 -49
- package/build/design/helpers.d.ts.map +1 -1
- package/build/design/helpers.js +17 -224
- package/build/design/helpers.js.map +1 -1
- package/build/design/index.d.ts +3 -0
- package/build/design/index.d.ts.map +1 -1
- package/build/design/index.js +1 -0
- package/build/design/index.js.map +1 -1
- package/build/design/runtime/types.d.ts +16 -0
- package/build/design/runtime/types.d.ts.map +1 -0
- package/build/design/runtime/types.js +2 -0
- package/build/design/runtime/types.js.map +1 -0
- package/build/design/runtime.d.ts +8 -105
- package/build/design/runtime.d.ts.map +1 -1
- package/build/design/runtime.js +13 -48
- package/build/design/runtime.js.map +1 -1
- package/build/design/schemas.d.ts +1 -9
- package/build/design/schemas.d.ts.map +1 -1
- package/build/design/schemas.js +1 -1
- package/build/design/schemas.js.map +1 -1
- package/build/design/story/types.d.ts +67 -0
- package/build/design/story/types.d.ts.map +1 -0
- package/build/design/story/types.js +2 -0
- package/build/design/story/types.js.map +1 -0
- package/build/design/story.d.ts +4 -0
- package/build/design/story.d.ts.map +1 -0
- package/build/design/story.js +184 -0
- package/build/design/story.js.map +1 -0
- package/build/design/types.d.ts +75 -1
- package/build/design/types.d.ts.map +1 -1
- package/build/dev/schemas.d.ts.map +1 -1
- package/build/dev/schemas.js.map +1 -1
- package/build/dev/types.local.d.ts +5 -0
- package/build/dev/types.local.d.ts.map +1 -0
- package/build/dev/types.local.js +2 -0
- package/build/dev/types.local.js.map +1 -0
- package/build/integrity/consts.d.ts +0 -117
- package/build/integrity/consts.d.ts.map +1 -1
- package/build/integrity/consts.js +0 -281
- package/build/integrity/consts.js.map +1 -1
- package/build/integrity/consts.local.d.ts +5 -0
- package/build/integrity/consts.local.d.ts.map +1 -0
- package/build/integrity/consts.local.js +5 -0
- package/build/integrity/consts.local.js.map +1 -0
- package/build/integrity/index.d.ts +5 -0
- package/build/integrity/index.d.ts.map +1 -1
- package/build/integrity/index.js +3 -0
- package/build/integrity/index.js.map +1 -1
- package/build/integrity/layout/consts.d.ts +59 -0
- package/build/integrity/layout/consts.d.ts.map +1 -0
- package/build/integrity/layout/consts.js +66 -0
- package/build/integrity/layout/consts.js.map +1 -0
- package/build/integrity/layout/consts.local.d.ts +18 -0
- package/build/integrity/layout/consts.local.d.ts.map +1 -0
- package/build/integrity/layout/consts.local.js +176 -0
- package/build/integrity/layout/consts.local.js.map +1 -0
- package/build/integrity/layout/types.d.ts +35 -0
- package/build/integrity/layout/types.d.ts.map +1 -0
- package/build/integrity/layout/types.js +2 -0
- package/build/integrity/layout/types.js.map +1 -0
- package/build/integrity/layout.d.ts +4 -0
- package/build/integrity/layout.d.ts.map +1 -0
- package/build/integrity/layout.js +25 -0
- package/build/integrity/layout.js.map +1 -0
- package/build/integrity/types.d.ts +36 -2
- package/build/integrity/types.d.ts.map +1 -1
- package/build/integrity/utils.d.ts +13 -0
- package/build/integrity/utils.d.ts.map +1 -0
- package/build/integrity/utils.js +12 -0
- package/build/integrity/utils.js.map +1 -0
- package/build/integrity/verify/types.d.ts +26 -0
- package/build/integrity/verify/types.d.ts.map +1 -0
- package/build/integrity/verify/types.js +2 -0
- package/build/integrity/verify/types.js.map +1 -0
- package/build/integrity/verify.d.ts +5 -19
- package/build/integrity/verify.d.ts.map +1 -1
- package/build/integrity/verify.js +165 -175
- package/build/integrity/verify.js.map +1 -1
- package/build/intent/consts.d.ts +16 -0
- package/build/intent/consts.d.ts.map +1 -1
- package/build/intent/consts.js +63 -0
- package/build/intent/consts.js.map +1 -1
- package/build/intent/entrypoints.d.ts +2 -12
- package/build/intent/entrypoints.d.ts.map +1 -1
- package/build/intent/entrypoints.js.map +1 -1
- package/build/intent/index.d.ts +0 -1
- package/build/intent/index.d.ts.map +1 -1
- package/build/intent/index.js +0 -1
- package/build/intent/index.js.map +1 -1
- package/build/intent/types.d.ts +13 -0
- package/build/intent/types.d.ts.map +1 -1
- package/build/metadata/consts.d.ts +33 -0
- package/build/metadata/consts.d.ts.map +1 -1
- package/build/metadata/consts.js +37 -0
- package/build/metadata/consts.js.map +1 -1
- package/build/metadata/types.d.ts +1 -33
- package/build/metadata/types.d.ts.map +1 -1
- package/build/metadata/types.js +1 -38
- package/build/metadata/types.js.map +1 -1
- package/build/moderation/index.d.ts +2 -0
- package/build/moderation/index.d.ts.map +1 -1
- package/build/moderation/index.js +1 -0
- package/build/moderation/index.js.map +1 -1
- package/build/moderation/utils.d.ts +3 -15
- package/build/moderation/utils.d.ts.map +1 -1
- package/build/moderation/utils.js +5 -30
- package/build/moderation/utils.js.map +1 -1
- package/build/moderation/verdict/types.d.ts +24 -0
- package/build/moderation/verdict/types.d.ts.map +1 -0
- package/build/moderation/verdict/types.js +2 -0
- package/build/moderation/verdict/types.js.map +1 -0
- package/build/moderation/verdict.d.ts +4 -0
- package/build/moderation/verdict.d.ts.map +1 -0
- package/build/moderation/verdict.js +21 -0
- package/build/moderation/verdict.js.map +1 -0
- package/build/planning/card/types.d.ts +42 -0
- package/build/planning/card/types.d.ts.map +1 -0
- package/build/planning/card/types.js +2 -0
- package/build/planning/card/types.js.map +1 -0
- package/build/planning/card.d.ts +4 -0
- package/build/planning/card.d.ts.map +1 -0
- package/build/planning/card.js +51 -0
- package/build/planning/card.js.map +1 -0
- package/build/planning/consts.d.ts +13 -1
- package/build/planning/consts.d.ts.map +1 -1
- package/build/planning/consts.js +13 -0
- package/build/planning/consts.js.map +1 -1
- package/build/planning/helpers.d.ts +11 -37
- package/build/planning/helpers.d.ts.map +1 -1
- package/build/planning/helpers.js +24 -103
- package/build/planning/helpers.js.map +1 -1
- package/build/planning/index.d.ts +5 -1
- package/build/planning/index.d.ts.map +1 -1
- package/build/planning/index.js +2 -1
- package/build/planning/index.js.map +1 -1
- package/build/planning/landing/types.d.ts +16 -0
- package/build/planning/landing/types.d.ts.map +1 -0
- package/build/planning/landing/types.js +2 -0
- package/build/planning/landing/types.js.map +1 -0
- package/build/planning/landing.d.ts +5 -22
- package/build/planning/landing.d.ts.map +1 -1
- package/build/planning/landing.js +21 -35
- package/build/planning/landing.js.map +1 -1
- package/build/planning/schemas.d.ts +33 -0
- package/build/planning/schemas.d.ts.map +1 -1
- package/build/planning/schemas.js +173 -4
- package/build/planning/schemas.js.map +1 -1
- package/build/planning/spec/types.d.ts +22 -0
- package/build/planning/spec/types.d.ts.map +1 -0
- package/build/planning/spec/types.js +2 -0
- package/build/planning/spec/types.js.map +1 -0
- package/build/planning/spec.d.ts +4 -0
- package/build/planning/spec.d.ts.map +1 -0
- package/build/planning/spec.js +30 -0
- package/build/planning/spec.js.map +1 -0
- package/build/planning/types.d.ts +6 -5
- package/build/planning/types.d.ts.map +1 -1
- package/build/preview/consts.d.ts +3 -1
- package/build/preview/consts.d.ts.map +1 -1
- package/build/preview/consts.js +2 -0
- package/build/preview/consts.js.map +1 -1
- package/build/preview/types.d.ts +17 -2
- package/build/preview/types.d.ts.map +1 -1
- package/build/scaffold/consts.d.ts +40 -1
- package/build/scaffold/consts.d.ts.map +1 -1
- package/build/scaffold/consts.js +52 -0
- package/build/scaffold/consts.js.map +1 -1
- package/build/scaffold/helpers.d.ts +5 -30
- package/build/scaffold/helpers.d.ts.map +1 -1
- package/build/scaffold/helpers.js +9 -53
- package/build/scaffold/helpers.js.map +1 -1
- package/build/scaffold/index.d.ts +4 -0
- package/build/scaffold/index.d.ts.map +1 -1
- package/build/scaffold/index.js +2 -0
- package/build/scaffold/index.js.map +1 -1
- package/build/scaffold/landing/types.d.ts +48 -0
- package/build/scaffold/landing/types.d.ts.map +1 -0
- package/build/scaffold/landing/types.js +2 -0
- package/build/scaffold/landing/types.js.map +1 -0
- package/build/scaffold/landing.d.ts +4 -0
- package/build/scaffold/landing.d.ts.map +1 -0
- package/build/scaffold/landing.js +95 -0
- package/build/scaffold/landing.js.map +1 -0
- package/build/scaffold/schemas.d.ts +3 -2
- package/build/scaffold/schemas.d.ts.map +1 -1
- package/build/scaffold/schemas.js +177 -7
- package/build/scaffold/schemas.js.map +1 -1
- package/build/scaffold/share/types.d.ts +35 -0
- package/build/scaffold/share/types.d.ts.map +1 -0
- package/build/scaffold/share/types.js +2 -0
- package/build/scaffold/share/types.js.map +1 -0
- package/build/scaffold/share.d.ts +4 -0
- package/build/scaffold/share.d.ts.map +1 -0
- package/build/scaffold/share.js +42 -0
- package/build/scaffold/share.js.map +1 -0
- package/build/scaffold/types.d.ts +114 -2
- package/build/scaffold/types.d.ts.map +1 -1
- package/build/skills/consts.d.ts +42 -0
- package/build/skills/consts.d.ts.map +1 -1
- package/build/skills/consts.js +43 -0
- package/build/skills/consts.js.map +1 -1
- package/build/skills/index.d.ts +0 -1
- package/build/skills/index.d.ts.map +1 -1
- package/build/skills/index.js +0 -1
- package/build/skills/index.js.map +1 -1
- package/build/slot/command/types.d.ts +21 -0
- package/build/slot/command/types.d.ts.map +1 -0
- package/build/slot/command/types.js +2 -0
- package/build/slot/command/types.js.map +1 -0
- package/build/slot/command.d.ts +4 -0
- package/build/slot/command.d.ts.map +1 -0
- package/build/slot/command.js +31 -0
- package/build/slot/command.js.map +1 -0
- package/build/slot/consts.d.ts +7 -13
- package/build/slot/consts.d.ts.map +1 -1
- package/build/slot/consts.js +10 -36
- package/build/slot/consts.js.map +1 -1
- package/build/slot/helpers.d.ts +3 -22
- package/build/slot/helpers.d.ts.map +1 -1
- package/build/slot/helpers.js +5 -26
- package/build/slot/helpers.js.map +1 -1
- package/build/slot/index.d.ts +6 -0
- package/build/slot/index.d.ts.map +1 -1
- package/build/slot/index.js +3 -0
- package/build/slot/index.js.map +1 -1
- package/build/slot/layout/types.d.ts +17 -0
- package/build/slot/layout/types.d.ts.map +1 -0
- package/build/slot/layout/types.js +2 -0
- package/build/slot/layout/types.js.map +1 -0
- package/build/slot/layout.d.ts +5 -66
- package/build/slot/layout.d.ts.map +1 -1
- package/build/slot/layout.js +13 -27
- package/build/slot/layout.js.map +1 -1
- package/build/slot/origin/types.d.ts +23 -0
- package/build/slot/origin/types.d.ts.map +1 -0
- package/build/slot/origin/types.js +2 -0
- package/build/slot/origin/types.js.map +1 -0
- package/build/slot/origin.d.ts +4 -0
- package/build/slot/origin.d.ts.map +1 -0
- package/build/slot/origin.js +15 -0
- package/build/slot/origin.js.map +1 -0
- package/build/slot/types.d.ts +55 -1
- package/build/slot/types.d.ts.map +1 -1
- package/build/slot/utils.d.ts +6 -0
- package/build/slot/utils.d.ts.map +1 -0
- package/build/slot/utils.js +6 -0
- package/build/slot/utils.js.map +1 -0
- package/build/topology/card/types.d.ts +21 -0
- package/build/topology/card/types.d.ts.map +1 -0
- package/build/topology/card/types.js +2 -0
- package/build/topology/card/types.js.map +1 -0
- package/build/topology/card.d.ts +7 -19
- package/build/topology/card.d.ts.map +1 -1
- package/build/topology/card.js +84 -89
- package/build/topology/card.js.map +1 -1
- package/build/topology/consts.local.d.ts +4 -0
- package/build/topology/consts.local.d.ts.map +1 -0
- package/build/topology/consts.local.js +4 -0
- package/build/topology/consts.local.js.map +1 -0
- package/build/topology/helpers.d.ts +7 -33
- package/build/topology/helpers.d.ts.map +1 -1
- package/build/topology/helpers.js +15 -111
- package/build/topology/helpers.js.map +1 -1
- package/build/topology/index.d.ts +3 -0
- package/build/topology/index.d.ts.map +1 -1
- package/build/topology/index.js +1 -0
- package/build/topology/index.js.map +1 -1
- package/build/topology/resolve/types.d.ts +47 -0
- package/build/topology/resolve/types.d.ts.map +1 -0
- package/build/topology/resolve/types.js +2 -0
- package/build/topology/resolve/types.js.map +1 -0
- package/build/topology/resolve.d.ts +4 -0
- package/build/topology/resolve.d.ts.map +1 -0
- package/build/topology/resolve.js +89 -0
- package/build/topology/resolve.js.map +1 -0
- package/build/topology/types.d.ts +5 -0
- package/build/topology/types.d.ts.map +1 -1
- package/package.json +13 -13
- package/src/agent/consts.local.ts +47 -0
- package/src/agent/consts.ts +61 -0
- package/src/agent/index.ts +2 -0
- package/src/agent/presentation/types.ts +21 -0
- package/src/agent/presentation.ts +200 -309
- package/src/agent/types.local.ts +3 -0
- package/src/agent/types.ts +40 -0
- package/src/areas/consts.ts +7 -0
- package/src/areas/index.ts +1 -0
- package/src/areas/tenancy/types.ts +23 -0
- package/src/areas/tenancy.ts +26 -61
- package/src/areas/types.ts +31 -0
- package/src/ba/connecting/types.ts +45 -0
- package/src/ba/connecting.ts +64 -0
- package/src/ba/helpers.ts +8 -92
- package/src/ba/index.ts +2 -0
- package/src/ba/types.ts +1 -1
- package/src/blueprint/consts.local.ts +3 -0
- package/src/blueprint/consts.ts +52 -0
- package/src/blueprint/index.ts +1 -0
- package/src/blueprint/types.ts +4 -74
- package/src/blueprint/utils.ts +20 -0
- package/src/branding.ts +0 -17
- package/src/connect/branding/types.ts +29 -0
- package/src/connect/consts.ts +3 -22
- package/src/connect/conversion/types.ts +96 -0
- package/src/connect/entrypoints/types.ts +25 -0
- package/src/connect/entrypoints.ts +18 -35
- package/src/connect/errors/types.ts +22 -0
- package/src/connect/errors.ts +75 -0
- package/src/connect/index.ts +13 -2
- package/src/connect/kit/types.ts +56 -0
- package/src/connect/model-tier/types.ts +16 -0
- package/src/connect/model-tier.ts +22 -0
- package/src/connect/{ops.ts → ops/types.ts} +13 -3
- package/src/connect/pipeline/types.ts +41 -0
- package/src/connect/project/types.ts +127 -0
- package/src/connect/references/types.local.ts +5 -0
- package/src/connect/references/types.ts +73 -0
- package/src/connect/references.ts +15 -75
- package/src/connect/schemas.ts +19 -12
- package/src/connect/session/types.ts +81 -0
- package/src/connect/settings/types.ts +52 -0
- package/src/consts.ts +17 -0
- package/src/convert/analysis/types.ts +89 -0
- package/src/convert/census/consts.local.ts +120 -0
- package/src/convert/census/types.ts +181 -0
- package/src/convert/census.ts +95 -0
- package/src/convert/consts.ts +5 -14
- package/src/convert/detection/types.ts +74 -0
- package/src/convert/docs/types.ts +151 -0
- package/src/convert/docs.ts +15 -0
- package/src/convert/estimate/types.ts +75 -0
- package/src/convert/estimate.ts +19 -0
- package/src/convert/helpers.ts +29 -328
- package/src/convert/index.ts +15 -0
- package/src/convert/origin/types.ts +43 -0
- package/src/convert/origin.ts +33 -0
- package/src/convert/record/types.ts +105 -0
- package/src/convert/schemas.ts +13 -12
- package/src/convert/stage/types.ts +27 -0
- package/src/convert/stage.ts +31 -0
- package/src/convert/taxonomy/types.ts +74 -0
- package/src/convert/types.ts +5 -703
- package/src/convert/utils.ts +7 -0
- package/src/design/consts.ts +48 -0
- package/src/design/helpers.ts +20 -245
- package/src/design/index.ts +3 -0
- package/src/design/runtime/types.ts +14 -0
- package/src/design/runtime.ts +18 -116
- package/src/design/schemas.ts +2 -10
- package/src/design/story/types.ts +67 -0
- package/src/design/story.ts +221 -0
- package/src/design/types.ts +81 -1
- package/src/dev/schemas.ts +1 -3
- package/src/dev/types.local.ts +4 -0
- package/src/integrity/consts.local.ts +5 -0
- package/src/integrity/consts.ts +0 -348
- package/src/integrity/index.ts +5 -0
- package/src/integrity/layout/consts.local.ts +188 -0
- package/src/integrity/layout/consts.ts +79 -0
- package/src/integrity/layout/types.ts +35 -0
- package/src/integrity/layout.ts +39 -0
- package/src/integrity/types.ts +37 -2
- package/src/integrity/utils.ts +21 -0
- package/src/integrity/verify/types.ts +26 -0
- package/src/integrity/verify.ts +178 -184
- package/src/intent/consts.ts +67 -0
- package/src/intent/entrypoints.ts +2 -3
- package/src/intent/index.ts +0 -1
- package/src/intent/types.ts +10 -0
- package/src/metadata/consts.ts +37 -0
- package/src/metadata/types.ts +1 -37
- package/src/moderation/index.ts +2 -0
- package/src/moderation/utils.ts +7 -30
- package/src/moderation/verdict/types.ts +22 -0
- package/src/moderation/verdict.ts +28 -0
- package/src/planning/card/types.ts +44 -0
- package/src/planning/card.ts +77 -0
- package/src/planning/consts.ts +15 -2
- package/src/planning/helpers.ts +28 -116
- package/src/planning/index.ts +5 -1
- package/src/planning/landing/types.ts +15 -0
- package/src/planning/landing.ts +28 -38
- package/src/planning/schemas.ts +191 -4
- package/src/planning/spec/types.ts +22 -0
- package/src/planning/spec.ts +41 -0
- package/src/planning/types.ts +6 -6
- package/src/preview/consts.ts +2 -0
- package/src/preview/types.ts +19 -0
- package/src/scaffold/consts.ts +65 -1
- package/src/scaffold/helpers.ts +14 -80
- package/src/scaffold/index.ts +4 -0
- package/src/scaffold/landing/types.ts +48 -0
- package/src/scaffold/landing.ts +120 -0
- package/src/scaffold/schemas.ts +183 -7
- package/src/scaffold/share/types.ts +35 -0
- package/src/scaffold/share.ts +60 -0
- package/src/scaffold/types.ts +123 -1
- package/src/skills/consts.ts +46 -0
- package/src/skills/index.ts +0 -1
- package/src/slot/command/types.ts +21 -0
- package/src/slot/command.ts +38 -0
- package/src/slot/consts.ts +11 -40
- package/src/slot/helpers.ts +6 -31
- package/src/slot/index.ts +6 -0
- package/src/slot/layout/types.ts +17 -0
- package/src/slot/layout.ts +19 -77
- package/src/slot/origin/types.ts +23 -0
- package/src/slot/origin.ts +20 -0
- package/src/slot/types.ts +58 -1
- package/src/slot/utils.ts +10 -0
- package/src/topology/card/types.ts +21 -0
- package/src/topology/card.ts +85 -90
- package/src/topology/consts.local.ts +6 -0
- package/src/topology/helpers.ts +20 -125
- package/src/topology/index.ts +3 -0
- package/src/topology/resolve/types.ts +47 -0
- package/src/topology/resolve.ts +118 -0
- package/src/topology/types.ts +6 -0
- package/tests/blueprint.spec.ts +1 -2
- package/tests/branding.spec.ts +2 -2
- package/tests/connect-convert.spec.ts +21 -1
- package/tests/connect-errors.spec.ts +34 -1
- package/tests/convert.spec.ts +51 -52
- package/tests/design.spec.ts +13 -16
- package/tests/error-status.spec.ts +7 -1
- package/tests/planning.spec.ts +58 -75
- package/tests/presentation.spec.ts +21 -23
- package/tests/scaffold.spec.ts +286 -6
- package/tests/tenancy.spec.ts +21 -21
- package/build/connect/ops.d.ts.map +0 -1
- package/build/connect/ops.js +0 -2
- package/build/connect/ops.js.map +0 -1
- package/build/connect/types.d.ts +0 -437
- package/build/connect/types.d.ts.map +0 -1
- package/build/intent/flow.d.ts +0 -17
- package/build/intent/flow.d.ts.map +0 -1
- package/build/intent/flow.js +0 -65
- package/build/intent/flow.js.map +0 -1
- package/build/planning/flows.d.ts +0 -34
- package/build/planning/flows.d.ts.map +0 -1
- package/build/planning/flows.js +0 -174
- package/build/planning/flows.js.map +0 -1
- package/build/skills/roles.d.ts +0 -43
- package/build/skills/roles.d.ts.map +0 -1
- package/build/skills/roles.js +0 -44
- package/build/skills/roles.js.map +0 -1
- package/src/connect/types.ts +0 -466
- package/src/intent/flow.ts +0 -67
- package/src/planning/flows.ts +0 -204
- package/src/skills/roles.ts +0 -46
- /package/build/{connect → agent/presentation}/types.js +0 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { TargetLayout } from '../consts.js'
|
|
2
|
+
import type { TargetLayoutManifest } from '../types.js'
|
|
3
|
+
|
|
4
|
+
/** The layouts a target tree may be in: what each asserts, and which one a tree is. */
|
|
5
|
+
export interface TargetLayoutHelper {
|
|
6
|
+
/** What one layout asserts. */
|
|
7
|
+
targetManifest: (layout: TargetLayout) => TargetLayoutManifest
|
|
8
|
+
/**
|
|
9
|
+
* Whether a tree of this layout can still be GENERATED INTO.
|
|
10
|
+
*
|
|
11
|
+
* A legacy target is served, built and run exactly like any other — that is the whole point of
|
|
12
|
+
* verifying it against its own manifest. What no longer works on it is code generation: every
|
|
13
|
+
* path builder, every stamped import specifier and the whole `docs/` metadata tree name the
|
|
14
|
+
* current layout's packages, so a story implemented into a legacy tree writes files into
|
|
15
|
+
* directories its workspace does not contain. That fails silently — the build succeeds, the
|
|
16
|
+
* story completes and the application does not change — which is why the platform refuses
|
|
17
|
+
* instead, and names re-initialization as the one cure.
|
|
18
|
+
*
|
|
19
|
+
* `undefined` reads as current: a publisher that predates layout reporting omits it, and reading
|
|
20
|
+
* that silence as legacy would refuse development for every slot already in the cluster.
|
|
21
|
+
*/
|
|
22
|
+
isLegacyLayout: (layout: TargetLayout | string | undefined | null) => boolean
|
|
23
|
+
/**
|
|
24
|
+
* Which layout a tree is in, from its files alone — IO-free, like everything else here.
|
|
25
|
+
*
|
|
26
|
+
* A tree that shows neither probe is reported as the current layout: it is not a target at all,
|
|
27
|
+
* and the integrity report is what has to say so, in the vocabulary of the layout the platform
|
|
28
|
+
* generates today.
|
|
29
|
+
*/
|
|
30
|
+
detectTargetLayout: (files: Record<string, string | null>) => TargetLayout
|
|
31
|
+
/** `<slug>-<package>` — the only way a workspace package is ever named, in either layout. */
|
|
32
|
+
targetPackageName: (slug: string, pkg: string) => string
|
|
33
|
+
/** Everything one package must declare, once the root manifest has named the slug. */
|
|
34
|
+
targetRequiredDeps: (slug: string, pkg: string, layout?: TargetLayout) => string[]
|
|
35
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { TARGET_CURRENT_LAYOUT, TargetLayout } from './consts.js'
|
|
2
|
+
import type { TargetLayoutManifest } from './types.js'
|
|
3
|
+
import { TARGET_LAYOUTS } from './layout/consts.js'
|
|
4
|
+
import type { TargetLayoutHelper } from './layout/types.js'
|
|
5
|
+
|
|
6
|
+
export const createTargetLayoutHelper = (): TargetLayoutHelper => {
|
|
7
|
+
const targetManifest = (layout: TargetLayout): TargetLayoutManifest =>
|
|
8
|
+
TARGET_LAYOUTS[layout]
|
|
9
|
+
|
|
10
|
+
const isLegacyLayout = (layout: TargetLayout | string | undefined | null): boolean =>
|
|
11
|
+
layout != null && layout !== TARGET_CURRENT_LAYOUT
|
|
12
|
+
|
|
13
|
+
const detectTargetLayout = (files: Record<string, string | null>): TargetLayout => {
|
|
14
|
+
for (const manifest of Object.values(TARGET_LAYOUTS)) {
|
|
15
|
+
if (files[manifest.probe] != null) {
|
|
16
|
+
return manifest.layout
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
return TARGET_CURRENT_LAYOUT
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const targetPackageName = (slug: string, pkg: string): string => `${slug}-${pkg}`
|
|
24
|
+
|
|
25
|
+
const targetRequiredDeps = (
|
|
26
|
+
slug: string, pkg: string, layout: TargetLayout = TARGET_CURRENT_LAYOUT
|
|
27
|
+
): string[] => {
|
|
28
|
+
const manifest = targetManifest(layout)
|
|
29
|
+
|
|
30
|
+
return [
|
|
31
|
+
...(manifest.requiredDeps[pkg] ?? []),
|
|
32
|
+
...(manifest.workspaceDeps[pkg] ?? []).map(dep => targetPackageName(slug, dep)),
|
|
33
|
+
]
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return { targetManifest, isLegacyLayout, detectTargetLayout, targetPackageName, targetRequiredDeps }
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export const targetLayoutHelper = createTargetLayoutHelper()
|
package/src/integrity/types.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type IntegrityRule, TargetLayout } from './consts.js'
|
|
2
2
|
|
|
3
3
|
/** One reason a tree was refused. */
|
|
4
4
|
export interface IntegrityViolation {
|
|
@@ -34,4 +34,39 @@ export interface TargetIntegrityReport {
|
|
|
34
34
|
* The file map handed to the verifier: every path in `TARGET_INTEGRITY_FILES`, with `null` for
|
|
35
35
|
* one that could not be read. The verifier does no IO — see `verifyTargetShape`.
|
|
36
36
|
*/
|
|
37
|
-
export
|
|
37
|
+
export interface TargetFileMap {
|
|
38
|
+
[path: string]: string | null
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Everything one layout asserts about a tree.
|
|
43
|
+
*
|
|
44
|
+
* One record per layout rather than a set of parallel constants, because the rules are the same
|
|
45
|
+
* questions asked of a different package set: a rule that exists for one layout and is forgotten
|
|
46
|
+
* for the other is a hole that nothing fails on.
|
|
47
|
+
*/
|
|
48
|
+
export interface TargetLayoutManifest {
|
|
49
|
+
layout: TargetLayout
|
|
50
|
+
/** Directory holding the workspace packages, relative to the sandbox root. */
|
|
51
|
+
dir: string
|
|
52
|
+
/** Package directory names, in build order. */
|
|
53
|
+
packages: readonly string[]
|
|
54
|
+
/** The one file whose presence identifies this layout and appears in no other. */
|
|
55
|
+
probe: string
|
|
56
|
+
/** Every file the verifier reads for this layout. */
|
|
57
|
+
files: readonly string[]
|
|
58
|
+
/** Files no user-facing write may touch in a tree of this layout. */
|
|
59
|
+
protectedFiles: readonly string[]
|
|
60
|
+
/** The exact `scripts.build` each package must declare. */
|
|
61
|
+
buildScripts: Readonly<Record<string, string>>
|
|
62
|
+
/** Framework dependencies without which a package cannot be the generated app. */
|
|
63
|
+
requiredDeps: Readonly<Record<string, readonly string[]>>
|
|
64
|
+
/** The workspace siblings each package must depend on. */
|
|
65
|
+
workspaceDeps: Readonly<Record<string, readonly string[]>>
|
|
66
|
+
/** The glob spelling of the root manifest's workspace list. */
|
|
67
|
+
workspaceGlob: string
|
|
68
|
+
/** The written-out spelling of the same list. */
|
|
69
|
+
workspaceEntries: readonly string[]
|
|
70
|
+
/** Markers proving an entry file is still the framework's entry, keyed by file. */
|
|
71
|
+
markers: Readonly<Record<string, readonly string[]>>
|
|
72
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { TargetLayout } from './consts.js'
|
|
2
|
+
import { targetLayoutHelper } from './layout.js'
|
|
3
|
+
import type { TargetLayoutManifest } from './types.js'
|
|
4
|
+
|
|
5
|
+
/** @deprecated compat:factory-refactor — use `targetLayoutHelper.targetManifest(…)` */
|
|
6
|
+
export const targetManifest = (layout: TargetLayout): TargetLayoutManifest => targetLayoutHelper.targetManifest(layout)
|
|
7
|
+
|
|
8
|
+
/** @deprecated compat:factory-refactor — use `targetLayoutHelper.isLegacyLayout(…)` */
|
|
9
|
+
export const isLegacyLayout = (layout: TargetLayout | string | undefined | null): boolean =>
|
|
10
|
+
targetLayoutHelper.isLegacyLayout(layout)
|
|
11
|
+
|
|
12
|
+
/** @deprecated compat:factory-refactor — use `targetLayoutHelper.detectTargetLayout(…)` */
|
|
13
|
+
export const detectTargetLayout = (files: Record<string, string | null>): TargetLayout =>
|
|
14
|
+
targetLayoutHelper.detectTargetLayout(files)
|
|
15
|
+
|
|
16
|
+
/** @deprecated compat:factory-refactor — use `targetLayoutHelper.targetPackageName(…)` */
|
|
17
|
+
export const targetPackageName = (slug: string, pkg: string): string => targetLayoutHelper.targetPackageName(slug, pkg)
|
|
18
|
+
|
|
19
|
+
/** @deprecated compat:factory-refactor — use `targetLayoutHelper.targetRequiredDeps(…)` */
|
|
20
|
+
export const targetRequiredDeps = (slug: string, pkg: string, layout?: TargetLayout): string[] =>
|
|
21
|
+
targetLayoutHelper.targetRequiredDeps(slug, pkg, layout)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { TargetFileMap, TargetIntegrityReport } from '../types.js'
|
|
2
|
+
|
|
3
|
+
/** The integrity verdict on a target tree, and its one-line-per-violation rendering. */
|
|
4
|
+
export interface TargetIntegrityHelper {
|
|
5
|
+
/**
|
|
6
|
+
* Decide whether a tree is the generated application, from its files alone.
|
|
7
|
+
*
|
|
8
|
+
* Pure and IO-free on purpose. The publisher reads the sandbox and calls this; a test reads
|
|
9
|
+
* the template and calls this; both then agree by construction. It is also why the check is
|
|
10
|
+
* cheap enough to sit in front of every spawn rather than only at the moments someone
|
|
11
|
+
* remembered to guard.
|
|
12
|
+
*
|
|
13
|
+
* The tree picks the manifest it is verified against. A slot holds the layout it was
|
|
14
|
+
* initialized with for the life of the project and nothing migrates it, so asserting the
|
|
15
|
+
* current layout unconditionally does not make the check stricter — it aims it at a tree that
|
|
16
|
+
* was never there, and every legacy slot answers with one `missing` violation per file it was
|
|
17
|
+
* never supposed to have. That refuses the application the platform itself generated.
|
|
18
|
+
*
|
|
19
|
+
* Every rule collects rather than short-circuits: a tree that fails is usually a person's
|
|
20
|
+
* repository, and telling them one thing at a time turns a fix into a dozen round trips
|
|
21
|
+
* through a pull that reverts itself each time.
|
|
22
|
+
*/
|
|
23
|
+
verifyTargetShape: (files: TargetFileMap) => TargetIntegrityReport
|
|
24
|
+
/** One line per violation — what goes into a log, `slot.lastError`, or a build diagnostic. */
|
|
25
|
+
formatIntegrityReport: (report: TargetIntegrityReport) => string
|
|
26
|
+
}
|
package/src/integrity/verify.ts
CHANGED
|
@@ -1,221 +1,215 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
targetManifest, targetPackageName, targetRequiredDeps
|
|
4
|
-
} from './consts.js'
|
|
1
|
+
import { IntegrityRule, TARGET_FORBIDDEN_SCRIPTS, TARGET_SLUG_PATTERN } from './consts.js'
|
|
2
|
+
import { targetLayoutHelper } from './layout.js'
|
|
5
3
|
import type { IntegrityViolation, TargetFileMap, TargetIntegrityReport } from './types.js'
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
*/
|
|
25
|
-
export const verifyTargetShape = (files: TargetFileMap): TargetIntegrityReport => {
|
|
26
|
-
const violations: IntegrityViolation[] = []
|
|
27
|
-
const layout = detectTargetLayout(files)
|
|
28
|
-
const manifest = targetManifest(layout)
|
|
29
|
-
|
|
30
|
-
// Only this layout's files. The caller reads the union of every layout's list so that the
|
|
31
|
-
// probes are in hand before the layout is known — reporting the other layout's paths as
|
|
32
|
-
// missing would refuse both trees at once.
|
|
33
|
-
for (const path of manifest.files) {
|
|
34
|
-
if (files[path] == null) {
|
|
35
|
-
violations.push({
|
|
36
|
-
path, rule: IntegrityRule.Missing,
|
|
37
|
-
detail: `${path} is missing — a Viable project always has it.`
|
|
38
|
-
})
|
|
4
|
+
import type { TargetIntegrityHelper } from './verify/types.js'
|
|
5
|
+
|
|
6
|
+
export const createTargetIntegrityHelper = (): TargetIntegrityHelper => {
|
|
7
|
+
const verifyTargetShape = (files: TargetFileMap): TargetIntegrityReport => {
|
|
8
|
+
const violations: IntegrityViolation[] = []
|
|
9
|
+
const layout = targetLayoutHelper.detectTargetLayout(files)
|
|
10
|
+
const manifest = targetLayoutHelper.targetManifest(layout)
|
|
11
|
+
|
|
12
|
+
// Only this layout's files. The caller reads the union of every layout's list so that the
|
|
13
|
+
// probes are in hand before the layout is known — reporting the other layout's paths as
|
|
14
|
+
// missing would refuse both trees at once.
|
|
15
|
+
for (const path of manifest.files) {
|
|
16
|
+
if (files[path] == null) {
|
|
17
|
+
violations.push({
|
|
18
|
+
path, rule: IntegrityRule.Missing,
|
|
19
|
+
detail: `${path} is missing — a Viable project always has it.`
|
|
20
|
+
})
|
|
21
|
+
}
|
|
39
22
|
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// The slug is read once, from the root, and every package name is checked against it. A
|
|
43
|
-
// project the user renamed is still the project; a package that does not carry the root's
|
|
44
|
-
// name is a different tree wearing the workspace layout.
|
|
45
|
-
const slug = checkRoot()
|
|
46
|
-
checkInstallConfig()
|
|
47
|
-
for (const pkg of manifest.packages) {
|
|
48
|
-
checkPackage(pkg, slug)
|
|
49
|
-
}
|
|
50
|
-
checkMarkers()
|
|
51
23
|
|
|
52
|
-
|
|
24
|
+
// The slug is read once, from the root, and every package name is checked against it. A
|
|
25
|
+
// project the user renamed is still the project; a package that does not carry the root's
|
|
26
|
+
// name is a different tree wearing the workspace layout.
|
|
27
|
+
const slug = checkRoot()
|
|
28
|
+
checkInstallConfig()
|
|
29
|
+
for (const pkg of manifest.packages) {
|
|
30
|
+
checkPackage(pkg, slug)
|
|
31
|
+
}
|
|
32
|
+
checkMarkers()
|
|
53
33
|
|
|
54
|
-
|
|
55
|
-
const found = readJson('package.json')
|
|
56
|
-
if (found == null) return null
|
|
34
|
+
return { ok: violations.length === 0, violations, layout }
|
|
57
35
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
path: 'package.json', rule: IntegrityRule.PackageName,
|
|
62
|
-
detail: `The root package name "${String(found.name)}" is not a project slug`
|
|
63
|
-
+ ` — lowercase letters, digits and inner hyphens, up to 32 characters.`
|
|
64
|
-
})
|
|
65
|
-
}
|
|
66
|
-
if (found.type !== 'module') {
|
|
67
|
-
violations.push({
|
|
68
|
-
path: 'package.json', rule: IntegrityRule.ModuleType,
|
|
69
|
-
detail: 'The root package must declare "type": "module".'
|
|
70
|
-
})
|
|
71
|
-
}
|
|
36
|
+
function checkRoot(): string | null {
|
|
37
|
+
const found = readJson('package.json')
|
|
38
|
+
if (found == null) return null
|
|
72
39
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
40
|
+
const name = typeof found.name === 'string' ? found.name : ''
|
|
41
|
+
if (!TARGET_SLUG_PATTERN.test(name)) {
|
|
42
|
+
violations.push({
|
|
43
|
+
path: 'package.json', rule: IntegrityRule.PackageName,
|
|
44
|
+
detail: `The root package name "${String(found.name)}" is not a project slug`
|
|
45
|
+
+ ` — lowercase letters, digits and inner hyphens, up to 32 characters.`
|
|
46
|
+
})
|
|
47
|
+
}
|
|
48
|
+
if (found.type !== 'module') {
|
|
49
|
+
violations.push({
|
|
50
|
+
path: 'package.json', rule: IntegrityRule.ModuleType,
|
|
51
|
+
detail: 'The root package must declare "type": "module".'
|
|
52
|
+
})
|
|
53
|
+
}
|
|
86
54
|
|
|
87
|
-
|
|
55
|
+
// The workspace list is what makes the packages resolve to each other. Both spellings are
|
|
56
|
+
// the same tree: the glob `create-app` emits, or the entries written out.
|
|
57
|
+
const declared = Array.isArray(found.workspaces) ? found.workspaces as string[] : []
|
|
58
|
+
const isGlob = declared.length === 1 && declared[0] === manifest.workspaceGlob
|
|
59
|
+
const isExplicit = declared.length === manifest.workspaceEntries.length
|
|
60
|
+
&& manifest.workspaceEntries.every(entry => declared.includes(entry))
|
|
61
|
+
if (!isGlob && !isExplicit) {
|
|
62
|
+
violations.push({
|
|
63
|
+
path: 'package.json', rule: IntegrityRule.Workspaces,
|
|
64
|
+
detail: `The root package must declare the workspaces as ["${manifest.workspaceGlob}"]`
|
|
65
|
+
+ ` or as exactly ${manifest.workspaceEntries.join(', ')}.`
|
|
66
|
+
})
|
|
67
|
+
}
|
|
88
68
|
|
|
89
|
-
|
|
90
|
-
}
|
|
69
|
+
checkScripts('package.json', found)
|
|
91
70
|
|
|
92
|
-
|
|
93
|
-
* `bunfig.toml` decides where `bun install` fetches from and how it links.
|
|
94
|
-
*
|
|
95
|
-
* A registry line pointed elsewhere makes every dependency in the tree arbitrary code
|
|
96
|
-
* regardless of how well-formed the manifests are, so it is checked as a shape rather than
|
|
97
|
-
* a marker: nothing but the hoisted-linker install block belongs in it.
|
|
98
|
-
*/
|
|
99
|
-
function checkInstallConfig(): void {
|
|
100
|
-
const content = files['bunfig.toml']
|
|
101
|
-
if (content == null) return
|
|
102
|
-
|
|
103
|
-
const offending = content.split('\n')
|
|
104
|
-
.map(line => line.trim())
|
|
105
|
-
.filter(line => line.length > 0 && !line.startsWith('#'))
|
|
106
|
-
.filter(line => !/^\[install\]$/.test(line) && !/^linker\s*=/.test(line))
|
|
107
|
-
|
|
108
|
-
if (offending.length > 0) {
|
|
109
|
-
violations.push({
|
|
110
|
-
path: 'bunfig.toml', rule: IntegrityRule.InstallConfig,
|
|
111
|
-
detail: 'bunfig.toml may only declare the hoisted install linker.'
|
|
112
|
-
})
|
|
71
|
+
return TARGET_SLUG_PATTERN.test(name) ? name : null
|
|
113
72
|
}
|
|
114
|
-
}
|
|
115
73
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
const
|
|
125
|
-
if (
|
|
74
|
+
/**
|
|
75
|
+
* `bunfig.toml` decides where `bun install` fetches from and how it links.
|
|
76
|
+
*
|
|
77
|
+
* A registry line pointed elsewhere makes every dependency in the tree arbitrary code
|
|
78
|
+
* regardless of how well-formed the manifests are, so it is checked as a shape rather than
|
|
79
|
+
* a marker: nothing but the hoisted-linker install block belongs in it.
|
|
80
|
+
*/
|
|
81
|
+
function checkInstallConfig(): void {
|
|
82
|
+
const content = files['bunfig.toml']
|
|
83
|
+
if (content == null) return
|
|
84
|
+
|
|
85
|
+
const offending = content.split('\n')
|
|
86
|
+
.map(line => line.trim())
|
|
87
|
+
.filter(line => line.length > 0 && !line.startsWith('#'))
|
|
88
|
+
.filter(line => !/^\[install\]$/.test(line) && !/^linker\s*=/.test(line))
|
|
89
|
+
|
|
90
|
+
if (offending.length > 0) {
|
|
126
91
|
violations.push({
|
|
127
|
-
path, rule: IntegrityRule.
|
|
128
|
-
detail:
|
|
92
|
+
path: 'bunfig.toml', rule: IntegrityRule.InstallConfig,
|
|
93
|
+
detail: 'bunfig.toml may only declare the hoisted install linker.'
|
|
129
94
|
})
|
|
130
95
|
}
|
|
131
96
|
}
|
|
132
|
-
if (found.type !== 'module') {
|
|
133
|
-
violations.push({
|
|
134
|
-
path, rule: IntegrityRule.ModuleType,
|
|
135
|
-
detail: `Package "${pkg}" must declare "type": "module".`
|
|
136
|
-
})
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
const scripts = asRecord(found.scripts)
|
|
140
|
-
if (scripts.build !== manifest.buildScripts[pkg]) {
|
|
141
|
-
// The one the platform actually spawns.
|
|
142
|
-
violations.push({
|
|
143
|
-
path, rule: IntegrityRule.BuildScript,
|
|
144
|
-
detail: `The build script of "${pkg}" must be exactly \`${manifest.buildScripts[pkg]}\`.`
|
|
145
|
-
})
|
|
146
|
-
}
|
|
147
|
-
checkScripts(path, found)
|
|
148
97
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
98
|
+
function checkPackage(pkg: string, slug: string | null): void {
|
|
99
|
+
const path = `${manifest.dir}/${pkg}/package.json`
|
|
100
|
+
const found = readJson(path)
|
|
101
|
+
if (found == null) return
|
|
102
|
+
|
|
103
|
+
// With no readable slug the name and the workspace dependencies have nothing to be checked
|
|
104
|
+
// against; the root violation already says why, and repeating it per package is noise.
|
|
105
|
+
if (slug != null) {
|
|
106
|
+
const expected = targetLayoutHelper.targetPackageName(slug, pkg)
|
|
107
|
+
if (found.name !== expected) {
|
|
108
|
+
violations.push({
|
|
109
|
+
path, rule: IntegrityRule.PackageName,
|
|
110
|
+
detail: `Package must be named "${expected}", not "${String(found.name)}".`
|
|
111
|
+
})
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (found.type !== 'module') {
|
|
154
115
|
violations.push({
|
|
155
|
-
path, rule: IntegrityRule.
|
|
156
|
-
detail: `Package "${pkg}" must
|
|
116
|
+
path, rule: IntegrityRule.ModuleType,
|
|
117
|
+
detail: `Package "${pkg}" must declare "type": "module".`
|
|
157
118
|
})
|
|
158
119
|
}
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
120
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
for (const hook of TARGET_FORBIDDEN_SCRIPTS) {
|
|
166
|
-
if (scripts[hook] != null) {
|
|
121
|
+
const scripts = asRecord(found.scripts)
|
|
122
|
+
if (scripts.build !== manifest.buildScripts[pkg]) {
|
|
123
|
+
// The one the platform actually spawns.
|
|
167
124
|
violations.push({
|
|
168
|
-
path, rule: IntegrityRule.
|
|
169
|
-
detail: `
|
|
125
|
+
path, rule: IntegrityRule.BuildScript,
|
|
126
|
+
detail: `The build script of "${pkg}" must be exactly \`${manifest.buildScripts[pkg]}\`.`
|
|
170
127
|
})
|
|
171
128
|
}
|
|
129
|
+
checkScripts(path, found)
|
|
130
|
+
|
|
131
|
+
if (slug == null) return
|
|
132
|
+
|
|
133
|
+
const deps = { ...asRecord(found.dependencies), ...asRecord(found.devDependencies) }
|
|
134
|
+
for (const dep of targetLayoutHelper.targetRequiredDeps(slug, pkg, layout)) {
|
|
135
|
+
if (deps[dep] == null) {
|
|
136
|
+
violations.push({
|
|
137
|
+
path, rule: IntegrityRule.RequiredDependency,
|
|
138
|
+
detail: `Package "${pkg}" must depend on ${dep}.`
|
|
139
|
+
})
|
|
140
|
+
}
|
|
141
|
+
}
|
|
172
142
|
}
|
|
173
|
-
}
|
|
174
143
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
const
|
|
178
|
-
|
|
144
|
+
/** Lifecycle hooks run on `bun install`, before anything else has a chance to refuse. */
|
|
145
|
+
function checkScripts(path: string, found: Record<string, unknown>): void {
|
|
146
|
+
const scripts = asRecord(found.scripts)
|
|
147
|
+
for (const hook of TARGET_FORBIDDEN_SCRIPTS) {
|
|
148
|
+
if (scripts[hook] != null) {
|
|
149
|
+
violations.push({
|
|
150
|
+
path, rule: IntegrityRule.LifecycleScript,
|
|
151
|
+
detail: `Lifecycle script "${hook}" is not allowed in a target project.`
|
|
152
|
+
})
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
179
156
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
157
|
+
function checkMarkers(): void {
|
|
158
|
+
for (const [path, markers] of Object.entries(manifest.markers)) {
|
|
159
|
+
const content = files[path]
|
|
160
|
+
if (content == null) continue
|
|
161
|
+
|
|
162
|
+
const absent = markers.filter(marker => !content.includes(marker))
|
|
163
|
+
if (absent.length > 0) {
|
|
164
|
+
violations.push({
|
|
165
|
+
path, rule: IntegrityRule.EntryMarker,
|
|
166
|
+
detail: `${path} does not look like the generated app's entry: ${absent.join(', ')} not found.`
|
|
167
|
+
})
|
|
168
|
+
}
|
|
186
169
|
}
|
|
187
170
|
}
|
|
188
|
-
}
|
|
189
171
|
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
172
|
+
function readJson(path: string): Record<string, unknown> | null {
|
|
173
|
+
const content = files[path]
|
|
174
|
+
if (content == null) return null
|
|
175
|
+
try {
|
|
176
|
+
const parsed: unknown = JSON.parse(content)
|
|
177
|
+
|
|
178
|
+
return typeof parsed === 'object' && parsed !== null
|
|
179
|
+
? parsed as Record<string, unknown>
|
|
180
|
+
: reportUnreadable(path)
|
|
181
|
+
} catch {
|
|
182
|
+
return reportUnreadable(path)
|
|
183
|
+
}
|
|
201
184
|
}
|
|
202
|
-
}
|
|
203
185
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
186
|
+
function reportUnreadable(path: string): null {
|
|
187
|
+
violations.push({
|
|
188
|
+
path, rule: IntegrityRule.Unreadable, detail: `${path} is not a readable JSON object.`
|
|
189
|
+
})
|
|
190
|
+
|
|
191
|
+
return null
|
|
192
|
+
}
|
|
208
193
|
|
|
209
|
-
|
|
194
|
+
function asRecord(value: unknown): Record<string, string> {
|
|
195
|
+
return typeof value === 'object' && value !== null
|
|
196
|
+
? value as Record<string, string>
|
|
197
|
+
: {}
|
|
198
|
+
}
|
|
210
199
|
}
|
|
211
200
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
}
|
|
201
|
+
const formatIntegrityReport = (report: TargetIntegrityReport): string =>
|
|
202
|
+
report.violations.map(violation => `${violation.path}: ${violation.detail}`).join('\n')
|
|
203
|
+
|
|
204
|
+
return { verifyTargetShape, formatIntegrityReport }
|
|
217
205
|
}
|
|
218
206
|
|
|
219
|
-
|
|
207
|
+
export const targetIntegrityHelper = createTargetIntegrityHelper()
|
|
208
|
+
|
|
209
|
+
/** @deprecated compat:factory-refactor — use `targetIntegrityHelper.verifyTargetShape(…)` */
|
|
210
|
+
export const verifyTargetShape = (files: TargetFileMap): TargetIntegrityReport =>
|
|
211
|
+
targetIntegrityHelper.verifyTargetShape(files)
|
|
212
|
+
|
|
213
|
+
/** @deprecated compat:factory-refactor — use `targetIntegrityHelper.formatIntegrityReport(…)` */
|
|
220
214
|
export const formatIntegrityReport = (report: TargetIntegrityReport): string =>
|
|
221
|
-
|
|
215
|
+
targetIntegrityHelper.formatIntegrityReport(report)
|
package/src/intent/consts.ts
CHANGED
|
@@ -12,6 +12,10 @@
|
|
|
12
12
|
* read the same declarations, and none of them may reinvent a name the others parse.
|
|
13
13
|
*/
|
|
14
14
|
|
|
15
|
+
import { DISPATCHER } from '@owlmeans/auth'
|
|
16
|
+
import { HOME } from '@owlmeans/context'
|
|
17
|
+
import type { ShallowFlow } from '@owlmeans/flow'
|
|
18
|
+
|
|
15
19
|
/** Every address of the hand-off. API routes are guest routes; the landing is a screen. */
|
|
16
20
|
export const intent = Object.freeze({
|
|
17
21
|
base: 'viable:manager-api:intent:base',
|
|
@@ -64,3 +68,66 @@ export enum IntentFlowStep {
|
|
|
64
68
|
/** The platform's home screen, where the draft is offered back. */
|
|
65
69
|
Review = 'review',
|
|
66
70
|
}
|
|
71
|
+
|
|
72
|
+
const payloadMap = { [INTENT_PAYLOAD_REF]: 0 }
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* The hand-off flow both sides walk.
|
|
76
|
+
*
|
|
77
|
+
* `compose` runs on the public site: the prompt is stashed and `handoff` carries the reference to
|
|
78
|
+
* `land`, whose module is the platform's landing screen — so the site redirects to
|
|
79
|
+
* `land`'s address with the payload as query. The landing then enters at `land` FRESH (the
|
|
80
|
+
* reference arrives as `?ref=`, never as a serialized token, which the platform's own sign-in
|
|
81
|
+
* parses from `?flow=` on every page), and either goes on to `review` (signed in) or parks the flow
|
|
82
|
+
* with `suspendFlow` at `sign-in`, whose non-explicit way forward is `review` — the home screen —
|
|
83
|
+
* so whichever sign-in method finishes lands there.
|
|
84
|
+
*
|
|
85
|
+
* The steps address CONCRETE entrypoint aliases, never `$`-prefixed references: this flow is never
|
|
86
|
+
* the live `FlowService` model and nothing here needs `configureFlows`.
|
|
87
|
+
*/
|
|
88
|
+
export const intentFlow: ShallowFlow = {
|
|
89
|
+
flow: INTENT_FLOW,
|
|
90
|
+
initialStep: IntentFlowStep.Compose,
|
|
91
|
+
steps: {
|
|
92
|
+
[IntentFlowStep.Compose]: {
|
|
93
|
+
index: 0,
|
|
94
|
+
step: IntentFlowStep.Compose,
|
|
95
|
+
service: '',
|
|
96
|
+
initial: true,
|
|
97
|
+
payloadMap,
|
|
98
|
+
transitions: {
|
|
99
|
+
handoff: { transition: 'handoff', step: IntentFlowStep.Land },
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
[IntentFlowStep.Land]: {
|
|
103
|
+
index: 1,
|
|
104
|
+
step: IntentFlowStep.Land,
|
|
105
|
+
service: '',
|
|
106
|
+
module: intent.landing,
|
|
107
|
+
initial: true,
|
|
108
|
+
payloadMap,
|
|
109
|
+
transitions: {
|
|
110
|
+
review: { transition: 'review', step: IntentFlowStep.Review },
|
|
111
|
+
'sign-in': { transition: 'sign-in', step: IntentFlowStep.SignIn, explicit: true },
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
[IntentFlowStep.SignIn]: {
|
|
115
|
+
index: 2,
|
|
116
|
+
step: IntentFlowStep.SignIn,
|
|
117
|
+
service: '',
|
|
118
|
+
module: DISPATCHER,
|
|
119
|
+
payloadMap,
|
|
120
|
+
transitions: {
|
|
121
|
+
next: { transition: 'next', step: IntentFlowStep.Review },
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
[IntentFlowStep.Review]: {
|
|
125
|
+
index: 3,
|
|
126
|
+
step: IntentFlowStep.Review,
|
|
127
|
+
service: '',
|
|
128
|
+
module: HOME,
|
|
129
|
+
payloadMap,
|
|
130
|
+
transitions: {},
|
|
131
|
+
},
|
|
132
|
+
},
|
|
133
|
+
}
|