@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
package/src/areas/tenancy.ts
CHANGED
|
@@ -1,69 +1,34 @@
|
|
|
1
1
|
import type { Blueprint } from '../blueprint/types.js'
|
|
2
|
-
import { ProjectArea } from './consts.js'
|
|
2
|
+
import { ProjectArea, NO_TENANCY } from './consts.js'
|
|
3
|
+
import type { ProjectTenancy } from './types.js'
|
|
4
|
+
import type { TenancyHelper } from './tenancy/types.js'
|
|
3
5
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
* own staff over one shared public (`operators` only), and a B2B tool usually does both. An
|
|
10
|
-
* organization is an IAM-managed tenant — never a table the target keeps for itself.
|
|
11
|
-
*
|
|
12
|
-
* Both false is today's application: one organization, the project owner's, that every person acts in.
|
|
13
|
-
*/
|
|
14
|
-
export interface ProjectTenancy {
|
|
15
|
-
/** The staff of the back office are split into tenant organizations. */
|
|
16
|
-
operators: boolean
|
|
17
|
-
/** The end users of the front office are distributed across tenant organizations. */
|
|
18
|
-
users: boolean
|
|
19
|
-
}
|
|
6
|
+
export const createTenancyHelper = (): TenancyHelper => {
|
|
7
|
+
const tenancyOf = (blueprint?: Pick<Blueprint, 'experience'> | null): ProjectTenancy => {
|
|
8
|
+
const tenancy = blueprint?.experience?.tenancy
|
|
9
|
+
const operators = tenancy?.operators === true
|
|
10
|
+
const users = tenancy?.users === true
|
|
20
11
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
*
|
|
24
|
-
* The flags plus where they came from. `quotes` are the requester's OWN sentences, verbatim — the
|
|
25
|
-
* evidence a later reader (a person reviewing the board, a run asked to reconsider) checks the
|
|
26
|
-
* decision against, which a paraphrase would quietly replace with the model's reading of it.
|
|
27
|
-
* `by` says whether a model inferred it or the owner set it; `at` is when, an ISO timestamp.
|
|
28
|
-
*/
|
|
29
|
-
export interface ViableTenancyDecision extends ProjectTenancy {
|
|
30
|
-
quotes?: { operators?: string; users?: string }
|
|
31
|
-
by: 'model' | 'owner'
|
|
32
|
-
at: string
|
|
33
|
-
}
|
|
12
|
+
return operators || users ? Object.freeze({ operators, users }) : NO_TENANCY
|
|
13
|
+
}
|
|
34
14
|
|
|
35
|
-
|
|
36
|
-
|
|
15
|
+
const tenantedArea = (area: ProjectArea, tenancy: ProjectTenancy): boolean => {
|
|
16
|
+
switch (area) {
|
|
17
|
+
case ProjectArea.User: return tenancy.users === true
|
|
18
|
+
case ProjectArea.Operator: return tenancy.operators === true
|
|
19
|
+
default: return false
|
|
20
|
+
}
|
|
21
|
+
}
|
|
37
22
|
|
|
38
|
-
|
|
39
|
-
|
|
23
|
+
return { tenancyOf, tenantedArea }
|
|
24
|
+
}
|
|
40
25
|
|
|
41
|
-
|
|
42
|
-
* The tenancy of a resolved blueprint.
|
|
43
|
-
*
|
|
44
|
-
* Total, like `landingGatePreferenceOf`: an absent layer, an absent key and a value this deploy
|
|
45
|
-
* cannot read all answer {@link NO_TENANCY}. Only a literal `true` turns a flag on, because a flag
|
|
46
|
-
* read as on by mistake splits a product's people into organizations nobody asked for, while one
|
|
47
|
-
* read as off leaves the application exactly as it was before tenancy existed.
|
|
48
|
-
*/
|
|
49
|
-
export const tenancyOf = (blueprint?: Pick<Blueprint, 'experience'> | null): ProjectTenancy => {
|
|
50
|
-
const tenancy = blueprint?.experience?.tenancy
|
|
51
|
-
const operators = tenancy?.operators === true
|
|
52
|
-
const users = tenancy?.users === true
|
|
26
|
+
export const tenancyHelper = createTenancyHelper()
|
|
53
27
|
|
|
54
|
-
|
|
55
|
-
|
|
28
|
+
/** @deprecated compat:factory-refactor — use `tenancyHelper.tenancyOf(…)` */
|
|
29
|
+
export const tenancyOf = (blueprint?: Pick<Blueprint, 'experience'> | null): ProjectTenancy =>
|
|
30
|
+
tenancyHelper.tenancyOf(blueprint)
|
|
56
31
|
|
|
57
|
-
/**
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
* Guest has no organization to act in, and admin is the project owner, who stands above every
|
|
61
|
-
* tenant rather than inside one — so both are never tenanted, whatever the flags say.
|
|
62
|
-
*/
|
|
63
|
-
export const tenantedArea = (area: ProjectArea, tenancy: ProjectTenancy): boolean => {
|
|
64
|
-
switch (area) {
|
|
65
|
-
case ProjectArea.User: return tenancy.users === true
|
|
66
|
-
case ProjectArea.Operator: return tenancy.operators === true
|
|
67
|
-
default: return false
|
|
68
|
-
}
|
|
69
|
-
}
|
|
32
|
+
/** @deprecated compat:factory-refactor — use `tenancyHelper.tenantedArea(…)` */
|
|
33
|
+
export const tenantedArea = (area: ProjectArea, tenancy: ProjectTenancy): boolean =>
|
|
34
|
+
tenancyHelper.tenantedArea(area, tenancy)
|
package/src/areas/types.ts
CHANGED
|
@@ -27,3 +27,34 @@ export interface NavEntry {
|
|
|
27
27
|
alias: string
|
|
28
28
|
label: string
|
|
29
29
|
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Whether a generated application splits its audiences into tenant ORGANIZATIONS.
|
|
33
|
+
*
|
|
34
|
+
* Two flags rather than one, because the two audiences split independently: one back office can
|
|
35
|
+
* serve end users who each belong to their own company (`users` only), every reseller can run its
|
|
36
|
+
* own staff over one shared public (`operators` only), and a B2B tool usually does both. An
|
|
37
|
+
* organization is an IAM-managed tenant — never a table the target keeps for itself.
|
|
38
|
+
*
|
|
39
|
+
* Both false is today's application: one organization, the project owner's, that every person acts in.
|
|
40
|
+
*/
|
|
41
|
+
export interface ProjectTenancy {
|
|
42
|
+
/** The staff of the back office are split into tenant organizations. */
|
|
43
|
+
operators: boolean
|
|
44
|
+
/** The end users of the front office are distributed across tenant organizations. */
|
|
45
|
+
users: boolean
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* A tenancy decision as the project card records it (`fields.tenancy`).
|
|
50
|
+
*
|
|
51
|
+
* The flags plus where they came from. `quotes` are the requester's OWN sentences, verbatim — the
|
|
52
|
+
* evidence a later reader (a person reviewing the board, a run asked to reconsider) checks the
|
|
53
|
+
* decision against, which a paraphrase would quietly replace with the model's reading of it.
|
|
54
|
+
* `by` says whether a model inferred it or the owner set it; `at` is when, an ISO timestamp.
|
|
55
|
+
*/
|
|
56
|
+
export interface ViableTenancyDecision extends ProjectTenancy {
|
|
57
|
+
quotes?: { operators?: string; users?: string }
|
|
58
|
+
by: 'model' | 'owner'
|
|
59
|
+
at: string
|
|
60
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { StoryDraft } from '../../areas/types.js'
|
|
2
|
+
import type { ConnectingStoryDraft, MergedStoryDraft } from '../types.js'
|
|
3
|
+
|
|
4
|
+
/** The connecting stories of a flow: how many it may carry, and where each one lands. */
|
|
5
|
+
export interface ConnectingStoryHelper {
|
|
6
|
+
/**
|
|
7
|
+
* How many connecting stories one flow may carry.
|
|
8
|
+
*
|
|
9
|
+
* An N-step chain has N-1 joints, and a connecting story exists to bridge one of them — so the
|
|
10
|
+
* flow sizes its own supporting cast, and a three-step product can never end up with eight list
|
|
11
|
+
* screens. It is a CEILING, not a target: the prompt is told to write as few as its rules actually
|
|
12
|
+
* derived, and most flows land well below this.
|
|
13
|
+
*
|
|
14
|
+
* The real reason for a hard number: every story here becomes a full develop run the project's
|
|
15
|
+
* owner pays for.
|
|
16
|
+
*/
|
|
17
|
+
connectingStoryCap: (flowCount: number) => number
|
|
18
|
+
/**
|
|
19
|
+
* Interleave the connecting stories into the flow they were derived from.
|
|
20
|
+
*
|
|
21
|
+
* `after` is an ANCHOR, not a position: it names the flow story whose result the connecting story
|
|
22
|
+
* displays, so the connecting story lands immediately behind it — which is also immediately in
|
|
23
|
+
* front of the step it leads into. The result is ONE ordered list, and it is the order records are
|
|
24
|
+
* created in.
|
|
25
|
+
*
|
|
26
|
+
* This is the only place the anchor is interpreted. Both halves of the feature — the prompt that
|
|
27
|
+
* produces it and the pipeline that persists the result — read it through here, or the two drift
|
|
28
|
+
* and nothing fails loudly enough to notice. The CLAMPED anchor is carried out on each connective
|
|
29
|
+
* entry as `after`, which is what the story card's `follows` relationship is written from.
|
|
30
|
+
*
|
|
31
|
+
* Four properties are deliberate:
|
|
32
|
+
*
|
|
33
|
+
* - **The flow subsequence is never disturbed.** Strip the connecting stories back out and you have
|
|
34
|
+
* `flow`, in `flow` order: story N still implements numbered step N. Everything that finds the
|
|
35
|
+
* primary story depends on that.
|
|
36
|
+
* - **Nothing precedes the first flow story.** An anchor below 1 is clamped up rather than opening a
|
|
37
|
+
* position in front of the flow — nothing can be listed before the step that produced it, and
|
|
38
|
+
* story 1 stays the enabling action.
|
|
39
|
+
* - **A placement is advice; the story is work already paid for.** An anchor past the end means
|
|
40
|
+
* "at the end", and one that is not a number at all means the front of the flow. Neither is a
|
|
41
|
+
* reason to lose a story.
|
|
42
|
+
* - **Ties keep the model's order**, which is the only ranking anything has.
|
|
43
|
+
*/
|
|
44
|
+
mergeConnectingStories: (flow: StoryDraft[], connecting: ConnectingStoryDraft[]) => MergedStoryDraft[]
|
|
45
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { StoryDraft } from "../areas/types.js"
|
|
2
|
+
import type { ConnectingStoryDraft, MergedStoryDraft } from "./types.js"
|
|
3
|
+
import { StoryKind } from "./consts.js"
|
|
4
|
+
import type { ConnectingStoryHelper } from './connecting/types.js'
|
|
5
|
+
|
|
6
|
+
export const createConnectingStoryHelper = (): ConnectingStoryHelper => {
|
|
7
|
+
const connectingStoryCap = (flowCount: number): number => Math.max(flowCount - 1, 0)
|
|
8
|
+
|
|
9
|
+
/** Collapse case and whitespace, so "the same story twice" is recognised as such. */
|
|
10
|
+
const canonical = (story: string): string => story.trim().replace(/\s+/g, ' ').toLowerCase()
|
|
11
|
+
|
|
12
|
+
const mergeConnectingStories = (
|
|
13
|
+
flow: StoryDraft[], connecting: ConnectingStoryDraft[]
|
|
14
|
+
): MergedStoryDraft[] => {
|
|
15
|
+
if (flow.length < 1) {
|
|
16
|
+
return []
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const seen = new Set(flow.map(({ story }) => canonical(story)))
|
|
20
|
+
const placed: Array<{ draft: ConnectingStoryDraft, at: number }> = []
|
|
21
|
+
|
|
22
|
+
for (const draft of connecting) {
|
|
23
|
+
const text = canonical(draft.story)
|
|
24
|
+
// A connecting story that repeats a flow story is not a second story: it is one develop run
|
|
25
|
+
// spent twice AND — since the home-screen detector matches its answer back by exact text — a
|
|
26
|
+
// second record that answer could resolve to.
|
|
27
|
+
if (text === '' || seen.has(text)) {
|
|
28
|
+
continue
|
|
29
|
+
}
|
|
30
|
+
seen.add(text)
|
|
31
|
+
|
|
32
|
+
const after = Number(draft.after)
|
|
33
|
+
placed.push({
|
|
34
|
+
draft,
|
|
35
|
+
at: Number.isFinite(after) ? Math.min(Math.max(Math.trunc(after), 1), flow.length) : 1,
|
|
36
|
+
})
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Over the cap, the LATEST-anchored go: a story late in the flow gates the fewest steps behind
|
|
40
|
+
// it, while the queue that hands step 1 to step 2 is what makes everything after it reachable.
|
|
41
|
+
// The sort is stable, so two stories on the same step keep the order they were derived in.
|
|
42
|
+
const surviving = placed
|
|
43
|
+
.map((entry, order) => ({ ...entry, order }))
|
|
44
|
+
.sort((a, b) => a.at - b.at || a.order - b.order)
|
|
45
|
+
.slice(0, connectingStoryCap(flow.length))
|
|
46
|
+
|
|
47
|
+
// Bucket N holds what comes immediately after flow story N (1-based, as the prompt numbers them).
|
|
48
|
+
const buckets: ConnectingStoryDraft[][] = flow.map(() => [])
|
|
49
|
+
for (const { draft, at } of surviving) {
|
|
50
|
+
buckets[at - 1]!.push(draft)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return flow.flatMap(({ story, area }, index) => [
|
|
54
|
+
{ story, area, kind: StoryKind.Flow },
|
|
55
|
+
...buckets[index]!.map(draft => (
|
|
56
|
+
{ story: draft.story.trim(), area: draft.area, kind: StoryKind.Connective, after: index + 1 }
|
|
57
|
+
)),
|
|
58
|
+
])
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return { connectingStoryCap, mergeConnectingStories }
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export const connectingStoryHelper = createConnectingStoryHelper()
|
package/src/ba/helpers.ts
CHANGED
|
@@ -1,94 +1,10 @@
|
|
|
1
|
-
import type { StoryDraft } from
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
1
|
+
import type { StoryDraft } from '../areas/types.js'
|
|
2
|
+
import { connectingStoryHelper } from './connecting.js'
|
|
3
|
+
import type { ConnectingStoryDraft, MergedStoryDraft } from './types.js'
|
|
4
4
|
|
|
5
|
-
/**
|
|
6
|
-
|
|
7
|
-
*
|
|
8
|
-
* An N-step chain has N-1 joints, and a connecting story exists to bridge one of them — so the
|
|
9
|
-
* flow sizes its own supporting cast, and a three-step product can never end up with eight list
|
|
10
|
-
* screens. It is a CEILING, not a target: the prompt is told to write as few as its rules actually
|
|
11
|
-
* derived, and most flows land well below this.
|
|
12
|
-
*
|
|
13
|
-
* The real reason for a hard number: every story here becomes a full develop run the project's
|
|
14
|
-
* owner pays for.
|
|
15
|
-
*/
|
|
16
|
-
export const connectingStoryCap = (flowCount: number): number => Math.max(flowCount - 1, 0)
|
|
5
|
+
/** @deprecated compat:factory-refactor — use `connectingStoryHelper.connectingStoryCap(…)` */
|
|
6
|
+
export const connectingStoryCap = (flowCount: number): number => connectingStoryHelper.connectingStoryCap(flowCount)
|
|
17
7
|
|
|
18
|
-
/**
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Interleave the connecting stories into the flow they were derived from.
|
|
23
|
-
*
|
|
24
|
-
* `after` is an ANCHOR, not a position: it names the flow story whose result the connecting story
|
|
25
|
-
* displays, so the connecting story lands immediately behind it — which is also immediately in
|
|
26
|
-
* front of the step it leads into. The result is ONE ordered list, and it is the order records are
|
|
27
|
-
* created in.
|
|
28
|
-
*
|
|
29
|
-
* This is the only place the anchor is interpreted. Both halves of the feature — the prompt that
|
|
30
|
-
* produces it and the pipeline that persists the result — read it through here, or the two drift
|
|
31
|
-
* and nothing fails loudly enough to notice. The CLAMPED anchor is carried out on each connective
|
|
32
|
-
* entry as `after`, which is what the story card's `follows` relationship is written from.
|
|
33
|
-
*
|
|
34
|
-
* Four properties are deliberate:
|
|
35
|
-
*
|
|
36
|
-
* - **The flow subsequence is never disturbed.** Strip the connecting stories back out and you have
|
|
37
|
-
* `flow`, in `flow` order: story N still implements numbered step N. Everything that finds the
|
|
38
|
-
* primary story depends on that.
|
|
39
|
-
* - **Nothing precedes the first flow story.** An anchor below 1 is clamped up rather than opening a
|
|
40
|
-
* position in front of the flow — nothing can be listed before the step that produced it, and
|
|
41
|
-
* story 1 stays the enabling action.
|
|
42
|
-
* - **A placement is advice; the story is work already paid for.** An anchor past the end means
|
|
43
|
-
* "at the end", and one that is not a number at all means the front of the flow. Neither is a
|
|
44
|
-
* reason to lose a story.
|
|
45
|
-
* - **Ties keep the model's order**, which is the only ranking anything has.
|
|
46
|
-
*/
|
|
47
|
-
export const mergeConnectingStories = (
|
|
48
|
-
flow: StoryDraft[], connecting: ConnectingStoryDraft[]
|
|
49
|
-
): MergedStoryDraft[] => {
|
|
50
|
-
if (flow.length < 1) {
|
|
51
|
-
return []
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
const seen = new Set(flow.map(({ story }) => canonical(story)))
|
|
55
|
-
const placed: Array<{ draft: ConnectingStoryDraft, at: number }> = []
|
|
56
|
-
|
|
57
|
-
for (const draft of connecting) {
|
|
58
|
-
const text = canonical(draft.story)
|
|
59
|
-
// A connecting story that repeats a flow story is not a second story: it is one develop run
|
|
60
|
-
// spent twice AND — since the home-screen detector matches its answer back by exact text — a
|
|
61
|
-
// second record that answer could resolve to.
|
|
62
|
-
if (text === '' || seen.has(text)) {
|
|
63
|
-
continue
|
|
64
|
-
}
|
|
65
|
-
seen.add(text)
|
|
66
|
-
|
|
67
|
-
const after = Number(draft.after)
|
|
68
|
-
placed.push({
|
|
69
|
-
draft,
|
|
70
|
-
at: Number.isFinite(after) ? Math.min(Math.max(Math.trunc(after), 1), flow.length) : 1,
|
|
71
|
-
})
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
// Over the cap, the LATEST-anchored go: a story late in the flow gates the fewest steps behind
|
|
75
|
-
// it, while the queue that hands step 1 to step 2 is what makes everything after it reachable.
|
|
76
|
-
// The sort is stable, so two stories on the same step keep the order they were derived in.
|
|
77
|
-
const surviving = placed
|
|
78
|
-
.map((entry, order) => ({ ...entry, order }))
|
|
79
|
-
.sort((a, b) => a.at - b.at || a.order - b.order)
|
|
80
|
-
.slice(0, connectingStoryCap(flow.length))
|
|
81
|
-
|
|
82
|
-
// Bucket N holds what comes immediately after flow story N (1-based, as the prompt numbers them).
|
|
83
|
-
const buckets: ConnectingStoryDraft[][] = flow.map(() => [])
|
|
84
|
-
for (const { draft, at } of surviving) {
|
|
85
|
-
buckets[at - 1]!.push(draft)
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
return flow.flatMap(({ story, area }, index) => [
|
|
89
|
-
{ story, area, kind: StoryKind.Flow },
|
|
90
|
-
...buckets[index]!.map(draft => (
|
|
91
|
-
{ story: draft.story.trim(), area: draft.area, kind: StoryKind.Connective, after: index + 1 }
|
|
92
|
-
)),
|
|
93
|
-
])
|
|
94
|
-
}
|
|
8
|
+
/** @deprecated compat:factory-refactor — use `connectingStoryHelper.mergeConnectingStories(…)` */
|
|
9
|
+
export const mergeConnectingStories = (flow: StoryDraft[], connecting: ConnectingStoryDraft[]): MergedStoryDraft[] =>
|
|
10
|
+
connectingStoryHelper.mergeConnectingStories(flow, connecting)
|
package/src/ba/index.ts
CHANGED
package/src/ba/types.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { SpecCategory } from "./consts"
|
|
|
2
2
|
import type { ConnectingStoryKind, StoryKind } from "./consts.js"
|
|
3
3
|
import type { ProjectArea } from "../areas/consts.js"
|
|
4
4
|
import type { StoryDraft } from "../areas/types.js"
|
|
5
|
-
import type { StoryActor } from "../design/
|
|
5
|
+
import type { StoryActor } from "../design/consts.js"
|
|
6
6
|
|
|
7
7
|
export interface EntityList {
|
|
8
8
|
entities: string[]
|
package/src/blueprint/consts.ts
CHANGED
|
@@ -85,3 +85,55 @@ export enum WorkKind {
|
|
|
85
85
|
|
|
86
86
|
/** The longest case quote a project card keeps (`fields.caseQuote`) — one sentence, generously. */
|
|
87
87
|
export const CASE_QUOTE_MAX = 1024
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* The layers, lowest first. A higher layer's value replaces the same key from a lower one.
|
|
91
|
+
*
|
|
92
|
+
* The ordering is the point: `technology` overrides everything, because a change of language
|
|
93
|
+
* invalidates every template, prompt and package below it. Nothing today has more than one
|
|
94
|
+
* technology — the ladder exists so that adding one is a data change. `experience` is last and
|
|
95
|
+
* optional: it shares no key with the five build layers, so its place decides nothing today.
|
|
96
|
+
*/
|
|
97
|
+
export enum BlueprintLayer {
|
|
98
|
+
Technology = 'technology',
|
|
99
|
+
Stack = 'stack',
|
|
100
|
+
Template = 'template',
|
|
101
|
+
CreateApp = 'create-app',
|
|
102
|
+
Packages = 'packages',
|
|
103
|
+
Experience = 'experience',
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export const BLUEPRINT_LAYER_ORDER: BlueprintLayer[] = [
|
|
107
|
+
BlueprintLayer.Technology,
|
|
108
|
+
BlueprintLayer.Stack,
|
|
109
|
+
BlueprintLayer.Template,
|
|
110
|
+
BlueprintLayer.CreateApp,
|
|
111
|
+
BlueprintLayer.Packages,
|
|
112
|
+
BlueprintLayer.Experience,
|
|
113
|
+
]
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* How strongly a product of this kind wants a LANDING GATE — the working entry into the key
|
|
117
|
+
* end-user workflow drawn on the guest home, where a guest starts before signing in.
|
|
118
|
+
*
|
|
119
|
+
* A PRIOR handed to the model that decides, never the decision itself: `Encourage` still lets it
|
|
120
|
+
* answer "no gate" for a product with no end-user step a guest could begin, and `Discourage` still
|
|
121
|
+
* lets it choose one when the specification plainly describes such a step.
|
|
122
|
+
*/
|
|
123
|
+
export enum LandingGatePreference {
|
|
124
|
+
/** Most products of this kind have a first-value step a guest can begin — look for it. */
|
|
125
|
+
Encourage = 'encourage',
|
|
126
|
+
/** Neutral: decide from the specification alone. */
|
|
127
|
+
Allow = 'allow',
|
|
128
|
+
/** Products of this kind rarely have one — choose a gate only when the specification asks. */
|
|
129
|
+
Discourage = 'discourage',
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export enum BlueprintPatchKind {
|
|
133
|
+
/** Deep-merge a JSON document — the manifests, the tsconfigs. */
|
|
134
|
+
JsonMerge = 'json-merge',
|
|
135
|
+
/** Rewrite the `<head>` of an HTML document from the project's identity. */
|
|
136
|
+
HtmlHead = 'html-head',
|
|
137
|
+
/** Write a document composed from the project's identity. */
|
|
138
|
+
Compose = 'compose',
|
|
139
|
+
}
|
package/src/blueprint/index.ts
CHANGED
package/src/blueprint/types.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { ProjectTenancy } from '../areas/
|
|
1
|
+
import type { ProjectTenancy } from '../areas/types.js'
|
|
2
2
|
import type { SubProject } from '../slot/consts.js'
|
|
3
|
-
import type { ViableSkill } from '../skills/consts.js'
|
|
4
|
-
import type { ViablePersona } from '../skills/roles.js'
|
|
3
|
+
import type { ViablePersona, ViableSkill } from '../skills/consts.js'
|
|
5
4
|
import type { TopologyDescriptor } from '../topology/types.js'
|
|
5
|
+
import { BlueprintPatchKind, LandingGatePreference } from './consts.js'
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* A BLUEPRINT is everything that decides what kind of project the pipeline is building — the
|
|
@@ -35,49 +35,6 @@ export interface Blueprint {
|
|
|
35
35
|
experience?: ExperienceLayer
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
/**
|
|
39
|
-
* The layers, lowest first. A higher layer's value replaces the same key from a lower one.
|
|
40
|
-
*
|
|
41
|
-
* The ordering is the point: `technology` overrides everything, because a change of language
|
|
42
|
-
* invalidates every template, prompt and package below it. Nothing today has more than one
|
|
43
|
-
* technology — the ladder exists so that adding one is a data change. `experience` is last and
|
|
44
|
-
* optional: it shares no key with the five build layers, so its place decides nothing today.
|
|
45
|
-
*/
|
|
46
|
-
export enum BlueprintLayer {
|
|
47
|
-
Technology = 'technology',
|
|
48
|
-
Stack = 'stack',
|
|
49
|
-
Template = 'template',
|
|
50
|
-
CreateApp = 'create-app',
|
|
51
|
-
Packages = 'packages',
|
|
52
|
-
Experience = 'experience',
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export const BLUEPRINT_LAYER_ORDER: BlueprintLayer[] = [
|
|
56
|
-
BlueprintLayer.Technology,
|
|
57
|
-
BlueprintLayer.Stack,
|
|
58
|
-
BlueprintLayer.Template,
|
|
59
|
-
BlueprintLayer.CreateApp,
|
|
60
|
-
BlueprintLayer.Packages,
|
|
61
|
-
BlueprintLayer.Experience,
|
|
62
|
-
]
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* How strongly a product of this kind wants a LANDING GATE — the working entry into the key
|
|
66
|
-
* end-user workflow drawn on the guest home, where a guest starts before signing in.
|
|
67
|
-
*
|
|
68
|
-
* A PRIOR handed to the model that decides, never the decision itself: `Encourage` still lets it
|
|
69
|
-
* answer "no gate" for a product with no end-user step a guest could begin, and `Discourage` still
|
|
70
|
-
* lets it choose one when the specification plainly describes such a step.
|
|
71
|
-
*/
|
|
72
|
-
export enum LandingGatePreference {
|
|
73
|
-
/** Most products of this kind have a first-value step a guest can begin — look for it. */
|
|
74
|
-
Encourage = 'encourage',
|
|
75
|
-
/** Neutral: decide from the specification alone. */
|
|
76
|
-
Allow = 'allow',
|
|
77
|
-
/** Products of this kind rarely have one — choose a gate only when the specification asks. */
|
|
78
|
-
Discourage = 'discourage',
|
|
79
|
-
}
|
|
80
|
-
|
|
81
38
|
/**
|
|
82
39
|
* What the product should do for the people using it, independent of the stack it is built on.
|
|
83
40
|
*
|
|
@@ -96,25 +53,6 @@ export interface ExperienceLayer {
|
|
|
96
53
|
tenancy?: ProjectTenancy
|
|
97
54
|
}
|
|
98
55
|
|
|
99
|
-
const LANDING_GATE_PREFERENCES = new Set<string>(Object.values(LandingGatePreference))
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* The landing-gate preference of a resolved blueprint.
|
|
103
|
-
*
|
|
104
|
-
* Total: an absent layer, an absent key and a value this deploy does not know (a patch serialized
|
|
105
|
-
* by a newer one) all answer `Allow` — the neutral prior, which leaves the decision to the
|
|
106
|
-
* specification rather than tilting it either way on a value nobody set.
|
|
107
|
-
*/
|
|
108
|
-
export const landingGatePreferenceOf = (
|
|
109
|
-
blueprint?: Pick<Blueprint, 'experience'> | null
|
|
110
|
-
): LandingGatePreference => {
|
|
111
|
-
const value = blueprint?.experience?.landingGate
|
|
112
|
-
|
|
113
|
-
return value != null && LANDING_GATE_PREFERENCES.has(value)
|
|
114
|
-
? value
|
|
115
|
-
: LandingGatePreference.Allow
|
|
116
|
-
}
|
|
117
|
-
|
|
118
56
|
/** Language and toolchain. Overrides everything below it. */
|
|
119
57
|
export interface TechnologyLayer {
|
|
120
58
|
id: string
|
|
@@ -181,15 +119,6 @@ export interface BlueprintPatchSpec {
|
|
|
181
119
|
kind: BlueprintPatchKind
|
|
182
120
|
}
|
|
183
121
|
|
|
184
|
-
export enum BlueprintPatchKind {
|
|
185
|
-
/** Deep-merge a JSON document — the manifests, the tsconfigs. */
|
|
186
|
-
JsonMerge = 'json-merge',
|
|
187
|
-
/** Rewrite the `<head>` of an HTML document from the project's identity. */
|
|
188
|
-
HtmlHead = 'html-head',
|
|
189
|
-
/** Write a document composed from the project's identity. */
|
|
190
|
-
Compose = 'compose',
|
|
191
|
-
}
|
|
192
|
-
|
|
193
122
|
/** Which scaffolder runs first, and how. */
|
|
194
123
|
export interface CreateAppLayer {
|
|
195
124
|
id: string
|
|
@@ -259,6 +188,7 @@ export interface BlueprintCapabilities {
|
|
|
259
188
|
marketingConsent: boolean
|
|
260
189
|
}
|
|
261
190
|
|
|
191
|
+
// Kept as a type: a mapped type over the blueprint's keys.
|
|
262
192
|
/** A partial override of a blueprint, deep-merged over the resolved value. */
|
|
263
193
|
export type BlueprintPatch = {
|
|
264
194
|
[K in keyof Blueprint]?: Blueprint[K] extends string ? Blueprint[K] : Partial<Blueprint[K]>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { LANDING_GATE_PREFERENCES } from './consts.local.js'
|
|
2
|
+
import { LandingGatePreference } from './consts.js'
|
|
3
|
+
import type { Blueprint } from './types.js'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The landing-gate preference of a resolved blueprint.
|
|
7
|
+
*
|
|
8
|
+
* Total: an absent layer, an absent key and a value this deploy does not know (a patch serialized
|
|
9
|
+
* by a newer one) all answer `Allow` — the neutral prior, which leaves the decision to the
|
|
10
|
+
* specification rather than tilting it either way on a value nobody set.
|
|
11
|
+
*/
|
|
12
|
+
export const landingGatePreferenceOf = (
|
|
13
|
+
blueprint?: Pick<Blueprint, 'experience'> | null
|
|
14
|
+
): LandingGatePreference => {
|
|
15
|
+
const value = blueprint?.experience?.landingGate
|
|
16
|
+
|
|
17
|
+
return value != null && LANDING_GATE_PREFERENCES.has(value)
|
|
18
|
+
? value
|
|
19
|
+
: LandingGatePreference.Allow
|
|
20
|
+
}
|
package/src/branding.ts
CHANGED
|
@@ -1,22 +1,5 @@
|
|
|
1
1
|
import type { SlotMetadata } from './types.js'
|
|
2
2
|
|
|
3
|
-
/**
|
|
4
|
-
* The build-time environment keys a generated application reads its branding from.
|
|
5
|
-
*
|
|
6
|
-
* Named here, once, because two processes emit them — the publisher for the preview and the agent
|
|
7
|
-
* for a production publish — and a key spelled differently in one of them produces an application
|
|
8
|
-
* that silently falls back to its defaults with nothing anywhere reporting it.
|
|
9
|
-
*/
|
|
10
|
-
export const BRANDING_ENV_KEYS = [
|
|
11
|
-
'BRANDING_COPYRIGHT',
|
|
12
|
-
'BRANDING_ORGANIZATION',
|
|
13
|
-
'BRANDING_TERMS_URL',
|
|
14
|
-
'BRANDING_PRIVACY_URL',
|
|
15
|
-
'BRANDING_CREDIT',
|
|
16
|
-
'BRANDING_PRODUCT',
|
|
17
|
-
'BRANDING_GOOGLE_TAG',
|
|
18
|
-
] as const
|
|
19
|
-
|
|
20
3
|
/**
|
|
21
4
|
* Slot metadata as build-time environment.
|
|
22
5
|
*
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A project's branding as a connector reads it — what the generated application says about who
|
|
5
|
+
* made it, and the Google tag it loads.
|
|
6
|
+
*
|
|
7
|
+
* Every field is a string, `''` when unset, in the platform's own branding vocabulary. The
|
|
8
|
+
* platform credit is absent on purpose: hiding it is a paid capability behind its own gated route,
|
|
9
|
+
* and neither reading nor saving this record may reach it.
|
|
10
|
+
*/
|
|
11
|
+
export interface ConnectProjectBranding {
|
|
12
|
+
/** The copyright line in the application's footer. Never empty once saved. */
|
|
13
|
+
copyright: string
|
|
14
|
+
/** The organization's display name. Never empty once saved. */
|
|
15
|
+
organizationName: string
|
|
16
|
+
/** `''`, an `https://` URL, or a same-origin path such as `/terms` (the generated page). */
|
|
17
|
+
termsUrl: string
|
|
18
|
+
/** `''`, an `https://` URL, or a same-origin path such as `/privacy` (the generated page). */
|
|
19
|
+
privacyUrl: string
|
|
20
|
+
/** `''`, or a Google tag id: `GTM-…`, `G-…`, `GT-…`, `AW-…`, `DC-…`. */
|
|
21
|
+
googleTag: string
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* A PATCH of a project's branding: every field optional, and an absent field keeps its current
|
|
26
|
+
* value. The platform merges it over what is stored, validates the result as a whole with the
|
|
27
|
+
* rules the web form uses, and answers the merged record.
|
|
28
|
+
*/
|
|
29
|
+
export interface ConnectProjectBrandingSave extends Partial<ConnectProjectBranding> {}
|
package/src/connect/consts.ts
CHANGED
|
@@ -169,28 +169,6 @@ export const MODEL_TIER_ROLES: Record<string, ModelTier> = {
|
|
|
169
169
|
'picker': ModelTier.Cheap,
|
|
170
170
|
}
|
|
171
171
|
|
|
172
|
-
export const tierOfRole = (role: string): ModelTier =>
|
|
173
|
-
MODEL_TIER_ROLES[role] ?? ModelTier.Standard
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
* Pick the best tier a parent actually offers, never below what was asked for by more than the
|
|
177
|
-
* offer allows.
|
|
178
|
-
*
|
|
179
|
-
* A parent that offers only one model answers every task with it; a parent that offers two gets
|
|
180
|
-
* the nearer of the two. Silence is not an option — a task the connector cannot place is a run
|
|
181
|
-
* that stops.
|
|
182
|
-
*/
|
|
183
|
-
export const clampTier = (wanted: ModelTier, offered: ModelTier[]): ModelTier => {
|
|
184
|
-
if (offered.length < 1 || offered.includes(wanted)) return wanted
|
|
185
|
-
const ladder = [ModelTier.Strong, ModelTier.Standard, ModelTier.Cheap]
|
|
186
|
-
const from = ladder.indexOf(wanted)
|
|
187
|
-
// Prefer a stronger model over a weaker one: the task was sized for `wanted`.
|
|
188
|
-
for (let i = from; i >= 0; --i) if (offered.includes(ladder[i])) return ladder[i]
|
|
189
|
-
for (let i = from + 1; i < ladder.length; ++i) if (offered.includes(ladder[i])) return ladder[i]
|
|
190
|
-
|
|
191
|
-
return wanted
|
|
192
|
-
}
|
|
193
|
-
|
|
194
172
|
/** What the model task asks the parent's subagent to produce. */
|
|
195
173
|
export enum ModelTaskMode {
|
|
196
174
|
/** Prose or code. */
|
|
@@ -434,3 +412,6 @@ export const connect = Object.freeze({
|
|
|
434
412
|
resume: 'viable:manager-api:connect:pipeline:resume',
|
|
435
413
|
}),
|
|
436
414
|
})
|
|
415
|
+
|
|
416
|
+
/** Tier → the model the parent will run it on. Free-form; display only. */
|
|
417
|
+
export const ModelTierValues = Object.values(ModelTier)
|