@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
|
@@ -3,7 +3,7 @@ import { frontend, route, RouteMethod } from '@owlmeans/route'
|
|
|
3
3
|
import { INTENT_API_PATH, INTENT_LANDING_PATH, intent } from './consts.js'
|
|
4
4
|
import { IntentPickupBodySchema, IntentStashBodySchema } from './schemas.js'
|
|
5
5
|
import type {
|
|
6
|
-
IntentPickupBody, IntentPickupResult, IntentProtocolOptions, IntentStashBody, IntentStashResult,
|
|
6
|
+
IntentPickupBody, IntentPickupResult, IntentProtocolOptions, IntentProtocols, IntentStashBody, IntentStashResult,
|
|
7
7
|
} from './types.js'
|
|
8
8
|
|
|
9
9
|
/**
|
|
@@ -20,7 +20,7 @@ import type {
|
|
|
20
20
|
* The landing screen is `sticky`, like the OAuth consent screens: it is an ordinary in-app screen
|
|
21
21
|
* that a visitor arrives at directly from another origin.
|
|
22
22
|
*/
|
|
23
|
-
export const makeIntentProtocols = (opts: IntentProtocolOptions = {}) => {
|
|
23
|
+
export const makeIntentProtocols = (opts: IntentProtocolOptions = {}): IntentProtocols => {
|
|
24
24
|
const base = openProtocol(route(intent.base, opts.path ?? INTENT_API_PATH))
|
|
25
25
|
|
|
26
26
|
return {
|
|
@@ -40,4 +40,3 @@ export const makeIntentProtocols = (opts: IntentProtocolOptions = {}) => {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
export type IntentProtocols = ReturnType<typeof makeIntentProtocols>
|
package/src/intent/index.ts
CHANGED
package/src/intent/types.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { EntrypointProtocol, OpenRequest, OpenValue } from '@owlmeans/entrypoint'
|
|
1
2
|
import type { ResourceRecord } from '@owlmeans/resource'
|
|
2
3
|
|
|
3
4
|
/** What the public site sends: the prompt and the person's confirmation of its processing. */
|
|
@@ -43,3 +44,12 @@ export interface IntentProtocolOptions {
|
|
|
43
44
|
/** Path of the landing screen; defaults to `/start`. */
|
|
44
45
|
landing?: string
|
|
45
46
|
}
|
|
47
|
+
|
|
48
|
+
/** The intent-first hand-off tree {@link makeIntentProtocols} declares. */
|
|
49
|
+
export interface IntentProtocols {
|
|
50
|
+
base: EntrypointProtocol<OpenRequest, OpenValue>
|
|
51
|
+
stash: EntrypointProtocol<{ body: IntentStashBody }, IntentStashResult>
|
|
52
|
+
pickup: EntrypointProtocol<{ body: IntentPickupBody }, IntentPickupResult>
|
|
53
|
+
/** The landing screen — `sticky`, an in-app screen a visitor reaches from another origin. */
|
|
54
|
+
landing: EntrypointProtocol<OpenRequest, OpenValue>
|
|
55
|
+
}
|
package/src/metadata/consts.ts
CHANGED
|
@@ -116,3 +116,40 @@ export const METADATA_SUFFIXES = [SPEC_SUFFIX, UX_SUFFIX, UI_SUFFIX]
|
|
|
116
116
|
|
|
117
117
|
/** The trees the pipeline writes into — excluded wholesale when source files are enumerated. */
|
|
118
118
|
export const METADATA_DIRS = [HARNESS_DIR, DOCS_DIR]
|
|
119
|
+
|
|
120
|
+
export enum MetadataKind {
|
|
121
|
+
Project = 'project',
|
|
122
|
+
Story = 'story',
|
|
123
|
+
Source = 'source',
|
|
124
|
+
History = 'history',
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export enum MetadataListKind {
|
|
128
|
+
Stories = 'stories',
|
|
129
|
+
Meta = 'meta',
|
|
130
|
+
// All metadata: the docs/ and .agents/ trees + co-located *.spec/.ux/.ui.md beside sources
|
|
131
|
+
All = 'all',
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* What a registry entry names.
|
|
136
|
+
*
|
|
137
|
+
* One entry per artifact the pipeline can generate, so that "where does this live" and "what is
|
|
138
|
+
* it called" have exactly one answer for the whole life of the project.
|
|
139
|
+
*/
|
|
140
|
+
export enum RegistryKind {
|
|
141
|
+
/** The single directory segment an entity owns across models/, resources/ and backend models/ */
|
|
142
|
+
EntityDir = 'entity-dir',
|
|
143
|
+
ModelType = 'model-type',
|
|
144
|
+
Resource = 'resource',
|
|
145
|
+
BackendModel = 'backend-model',
|
|
146
|
+
ApiHandlers = 'api-handlers',
|
|
147
|
+
Service = 'service',
|
|
148
|
+
Layout = 'layout',
|
|
149
|
+
Screen = 'screen',
|
|
150
|
+
Component = 'component',
|
|
151
|
+
ViewModel = 'view-model',
|
|
152
|
+
State = 'state',
|
|
153
|
+
/** Alias-only entry for one endpoint — carries no source path of its own */
|
|
154
|
+
ApiEntrypoint = 'api-entrypoint',
|
|
155
|
+
}
|
package/src/metadata/types.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
import type { SpecCategory } from '../ba/consts.js'
|
|
3
|
+
import { MetadataKind, MetadataListKind, RegistryKind } from './consts.js'
|
|
3
4
|
|
|
4
5
|
export interface MetadataFile<T extends Record<string, unknown> = Record<string, unknown>> {
|
|
5
6
|
path: string
|
|
@@ -12,20 +13,6 @@ export interface MetadataWriteInput<T extends Record<string, unknown> = Record<s
|
|
|
12
13
|
body: string
|
|
13
14
|
}
|
|
14
15
|
|
|
15
|
-
export enum MetadataKind {
|
|
16
|
-
Project = 'project',
|
|
17
|
-
Story = 'story',
|
|
18
|
-
Source = 'source',
|
|
19
|
-
History = 'history',
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export enum MetadataListKind {
|
|
23
|
-
Stories = 'stories',
|
|
24
|
-
Meta = 'meta',
|
|
25
|
-
// All metadata: the docs/ and .agents/ trees + co-located *.spec/.ux/.ui.md beside sources
|
|
26
|
-
All = 'all',
|
|
27
|
-
}
|
|
28
|
-
|
|
29
16
|
/**
|
|
30
17
|
* Identifies a single metadata document to read:
|
|
31
18
|
* - Project: kind=Project, no ref/category needed
|
|
@@ -181,29 +168,6 @@ export interface StoryWriteInput {
|
|
|
181
168
|
|
|
182
169
|
// ─── Name registry (.agents/memory/registry.md) ───────────────────────────────────────
|
|
183
170
|
|
|
184
|
-
/**
|
|
185
|
-
* What a registry entry names.
|
|
186
|
-
*
|
|
187
|
-
* One entry per artifact the pipeline can generate, so that "where does this live" and "what is
|
|
188
|
-
* it called" have exactly one answer for the whole life of the project.
|
|
189
|
-
*/
|
|
190
|
-
export enum RegistryKind {
|
|
191
|
-
/** The single directory segment an entity owns across models/, resources/ and backend models/ */
|
|
192
|
-
EntityDir = 'entity-dir',
|
|
193
|
-
ModelType = 'model-type',
|
|
194
|
-
Resource = 'resource',
|
|
195
|
-
BackendModel = 'backend-model',
|
|
196
|
-
ApiHandlers = 'api-handlers',
|
|
197
|
-
Service = 'service',
|
|
198
|
-
Layout = 'layout',
|
|
199
|
-
Screen = 'screen',
|
|
200
|
-
Component = 'component',
|
|
201
|
-
ViewModel = 'view-model',
|
|
202
|
-
State = 'state',
|
|
203
|
-
/** Alias-only entry for one endpoint — carries no source path of its own */
|
|
204
|
-
ApiEntrypoint = 'api-entrypoint',
|
|
205
|
-
}
|
|
206
|
-
|
|
207
171
|
/**
|
|
208
172
|
* One allocated name.
|
|
209
173
|
*
|
package/src/moderation/index.ts
CHANGED
package/src/moderation/utils.ts
CHANGED
|
@@ -1,35 +1,12 @@
|
|
|
1
|
-
import { ModerationCategory } from './consts.js'
|
|
1
|
+
import type { ModerationCategory } from './consts.js'
|
|
2
2
|
import type { ModerationAction, ModerationPolicy, ModerationVerdict } from './types.js'
|
|
3
|
+
import { moderationVerdictHelper } from './verdict.js'
|
|
3
4
|
|
|
4
|
-
/**
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
* The wire field is a free string on purpose — see {@link ModerationVerdictSchema}. A model
|
|
8
|
-
* that is allowing has nothing to categorise and still fills the field, so anything
|
|
9
|
-
* unrecognized is treated as absent rather than as a failure.
|
|
10
|
-
*/
|
|
11
|
-
export const normalizeCategory = (category?: string): ModerationCategory | undefined => {
|
|
12
|
-
const values = Object.values(ModerationCategory) as string[]
|
|
5
|
+
/** @deprecated compat:factory-refactor — use `moderationVerdictHelper.normalizeCategory(…)` */
|
|
6
|
+
export const normalizeCategory = (category?: string): ModerationCategory | undefined =>
|
|
7
|
+
moderationVerdictHelper.normalizeCategory(category)
|
|
13
8
|
|
|
14
|
-
|
|
15
|
-
? category as ModerationCategory
|
|
16
|
-
: undefined
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* What to do about a verdict.
|
|
21
|
-
*
|
|
22
|
-
* Pure, because this is the part with the operational levers on it and the part most likely
|
|
23
|
-
* to be wrong in a hurry: `enforce` turns the whole gate into an observer without a deploy,
|
|
24
|
-
* and `bypassEntities` releases one entity when a real customer is wrongly refused.
|
|
25
|
-
*/
|
|
9
|
+
/** @deprecated compat:factory-refactor — use `moderationVerdictHelper.decideModeration(…)` */
|
|
26
10
|
export const decideModeration = (
|
|
27
11
|
verdict: ModerationVerdict, policy: ModerationPolicy & { entityId?: string } = {}
|
|
28
|
-
): ModerationAction =>
|
|
29
|
-
if (verdict.allowed) return 'allow'
|
|
30
|
-
if (policy.entityId != null && policy.bypassEntities?.includes(policy.entityId) === true) return 'allow'
|
|
31
|
-
|
|
32
|
-
// Defaults to ON: a gate that has to be switched on is a gate that is off in every
|
|
33
|
-
// environment nobody remembered to configure.
|
|
34
|
-
return policy.enforce !== false ? 'refuse' : 'shadow'
|
|
35
|
-
}
|
|
12
|
+
): ModerationAction => moderationVerdictHelper.decideModeration(verdict, policy)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ModerationCategory } from '../consts.js'
|
|
2
|
+
import type { ModerationAction, ModerationPolicy, ModerationVerdict } from '../types.js'
|
|
3
|
+
|
|
4
|
+
/** Reading a moderation verdict: its category, and what to do about it. */
|
|
5
|
+
export interface ModerationVerdictHelper {
|
|
6
|
+
/**
|
|
7
|
+
* Narrow whatever the model put in `category` to a real one, or to nothing.
|
|
8
|
+
*
|
|
9
|
+
* The wire field is a free string on purpose — see {@link ModerationVerdictSchema}. A model
|
|
10
|
+
* that is allowing has nothing to categorise and still fills the field, so anything
|
|
11
|
+
* unrecognized is treated as absent rather than as a failure.
|
|
12
|
+
*/
|
|
13
|
+
normalizeCategory: (category?: string) => ModerationCategory | undefined
|
|
14
|
+
/**
|
|
15
|
+
* What to do about a verdict.
|
|
16
|
+
*
|
|
17
|
+
* Pure, because this is the part with the operational levers on it and the part most likely
|
|
18
|
+
* to be wrong in a hurry: `enforce` turns the whole gate into an observer without a deploy,
|
|
19
|
+
* and `bypassEntities` releases one entity when a real customer is wrongly refused.
|
|
20
|
+
*/
|
|
21
|
+
decideModeration: (verdict: ModerationVerdict, policy?: ModerationPolicy & { entityId?: string }) => ModerationAction
|
|
22
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ModerationCategory } from './consts.js'
|
|
2
|
+
import type { ModerationAction, ModerationPolicy, ModerationVerdict } from './types.js'
|
|
3
|
+
import type { ModerationVerdictHelper } from './verdict/types.js'
|
|
4
|
+
|
|
5
|
+
export const createModerationVerdictHelper = (): ModerationVerdictHelper => {
|
|
6
|
+
const normalizeCategory = (category?: string): ModerationCategory | undefined => {
|
|
7
|
+
const values = Object.values(ModerationCategory) as string[]
|
|
8
|
+
|
|
9
|
+
return category != null && values.includes(category)
|
|
10
|
+
? category as ModerationCategory
|
|
11
|
+
: undefined
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const decideModeration = (
|
|
15
|
+
verdict: ModerationVerdict, policy: ModerationPolicy & { entityId?: string } = {}
|
|
16
|
+
): ModerationAction => {
|
|
17
|
+
if (verdict.allowed) return 'allow'
|
|
18
|
+
if (policy.entityId != null && policy.bypassEntities?.includes(policy.entityId) === true) return 'allow'
|
|
19
|
+
|
|
20
|
+
// Defaults to ON: a gate that has to be switched on is a gate that is off in every
|
|
21
|
+
// environment nobody remembered to configure.
|
|
22
|
+
return policy.enforce !== false ? 'refuse' : 'shadow'
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return { normalizeCategory, decideModeration }
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export const moderationVerdictHelper = createModerationVerdictHelper()
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { Workcard } from '@owlmeans/planning'
|
|
2
|
+
import type { StoryDraft } from '../../areas/types.js'
|
|
3
|
+
import type { UserStory } from '../../ba/types.js'
|
|
4
|
+
import type { StoryDesign } from '../../design/types.js'
|
|
5
|
+
import type { StoryWriteInput } from '../../metadata/types.js'
|
|
6
|
+
import type {
|
|
7
|
+
StoryWriteContent, ViableProjectCard, ViableProjectFields, ViableStoryCard, ViableStoryFields,
|
|
8
|
+
} from '../types.js'
|
|
9
|
+
|
|
10
|
+
/** Reading Viable's planning cards — a project, a user story — and what a write carries. */
|
|
11
|
+
export interface ViableCardHelper {
|
|
12
|
+
/** A `viable:project` card — kind AND type, since a foreign provider may share either alone. */
|
|
13
|
+
isViableProject: (card?: Workcard | null) => card is ViableProjectCard
|
|
14
|
+
/** A `viable:user-story` card. */
|
|
15
|
+
isViableStory: (card?: Workcard | null) => card is ViableStoryCard
|
|
16
|
+
/** Whether a write came from a person (`web`, `connect`) rather than the platform's own runs. */
|
|
17
|
+
isUserChannel: (channel?: string | null) => boolean
|
|
18
|
+
projectFieldsOf: (card: Workcard) => ViableProjectFields
|
|
19
|
+
/**
|
|
20
|
+
* A story card's fields, with the two required ones always answered.
|
|
21
|
+
*
|
|
22
|
+
* An absent area reads as `guest` — the area that guards nothing — and an absent primary flag as
|
|
23
|
+
* `false`, so a reader never branches on a card written by a store that dropped them.
|
|
24
|
+
*/
|
|
25
|
+
storyFieldsOf: (card: Workcard) => ViableStoryFields
|
|
26
|
+
/** The draft shape the analysis prompts and moderation take, from a card. */
|
|
27
|
+
storyDraftOf: (card: Workcard) => StoryDraft
|
|
28
|
+
/**
|
|
29
|
+
* The aggregate the coders take, for a story CARD.
|
|
30
|
+
*
|
|
31
|
+
* The card wins on the narrative, the code, the area and the actor — a person may have changed any
|
|
32
|
+
* of them since the design was written. The design supplies what only it knows: the entities and
|
|
33
|
+
* the screens. Without a design the aggregate has no screens yet.
|
|
34
|
+
*/
|
|
35
|
+
userStoryOf: (card: Workcard, design?: StoryDesign | null) => UserStory
|
|
36
|
+
/**
|
|
37
|
+
* What the metadata store writes to `docs/stories/<code>.md`, from the card and a run's content.
|
|
38
|
+
*
|
|
39
|
+
* The CODE is the target's only story identifier — a card id never reaches a target file — so a
|
|
40
|
+
* story card without one is refused rather than filed under its id. The landing flag is carried
|
|
41
|
+
* only when it is set, so every other story's frontmatter keeps the shape it always had.
|
|
42
|
+
*/
|
|
43
|
+
storyWriteInputOf: (card: Workcard, content: StoryWriteContent) => StoryWriteInput
|
|
44
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { WorkcardKind } from '@owlmeans/planning'
|
|
2
|
+
import type { Workcard } from '@owlmeans/planning'
|
|
3
|
+
import { ProjectArea } from '../areas/consts.js'
|
|
4
|
+
import type { StoryDraft } from '../areas/types.js'
|
|
5
|
+
import type { UserStory } from '../ba/types.js'
|
|
6
|
+
import { storyDesignHelper } from '../design/story.js'
|
|
7
|
+
import type { StoryDesign } from '../design/types.js'
|
|
8
|
+
import type { StoryWriteInput } from '../metadata/types.js'
|
|
9
|
+
import { VIABLE_PROJECT_TYPE, VIABLE_STORY_TYPE, VIABLE_USER_CHANNELS } from './consts.js'
|
|
10
|
+
import { ProjectStoryMissconfigured } from './errors.js'
|
|
11
|
+
import type {
|
|
12
|
+
StoryWriteContent, ViableProjectCard, ViableProjectFields, ViableStoryCard, ViableStoryFields,
|
|
13
|
+
} from './types.js'
|
|
14
|
+
import type { ViableCardHelper } from './card/types.js'
|
|
15
|
+
|
|
16
|
+
export const createViableCardHelper = (): ViableCardHelper => {
|
|
17
|
+
const isViableProject = (card?: Workcard | null): card is ViableProjectCard =>
|
|
18
|
+
card != null && card.kind === WorkcardKind.Project && card.type === VIABLE_PROJECT_TYPE
|
|
19
|
+
|
|
20
|
+
const isViableStory = (card?: Workcard | null): card is ViableStoryCard =>
|
|
21
|
+
card != null && card.kind === WorkcardKind.Card && card.type === VIABLE_STORY_TYPE
|
|
22
|
+
|
|
23
|
+
const isUserChannel = (channel?: string | null): boolean =>
|
|
24
|
+
channel != null && VIABLE_USER_CHANNELS.includes(channel)
|
|
25
|
+
|
|
26
|
+
const projectFieldsOf = (card: Workcard): ViableProjectFields =>
|
|
27
|
+
(card.fields ?? {}) as ViableProjectFields
|
|
28
|
+
|
|
29
|
+
const storyFieldsOf = (card: Workcard): ViableStoryFields => {
|
|
30
|
+
const fields = (card.fields ?? {}) as Partial<ViableStoryFields>
|
|
31
|
+
|
|
32
|
+
return { ...fields, area: fields.area ?? ProjectArea.Guest, primary: fields.primary === true }
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const storyDraftOf = (card: Workcard): StoryDraft =>
|
|
36
|
+
({ story: card.title, area: storyFieldsOf(card).area })
|
|
37
|
+
|
|
38
|
+
const userStoryOf = (card: Workcard, design?: StoryDesign | null): UserStory => {
|
|
39
|
+
const fields = storyFieldsOf(card)
|
|
40
|
+
const base: UserStory = design != null
|
|
41
|
+
? storyDesignHelper.userStoryOfDesign(design)
|
|
42
|
+
: { story: card.title, area: fields.area, entity: null as unknown as string, entities: [], screens: [] }
|
|
43
|
+
const code = card.code ?? base.code
|
|
44
|
+
|
|
45
|
+
return {
|
|
46
|
+
...base,
|
|
47
|
+
story: card.title,
|
|
48
|
+
...(code != null ? { code } : {}),
|
|
49
|
+
area: fields.area,
|
|
50
|
+
...(fields.actor != null ? { actor: fields.actor } : {}),
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const storyWriteInputOf = (card: Workcard, content: StoryWriteContent): StoryWriteInput => {
|
|
55
|
+
if (card.code == null || card.code === '') {
|
|
56
|
+
throw new ProjectStoryMissconfigured('no-code')
|
|
57
|
+
}
|
|
58
|
+
const { status, ...rest } = content
|
|
59
|
+
const fields = storyFieldsOf(card)
|
|
60
|
+
|
|
61
|
+
return {
|
|
62
|
+
...rest,
|
|
63
|
+
code: card.code,
|
|
64
|
+
narrative: card.title,
|
|
65
|
+
status: status ?? card.status,
|
|
66
|
+
primary: fields.primary,
|
|
67
|
+
...(fields.landing === true ? { landing: true } : {}),
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return {
|
|
72
|
+
isViableProject, isViableStory, isUserChannel, projectFieldsOf, storyFieldsOf, storyDraftOf, userStoryOf,
|
|
73
|
+
storyWriteInputOf,
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export const viableCardHelper = createViableCardHelper()
|
package/src/planning/consts.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { CodeScope, CodeStyle } from '@owlmeans/planning'
|
|
2
|
-
import type { CodePolicy } from '@owlmeans/planning'
|
|
1
|
+
import { CodeScope, CodeStyle, type CodePolicy } from '@owlmeans/planning'
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
4
|
* The OwlMeans Viable vocabulary over `@owlmeans/planning`.
|
|
@@ -180,3 +179,17 @@ export const VIABLE_IMPROVEMENT_CODE: CodePolicy = Object.freeze({
|
|
|
180
179
|
export const VIABLE_REQUIREMENT_CODE: CodePolicy = Object.freeze({
|
|
181
180
|
...VIABLE_STORY_CODE, prefix: VIABLE_REQUIREMENT_CODE_PREFIX,
|
|
182
181
|
})
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* The sentence a landing story's narrative carries — what a person reading the board sees.
|
|
185
|
+
*
|
|
186
|
+
* The AUTHORITY is the card's `fields.landing` flag, never this text: the design and development
|
|
187
|
+
* stages key on the flag, and a person may reword the narrative at any time. The sentence exists so
|
|
188
|
+
* the board says in plain words why this story is different, and so the analyst and the designer,
|
|
189
|
+
* who read the narrative, write a screen that continues what the guest started.
|
|
190
|
+
*
|
|
191
|
+
* A constant, byte for byte, because {@link hasLandingSentence} is how a resumed decision step
|
|
192
|
+
* knows it already appended it.
|
|
193
|
+
*/
|
|
194
|
+
export const LANDING_STORY_SENTENCE = 'A visitor can start this on the landing page without an account;'
|
|
195
|
+
+ ' after signing in they continue here with their choices carried over.'
|
package/src/planning/helpers.ts
CHANGED
|
@@ -1,136 +1,48 @@
|
|
|
1
|
-
import { WorkcardKind } from '@owlmeans/planning'
|
|
2
1
|
import type { Specification, Workcard } from '@owlmeans/planning'
|
|
3
|
-
import { ProjectArea } from '../areas/consts.js'
|
|
4
2
|
import type { StoryDraft } from '../areas/types.js'
|
|
5
3
|
import type { AgentProject, UserStory } from '../ba/types.js'
|
|
6
|
-
import { userStoryOfDesign } from '../design/helpers.js'
|
|
7
4
|
import type { StoryDesign } from '../design/types.js'
|
|
8
5
|
import type { StoryWriteInput } from '../metadata/types.js'
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
} from './consts.js'
|
|
12
|
-
import { ProjectStoryMissconfigured } from './errors.js'
|
|
6
|
+
import { viableCardHelper } from './card.js'
|
|
7
|
+
import { viableSpecHelper } from './spec.js'
|
|
13
8
|
import type {
|
|
14
9
|
StoryWriteContent, ViableProjectCard, ViableProjectFields, ViableStoryCard, ViableStoryFields,
|
|
15
10
|
} from './types.js'
|
|
16
11
|
|
|
17
|
-
/**
|
|
18
|
-
export const isViableProject = (card?: Workcard | null): card is ViableProjectCard =>
|
|
19
|
-
card != null && card.kind === WorkcardKind.Project && card.type === VIABLE_PROJECT_TYPE
|
|
12
|
+
/** @deprecated compat:factory-refactor — use `viableCardHelper.isViableProject(…)` */
|
|
13
|
+
export const isViableProject = (card?: Workcard | null): card is ViableProjectCard => viableCardHelper.isViableProject(card)
|
|
20
14
|
|
|
21
|
-
/**
|
|
22
|
-
export const isViableStory = (card?: Workcard | null): card is ViableStoryCard =>
|
|
23
|
-
card != null && card.kind === WorkcardKind.Card && card.type === VIABLE_STORY_TYPE
|
|
15
|
+
/** @deprecated compat:factory-refactor — use `viableCardHelper.isViableStory(…)` */
|
|
16
|
+
export const isViableStory = (card?: Workcard | null): card is ViableStoryCard => viableCardHelper.isViableStory(card)
|
|
24
17
|
|
|
25
|
-
/**
|
|
26
|
-
export const isUserChannel = (channel?: string | null): boolean =>
|
|
27
|
-
channel != null && VIABLE_USER_CHANNELS.includes(channel)
|
|
18
|
+
/** @deprecated compat:factory-refactor — use `viableCardHelper.isUserChannel(…)` */
|
|
19
|
+
export const isUserChannel = (channel?: string | null): boolean => viableCardHelper.isUserChannel(channel)
|
|
28
20
|
|
|
29
|
-
|
|
30
|
-
|
|
21
|
+
/** @deprecated compat:factory-refactor — use `viableCardHelper.projectFieldsOf(…)` */
|
|
22
|
+
export const projectFieldsOf = (card: Workcard): ViableProjectFields => viableCardHelper.projectFieldsOf(card)
|
|
31
23
|
|
|
32
|
-
/**
|
|
33
|
-
|
|
34
|
-
*
|
|
35
|
-
* An absent area reads as `guest` — the area that guards nothing — and an absent primary flag as
|
|
36
|
-
* `false`, so a reader never branches on a card written by a store that dropped them.
|
|
37
|
-
*/
|
|
38
|
-
export const storyFieldsOf = (card: Workcard): ViableStoryFields => {
|
|
39
|
-
const fields = (card.fields ?? {}) as Partial<ViableStoryFields>
|
|
24
|
+
/** @deprecated compat:factory-refactor — use `viableCardHelper.storyFieldsOf(…)` */
|
|
25
|
+
export const storyFieldsOf = (card: Workcard): ViableStoryFields => viableCardHelper.storyFieldsOf(card)
|
|
40
26
|
|
|
41
|
-
|
|
42
|
-
|
|
27
|
+
/** @deprecated compat:factory-refactor — use `viableCardHelper.storyDraftOf(…)` */
|
|
28
|
+
export const storyDraftOf = (card: Workcard): StoryDraft => viableCardHelper.storyDraftOf(card)
|
|
43
29
|
|
|
44
|
-
/**
|
|
45
|
-
export const
|
|
46
|
-
(
|
|
30
|
+
/** @deprecated compat:factory-refactor — use `viableCardHelper.userStoryOf(…)` */
|
|
31
|
+
export const userStoryOf = (card: Workcard, design?: StoryDesign | null): UserStory =>
|
|
32
|
+
viableCardHelper.userStoryOf(card, design)
|
|
47
33
|
|
|
48
|
-
/**
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
* The card wins on the narrative, the code, the area and the actor — a person may have changed any
|
|
52
|
-
* of them since the design was written. The design supplies what only it knows: the entities and
|
|
53
|
-
* the screens. Without a design the aggregate has no screens yet.
|
|
54
|
-
*/
|
|
55
|
-
export const userStoryOf = (card: Workcard, design?: StoryDesign | null): UserStory => {
|
|
56
|
-
const fields = storyFieldsOf(card)
|
|
57
|
-
const base: UserStory = design != null
|
|
58
|
-
? userStoryOfDesign(design)
|
|
59
|
-
: { story: card.title, area: fields.area, entity: null as unknown as string, entities: [], screens: [] }
|
|
60
|
-
const code = card.code ?? base.code
|
|
34
|
+
/** @deprecated compat:factory-refactor — use `viableSpecHelper.currentSpecOf(…)` */
|
|
35
|
+
export const currentSpecOf = (specs: readonly Specification[], category: string): Specification | null =>
|
|
36
|
+
viableSpecHelper.currentSpecOf(specs, category)
|
|
61
37
|
|
|
62
|
-
|
|
63
|
-
...base,
|
|
64
|
-
story: card.title,
|
|
65
|
-
...(code != null ? { code } : {}),
|
|
66
|
-
area: fields.area,
|
|
67
|
-
...(fields.actor != null ? { actor: fields.actor } : {}),
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* The current document of one category among a card's specifications.
|
|
73
|
-
*
|
|
74
|
-
* The highest revision wins, then the most recently updated; a category nobody wrote answers
|
|
75
|
-
* `null`.
|
|
76
|
-
*/
|
|
77
|
-
export const currentSpecOf = (
|
|
78
|
-
specs: readonly Specification[], category: string,
|
|
79
|
-
): Specification | null =>
|
|
80
|
-
specs
|
|
81
|
-
.filter(spec => spec.category === category)
|
|
82
|
-
.reduce<Specification | null>((best, spec) => {
|
|
83
|
-
if (best == null) return spec
|
|
84
|
-
const byRevision = (spec.revision ?? 0) - (best.revision ?? 0)
|
|
85
|
-
if (byRevision !== 0) return byRevision > 0 ? spec : best
|
|
86
|
-
|
|
87
|
-
return (spec.updatedAt ?? spec.createdAt) > (best.updatedAt ?? best.createdAt) ? spec : best
|
|
88
|
-
}, null)
|
|
89
|
-
|
|
90
|
-
/** The body of a category's current document, `''` when there is none. */
|
|
38
|
+
/** @deprecated compat:factory-refactor — use `viableSpecHelper.currentSpecBody(…)` */
|
|
91
39
|
export const currentSpecBody = (specs: readonly Specification[], category: string): string =>
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* The brief a generator reads, assembled from the project card and its specifications.
|
|
96
|
-
*
|
|
97
|
-
* `name` is the card's title and `alias` its code; a brief part nobody wrote is `''`, which is
|
|
98
|
-
* what every prompt already treats as "not stated".
|
|
99
|
-
*/
|
|
100
|
-
export const projectBriefOf = (project: Workcard, specs: readonly Specification[]): AgentProject => {
|
|
101
|
-
const { language } = projectFieldsOf(project)
|
|
102
|
-
|
|
103
|
-
return {
|
|
104
|
-
name: project.title,
|
|
105
|
-
...(project.code != null ? { alias: project.code } : {}),
|
|
106
|
-
description: project.description ?? '',
|
|
107
|
-
specification: currentSpecBody(specs, ViableSpecCategory.Specification),
|
|
108
|
-
designSystem: currentSpecBody(specs, ViableSpecCategory.DesignSystem),
|
|
109
|
-
vision: currentSpecBody(specs, ViableSpecCategory.Vision),
|
|
110
|
-
...(language != null ? { language } : {}),
|
|
111
|
-
}
|
|
112
|
-
}
|
|
40
|
+
viableSpecHelper.currentSpecBody(specs, category)
|
|
113
41
|
|
|
114
|
-
/**
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
* The CODE is the target's only story identifier — a card id never reaches a target file — so a
|
|
118
|
-
* story card without one is refused rather than filed under its id. The landing flag is carried
|
|
119
|
-
* only when it is set, so every other story's frontmatter keeps the shape it always had.
|
|
120
|
-
*/
|
|
121
|
-
export const storyWriteInputOf = (card: Workcard, content: StoryWriteContent): StoryWriteInput => {
|
|
122
|
-
if (card.code == null || card.code === '') {
|
|
123
|
-
throw new ProjectStoryMissconfigured('no-code')
|
|
124
|
-
}
|
|
125
|
-
const { status, ...rest } = content
|
|
126
|
-
const fields = storyFieldsOf(card)
|
|
42
|
+
/** @deprecated compat:factory-refactor — use `viableSpecHelper.projectBriefOf(…)` */
|
|
43
|
+
export const projectBriefOf = (project: Workcard, specs: readonly Specification[]): AgentProject =>
|
|
44
|
+
viableSpecHelper.projectBriefOf(project, specs)
|
|
127
45
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
narrative: card.title,
|
|
132
|
-
status: status ?? card.status,
|
|
133
|
-
primary: fields.primary,
|
|
134
|
-
...(fields.landing === true ? { landing: true } : {}),
|
|
135
|
-
}
|
|
136
|
-
}
|
|
46
|
+
/** @deprecated compat:factory-refactor — use `viableCardHelper.storyWriteInputOf(…)` */
|
|
47
|
+
export const storyWriteInputOf = (card: Workcard, content: StoryWriteContent): StoryWriteInput =>
|
|
48
|
+
viableCardHelper.storyWriteInputOf(card, content)
|
package/src/planning/index.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
export * from './consts.js'
|
|
2
2
|
export * from './errors.js'
|
|
3
3
|
export * from './schemas.js'
|
|
4
|
-
export * from './
|
|
4
|
+
export * from './card.js'
|
|
5
|
+
export * from './spec.js'
|
|
5
6
|
export * from './helpers.js'
|
|
6
7
|
export * from './landing.js'
|
|
7
8
|
export type * from './types.js'
|
|
9
|
+
export type * from './card/types.js'
|
|
10
|
+
export type * from './spec/types.js'
|
|
11
|
+
export type * from './landing/types.js'
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** The landing sentence a landing-gate story's narrative carries. */
|
|
2
|
+
export interface LandingSentenceHelper {
|
|
3
|
+
/** Whether a narrative already carries the landing sentence, whatever whitespace surrounds it. */
|
|
4
|
+
hasLandingSentence: (title: string) => boolean
|
|
5
|
+
/**
|
|
6
|
+
* The narrative with the landing sentence appended once.
|
|
7
|
+
*
|
|
8
|
+
* Idempotent — a narrative that already carries the sentence comes back unchanged, so a decision
|
|
9
|
+
* step that is resumed after it wrote the card never appends a second copy. It never produces a
|
|
10
|
+
* title longer than a card accepts (`TITLE_MAX`): a narrative with no room left is returned as it
|
|
11
|
+
* is rather than cut, because a person's words are worth more than the note, and the flag on the
|
|
12
|
+
* card still carries the fact.
|
|
13
|
+
*/
|
|
14
|
+
withLandingSentence: (title: string) => string
|
|
15
|
+
}
|