@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/planning/landing.ts
CHANGED
|
@@ -1,43 +1,33 @@
|
|
|
1
1
|
import { TITLE_MAX } from '@owlmeans/planning'
|
|
2
|
+
import { LANDING_STORY_SENTENCE } from './consts.js'
|
|
3
|
+
import type { LandingSentenceHelper } from './landing/types.js'
|
|
2
4
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
export const hasLandingSentence = (title: string): boolean =>
|
|
21
|
-
normalized(title).includes(LANDING_STORY_SENTENCE)
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* The narrative with the landing sentence appended once.
|
|
25
|
-
*
|
|
26
|
-
* Idempotent — a narrative that already carries the sentence comes back unchanged, so a decision
|
|
27
|
-
* step that is resumed after it wrote the card never appends a second copy. It never produces a
|
|
28
|
-
* title longer than a card accepts (`TITLE_MAX`): a narrative with no room left is returned as it
|
|
29
|
-
* is rather than cut, because a person's words are worth more than the note, and the flag on the
|
|
30
|
-
* card still carries the fact.
|
|
31
|
-
*/
|
|
32
|
-
export const withLandingSentence = (title: string): string => {
|
|
33
|
-
if (hasLandingSentence(title)) {
|
|
34
|
-
return title
|
|
35
|
-
}
|
|
36
|
-
const base = title.trimEnd()
|
|
37
|
-
if (base === '') {
|
|
38
|
-
return LANDING_STORY_SENTENCE
|
|
5
|
+
export const createLandingSentenceHelper = (): LandingSentenceHelper => {
|
|
6
|
+
const normalized = (text: string): string => text.replace(/\s+/g, ' ')
|
|
7
|
+
|
|
8
|
+
const hasLandingSentence = (title: string): boolean =>
|
|
9
|
+
normalized(title).includes(LANDING_STORY_SENTENCE)
|
|
10
|
+
|
|
11
|
+
const withLandingSentence = (title: string): string => {
|
|
12
|
+
if (hasLandingSentence(title)) {
|
|
13
|
+
return title
|
|
14
|
+
}
|
|
15
|
+
const base = title.trimEnd()
|
|
16
|
+
if (base === '') {
|
|
17
|
+
return LANDING_STORY_SENTENCE
|
|
18
|
+
}
|
|
19
|
+
const joined = `${base} ${LANDING_STORY_SENTENCE}`
|
|
20
|
+
|
|
21
|
+
return joined.length > TITLE_MAX ? title : joined
|
|
39
22
|
}
|
|
40
|
-
const joined = `${base} ${LANDING_STORY_SENTENCE}`
|
|
41
23
|
|
|
42
|
-
return
|
|
24
|
+
return { hasLandingSentence, withLandingSentence }
|
|
43
25
|
}
|
|
26
|
+
|
|
27
|
+
export const landingSentenceHelper = createLandingSentenceHelper()
|
|
28
|
+
|
|
29
|
+
/** @deprecated compat:factory-refactor — use `landingSentenceHelper.hasLandingSentence(…)` */
|
|
30
|
+
export const hasLandingSentence = (title: string): boolean => landingSentenceHelper.hasLandingSentence(title)
|
|
31
|
+
|
|
32
|
+
/** @deprecated compat:factory-refactor — use `landingSentenceHelper.withLandingSentence(…)` */
|
|
33
|
+
export const withLandingSentence = (title: string): string => landingSentenceHelper.withLandingSentence(title)
|
package/src/planning/schemas.ts
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import type { JSONSchemaType } from 'ajv'
|
|
2
|
-
import { CODE_MAX } from '@owlmeans/planning'
|
|
3
|
-
import { ProjectArea } from '../areas/consts.js'
|
|
4
|
-
import { TENANCY_QUOTE_MAX } from '../areas/tenancy.js'
|
|
2
|
+
import { CODE_MAX, IntrinsicPolicy, IntrinsicStatus, SpecificationFormat, WorkcardKind, AnyTypeSchema, ProjectTypeSchema, RelationshipType, SpecificationSlot, StatusFlowSchema, WorkcardTypeSchema } from '@owlmeans/planning'
|
|
3
|
+
import { ProjectArea, TENANCY_QUOTE_MAX } from '../areas/consts.js'
|
|
5
4
|
import { CASE_QUOTE_MAX, WorkKind } from '../blueprint/consts.js'
|
|
6
5
|
import { StoryKind } from '../ba/consts.js'
|
|
7
6
|
import { ConnectLlm, ConnectTarget } from '../connect/consts.js'
|
|
8
7
|
import { ProjectOriginSchema } from '../convert/schemas.js'
|
|
9
|
-
import { StoryActor } from '../design/
|
|
8
|
+
import { StoryActor, STORY_DESIGN_VERSION } from '../design/consts.js'
|
|
10
9
|
import type { ViableProjectFields, ViableStoryFields } from './types.js'
|
|
10
|
+
import { StoryDesignSchema } from '../design/schemas.js'
|
|
11
|
+
import { ScaffoldPlanSchema } from '../scaffold/schemas.js'
|
|
12
|
+
import { VIABLE_BUG_CODE, VIABLE_BUG_TYPE, VIABLE_DESIGN_REVISIONS_KEPT, VIABLE_IMPROVEMENT_CODE, VIABLE_IMPROVEMENT_TYPE, VIABLE_PROJECT_CODE, VIABLE_PROJECT_FLOW, VIABLE_PROJECT_TYPE, VIABLE_REQUIREMENT_CODE, VIABLE_REQUIREMENT_TYPE, VIABLE_SPEC_FLOW, VIABLE_SPEC_TYPE, VIABLE_STORY_CODE, VIABLE_STORY_FLOW, VIABLE_STORY_TYPE, ViableProjectStatus, ViableProjectTransition, ViableRelationship, ViableSpecCategory, ViableSpecStatus, ViableStoryStatus, ViableStoryTransition, ViableTone } from './consts.js'
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
15
|
* The `fields` schema of a `viable:project` card.
|
|
@@ -109,3 +111,188 @@ export const ViableSpecFieldsSchema = {
|
|
|
109
111
|
required: [],
|
|
110
112
|
additionalProperties: false,
|
|
111
113
|
} as unknown as JSONSchemaType<Record<string, never>>
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* The story flow.
|
|
117
|
+
*
|
|
118
|
+
* `failed` maps to PLANNED: a failed story is work still to do, so "done" is the closed count and
|
|
119
|
+
* a retry is simply `start` again. `reset` from anywhere is the manual recovery — the one move a
|
|
120
|
+
* completed story still accepts.
|
|
121
|
+
*/
|
|
122
|
+
export const VIABLE_STORY_FLOW_SCHEMA: StatusFlowSchema = {
|
|
123
|
+
id: VIABLE_STORY_FLOW,
|
|
124
|
+
version: 1,
|
|
125
|
+
statuses: [
|
|
126
|
+
{ key: ViableStoryStatus.Planned, intrinsic: IntrinsicStatus.Planned, initial: true, tone: ViableTone.Blue },
|
|
127
|
+
{ key: ViableStoryStatus.InProgress, intrinsic: IntrinsicStatus.InProgress, tone: ViableTone.Yellow },
|
|
128
|
+
{ key: ViableStoryStatus.Completed, intrinsic: IntrinsicStatus.Closed, tone: ViableTone.Green },
|
|
129
|
+
{ key: ViableStoryStatus.Failed, intrinsic: IntrinsicStatus.Planned, tone: ViableTone.Red },
|
|
130
|
+
],
|
|
131
|
+
transitions: [
|
|
132
|
+
{
|
|
133
|
+
name: ViableStoryTransition.Start,
|
|
134
|
+
from: [ViableStoryStatus.Planned, ViableStoryStatus.Failed],
|
|
135
|
+
to: ViableStoryStatus.InProgress,
|
|
136
|
+
explicit: true,
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
name: ViableStoryTransition.Complete,
|
|
140
|
+
from: [ViableStoryStatus.InProgress],
|
|
141
|
+
to: ViableStoryStatus.Completed,
|
|
142
|
+
explicit: true,
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
name: ViableStoryTransition.Fail,
|
|
146
|
+
from: [ViableStoryStatus.InProgress],
|
|
147
|
+
to: ViableStoryStatus.Failed,
|
|
148
|
+
},
|
|
149
|
+
{ name: ViableStoryTransition.Reset, from: '*', to: ViableStoryStatus.Planned, explicit: true },
|
|
150
|
+
],
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* The project flow.
|
|
155
|
+
*
|
|
156
|
+
* A create lands at `draft`; confirming the brief is `confirm`; the end of an initialization is
|
|
157
|
+
* `activate`. A reinitialization and a failed initialization are SLOT facts, not transitions, and
|
|
158
|
+
* destroying a project is a `delete` plus the platform's cascade — never `archive`.
|
|
159
|
+
*/
|
|
160
|
+
export const VIABLE_PROJECT_FLOW_SCHEMA: StatusFlowSchema = {
|
|
161
|
+
id: VIABLE_PROJECT_FLOW,
|
|
162
|
+
version: 1,
|
|
163
|
+
statuses: [
|
|
164
|
+
{ key: ViableProjectStatus.Draft, intrinsic: IntrinsicStatus.Planned, initial: true, tone: ViableTone.Blue },
|
|
165
|
+
{ key: ViableProjectStatus.Confirmed, intrinsic: IntrinsicStatus.InProgress, tone: ViableTone.Yellow },
|
|
166
|
+
{ key: ViableProjectStatus.Active, intrinsic: IntrinsicStatus.InProgress, tone: ViableTone.Green },
|
|
167
|
+
{ key: ViableProjectStatus.Archived, intrinsic: IntrinsicStatus.Closed, tone: ViableTone.Neutral },
|
|
168
|
+
],
|
|
169
|
+
transitions: [
|
|
170
|
+
{
|
|
171
|
+
name: ViableProjectTransition.Confirm,
|
|
172
|
+
from: [ViableProjectStatus.Draft],
|
|
173
|
+
to: ViableProjectStatus.Confirmed,
|
|
174
|
+
explicit: true,
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
name: ViableProjectTransition.Activate,
|
|
178
|
+
from: [ViableProjectStatus.Confirmed],
|
|
179
|
+
to: ViableProjectStatus.Active,
|
|
180
|
+
},
|
|
181
|
+
{ name: ViableProjectTransition.Archive, from: '*', to: ViableProjectStatus.Archived, explicit: true },
|
|
182
|
+
{
|
|
183
|
+
name: ViableProjectTransition.Reopen,
|
|
184
|
+
from: [ViableProjectStatus.Archived],
|
|
185
|
+
to: ViableProjectStatus.Active,
|
|
186
|
+
explicit: true,
|
|
187
|
+
},
|
|
188
|
+
],
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/** A document is written or revised; it has no lifecycle to move through. */
|
|
192
|
+
export const VIABLE_SPEC_FLOW_SCHEMA: StatusFlowSchema = {
|
|
193
|
+
id: VIABLE_SPEC_FLOW,
|
|
194
|
+
version: 1,
|
|
195
|
+
statuses: [
|
|
196
|
+
{ key: ViableSpecStatus.Current, intrinsic: IntrinsicStatus.Closed, initial: true, tone: ViableTone.Neutral },
|
|
197
|
+
],
|
|
198
|
+
transitions: [],
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
const slot = (
|
|
202
|
+
category: ViableSpecCategory, format: SpecificationFormat, extra: Partial<SpecificationSlot> = {},
|
|
203
|
+
): SpecificationSlot => ({ category, format, type: VIABLE_SPEC_TYPE, ...extra })
|
|
204
|
+
|
|
205
|
+
/** The brief a person confirms, and the plan the scaffold draws from it. */
|
|
206
|
+
export const VIABLE_PROJECT_SLOTS: SpecificationSlot[] = [
|
|
207
|
+
slot(ViableSpecCategory.Specification, SpecificationFormat.Markdown, { required: true }),
|
|
208
|
+
slot(ViableSpecCategory.Vision, SpecificationFormat.Markdown),
|
|
209
|
+
slot(ViableSpecCategory.DesignSystem, SpecificationFormat.Markdown),
|
|
210
|
+
slot(ViableSpecCategory.Scaffold, SpecificationFormat.Json, {
|
|
211
|
+
revisioned: true, keepRevisions: VIABLE_DESIGN_REVISIONS_KEPT, schema: ScaffoldPlanSchema,
|
|
212
|
+
}),
|
|
213
|
+
]
|
|
214
|
+
|
|
215
|
+
/** A story's design — the payload the implementation stage consumes. */
|
|
216
|
+
export const VIABLE_STORY_SLOTS: SpecificationSlot[] = [
|
|
217
|
+
slot(ViableSpecCategory.Design, SpecificationFormat.Json, {
|
|
218
|
+
revisioned: true,
|
|
219
|
+
keepRevisions: VIABLE_DESIGN_REVISIONS_KEPT,
|
|
220
|
+
schema: StoryDesignSchema,
|
|
221
|
+
version: STORY_DESIGN_VERSION,
|
|
222
|
+
}),
|
|
223
|
+
]
|
|
224
|
+
|
|
225
|
+
const storyLink = (name: ViableRelationship): RelationshipType =>
|
|
226
|
+
({ name, from: [VIABLE_STORY_TYPE], to: [VIABLE_STORY_TYPE], single: true })
|
|
227
|
+
|
|
228
|
+
export const VIABLE_STORY_RELATIONSHIPS: RelationshipType[] = [
|
|
229
|
+
storyLink(ViableRelationship.Follows),
|
|
230
|
+
storyLink(ViableRelationship.SharesWidget),
|
|
231
|
+
storyLink(ViableRelationship.SharesScreen),
|
|
232
|
+
]
|
|
233
|
+
|
|
234
|
+
export const VIABLE_PROJECT_TYPE_SCHEMA: ProjectTypeSchema = {
|
|
235
|
+
type: VIABLE_PROJECT_TYPE,
|
|
236
|
+
kind: WorkcardKind.Project,
|
|
237
|
+
version: 1,
|
|
238
|
+
fields: ViableProjectFieldsSchema,
|
|
239
|
+
flows: [VIABLE_PROJECT_FLOW],
|
|
240
|
+
intrinsic: IntrinsicPolicy.Primary,
|
|
241
|
+
specifications: VIABLE_PROJECT_SLOTS,
|
|
242
|
+
code: VIABLE_PROJECT_CODE,
|
|
243
|
+
cardTypes: [VIABLE_STORY_TYPE],
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
export const VIABLE_STORY_TYPE_SCHEMA: WorkcardTypeSchema = {
|
|
247
|
+
type: VIABLE_STORY_TYPE,
|
|
248
|
+
kind: WorkcardKind.Card,
|
|
249
|
+
version: 1,
|
|
250
|
+
fields: ViableStoryFieldsSchema,
|
|
251
|
+
flows: [VIABLE_STORY_FLOW],
|
|
252
|
+
intrinsic: IntrinsicPolicy.Primary,
|
|
253
|
+
specifications: VIABLE_STORY_SLOTS,
|
|
254
|
+
relationships: VIABLE_STORY_RELATIONSHIPS,
|
|
255
|
+
code: VIABLE_STORY_CODE,
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
export const VIABLE_SPEC_TYPE_SCHEMA: WorkcardTypeSchema = {
|
|
259
|
+
type: VIABLE_SPEC_TYPE,
|
|
260
|
+
kind: WorkcardKind.Specification,
|
|
261
|
+
version: 1,
|
|
262
|
+
fields: ViableSpecFieldsSchema,
|
|
263
|
+
flows: [VIABLE_SPEC_FLOW],
|
|
264
|
+
specifications: [],
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
const reserved = (type: string, code: WorkcardTypeSchema['code']): WorkcardTypeSchema => ({
|
|
268
|
+
type,
|
|
269
|
+
kind: WorkcardKind.Card,
|
|
270
|
+
version: 1,
|
|
271
|
+
fields: ViableOpenFieldsSchema,
|
|
272
|
+
flows: [VIABLE_STORY_FLOW],
|
|
273
|
+
intrinsic: IntrinsicPolicy.Primary,
|
|
274
|
+
specifications: [],
|
|
275
|
+
code,
|
|
276
|
+
})
|
|
277
|
+
|
|
278
|
+
/** Registered so their prefixes and flow are decided once; not creatable under a project yet. */
|
|
279
|
+
export const VIABLE_RESERVED_TYPE_SCHEMAS: WorkcardTypeSchema[] = [
|
|
280
|
+
reserved(VIABLE_BUG_TYPE, VIABLE_BUG_CODE),
|
|
281
|
+
reserved(VIABLE_IMPROVEMENT_TYPE, VIABLE_IMPROVEMENT_CODE),
|
|
282
|
+
reserved(VIABLE_REQUIREMENT_TYPE, VIABLE_REQUIREMENT_CODE),
|
|
283
|
+
]
|
|
284
|
+
|
|
285
|
+
/** Every Viable type — what a planning plugin registers. */
|
|
286
|
+
export const VIABLE_TYPE_SCHEMAS: AnyTypeSchema[] = [
|
|
287
|
+
VIABLE_PROJECT_TYPE_SCHEMA,
|
|
288
|
+
VIABLE_STORY_TYPE_SCHEMA,
|
|
289
|
+
VIABLE_SPEC_TYPE_SCHEMA,
|
|
290
|
+
...VIABLE_RESERVED_TYPE_SCHEMAS,
|
|
291
|
+
]
|
|
292
|
+
|
|
293
|
+
/** Every Viable flow — registered beside the types. */
|
|
294
|
+
export const VIABLE_FLOW_SCHEMAS: StatusFlowSchema[] = [
|
|
295
|
+
VIABLE_PROJECT_FLOW_SCHEMA,
|
|
296
|
+
VIABLE_STORY_FLOW_SCHEMA,
|
|
297
|
+
VIABLE_SPEC_FLOW_SCHEMA,
|
|
298
|
+
]
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Specification, Workcard } from '@owlmeans/planning'
|
|
2
|
+
import type { AgentProject } from '../../ba/types.js'
|
|
3
|
+
|
|
4
|
+
/** Reading a card's specifications: the current document per category, and the project brief. */
|
|
5
|
+
export interface ViableSpecHelper {
|
|
6
|
+
/**
|
|
7
|
+
* The current document of one category among a card's specifications.
|
|
8
|
+
*
|
|
9
|
+
* The highest revision wins, then the most recently updated; a category nobody wrote answers
|
|
10
|
+
* `null`.
|
|
11
|
+
*/
|
|
12
|
+
currentSpecOf: (specs: readonly Specification[], category: string) => Specification | null
|
|
13
|
+
/** The body of a category's current document, `''` when there is none. */
|
|
14
|
+
currentSpecBody: (specs: readonly Specification[], category: string) => string
|
|
15
|
+
/**
|
|
16
|
+
* The brief a generator reads, assembled from the project card and its specifications.
|
|
17
|
+
*
|
|
18
|
+
* `name` is the card's title and `alias` its code; a brief part nobody wrote is `''`, which is
|
|
19
|
+
* what every prompt already treats as "not stated".
|
|
20
|
+
*/
|
|
21
|
+
projectBriefOf: (project: Workcard, specs: readonly Specification[]) => AgentProject
|
|
22
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Specification, Workcard } from '@owlmeans/planning'
|
|
2
|
+
import type { AgentProject } from '../ba/types.js'
|
|
3
|
+
import { viableCardHelper } from './card.js'
|
|
4
|
+
import { ViableSpecCategory } from './consts.js'
|
|
5
|
+
import type { ViableSpecHelper } from './spec/types.js'
|
|
6
|
+
|
|
7
|
+
export const createViableSpecHelper = (): ViableSpecHelper => {
|
|
8
|
+
const currentSpecOf = (
|
|
9
|
+
specs: readonly Specification[], category: string,
|
|
10
|
+
): Specification | null =>
|
|
11
|
+
specs
|
|
12
|
+
.filter(spec => spec.category === category)
|
|
13
|
+
.reduce<Specification | null>((best, spec) => {
|
|
14
|
+
if (best == null) return spec
|
|
15
|
+
const byRevision = (spec.revision ?? 0) - (best.revision ?? 0)
|
|
16
|
+
if (byRevision !== 0) return byRevision > 0 ? spec : best
|
|
17
|
+
|
|
18
|
+
return (spec.updatedAt ?? spec.createdAt) > (best.updatedAt ?? best.createdAt) ? spec : best
|
|
19
|
+
}, null)
|
|
20
|
+
|
|
21
|
+
const currentSpecBody = (specs: readonly Specification[], category: string): string =>
|
|
22
|
+
currentSpecOf(specs, category)?.body ?? ''
|
|
23
|
+
|
|
24
|
+
const projectBriefOf = (project: Workcard, specs: readonly Specification[]): AgentProject => {
|
|
25
|
+
const { language } = viableCardHelper.projectFieldsOf(project)
|
|
26
|
+
|
|
27
|
+
return {
|
|
28
|
+
name: project.title,
|
|
29
|
+
...(project.code != null ? { alias: project.code } : {}),
|
|
30
|
+
description: project.description ?? '',
|
|
31
|
+
specification: currentSpecBody(specs, ViableSpecCategory.Specification),
|
|
32
|
+
designSystem: currentSpecBody(specs, ViableSpecCategory.DesignSystem),
|
|
33
|
+
vision: currentSpecBody(specs, ViableSpecCategory.Vision),
|
|
34
|
+
...(language != null ? { language } : {}),
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return { currentSpecOf, currentSpecBody, projectBriefOf }
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export const viableSpecHelper = createViableSpecHelper()
|
package/src/planning/types.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import type { Card, Project, Specification } from '@owlmeans/planning'
|
|
2
2
|
import type { ProjectArea } from '../areas/consts.js'
|
|
3
3
|
import type { WorkKind } from '../blueprint/consts.js'
|
|
4
|
-
import type { ViableTenancyDecision } from '../areas/
|
|
4
|
+
import type { ViableTenancyDecision } from '../areas/types.js'
|
|
5
5
|
import type { StoryKind } from '../ba/consts.js'
|
|
6
6
|
import type { ConnectLlm, ConnectTarget } from '../connect/consts.js'
|
|
7
7
|
import type { ProjectOrigin } from '../convert/types.js'
|
|
8
|
-
import type { StoryActor } from '../design/
|
|
8
|
+
import type { StoryActor } from '../design/consts.js'
|
|
9
9
|
import type { StoryWriteInput } from '../metadata/types.js'
|
|
10
10
|
|
|
11
|
+
// Kept as a type: card fields must satisfy `Record<string, unknown>`, which needs the implicit index signature of a type literal.
|
|
11
12
|
/**
|
|
12
13
|
* What a `viable:project` card keeps under `fields`.
|
|
13
14
|
*
|
|
@@ -65,6 +66,7 @@ export interface ViableLandingDecision {
|
|
|
65
66
|
at: string
|
|
66
67
|
}
|
|
67
68
|
|
|
69
|
+
// Kept as a type: card fields must satisfy `Record<string, unknown>`, which needs the implicit index signature of a type literal.
|
|
68
70
|
/**
|
|
69
71
|
* What a `viable:user-story` card keeps under `fields`.
|
|
70
72
|
*
|
|
@@ -102,7 +104,7 @@ export interface ViableStoryCard extends Card {
|
|
|
102
104
|
}
|
|
103
105
|
|
|
104
106
|
/** A document under a Viable card — the brief parts, the scaffold plan, a story design. */
|
|
105
|
-
export
|
|
107
|
+
export interface ViableSpecification extends Specification {}
|
|
106
108
|
|
|
107
109
|
/**
|
|
108
110
|
* What a develop run hands the metadata store beside the card.
|
|
@@ -110,6 +112,4 @@ export type ViableSpecification = Specification
|
|
|
110
112
|
* The code, the narrative, the primary flag and the landing flag are the CARD's and are never
|
|
111
113
|
* passed separately — a second copy is a second answer. `status` defaults to the card's own.
|
|
112
114
|
*/
|
|
113
|
-
export
|
|
114
|
-
& Omit<StoryWriteInput, 'code' | 'narrative' | 'primary' | 'landing' | 'status'>
|
|
115
|
-
& { status?: string }
|
|
115
|
+
export interface StoryWriteContent extends Omit<StoryWriteInput, 'code' | 'narrative' | 'primary' | 'landing' | 'status'> { status?: string }
|
package/src/preview/consts.ts
CHANGED
|
@@ -6,4 +6,6 @@ export enum PreviewEventType {
|
|
|
6
6
|
CaughtError = 'OWLMEANS_PREVIEW_CONSOLE_ERROR',
|
|
7
7
|
PromiseRejection = 'OWLMEANS_PREVIEW_PROMISE_REJECTION',
|
|
8
8
|
FetchError = 'OWLMEANS_PREVIEW_FETCH_ERROR',
|
|
9
|
+
/** An analytics event a target's web logged through `@owlmeans/log` (browser → manager frame). */
|
|
10
|
+
Analytics = 'OWLMEANS_PREVIEW_ANALYTICS',
|
|
9
11
|
}
|
package/src/preview/types.ts
CHANGED
|
@@ -46,6 +46,19 @@ export interface OwlMeansFetchErrorPayload {
|
|
|
46
46
|
incidentId?: string
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
+
/**
|
|
50
|
+
* Payload of an analytics event of a target's web — `AnalyticsEvent` of `@owlmeans/log`, as the
|
|
51
|
+
* target's `viablePreviewPlugin` posts it. Untrusted: it comes from generated code.
|
|
52
|
+
*/
|
|
53
|
+
export interface OwlMeansAnalyticsPayload {
|
|
54
|
+
event: string
|
|
55
|
+
scope: string
|
|
56
|
+
time: number
|
|
57
|
+
level: 'debug' | 'info' | 'warn' | 'error'
|
|
58
|
+
message: string
|
|
59
|
+
data?: unknown
|
|
60
|
+
}
|
|
61
|
+
|
|
49
62
|
/**
|
|
50
63
|
* Specific message types for each event kind
|
|
51
64
|
*/
|
|
@@ -65,6 +78,10 @@ export interface OwlMeansCaughtErrorMessage extends OwlMeansPreviewMessage<OwlMe
|
|
|
65
78
|
type: PreviewEventType.CaughtError
|
|
66
79
|
}
|
|
67
80
|
|
|
81
|
+
export interface OwlMeansAnalyticsMessage extends OwlMeansPreviewMessage<OwlMeansAnalyticsPayload> {
|
|
82
|
+
type: PreviewEventType.Analytics
|
|
83
|
+
}
|
|
84
|
+
|
|
68
85
|
/**
|
|
69
86
|
* Union type for all possible OwlMeans preview messages
|
|
70
87
|
*/
|
|
@@ -73,9 +90,11 @@ export type OwlMeansPreviewMessages =
|
|
|
73
90
|
| OwlMeansPromiseRejectionMessage
|
|
74
91
|
| OwlMeansFetchErrorMessage
|
|
75
92
|
| OwlMeansCaughtErrorMessage
|
|
93
|
+
| OwlMeansAnalyticsMessage
|
|
76
94
|
|
|
77
95
|
export type OwlMenasPreviewPayloads =
|
|
78
96
|
| OwlMeansErrorPayload
|
|
79
97
|
| OwlMeansPromiseRejectionPayload
|
|
80
98
|
| OwlMeansFetchErrorPayload
|
|
81
99
|
| OwlMeansCaughtErrorPayload
|
|
100
|
+
| OwlMeansAnalyticsPayload
|
package/src/scaffold/consts.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
BentoFragmentKind, LandingAnchor, LandingBand, LandingGateFieldKind, LandingSlot,
|
|
3
|
+
} from './types.js'
|
|
2
4
|
|
|
3
5
|
/**
|
|
4
6
|
* The shapes a drawn widget can take.
|
|
@@ -47,3 +49,65 @@ export const LANDING_GATE_MAX_FIELDS = 3
|
|
|
47
49
|
|
|
48
50
|
/** The options a `select` field carries: fewer is no choice, more is a list to browse. */
|
|
49
51
|
export const LANDING_GATE_OPTIONS = { min: 2, max: 6 } as const
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* The bands of a landing page in the HOUSE ORDER — the order every page draws them in, whichever
|
|
55
|
+
* of them it carries. `problem` is the problem-and-solution band.
|
|
56
|
+
*/
|
|
57
|
+
export const LANDING_BAND_ORDER: LandingBand[] = [
|
|
58
|
+
'hero', 'steps', 'features', 'use-cases', 'problem', 'differentiator', 'approach',
|
|
59
|
+
'testimonials', 'about', 'closing',
|
|
60
|
+
]
|
|
61
|
+
|
|
62
|
+
/** The bands the guest header menu can jump to, in page order. */
|
|
63
|
+
export const LANDING_ANCHORS: LandingAnchor[] = [
|
|
64
|
+
'how', 'features', 'use-cases', 'why', 'approach', 'community', 'about',
|
|
65
|
+
]
|
|
66
|
+
|
|
67
|
+
/** Which band each menu anchor jumps to. */
|
|
68
|
+
export const LANDING_ANCHOR_BAND: Record<LandingAnchor, LandingBand> = {
|
|
69
|
+
how: 'steps',
|
|
70
|
+
features: 'features',
|
|
71
|
+
'use-cases': 'use-cases',
|
|
72
|
+
why: 'differentiator',
|
|
73
|
+
approach: 'approach',
|
|
74
|
+
community: 'testimonials',
|
|
75
|
+
about: 'about',
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* The English menu labels an entry falls back to when neither the menu nor the page's own section
|
|
80
|
+
* label names it. A fallback, never the intended copy: the plan writes labels in the product's
|
|
81
|
+
* language.
|
|
82
|
+
*/
|
|
83
|
+
export const LANDING_ANCHOR_LABELS: Record<LandingAnchor, string> = {
|
|
84
|
+
how: 'How it works',
|
|
85
|
+
features: 'Features',
|
|
86
|
+
'use-cases': 'Use cases',
|
|
87
|
+
why: 'Why us',
|
|
88
|
+
approach: 'How we work',
|
|
89
|
+
community: 'Reviews',
|
|
90
|
+
about: 'About',
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/** Entries of the guest header menu: fewer is not a menu, more crowds a phone's header. */
|
|
94
|
+
export const LANDING_MENU = { min: 2, max: 4 } as const
|
|
95
|
+
|
|
96
|
+
/** Cases of the use-cases band; fewer than `min` and the band is not drawn. */
|
|
97
|
+
export const LANDING_USE_CASES = { min: 2, max: 4 } as const
|
|
98
|
+
|
|
99
|
+
/** Rows of the differentiator's usual-vs-ours contrast; fewer than `min` and no table is drawn. */
|
|
100
|
+
export const LANDING_CONTRAST = { min: 2, max: 3 } as const
|
|
101
|
+
|
|
102
|
+
/** Principles of the approach band; fewer than `min` and the band is not drawn. */
|
|
103
|
+
export const LANDING_PRINCIPLES = { min: 3, max: 4 } as const
|
|
104
|
+
|
|
105
|
+
/** Every button or link of a landing page that can open a user story, in page order. */
|
|
106
|
+
export const LANDING_SLOTS: LandingSlot[] = [
|
|
107
|
+
'hero.cta', 'hero.secondary', 'hero.browse',
|
|
108
|
+
'useCase.1', 'useCase.2', 'useCase.3', 'useCase.4',
|
|
109
|
+
'closing.primary', 'closing.secondary', 'closing.link.1', 'closing.link.2',
|
|
110
|
+
]
|
|
111
|
+
|
|
112
|
+
/** The slots a landing gate replaces: with a usable gate the page draws none of them. */
|
|
113
|
+
export const LANDING_GATE_SLOTS: LandingSlot[] = ['hero.cta', 'hero.secondary', 'closing.primary']
|
package/src/scaffold/helpers.ts
CHANGED
|
@@ -1,84 +1,18 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { scaffoldShareHelper } from './share.js'
|
|
2
|
+
import type { ScaffoldPlan, ShareKind } from './types.js'
|
|
2
3
|
|
|
3
|
-
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
* The plan carries `sharesWidgetWith` / `sharesScreenWith` as untrusted hints — a model may drop
|
|
7
|
-
* them, invent a code, point forwards, or build a cycle. These resolve all of that away, and
|
|
8
|
-
* every one is TOTAL: a code the plan does not hold answers itself, which is the unshared
|
|
9
|
-
* behaviour and therefore exactly today's drawn tree.
|
|
10
|
-
*
|
|
11
|
-
* Pure and IO-free. `fillScaffoldPlan` normalises a plan through them before anything is stamped,
|
|
12
|
-
* so the stampers and the scaffold loop can read a plan that is already sane.
|
|
13
|
-
*/
|
|
4
|
+
/** @deprecated compat:factory-refactor — use `scaffoldShareHelper.shareOwner(…)` */
|
|
5
|
+
export const shareOwner = (plan: Pick<ScaffoldPlan, 'stories'>, code: string, kind: ShareKind = 'widget'): string =>
|
|
6
|
+
scaffoldShareHelper.shareOwner(plan, code, kind)
|
|
14
7
|
|
|
15
|
-
/**
|
|
16
|
-
export
|
|
8
|
+
/** @deprecated compat:factory-refactor — use `scaffoldShareHelper.shareGroups(…)` */
|
|
9
|
+
export const shareGroups = (plan: Pick<ScaffoldPlan, 'stories'>, kind: ShareKind = 'widget'): Map<string, string[]> =>
|
|
10
|
+
scaffoldShareHelper.shareGroups(plan, kind)
|
|
17
11
|
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
/** @deprecated compat:factory-refactor — use `scaffoldShareHelper.shareMembers(…)` */
|
|
13
|
+
export const shareMembers = (plan: Pick<ScaffoldPlan, 'stories'>, owner: string, kind: ShareKind = 'widget'): string[] =>
|
|
14
|
+
scaffoldShareHelper.shareMembers(plan, owner, kind)
|
|
20
15
|
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
* Backward-only and bounded: an arrow is followed only to a story EARLIER in plan order, which
|
|
25
|
-
* makes a cycle unrepresentable rather than merely unlikely, and makes the owner the earliest
|
|
26
|
-
* member of its group. That is what keeps `widgetDefinition(owner)` stable — the name is a
|
|
27
|
-
* function of one code, never of the group, so adding a member renames nothing.
|
|
28
|
-
*/
|
|
29
|
-
export const shareOwner = (
|
|
30
|
-
plan: Pick<ScaffoldPlan, 'stories'>, code: string, kind: ShareKind = 'widget'
|
|
31
|
-
): string => {
|
|
32
|
-
const order = new Map(plan.stories.map((story, index) => [story.code, index]))
|
|
33
|
-
const byCode = new Map(plan.stories.map(story => [story.code, story]))
|
|
34
|
-
|
|
35
|
-
let current = code
|
|
36
|
-
// Bounded by the list length: every hop strictly decreases the plan index, so it terminates.
|
|
37
|
-
for (let hop = 0; hop <= plan.stories.length; hop++) {
|
|
38
|
-
const story = byCode.get(current)
|
|
39
|
-
const target = story != null ? pointerOf(story, kind) : undefined
|
|
40
|
-
if (story == null || target == null || target === '' || target === current) {
|
|
41
|
-
return current
|
|
42
|
-
}
|
|
43
|
-
const here = order.get(current)
|
|
44
|
-
const there = order.get(target)
|
|
45
|
-
// Unknown, forward or self-referential — none of them is a group, so the story owns its own.
|
|
46
|
-
if (here == null || there == null || there >= here) {
|
|
47
|
-
return current
|
|
48
|
-
}
|
|
49
|
-
current = target
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
return current
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Owner code → every member, owner first, in plan order.
|
|
57
|
-
*
|
|
58
|
-
* The shape the stampers need: one artifact per entry, and the full member list for the notice
|
|
59
|
-
* that names them.
|
|
60
|
-
*/
|
|
61
|
-
export const shareGroups = (
|
|
62
|
-
plan: Pick<ScaffoldPlan, 'stories'>, kind: ShareKind = 'widget'
|
|
63
|
-
): Map<string, string[]> => {
|
|
64
|
-
const groups = new Map<string, string[]>()
|
|
65
|
-
for (const story of plan.stories) {
|
|
66
|
-
const owner = shareOwner(plan, story.code, kind)
|
|
67
|
-
const members = groups.get(owner) ?? []
|
|
68
|
-
if (!members.includes(owner)) members.push(owner)
|
|
69
|
-
if (!members.includes(story.code)) members.push(story.code)
|
|
70
|
-
groups.set(owner, members)
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
return groups
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/** Every story that renders this owner's artifact, owner first. Total: an owner alone answers `[code]`. */
|
|
77
|
-
export const shareMembers = (
|
|
78
|
-
plan: Pick<ScaffoldPlan, 'stories'>, owner: string, kind: ShareKind = 'widget'
|
|
79
|
-
): string[] => shareGroups(plan, kind).get(owner) ?? [owner]
|
|
80
|
-
|
|
81
|
-
/** Whether this story draws the artifact, as opposed to rendering somebody else's. */
|
|
82
|
-
export const ownsShare = (
|
|
83
|
-
plan: Pick<ScaffoldPlan, 'stories'>, code: string, kind: ShareKind = 'widget'
|
|
84
|
-
): boolean => shareOwner(plan, code, kind) === code
|
|
16
|
+
/** @deprecated compat:factory-refactor — use `scaffoldShareHelper.ownsShare(…)` */
|
|
17
|
+
export const ownsShare = (plan: Pick<ScaffoldPlan, 'stories'>, code: string, kind: ShareKind = 'widget'): boolean =>
|
|
18
|
+
scaffoldShareHelper.ownsShare(plan, code, kind)
|
package/src/scaffold/index.ts
CHANGED